Name: series-workflowmg9fx Phase: Succeeded StartedAt: 2026-07-31 20:26:29 +0000 UTC FinishedAt: 2026-07-31 22:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[0] Phase: Succeeded StartedAt: 2026-07-31 20:26:29 +0000 UTC FinishedAt: 2026-07-31 20:46:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 20:26:29 +0000 UTC FinishedAt: 2026-07-31 20:46:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fa20f6cb6063f7f1a6a56693d4a8713f19058d23", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FANOTIFY", "FANOTIFY_ACCESS_PERMISSIONS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fa20f6cb6063f7f1a6a56693d4a8713f19058d23", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FANOTIFY", "FANOTIFY_ACCESS_PERMISSIONS" ], "series_id": "71920c0c-cda3-4539-9f2d-967d4a5551a1" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fanotify_handle_event", "fanotify_read", "fanotify_write" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZBTk9USUZZJiMzNDssCiAgICAmIzM0O0ZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zhbm90aWZ5X2hhbmRsZV9ldmVudCYjMzQ7LAogICAgJiMzNDtmYW5vdGlmeV9yZWFkJiMzNDssCiAgICAmIzM0O2Zhbm90aWZ5X3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBmYW5vdGlmeSBwZXJtaXNzaW9uIGV2ZW50cyBieSBjb3B5aW5nIHRoZSBmaWxlIHJhbmdlIHBvc2l0aW9uIGludG8gdGhlIGV2ZW50IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGtlZXBpbmcgYSBwb2ludGVyIHRvIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmFub3RpZnkgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMjlkMGYyNTc4OTAwYTQ3YmZhYjkyNDk0OWYzODRhY2VkZDlkYTljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjA6NDQ6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1xuaW5kZXggYTM1NTViZWJhZDYzZS4uYzk3ZDFiZTcwMzEwNCAxMDA2NDRcbi0tLSBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1xuQEAgLTYwMSw3ICYjNDM7NjAxLDggQEAgc3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLFxuIFx0cGV2ZW50LVx1MDAzZXN0YXRlID0gRkFOX0VWRU5UX0lOSVQ7XG4gXHRwZXZlbnQtXHUwMDNlcGF0aCA9ICpwYXRoO1xuIFx0LyogTlVMTCBwcG9zIG1lYW5zIG5vIHJhbmdlIGluZm8gKi9cbi1cdHBldmVudC1cdTAwM2VwcG9zID0gcmFuZ2UgPyBcdTAwMjZyYW5nZS1cdTAwM2Vwb3MgOiBOVUxMO1xuJiM0MztcdHBldmVudC1cdTAwM2Vwb3MgPSByYW5nZSA/IHJhbmdlLVx1MDAzZXBvcyA6IDA7XG4mIzQzO1x0cGV2ZW50LVx1MDAzZXBwb3MgPSByYW5nZSA/IFx1MDAyNnBldmVudC1cdTAwM2Vwb3MgOiBOVUxMO1xuIFx0cGV2ZW50LVx1MDAzZWNvdW50ID0gcmFuZ2UgPyByYW5nZS1cdTAwM2Vjb3VudCA6IDA7XG4gXHRwYXRoX2dldChwYXRoKTtcbiBcbmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaCBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oXG5pbmRleCBhMDYxOWU3Njk0ZDU3Li5jOTY0ZGY2YzA1MTQ1IDEwMDY0NFxuLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oXG5AQCAtNDM4LDcgJiM0Mzs0MzgsOCBAQCBGQU5PVElGWV9NRShzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmV2ZW50KVxuIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50IHtcbiBcdHN0cnVjdCBmYW5vdGlmeV9ldmVudCBmYWU7XG4gXHRzdHJ1Y3QgcGF0aCBwYXRoO1xuLVx0Y29uc3QgbG9mZl90ICpwcG9zO1x0XHQvKiBvcHRpb25hbCBmaWxlIHJhbmdlIGluZm8gKi9cbiYjNDM7XHRsb2ZmX3QgcG9zO1xuJiM0MztcdGNvbnN0IGxvZmZfdCAqcHBvcztcdFx0LyogXHUwMDI2cG9zIGlmIHJhbmdlIGluZm8gaXMgYXZhaWxhYmxlICovXG4gXHRzaXplX3QgY291bnQ7XG4gXHR1MzIgcmVzcG9uc2U7XHRcdFx0LyogdXNlcnNwYWNlIGFuc3dlciB0byB0aGUgZXZlbnQgKi9cbiBcdHVuc2lnbmVkIHNob3J0IHN0YXRlO1x0XHQvKiBzdGF0ZSBvZiB0aGUgZXZlbnQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RkFOT1RJRlkmIzM0OywKICAgICYjMzQ7RkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZmFub3RpZnlfaGFuZGxlX2V2ZW50JiMzNDssCiAgICAmIzM0O2Zhbm90aWZ5X3JlYWQmIzM0OywKICAgICYjMzQ7ZmFub3RpZnlfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGZhbm90aWZ5IHBlcm1pc3Npb24gZXZlbnRzIGJ5IGNvcHlpbmcgdGhlIGZpbGUgcmFuZ2UgcG9zaXRpb24gaW50byB0aGUgZXZlbnQgc3RydWN0dXJlIGluc3RlYWQgb2Yga2VlcGluZyBhIHBvaW50ZXIgdG8gaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmYW5vdGlmeSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQyOWQwZjI1Nzg5MDBhNDdiZmFiOTI0OTQ5ZjM4NGFjZWRkOWRhOWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAyMDo0NDoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMKaW5kZXggYTM1NTViZWJhZDYzZS4uYzk3ZDFiZTcwMzEwNCAxMDA2NDQKLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMKQEAgLTYwMSw3ICYjNDM7NjAxLDggQEAgc3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLAogCXBldmVudC0mZ3Q7c3RhdGUgPSBGQU5fRVZFTlRfSU5JVDsKIAlwZXZlbnQtJmd0O3BhdGggPSAqcGF0aDsKIAkvKiBOVUxMIHBwb3MgbWVhbnMgbm8gcmFuZ2UgaW5mbyAqLwotCXBldmVudC0mZ3Q7cHBvcyA9IHJhbmdlID8gJmFtcDtyYW5nZS0mZ3Q7cG9zIDogTlVMTDsKJiM0MzsJcGV2ZW50LSZndDtwb3MgPSByYW5nZSA/IHJhbmdlLSZndDtwb3MgOiAwOwomIzQzOwlwZXZlbnQtJmd0O3Bwb3MgPSByYW5nZSA/ICZhbXA7cGV2ZW50LSZndDtwb3MgOiBOVUxMOwogCXBldmVudC0mZ3Q7Y291bnQgPSByYW5nZSA/IHJhbmdlLSZndDtjb3VudCA6IDA7CiAJcGF0aF9nZXQocGF0aCk7CiAKZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgKaW5kZXggYTA2MTllNzY5NGQ1Ny4uYzk2NGRmNmMwNTE0NSAxMDA2NDQKLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgKQEAgLTQzOCw3ICYjNDM7NDM4LDggQEAgRkFOT1RJRllfTUUoc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudCkKIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50IHsKIAlzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgZmFlOwogCXN0cnVjdCBwYXRoIHBhdGg7Ci0JY29uc3QgbG9mZl90ICpwcG9zOwkJLyogb3B0aW9uYWwgZmlsZSByYW5nZSBpbmZvICovCiYjNDM7CWxvZmZfdCBwb3M7CiYjNDM7CWNvbnN0IGxvZmZfdCAqcHBvczsJCS8qICZhbXA7cG9zIGlmIHJhbmdlIGluZm8gaXMgYXZhaWxhYmxlICovCiAJc2l6ZV90IGNvdW50OwogCXUzMiByZXNwb25zZTsJCQkvKiB1c2Vyc3BhY2UgYW5zd2VyIHRvIHRoZSBldmVudCAqLwogCXVuc2lnbmVkIHNob3J0IHN0YXRlOwkJLyogc3RhdGUgb2YgdGhlIGV2ZW50ICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGYW5vdGlmeSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jYCBhbmQgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiBgc3RydWN0IGZhbm90aWZ5X3Blcm1fZXZlbnRgLiBUaGV5JiMzOTt2ZSBhZGRlZCBhIGBsb2ZmX3QgcG9zYCBmaWVsZCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHRoZXkmIzM5O3ZlIGFsdGVyZWQgaG93IHRoZSBgcG9zYCBhbmQgYHBwb3NgIGZpZWxkcyBhcmUgcG9wdWxhdGVkLiBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGEgcG9pbnRlciB0byBhIHBvdGVudGlhbGx5IHN0YWNrLWFsbG9jYXRlZCBvciB0cmFuc2llbnRseSBhbGxvY2F0ZWQgYHJhbmdlYCBzdHJ1Y3QmIzM5O3MgYHBvc2AgZmllbGQ6IGBwZXZlbnQtJmd0O3Bwb3MgPSByYW5nZSA/ICZhbXA7cmFuZ2UtJmd0O3BvcyA6IE5VTEw7YC4gVGhlIG5ldyBjb2RlIGlzIG5vdyBkb2luZyB0aGlzOiBgcGV2ZW50LSZndDtwb3MgPSByYW5nZSA/IHJhbmdlLSZndDtwb3MgOiAwOyBwZXZlbnQtJmd0O3Bwb3MgPSByYW5nZSA/ICZhbXA7cGV2ZW50LSZndDtwb3MgOiBOVUxMO2AuCgpSaWdodCwgSSBzZWUgd2hhdCB0aGV5JiMzOTtyZSBkb2luZy4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBmaXguIFRoYXQgYHJhbmdlYCBzdHJ1Y3QgY291bGQgZWFzaWx5IGJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgb3IgZnJlZWQgYmVmb3JlIHRoZSBmYW5vdGlmeSBldmVudCBpcyBhY3R1YWxseSBoYW5kbGVkLiBUaGlzIG5ldyBhcHByb2FjaCBjb3BpZXMgdGhlIGByYW5nZS0mZ3Q7cG9zYCB2YWx1ZSBpbnRvIHRoZSBgcGV2ZW50LSZndDtwb3NgIGZpZWxkLCBhbmQgdGhlbiB0YWtlcyB0aGUgKmFkZHJlc3MqIG9mIHRoZSBgcGV2ZW50LSZndDtwb3NgIG1lbWJlciB0byBhc3NpZ24gdG8gYHBwb3NgLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCB0aGUgcG9pbnRlciBgcHBvc2Agd2lsbCBhbHdheXMgYmUgdmFsaWQgYmVjYXVzZSBpdCYjMzk7cyBwb2ludGluZyB0byBhIGZpZWxkICp3aXRoaW4qIHRoZSBhbGxvY2F0ZWQgYGZhbm90aWZ5X3Blcm1fZXZlbnRgIHN0cnVjdC4gVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGxpa2VseSBleHBvc2VkIGEgcmFjZSBjb25kaXRpb24sIHNvIHRoaXMgaXMgYSBnb29kIGNoYW5nZS4KCkxldCBtZSBnbyBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGV2ZW50IGFsbG9jYXRpb24gZnVuY3Rpb24gYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgIGluIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY2AgdG8gYmUgc3VyZSB0aGF0IHRoZSBtZW1vcnkgbWFuYWdlbWVudCBpcyBjb3JyZWN0IGFuZCB0aGF0IHRoZSBzdHJ1Y3QgYGZhbm90aWZ5X3Blcm1fZXZlbnRgIGlzIGNvcnJlY3RseSBmcmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NTY5PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX21udF9ldmVudCh1NjQgbW50X2lkLCBnZnBfdCBnZnApXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTgyLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6NTgzOnN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQoY29uc3Qgdm9pZCAqZGF0YSxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4NC1cdFx0XHRcdFx0XHRcdGludCBkYXRhX3R5cGUsXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzQ1PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2V2ZW50KFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTg1My1cdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKSB7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo4NTQ6XHRcdGV2ZW50ID0gZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChkYXRhLCBkYXRhX3R5cGUsIGdmcCk7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTUtXHR9IGVsc2UgaWYgKGZhbm90aWZ5X2lzX2Vycm9yX2V2ZW50KG1hc2spKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRmFub3RpZnkgRXZlbnQgQWxsb2NhdGlvbiBmb3IgRnV6emluZyoqCgpBbHJpZ2h0LCBzbyBgZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudGAgaXMgY2FsbGVkIGJ5IGBmYW5vdGlmeV9hbGxvY19ldmVudGAuIEFuZCB0aGF0IGxhdHRlciBmdW5jdGlvbiwgYGZhbm90aWZ5X2FsbG9jX2V2ZW50YCwgdGhhdCYjMzk7cyB0aGUgbWFpbiBldmVudCBhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciB0aGUgd2hvbGUgZmFub3RpZnkgc3Vic3lzdGVtLCByaWdodD8gVGhhdCBqdW1wcyBvdXQgYXQgbWUgaW1tZWRpYXRlbHkg4oCTIHRoaXMgaXMgKnByaW1lKiBmdXp6aW5nIHRlcnJpdG9yeS4gQW55IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYWxsb2NhdGluZyBldmVudHMgaXMgZ29pbmcgdG8gYmUgYSBwb3RlbnRpYWwgY2hva2UgcG9pbnQsIGEgcGxhY2Ugd2hlcmUgd2UgY2FuIHRyeSB0byB0cmlnZ2VyIG1lbW9yeSBjb3JydXB0aW9uLCByZXNvdXJjZSBleGhhdXN0aW9uLCBvciBvdGhlciBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLiBUaGUgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHByb2Nlc3MgaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4KCkJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGZhbm90aWZ5LiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGhvdyB0aGlzIGNvZGUgYmVoYXZlcy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIGNhbiByZWFsbHkgaGVscCBuYXJyb3cgZG93biB0aGUgc2VhcmNoIGFuZCBwcmlvcml0aXplIHRoZSBjcml0aWNhbCBwYXJ0cyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRkFOT1RJRlkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWc6Mjpjb25maWcgRkFOT1RJRllcbmZzL25vdGlmeS9mYW5vdGlmeS9LY29uZmlnLTMtXHRib29sIFwmIzM0O0ZpbGVzeXN0ZW0gd2lkZSBhY2Nlc3Mgbm90aWZpY2F0aW9uXCYjMzQ7XG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWctMTQtXG5mcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZzoxNTpjb25maWcgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TXG5mcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7ZmFub3RpZnkgcGVybWlzc2lvbnMgY2hlY2tpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQ3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEZBTk9USUZZIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb25zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYEZBTk9USUZZYCBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AuIFN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZXNlLCBpcyB0byBkaXZlIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBpbnRlcmRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBlbmFibGluZyB0aGlzIG9wdGlvbiBpbXBvc2VzIGNlcnRhaW4gcmVzdHJpY3Rpb25zIG9yIHJlcXVpcmVtZW50cywgc28gbGV0JiMzOTtzIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gYmVmb3JlIHdlIGdvIGFueSBmdXJ0aGVyLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBpbmFkdmVydGVudGx5IGNyZWF0aW5nIGEgYm90dGxlbmVjayBvciBpbmNvbXBhdGliaWxpdHkuIFVuZGVyc3RhbmRpbmcgdGhlIGV4YWN0IHJlbGF0aW9uc2hpcHMgd2lsbCBpbmZvcm0gb3VyIGFwcHJvYWNoIHRvIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBGQU5PVElGWVxuICAgMzpcdFx0Ym9vbCBcJiMzNDtGaWxlc3lzdGVtIHdpZGUgYWNjZXNzIG5vdGlmaWNhdGlvblwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IEZTTk9USUZZXG4gICA1Olx0XHRzZWxlY3QgRVhQT1JURlNcbiAgIDY6XHRcdGRlZmF1bHQgblxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICAgU2F5IFkgaGVyZSB0byBlbmFibGUgZmFub3RpZnkgc3VwcG9ydC4gIGZhbm90aWZ5IGlzIGEgZmlsZSBhY2Nlc3NcbiAgIDk6XHRcdCAgIG5vdGlmaWNhdGlvbiBzeXN0ZW0gd2hpY2ggZGlmZmVycyBmcm9tIGlub3RpZnkgaW4gdGhhdCBpdCBzZW5kc1xuICAxMDpcdFx0ICAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgdG8gdGhlIHVzZXJzcGFjZSBsaXN0ZW5lciBhbG9uZyB3aXRoXG4gIDExOlx0XHQgICB0aGUgZXZlbnQuXG4gIDEyOlx0XG4gIDEzOlx0XHQgICBJZiB1bnN1cmUsIHNheSBZLlxuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNcbiAgMTY6XHRcdGJvb2wgXCYjMzQ7ZmFub3RpZnkgcGVybWlzc2lvbnMgY2hlY2tpbmdcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gRkFOT1RJRllcbiAgMTg6XHRcdGRlZmF1bHQgblxuICAxOTpcdFx0aGVscFxuICAyMDpcdFx0ICAgU2F5IFkgaGVyZSBpcyB5b3Ugd2FudCBmYW5vdGlmeSBsaXN0ZW5lcnMgdG8gYmUgYWJsZSB0byBtYWtlIHBlcm1pc3Npb25zXG4gIDIxOlx0XHQgICBkZWNpc2lvbnMgY29uY2VybmluZyBmaWxlc3lzdGVtIGV2ZW50cy4gIFRoaXMgaXMgdXNlZCBieSBzb21lIGZhbm90aWZ5XG4gIDIyOlx0XHQgICBsaXN0ZW5lcnMgd2hpY2ggbmVlZCB0byBzY2FuIGZpbGVzIGJlZm9yZSBhbGxvd2luZyB0aGUgc3lzdGVtIGFjY2VzcyB0b1xuICAyMzpcdFx0ICAgdXNlIHRob3NlIGZpbGVzLiAgVGhpcyBpcyB1c2VkIGJ5IHNvbWUgYW50aS1tYWx3YXJlIHZlbmRvcnMgYW5kIGJ5IHNvbWVcbiAgMjQ6XHRcdCAgIGhpZXJhcmNoaWNhbCBzdG9yYWdlIG1hbmFnZW1lbnQgc3lzdGVtcy5cbiAgMjU6XHRcbiAgMjY6XHRcdCAgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM0MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgRmFub3RpZnkgRXZlbnQgSGFuZGxpbmcqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYEZBTk9USUZZYCBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgY29uZmlndXJhdGlvbnMuIE5lZWQgdG8gZmlndXJlIG91dCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGhlcmUuCgpGcm9tIG15IGV4cGVyaWVuY2UsIHRoZSBzdGF0aWMgZnVuY3Rpb24gYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgIGlzIGFsbW9zdCBjZXJ0YWlubHkgaW5saW5lZCwgc28gdGhlIHJlYWwgZmxvdyBiZWdpbnMgd2l0aCBpdHMgY2FsbGluZyBmdW5jdGlvbi4gVGhhdCYjMzk7cyBgZmFub3RpZnlfYWxsb2NfZXZlbnRgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YC4gVGhhdCBsYXN0IGZ1bmN0aW9uIGlzIHdoYXQgSSByZWFsbHkgbmVlZCB0byB1bmRlcnN0YW5kIHRvIGdyYXNwIHRoZSBldmVudCBoYW5kbGluZyBsb2dpYy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmFub3RpZnlfaGFuZGxlX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9MTgwPXN0YXRpYyBpbnQgZmFub3RpZnlfbWVyZ2Uoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xOTItXHQgKiBEb24mIzM5O3QgbWVyZ2UgYSBwZXJtaXNzaW9uIGV2ZW50IHdpdGggYW55IG90aGVyIGV2ZW50IHNvIHRoYXQgd2Uga25vd1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTkzOlx0ICogdGhlIGV2ZW50IHN0cnVjdHVyZSB3ZSBoYXZlIGNyZWF0ZWQgaW4gZmFub3RpZnlfaGFuZGxlX2V2ZW50KCkgaXMgdGhlXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xOTQtXHQgKiBvbmUgd2Ugc2hvdWxkIGNoZWNrIGZvciBwZXJtaXNzaW9uIHJlc3BvbnNlLlxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTkxMD1zdGF0aWMgdm9pZCBmYW5vdGlmeV9pbnNlcnRfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05MjctXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo5Mjg6c3RhdGljIGludCBmYW5vdGlmeV9oYW5kbGVfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCwgdTMyIG1hc2ssXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05MjktXHRcdFx0XHQgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGRhdGFfdHlwZSxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz0xMTE2PWNvbnN0IHN0cnVjdCBmc25vdGlmeV9vcHMgZmFub3RpZnlfZnNub3RpZnlfb3BzID0ge1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTExNzpcdC5oYW5kbGVfZXZlbnQgPSBmYW5vdGlmeV9oYW5kbGVfZXZlbnQsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMTE4LVx0LmZyZWVfZ3JvdXBfcHJpdiA9IGZhbm90aWZ5X2ZyZWVfZ3JvdXBfcHJpdixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEZhbm90aWZ5IEV2ZW50IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgIGFzIGEga2V5IGFyZWEgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gSXQgZmVlbHMgbGlrZSBhIG5hdHVyYWwgcG9pbnQgb2YgZm9jdXMgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGV2ZW50cyBhcmUgbWFuYWdlZC4gTm93LCBJJiMzOTttIGFsc28gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhvc2UgZXZlbnRzIGFjdHVhbGx5ICpjb21lKiBmcm9tLCBhbmQgYGZhbm90aWZ5X3JlYWRgIGluIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jYCBzZWVtcyBsaWtlIGEgbGlrZWx5IGNhbmRpZGF0ZSBnaXZlbiBpdHMgcm9sZSBpbiByZWFkaW5nIHRoZSBldmVudHMuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhhdCBgZmFub3RpZnlfdXNlci5jYCBmaWxlIGFuZCBzZWUgd2hhdCBpbnNpZ2h0cyBgZmFub3RpZnlfcmVhZGAgY2FuIHByb3ZpZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zhbm90aWZ5X3JlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9OTY0PXN0YXRpYyBfX3BvbGxfdCBmYW5vdGlmeV9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTc3LVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzo5Nzg6c3RhdGljIHNzaXplX3QgZmFub3RpZnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTc5LVx0XHRcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcylcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jPTExNjk9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZmFub3RpZnlfZm9wcyA9IHtcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTExNzEtXHQucG9sbFx0XHQ9IGZhbm90aWZ5X3BvbGwsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjExNzI6XHQucmVhZFx0XHQ9IGZhbm90aWZ5X3JlYWQsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTExNzMtXHQud3JpdGVcdFx0PSBmYW5vdGlmeV93cml0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipGb2N1c2luZyBvbiBGYW5vdGlmeSBQZXJtaXNzaW9ucyoqCgpSaWdodCwgYGZhbm90aWZ5X3JlYWRgIGFuZCBgZmFub3RpZnlfd3JpdGVgIGFyZSBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUsIHRoZSByZWFsIGZvY3VzIHN5bWJvbHMgd2hlbiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBwZXJtaXNzaW9uIHJlc3BvbnNlcy4gR2l2ZW4gdGhlIGNvbnRleHQsIGBmYW5vdGlmeV93cml0ZWAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIGltbWVkaWF0ZWx5IGdyYWJiaW5nIG15IGF0dGVudGlvbi4gSXQmIzM5O3MgdGhlIG9uZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhvc2UgcGVybWlzc2lvbiByZXF1ZXN0cywgc28gaXQmIzM5O3MgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuIExldCYjMzk7cyBkaXZlIGluIGFuZCBleGFtaW5lIGl0cyBiZWhhdmlvdXIgbW9yZSBjbG9zZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYW5vdGlmeV93cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYz05Nzg9c3RhdGljIHNzaXplX3QgZmFub3RpZnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTEwNTQtXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjEwNTU6c3RhdGljIHNzaXplX3QgZmFub3RpZnlfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwb3MpXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTEwNTYte1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9MTE2OT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYW5vdGlmeV9mb3BzID0ge1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMTE3Mi1cdC5yZWFkXHRcdD0gZmFub3RpZnlfcmVhZCxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM6MTE3MzpcdC53cml0ZVx0XHQ9IGZhbm90aWZ5X3dyaXRlLFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMTc0LVx0LmZhc3luY1x0XHQ9IE5VTEwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNjkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24sIHRoaW5raW5nIGl0IHRocm91Z2ggYXMgYW4gZXhwZXJ0OgoKKipGYW5vdGlmeSBFdmVudCBIYW5kbGluZyBEZWVwIERpdmUqKgoKQWxyaWdodCwgbXkgZm9jdXMgaGVyZSBpcyBjbGVhcmx5IG9uIHRoZSBjb3JlIGZhbm90aWZ5IGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGxvb2sgYXQgYXJlIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgLCBgZmFub3RpZnlfcmVhZGAsIGFuZCBgZmFub3RpZnlfd3JpdGVgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBoYW5kbGluZyBhbmQgaW50ZXJwcmV0aW5nIHRoZSBldmVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIuCgpOb3csIGZyb20gdGhlIGxvb2sgb2YgaXQsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgYEZBTk9USUZZYCBpdHNlbGYgYW5kIGBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBpbmZsdWVuY2luZyB0aGlzLCBidXQgdGhvc2UgdHdvIGFyZSB0aGUgcHJpbWFyeSBvbmVzIHRvIGNvbnNpZGVyLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIHRoZSBoZWFydCBvZiBmYW5vdGlmeSwgbW9kaWZ5aW5nIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY2AgYW5kIGl0cyBoZWFkZXIgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oYC4gR2l2ZW4gdGhlc2UgZmlsZXMsIHRoZSBjb3JlIGNvZGUgSSB3YW50IHRvIGV4YW1pbmUgaXMgYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgY2xvc2VseSBhdCB0aGF0LgoKSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgdGhhdCBgZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudGAgaXNuJiMzOTt0IGhpZGRlbiBiZWhpbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJIGhhdmUgdG8gbG9vayBmb3IgYCNpZmRlZmAgZGlyZWN0aXZlcyB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBkb24mIzM5O3Qgd2FudCB0byBnZXQgY2F1Z2h0IG9mZiBndWFyZCBieSBzb21lIGNvbmZpZ3VyYXRpb24gb3IgYnVpbGQgZmxhZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTU2OT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19tbnRfZXZlbnQodTY0IG1udF9pZCwgZ2ZwX3QgZ2ZwKVxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4Mi1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjU4MzpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy01ODQtXHRcdFx0XHRcdFx0XHRpbnQgZGF0YV90eXBlLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTc0NT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTMtXHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSkge1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6ODU0Olx0XHRldmVudCA9IGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQoZGF0YSwgZGF0YV90eXBlLCBnZnApO1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtODU1LVx0fSBlbHNlIGlmIChmYW5vdGlmeV9pc19lcnJvcl9ldmVudChtYXNrKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODU1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBmYW5vdGlmeS5jKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBmYW5vdGlmeWAgaW1wbGVtZW50YXRpb24gYmV0dGVyLCBzbyBJJiMzOTttIGdvaW5nIHRvIGp1bXAgcmlnaHQgaW50byB0aGUgY29kZS4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiBgZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNgLiBJIGZpZ3VyZSB0aGUgY29yZSBsb2dpYyBzaG91bGQgYmUgcHJldHR5IGV2aWRlbnQgdGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYXJvdW5kIGxpbmUgNTgzLiBUaGF0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpc3NlY3RpbmcgYSBjb21wbGV4IGtlcm5lbCBtb2R1bGUsIGFzIGl0JiMzOTtzIG9mdGVuIGluIGEgZnVuY3Rpb24gb3IgYmxvY2sgdGhhdCBoYW5kbGVzIHRoZSBjb3JlIHByb2Nlc3Npbmcgb2YgZXZlbnRzIG9yIGluaXRpYWxpemF0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGF0IHNlY3Rpb24gb2YgY29kZSBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTYwOlx0XG4gNTYxOlx0XHRwZXZlbnQtXHUwMDNlZmFlLnR5cGUgPSBGQU5PVElGWV9FVkVOVF9UWVBFX1BBVEg7XG4gNTYyOlx0XHRwZXZlbnQtXHUwMDNlcGF0aCA9ICpwYXRoO1xuIDU2MzpcdFx0Kmhhc2ggXj0gZmFub3RpZnlfaGFzaF9wYXRoKHBhdGgpO1xuIDU2NDpcdFx0cGF0aF9nZXQocGF0aCk7XG4gNTY1Olx0XG4gNTY2Olx0XHRyZXR1cm4gXHUwMDI2cGV2ZW50LVx1MDAzZWZhZTtcbiA1Njc6XHR9XG4gNTY4Olx0XG4gNTY5Olx0c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfbW50X2V2ZW50KHU2NCBtbnRfaWQsIGdmcF90IGdmcClcbiA1NzA6XHR7XG4gNTcxOlx0XHRzdHJ1Y3QgZmFub3RpZnlfbW50X2V2ZW50ICpwZXZlbnQ7XG4gNTcyOlx0XG4gNTczOlx0XHRwZXZlbnQgPSBrbWVtX2NhY2hlX2FsbG9jKGZhbm90aWZ5X21udF9ldmVudF9jYWNoZXAsIGdmcCk7XG4gNTc0Olx0XHRpZiAoIXBldmVudClcbiA1NzU6XHRcdFx0cmV0dXJuIE5VTEw7XG4gNTc2Olx0XG4gNTc3Olx0XHRwZXZlbnQtXHUwMDNlZmFlLnR5cGUgPSBGQU5PVElGWV9FVkVOVF9UWVBFX01OVDtcbiA1Nzg6XHRcdHBldmVudC1cdTAwM2VtbnRfaWQgPSBtbnRfaWQ7XG4gNTc5Olx0XG4gNTgwOlx0XHRyZXR1cm4gXHUwMDI2cGV2ZW50LVx1MDAzZWZhZTtcbiA1ODE6XHR9XG4gNTgyOlx0XG4gNTgzOlx0c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLFxuIDU4NDpcdFx0XHRcdFx0XHRcdFx0aW50IGRhdGFfdHlwZSxcbiA1ODU6XHRcdFx0XHRcdFx0XHRcdGdmcF90IGdmcClcbiA1ODY6XHR7XG4gNTg3Olx0XHRjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCA9IGZzbm90aWZ5X2RhdGFfcGF0aChkYXRhLCBkYXRhX3R5cGUpO1xuIDU4ODpcdFx0Y29uc3Qgc3RydWN0IGZpbGVfcmFuZ2UgKnJhbmdlID1cbiA1ODk6XHRcdFx0XHQgICAgZnNub3RpZnlfZGF0YV9maWxlX3JhbmdlKGRhdGEsIGRhdGFfdHlwZSk7XG4gNTkwOlx0XHRzdHJ1Y3QgZmFub3RpZnlfcGVybV9ldmVudCAqcGV2ZW50O1xuIDU5MTpcdFxuIDU5MjpcdFx0cGV2ZW50ID0ga21lbV9jYWNoZV9hbGxvYyhmYW5vdGlmeV9wZXJtX2V2ZW50X2NhY2hlcCwgZ2ZwKTtcbiA1OTM6XHRcdGlmICghcGV2ZW50KVxuIDU5NDpcdFx0XHRyZXR1cm4gTlVMTDtcbiA1OTU6XHRcbiA1OTY6XHRcdHBldmVudC1cdTAwM2VmYWUudHlwZSA9IEZBTk9USUZZX0VWRU5UX1RZUEVfUEFUSF9QRVJNO1xuIDU5NzpcdFx0cGV2ZW50LVx1MDAzZXJlc3BvbnNlID0gMDtcbiA1OTg6XHRcdHBldmVudC1cdTAwM2VoZHIudHlwZSA9IEZBTl9SRVNQT05TRV9JTkZPX05PTkU7XG4gNTk5Olx0XHRwZXZlbnQtXHUwMDNlaGRyLnBhZCA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEZhbm90aWZ5IFBlcm1pc3Npb24gRXZlbnQgTG9naWMqKgoKSG1tLCBpbnRlcmVzdGluZy4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgIGZ1bmN0aW9uIGFuZCBpdCBzdHJpa2VzIG1lIHRoYXQgdGhlcmUmIzM5O3Mgbm8gYCNpZmRlZmAgc3Vycm91bmRpbmcgaXQuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLCBpc24mIzM5O3QgaXQ/IEdlbmVyYWxseSwgSSYjMzk7ZCBleHBlY3Qgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBoZXJlLCBjb25zaWRlcmluZyB0aGUgbmF0dXJlIG9mIHRoZSBmdW5jdGlvbmFsaXR5LiBUaGVuIGFnYWluLCBJIGtub3cgdGhhdCB5b3UgaGF2ZSB0byBkZWZpbmUgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgdG8gKmFjdHVhbGx5KiBtYWtlIHVzZSBvZiBwZXJtaXNzaW9uIGV2ZW50cy4gU28sIHRoZSBtZXJlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdGhlIGZ1bmN0aW9uIGl0c2VsZiBkb2VzbiYjMzk7dCBuZWNlc3NhcmlseSBpbmRpY2F0ZSBhbnl0aGluZyBkZWZpbml0aXZlIGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uLgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJ1ZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBwZXJtaXNzaW9uIGV2ZW50IGxvZ2ljLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHN0cnVjdHVyZXMgYW5kIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSB0aGluayB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgaG93IGBmYW5vdGlmeV9pc19wZXJtX2V2ZW50YCBpcyBpbXBsZW1lbnRlZCBhbmQgdXNlZC4gVGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGFsbCBmaXRzIGluIHdpdGggdGhlIGJyb2FkZXIgZmFub3RpZnkgcGljdHVyZS4gSXQgd2lsbCBhbHNvIGhlbHAgbWUgdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbiwgb3IgYSBtb3JlIGdlbmVyYWwgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmFub3RpZnlfaXNfcGVybV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9MTgwPXN0YXRpYyBpbnQgZmFub3RpZnlfbWVyZ2Uoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xOTUtXHQgKi9cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjE5NjpcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG5ldy1cdTAwM2VtYXNrKSlcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTE5Ny1cdFx0cmV0dXJuIDA7XG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzQ1PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2V2ZW50KFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTg1Mi1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjg1MzpcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKSB7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTQtXHRcdGV2ZW50ID0gZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChkYXRhLCBkYXRhX3R5cGUsIGdmcCk7XG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9OTI4PXN0YXRpYyBpbnQgZmFub3RpZnlfaGFuZGxlX2V2ZW50KHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXAsIHUzMiBtYXNrLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk3Mi1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjk3MzpcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKSB7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05NzQtXHRcdC8qXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTkyLVx0XHQgKi9cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjk5MzpcdFx0aWYgKCFmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTk0LVx0XHRcdGZzbm90aWZ5X3F1ZXVlX292ZXJmbG93KGdyb3VwKTtcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDA3LVx0XHRyZXQgPSAwO1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTAwODpcdH0gZWxzZSBpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSkge1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtMTAwOS1cdFx0cmV0ID0gZmFub3RpZnlfZ2V0X3Jlc3BvbnNlKGdyb3VwLCBGQU5PVElGWV9QRVJNKGV2ZW50KSxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDEyLWZpbmlzaDpcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjEwMTM6XHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSlcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTEwMTQtXHRcdGZzbm90aWZ5X2ZpbmlzaF91c2VyX3dhaXQoaXRlcl9pbmZvKTtcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaD00NTY9RkFOT1RJRllfUEVSTShzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmV2ZW50KVxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oLTQ2MC1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oOjQ2MTpzdGF0aWMgaW5saW5lIGJvb2wgZmFub3RpZnlfaXNfcGVybV9ldmVudCh1MzIgbWFzaylcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oLTQ2Mi17XG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5Lmg9NTEwPXN0YXRpYyBpbmxpbmUgYm9vbCBmYW5vdGlmeV9pc19oYXNoZWRfZXZlbnQodTMyIG1hc2spXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaC01MTEte1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5Lmg6NTEyOlx0cmV0dXJuICEoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSB8fFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgtNTEzLVx0XHQgZnNub3RpZnlfaXNfb3ZlcmZsb3dfZXZlbnQobWFzaykpO1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9MzE0PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmdldF9vbmVfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTM0MS1cdGZzbm90aWZ5X3JlbW92ZV9maXJzdF9ldmVudChncm91cCk7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjM0MjpcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KGV2ZW50LVx1MDAzZW1hc2spKVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0zNDMtXHRcdEZBTk9USUZZX1BFUk0oZXZlbnQpLVx1MDAzZXN0YXRlID0gRkFOX0VWRU5UX1JFUE9SVEVEO1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9ODM0PXN0YXRpYyBzc2l6ZV90IGNvcHlfZXZlbnRfdG9fdXNlcihzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTQzLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzo5NDQ6XHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChldmVudC1cdTAwM2VtYXNrKSlcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTQ1LVx0XHRGQU5PVElGWV9QRVJNKGV2ZW50KS1cdTAwM2VmZCA9IGZkO1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9OTc4PXN0YXRpYyBzc2l6ZV90IGZhbm90aWZ5X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMDI2LVx0XHQgKi9cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM6MTAyNzpcdFx0aWYgKCFmYW5vdGlmeV9pc19wZXJtX2V2ZW50KGV2ZW50LVx1MDAzZW1hc2spKSB7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTEwMjgtXHRcdFx0ZnNub3RpZnlfZGVzdHJveV9ldmVudChncm91cCwgXHUwMDI2ZXZlbnQtXHUwMDNlZnNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQxNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gUGVybWlzc2lvbiBFdmVudCBIYW5kbGluZyBpbiBmYW5vdGlmeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZmFub3RpZnlfaXNfcGVybV9ldmVudGAgZnVuY3Rpb24uIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnJvbSB0aGUgbmFtZTsgaXQmIzM5O3MgZGVzaWduZWQgdG8gZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgZXZlbnQgaXMgcmVsYXRlZCB0byBhIHBlcm1pc3Npb24gY2hlY2sgd2l0aGluIHRoZSBmYW5vdGlmeSBmcmFtZXdvcmsuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gdGhhdCB1bmRlcnN0YW5kaW5nLiBMZXQmIzM5O3MgZGVsdmUgaW50byBpdHMgZGVmaW5pdGlvbiBhbmQgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cgaGVyZS4gV2hhdCBzcGVjaWZpYyBwZXJtaXNzaW9uLXJlbGF0ZWQgZmxhZ3Mgb3IgZXZlbnQgdHlwZXMgaXMgaXQgY2hlY2tpbmcgZm9yPyBJcyBpdCBhIHNpbXBsZSBiaXR3aXNlIGNvbXBhcmlzb24sIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXg/IEkgbmVlZCB0byBrbm93IHRoZSBleGFjdCBjcml0ZXJpYSB0aGF0IHF1YWxpZnkgYW4gZXZlbnQgYXMgYSAmIzM0O3Blcm1pc3Npb24mIzM0OyBldmVudCBpbiB0aGlzIGNvbnRleHQuIFRoaXMgaXMgY29yZSB0byB1bmRlcnN0YW5kaW5nIGhvdyBmYW5vdGlmeSBpcyBoYW5kbGluZyBhY2Nlc3MgY29udHJvbCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNyeXN0YWwgY2xlYXIgb24gdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDUwOlx0XHRcdHN0cnVjdCBmYW5vdGlmeV9yZXNwb25zZV9pbmZvX2hlYWRlciBoZHI7XG4gNDUxOlx0XHRcdHN0cnVjdCBmYW5vdGlmeV9yZXNwb25zZV9pbmZvX2F1ZGl0X3J1bGUgYXVkaXRfcnVsZTtcbiA0NTI6XHRcdH07XG4gNDUzOlx0fTtcbiA0NTQ6XHRcbiA0NTU6XHRzdGF0aWMgaW5saW5lIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50ICpcbiA0NTY6XHRGQU5PVElGWV9QRVJNKHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZXZlbnQpXG4gNDU3Olx0e1xuIDQ1ODpcdFx0cmV0dXJuIGNvbnRhaW5lcl9vZihldmVudCwgc3RydWN0IGZhbm90aWZ5X3Blcm1fZXZlbnQsIGZhZSk7XG4gNDU5Olx0fVxuIDQ2MDpcdFxuIDQ2MTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBmYW5vdGlmeV9pc19wZXJtX2V2ZW50KHUzMiBtYXNrKVxuIDQ2MjpcdHtcbiA0NjM6XHRcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlMpIFx1MDAyNlx1MDAyNlxuIDQ2NDpcdFx0XHRtYXNrIFx1MDAyNiBGQU5PVElGWV9QRVJNX0VWRU5UUztcbiA0NjU6XHR9XG4gNDY2Olx0XG4gNDY3Olx0c3RhdGljIGlubGluZSBib29sIGZhbm90aWZ5X2V2ZW50X2hhc19hY2Nlc3NfcmFuZ2Uoc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcbiA0Njg6XHR7XG4gNDY5Olx0XHRpZiAoIShldmVudC1cdTAwM2VtYXNrIFx1MDAyNiBGQU5PVElGWV9QUkVfQ09OVEVOVF9FVkVOVFMpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTk1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEZBTk9USUZZIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCBtZWFucyBgRkFOT1RJRllgIGFuZCBgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TYCBhcmUgdGhlIGtleSBjb25maWdzIGhlcmUuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci4gTG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzLCBgRkFOT1RJRllgIGl0c2VsZiBkb2VzbiYjMzk7dCBkZXBlbmQgb24gYW55dGhpbmcgZWxzZSwgYnV0IGl0ICpzZWxlY3RzKiBgRlNOT1RJRllgIGFuZCBgRVhQT1JURlNgLiAgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgaW4gdHVybiBkZXBlbmRzIG9uIGBGQU5PVElGWWAuIFRoaXMgY2xhcmlmaWVzIHRoZSBoaWVyYXJjaHkuCgpTbywgdG8gYmUgYWJzb2x1dGVseSBjbGVhciwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGJvaWwgZG93biB0byBgRkFOT1RJRllgIGFuZCBgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TYC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZSBjcml0aWNhbCBzeW1ib2xzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uIHdpdGhpbiB0aGUga2VybmVsIGNvZGUgYXJlIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgLCBgZmFub3RpZnlfcmVhZGAsIGFuZCBgZmFub3RpZnlfd3JpdGVgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZSBvdXRzaWRlIG9mIG15IGV4cGVjdGVkIHNjb3BlLiAgQmVzdCB0byBiZSBzdXJlLCBJIGRvbiYjMzk7dCB3YW50IHRvIG1pc3MgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTU2OT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19tbnRfZXZlbnQodTY0IG1udF9pZCwgZ2ZwX3QgZ2ZwKVxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4Mi1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjU4MzpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy01ODQtXHRcdFx0XHRcdFx0XHRpbnQgZGF0YV90eXBlLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTc0NT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTMtXHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSkge1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6ODU0Olx0XHRldmVudCA9IGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQoZGF0YSwgZGF0YV90eXBlLCBnZnApO1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtODU1LVx0fSBlbHNlIGlmIChmYW5vdGlmeV9pc19lcnJvcl9ldmVudChtYXNrKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHBsYXlpbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0OgoKKipUcmFjaW5nIHRoZSBFdmVudCBBbGxvY2F0aW9uIGluIEZhbm90aWZ5KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZSBldmVudCBhbGxvY2F0aW9uLCBgZmFub3RpZnlfYWxsb2NfZXZlbnRgLCBzZWVtcyB0byBiZSBjYWxsZWQgKm9ubHkqIHdpdGhpbiB0aGUgZnVuY3Rpb24gYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAuIFRoYXQgbWFrZXMgYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IHRvIGZvbGxvdywgYXMgZmFyIGFzIGFsbG9jYXRpbmcgYW4gZXZlbnQgaXMgY29uY2VybmVkLiBJdCYjMzk7cyB0aGUgdG9wIG9mIHRoZSBjaGFpbiBmb3IgdGhpcyBhbGxvY2F0aW9uIHByb2Nlc3MuIEJ1dCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBkb24mIzM5O3Qgd2FudCB0byBtYWtlIGFzc3VtcHRpb25zLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIGBmYW5vdGlmeV9hbGxvY19ldmVudGAgaXMgZXZlciBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZSB3aXRoaW4gdGhlIGNvZGUsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHRvIGJlIHN1cmUgbXkgd29ya2luZyBhc3N1bXB0aW9uIGlzIGNvcnJlY3QuIEEgY29tcHJlaGVuc2l2ZSByZXZpZXcgaXMgbmVjZXNzYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYW5vdGlmeV9hbGxvY19ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9Mjk3PXN0YXRpYyB1MzIgZmFub3RpZnlfZ3JvdXBfZXZlbnRfbWFzayhzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTM2MS1cdCAqIFdlIG5ldmVyIHJlcG9ydCBGQU5fRVZFTlRfT05fQ0hJTEQgdG8gdXNlciwgYnV0IHdlIGRvIHBhc3MgaXQgaW4gdG9cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjM2MjpcdCAqIGZhbm90aWZ5X2FsbG9jX2V2ZW50KCkgd2hlbiBncm91cCBpcyByZXBvcnRpbmcgZmlkIGFzIGluZGljYXRpb25cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTM2My1cdCAqIHRoYXQgZXZlbnQgaGFwcGVuZWQgb24gY2hpbGQuXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzA3PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2Vycm9yX2V2ZW50KFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTc0NC1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjc0NTpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTc0Ni1cdFx0XHRcdHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXAsXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9OTI4PXN0YXRpYyBpbnQgZmFub3RpZnlfaGFuZGxlX2V2ZW50KHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXAsIHUzMiBtYXNrLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk4NC1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjk4NTpcdGV2ZW50ID0gZmFub3RpZnlfYWxsb2NfZXZlbnQoZ3JvdXAsIG1hc2ssIGRhdGEsIGRhdGFfdHlwZSwgZGlyLFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTg2LVx0XHRcdFx0ICAgICBmaWxlX25hbWUsIFx1MDAyNmZzaWQsIG1hdGNoX21hc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ2OQoJCQkJCQkJb3V0cHV0OiAxMjQKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGYW5vdGlmeSBFdmVudCBIYW5kbGluZyBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBgZmFub3RpZnlgIGlzc3VlLCBhbmQgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHJpZ2h0IHRoZXJlIGluIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjcml0aWNhbCBtYW5pcHVsYXRpb24gb2YgdGhlIGV2ZW50IGRhdGEgb2NjdXJzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgcHBvc2AgcG9pbnRlci4gSSYjMzk7dmUgbmFycm93ZWQgbXkgZm9jdXMgdG8gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBgZmFub3RpZnlfcmVhZGAgYW5kIGBmYW5vdGlmeV93cml0ZWAsIHNpbmNlIHRoZXkgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgZXZlbnQgaGFuZGxpbmcgbWVjaGFuaXNtLgoKVGhlIGZpeCBpdHNlbGYgaXMgYSBmdW5jdGlvbmFsIG9uZSwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IHZ1bG5lcmFiaWxpdHkuIFRoZSBjb25jZXJuIGlzIHRoYXQgYHBldmVudC0mZ3Q7cHBvc2Agd2FzIGRpcmVjdGx5IHBvaW50aW5nIHRvIGByYW5nZS0mZ3Q7cG9zYCwgd2hpY2gsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgY291bGQgYmUgc3RhY2stYWxsb2NhdGVkIG9yIGZyZWVkIG1lbW9yeS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmVjaXBlIGZvciBhIGhhcmQtdG8tZGVidWcgY3Jhc2ggb3IsIHdvcnNlLCBleHBsb2l0YXRpb24uIFRoZSBzb2x1dGlvbiwgY29weWluZyBgcmFuZ2UtJmd0O3Bvc2AgdG8gYHBldmVudC0mZ3Q7cG9zYCBhbmQgdGhlbiBoYXZpbmcgYHBldmVudC0mZ3Q7cHBvc2AgcG9pbnQgdG8gKnRoYXQqIGNvcHkgaXMgY2xlYW4sIGVsZWdhbnQsIGFuZCBhdm9pZHMgdGhlIHByb2JsZW0gZW50aXJlbHkuIEEgc29saWQgZml4LgoKSSYjMzk7dmUgYWxzbyBjb25maXJtZWQgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIG5hbWVseSBgRkFOT1RJRllgIGFuZCBgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TYCwgYXJlIHRoZSBvbmx5IG9uZXMgYXQgcGxheSBoZXJlLiBObyBzdXJwcmlzZXMgdGhlcmUuIFRoZXkmIzM5O3JlIHRoZSBnYXRla2VlcGVycyBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgoKTm93IHRoYXQgSSYjMzk7bSBzYXRpc2ZpZWQgd2l0aCB0aGUgYXNzZXNzbWVudCBhbmQgdGhlIHNvbHV0aW9uJiMzOTtzIGNsYXJpdHksIEkmIzM5O20gcmVhZHkgdG8gY29tbWl0IHRoaXMuIFRpbWUgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZBTk9USUZZJiMzNDssCiAgICAmIzM0O0ZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zhbm90aWZ5X2hhbmRsZV9ldmVudCYjMzQ7LAogICAgJiMzNDtmYW5vdGlmeV9yZWFkJiMzNDssCiAgICAmIzM0O2Zhbm90aWZ5X3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBmYW5vdGlmeSBwZXJtaXNzaW9uIGV2ZW50cyBieSBjb3B5aW5nIHRoZSBmaWxlIHJhbmdlIHBvc2l0aW9uIGludG8gdGhlIGV2ZW50IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGtlZXBpbmcgYSBwb2ludGVyIHRvIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmFub3RpZnkgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZBTk9USUZZJiMzNDssCiAgICAmIzM0O0ZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zhbm90aWZ5X2hhbmRsZV9ldmVudCYjMzQ7LAogICAgJiMzNDtmYW5vdGlmeV9yZWFkJiMzNDssCiAgICAmIzM0O2Zhbm90aWZ5X3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBmYW5vdGlmeSBwZXJtaXNzaW9uIGV2ZW50cyBieSBjb3B5aW5nIHRoZSBmaWxlIHJhbmdlIHBvc2l0aW9uIGludG8gdGhlIGV2ZW50IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGtlZXBpbmcgYSBwb2ludGVyIHRvIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmFub3RpZnkgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDoyOC4yNzk1MjE1OTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA5NTY0ODk5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkFOT1RJRllcIixcbiAgICBcIkZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZhbm90aWZ5X2hhbmRsZV9ldmVudFwiLFxuICAgIFwiZmFub3RpZnlfcmVhZFwiLFxuICAgIFwiZmFub3RpZnlfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZmFub3RpZnkgcGVybWlzc2lvbiBldmVudHMgYnkgY29weWluZyB0aGUgZmlsZSByYW5nZSBwb3NpdGlvbiBpbnRvIHRoZSBldmVudCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBrZWVwaW5nIGEgcG9pbnRlciB0byBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZhbm90aWZ5IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDoyOC4yNzk1Mjc1MzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTAzOTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQyOWQwZjI1Nzg5MDBhNDdiZmFiOTI0OTQ5ZjM4NGFjZWRkOWRhOWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjA6NDQ6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1xcbmluZGV4IGEzNTU1YmViYWQ2M2UuLmM5N2QxYmU3MDMxMDQgMTAwNjQ0XFxuLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNcXG4rKysgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1xcbkBAIC02MDEsNyArNjAxLDggQEAgc3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLFxcbiBcXHRwZXZlbnQtXFx1MDAzZXN0YXRlID0gRkFOX0VWRU5UX0lOSVQ7XFxuIFxcdHBldmVudC1cXHUwMDNlcGF0aCA9ICpwYXRoO1xcbiBcXHQvKiBOVUxMIHBwb3MgbWVhbnMgbm8gcmFuZ2UgaW5mbyAqL1xcbi1cXHRwZXZlbnQtXFx1MDAzZXBwb3MgPSByYW5nZSA/IFxcdTAwMjZyYW5nZS1cXHUwMDNlcG9zIDogTlVMTDtcXG4rXFx0cGV2ZW50LVxcdTAwM2Vwb3MgPSByYW5nZSA/IHJhbmdlLVxcdTAwM2Vwb3MgOiAwO1xcbitcXHRwZXZlbnQtXFx1MDAzZXBwb3MgPSByYW5nZSA/IFxcdTAwMjZwZXZlbnQtXFx1MDAzZXBvcyA6IE5VTEw7XFxuIFxcdHBldmVudC1cXHUwMDNlY291bnQgPSByYW5nZSA/IHJhbmdlLVxcdTAwM2Vjb3VudCA6IDA7XFxuIFxcdHBhdGhfZ2V0KHBhdGgpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmggYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaFxcbmluZGV4IGEwNjE5ZTc2OTRkNTcuLmM5NjRkZjZjMDUxNDUgMTAwNjQ0XFxuLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmhcXG4rKysgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaFxcbkBAIC00MzgsNyArNDM4LDggQEAgRkFOT1RJRllfTUUoc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcXG4gc3RydWN0IGZhbm90aWZ5X3Blcm1fZXZlbnQge1xcbiBcXHRzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgZmFlO1xcbiBcXHRzdHJ1Y3QgcGF0aCBwYXRoO1xcbi1cXHRjb25zdCBsb2ZmX3QgKnBwb3M7XFx0XFx0Lyogb3B0aW9uYWwgZmlsZSByYW5nZSBpbmZvICovXFxuK1xcdGxvZmZfdCBwb3M7XFxuK1xcdGNvbnN0IGxvZmZfdCAqcHBvcztcXHRcXHQvKiBcXHUwMDI2cG9zIGlmIHJhbmdlIGluZm8gaXMgYXZhaWxhYmxlICovXFxuIFxcdHNpemVfdCBjb3VudDtcXG4gXFx0dTMyIHJlc3BvbnNlO1xcdFxcdFxcdC8qIHVzZXJzcGFjZSBhbnN3ZXIgdG8gdGhlIGV2ZW50ICovXFxuIFxcdHVuc2lnbmVkIHNob3J0IHN0YXRlO1xcdFxcdC8qIHN0YXRlIG9mIHRoZSBldmVudCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDoyOC42MDkzMDE2MTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMjA2MjY2OTY5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkFOT1RJRllcIixcbiAgICBcIkZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZhbm90aWZ5X2hhbmRsZV9ldmVudFwiLFxuICAgIFwiZmFub3RpZnlfcmVhZFwiLFxuICAgIFwiZmFub3RpZnlfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZmFub3RpZnkgcGVybWlzc2lvbiBldmVudHMgYnkgY29weWluZyB0aGUgZmlsZSByYW5nZSBwb3NpdGlvbiBpbnRvIHRoZSBldmVudCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBrZWVwaW5nIGEgcG9pbnRlciB0byBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZhbm90aWZ5IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMjlkMGYyNTc4OTAwYTQ3YmZhYjkyNDk0OWYzODRhY2VkZDlkYTljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjA6NDQ6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jXG5pbmRleCBhMzU1NWJlYmFkNjNlLi5jOTdkMWJlNzAzMTA0IDEwMDY0NFxuLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNcbisrKyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jXG5AQCAtNjAxLDcgKzYwMSw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQoY29uc3Qgdm9pZCAqZGF0YSxcbiBcdHBldmVudC1cdTAwM2VzdGF0ZSA9IEZBTl9FVkVOVF9JTklUO1xuIFx0cGV2ZW50LVx1MDAzZXBhdGggPSAqcGF0aDtcbiBcdC8qIE5VTEwgcHBvcyBtZWFucyBubyByYW5nZSBpbmZvICovXG4tXHRwZXZlbnQtXHUwMDNlcHBvcyA9IHJhbmdlID8gXHUwMDI2cmFuZ2UtXHUwMDNlcG9zIDogTlVMTDtcbitcdHBldmVudC1cdTAwM2Vwb3MgPSByYW5nZSA/IHJhbmdlLVx1MDAzZXBvcyA6IDA7XG4rXHRwZXZlbnQtXHUwMDNlcHBvcyA9IHJhbmdlID8gXHUwMDI2cGV2ZW50LVx1MDAzZXBvcyA6IE5VTEw7XG4gXHRwZXZlbnQtXHUwMDNlY291bnQgPSByYW5nZSA/IHJhbmdlLVx1MDAzZWNvdW50IDogMDtcbiBcdHBhdGhfZ2V0KHBhdGgpO1xuIFxuZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmhcbmluZGV4IGEwNjE5ZTc2OTRkNTcuLmM5NjRkZjZjMDUxNDUgMTAwNjQ0XG4tLS0gYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaFxuKysrIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmhcbkBAIC00MzgsNyArNDM4LDggQEAgRkFOT1RJRllfTUUoc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcbiBzdHJ1Y3QgZmFub3RpZnlfcGVybV9ldmVudCB7XG4gXHRzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgZmFlO1xuIFx0c3RydWN0IHBhdGggcGF0aDtcbi1cdGNvbnN0IGxvZmZfdCAqcHBvcztcdFx0Lyogb3B0aW9uYWwgZmlsZSByYW5nZSBpbmZvICovXG4rXHRsb2ZmX3QgcG9zO1xuK1x0Y29uc3QgbG9mZl90ICpwcG9zO1x0XHQvKiBcdTAwMjZwb3MgaWYgcmFuZ2UgaW5mbyBpcyBhdmFpbGFibGUgKi9cbiBcdHNpemVfdCBjb3VudDtcbiBcdHUzMiByZXNwb25zZTtcdFx0XHQvKiB1c2Vyc3BhY2UgYW5zd2VyIHRvIHRoZSBldmVudCAqL1xuIFx0dW5zaWduZWQgc2hvcnQgc3RhdGU7XHRcdC8qIHN0YXRlIG9mIHRoZSBldmVudCAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjA6NDQ6MjguNjA5MzAyNzY2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM3NDcxOTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZhbm90aWZ5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jYCBhbmQgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiBgc3RydWN0IGZhbm90aWZ5X3Blcm1fZXZlbnRgLiBUaGV5J3ZlIGFkZGVkIGEgYGxvZmZfdCBwb3NgIGZpZWxkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdGhleSd2ZSBhbHRlcmVkIGhvdyB0aGUgYHBvc2AgYW5kIGBwcG9zYCBmaWVsZHMgYXJlIHBvcHVsYXRlZC4gVGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBhIHBvaW50ZXIgdG8gYSBwb3RlbnRpYWxseSBzdGFjay1hbGxvY2F0ZWQgb3IgdHJhbnNpZW50bHkgYWxsb2NhdGVkIGByYW5nZWAgc3RydWN0J3MgYHBvc2AgZmllbGQ6IGBwZXZlbnQtXHUwMDNlcHBvcyA9IHJhbmdlID8gXHUwMDI2cmFuZ2UtXHUwMDNlcG9zIDogTlVMTDtgLiBUaGUgbmV3IGNvZGUgaXMgbm93IGRvaW5nIHRoaXM6IGBwZXZlbnQtXHUwMDNlcG9zID0gcmFuZ2UgPyByYW5nZS1cdTAwM2Vwb3MgOiAwOyBwZXZlbnQtXHUwMDNlcHBvcyA9IHJhbmdlID8gXHUwMDI2cGV2ZW50LVx1MDAzZXBvcyA6IE5VTEw7YC5cblxuUmlnaHQsIEkgc2VlIHdoYXQgdGhleSdyZSBkb2luZy4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBmaXguIFRoYXQgYHJhbmdlYCBzdHJ1Y3QgY291bGQgZWFzaWx5IGJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgb3IgZnJlZWQgYmVmb3JlIHRoZSBmYW5vdGlmeSBldmVudCBpcyBhY3R1YWxseSBoYW5kbGVkLiBUaGlzIG5ldyBhcHByb2FjaCBjb3BpZXMgdGhlIGByYW5nZS1cdTAwM2Vwb3NgIHZhbHVlIGludG8gdGhlIGBwZXZlbnQtXHUwMDNlcG9zYCBmaWVsZCwgYW5kIHRoZW4gdGFrZXMgdGhlICphZGRyZXNzKiBvZiB0aGUgYHBldmVudC1cdTAwM2Vwb3NgIG1lbWJlciB0byBhc3NpZ24gdG8gYHBwb3NgLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCB0aGUgcG9pbnRlciBgcHBvc2Agd2lsbCBhbHdheXMgYmUgdmFsaWQgYmVjYXVzZSBpdCdzIHBvaW50aW5nIHRvIGEgZmllbGQgKndpdGhpbiogdGhlIGFsbG9jYXRlZCBgZmFub3RpZnlfcGVybV9ldmVudGAgc3RydWN0LiBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gbGlrZWx5IGV4cG9zZWQgYSByYWNlIGNvbmRpdGlvbiwgc28gdGhpcyBpcyBhIGdvb2QgY2hhbmdlLlxuXG5MZXQgbWUgZ28gYW5kIHRha2UgYSBsb29rIGF0IHRoZSBldmVudCBhbGxvY2F0aW9uIGZ1bmN0aW9uIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBpbiBgZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNgIHRvIGJlIHN1cmUgdGhhdCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgaXMgY29ycmVjdCBhbmQgdGhhdCB0aGUgc3RydWN0IGBmYW5vdGlmeV9wZXJtX2V2ZW50YCBpcyBjb3JyZWN0bHkgZnJlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDozNC45ODQwMjU5NTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc1MzkyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz01Njk9c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfbW50X2V2ZW50KHU2NCBtbnRfaWQsIGdmcF90IGdmcClcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4Mi1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo1ODM6c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLFxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnQgZGF0YV90eXBlLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzQ1PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2V2ZW50KFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtODUzLVxcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKSB7XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6ODU0OlxcdFxcdGV2ZW50ID0gZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChkYXRhLCBkYXRhX3R5cGUsIGdmcCk7XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtODU1LVxcdH0gZWxzZSBpZiAoZmFub3RpZnlfaXNfZXJyb3JfZXZlbnQobWFzaykpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjA6NDQ6MzUuMDMxNTcwMTI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI5MzkwNjUxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRmFub3RpZnkgRXZlbnQgQWxsb2NhdGlvbiBmb3IgRnV6emluZyoqXG5cbkFscmlnaHQsIHNvIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBpcyBjYWxsZWQgYnkgYGZhbm90aWZ5X2FsbG9jX2V2ZW50YC4gQW5kIHRoYXQgbGF0dGVyIGZ1bmN0aW9uLCBgZmFub3RpZnlfYWxsb2NfZXZlbnRgLCB0aGF0J3MgdGhlIG1haW4gZXZlbnQgYWxsb2NhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIHdob2xlIGZhbm90aWZ5IHN1YnN5c3RlbSwgcmlnaHQ/IFRoYXQganVtcHMgb3V0IGF0IG1lIGltbWVkaWF0ZWx5IOKAkyB0aGlzIGlzICpwcmltZSogZnV6emluZyB0ZXJyaXRvcnkuIEFueSBmdW5jdGlvbiB0aGF0J3MgYWxsb2NhdGluZyBldmVudHMgaXMgZ29pbmcgdG8gYmUgYSBwb3RlbnRpYWwgY2hva2UgcG9pbnQsIGEgcGxhY2Ugd2hlcmUgd2UgY2FuIHRyeSB0byB0cmlnZ2VyIG1lbW9yeSBjb3JydXB0aW9uLCByZXNvdXJjZSBleGhhdXN0aW9uLCBvciBvdGhlciBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLiBUaGUgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHByb2Nlc3MgaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS5cblxuQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBmYW5vdGlmeS4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgdGhpcyBjb2RlIGJlaGF2ZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBjYW4gcmVhbGx5IGhlbHAgbmFycm93IGRvd24gdGhlIHNlYXJjaCBhbmQgcHJpb3JpdGl6ZSB0aGUgY3JpdGljYWwgcGFydHMgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDo1Ny45NzA2MzgyODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNjM3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZBTk9USUZZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWc6Mjpjb25maWcgRkFOT1RJRllcXG5mcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIkZpbGVzeXN0ZW0gd2lkZSBhY2Nlc3Mgbm90aWZpY2F0aW9uXFxcIlxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWctMTQtXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWc6MTU6Y29uZmlnIEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1xcbmZzL25vdGlmeS9mYW5vdGlmeS9LY29uZmlnLTE2LVxcdGJvb2wgXFxcImZhbm90aWZ5IHBlcm1pc3Npb25zIGNoZWNraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDo1OC4wMTM4MDg4MDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzU5Mjk4NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRkFOT1RJRlkgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBjb25maWd1cmF0aW9ucyB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYEZBTk9USUZZYCBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AuIFN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZXNlLCBpcyB0byBkaXZlIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBpbnRlcmRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AuIEl0J3MgbGlrZWx5IHRoYXQgZW5hYmxpbmcgdGhpcyBvcHRpb24gaW1wb3NlcyBjZXJ0YWluIHJlc3RyaWN0aW9ucyBvciByZXF1aXJlbWVudHMsIHNvIGxldCdzIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gYmVmb3JlIHdlIGdvIGFueSBmdXJ0aGVyLiBHb3R0YSBtYWtlIHN1cmUgd2UncmUgbm90IGluYWR2ZXJ0ZW50bHkgY3JlYXRpbmcgYSBib3R0bGVuZWNrIG9yIGluY29tcGF0aWJpbGl0eS4gVW5kZXJzdGFuZGluZyB0aGUgZXhhY3QgcmVsYXRpb25zaGlwcyB3aWxsIGluZm9ybSBvdXIgYXBwcm9hY2ggdG8gY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc0NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjAwLjc3MzEwOTc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBGQU5PVElGWVxcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiRmlsZXN5c3RlbSB3aWRlIGFjY2VzcyBub3RpZmljYXRpb25cXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgRlNOT1RJRllcXG4gICA1OlxcdFxcdHNlbGVjdCBFWFBPUlRGU1xcbiAgIDY6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBmYW5vdGlmeSBzdXBwb3J0LiAgZmFub3RpZnkgaXMgYSBmaWxlIGFjY2Vzc1xcbiAgIDk6XFx0XFx0ICAgbm90aWZpY2F0aW9uIHN5c3RlbSB3aGljaCBkaWZmZXJzIGZyb20gaW5vdGlmeSBpbiB0aGF0IGl0IHNlbmRzXFxuICAxMDpcXHRcXHQgICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciB0byB0aGUgdXNlcnNwYWNlIGxpc3RlbmVyIGFsb25nIHdpdGhcXG4gIDExOlxcdFxcdCAgIHRoZSBldmVudC5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1xcbiAgMTY6XFx0XFx0Ym9vbCBcXFwiZmFub3RpZnkgcGVybWlzc2lvbnMgY2hlY2tpbmdcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIEZBTk9USUZZXFxuICAxODpcXHRcXHRkZWZhdWx0IG5cXG4gIDE5OlxcdFxcdGhlbHBcXG4gIDIwOlxcdFxcdCAgIFNheSBZIGhlcmUgaXMgeW91IHdhbnQgZmFub3RpZnkgbGlzdGVuZXJzIHRvIGJlIGFibGUgdG8gbWFrZSBwZXJtaXNzaW9uc1xcbiAgMjE6XFx0XFx0ICAgZGVjaXNpb25zIGNvbmNlcm5pbmcgZmlsZXN5c3RlbSBldmVudHMuICBUaGlzIGlzIHVzZWQgYnkgc29tZSBmYW5vdGlmeVxcbiAgMjI6XFx0XFx0ICAgbGlzdGVuZXJzIHdoaWNoIG5lZWQgdG8gc2NhbiBmaWxlcyBiZWZvcmUgYWxsb3dpbmcgdGhlIHN5c3RlbSBhY2Nlc3MgdG9cXG4gIDIzOlxcdFxcdCAgIHVzZSB0aG9zZSBmaWxlcy4gIFRoaXMgaXMgdXNlZCBieSBzb21lIGFudGktbWFsd2FyZSB2ZW5kb3JzIGFuZCBieSBzb21lXFxuICAyNDpcXHRcXHQgICBoaWVyYXJjaGljYWwgc3RvcmFnZSBtYW5hZ2VtZW50IHN5c3RlbXMuXFxuICAyNTpcXHRcXG4gIDI2OlxcdFxcdCAgIElmIHVuc3VyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjAwLjc3MzE4MDAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk3NzIxODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBGYW5vdGlmeSBFdmVudCBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggYEZBTk9USUZZYCBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgY29uZmlndXJhdGlvbnMuIE5lZWQgdG8gZmlndXJlIG91dCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGhlcmUuXG5cbkZyb20gbXkgZXhwZXJpZW5jZSwgdGhlIHN0YXRpYyBmdW5jdGlvbiBgZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudGAgaXMgYWxtb3N0IGNlcnRhaW5seSBpbmxpbmVkLCBzbyB0aGUgcmVhbCBmbG93IGJlZ2lucyB3aXRoIGl0cyBjYWxsaW5nIGZ1bmN0aW9uLiBUaGF0J3MgYGZhbm90aWZ5X2FsbG9jX2V2ZW50YCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgYnkgYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAuIFRoYXQgbGFzdCBmdW5jdGlvbiBpcyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCB0byBncmFzcCB0aGUgZXZlbnQgaGFuZGxpbmcgbG9naWMuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjA6NDU6MDYuNzUwNDAwOTQ2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjE1MzAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYW5vdGlmeV9oYW5kbGVfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9MTgwPXN0YXRpYyBpbnQgZmFub3RpZnlfbWVyZ2Uoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTE5Mi1cXHQgKiBEb24ndCBtZXJnZSBhIHBlcm1pc3Npb24gZXZlbnQgd2l0aCBhbnkgb3RoZXIgZXZlbnQgc28gdGhhdCB3ZSBrbm93XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTkzOlxcdCAqIHRoZSBldmVudCBzdHJ1Y3R1cmUgd2UgaGF2ZSBjcmVhdGVkIGluIGZhbm90aWZ5X2hhbmRsZV9ldmVudCgpIGlzIHRoZVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTE5NC1cXHQgKiBvbmUgd2Ugc2hvdWxkIGNoZWNrIGZvciBwZXJtaXNzaW9uIHJlc3BvbnNlLlxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9OTEwPXN0YXRpYyB2b2lkIGZhbm90aWZ5X2luc2VydF9ldmVudChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTI3LVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjkyODpzdGF0aWMgaW50IGZhbm90aWZ5X2hhbmRsZV9ldmVudChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLCB1MzIgbWFzayxcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05MjktXFx0XFx0XFx0XFx0IGNvbnN0IHZvaWQgKmRhdGEsIGludCBkYXRhX3R5cGUsXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz0xMTE2PWNvbnN0IHN0cnVjdCBmc25vdGlmeV9vcHMgZmFub3RpZnlfZnNub3RpZnlfb3BzID0ge1xcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjExMTc6XFx0LmhhbmRsZV9ldmVudCA9IGZhbm90aWZ5X2hhbmRsZV9ldmVudCxcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMTE4LVxcdC5mcmVlX2dyb3VwX3ByaXYgPSBmYW5vdGlmeV9mcmVlX2dyb3VwX3ByaXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjA2Ljc5MjU2MDEyNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzI3OTM1NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEZhbm90aWZ5IEV2ZW50IEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YCBhcyBhIGtleSBhcmVhIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIEl0IGZlZWxzIGxpa2UgYSBuYXR1cmFsIHBvaW50IG9mIGZvY3VzIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBldmVudHMgYXJlIG1hbmFnZWQuIE5vdywgSSdtIGFsc28gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhvc2UgZXZlbnRzIGFjdHVhbGx5ICpjb21lKiBmcm9tLCBhbmQgYGZhbm90aWZ5X3JlYWRgIGluIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jYCBzZWVtcyBsaWtlIGEgbGlrZWx5IGNhbmRpZGF0ZSBnaXZlbiBpdHMgcm9sZSBpbiByZWFkaW5nIHRoZSBldmVudHMuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGF0IGBmYW5vdGlmeV91c2VyLmNgIGZpbGUgYW5kIHNlZSB3aGF0IGluc2lnaHRzIGBmYW5vdGlmeV9yZWFkYCBjYW4gcHJvdmlkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAxOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjExLjUyMDQ5ODEzMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNDk4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmFub3RpZnlfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9OTY0PXN0YXRpYyBfX3BvbGxfdCBmYW5vdGlmeV9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy05NzctXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzo5Nzg6c3RhdGljIHNzaXplX3QgZmFub3RpZnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTk3OS1cXHRcXHRcXHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwb3MpXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jPTExNjk9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZmFub3RpZnlfZm9wcyA9IHtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMTE3MS1cXHQucG9sbFxcdFxcdD0gZmFub3RpZnlfcG9sbCxcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjExNzI6XFx0LnJlYWRcXHRcXHQ9IGZhbm90aWZ5X3JlYWQsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMTczLVxcdC53cml0ZVxcdFxcdD0gZmFub3RpZnlfd3JpdGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjExLjU2OTY1MzM5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUxNDcyNjExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gRmFub3RpZnkgUGVybWlzc2lvbnMqKlxuXG5SaWdodCwgYGZhbm90aWZ5X3JlYWRgIGFuZCBgZmFub3RpZnlfd3JpdGVgIGFyZSBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUsIHRoZSByZWFsIGZvY3VzIHN5bWJvbHMgd2hlbiB3ZSdyZSB0YWxraW5nIGFib3V0IHBlcm1pc3Npb24gcmVzcG9uc2VzLiBHaXZlbiB0aGUgY29udGV4dCwgYGZhbm90aWZ5X3dyaXRlYCBpcyB0aGUgb25lIHRoYXQncyBpbW1lZGlhdGVseSBncmFiYmluZyBteSBhdHRlbnRpb24uIEl0J3MgdGhlIG9uZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhvc2UgcGVybWlzc2lvbiByZXF1ZXN0cywgc28gaXQncyB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy4gTGV0J3MgZGl2ZSBpbiBhbmQgZXhhbWluZSBpdHMgYmVoYXZpb3VyIG1vcmUgY2xvc2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjI0LjA4NDM4MjkzN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA2MzkwMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmFub3RpZnlfd3JpdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jPTk3OD1zdGF0aWMgc3NpemVfdCBmYW5vdGlmeV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMDU0LVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM6MTA1NTpzdGF0aWMgc3NpemVfdCBmYW5vdGlmeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcylcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTEwNTYte1xcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYz0xMTY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZhbm90aWZ5X2ZvcHMgPSB7XFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTExNzItXFx0LnJlYWRcXHRcXHQ9IGZhbm90aWZ5X3JlYWQsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzoxMTczOlxcdC53cml0ZVxcdFxcdD0gZmFub3RpZnlfd3JpdGUsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMTc0LVxcdC5mYXN5bmNcXHRcXHQ9IE5VTEwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjI0LjE1NTAyNzYyNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTc0MjQwMjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyBvbiwgdGhpbmtpbmcgaXQgdGhyb3VnaCBhcyBhbiBleHBlcnQ6XG5cbioqRmFub3RpZnkgRXZlbnQgSGFuZGxpbmcgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgbXkgZm9jdXMgaGVyZSBpcyBjbGVhcmx5IG9uIHRoZSBjb3JlIGZhbm90aWZ5IGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGxvb2sgYXQgYXJlIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgLCBgZmFub3RpZnlfcmVhZGAsIGFuZCBgZmFub3RpZnlfd3JpdGVgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBoYW5kbGluZyBhbmQgaW50ZXJwcmV0aW5nIHRoZSBldmVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIuXG5cbk5vdywgZnJvbSB0aGUgbG9vayBvZiBpdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgRkFOT1RJRllgIGl0c2VsZiBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIHN5bWJvbHMgaW5mbHVlbmNpbmcgdGhpcywgYnV0IHRob3NlIHR3byBhcmUgdGhlIHByaW1hcnkgb25lcyB0byBjb25zaWRlci5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIHRoZSBoZWFydCBvZiBmYW5vdGlmeSwgbW9kaWZ5aW5nIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY2AgYW5kIGl0cyBoZWFkZXIgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oYC4gR2l2ZW4gdGhlc2UgZmlsZXMsIHRoZSBjb3JlIGNvZGUgSSB3YW50IHRvIGV4YW1pbmUgaXMgYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgLiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQuXG5cbkkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIHRoYXQgYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgIGlzbid0IGhpZGRlbiBiZWhpbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJIGhhdmUgdG8gbG9vayBmb3IgYCNpZmRlZmAgZGlyZWN0aXZlcyB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIGRvbid0IHdhbnQgdG8gZ2V0IGNhdWdodCBvZmYgZ3VhcmQgYnkgc29tZSBjb25maWd1cmF0aW9uIG9yIGJ1aWxkIGZsYWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjA6NDU6MjkuMTI5MjcwNjA3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTIxNjM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTU2OT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19tbnRfZXZlbnQodTY0IG1udF9pZCwgZ2ZwX3QgZ2ZwKVxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTgyLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjU4MzpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTg0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdGludCBkYXRhX3R5cGUsXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz03NDU9c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfZXZlbnQoXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTMtXFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo4NTQ6XFx0XFx0ZXZlbnQgPSBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGRhdGEsIGRhdGFfdHlwZSwgZ2ZwKTtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTUtXFx0fSBlbHNlIGlmIChmYW5vdGlmeV9pc19lcnJvcl9ldmVudChtYXNrKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NToyOS4yMjQ0OTcxMDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MjUwMDk1MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gZmFub3RpZnkuYyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBmYW5vdGlmeWAgaW1wbGVtZW50YXRpb24gYmV0dGVyLCBzbyBJJ20gZ29pbmcgdG8ganVtcCByaWdodCBpbnRvIHRoZSBjb2RlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB6ZXJvIGluIG9uIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY2AuIEkgZmlndXJlIHRoZSBjb3JlIGxvZ2ljIHNob3VsZCBiZSBwcmV0dHkgZXZpZGVudCB0aGVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGFyb3VuZCBsaW5lIDU4My4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpc3NlY3RpbmcgYSBjb21wbGV4IGtlcm5lbCBtb2R1bGUsIGFzIGl0J3Mgb2Z0ZW4gaW4gYSBmdW5jdGlvbiBvciBibG9jayB0aGF0IGhhbmRsZXMgdGhlIGNvcmUgcHJvY2Vzc2luZyBvZiBldmVudHMgb3IgaW5pdGlhbGl6YXRpb24uIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhhdCBzZWN0aW9uIG9mIGNvZGUgaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NjowNS42NDk1MDg4MTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTYwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTYwOlxcdFxcbiA1NjE6XFx0XFx0cGV2ZW50LVxcdTAwM2VmYWUudHlwZSA9IEZBTk9USUZZX0VWRU5UX1RZUEVfUEFUSDtcXG4gNTYyOlxcdFxcdHBldmVudC1cXHUwMDNlcGF0aCA9ICpwYXRoO1xcbiA1NjM6XFx0XFx0Kmhhc2ggXj0gZmFub3RpZnlfaGFzaF9wYXRoKHBhdGgpO1xcbiA1NjQ6XFx0XFx0cGF0aF9nZXQocGF0aCk7XFxuIDU2NTpcXHRcXG4gNTY2OlxcdFxcdHJldHVybiBcXHUwMDI2cGV2ZW50LVxcdTAwM2VmYWU7XFxuIDU2NzpcXHR9XFxuIDU2ODpcXHRcXG4gNTY5OlxcdHN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX21udF9ldmVudCh1NjQgbW50X2lkLCBnZnBfdCBnZnApXFxuIDU3MDpcXHR7XFxuIDU3MTpcXHRcXHRzdHJ1Y3QgZmFub3RpZnlfbW50X2V2ZW50ICpwZXZlbnQ7XFxuIDU3MjpcXHRcXG4gNTczOlxcdFxcdHBldmVudCA9IGttZW1fY2FjaGVfYWxsb2MoZmFub3RpZnlfbW50X2V2ZW50X2NhY2hlcCwgZ2ZwKTtcXG4gNTc0OlxcdFxcdGlmICghcGV2ZW50KVxcbiA1NzU6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDU3NjpcXHRcXG4gNTc3OlxcdFxcdHBldmVudC1cXHUwMDNlZmFlLnR5cGUgPSBGQU5PVElGWV9FVkVOVF9UWVBFX01OVDtcXG4gNTc4OlxcdFxcdHBldmVudC1cXHUwMDNlbW50X2lkID0gbW50X2lkO1xcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHRyZXR1cm4gXFx1MDAyNnBldmVudC1cXHUwMDNlZmFlO1xcbiA1ODE6XFx0fVxcbiA1ODI6XFx0XFxuIDU4MzpcXHRzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXFxuIDU4NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnQgZGF0YV90eXBlLFxcbiA1ODU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2ZwX3QgZ2ZwKVxcbiA1ODY6XFx0e1xcbiA1ODc6XFx0XFx0Y29uc3Qgc3RydWN0IHBhdGggKnBhdGggPSBmc25vdGlmeV9kYXRhX3BhdGgoZGF0YSwgZGF0YV90eXBlKTtcXG4gNTg4OlxcdFxcdGNvbnN0IHN0cnVjdCBmaWxlX3JhbmdlICpyYW5nZSA9XFxuIDU4OTpcXHRcXHRcXHRcXHQgICAgZnNub3RpZnlfZGF0YV9maWxlX3JhbmdlKGRhdGEsIGRhdGFfdHlwZSk7XFxuIDU5MDpcXHRcXHRzdHJ1Y3QgZmFub3RpZnlfcGVybV9ldmVudCAqcGV2ZW50O1xcbiA1OTE6XFx0XFxuIDU5MjpcXHRcXHRwZXZlbnQgPSBrbWVtX2NhY2hlX2FsbG9jKGZhbm90aWZ5X3Blcm1fZXZlbnRfY2FjaGVwLCBnZnApO1xcbiA1OTM6XFx0XFx0aWYgKCFwZXZlbnQpXFxuIDU5NDpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gNTk1OlxcdFxcbiA1OTY6XFx0XFx0cGV2ZW50LVxcdTAwM2VmYWUudHlwZSA9IEZBTk9USUZZX0VWRU5UX1RZUEVfUEFUSF9QRVJNO1xcbiA1OTc6XFx0XFx0cGV2ZW50LVxcdTAwM2VyZXNwb25zZSA9IDA7XFxuIDU5ODpcXHRcXHRwZXZlbnQtXFx1MDAzZWhkci50eXBlID0gRkFOX1JFU1BPTlNFX0lORk9fTk9ORTtcXG4gNTk5OlxcdFxcdHBldmVudC1cXHUwMDNlaGRyLnBhZCA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjA1LjY0OTYwMTI3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjc3OTQ0NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEZhbm90aWZ5IFBlcm1pc3Npb24gRXZlbnQgTG9naWMqKlxuXG5IbW0sIGludGVyZXN0aW5nLiBJJ20gbG9va2luZyBhdCB0aGlzIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBmdW5jdGlvbiBhbmQgaXQgc3RyaWtlcyBtZSB0aGF0IHRoZXJlJ3Mgbm8gYCNpZmRlZmAgc3Vycm91bmRpbmcgaXQuIFRoYXQncyBhIGJpdCBvZGQsIGlzbid0IGl0PyBHZW5lcmFsbHksIEknZCBleHBlY3Qgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBoZXJlLCBjb25zaWRlcmluZyB0aGUgbmF0dXJlIG9mIHRoZSBmdW5jdGlvbmFsaXR5LiBUaGVuIGFnYWluLCBJIGtub3cgdGhhdCB5b3UgaGF2ZSB0byBkZWZpbmUgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgdG8gKmFjdHVhbGx5KiBtYWtlIHVzZSBvZiBwZXJtaXNzaW9uIGV2ZW50cy4gU28sIHRoZSBtZXJlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdGhlIGZ1bmN0aW9uIGl0c2VsZiBkb2Vzbid0IG5lY2Vzc2FyaWx5IGluZGljYXRlIGFueXRoaW5nIGRlZmluaXRpdmUgYWJvdXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHRydWUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgcGVybWlzc2lvbiBldmVudCBsb2dpYy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBzdHJ1Y3R1cmVzIGFuZCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgdGhpbmsgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGhvdyBgZmFub3RpZnlfaXNfcGVybV9ldmVudGAgaXMgaW1wbGVtZW50ZWQgYW5kIHVzZWQuIFRoYXQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBhbGwgZml0cyBpbiB3aXRoIHRoZSBicm9hZGVyIGZhbm90aWZ5IHBpY3R1cmUuIEl0IHdpbGwgYWxzbyBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyByZWxhdGVkIHRvIGEgc3BlY2lmaWMga2VybmVsIHZlcnNpb24sIG9yIGEgbW9yZSBnZW5lcmFsIGZlYXR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MTksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjEwLjkyNzU0ODMzMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNTY3MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZhbm90aWZ5X2lzX3Blcm1fZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz0xODA9c3RhdGljIGludCBmYW5vdGlmeV9tZXJnZShzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtMTk1LVxcdCAqL1xcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjE5NjpcXHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChuZXctXFx1MDAzZW1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTE5Ny1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTc0NT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTg1Mi1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo4NTM6XFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTQtXFx0XFx0ZXZlbnQgPSBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGRhdGEsIGRhdGFfdHlwZSwgZ2ZwKTtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTkyOD1zdGF0aWMgaW50IGZhbm90aWZ5X2hhbmRsZV9ldmVudChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLCB1MzIgbWFzayxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk3Mi1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo5NzM6XFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05NzQtXFx0XFx0LypcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk5Mi1cXHRcXHQgKi9cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo5OTM6XFx0XFx0aWYgKCFmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk5NC1cXHRcXHRcXHRmc25vdGlmeV9xdWV1ZV9vdmVyZmxvdyhncm91cCk7XFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDA3LVxcdFxcdHJldCA9IDA7XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTAwODpcXHR9IGVsc2UgaWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDA5LVxcdFxcdHJldCA9IGZhbm90aWZ5X2dldF9yZXNwb25zZShncm91cCwgRkFOT1RJRllfUEVSTShldmVudCksXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDEyLWZpbmlzaDpcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzoxMDEzOlxcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTEwMTQtXFx0XFx0ZnNub3RpZnlfZmluaXNoX3VzZXJfd2FpdChpdGVyX2luZm8pO1xcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5Lmg9NDU2PUZBTk9USUZZX1BFUk0oc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oLTQ2MC1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaDo0NjE6c3RhdGljIGlubGluZSBib29sIGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQodTMyIG1hc2spXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgtNDYyLXtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oPTUxMD1zdGF0aWMgaW5saW5lIGJvb2wgZmFub3RpZnlfaXNfaGFzaGVkX2V2ZW50KHUzMiBtYXNrKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oLTUxMS17XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5Lmg6NTEyOlxcdHJldHVybiAhKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykgfHxcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaC01MTMtXFx0XFx0IGZzbm90aWZ5X2lzX292ZXJmbG93X2V2ZW50KG1hc2spKTtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9MzE0PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmdldF9vbmVfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMzQxLVxcdGZzbm90aWZ5X3JlbW92ZV9maXJzdF9ldmVudChncm91cCk7XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzozNDI6XFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQoZXZlbnQtXFx1MDAzZW1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMzQzLVxcdFxcdEZBTk9USUZZX1BFUk0oZXZlbnQpLVxcdTAwM2VzdGF0ZSA9IEZBTl9FVkVOVF9SRVBPUlRFRDtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9ODM0PXN0YXRpYyBzc2l6ZV90IGNvcHlfZXZlbnRfdG9fdXNlcihzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy05NDMtXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzo5NDQ6XFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQoZXZlbnQtXFx1MDAzZW1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTQ1LVxcdFxcdEZBTk9USUZZX1BFUk0oZXZlbnQpLVxcdTAwM2VmZCA9IGZkO1xcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYz05Nzg9c3RhdGljIHNzaXplX3QgZmFub3RpZnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMTAyNi1cXHRcXHQgKi9cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjEwMjc6XFx0XFx0aWYgKCFmYW5vdGlmeV9pc19wZXJtX2V2ZW50KGV2ZW50LVxcdTAwM2VtYXNrKSkge1xcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMTAyOC1cXHRcXHRcXHRmc25vdGlmeV9kZXN0cm95X2V2ZW50KGdyb3VwLCBcXHUwMDI2ZXZlbnQtXFx1MDAzZWZzZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjExLjA0MTExOTYzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTY1OTA1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaWdnaW5nIGludG8gUGVybWlzc2lvbiBFdmVudCBIYW5kbGluZyBpbiBmYW5vdGlmeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGZhbm90aWZ5X2lzX3Blcm1fZXZlbnRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZyb20gdGhlIG5hbWU7IGl0J3MgZGVzaWduZWQgdG8gZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgZXZlbnQgaXMgcmVsYXRlZCB0byBhIHBlcm1pc3Npb24gY2hlY2sgd2l0aGluIHRoZSBmYW5vdGlmeSBmcmFtZXdvcmsuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gdGhhdCB1bmRlcnN0YW5kaW5nLiBMZXQncyBkZWx2ZSBpbnRvIGl0cyBkZWZpbml0aW9uIGFuZCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlLiBXaGF0IHNwZWNpZmljIHBlcm1pc3Npb24tcmVsYXRlZCBmbGFncyBvciBldmVudCB0eXBlcyBpcyBpdCBjaGVja2luZyBmb3I/IElzIGl0IGEgc2ltcGxlIGJpdHdpc2UgY29tcGFyaXNvbiwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gSSBuZWVkIHRvIGtub3cgdGhlIGV4YWN0IGNyaXRlcmlhIHRoYXQgcXVhbGlmeSBhbiBldmVudCBhcyBhIFwicGVybWlzc2lvblwiIGV2ZW50IGluIHRoaXMgY29udGV4dC4gVGhpcyBpcyBjb3JlIHRvIHVuZGVyc3RhbmRpbmcgaG93IGZhbm90aWZ5IGlzIGhhbmRsaW5nIGFjY2VzcyBjb250cm9sLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBjcnlzdGFsIGNsZWFyIG9uIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MTQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NjoxNC4yNTc3MTI1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjg3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA0NTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTA6XFx0XFx0XFx0c3RydWN0IGZhbm90aWZ5X3Jlc3BvbnNlX2luZm9faGVhZGVyIGhkcjtcXG4gNDUxOlxcdFxcdFxcdHN0cnVjdCBmYW5vdGlmeV9yZXNwb25zZV9pbmZvX2F1ZGl0X3J1bGUgYXVkaXRfcnVsZTtcXG4gNDUyOlxcdFxcdH07XFxuIDQ1MzpcXHR9O1xcbiA0NTQ6XFx0XFxuIDQ1NTpcXHRzdGF0aWMgaW5saW5lIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50ICpcXG4gNDU2OlxcdEZBTk9USUZZX1BFUk0oc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcXG4gNDU3OlxcdHtcXG4gNDU4OlxcdFxcdHJldHVybiBjb250YWluZXJfb2YoZXZlbnQsIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50LCBmYWUpO1xcbiA0NTk6XFx0fVxcbiA0NjA6XFx0XFxuIDQ2MTpcXHRzdGF0aWMgaW5saW5lIGJvb2wgZmFub3RpZnlfaXNfcGVybV9ldmVudCh1MzIgbWFzaylcXG4gNDYyOlxcdHtcXG4gNDYzOlxcdFxcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlMpIFxcdTAwMjZcXHUwMDI2XFxuIDQ2NDpcXHRcXHRcXHRtYXNrIFxcdTAwMjYgRkFOT1RJRllfUEVSTV9FVkVOVFM7XFxuIDQ2NTpcXHR9XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBmYW5vdGlmeV9ldmVudF9oYXNfYWNjZXNzX3JhbmdlKHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZXZlbnQpXFxuIDQ2ODpcXHR7XFxuIDQ2OTpcXHRcXHRpZiAoIShldmVudC1cXHUwMDNlbWFzayBcXHUwMDI2IEZBTk9USUZZX1BSRV9DT05URU5UX0VWRU5UUykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjE0LjI1Nzc5NjgzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODM4NzEzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgRkFOT1RJRlkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCBtZWFucyBgRkFOT1RJRllgIGFuZCBgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TYCBhcmUgdGhlIGtleSBjb25maWdzIGhlcmUuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIuIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgYEZBTk9USUZZYCBpdHNlbGYgZG9lc24ndCBkZXBlbmQgb24gYW55dGhpbmcgZWxzZSwgYnV0IGl0ICpzZWxlY3RzKiBgRlNOT1RJRllgIGFuZCBgRVhQT1JURlNgLiAgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgaW4gdHVybiBkZXBlbmRzIG9uIGBGQU5PVElGWWAuIFRoaXMgY2xhcmlmaWVzIHRoZSBoaWVyYXJjaHkuXG5cblNvLCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYm9pbCBkb3duIHRvIGBGQU5PVElGWWAgYW5kIGBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlIGNyaXRpY2FsIHN5bWJvbHMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24gd2l0aGluIHRoZSBrZXJuZWwgY29kZSBhcmUgYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAsIGBmYW5vdGlmeV9yZWFkYCwgYW5kIGBmYW5vdGlmeV93cml0ZWAuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZSBvdXRzaWRlIG9mIG15IGV4cGVjdGVkIHNjb3BlLiAgQmVzdCB0byBiZSBzdXJlLCBJIGRvbid0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjE4LjY0MTY3MDczMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk0MjIwMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTU2OT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19tbnRfZXZlbnQodTY0IG1udF9pZCwgZ2ZwX3QgZ2ZwKVxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTgyLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjU4MzpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTg0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdGludCBkYXRhX3R5cGUsXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz03NDU9c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfZXZlbnQoXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTMtXFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo4NTQ6XFx0XFx0ZXZlbnQgPSBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGRhdGEsIGRhdGFfdHlwZSwgZ2ZwKTtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTUtXFx0fSBlbHNlIGlmIChmYW5vdGlmeV9pc19lcnJvcl9ldmVudChtYXNrKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NjoxOC43NDEwOTc0OTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5NjcyMTI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHBsYXlpbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0OlxuXG4qKlRyYWNpbmcgdGhlIEV2ZW50IEFsbG9jYXRpb24gaW4gRmFub3RpZnkqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZSBldmVudCBhbGxvY2F0aW9uLCBgZmFub3RpZnlfYWxsb2NfZXZlbnRgLCBzZWVtcyB0byBiZSBjYWxsZWQgKm9ubHkqIHdpdGhpbiB0aGUgZnVuY3Rpb24gYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAuIFRoYXQgbWFrZXMgYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IHRvIGZvbGxvdywgYXMgZmFyIGFzIGFsbG9jYXRpbmcgYW4gZXZlbnQgaXMgY29uY2VybmVkLiBJdCdzIHRoZSB0b3Agb2YgdGhlIGNoYWluIGZvciB0aGlzIGFsbG9jYXRpb24gcHJvY2Vzcy4gQnV0LCBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJIGRvbid0IHdhbnQgdG8gbWFrZSBhc3N1bXB0aW9ucy4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiBgZmFub3RpZnlfYWxsb2NfZXZlbnRgIGlzIGV2ZXIgY2FsbGVkIGZyb20gc29tZXdoZXJlIGVsc2Ugd2l0aGluIHRoZSBjb2RlLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB0byBiZSBzdXJlIG15IHdvcmtpbmcgYXNzdW1wdGlvbiBpcyBjb3JyZWN0LiBBIGNvbXByZWhlbnNpdmUgcmV2aWV3IGlzIG5lY2Vzc2FyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NjoyMi43Mzc4MjExNjdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NjUxMTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZhbm90aWZ5X2FsbG9jX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9Mjk3PXN0YXRpYyB1MzIgZmFub3RpZnlfZ3JvdXBfZXZlbnRfbWFzayhzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtMzYxLVxcdCAqIFdlIG5ldmVyIHJlcG9ydCBGQU5fRVZFTlRfT05fQ0hJTEQgdG8gdXNlciwgYnV0IHdlIGRvIHBhc3MgaXQgaW4gdG9cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzozNjI6XFx0ICogZmFub3RpZnlfYWxsb2NfZXZlbnQoKSB3aGVuIGdyb3VwIGlzIHJlcG9ydGluZyBmaWQgYXMgaW5kaWNhdGlvblxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTM2My1cXHQgKiB0aGF0IGV2ZW50IGhhcHBlbmVkIG9uIGNoaWxkLlxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzA3PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2Vycm9yX2V2ZW50KFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNzQ0LVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjc0NTpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy03NDYtXFx0XFx0XFx0XFx0c3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTkyOD1zdGF0aWMgaW50IGZhbm90aWZ5X2hhbmRsZV9ldmVudChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLCB1MzIgbWFzayxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk4NC1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo5ODU6XFx0ZXZlbnQgPSBmYW5vdGlmeV9hbGxvY19ldmVudChncm91cCwgbWFzaywgZGF0YSwgZGF0YV90eXBlLCBkaXIsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTg2LVxcdFxcdFxcdFxcdCAgICAgZmlsZV9uYW1lLCBcXHUwMDI2ZnNpZCwgbWF0Y2hfbWFzayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjIyLjgwMjQ4MDkzNVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjc2NzA5NjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmFub3RpZnkgRXZlbnQgSGFuZGxpbmcgRml4KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGBmYW5vdGlmeWAgaXNzdWUsIGFuZCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIHJlYWxseS4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0sIGFzIEkgc2VlIGl0LCBpcyByaWdodCB0aGVyZSBpbiBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YC4gVGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBtYW5pcHVsYXRpb24gb2YgdGhlIGV2ZW50IGRhdGEgb2NjdXJzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgcHBvc2AgcG9pbnRlci4gSSd2ZSBuYXJyb3dlZCBteSBmb2N1cyB0byB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIGBmYW5vdGlmeV9yZWFkYCBhbmQgYGZhbm90aWZ5X3dyaXRlYCwgc2luY2UgdGhleSBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRoZSBldmVudCBoYW5kbGluZyBtZWNoYW5pc20uXG5cblRoZSBmaXggaXRzZWxmIGlzIGEgZnVuY3Rpb25hbCBvbmUsIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSB2dWxuZXJhYmlsaXR5LiBUaGUgY29uY2VybiBpcyB0aGF0IGBwZXZlbnQtXHUwMDNlcHBvc2Agd2FzIGRpcmVjdGx5IHBvaW50aW5nIHRvIGByYW5nZS1cdTAwM2Vwb3NgLCB3aGljaCwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCBjb3VsZCBiZSBzdGFjay1hbGxvY2F0ZWQgb3IgZnJlZWQgbWVtb3J5LiBUaGF0J3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSBoYXJkLXRvLWRlYnVnIGNyYXNoIG9yLCB3b3JzZSwgZXhwbG9pdGF0aW9uLiBUaGUgc29sdXRpb24sIGNvcHlpbmcgYHJhbmdlLVx1MDAzZXBvc2AgdG8gYHBldmVudC1cdTAwM2Vwb3NgIGFuZCB0aGVuIGhhdmluZyBgcGV2ZW50LVx1MDAzZXBwb3NgIHBvaW50IHRvICp0aGF0KiBjb3B5IGlzIGNsZWFuLCBlbGVnYW50LCBhbmQgYXZvaWRzIHRoZSBwcm9ibGVtIGVudGlyZWx5LiBBIHNvbGlkIGZpeC5cblxuSSd2ZSBhbHNvIGNvbmZpcm1lZCB0aGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucywgbmFtZWx5IGBGQU5PVElGWWAgYW5kIGBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgLCBhcmUgdGhlIG9ubHkgb25lcyBhdCBwbGF5IGhlcmUuIE5vIHN1cnByaXNlcyB0aGVyZS4gVGhleSdyZSB0aGUgZ2F0ZWtlZXBlcnMgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuTm93IHRoYXQgSSdtIHNhdGlzZmllZCB3aXRoIHRoZSBhc3Nlc3NtZW50IGFuZCB0aGUgc29sdXRpb24ncyBjbGFyaXR5LCBJJ20gcmVhZHkgdG8gY29tbWl0IHRoaXMuIFRpbWUgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NjksIk91dHB1dFRva2VucyI6MTI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjI5LjA3OTE5NDIxN1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjgwMDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkFOT1RJRllcIixcbiAgICBcIkZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZhbm90aWZ5X2hhbmRsZV9ldmVudFwiLFxuICAgIFwiZmFub3RpZnlfcmVhZFwiLFxuICAgIFwiZmFub3RpZnlfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZmFub3RpZnkgcGVybWlzc2lvbiBldmVudHMgYnkgY29weWluZyB0aGUgZmlsZSByYW5nZSBwb3NpdGlvbiBpbnRvIHRoZSBldmVudCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBrZWVwaW5nIGEgcG9pbnRlciB0byBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZhbm90aWZ5IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZBTk9USUZZXCIsXG4gICAgXCJGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmYW5vdGlmeV9oYW5kbGVfZXZlbnRcIixcbiAgICBcImZhbm90aWZ5X3JlYWRcIixcbiAgICBcImZhbm90aWZ5X3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGZhbm90aWZ5IHBlcm1pc3Npb24gZXZlbnRzIGJ5IGNvcHlpbmcgdGhlIGZpbGUgcmFuZ2UgcG9zaXRpb24gaW50byB0aGUgZXZlbnQgc3RydWN0dXJlIGluc3RlYWQgb2Yga2VlcGluZyBhIHBvaW50ZXIgdG8gaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmYW5vdGlmeSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowmg9fx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 20:26:29 +0000 UTC FinishedAt: 2026-07-31 20:46:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fa20f6cb6063f7f1a6a56693d4a8713f19058d23", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FANOTIFY", "FANOTIFY_ACCESS_PERMISSIONS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "fa20f6cb6063f7f1a6a56693d4a8713f19058d23", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FANOTIFY", "FANOTIFY_ACCESS_PERMISSIONS" ], "series_id": "71920c0c-cda3-4539-9f2d-967d4a5551a1" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fanotify_handle_event", "fanotify_read", "fanotify_write" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZBTk9USUZZJiMzNDssCiAgICAmIzM0O0ZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zhbm90aWZ5X2hhbmRsZV9ldmVudCYjMzQ7LAogICAgJiMzNDtmYW5vdGlmeV9yZWFkJiMzNDssCiAgICAmIzM0O2Zhbm90aWZ5X3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBmYW5vdGlmeSBwZXJtaXNzaW9uIGV2ZW50cyBieSBjb3B5aW5nIHRoZSBmaWxlIHJhbmdlIHBvc2l0aW9uIGludG8gdGhlIGV2ZW50IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGtlZXBpbmcgYSBwb2ludGVyIHRvIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmFub3RpZnkgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMjlkMGYyNTc4OTAwYTQ3YmZhYjkyNDk0OWYzODRhY2VkZDlkYTljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjA6NDQ6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1xuaW5kZXggYTM1NTViZWJhZDYzZS4uYzk3ZDFiZTcwMzEwNCAxMDA2NDRcbi0tLSBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1xuQEAgLTYwMSw3ICYjNDM7NjAxLDggQEAgc3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLFxuIFx0cGV2ZW50LVx1MDAzZXN0YXRlID0gRkFOX0VWRU5UX0lOSVQ7XG4gXHRwZXZlbnQtXHUwMDNlcGF0aCA9ICpwYXRoO1xuIFx0LyogTlVMTCBwcG9zIG1lYW5zIG5vIHJhbmdlIGluZm8gKi9cbi1cdHBldmVudC1cdTAwM2VwcG9zID0gcmFuZ2UgPyBcdTAwMjZyYW5nZS1cdTAwM2Vwb3MgOiBOVUxMO1xuJiM0MztcdHBldmVudC1cdTAwM2Vwb3MgPSByYW5nZSA/IHJhbmdlLVx1MDAzZXBvcyA6IDA7XG4mIzQzO1x0cGV2ZW50LVx1MDAzZXBwb3MgPSByYW5nZSA/IFx1MDAyNnBldmVudC1cdTAwM2Vwb3MgOiBOVUxMO1xuIFx0cGV2ZW50LVx1MDAzZWNvdW50ID0gcmFuZ2UgPyByYW5nZS1cdTAwM2Vjb3VudCA6IDA7XG4gXHRwYXRoX2dldChwYXRoKTtcbiBcbmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaCBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oXG5pbmRleCBhMDYxOWU3Njk0ZDU3Li5jOTY0ZGY2YzA1MTQ1IDEwMDY0NFxuLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oXG5AQCAtNDM4LDcgJiM0Mzs0MzgsOCBAQCBGQU5PVElGWV9NRShzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmV2ZW50KVxuIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50IHtcbiBcdHN0cnVjdCBmYW5vdGlmeV9ldmVudCBmYWU7XG4gXHRzdHJ1Y3QgcGF0aCBwYXRoO1xuLVx0Y29uc3QgbG9mZl90ICpwcG9zO1x0XHQvKiBvcHRpb25hbCBmaWxlIHJhbmdlIGluZm8gKi9cbiYjNDM7XHRsb2ZmX3QgcG9zO1xuJiM0MztcdGNvbnN0IGxvZmZfdCAqcHBvcztcdFx0LyogXHUwMDI2cG9zIGlmIHJhbmdlIGluZm8gaXMgYXZhaWxhYmxlICovXG4gXHRzaXplX3QgY291bnQ7XG4gXHR1MzIgcmVzcG9uc2U7XHRcdFx0LyogdXNlcnNwYWNlIGFuc3dlciB0byB0aGUgZXZlbnQgKi9cbiBcdHVuc2lnbmVkIHNob3J0IHN0YXRlO1x0XHQvKiBzdGF0ZSBvZiB0aGUgZXZlbnQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RkFOT1RJRlkmIzM0OywKICAgICYjMzQ7RkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZmFub3RpZnlfaGFuZGxlX2V2ZW50JiMzNDssCiAgICAmIzM0O2Zhbm90aWZ5X3JlYWQmIzM0OywKICAgICYjMzQ7ZmFub3RpZnlfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGZhbm90aWZ5IHBlcm1pc3Npb24gZXZlbnRzIGJ5IGNvcHlpbmcgdGhlIGZpbGUgcmFuZ2UgcG9zaXRpb24gaW50byB0aGUgZXZlbnQgc3RydWN0dXJlIGluc3RlYWQgb2Yga2VlcGluZyBhIHBvaW50ZXIgdG8gaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmYW5vdGlmeSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQyOWQwZjI1Nzg5MDBhNDdiZmFiOTI0OTQ5ZjM4NGFjZWRkOWRhOWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAyMDo0NDoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMKaW5kZXggYTM1NTViZWJhZDYzZS4uYzk3ZDFiZTcwMzEwNCAxMDA2NDQKLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMKQEAgLTYwMSw3ICYjNDM7NjAxLDggQEAgc3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLAogCXBldmVudC0mZ3Q7c3RhdGUgPSBGQU5fRVZFTlRfSU5JVDsKIAlwZXZlbnQtJmd0O3BhdGggPSAqcGF0aDsKIAkvKiBOVUxMIHBwb3MgbWVhbnMgbm8gcmFuZ2UgaW5mbyAqLwotCXBldmVudC0mZ3Q7cHBvcyA9IHJhbmdlID8gJmFtcDtyYW5nZS0mZ3Q7cG9zIDogTlVMTDsKJiM0MzsJcGV2ZW50LSZndDtwb3MgPSByYW5nZSA/IHJhbmdlLSZndDtwb3MgOiAwOwomIzQzOwlwZXZlbnQtJmd0O3Bwb3MgPSByYW5nZSA/ICZhbXA7cGV2ZW50LSZndDtwb3MgOiBOVUxMOwogCXBldmVudC0mZ3Q7Y291bnQgPSByYW5nZSA/IHJhbmdlLSZndDtjb3VudCA6IDA7CiAJcGF0aF9nZXQocGF0aCk7CiAKZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgKaW5kZXggYTA2MTllNzY5NGQ1Ny4uYzk2NGRmNmMwNTE0NSAxMDA2NDQKLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgKQEAgLTQzOCw3ICYjNDM7NDM4LDggQEAgRkFOT1RJRllfTUUoc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudCkKIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50IHsKIAlzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgZmFlOwogCXN0cnVjdCBwYXRoIHBhdGg7Ci0JY29uc3QgbG9mZl90ICpwcG9zOwkJLyogb3B0aW9uYWwgZmlsZSByYW5nZSBpbmZvICovCiYjNDM7CWxvZmZfdCBwb3M7CiYjNDM7CWNvbnN0IGxvZmZfdCAqcHBvczsJCS8qICZhbXA7cG9zIGlmIHJhbmdlIGluZm8gaXMgYXZhaWxhYmxlICovCiAJc2l6ZV90IGNvdW50OwogCXUzMiByZXNwb25zZTsJCQkvKiB1c2Vyc3BhY2UgYW5zd2VyIHRvIHRoZSBldmVudCAqLwogCXVuc2lnbmVkIHNob3J0IHN0YXRlOwkJLyogc3RhdGUgb2YgdGhlIGV2ZW50ICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGYW5vdGlmeSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jYCBhbmQgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiBgc3RydWN0IGZhbm90aWZ5X3Blcm1fZXZlbnRgLiBUaGV5JiMzOTt2ZSBhZGRlZCBhIGBsb2ZmX3QgcG9zYCBmaWVsZCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHRoZXkmIzM5O3ZlIGFsdGVyZWQgaG93IHRoZSBgcG9zYCBhbmQgYHBwb3NgIGZpZWxkcyBhcmUgcG9wdWxhdGVkLiBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGEgcG9pbnRlciB0byBhIHBvdGVudGlhbGx5IHN0YWNrLWFsbG9jYXRlZCBvciB0cmFuc2llbnRseSBhbGxvY2F0ZWQgYHJhbmdlYCBzdHJ1Y3QmIzM5O3MgYHBvc2AgZmllbGQ6IGBwZXZlbnQtJmd0O3Bwb3MgPSByYW5nZSA/ICZhbXA7cmFuZ2UtJmd0O3BvcyA6IE5VTEw7YC4gVGhlIG5ldyBjb2RlIGlzIG5vdyBkb2luZyB0aGlzOiBgcGV2ZW50LSZndDtwb3MgPSByYW5nZSA/IHJhbmdlLSZndDtwb3MgOiAwOyBwZXZlbnQtJmd0O3Bwb3MgPSByYW5nZSA/ICZhbXA7cGV2ZW50LSZndDtwb3MgOiBOVUxMO2AuCgpSaWdodCwgSSBzZWUgd2hhdCB0aGV5JiMzOTtyZSBkb2luZy4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBmaXguIFRoYXQgYHJhbmdlYCBzdHJ1Y3QgY291bGQgZWFzaWx5IGJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgb3IgZnJlZWQgYmVmb3JlIHRoZSBmYW5vdGlmeSBldmVudCBpcyBhY3R1YWxseSBoYW5kbGVkLiBUaGlzIG5ldyBhcHByb2FjaCBjb3BpZXMgdGhlIGByYW5nZS0mZ3Q7cG9zYCB2YWx1ZSBpbnRvIHRoZSBgcGV2ZW50LSZndDtwb3NgIGZpZWxkLCBhbmQgdGhlbiB0YWtlcyB0aGUgKmFkZHJlc3MqIG9mIHRoZSBgcGV2ZW50LSZndDtwb3NgIG1lbWJlciB0byBhc3NpZ24gdG8gYHBwb3NgLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCB0aGUgcG9pbnRlciBgcHBvc2Agd2lsbCBhbHdheXMgYmUgdmFsaWQgYmVjYXVzZSBpdCYjMzk7cyBwb2ludGluZyB0byBhIGZpZWxkICp3aXRoaW4qIHRoZSBhbGxvY2F0ZWQgYGZhbm90aWZ5X3Blcm1fZXZlbnRgIHN0cnVjdC4gVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGxpa2VseSBleHBvc2VkIGEgcmFjZSBjb25kaXRpb24sIHNvIHRoaXMgaXMgYSBnb29kIGNoYW5nZS4KCkxldCBtZSBnbyBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGV2ZW50IGFsbG9jYXRpb24gZnVuY3Rpb24gYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgIGluIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY2AgdG8gYmUgc3VyZSB0aGF0IHRoZSBtZW1vcnkgbWFuYWdlbWVudCBpcyBjb3JyZWN0IGFuZCB0aGF0IHRoZSBzdHJ1Y3QgYGZhbm90aWZ5X3Blcm1fZXZlbnRgIGlzIGNvcnJlY3RseSBmcmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NTY5PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX21udF9ldmVudCh1NjQgbW50X2lkLCBnZnBfdCBnZnApXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTgyLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6NTgzOnN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQoY29uc3Qgdm9pZCAqZGF0YSxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4NC1cdFx0XHRcdFx0XHRcdGludCBkYXRhX3R5cGUsXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzQ1PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2V2ZW50KFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTg1My1cdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKSB7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo4NTQ6XHRcdGV2ZW50ID0gZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChkYXRhLCBkYXRhX3R5cGUsIGdmcCk7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTUtXHR9IGVsc2UgaWYgKGZhbm90aWZ5X2lzX2Vycm9yX2V2ZW50KG1hc2spKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRmFub3RpZnkgRXZlbnQgQWxsb2NhdGlvbiBmb3IgRnV6emluZyoqCgpBbHJpZ2h0LCBzbyBgZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudGAgaXMgY2FsbGVkIGJ5IGBmYW5vdGlmeV9hbGxvY19ldmVudGAuIEFuZCB0aGF0IGxhdHRlciBmdW5jdGlvbiwgYGZhbm90aWZ5X2FsbG9jX2V2ZW50YCwgdGhhdCYjMzk7cyB0aGUgbWFpbiBldmVudCBhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciB0aGUgd2hvbGUgZmFub3RpZnkgc3Vic3lzdGVtLCByaWdodD8gVGhhdCBqdW1wcyBvdXQgYXQgbWUgaW1tZWRpYXRlbHkg4oCTIHRoaXMgaXMgKnByaW1lKiBmdXp6aW5nIHRlcnJpdG9yeS4gQW55IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYWxsb2NhdGluZyBldmVudHMgaXMgZ29pbmcgdG8gYmUgYSBwb3RlbnRpYWwgY2hva2UgcG9pbnQsIGEgcGxhY2Ugd2hlcmUgd2UgY2FuIHRyeSB0byB0cmlnZ2VyIG1lbW9yeSBjb3JydXB0aW9uLCByZXNvdXJjZSBleGhhdXN0aW9uLCBvciBvdGhlciBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLiBUaGUgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHByb2Nlc3MgaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4KCkJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGZhbm90aWZ5LiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGhvdyB0aGlzIGNvZGUgYmVoYXZlcy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIGNhbiByZWFsbHkgaGVscCBuYXJyb3cgZG93biB0aGUgc2VhcmNoIGFuZCBwcmlvcml0aXplIHRoZSBjcml0aWNhbCBwYXJ0cyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRkFOT1RJRlkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWc6Mjpjb25maWcgRkFOT1RJRllcbmZzL25vdGlmeS9mYW5vdGlmeS9LY29uZmlnLTMtXHRib29sIFwmIzM0O0ZpbGVzeXN0ZW0gd2lkZSBhY2Nlc3Mgbm90aWZpY2F0aW9uXCYjMzQ7XG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWctMTQtXG5mcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZzoxNTpjb25maWcgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TXG5mcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZy0xNi1cdGJvb2wgXCYjMzQ7ZmFub3RpZnkgcGVybWlzc2lvbnMgY2hlY2tpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQ3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEZBTk9USUZZIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb25zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYEZBTk9USUZZYCBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AuIFN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZXNlLCBpcyB0byBkaXZlIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBpbnRlcmRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBlbmFibGluZyB0aGlzIG9wdGlvbiBpbXBvc2VzIGNlcnRhaW4gcmVzdHJpY3Rpb25zIG9yIHJlcXVpcmVtZW50cywgc28gbGV0JiMzOTtzIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gYmVmb3JlIHdlIGdvIGFueSBmdXJ0aGVyLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBpbmFkdmVydGVudGx5IGNyZWF0aW5nIGEgYm90dGxlbmVjayBvciBpbmNvbXBhdGliaWxpdHkuIFVuZGVyc3RhbmRpbmcgdGhlIGV4YWN0IHJlbGF0aW9uc2hpcHMgd2lsbCBpbmZvcm0gb3VyIGFwcHJvYWNoIHRvIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBGQU5PVElGWVxuICAgMzpcdFx0Ym9vbCBcJiMzNDtGaWxlc3lzdGVtIHdpZGUgYWNjZXNzIG5vdGlmaWNhdGlvblwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IEZTTk9USUZZXG4gICA1Olx0XHRzZWxlY3QgRVhQT1JURlNcbiAgIDY6XHRcdGRlZmF1bHQgblxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICAgU2F5IFkgaGVyZSB0byBlbmFibGUgZmFub3RpZnkgc3VwcG9ydC4gIGZhbm90aWZ5IGlzIGEgZmlsZSBhY2Nlc3NcbiAgIDk6XHRcdCAgIG5vdGlmaWNhdGlvbiBzeXN0ZW0gd2hpY2ggZGlmZmVycyBmcm9tIGlub3RpZnkgaW4gdGhhdCBpdCBzZW5kc1xuICAxMDpcdFx0ICAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgdG8gdGhlIHVzZXJzcGFjZSBsaXN0ZW5lciBhbG9uZyB3aXRoXG4gIDExOlx0XHQgICB0aGUgZXZlbnQuXG4gIDEyOlx0XG4gIDEzOlx0XHQgICBJZiB1bnN1cmUsIHNheSBZLlxuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNcbiAgMTY6XHRcdGJvb2wgXCYjMzQ7ZmFub3RpZnkgcGVybWlzc2lvbnMgY2hlY2tpbmdcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gRkFOT1RJRllcbiAgMTg6XHRcdGRlZmF1bHQgblxuICAxOTpcdFx0aGVscFxuICAyMDpcdFx0ICAgU2F5IFkgaGVyZSBpcyB5b3Ugd2FudCBmYW5vdGlmeSBsaXN0ZW5lcnMgdG8gYmUgYWJsZSB0byBtYWtlIHBlcm1pc3Npb25zXG4gIDIxOlx0XHQgICBkZWNpc2lvbnMgY29uY2VybmluZyBmaWxlc3lzdGVtIGV2ZW50cy4gIFRoaXMgaXMgdXNlZCBieSBzb21lIGZhbm90aWZ5XG4gIDIyOlx0XHQgICBsaXN0ZW5lcnMgd2hpY2ggbmVlZCB0byBzY2FuIGZpbGVzIGJlZm9yZSBhbGxvd2luZyB0aGUgc3lzdGVtIGFjY2VzcyB0b1xuICAyMzpcdFx0ICAgdXNlIHRob3NlIGZpbGVzLiAgVGhpcyBpcyB1c2VkIGJ5IHNvbWUgYW50aS1tYWx3YXJlIHZlbmRvcnMgYW5kIGJ5IHNvbWVcbiAgMjQ6XHRcdCAgIGhpZXJhcmNoaWNhbCBzdG9yYWdlIG1hbmFnZW1lbnQgc3lzdGVtcy5cbiAgMjU6XHRcbiAgMjY6XHRcdCAgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM0MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgRmFub3RpZnkgRXZlbnQgSGFuZGxpbmcqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYEZBTk9USUZZYCBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgY29uZmlndXJhdGlvbnMuIE5lZWQgdG8gZmlndXJlIG91dCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGhlcmUuCgpGcm9tIG15IGV4cGVyaWVuY2UsIHRoZSBzdGF0aWMgZnVuY3Rpb24gYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgIGlzIGFsbW9zdCBjZXJ0YWlubHkgaW5saW5lZCwgc28gdGhlIHJlYWwgZmxvdyBiZWdpbnMgd2l0aCBpdHMgY2FsbGluZyBmdW5jdGlvbi4gVGhhdCYjMzk7cyBgZmFub3RpZnlfYWxsb2NfZXZlbnRgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YC4gVGhhdCBsYXN0IGZ1bmN0aW9uIGlzIHdoYXQgSSByZWFsbHkgbmVlZCB0byB1bmRlcnN0YW5kIHRvIGdyYXNwIHRoZSBldmVudCBoYW5kbGluZyBsb2dpYy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmFub3RpZnlfaGFuZGxlX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9MTgwPXN0YXRpYyBpbnQgZmFub3RpZnlfbWVyZ2Uoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xOTItXHQgKiBEb24mIzM5O3QgbWVyZ2UgYSBwZXJtaXNzaW9uIGV2ZW50IHdpdGggYW55IG90aGVyIGV2ZW50IHNvIHRoYXQgd2Uga25vd1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTkzOlx0ICogdGhlIGV2ZW50IHN0cnVjdHVyZSB3ZSBoYXZlIGNyZWF0ZWQgaW4gZmFub3RpZnlfaGFuZGxlX2V2ZW50KCkgaXMgdGhlXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xOTQtXHQgKiBvbmUgd2Ugc2hvdWxkIGNoZWNrIGZvciBwZXJtaXNzaW9uIHJlc3BvbnNlLlxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTkxMD1zdGF0aWMgdm9pZCBmYW5vdGlmeV9pbnNlcnRfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05MjctXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo5Mjg6c3RhdGljIGludCBmYW5vdGlmeV9oYW5kbGVfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCwgdTMyIG1hc2ssXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05MjktXHRcdFx0XHQgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGRhdGFfdHlwZSxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz0xMTE2PWNvbnN0IHN0cnVjdCBmc25vdGlmeV9vcHMgZmFub3RpZnlfZnNub3RpZnlfb3BzID0ge1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTExNzpcdC5oYW5kbGVfZXZlbnQgPSBmYW5vdGlmeV9oYW5kbGVfZXZlbnQsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMTE4LVx0LmZyZWVfZ3JvdXBfcHJpdiA9IGZhbm90aWZ5X2ZyZWVfZ3JvdXBfcHJpdixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIEZhbm90aWZ5IEV2ZW50IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgIGFzIGEga2V5IGFyZWEgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gSXQgZmVlbHMgbGlrZSBhIG5hdHVyYWwgcG9pbnQgb2YgZm9jdXMgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGV2ZW50cyBhcmUgbWFuYWdlZC4gTm93LCBJJiMzOTttIGFsc28gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhvc2UgZXZlbnRzIGFjdHVhbGx5ICpjb21lKiBmcm9tLCBhbmQgYGZhbm90aWZ5X3JlYWRgIGluIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jYCBzZWVtcyBsaWtlIGEgbGlrZWx5IGNhbmRpZGF0ZSBnaXZlbiBpdHMgcm9sZSBpbiByZWFkaW5nIHRoZSBldmVudHMuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhhdCBgZmFub3RpZnlfdXNlci5jYCBmaWxlIGFuZCBzZWUgd2hhdCBpbnNpZ2h0cyBgZmFub3RpZnlfcmVhZGAgY2FuIHByb3ZpZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zhbm90aWZ5X3JlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9OTY0PXN0YXRpYyBfX3BvbGxfdCBmYW5vdGlmeV9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTc3LVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzo5Nzg6c3RhdGljIHNzaXplX3QgZmFub3RpZnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTc5LVx0XHRcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcylcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jPTExNjk9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZmFub3RpZnlfZm9wcyA9IHtcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTExNzEtXHQucG9sbFx0XHQ9IGZhbm90aWZ5X3BvbGwsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjExNzI6XHQucmVhZFx0XHQ9IGZhbm90aWZ5X3JlYWQsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTExNzMtXHQud3JpdGVcdFx0PSBmYW5vdGlmeV93cml0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipGb2N1c2luZyBvbiBGYW5vdGlmeSBQZXJtaXNzaW9ucyoqCgpSaWdodCwgYGZhbm90aWZ5X3JlYWRgIGFuZCBgZmFub3RpZnlfd3JpdGVgIGFyZSBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUsIHRoZSByZWFsIGZvY3VzIHN5bWJvbHMgd2hlbiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBwZXJtaXNzaW9uIHJlc3BvbnNlcy4gR2l2ZW4gdGhlIGNvbnRleHQsIGBmYW5vdGlmeV93cml0ZWAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIGltbWVkaWF0ZWx5IGdyYWJiaW5nIG15IGF0dGVudGlvbi4gSXQmIzM5O3MgdGhlIG9uZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhvc2UgcGVybWlzc2lvbiByZXF1ZXN0cywgc28gaXQmIzM5O3MgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuIExldCYjMzk7cyBkaXZlIGluIGFuZCBleGFtaW5lIGl0cyBiZWhhdmlvdXIgbW9yZSBjbG9zZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYW5vdGlmeV93cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYz05Nzg9c3RhdGljIHNzaXplX3QgZmFub3RpZnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTEwNTQtXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjEwNTU6c3RhdGljIHNzaXplX3QgZmFub3RpZnlfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwb3MpXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTEwNTYte1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9MTE2OT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYW5vdGlmeV9mb3BzID0ge1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMTE3Mi1cdC5yZWFkXHRcdD0gZmFub3RpZnlfcmVhZCxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM6MTE3MzpcdC53cml0ZVx0XHQ9IGZhbm90aWZ5X3dyaXRlLFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMTc0LVx0LmZhc3luY1x0XHQ9IE5VTEwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNjkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24sIHRoaW5raW5nIGl0IHRocm91Z2ggYXMgYW4gZXhwZXJ0OgoKKipGYW5vdGlmeSBFdmVudCBIYW5kbGluZyBEZWVwIERpdmUqKgoKQWxyaWdodCwgbXkgZm9jdXMgaGVyZSBpcyBjbGVhcmx5IG9uIHRoZSBjb3JlIGZhbm90aWZ5IGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGxvb2sgYXQgYXJlIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgLCBgZmFub3RpZnlfcmVhZGAsIGFuZCBgZmFub3RpZnlfd3JpdGVgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBoYW5kbGluZyBhbmQgaW50ZXJwcmV0aW5nIHRoZSBldmVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIuCgpOb3csIGZyb20gdGhlIGxvb2sgb2YgaXQsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgYEZBTk9USUZZYCBpdHNlbGYgYW5kIGBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBpbmZsdWVuY2luZyB0aGlzLCBidXQgdGhvc2UgdHdvIGFyZSB0aGUgcHJpbWFyeSBvbmVzIHRvIGNvbnNpZGVyLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIHRoZSBoZWFydCBvZiBmYW5vdGlmeSwgbW9kaWZ5aW5nIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY2AgYW5kIGl0cyBoZWFkZXIgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oYC4gR2l2ZW4gdGhlc2UgZmlsZXMsIHRoZSBjb3JlIGNvZGUgSSB3YW50IHRvIGV4YW1pbmUgaXMgYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgY2xvc2VseSBhdCB0aGF0LgoKSSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgdGhhdCBgZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudGAgaXNuJiMzOTt0IGhpZGRlbiBiZWhpbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJIGhhdmUgdG8gbG9vayBmb3IgYCNpZmRlZmAgZGlyZWN0aXZlcyB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBkb24mIzM5O3Qgd2FudCB0byBnZXQgY2F1Z2h0IG9mZiBndWFyZCBieSBzb21lIGNvbmZpZ3VyYXRpb24gb3IgYnVpbGQgZmxhZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTU2OT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19tbnRfZXZlbnQodTY0IG1udF9pZCwgZ2ZwX3QgZ2ZwKVxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4Mi1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjU4MzpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy01ODQtXHRcdFx0XHRcdFx0XHRpbnQgZGF0YV90eXBlLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTc0NT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTMtXHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSkge1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6ODU0Olx0XHRldmVudCA9IGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQoZGF0YSwgZGF0YV90eXBlLCBnZnApO1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtODU1LVx0fSBlbHNlIGlmIChmYW5vdGlmeV9pc19lcnJvcl9ldmVudChtYXNrKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODU1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBmYW5vdGlmeS5jKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBmYW5vdGlmeWAgaW1wbGVtZW50YXRpb24gYmV0dGVyLCBzbyBJJiMzOTttIGdvaW5nIHRvIGp1bXAgcmlnaHQgaW50byB0aGUgY29kZS4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiBgZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNgLiBJIGZpZ3VyZSB0aGUgY29yZSBsb2dpYyBzaG91bGQgYmUgcHJldHR5IGV2aWRlbnQgdGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYXJvdW5kIGxpbmUgNTgzLiBUaGF0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpc3NlY3RpbmcgYSBjb21wbGV4IGtlcm5lbCBtb2R1bGUsIGFzIGl0JiMzOTtzIG9mdGVuIGluIGEgZnVuY3Rpb24gb3IgYmxvY2sgdGhhdCBoYW5kbGVzIHRoZSBjb3JlIHByb2Nlc3Npbmcgb2YgZXZlbnRzIG9yIGluaXRpYWxpemF0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGF0IHNlY3Rpb24gb2YgY29kZSBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTYwOlx0XG4gNTYxOlx0XHRwZXZlbnQtXHUwMDNlZmFlLnR5cGUgPSBGQU5PVElGWV9FVkVOVF9UWVBFX1BBVEg7XG4gNTYyOlx0XHRwZXZlbnQtXHUwMDNlcGF0aCA9ICpwYXRoO1xuIDU2MzpcdFx0Kmhhc2ggXj0gZmFub3RpZnlfaGFzaF9wYXRoKHBhdGgpO1xuIDU2NDpcdFx0cGF0aF9nZXQocGF0aCk7XG4gNTY1Olx0XG4gNTY2Olx0XHRyZXR1cm4gXHUwMDI2cGV2ZW50LVx1MDAzZWZhZTtcbiA1Njc6XHR9XG4gNTY4Olx0XG4gNTY5Olx0c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfbW50X2V2ZW50KHU2NCBtbnRfaWQsIGdmcF90IGdmcClcbiA1NzA6XHR7XG4gNTcxOlx0XHRzdHJ1Y3QgZmFub3RpZnlfbW50X2V2ZW50ICpwZXZlbnQ7XG4gNTcyOlx0XG4gNTczOlx0XHRwZXZlbnQgPSBrbWVtX2NhY2hlX2FsbG9jKGZhbm90aWZ5X21udF9ldmVudF9jYWNoZXAsIGdmcCk7XG4gNTc0Olx0XHRpZiAoIXBldmVudClcbiA1NzU6XHRcdFx0cmV0dXJuIE5VTEw7XG4gNTc2Olx0XG4gNTc3Olx0XHRwZXZlbnQtXHUwMDNlZmFlLnR5cGUgPSBGQU5PVElGWV9FVkVOVF9UWVBFX01OVDtcbiA1Nzg6XHRcdHBldmVudC1cdTAwM2VtbnRfaWQgPSBtbnRfaWQ7XG4gNTc5Olx0XG4gNTgwOlx0XHRyZXR1cm4gXHUwMDI2cGV2ZW50LVx1MDAzZWZhZTtcbiA1ODE6XHR9XG4gNTgyOlx0XG4gNTgzOlx0c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLFxuIDU4NDpcdFx0XHRcdFx0XHRcdFx0aW50IGRhdGFfdHlwZSxcbiA1ODU6XHRcdFx0XHRcdFx0XHRcdGdmcF90IGdmcClcbiA1ODY6XHR7XG4gNTg3Olx0XHRjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCA9IGZzbm90aWZ5X2RhdGFfcGF0aChkYXRhLCBkYXRhX3R5cGUpO1xuIDU4ODpcdFx0Y29uc3Qgc3RydWN0IGZpbGVfcmFuZ2UgKnJhbmdlID1cbiA1ODk6XHRcdFx0XHQgICAgZnNub3RpZnlfZGF0YV9maWxlX3JhbmdlKGRhdGEsIGRhdGFfdHlwZSk7XG4gNTkwOlx0XHRzdHJ1Y3QgZmFub3RpZnlfcGVybV9ldmVudCAqcGV2ZW50O1xuIDU5MTpcdFxuIDU5MjpcdFx0cGV2ZW50ID0ga21lbV9jYWNoZV9hbGxvYyhmYW5vdGlmeV9wZXJtX2V2ZW50X2NhY2hlcCwgZ2ZwKTtcbiA1OTM6XHRcdGlmICghcGV2ZW50KVxuIDU5NDpcdFx0XHRyZXR1cm4gTlVMTDtcbiA1OTU6XHRcbiA1OTY6XHRcdHBldmVudC1cdTAwM2VmYWUudHlwZSA9IEZBTk9USUZZX0VWRU5UX1RZUEVfUEFUSF9QRVJNO1xuIDU5NzpcdFx0cGV2ZW50LVx1MDAzZXJlc3BvbnNlID0gMDtcbiA1OTg6XHRcdHBldmVudC1cdTAwM2VoZHIudHlwZSA9IEZBTl9SRVNQT05TRV9JTkZPX05PTkU7XG4gNTk5Olx0XHRwZXZlbnQtXHUwMDNlaGRyLnBhZCA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEZhbm90aWZ5IFBlcm1pc3Npb24gRXZlbnQgTG9naWMqKgoKSG1tLCBpbnRlcmVzdGluZy4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgIGZ1bmN0aW9uIGFuZCBpdCBzdHJpa2VzIG1lIHRoYXQgdGhlcmUmIzM5O3Mgbm8gYCNpZmRlZmAgc3Vycm91bmRpbmcgaXQuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLCBpc24mIzM5O3QgaXQ/IEdlbmVyYWxseSwgSSYjMzk7ZCBleHBlY3Qgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBoZXJlLCBjb25zaWRlcmluZyB0aGUgbmF0dXJlIG9mIHRoZSBmdW5jdGlvbmFsaXR5LiBUaGVuIGFnYWluLCBJIGtub3cgdGhhdCB5b3UgaGF2ZSB0byBkZWZpbmUgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgdG8gKmFjdHVhbGx5KiBtYWtlIHVzZSBvZiBwZXJtaXNzaW9uIGV2ZW50cy4gU28sIHRoZSBtZXJlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdGhlIGZ1bmN0aW9uIGl0c2VsZiBkb2VzbiYjMzk7dCBuZWNlc3NhcmlseSBpbmRpY2F0ZSBhbnl0aGluZyBkZWZpbml0aXZlIGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uLgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJ1ZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBwZXJtaXNzaW9uIGV2ZW50IGxvZ2ljLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHN0cnVjdHVyZXMgYW5kIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSB0aGluayB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgaG93IGBmYW5vdGlmeV9pc19wZXJtX2V2ZW50YCBpcyBpbXBsZW1lbnRlZCBhbmQgdXNlZC4gVGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGFsbCBmaXRzIGluIHdpdGggdGhlIGJyb2FkZXIgZmFub3RpZnkgcGljdHVyZS4gSXQgd2lsbCBhbHNvIGhlbHAgbWUgdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbiwgb3IgYSBtb3JlIGdlbmVyYWwgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmFub3RpZnlfaXNfcGVybV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9MTgwPXN0YXRpYyBpbnQgZmFub3RpZnlfbWVyZ2Uoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xOTUtXHQgKi9cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjE5NjpcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG5ldy1cdTAwM2VtYXNrKSlcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTE5Ny1cdFx0cmV0dXJuIDA7XG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzQ1PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2V2ZW50KFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTg1Mi1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjg1MzpcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKSB7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTQtXHRcdGV2ZW50ID0gZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChkYXRhLCBkYXRhX3R5cGUsIGdmcCk7XG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9OTI4PXN0YXRpYyBpbnQgZmFub3RpZnlfaGFuZGxlX2V2ZW50KHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXAsIHUzMiBtYXNrLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk3Mi1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjk3MzpcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKSB7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05NzQtXHRcdC8qXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTkyLVx0XHQgKi9cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjk5MzpcdFx0aWYgKCFmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTk0LVx0XHRcdGZzbm90aWZ5X3F1ZXVlX292ZXJmbG93KGdyb3VwKTtcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDA3LVx0XHRyZXQgPSAwO1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTAwODpcdH0gZWxzZSBpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSkge1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtMTAwOS1cdFx0cmV0ID0gZmFub3RpZnlfZ2V0X3Jlc3BvbnNlKGdyb3VwLCBGQU5PVElGWV9QRVJNKGV2ZW50KSxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDEyLWZpbmlzaDpcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjEwMTM6XHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSlcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTEwMTQtXHRcdGZzbm90aWZ5X2ZpbmlzaF91c2VyX3dhaXQoaXRlcl9pbmZvKTtcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaD00NTY9RkFOT1RJRllfUEVSTShzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmV2ZW50KVxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oLTQ2MC1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oOjQ2MTpzdGF0aWMgaW5saW5lIGJvb2wgZmFub3RpZnlfaXNfcGVybV9ldmVudCh1MzIgbWFzaylcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oLTQ2Mi17XG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5Lmg9NTEwPXN0YXRpYyBpbmxpbmUgYm9vbCBmYW5vdGlmeV9pc19oYXNoZWRfZXZlbnQodTMyIG1hc2spXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaC01MTEte1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5Lmg6NTEyOlx0cmV0dXJuICEoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSB8fFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgtNTEzLVx0XHQgZnNub3RpZnlfaXNfb3ZlcmZsb3dfZXZlbnQobWFzaykpO1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9MzE0PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmdldF9vbmVfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTM0MS1cdGZzbm90aWZ5X3JlbW92ZV9maXJzdF9ldmVudChncm91cCk7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjM0MjpcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KGV2ZW50LVx1MDAzZW1hc2spKVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0zNDMtXHRcdEZBTk9USUZZX1BFUk0oZXZlbnQpLVx1MDAzZXN0YXRlID0gRkFOX0VWRU5UX1JFUE9SVEVEO1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9ODM0PXN0YXRpYyBzc2l6ZV90IGNvcHlfZXZlbnRfdG9fdXNlcihzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTQzLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzo5NDQ6XHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChldmVudC1cdTAwM2VtYXNrKSlcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTQ1LVx0XHRGQU5PVElGWV9QRVJNKGV2ZW50KS1cdTAwM2VmZCA9IGZkO1xuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9OTc4PXN0YXRpYyBzc2l6ZV90IGZhbm90aWZ5X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMDI2LVx0XHQgKi9cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM6MTAyNzpcdFx0aWYgKCFmYW5vdGlmeV9pc19wZXJtX2V2ZW50KGV2ZW50LVx1MDAzZW1hc2spKSB7XG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTEwMjgtXHRcdFx0ZnNub3RpZnlfZGVzdHJveV9ldmVudChncm91cCwgXHUwMDI2ZXZlbnQtXHUwMDNlZnNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQxNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gUGVybWlzc2lvbiBFdmVudCBIYW5kbGluZyBpbiBmYW5vdGlmeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZmFub3RpZnlfaXNfcGVybV9ldmVudGAgZnVuY3Rpb24uIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnJvbSB0aGUgbmFtZTsgaXQmIzM5O3MgZGVzaWduZWQgdG8gZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgZXZlbnQgaXMgcmVsYXRlZCB0byBhIHBlcm1pc3Npb24gY2hlY2sgd2l0aGluIHRoZSBmYW5vdGlmeSBmcmFtZXdvcmsuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gdGhhdCB1bmRlcnN0YW5kaW5nLiBMZXQmIzM5O3MgZGVsdmUgaW50byBpdHMgZGVmaW5pdGlvbiBhbmQgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cgaGVyZS4gV2hhdCBzcGVjaWZpYyBwZXJtaXNzaW9uLXJlbGF0ZWQgZmxhZ3Mgb3IgZXZlbnQgdHlwZXMgaXMgaXQgY2hlY2tpbmcgZm9yPyBJcyBpdCBhIHNpbXBsZSBiaXR3aXNlIGNvbXBhcmlzb24sIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXg/IEkgbmVlZCB0byBrbm93IHRoZSBleGFjdCBjcml0ZXJpYSB0aGF0IHF1YWxpZnkgYW4gZXZlbnQgYXMgYSAmIzM0O3Blcm1pc3Npb24mIzM0OyBldmVudCBpbiB0aGlzIGNvbnRleHQuIFRoaXMgaXMgY29yZSB0byB1bmRlcnN0YW5kaW5nIGhvdyBmYW5vdGlmeSBpcyBoYW5kbGluZyBhY2Nlc3MgY29udHJvbCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNyeXN0YWwgY2xlYXIgb24gdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDUwOlx0XHRcdHN0cnVjdCBmYW5vdGlmeV9yZXNwb25zZV9pbmZvX2hlYWRlciBoZHI7XG4gNDUxOlx0XHRcdHN0cnVjdCBmYW5vdGlmeV9yZXNwb25zZV9pbmZvX2F1ZGl0X3J1bGUgYXVkaXRfcnVsZTtcbiA0NTI6XHRcdH07XG4gNDUzOlx0fTtcbiA0NTQ6XHRcbiA0NTU6XHRzdGF0aWMgaW5saW5lIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50ICpcbiA0NTY6XHRGQU5PVElGWV9QRVJNKHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZXZlbnQpXG4gNDU3Olx0e1xuIDQ1ODpcdFx0cmV0dXJuIGNvbnRhaW5lcl9vZihldmVudCwgc3RydWN0IGZhbm90aWZ5X3Blcm1fZXZlbnQsIGZhZSk7XG4gNDU5Olx0fVxuIDQ2MDpcdFxuIDQ2MTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBmYW5vdGlmeV9pc19wZXJtX2V2ZW50KHUzMiBtYXNrKVxuIDQ2MjpcdHtcbiA0NjM6XHRcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlMpIFx1MDAyNlx1MDAyNlxuIDQ2NDpcdFx0XHRtYXNrIFx1MDAyNiBGQU5PVElGWV9QRVJNX0VWRU5UUztcbiA0NjU6XHR9XG4gNDY2Olx0XG4gNDY3Olx0c3RhdGljIGlubGluZSBib29sIGZhbm90aWZ5X2V2ZW50X2hhc19hY2Nlc3NfcmFuZ2Uoc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcbiA0Njg6XHR7XG4gNDY5Olx0XHRpZiAoIShldmVudC1cdTAwM2VtYXNrIFx1MDAyNiBGQU5PVElGWV9QUkVfQ09OVEVOVF9FVkVOVFMpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTk1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEZBTk9USUZZIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCBtZWFucyBgRkFOT1RJRllgIGFuZCBgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TYCBhcmUgdGhlIGtleSBjb25maWdzIGhlcmUuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci4gTG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzLCBgRkFOT1RJRllgIGl0c2VsZiBkb2VzbiYjMzk7dCBkZXBlbmQgb24gYW55dGhpbmcgZWxzZSwgYnV0IGl0ICpzZWxlY3RzKiBgRlNOT1RJRllgIGFuZCBgRVhQT1JURlNgLiAgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgaW4gdHVybiBkZXBlbmRzIG9uIGBGQU5PVElGWWAuIFRoaXMgY2xhcmlmaWVzIHRoZSBoaWVyYXJjaHkuCgpTbywgdG8gYmUgYWJzb2x1dGVseSBjbGVhciwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGJvaWwgZG93biB0byBgRkFOT1RJRllgIGFuZCBgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TYC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZSBjcml0aWNhbCBzeW1ib2xzIEkgc2hvdWxkIGJlIGZvY3VzaW5nIG9uIHdpdGhpbiB0aGUga2VybmVsIGNvZGUgYXJlIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgLCBgZmFub3RpZnlfcmVhZGAsIGFuZCBgZmFub3RpZnlfd3JpdGVgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZSBvdXRzaWRlIG9mIG15IGV4cGVjdGVkIHNjb3BlLiAgQmVzdCB0byBiZSBzdXJlLCBJIGRvbiYjMzk7dCB3YW50IHRvIG1pc3MgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9ub3RpZnkvZmFub3RpZnkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTU2OT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19tbnRfZXZlbnQodTY0IG1udF9pZCwgZ2ZwX3QgZ2ZwKVxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4Mi1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjU4MzpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy01ODQtXHRcdFx0XHRcdFx0XHRpbnQgZGF0YV90eXBlLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTc0NT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcbi0tXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTMtXHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChtYXNrKSkge1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6ODU0Olx0XHRldmVudCA9IGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQoZGF0YSwgZGF0YV90eXBlLCBnZnApO1xuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtODU1LVx0fSBlbHNlIGlmIChmYW5vdGlmeV9pc19lcnJvcl9ldmVudChtYXNrKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHBsYXlpbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0OgoKKipUcmFjaW5nIHRoZSBFdmVudCBBbGxvY2F0aW9uIGluIEZhbm90aWZ5KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZSBldmVudCBhbGxvY2F0aW9uLCBgZmFub3RpZnlfYWxsb2NfZXZlbnRgLCBzZWVtcyB0byBiZSBjYWxsZWQgKm9ubHkqIHdpdGhpbiB0aGUgZnVuY3Rpb24gYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAuIFRoYXQgbWFrZXMgYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IHRvIGZvbGxvdywgYXMgZmFyIGFzIGFsbG9jYXRpbmcgYW4gZXZlbnQgaXMgY29uY2VybmVkLiBJdCYjMzk7cyB0aGUgdG9wIG9mIHRoZSBjaGFpbiBmb3IgdGhpcyBhbGxvY2F0aW9uIHByb2Nlc3MuIEJ1dCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBkb24mIzM5O3Qgd2FudCB0byBtYWtlIGFzc3VtcHRpb25zLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIGBmYW5vdGlmeV9hbGxvY19ldmVudGAgaXMgZXZlciBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZSB3aXRoaW4gdGhlIGNvZGUsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHRvIGJlIHN1cmUgbXkgd29ya2luZyBhc3N1bXB0aW9uIGlzIGNvcnJlY3QuIEEgY29tcHJlaGVuc2l2ZSByZXZpZXcgaXMgbmVjZXNzYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYW5vdGlmeV9hbGxvY19ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25vdGlmeS9mYW5vdGlmeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9Mjk3PXN0YXRpYyB1MzIgZmFub3RpZnlfZ3JvdXBfZXZlbnRfbWFzayhzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTM2MS1cdCAqIFdlIG5ldmVyIHJlcG9ydCBGQU5fRVZFTlRfT05fQ0hJTEQgdG8gdXNlciwgYnV0IHdlIGRvIHBhc3MgaXQgaW4gdG9cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjM2MjpcdCAqIGZhbm90aWZ5X2FsbG9jX2V2ZW50KCkgd2hlbiBncm91cCBpcyByZXBvcnRpbmcgZmlkIGFzIGluZGljYXRpb25cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTM2My1cdCAqIHRoYXQgZXZlbnQgaGFwcGVuZWQgb24gY2hpbGQuXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzA3PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2Vycm9yX2V2ZW50KFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTc0NC1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjc0NTpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTc0Ni1cdFx0XHRcdHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXAsXG4tLVxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9OTI4PXN0YXRpYyBpbnQgZmFub3RpZnlfaGFuZGxlX2V2ZW50KHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXAsIHUzMiBtYXNrLFxuLS1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk4NC1cbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjk4NTpcdGV2ZW50ID0gZmFub3RpZnlfYWxsb2NfZXZlbnQoZ3JvdXAsIG1hc2ssIGRhdGEsIGRhdGFfdHlwZSwgZGlyLFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTg2LVx0XHRcdFx0ICAgICBmaWxlX25hbWUsIFx1MDAyNmZzaWQsIG1hdGNoX21hc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ2OQoJCQkJCQkJb3V0cHV0OiAxMjQKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGYW5vdGlmeSBFdmVudCBIYW5kbGluZyBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBgZmFub3RpZnlgIGlzc3VlLCBhbmQgaXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHJpZ2h0IHRoZXJlIGluIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjcml0aWNhbCBtYW5pcHVsYXRpb24gb2YgdGhlIGV2ZW50IGRhdGEgb2NjdXJzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgcHBvc2AgcG9pbnRlci4gSSYjMzk7dmUgbmFycm93ZWQgbXkgZm9jdXMgdG8gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBgZmFub3RpZnlfcmVhZGAgYW5kIGBmYW5vdGlmeV93cml0ZWAsIHNpbmNlIHRoZXkgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgZXZlbnQgaGFuZGxpbmcgbWVjaGFuaXNtLgoKVGhlIGZpeCBpdHNlbGYgaXMgYSBmdW5jdGlvbmFsIG9uZSwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IHZ1bG5lcmFiaWxpdHkuIFRoZSBjb25jZXJuIGlzIHRoYXQgYHBldmVudC0mZ3Q7cHBvc2Agd2FzIGRpcmVjdGx5IHBvaW50aW5nIHRvIGByYW5nZS0mZ3Q7cG9zYCwgd2hpY2gsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgY291bGQgYmUgc3RhY2stYWxsb2NhdGVkIG9yIGZyZWVkIG1lbW9yeS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmVjaXBlIGZvciBhIGhhcmQtdG8tZGVidWcgY3Jhc2ggb3IsIHdvcnNlLCBleHBsb2l0YXRpb24uIFRoZSBzb2x1dGlvbiwgY29weWluZyBgcmFuZ2UtJmd0O3Bvc2AgdG8gYHBldmVudC0mZ3Q7cG9zYCBhbmQgdGhlbiBoYXZpbmcgYHBldmVudC0mZ3Q7cHBvc2AgcG9pbnQgdG8gKnRoYXQqIGNvcHkgaXMgY2xlYW4sIGVsZWdhbnQsIGFuZCBhdm9pZHMgdGhlIHByb2JsZW0gZW50aXJlbHkuIEEgc29saWQgZml4LgoKSSYjMzk7dmUgYWxzbyBjb25maXJtZWQgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIG5hbWVseSBgRkFOT1RJRllgIGFuZCBgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TYCwgYXJlIHRoZSBvbmx5IG9uZXMgYXQgcGxheSBoZXJlLiBObyBzdXJwcmlzZXMgdGhlcmUuIFRoZXkmIzM5O3JlIHRoZSBnYXRla2VlcGVycyBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgoKTm93IHRoYXQgSSYjMzk7bSBzYXRpc2ZpZWQgd2l0aCB0aGUgYXNzZXNzbWVudCBhbmQgdGhlIHNvbHV0aW9uJiMzOTtzIGNsYXJpdHksIEkmIzM5O20gcmVhZHkgdG8gY29tbWl0IHRoaXMuIFRpbWUgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZBTk9USUZZJiMzNDssCiAgICAmIzM0O0ZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zhbm90aWZ5X2hhbmRsZV9ldmVudCYjMzQ7LAogICAgJiMzNDtmYW5vdGlmeV9yZWFkJiMzNDssCiAgICAmIzM0O2Zhbm90aWZ5X3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBmYW5vdGlmeSBwZXJtaXNzaW9uIGV2ZW50cyBieSBjb3B5aW5nIHRoZSBmaWxlIHJhbmdlIHBvc2l0aW9uIGludG8gdGhlIGV2ZW50IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGtlZXBpbmcgYSBwb2ludGVyIHRvIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmFub3RpZnkgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZBTk9USUZZJiMzNDssCiAgICAmIzM0O0ZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zhbm90aWZ5X2hhbmRsZV9ldmVudCYjMzQ7LAogICAgJiMzNDtmYW5vdGlmeV9yZWFkJiMzNDssCiAgICAmIzM0O2Zhbm90aWZ5X3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBmYW5vdGlmeSBwZXJtaXNzaW9uIGV2ZW50cyBieSBjb3B5aW5nIHRoZSBmaWxlIHJhbmdlIHBvc2l0aW9uIGludG8gdGhlIGV2ZW50IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGtlZXBpbmcgYSBwb2ludGVyIHRvIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmFub3RpZnkgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDoyOC4yNzk1MjE1OTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA5NTY0ODk5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkFOT1RJRllcIixcbiAgICBcIkZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZhbm90aWZ5X2hhbmRsZV9ldmVudFwiLFxuICAgIFwiZmFub3RpZnlfcmVhZFwiLFxuICAgIFwiZmFub3RpZnlfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZmFub3RpZnkgcGVybWlzc2lvbiBldmVudHMgYnkgY29weWluZyB0aGUgZmlsZSByYW5nZSBwb3NpdGlvbiBpbnRvIHRoZSBldmVudCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBrZWVwaW5nIGEgcG9pbnRlciB0byBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZhbm90aWZ5IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDoyOC4yNzk1Mjc1MzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTAzOTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQyOWQwZjI1Nzg5MDBhNDdiZmFiOTI0OTQ5ZjM4NGFjZWRkOWRhOWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjA6NDQ6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1xcbmluZGV4IGEzNTU1YmViYWQ2M2UuLmM5N2QxYmU3MDMxMDQgMTAwNjQ0XFxuLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNcXG4rKysgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1xcbkBAIC02MDEsNyArNjAxLDggQEAgc3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLFxcbiBcXHRwZXZlbnQtXFx1MDAzZXN0YXRlID0gRkFOX0VWRU5UX0lOSVQ7XFxuIFxcdHBldmVudC1cXHUwMDNlcGF0aCA9ICpwYXRoO1xcbiBcXHQvKiBOVUxMIHBwb3MgbWVhbnMgbm8gcmFuZ2UgaW5mbyAqL1xcbi1cXHRwZXZlbnQtXFx1MDAzZXBwb3MgPSByYW5nZSA/IFxcdTAwMjZyYW5nZS1cXHUwMDNlcG9zIDogTlVMTDtcXG4rXFx0cGV2ZW50LVxcdTAwM2Vwb3MgPSByYW5nZSA/IHJhbmdlLVxcdTAwM2Vwb3MgOiAwO1xcbitcXHRwZXZlbnQtXFx1MDAzZXBwb3MgPSByYW5nZSA/IFxcdTAwMjZwZXZlbnQtXFx1MDAzZXBvcyA6IE5VTEw7XFxuIFxcdHBldmVudC1cXHUwMDNlY291bnQgPSByYW5nZSA/IHJhbmdlLVxcdTAwM2Vjb3VudCA6IDA7XFxuIFxcdHBhdGhfZ2V0KHBhdGgpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmggYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaFxcbmluZGV4IGEwNjE5ZTc2OTRkNTcuLmM5NjRkZjZjMDUxNDUgMTAwNjQ0XFxuLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmhcXG4rKysgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaFxcbkBAIC00MzgsNyArNDM4LDggQEAgRkFOT1RJRllfTUUoc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcXG4gc3RydWN0IGZhbm90aWZ5X3Blcm1fZXZlbnQge1xcbiBcXHRzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgZmFlO1xcbiBcXHRzdHJ1Y3QgcGF0aCBwYXRoO1xcbi1cXHRjb25zdCBsb2ZmX3QgKnBwb3M7XFx0XFx0Lyogb3B0aW9uYWwgZmlsZSByYW5nZSBpbmZvICovXFxuK1xcdGxvZmZfdCBwb3M7XFxuK1xcdGNvbnN0IGxvZmZfdCAqcHBvcztcXHRcXHQvKiBcXHUwMDI2cG9zIGlmIHJhbmdlIGluZm8gaXMgYXZhaWxhYmxlICovXFxuIFxcdHNpemVfdCBjb3VudDtcXG4gXFx0dTMyIHJlc3BvbnNlO1xcdFxcdFxcdC8qIHVzZXJzcGFjZSBhbnN3ZXIgdG8gdGhlIGV2ZW50ICovXFxuIFxcdHVuc2lnbmVkIHNob3J0IHN0YXRlO1xcdFxcdC8qIHN0YXRlIG9mIHRoZSBldmVudCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDoyOC42MDkzMDE2MTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMjA2MjY2OTY5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkFOT1RJRllcIixcbiAgICBcIkZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZhbm90aWZ5X2hhbmRsZV9ldmVudFwiLFxuICAgIFwiZmFub3RpZnlfcmVhZFwiLFxuICAgIFwiZmFub3RpZnlfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZmFub3RpZnkgcGVybWlzc2lvbiBldmVudHMgYnkgY29weWluZyB0aGUgZmlsZSByYW5nZSBwb3NpdGlvbiBpbnRvIHRoZSBldmVudCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBrZWVwaW5nIGEgcG9pbnRlciB0byBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZhbm90aWZ5IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMjlkMGYyNTc4OTAwYTQ3YmZhYjkyNDk0OWYzODRhY2VkZDlkYTljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMjA6NDQ6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jXG5pbmRleCBhMzU1NWJlYmFkNjNlLi5jOTdkMWJlNzAzMTA0IDEwMDY0NFxuLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNcbisrKyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jXG5AQCAtNjAxLDcgKzYwMSw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnQoY29uc3Qgdm9pZCAqZGF0YSxcbiBcdHBldmVudC1cdTAwM2VzdGF0ZSA9IEZBTl9FVkVOVF9JTklUO1xuIFx0cGV2ZW50LVx1MDAzZXBhdGggPSAqcGF0aDtcbiBcdC8qIE5VTEwgcHBvcyBtZWFucyBubyByYW5nZSBpbmZvICovXG4tXHRwZXZlbnQtXHUwMDNlcHBvcyA9IHJhbmdlID8gXHUwMDI2cmFuZ2UtXHUwMDNlcG9zIDogTlVMTDtcbitcdHBldmVudC1cdTAwM2Vwb3MgPSByYW5nZSA/IHJhbmdlLVx1MDAzZXBvcyA6IDA7XG4rXHRwZXZlbnQtXHUwMDNlcHBvcyA9IHJhbmdlID8gXHUwMDI2cGV2ZW50LVx1MDAzZXBvcyA6IE5VTEw7XG4gXHRwZXZlbnQtXHUwMDNlY291bnQgPSByYW5nZSA/IHJhbmdlLVx1MDAzZWNvdW50IDogMDtcbiBcdHBhdGhfZ2V0KHBhdGgpO1xuIFxuZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmhcbmluZGV4IGEwNjE5ZTc2OTRkNTcuLmM5NjRkZjZjMDUxNDUgMTAwNjQ0XG4tLS0gYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaFxuKysrIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmhcbkBAIC00MzgsNyArNDM4LDggQEAgRkFOT1RJRllfTUUoc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcbiBzdHJ1Y3QgZmFub3RpZnlfcGVybV9ldmVudCB7XG4gXHRzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgZmFlO1xuIFx0c3RydWN0IHBhdGggcGF0aDtcbi1cdGNvbnN0IGxvZmZfdCAqcHBvcztcdFx0Lyogb3B0aW9uYWwgZmlsZSByYW5nZSBpbmZvICovXG4rXHRsb2ZmX3QgcG9zO1xuK1x0Y29uc3QgbG9mZl90ICpwcG9zO1x0XHQvKiBcdTAwMjZwb3MgaWYgcmFuZ2UgaW5mbyBpcyBhdmFpbGFibGUgKi9cbiBcdHNpemVfdCBjb3VudDtcbiBcdHUzMiByZXNwb25zZTtcdFx0XHQvKiB1c2Vyc3BhY2UgYW5zd2VyIHRvIHRoZSBldmVudCAqL1xuIFx0dW5zaWduZWQgc2hvcnQgc3RhdGU7XHRcdC8qIHN0YXRlIG9mIHRoZSBldmVudCAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjA6NDQ6MjguNjA5MzAyNzY2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM3NDcxOTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZhbm90aWZ5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jYCBhbmQgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiBgc3RydWN0IGZhbm90aWZ5X3Blcm1fZXZlbnRgLiBUaGV5J3ZlIGFkZGVkIGEgYGxvZmZfdCBwb3NgIGZpZWxkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdGhleSd2ZSBhbHRlcmVkIGhvdyB0aGUgYHBvc2AgYW5kIGBwcG9zYCBmaWVsZHMgYXJlIHBvcHVsYXRlZC4gVGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBhIHBvaW50ZXIgdG8gYSBwb3RlbnRpYWxseSBzdGFjay1hbGxvY2F0ZWQgb3IgdHJhbnNpZW50bHkgYWxsb2NhdGVkIGByYW5nZWAgc3RydWN0J3MgYHBvc2AgZmllbGQ6IGBwZXZlbnQtXHUwMDNlcHBvcyA9IHJhbmdlID8gXHUwMDI2cmFuZ2UtXHUwMDNlcG9zIDogTlVMTDtgLiBUaGUgbmV3IGNvZGUgaXMgbm93IGRvaW5nIHRoaXM6IGBwZXZlbnQtXHUwMDNlcG9zID0gcmFuZ2UgPyByYW5nZS1cdTAwM2Vwb3MgOiAwOyBwZXZlbnQtXHUwMDNlcHBvcyA9IHJhbmdlID8gXHUwMDI2cGV2ZW50LVx1MDAzZXBvcyA6IE5VTEw7YC5cblxuUmlnaHQsIEkgc2VlIHdoYXQgdGhleSdyZSBkb2luZy4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBmaXguIFRoYXQgYHJhbmdlYCBzdHJ1Y3QgY291bGQgZWFzaWx5IGJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgb3IgZnJlZWQgYmVmb3JlIHRoZSBmYW5vdGlmeSBldmVudCBpcyBhY3R1YWxseSBoYW5kbGVkLiBUaGlzIG5ldyBhcHByb2FjaCBjb3BpZXMgdGhlIGByYW5nZS1cdTAwM2Vwb3NgIHZhbHVlIGludG8gdGhlIGBwZXZlbnQtXHUwMDNlcG9zYCBmaWVsZCwgYW5kIHRoZW4gdGFrZXMgdGhlICphZGRyZXNzKiBvZiB0aGUgYHBldmVudC1cdTAwM2Vwb3NgIG1lbWJlciB0byBhc3NpZ24gdG8gYHBwb3NgLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCB0aGUgcG9pbnRlciBgcHBvc2Agd2lsbCBhbHdheXMgYmUgdmFsaWQgYmVjYXVzZSBpdCdzIHBvaW50aW5nIHRvIGEgZmllbGQgKndpdGhpbiogdGhlIGFsbG9jYXRlZCBgZmFub3RpZnlfcGVybV9ldmVudGAgc3RydWN0LiBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gbGlrZWx5IGV4cG9zZWQgYSByYWNlIGNvbmRpdGlvbiwgc28gdGhpcyBpcyBhIGdvb2QgY2hhbmdlLlxuXG5MZXQgbWUgZ28gYW5kIHRha2UgYSBsb29rIGF0IHRoZSBldmVudCBhbGxvY2F0aW9uIGZ1bmN0aW9uIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBpbiBgZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNgIHRvIGJlIHN1cmUgdGhhdCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgaXMgY29ycmVjdCBhbmQgdGhhdCB0aGUgc3RydWN0IGBmYW5vdGlmeV9wZXJtX2V2ZW50YCBpcyBjb3JyZWN0bHkgZnJlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDozNC45ODQwMjU5NTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc1MzkyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz01Njk9c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfbW50X2V2ZW50KHU2NCBtbnRfaWQsIGdmcF90IGdmcClcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4Mi1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo1ODM6c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChjb25zdCB2b2lkICpkYXRhLFxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTU4NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnQgZGF0YV90eXBlLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzQ1PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2V2ZW50KFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtODUzLVxcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKSB7XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6ODU0OlxcdFxcdGV2ZW50ID0gZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudChkYXRhLCBkYXRhX3R5cGUsIGdmcCk7XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtODU1LVxcdH0gZWxzZSBpZiAoZmFub3RpZnlfaXNfZXJyb3JfZXZlbnQobWFzaykpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjA6NDQ6MzUuMDMxNTcwMTI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI5MzkwNjUxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRmFub3RpZnkgRXZlbnQgQWxsb2NhdGlvbiBmb3IgRnV6emluZyoqXG5cbkFscmlnaHQsIHNvIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBpcyBjYWxsZWQgYnkgYGZhbm90aWZ5X2FsbG9jX2V2ZW50YC4gQW5kIHRoYXQgbGF0dGVyIGZ1bmN0aW9uLCBgZmFub3RpZnlfYWxsb2NfZXZlbnRgLCB0aGF0J3MgdGhlIG1haW4gZXZlbnQgYWxsb2NhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIHdob2xlIGZhbm90aWZ5IHN1YnN5c3RlbSwgcmlnaHQ/IFRoYXQganVtcHMgb3V0IGF0IG1lIGltbWVkaWF0ZWx5IOKAkyB0aGlzIGlzICpwcmltZSogZnV6emluZyB0ZXJyaXRvcnkuIEFueSBmdW5jdGlvbiB0aGF0J3MgYWxsb2NhdGluZyBldmVudHMgaXMgZ29pbmcgdG8gYmUgYSBwb3RlbnRpYWwgY2hva2UgcG9pbnQsIGEgcGxhY2Ugd2hlcmUgd2UgY2FuIHRyeSB0byB0cmlnZ2VyIG1lbW9yeSBjb3JydXB0aW9uLCByZXNvdXJjZSBleGhhdXN0aW9uLCBvciBvdGhlciBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLiBUaGUgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHByb2Nlc3MgaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS5cblxuQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBmYW5vdGlmeS4gSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgdGhpcyBjb2RlIGJlaGF2ZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBjYW4gcmVhbGx5IGhlbHAgbmFycm93IGRvd24gdGhlIHNlYXJjaCBhbmQgcHJpb3JpdGl6ZSB0aGUgY3JpdGljYWwgcGFydHMgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDo1Ny45NzA2MzgyODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNjM3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZBTk9USUZZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWc6Mjpjb25maWcgRkFOT1RJRllcXG5mcy9ub3RpZnkvZmFub3RpZnkvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIkZpbGVzeXN0ZW0gd2lkZSBhY2Nlc3Mgbm90aWZpY2F0aW9uXFxcIlxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWctMTQtXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWc6MTU6Y29uZmlnIEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1xcbmZzL25vdGlmeS9mYW5vdGlmeS9LY29uZmlnLTE2LVxcdGJvb2wgXFxcImZhbm90aWZ5IHBlcm1pc3Npb25zIGNoZWNraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NDo1OC4wMTM4MDg4MDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzU5Mjk4NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRkFOT1RJRlkgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBjb25maWd1cmF0aW9ucyB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYEZBTk9USUZZYCBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AuIFN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZXNlLCBpcyB0byBkaXZlIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBpbnRlcmRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AuIEl0J3MgbGlrZWx5IHRoYXQgZW5hYmxpbmcgdGhpcyBvcHRpb24gaW1wb3NlcyBjZXJ0YWluIHJlc3RyaWN0aW9ucyBvciByZXF1aXJlbWVudHMsIHNvIGxldCdzIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0gYmVmb3JlIHdlIGdvIGFueSBmdXJ0aGVyLiBHb3R0YSBtYWtlIHN1cmUgd2UncmUgbm90IGluYWR2ZXJ0ZW50bHkgY3JlYXRpbmcgYSBib3R0bGVuZWNrIG9yIGluY29tcGF0aWJpbGl0eS4gVW5kZXJzdGFuZGluZyB0aGUgZXhhY3QgcmVsYXRpb25zaGlwcyB3aWxsIGluZm9ybSBvdXIgYXBwcm9hY2ggdG8gY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc0NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjAwLjc3MzEwOTc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBGQU5PVElGWVxcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiRmlsZXN5c3RlbSB3aWRlIGFjY2VzcyBub3RpZmljYXRpb25cXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgRlNOT1RJRllcXG4gICA1OlxcdFxcdHNlbGVjdCBFWFBPUlRGU1xcbiAgIDY6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBmYW5vdGlmeSBzdXBwb3J0LiAgZmFub3RpZnkgaXMgYSBmaWxlIGFjY2Vzc1xcbiAgIDk6XFx0XFx0ICAgbm90aWZpY2F0aW9uIHN5c3RlbSB3aGljaCBkaWZmZXJzIGZyb20gaW5vdGlmeSBpbiB0aGF0IGl0IHNlbmRzXFxuICAxMDpcXHRcXHQgICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciB0byB0aGUgdXNlcnNwYWNlIGxpc3RlbmVyIGFsb25nIHdpdGhcXG4gIDExOlxcdFxcdCAgIHRoZSBldmVudC5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1xcbiAgMTY6XFx0XFx0Ym9vbCBcXFwiZmFub3RpZnkgcGVybWlzc2lvbnMgY2hlY2tpbmdcXFwiXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIEZBTk9USUZZXFxuICAxODpcXHRcXHRkZWZhdWx0IG5cXG4gIDE5OlxcdFxcdGhlbHBcXG4gIDIwOlxcdFxcdCAgIFNheSBZIGhlcmUgaXMgeW91IHdhbnQgZmFub3RpZnkgbGlzdGVuZXJzIHRvIGJlIGFibGUgdG8gbWFrZSBwZXJtaXNzaW9uc1xcbiAgMjE6XFx0XFx0ICAgZGVjaXNpb25zIGNvbmNlcm5pbmcgZmlsZXN5c3RlbSBldmVudHMuICBUaGlzIGlzIHVzZWQgYnkgc29tZSBmYW5vdGlmeVxcbiAgMjI6XFx0XFx0ICAgbGlzdGVuZXJzIHdoaWNoIG5lZWQgdG8gc2NhbiBmaWxlcyBiZWZvcmUgYWxsb3dpbmcgdGhlIHN5c3RlbSBhY2Nlc3MgdG9cXG4gIDIzOlxcdFxcdCAgIHVzZSB0aG9zZSBmaWxlcy4gIFRoaXMgaXMgdXNlZCBieSBzb21lIGFudGktbWFsd2FyZSB2ZW5kb3JzIGFuZCBieSBzb21lXFxuICAyNDpcXHRcXHQgICBoaWVyYXJjaGljYWwgc3RvcmFnZSBtYW5hZ2VtZW50IHN5c3RlbXMuXFxuICAyNTpcXHRcXG4gIDI2OlxcdFxcdCAgIElmIHVuc3VyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjAwLjc3MzE4MDAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk3NzIxODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBGYW5vdGlmeSBFdmVudCBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggYEZBTk9USUZZYCBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgY29uZmlndXJhdGlvbnMuIE5lZWQgdG8gZmlndXJlIG91dCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGhlcmUuXG5cbkZyb20gbXkgZXhwZXJpZW5jZSwgdGhlIHN0YXRpYyBmdW5jdGlvbiBgZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudGAgaXMgYWxtb3N0IGNlcnRhaW5seSBpbmxpbmVkLCBzbyB0aGUgcmVhbCBmbG93IGJlZ2lucyB3aXRoIGl0cyBjYWxsaW5nIGZ1bmN0aW9uLiBUaGF0J3MgYGZhbm90aWZ5X2FsbG9jX2V2ZW50YCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgYnkgYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAuIFRoYXQgbGFzdCBmdW5jdGlvbiBpcyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZCB0byBncmFzcCB0aGUgZXZlbnQgaGFuZGxpbmcgbG9naWMuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjA6NDU6MDYuNzUwNDAwOTQ2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjE1MzAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYW5vdGlmeV9oYW5kbGVfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9MTgwPXN0YXRpYyBpbnQgZmFub3RpZnlfbWVyZ2Uoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTE5Mi1cXHQgKiBEb24ndCBtZXJnZSBhIHBlcm1pc3Npb24gZXZlbnQgd2l0aCBhbnkgb3RoZXIgZXZlbnQgc28gdGhhdCB3ZSBrbm93XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTkzOlxcdCAqIHRoZSBldmVudCBzdHJ1Y3R1cmUgd2UgaGF2ZSBjcmVhdGVkIGluIGZhbm90aWZ5X2hhbmRsZV9ldmVudCgpIGlzIHRoZVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTE5NC1cXHQgKiBvbmUgd2Ugc2hvdWxkIGNoZWNrIGZvciBwZXJtaXNzaW9uIHJlc3BvbnNlLlxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9OTEwPXN0YXRpYyB2b2lkIGZhbm90aWZ5X2luc2VydF9ldmVudChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTI3LVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjkyODpzdGF0aWMgaW50IGZhbm90aWZ5X2hhbmRsZV9ldmVudChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLCB1MzIgbWFzayxcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05MjktXFx0XFx0XFx0XFx0IGNvbnN0IHZvaWQgKmRhdGEsIGludCBkYXRhX3R5cGUsXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz0xMTE2PWNvbnN0IHN0cnVjdCBmc25vdGlmeV9vcHMgZmFub3RpZnlfZnNub3RpZnlfb3BzID0ge1xcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjExMTc6XFx0LmhhbmRsZV9ldmVudCA9IGZhbm90aWZ5X2hhbmRsZV9ldmVudCxcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMTE4LVxcdC5mcmVlX2dyb3VwX3ByaXYgPSBmYW5vdGlmeV9mcmVlX2dyb3VwX3ByaXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjA2Ljc5MjU2MDEyNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzI3OTM1NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEZhbm90aWZ5IEV2ZW50IEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YCBhcyBhIGtleSBhcmVhIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIEl0IGZlZWxzIGxpa2UgYSBuYXR1cmFsIHBvaW50IG9mIGZvY3VzIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBldmVudHMgYXJlIG1hbmFnZWQuIE5vdywgSSdtIGFsc28gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhvc2UgZXZlbnRzIGFjdHVhbGx5ICpjb21lKiBmcm9tLCBhbmQgYGZhbm90aWZ5X3JlYWRgIGluIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jYCBzZWVtcyBsaWtlIGEgbGlrZWx5IGNhbmRpZGF0ZSBnaXZlbiBpdHMgcm9sZSBpbiByZWFkaW5nIHRoZSBldmVudHMuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGF0IGBmYW5vdGlmeV91c2VyLmNgIGZpbGUgYW5kIHNlZSB3aGF0IGluc2lnaHRzIGBmYW5vdGlmeV9yZWFkYCBjYW4gcHJvdmlkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAxOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjExLjUyMDQ5ODEzMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxNDk4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmFub3RpZnlfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9OTY0PXN0YXRpYyBfX3BvbGxfdCBmYW5vdGlmeV9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy05NzctXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzo5Nzg6c3RhdGljIHNzaXplX3QgZmFub3RpZnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTk3OS1cXHRcXHRcXHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwb3MpXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jPTExNjk9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZmFub3RpZnlfZm9wcyA9IHtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMTE3MS1cXHQucG9sbFxcdFxcdD0gZmFub3RpZnlfcG9sbCxcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjExNzI6XFx0LnJlYWRcXHRcXHQ9IGZhbm90aWZ5X3JlYWQsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMTczLVxcdC53cml0ZVxcdFxcdD0gZmFub3RpZnlfd3JpdGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjExLjU2OTY1MzM5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUxNDcyNjExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gRmFub3RpZnkgUGVybWlzc2lvbnMqKlxuXG5SaWdodCwgYGZhbm90aWZ5X3JlYWRgIGFuZCBgZmFub3RpZnlfd3JpdGVgIGFyZSBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUsIHRoZSByZWFsIGZvY3VzIHN5bWJvbHMgd2hlbiB3ZSdyZSB0YWxraW5nIGFib3V0IHBlcm1pc3Npb24gcmVzcG9uc2VzLiBHaXZlbiB0aGUgY29udGV4dCwgYGZhbm90aWZ5X3dyaXRlYCBpcyB0aGUgb25lIHRoYXQncyBpbW1lZGlhdGVseSBncmFiYmluZyBteSBhdHRlbnRpb24uIEl0J3MgdGhlIG9uZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhvc2UgcGVybWlzc2lvbiByZXF1ZXN0cywgc28gaXQncyB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy4gTGV0J3MgZGl2ZSBpbiBhbmQgZXhhbWluZSBpdHMgYmVoYXZpb3VyIG1vcmUgY2xvc2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjI0LjA4NDM4MjkzN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA2MzkwMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmFub3RpZnlfd3JpdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jPTk3OD1zdGF0aWMgc3NpemVfdCBmYW5vdGlmeV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMDU0LVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM6MTA1NTpzdGF0aWMgc3NpemVfdCBmYW5vdGlmeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBvcylcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTEwNTYte1xcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYz0xMTY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZhbm90aWZ5X2ZvcHMgPSB7XFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jLTExNzItXFx0LnJlYWRcXHRcXHQ9IGZhbm90aWZ5X3JlYWQsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzoxMTczOlxcdC53cml0ZVxcdFxcdD0gZmFub3RpZnlfd3JpdGUsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy0xMTc0LVxcdC5mYXN5bmNcXHRcXHQ9IE5VTEwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ1OjI0LjE1NTAyNzYyNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTc0MjQwMjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyBvbiwgdGhpbmtpbmcgaXQgdGhyb3VnaCBhcyBhbiBleHBlcnQ6XG5cbioqRmFub3RpZnkgRXZlbnQgSGFuZGxpbmcgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgbXkgZm9jdXMgaGVyZSBpcyBjbGVhcmx5IG9uIHRoZSBjb3JlIGZhbm90aWZ5IGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGxvb2sgYXQgYXJlIGBmYW5vdGlmeV9oYW5kbGVfZXZlbnRgLCBgZmFub3RpZnlfcmVhZGAsIGFuZCBgZmFub3RpZnlfd3JpdGVgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBoYW5kbGluZyBhbmQgaW50ZXJwcmV0aW5nIHRoZSBldmVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIuXG5cbk5vdywgZnJvbSB0aGUgbG9vayBvZiBpdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgRkFOT1RJRllgIGl0c2VsZiBhbmQgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIHN5bWJvbHMgaW5mbHVlbmNpbmcgdGhpcywgYnV0IHRob3NlIHR3byBhcmUgdGhlIHByaW1hcnkgb25lcyB0byBjb25zaWRlci5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIHRoZSBoZWFydCBvZiBmYW5vdGlmeSwgbW9kaWZ5aW5nIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY2AgYW5kIGl0cyBoZWFkZXIgYGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oYC4gR2l2ZW4gdGhlc2UgZmlsZXMsIHRoZSBjb3JlIGNvZGUgSSB3YW50IHRvIGV4YW1pbmUgaXMgYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgLiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQuXG5cbkkgc2hvdWxkIGFsc28gbWFrZSBzdXJlIHRoYXQgYGZhbm90aWZ5X2FsbG9jX3Blcm1fZXZlbnRgIGlzbid0IGhpZGRlbiBiZWhpbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJIGhhdmUgdG8gbG9vayBmb3IgYCNpZmRlZmAgZGlyZWN0aXZlcyB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIGRvbid0IHdhbnQgdG8gZ2V0IGNhdWdodCBvZmYgZ3VhcmQgYnkgc29tZSBjb25maWd1cmF0aW9uIG9yIGJ1aWxkIGZsYWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMjA6NDU6MjkuMTI5MjcwNjA3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTIxNjM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTU2OT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19tbnRfZXZlbnQodTY0IG1udF9pZCwgZ2ZwX3QgZ2ZwKVxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTgyLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjU4MzpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTg0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdGludCBkYXRhX3R5cGUsXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz03NDU9c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfZXZlbnQoXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTMtXFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo4NTQ6XFx0XFx0ZXZlbnQgPSBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGRhdGEsIGRhdGFfdHlwZSwgZ2ZwKTtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTUtXFx0fSBlbHNlIGlmIChmYW5vdGlmeV9pc19lcnJvcl9ldmVudChtYXNrKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NToyOS4yMjQ0OTcxMDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MjUwMDk1MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gZmFub3RpZnkuYyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBmYW5vdGlmeWAgaW1wbGVtZW50YXRpb24gYmV0dGVyLCBzbyBJJ20gZ29pbmcgdG8ganVtcCByaWdodCBpbnRvIHRoZSBjb2RlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB6ZXJvIGluIG9uIGBmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuY2AuIEkgZmlndXJlIHRoZSBjb3JlIGxvZ2ljIHNob3VsZCBiZSBwcmV0dHkgZXZpZGVudCB0aGVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGFyb3VuZCBsaW5lIDU4My4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpc3NlY3RpbmcgYSBjb21wbGV4IGtlcm5lbCBtb2R1bGUsIGFzIGl0J3Mgb2Z0ZW4gaW4gYSBmdW5jdGlvbiBvciBibG9jayB0aGF0IGhhbmRsZXMgdGhlIGNvcmUgcHJvY2Vzc2luZyBvZiBldmVudHMgb3IgaW5pdGlhbGl6YXRpb24uIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhhdCBzZWN0aW9uIG9mIGNvZGUgaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NjowNS42NDk1MDg4MTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTYwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTYwOlxcdFxcbiA1NjE6XFx0XFx0cGV2ZW50LVxcdTAwM2VmYWUudHlwZSA9IEZBTk9USUZZX0VWRU5UX1RZUEVfUEFUSDtcXG4gNTYyOlxcdFxcdHBldmVudC1cXHUwMDNlcGF0aCA9ICpwYXRoO1xcbiA1NjM6XFx0XFx0Kmhhc2ggXj0gZmFub3RpZnlfaGFzaF9wYXRoKHBhdGgpO1xcbiA1NjQ6XFx0XFx0cGF0aF9nZXQocGF0aCk7XFxuIDU2NTpcXHRcXG4gNTY2OlxcdFxcdHJldHVybiBcXHUwMDI2cGV2ZW50LVxcdTAwM2VmYWU7XFxuIDU2NzpcXHR9XFxuIDU2ODpcXHRcXG4gNTY5OlxcdHN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX21udF9ldmVudCh1NjQgbW50X2lkLCBnZnBfdCBnZnApXFxuIDU3MDpcXHR7XFxuIDU3MTpcXHRcXHRzdHJ1Y3QgZmFub3RpZnlfbW50X2V2ZW50ICpwZXZlbnQ7XFxuIDU3MjpcXHRcXG4gNTczOlxcdFxcdHBldmVudCA9IGttZW1fY2FjaGVfYWxsb2MoZmFub3RpZnlfbW50X2V2ZW50X2NhY2hlcCwgZ2ZwKTtcXG4gNTc0OlxcdFxcdGlmICghcGV2ZW50KVxcbiA1NzU6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDU3NjpcXHRcXG4gNTc3OlxcdFxcdHBldmVudC1cXHUwMDNlZmFlLnR5cGUgPSBGQU5PVElGWV9FVkVOVF9UWVBFX01OVDtcXG4gNTc4OlxcdFxcdHBldmVudC1cXHUwMDNlbW50X2lkID0gbW50X2lkO1xcbiA1Nzk6XFx0XFxuIDU4MDpcXHRcXHRyZXR1cm4gXFx1MDAyNnBldmVudC1cXHUwMDNlZmFlO1xcbiA1ODE6XFx0fVxcbiA1ODI6XFx0XFxuIDU4MzpcXHRzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXFxuIDU4NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnQgZGF0YV90eXBlLFxcbiA1ODU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2ZwX3QgZ2ZwKVxcbiA1ODY6XFx0e1xcbiA1ODc6XFx0XFx0Y29uc3Qgc3RydWN0IHBhdGggKnBhdGggPSBmc25vdGlmeV9kYXRhX3BhdGgoZGF0YSwgZGF0YV90eXBlKTtcXG4gNTg4OlxcdFxcdGNvbnN0IHN0cnVjdCBmaWxlX3JhbmdlICpyYW5nZSA9XFxuIDU4OTpcXHRcXHRcXHRcXHQgICAgZnNub3RpZnlfZGF0YV9maWxlX3JhbmdlKGRhdGEsIGRhdGFfdHlwZSk7XFxuIDU5MDpcXHRcXHRzdHJ1Y3QgZmFub3RpZnlfcGVybV9ldmVudCAqcGV2ZW50O1xcbiA1OTE6XFx0XFxuIDU5MjpcXHRcXHRwZXZlbnQgPSBrbWVtX2NhY2hlX2FsbG9jKGZhbm90aWZ5X3Blcm1fZXZlbnRfY2FjaGVwLCBnZnApO1xcbiA1OTM6XFx0XFx0aWYgKCFwZXZlbnQpXFxuIDU5NDpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gNTk1OlxcdFxcbiA1OTY6XFx0XFx0cGV2ZW50LVxcdTAwM2VmYWUudHlwZSA9IEZBTk9USUZZX0VWRU5UX1RZUEVfUEFUSF9QRVJNO1xcbiA1OTc6XFx0XFx0cGV2ZW50LVxcdTAwM2VyZXNwb25zZSA9IDA7XFxuIDU5ODpcXHRcXHRwZXZlbnQtXFx1MDAzZWhkci50eXBlID0gRkFOX1JFU1BPTlNFX0lORk9fTk9ORTtcXG4gNTk5OlxcdFxcdHBldmVudC1cXHUwMDNlaGRyLnBhZCA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjA1LjY0OTYwMTI3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjc3OTQ0NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEZhbm90aWZ5IFBlcm1pc3Npb24gRXZlbnQgTG9naWMqKlxuXG5IbW0sIGludGVyZXN0aW5nLiBJJ20gbG9va2luZyBhdCB0aGlzIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBmdW5jdGlvbiBhbmQgaXQgc3RyaWtlcyBtZSB0aGF0IHRoZXJlJ3Mgbm8gYCNpZmRlZmAgc3Vycm91bmRpbmcgaXQuIFRoYXQncyBhIGJpdCBvZGQsIGlzbid0IGl0PyBHZW5lcmFsbHksIEknZCBleHBlY3Qgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBoZXJlLCBjb25zaWRlcmluZyB0aGUgbmF0dXJlIG9mIHRoZSBmdW5jdGlvbmFsaXR5LiBUaGVuIGFnYWluLCBJIGtub3cgdGhhdCB5b3UgaGF2ZSB0byBkZWZpbmUgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgdG8gKmFjdHVhbGx5KiBtYWtlIHVzZSBvZiBwZXJtaXNzaW9uIGV2ZW50cy4gU28sIHRoZSBtZXJlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdGhlIGZ1bmN0aW9uIGl0c2VsZiBkb2Vzbid0IG5lY2Vzc2FyaWx5IGluZGljYXRlIGFueXRoaW5nIGRlZmluaXRpdmUgYWJvdXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHRydWUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgcGVybWlzc2lvbiBldmVudCBsb2dpYy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBzdHJ1Y3R1cmVzIGFuZCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgdGhpbmsgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGhvdyBgZmFub3RpZnlfaXNfcGVybV9ldmVudGAgaXMgaW1wbGVtZW50ZWQgYW5kIHVzZWQuIFRoYXQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBhbGwgZml0cyBpbiB3aXRoIHRoZSBicm9hZGVyIGZhbm90aWZ5IHBpY3R1cmUuIEl0IHdpbGwgYWxzbyBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyByZWxhdGVkIHRvIGEgc3BlY2lmaWMga2VybmVsIHZlcnNpb24sIG9yIGEgbW9yZSBnZW5lcmFsIGZlYXR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MTksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjEwLjkyNzU0ODMzMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNTY3MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZhbm90aWZ5X2lzX3Blcm1fZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz0xODA9c3RhdGljIGludCBmYW5vdGlmeV9tZXJnZShzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtMTk1LVxcdCAqL1xcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjE5NjpcXHRpZiAoZmFub3RpZnlfaXNfcGVybV9ldmVudChuZXctXFx1MDAzZW1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTE5Ny1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTc0NT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTg1Mi1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo4NTM6XFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTQtXFx0XFx0ZXZlbnQgPSBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGRhdGEsIGRhdGFfdHlwZSwgZ2ZwKTtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTkyOD1zdGF0aWMgaW50IGZhbm90aWZ5X2hhbmRsZV9ldmVudChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLCB1MzIgbWFzayxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk3Mi1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo5NzM6XFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy05NzQtXFx0XFx0LypcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk5Mi1cXHRcXHQgKi9cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo5OTM6XFx0XFx0aWYgKCFmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk5NC1cXHRcXHRcXHRmc25vdGlmeV9xdWV1ZV9vdmVyZmxvdyhncm91cCk7XFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDA3LVxcdFxcdHJldCA9IDA7XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM6MTAwODpcXHR9IGVsc2UgaWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDA5LVxcdFxcdHJldCA9IGZhbm90aWZ5X2dldF9yZXNwb25zZShncm91cCwgRkFOT1RJRllfUEVSTShldmVudCksXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy0xMDEyLWZpbmlzaDpcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzoxMDEzOlxcdGlmIChmYW5vdGlmeV9pc19wZXJtX2V2ZW50KG1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTEwMTQtXFx0XFx0ZnNub3RpZnlfZmluaXNoX3VzZXJfd2FpdChpdGVyX2luZm8pO1xcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5Lmg9NDU2PUZBTk9USUZZX1BFUk0oc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oLTQ2MC1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaDo0NjE6c3RhdGljIGlubGluZSBib29sIGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQodTMyIG1hc2spXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmgtNDYyLXtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oPTUxMD1zdGF0aWMgaW5saW5lIGJvb2wgZmFub3RpZnlfaXNfaGFzaGVkX2V2ZW50KHUzMiBtYXNrKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5oLTUxMS17XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5Lmg6NTEyOlxcdHJldHVybiAhKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykgfHxcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaC01MTMtXFx0XFx0IGZzbm90aWZ5X2lzX292ZXJmbG93X2V2ZW50KG1hc2spKTtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9MzE0PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmdldF9vbmVfZXZlbnQoc3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMzQxLVxcdGZzbm90aWZ5X3JlbW92ZV9maXJzdF9ldmVudChncm91cCk7XFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzozNDI6XFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQoZXZlbnQtXFx1MDAzZW1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMzQzLVxcdFxcdEZBTk9USUZZX1BFUk0oZXZlbnQpLVxcdTAwM2VzdGF0ZSA9IEZBTl9FVkVOVF9SRVBPUlRFRDtcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmM9ODM0PXN0YXRpYyBzc2l6ZV90IGNvcHlfZXZlbnRfdG9fdXNlcihzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYy05NDMtXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYzo5NDQ6XFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQoZXZlbnQtXFx1MDAzZW1hc2spKVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtOTQ1LVxcdFxcdEZBTk9USUZZX1BFUk0oZXZlbnQpLVxcdTAwM2VmZCA9IGZkO1xcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYz05Nzg9c3RhdGljIHNzaXplX3QgZmFub3RpZnlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMTAyNi1cXHRcXHQgKi9cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jOjEwMjc6XFx0XFx0aWYgKCFmYW5vdGlmeV9pc19wZXJtX2V2ZW50KGV2ZW50LVxcdTAwM2VtYXNrKSkge1xcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMtMTAyOC1cXHRcXHRcXHRmc25vdGlmeV9kZXN0cm95X2V2ZW50KGdyb3VwLCBcXHUwMDI2ZXZlbnQtXFx1MDAzZWZzZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjExLjA0MTExOTYzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTY1OTA1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaWdnaW5nIGludG8gUGVybWlzc2lvbiBFdmVudCBIYW5kbGluZyBpbiBmYW5vdGlmeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGZhbm90aWZ5X2lzX3Blcm1fZXZlbnRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZyb20gdGhlIG5hbWU7IGl0J3MgZGVzaWduZWQgdG8gZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgZXZlbnQgaXMgcmVsYXRlZCB0byBhIHBlcm1pc3Npb24gY2hlY2sgd2l0aGluIHRoZSBmYW5vdGlmeSBmcmFtZXdvcmsuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gdGhhdCB1bmRlcnN0YW5kaW5nLiBMZXQncyBkZWx2ZSBpbnRvIGl0cyBkZWZpbml0aW9uIGFuZCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlLiBXaGF0IHNwZWNpZmljIHBlcm1pc3Npb24tcmVsYXRlZCBmbGFncyBvciBldmVudCB0eXBlcyBpcyBpdCBjaGVja2luZyBmb3I/IElzIGl0IGEgc2ltcGxlIGJpdHdpc2UgY29tcGFyaXNvbiwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gSSBuZWVkIHRvIGtub3cgdGhlIGV4YWN0IGNyaXRlcmlhIHRoYXQgcXVhbGlmeSBhbiBldmVudCBhcyBhIFwicGVybWlzc2lvblwiIGV2ZW50IGluIHRoaXMgY29udGV4dC4gVGhpcyBpcyBjb3JlIHRvIHVuZGVyc3RhbmRpbmcgaG93IGZhbm90aWZ5IGlzIGhhbmRsaW5nIGFjY2VzcyBjb250cm9sLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBjcnlzdGFsIGNsZWFyIG9uIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MTQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NjoxNC4yNTc3MTI1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mjg3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA0NTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTA6XFx0XFx0XFx0c3RydWN0IGZhbm90aWZ5X3Jlc3BvbnNlX2luZm9faGVhZGVyIGhkcjtcXG4gNDUxOlxcdFxcdFxcdHN0cnVjdCBmYW5vdGlmeV9yZXNwb25zZV9pbmZvX2F1ZGl0X3J1bGUgYXVkaXRfcnVsZTtcXG4gNDUyOlxcdFxcdH07XFxuIDQ1MzpcXHR9O1xcbiA0NTQ6XFx0XFxuIDQ1NTpcXHRzdGF0aWMgaW5saW5lIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50ICpcXG4gNDU2OlxcdEZBTk9USUZZX1BFUk0oc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpldmVudClcXG4gNDU3OlxcdHtcXG4gNDU4OlxcdFxcdHJldHVybiBjb250YWluZXJfb2YoZXZlbnQsIHN0cnVjdCBmYW5vdGlmeV9wZXJtX2V2ZW50LCBmYWUpO1xcbiA0NTk6XFx0fVxcbiA0NjA6XFx0XFxuIDQ2MTpcXHRzdGF0aWMgaW5saW5lIGJvb2wgZmFub3RpZnlfaXNfcGVybV9ldmVudCh1MzIgbWFzaylcXG4gNDYyOlxcdHtcXG4gNDYzOlxcdFxcdHJldHVybiBJU19FTkFCTEVEKENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlMpIFxcdTAwMjZcXHUwMDI2XFxuIDQ2NDpcXHRcXHRcXHRtYXNrIFxcdTAwMjYgRkFOT1RJRllfUEVSTV9FVkVOVFM7XFxuIDQ2NTpcXHR9XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBmYW5vdGlmeV9ldmVudF9oYXNfYWNjZXNzX3JhbmdlKHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZXZlbnQpXFxuIDQ2ODpcXHR7XFxuIDQ2OTpcXHRcXHRpZiAoIShldmVudC1cXHUwMDNlbWFzayBcXHUwMDI2IEZBTk9USUZZX1BSRV9DT05URU5UX0VWRU5UUykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjE0LjI1Nzc5NjgzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODM4NzEzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgRkFOT1RJRlkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19GQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCBtZWFucyBgRkFOT1RJRllgIGFuZCBgRkFOT1RJRllfQUNDRVNTX1BFUk1JU1NJT05TYCBhcmUgdGhlIGtleSBjb25maWdzIGhlcmUuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIuIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgYEZBTk9USUZZYCBpdHNlbGYgZG9lc24ndCBkZXBlbmQgb24gYW55dGhpbmcgZWxzZSwgYnV0IGl0ICpzZWxlY3RzKiBgRlNOT1RJRllgIGFuZCBgRVhQT1JURlNgLiAgYEZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU2AgaW4gdHVybiBkZXBlbmRzIG9uIGBGQU5PVElGWWAuIFRoaXMgY2xhcmlmaWVzIHRoZSBoaWVyYXJjaHkuXG5cblNvLCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYm9pbCBkb3duIHRvIGBGQU5PVElGWWAgYW5kIGBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlIGNyaXRpY2FsIHN5bWJvbHMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24gd2l0aGluIHRoZSBrZXJuZWwgY29kZSBhcmUgYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAsIGBmYW5vdGlmeV9yZWFkYCwgYW5kIGBmYW5vdGlmeV93cml0ZWAuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50YCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZSBvdXRzaWRlIG9mIG15IGV4cGVjdGVkIHNjb3BlLiAgQmVzdCB0byBiZSBzdXJlLCBJIGRvbid0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjE4LjY0MTY3MDczMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk0MjIwMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmFub3RpZnlfYWxsb2NfcGVybV9ldmVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9ub3RpZnkvZmFub3RpZnkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTU2OT1zdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19tbnRfZXZlbnQodTY0IG1udF9pZCwgZ2ZwX3QgZ2ZwKVxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTgyLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjU4MzpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGNvbnN0IHZvaWQgKmRhdGEsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNTg0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdGludCBkYXRhX3R5cGUsXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYz03NDU9c3RhdGljIHN0cnVjdCBmYW5vdGlmeV9ldmVudCAqZmFub3RpZnlfYWxsb2NfZXZlbnQoXFxuLS1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTMtXFx0aWYgKGZhbm90aWZ5X2lzX3Blcm1fZXZlbnQobWFzaykpIHtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo4NTQ6XFx0XFx0ZXZlbnQgPSBmYW5vdGlmeV9hbGxvY19wZXJtX2V2ZW50KGRhdGEsIGRhdGFfdHlwZSwgZ2ZwKTtcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy04NTUtXFx0fSBlbHNlIGlmIChmYW5vdGlmeV9pc19lcnJvcl9ldmVudChtYXNrKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NjoxOC43NDEwOTc0OTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5NjcyMTI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHBsYXlpbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0OlxuXG4qKlRyYWNpbmcgdGhlIEV2ZW50IEFsbG9jYXRpb24gaW4gRmFub3RpZnkqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoaXMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZSBldmVudCBhbGxvY2F0aW9uLCBgZmFub3RpZnlfYWxsb2NfZXZlbnRgLCBzZWVtcyB0byBiZSBjYWxsZWQgKm9ubHkqIHdpdGhpbiB0aGUgZnVuY3Rpb24gYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAuIFRoYXQgbWFrZXMgYGZhbm90aWZ5X2hhbmRsZV9ldmVudGAgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IHRvIGZvbGxvdywgYXMgZmFyIGFzIGFsbG9jYXRpbmcgYW4gZXZlbnQgaXMgY29uY2VybmVkLiBJdCdzIHRoZSB0b3Agb2YgdGhlIGNoYWluIGZvciB0aGlzIGFsbG9jYXRpb24gcHJvY2Vzcy4gQnV0LCBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJIGRvbid0IHdhbnQgdG8gbWFrZSBhc3N1bXB0aW9ucy4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiBgZmFub3RpZnlfYWxsb2NfZXZlbnRgIGlzIGV2ZXIgY2FsbGVkIGZyb20gc29tZXdoZXJlIGVsc2Ugd2l0aGluIHRoZSBjb2RlLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB0byBiZSBzdXJlIG15IHdvcmtpbmcgYXNzdW1wdGlvbiBpcyBjb3JyZWN0LiBBIGNvbXByZWhlbnNpdmUgcmV2aWV3IGlzIG5lY2Vzc2FyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQyMDo0NjoyMi43Mzc4MjExNjdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NjUxMTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZhbm90aWZ5X2FsbG9jX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25vdGlmeS9mYW5vdGlmeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9Mjk3PXN0YXRpYyB1MzIgZmFub3RpZnlfZ3JvdXBfZXZlbnRfbWFzayhzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtMzYxLVxcdCAqIFdlIG5ldmVyIHJlcG9ydCBGQU5fRVZFTlRfT05fQ0hJTEQgdG8gdXNlciwgYnV0IHdlIGRvIHBhc3MgaXQgaW4gdG9cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzozNjI6XFx0ICogZmFub3RpZnlfYWxsb2NfZXZlbnQoKSB3aGVuIGdyb3VwIGlzIHJlcG9ydGluZyBmaWQgYXMgaW5kaWNhdGlvblxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTM2My1cXHQgKiB0aGF0IGV2ZW50IGhhcHBlbmVkIG9uIGNoaWxkLlxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmM9NzA3PXN0YXRpYyBzdHJ1Y3QgZmFub3RpZnlfZXZlbnQgKmZhbm90aWZ5X2FsbG9jX2Vycm9yX2V2ZW50KFxcbi0tXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtNzQ0LVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jOjc0NTpzdGF0aWMgc3RydWN0IGZhbm90aWZ5X2V2ZW50ICpmYW5vdGlmeV9hbGxvY19ldmVudChcXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYy03NDYtXFx0XFx0XFx0XFx0c3RydWN0IGZzbm90aWZ5X2dyb3VwICpncm91cCxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jPTkyOD1zdGF0aWMgaW50IGZhbm90aWZ5X2hhbmRsZV9ldmVudChzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwLCB1MzIgbWFzayxcXG4tLVxcbmZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeS5jLTk4NC1cXG5mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnkuYzo5ODU6XFx0ZXZlbnQgPSBmYW5vdGlmeV9hbGxvY19ldmVudChncm91cCwgbWFzaywgZGF0YSwgZGF0YV90eXBlLCBkaXIsXFxuZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5LmMtOTg2LVxcdFxcdFxcdFxcdCAgICAgZmlsZV9uYW1lLCBcXHUwMDI2ZnNpZCwgbWF0Y2hfbWFzayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjIyLjgwMjQ4MDkzNVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjc2NzA5NjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmFub3RpZnkgRXZlbnQgSGFuZGxpbmcgRml4KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGBmYW5vdGlmeWAgaXNzdWUsIGFuZCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIHJlYWxseS4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0sIGFzIEkgc2VlIGl0LCBpcyByaWdodCB0aGVyZSBpbiBgZmFub3RpZnlfaGFuZGxlX2V2ZW50YC4gVGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBtYW5pcHVsYXRpb24gb2YgdGhlIGV2ZW50IGRhdGEgb2NjdXJzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgcHBvc2AgcG9pbnRlci4gSSd2ZSBuYXJyb3dlZCBteSBmb2N1cyB0byB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIGBmYW5vdGlmeV9yZWFkYCBhbmQgYGZhbm90aWZ5X3dyaXRlYCwgc2luY2UgdGhleSBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRoZSBldmVudCBoYW5kbGluZyBtZWNoYW5pc20uXG5cblRoZSBmaXggaXRzZWxmIGlzIGEgZnVuY3Rpb25hbCBvbmUsIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSB2dWxuZXJhYmlsaXR5LiBUaGUgY29uY2VybiBpcyB0aGF0IGBwZXZlbnQtXHUwMDNlcHBvc2Agd2FzIGRpcmVjdGx5IHBvaW50aW5nIHRvIGByYW5nZS1cdTAwM2Vwb3NgLCB3aGljaCwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCBjb3VsZCBiZSBzdGFjay1hbGxvY2F0ZWQgb3IgZnJlZWQgbWVtb3J5LiBUaGF0J3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSBoYXJkLXRvLWRlYnVnIGNyYXNoIG9yLCB3b3JzZSwgZXhwbG9pdGF0aW9uLiBUaGUgc29sdXRpb24sIGNvcHlpbmcgYHJhbmdlLVx1MDAzZXBvc2AgdG8gYHBldmVudC1cdTAwM2Vwb3NgIGFuZCB0aGVuIGhhdmluZyBgcGV2ZW50LVx1MDAzZXBwb3NgIHBvaW50IHRvICp0aGF0KiBjb3B5IGlzIGNsZWFuLCBlbGVnYW50LCBhbmQgYXZvaWRzIHRoZSBwcm9ibGVtIGVudGlyZWx5LiBBIHNvbGlkIGZpeC5cblxuSSd2ZSBhbHNvIGNvbmZpcm1lZCB0aGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucywgbmFtZWx5IGBGQU5PVElGWWAgYW5kIGBGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNgLCBhcmUgdGhlIG9ubHkgb25lcyBhdCBwbGF5IGhlcmUuIE5vIHN1cnByaXNlcyB0aGVyZS4gVGhleSdyZSB0aGUgZ2F0ZWtlZXBlcnMgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuTm93IHRoYXQgSSdtIHNhdGlzZmllZCB3aXRoIHRoZSBhc3Nlc3NtZW50IGFuZCB0aGUgc29sdXRpb24ncyBjbGFyaXR5LCBJJ20gcmVhZHkgdG8gY29tbWl0IHRoaXMuIFRpbWUgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NjksIk91dHB1dFRva2VucyI6MTI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDIwOjQ2OjI5LjA3OTE5NDIxN1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjgwMDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkFOT1RJRllcIixcbiAgICBcIkZBTk9USUZZX0FDQ0VTU19QRVJNSVNTSU9OU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZhbm90aWZ5X2hhbmRsZV9ldmVudFwiLFxuICAgIFwiZmFub3RpZnlfcmVhZFwiLFxuICAgIFwiZmFub3RpZnlfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZmFub3RpZnkgcGVybWlzc2lvbiBldmVudHMgYnkgY29weWluZyB0aGUgZmlsZSByYW5nZSBwb3NpdGlvbiBpbnRvIHRoZSBldmVudCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBrZWVwaW5nIGEgcG9pbnRlciB0byBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZhbm90aWZ5IGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZBTk9USUZZXCIsXG4gICAgXCJGQU5PVElGWV9BQ0NFU1NfUEVSTUlTU0lPTlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmYW5vdGlmeV9oYW5kbGVfZXZlbnRcIixcbiAgICBcImZhbm90aWZ5X3JlYWRcIixcbiAgICBcImZhbm90aWZ5X3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGZhbm90aWZ5IHBlcm1pc3Npb24gZXZlbnRzIGJ5IGNvcHlpbmcgdGhlIGZpbGUgcmFuZ2UgcG9zaXRpb24gaW50byB0aGUgZXZlbnQgc3RydWN0dXJlIGluc3RlYWQgb2Yga2VlcGluZyBhIHBvaW50ZXIgdG8gaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmYW5vdGlmeSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowmg9fx[1] Phase: Succeeded StartedAt: 2026-07-31 20:46:40 +0000 UTC FinishedAt: 2026-07-31 20:46:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 20:46:40 +0000 UTC FinishedAt: 2026-07-31 20:46:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2] Phase: Succeeded StartedAt: 2026-07-31 20:46:40 +0000 UTC FinishedAt: 2026-07-31 22:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 20:46:40 +0000 UTC FinishedAt: 2026-07-31 22:30:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 20:46:40 +0000 UTC FinishedAt: 2026-07-31 20:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 20:46:40 +0000 UTC FinishedAt: 2026-07-31 20:46:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-convert-artifact-3710160881/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 20:47:04 +0000 UTC FinishedAt: 2026-07-31 21:12:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 20:47:04 +0000 UTC FinishedAt: 2026-07-31 21:12:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bd510a3a-e01a-4bd4-8c8e-701bb5eaef28,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-convert-artifact-3710160881/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "dc2a63ed-f2c1-46f1-93d9-f3e9efcbe145", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-160385567/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 20:47:04 +0000 UTC FinishedAt: 2026-07-31 21:11:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bd510a3a-e01a-4bd4-8c8e-701bb5eaef28,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-convert-artifact-3710160881/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "dc2a63ed-f2c1-46f1-93d9-f3e9efcbe145", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-160385567/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 21:12:20 +0000 UTC FinishedAt: 2026-07-31 21:12:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 21:12:20 +0000 UTC FinishedAt: 2026-07-31 21:12:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 21:12:20 +0000 UTC FinishedAt: 2026-07-31 21:12:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 21:12:20 +0000 UTC FinishedAt: 2026-07-31 21:12:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-convert-artifact-184114244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 21:12:30 +0000 UTC FinishedAt: 2026-07-31 21:14:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 21:12:30 +0000 UTC FinishedAt: 2026-07-31 21:14:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc2a63ed-f2c1-46f1-93d9-f3e9efcbe145,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-160385567/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 21:14:46 +0000 UTC FinishedAt: 2026-07-31 21:14:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 21:14:46 +0000 UTC FinishedAt: 2026-07-31 21:14:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 21:14:46 +0000 UTC FinishedAt: 2026-07-31 21:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 21:14:46 +0000 UTC FinishedAt: 2026-07-31 21:40:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bd510a3a-e01a-4bd4-8c8e-701bb5eaef28,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-convert-artifact-184114244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "6207389e-68f9-44ad-a11e-3ba3652a6fc4", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-2054128720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 21:14:46 +0000 UTC FinishedAt: 2026-07-31 21:40:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bd510a3a-e01a-4bd4-8c8e-701bb5eaef28,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-convert-artifact-184114244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "6207389e-68f9-44ad-a11e-3ba3652a6fc4", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-2054128720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 21:40:41 +0000 UTC FinishedAt: 2026-07-31 21:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 21:40:41 +0000 UTC FinishedAt: 2026-07-31 21:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 21:40:41 +0000 UTC FinishedAt: 2026-07-31 21:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 21:40:41 +0000 UTC FinishedAt: 2026-07-31 21:42:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6207389e-68f9-44ad-a11e-3ba3652a6fc4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-2054128720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 21:42:38 +0000 UTC FinishedAt: 2026-07-31 22:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 21:42:38 +0000 UTC FinishedAt: 2026-07-31 22:30:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*dc2a63ed-f2c1-46f1-93d9-f3e9efcbe145,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6207389e-68f9-44ad-a11e-3ba3652a6fc4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-160385567/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-2054128720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 21:42:38 +0000 UTC FinishedAt: 2026-07-31 21:42:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 21:42:38 +0000 UTC FinishedAt: 2026-07-31 21:42:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-convert-artifact-941850445/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 21:42:38 +0000 UTC FinishedAt: 2026-07-31 21:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 21:42:38 +0000 UTC FinishedAt: 2026-07-31 21:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 21:42:45 +0000 UTC FinishedAt: 2026-07-31 21:42:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 21:42:55 +0000 UTC FinishedAt: 2026-07-31 22:30:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmg9fx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["fanotify_handle_event","fanotify_read","fanotify_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fa20f6cb6063f7f1a6a56693d4a8713f19058d23","config_name":"upstream-apparmor-kasan.config","enable_configs":["FANOTIFY","FANOTIFY_ACCESS_PERMISSIONS"],"series_id":"71920c0c-cda3-4539-9f2d-967d4a5551a1","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 21:42:55 +0000 UTC FinishedAt: 2026-07-31 22:29:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc2a63ed-f2c1-46f1-93d9-f3e9efcbe145,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6207389e-68f9-44ad-a11e-3ba3652a6fc4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-160385567/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-build-action-2054128720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmg9fx/series-workflowmg9fx-convert-artifact-941850445/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}