Name: series-workflow5jdfx Phase: Succeeded StartedAt: 2026-06-30 08:50:00 +0000 UTC FinishedAt: 2026-06-30 10:09:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[0] Phase: Succeeded StartedAt: 2026-06-30 08:50:00 +0000 UTC FinishedAt: 2026-06-30 09:13:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 08:50:00 +0000 UTC FinishedAt: 2026-06-30 09:13:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI" ], "series_id": "c266f2b3-f8fb-4437-9109-e77917eee1ee" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_pnvm_parse" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfcG52bV9wYXJzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBQTlZNIFNLVSBUTFZzIGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgZmlybXdhcmUgbG9hZGluZyBvciBVRUZJIHZhcmlhYmxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ0NWY5ODIzY2VmODFkNDA0NmIwMjRkNjNiYmE1NmFhZjc3MzQ4YzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwOToxMTowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXG5pbmRleCBhZmZmOGQ1MWNhOTUwYy4uZjYxZTY5YmE5MzNiYzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcbkBAIC0xOTgsNiAmIzQzOzE5OCwxMiBAQCBzdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbiBcdFx0XHRJV0xfREVCVUdfRlcodHJhbnMsXG4gXHRcdFx0XHQgICAgIFwmIzM0O0dvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwmIzM0OyxcbiBcdFx0XHRcdCAgICAgdGx2X2xlbik7XG4mIzQzO1x0XHRcdGlmICh0bHZfbGVuIFx1MDAzYyAzICogc2l6ZW9mKF9fbGUzMikpIHtcbiYjNDM7XHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtpbnZhbGlkIFBOVk0gU0tVIFRMViBsZW46ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0dGx2X2xlbik7XG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVswXSksXG4gXHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsxXSksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVdMV0lGSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF9wbnZtX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NDVmOTgyM2NlZjgxZDQwNDZiMDI0ZDYzYmJhNTZhYWY3NzM0OGMxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTE6MDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jCmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5mNjFlNjliYTkzM2JjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMKQEAgLTE5OCw2ICYjNDM7MTk4LDEyIEBAIHN0YXRpYyBpbnQgaXdsX3Budm1fcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLAogCQkJSVdMX0RFQlVHX0ZXKHRyYW5zLAogCQkJCSAgICAgJiMzNDtHb3QgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSBsZW4gJWRcbiYjMzQ7LAogCQkJCSAgICAgdGx2X2xlbik7CiYjNDM7CQkJaWYgKHRsdl9sZW4gJmx0OyAzICogc2l6ZW9mKF9fbGUzMikpIHsKJiM0MzsJCQkJSVdMX0VSUih0cmFucywgJiMzNDtpbnZhbGlkIFBOVk0gU0tVIFRMViBsZW46ICV1XG4mIzM0OywKJiM0MzsJCQkJCXRsdl9sZW4pOwomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiYjNDM7CiAJCQlJV0xfREVCVUdfRlcodHJhbnMsICYjMzQ7c2t1X2lkIDB4JTB4IDB4JTB4IDB4JTB4XG4mIzM0OywKIAkJCQkgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtJmd0O2RhdGFbMF0pLAogCQkJCSAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC0mZ3Q7ZGF0YVsxXSksCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIEludGVsIFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNgIHRoYXQgaW50cm9kdWNlcyBhIGxlbmd0aCBjaGVjayBmb3IgYElXTF9VQ09ERV9UTFZfUE5WTV9TS1VgIHdpdGhpbiB0aGUgYGl3bF9wbnZtX3BhcnNlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZnV6emluZz8gTGV0JiMzOTtzIGRpdmUgaW50byBgaXdsX3Budm1fcGFyc2VgIGRpcmVjdGx5IGFuZCBkZXRlcm1pbmUgaXRzIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGZ1enppbmcgdmFsdWUuCgpUaGUgY29udGV4dCBpcyB0aGUgYGl3bHdpZmlgIGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gSW50ZWwgd2lyZWxlc3MgY2FyZHMuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIHF1ZXN0aW9ucyBhYm91dCBpdHMgYWNjZXNzaWJpbGl0eSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBCZWNhdXNlIGl04oCZcyBhIFBDSSBkcml2ZXIsIGl0IHR5cGljYWxseSByZWxpZXMgb24gdGhlIHByZXNlbmNlIG9mIHNwZWNpZmljIFBDSSBoYXJkd2FyZS4gQ2FuIHdlIGdldCBhcm91bmQgdGhhdCBzb21laG93PyBJIGtub3cgYG1hYzgwMjExX2h3c2ltYCBpcyBvZnRlbiB1c2VkIGZvciBzb2Z0d2FyZS1lbXVsYXRlZCBXaS1GaSwgYnV0IHRoaXMgaXMgYSAqaGFyZHdhcmUqIGRyaXZlciwgc28gdGhhdCBwcm9iYWJseSB3b24mIzM5O3Qgd29yay4KCkhvbGQgb24sIEkgc2VlbSB0byByZWNhbGwgU3l6a2FsbGVyIGhhcyBtZWNoYW5pc21zIGZvciBmdXp6aW5nIFBDSSBkZXZpY2VzLiBJc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlYCBvciBhIHNpbWlsYXIgdGVjaG5pcXVlPyBPciBpcyBgaXdsd2lmaWAgc29tZWhvdyBleGNsdWRlZCBmcm9tIGZ1enppbmc/IExldCBtZSBjaGVjayBpZiBgaXdsd2lmaWAgaXMgYWN0dWFsbHkgZnV6emVkLgoKUmlnaHQsIGBpd2x3aWZpYCAqaXMqIGEgUENJIGRyaXZlciwgc28gUENJIGZ1enppbmcgKHBvdGVudGlhbGx5IHZpYSBWRklPIG9yIFN5emthbGxlciYjMzk7cyBQQ0kgY2FwYWJpbGl0aWVzKSBpcyB0aGUgd2F5IHRvIGdvLiBZZXMsIFN5emthbGxlciAqZG9lcyogZnV6eiBQQ0kgZGV2aWNlcyEKCk9rYXksIG5ldyBmb2N1cy4gTm93IHRoZSBtb3N0IGltcG9ydGFudCBxdWVzdGlvbjogSXMgYGl3bF9wbnZtX3BhcnNlYCByZWFjaGFibGU/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dCBmaXJzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcG52bV9wYXJzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2PXN0YXRpYyBpbnQgaXdsX3Budm1faGFuZGxlX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2OTpzdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE3MC1cdFx0XHQgIHNpemVfdCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY2PWl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTI6XHRyZXQgPSBpd2xfcG52bV9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOTMtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgUE5WTSBQYXJzaW5nIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBpd2xfcG52bV9wYXJzZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBwYXJzaW5nIHRoZSBQTlZNIGRhdGEuIEkga25vdyB0aGF0JiMzOTtzIGNhbGxlZCBmcm9tIGBpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnNgLiBOb3csIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBwb3RlbnRpYWwgaXNzdWVzLCBJIG5lZWQgdG8ga25vdyAqd2hlcmUqIGBpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnNgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBvZiAqdGhhdCogZnVuY3Rpb24gaXMga2V5IHRvIGRlYnVnZ2luZyB0aGlzIGFyZWEuIExldCBtZSB0cmFjZSBiYWNrIHRoZSBjYWxsIGdyYXBoIHRvIHNlZSB3aGVyZSB0aGUgZGF0YSBpcyBhY3R1YWxseSBjb21pbmcgZnJvbSBhbmQgaG93IHRoZSBQTlZNIHBhcnNpbmcgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBzdXNwZWN0IGl0IHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0IGRhdGEgaXMgYmVpbmcgcGFyc2VkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2NT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzY2Oml3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM2Ny1cdFx0XHQgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDYxPWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ3MzpcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NzQtXHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTY4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBxdWVzdGlvbjoKCioqRGVlcCBEaXZlIGludG8gYGl3bF9wbnZtX2xvYWRgJiMzOTtzIE9yaWdpbnMqKgoKT2theSwgc28gYGl3bF9wbnZtX2xvYWRgLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGdldCBpbnZva2VkIGZyb20/IFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBkcml2ZXIgZnJhbWV3b3JrLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBpdHMgY2FsbCBwYXRoLiBJcyBpdCBjYWxsZWQgZnJvbSBhIG1haW4gaW5pdGlhbGl6YXRpb24gcm91dGluZSwgbGlrZSBgaXdsd2lmaV9wY2lfcHJvYmVgIG9yIG9uZSBvZiB0aGUgZGV2aWNlLXNwZWNpZmljIHByb2JlIGZ1bmN0aW9ucz8gT3IgaXMgaXQgdHJpZ2dlcmVkIGxhdGVyLCBtYXliZSBkdXJpbmcgYSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlPyBJcyBpdCBwYXJ0IG9mIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbml0aWFsaXphdGlvbiwgcGVyaGFwcz8KCkkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgY29udGV4dCB0byBlZmZlY3RpdmVseSBhbmFseXNlIGl0cyBiZWhhdmlvdXIuIEtub3dpbmcgd2hlcmUgaXQgaXMgY2FsbGVkIGZyb20gd2lsbCBvZmZlciBpbnNpZ2h0IGludG8gaG93IHRoZSBwcm9ncmFtIHN0YXRlIGlzIGxpa2VseSB0byBiZSBzZXQsIGhvdyBkZXBlbmRlbmNpZXMgYW5kIGFzc3VtcHRpb25zIHdpbGwgbWFuaWZlc3QuIEl0IGNvdWxkIHByb3ZpZGUgYSBxdWljayBhbnN3ZXIgdG8gd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX2xvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNjU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM2Njppd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNjctXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfZncgKmZ3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQxMj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDEzOml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDE0LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ2MTppbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Mi1cdFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NzM6XHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDc0Olx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFx1MDAyNmZ3LVx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDg2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ4NzpJV0xfRVhQT1JUX1NZTUJPTChpd2xfcG52bV9sb2FkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaC0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oOjE2OmludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmgtMTctXHRcdCAgc3RydWN0IGl3bF9ub3RpZl93YWl0X2RhdGEgKm5vdGlmX3dhaXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYz0yNzI9c3RhdGljIGludCBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlKHN0cnVjdCBpd2xfbWxkICptbGQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYy0yODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jOjI5MDpcdHJldCA9IGl3bF9wbnZtX2xvYWQobWxkLVx1MDAzZXRyYW5zLCBcdTAwMjZtbGQtXHUwMDNlbm90aWZfd2FpdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmMtMjkxLVx0XHRcdCAgICBtbGQtXHUwMDNlZncsIGFsaXZlX2RhdGEuc2t1X2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jPTI4Nj1zdGF0aWMgaW50IGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jOjQwNzpcdHJldCA9IGl3bF9wbnZtX2xvYWQobXZtLVx1MDAzZXRyYW5zLCBcdTAwMjZtdm0tXHUwMDNlbm90aWZfd2FpdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtNDA4LVx0XHRcdCAgICBtdm0tXHUwMDNlZncsIGFsaXZlX2RhdGEuc2t1X2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODE2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gRmlybXdhcmUgTG9hZGluZyBGdXp6aW5nKioKCk9rYXksIHNvIGBpd2xfcG52bV9sb2FkYCBpcyBjZW50cmFsIHRvIHRoaXMgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBrZXkgcGFydCBvZiB0aGUgcHJvY2VzcywgY2FsbGVkIGR1cmluZyBib3RoIGBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZWAgYW5kIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYC4gVGhlIGZpcm13YXJlIGl0c2VsZiBpcyBmZXRjaGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gdXNpbmcgYHJlcXVlc3RfZmlybXdhcmVgLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgd2F5LgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgYmUgbGV2ZXJhZ2VkIHRvIGZ1enogdGhpcyBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3M/IEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgZmlybXdhcmUgZnV6emluZyBjYXBhYmlsaXRpZXMsIG1heWJlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfbW91bnRfaW1hZ2VgLCBvciBwb3RlbnRpYWxseSBpbmplY3RpbmcgZmF1bHRzIHRocm91Z2ggYHJlcXVlc3RfZmlybXdhcmVgLiBCdXQuLi4gaXQmIzM5O3Mgbm90IGEgc3RyYWlnaHRmb3J3YXJkICYjMzQ7bmF0aXZlJiMzNDsgZmlybXdhcmUgY29udGVudCBmdXp6ZXIsIHJpZ2h0PyBJdCB1c3VhbGx5IG5lZWRzIGEgc3BlY2lmaWMgc2V0dXAuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgYGl3bF9wbnZtX2xvYWRgIGlzIHNwZWNpZmljYWxseSBsb2FkaW5nIFBOVk0gZGF0YS4gV2hlcmUgZG9lcyB0aGUgYGRhdGFgIGFjdHVhbGx5IGNvbWUgZnJvbSB3aGVuIGl0JiMzOTtzIHBhc3NlZCB0byBgaXdsX3Budm1fcGFyc2VgPyBVbmRlcnN0YW5kaW5nIHRoYXQgaXMgdGhlIGNyaXRpY2FsIHBvaW50IGlmIEkgd2FudCB0byB0YXJnZXQgdGhpcyBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbnZtX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNj1zdGF0aWMgaW50IGl3bF9wbnZtX2hhbmRsZV9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM3LVx0XHRcdFx0ICAgc2l6ZV90IGxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM4Olx0XHRcdFx0ICAgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NzpcdG1lbXNldChwbnZtX2RhdGEsIDAsIHNpemVvZigqcG52bV9kYXRhKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy03OS1cdFx0XHRcdCAgICAgc2hhMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo4MDpcdFx0XHRwbnZtX2RhdGEtXHUwMDNldmVyc2lvbiA9IHNoYTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy04MS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMTg6XHRcdFx0aWYgKHBudm1fZGF0YS1cdTAwM2VuX2NodW5rcyA9PSBJUENfRFJBTV9NQVBfRU5UUllfTlVNX01BWCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTE5LVx0XHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEyNzpcdFx0XHRwbnZtX2RhdGEtXHUwMDNlY2h1bmtzW3Budm1fZGF0YS1cdTAwM2VuX2NodW5rc10uZGF0YSA9IHNlY3Rpb24tXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEyODpcdFx0XHRwbnZtX2RhdGEtXHUwMDNlY2h1bmtzW3Budm1fZGF0YS1cdTAwM2VuX2NodW5rc10ubGVuID0gZGF0YV9sZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMjk6XHRcdFx0cG52bV9kYXRhLVx1MDAzZW5fY2h1bmtzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xMzQtXHRcdFx0aWYgKGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2ModHJhbnMsIGRhdGEsIHRsdl9sZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMzU6XHRcdFx0XHRcdFx0XHQgcG52bV9kYXRhKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzNi1cdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2MTpcdGlmICghcG52bV9kYXRhLVx1MDAzZW5fY2h1bmtzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNjItXHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7RW1wdHkgUE5WTSwgc2tpcHBpbmcuXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0xNjk9c3RhdGljIGludCBpd2xfcG52bV9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzAtXHRcdFx0ICBzaXplX3QgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTcxOlx0XHRcdCAgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzItXHRcdFx0ICBfX2xlMzIgc2t1X2lkWzNdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTIzMC1cdFx0XHRcdHJldCA9IGl3bF9wbnZtX2hhbmRsZV9zZWN0aW9uKHRyYW5zLCBkYXRhLCBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoyMzE6XHRcdFx0XHRcdFx0XHQgICAgICBwbnZtX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMjMyLVx0XHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzEzPXN0YXRpYyBjb25zdCB1OCAqaXdsX2dldF9wbnZtX2ltYWdlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zX3AsIHNpemVfdCAqbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM1NjpcdGlmIChwbnZtX3NyYyA9PSBJV0xfUE5WTV9TT1VSQ0VfRU1CRURERUQgXHUwMDI2XHUwMDI2IGZ3LVx1MDAzZXBudm1fZGF0YSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzU3LVx0XHQqbGVuID0gZnctXHUwMDNlcG52bV9zaXplO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzU4Olx0XHRyZXR1cm4gZnctXHUwMDNlcG52bV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzU5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2Nj1pd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzY5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM3MDpcdHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM3MS1cdGNvbnN0IHU4ICpkYXRhID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozODg6XHRwbnZtX2RhdGEgPSBremFsbG9jX29iaigqcG52bV9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM4OTpcdGlmICghcG52bV9kYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkwLVx0XHRnb3RvIGZyZWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTI6XHRyZXQgPSBpd2xfcG52bV9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOTMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6Mzk4Olx0cmV0ID0gaXdsX3RyYW5zX2xvYWRfcG52bSh0cmFucywgcG52bV9kYXRhLCBcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5OS1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDAtXHRcdGdvdG8gZnJlZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwMTpcdElXTF9ERUJVR19JTkZPKHRyYW5zLCBcJiMzNDtsb2FkZWQgUE5WTSB2ZXJzaW9uICUwOHhcXG5cJiMzNDssIHBudm1fZGF0YS1cdTAwM2V2ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDYtXHQvKiBmcmVlIG9ubHkgaWYgaXQgd2FzIGFsbG9jYXRlZCwgaS5lLiBub3QganVzdCBlbWJlZGRlZCBQTlZNIGRhdGEgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzpcdGlmIChkYXRhICE9IGZ3LVx1MDAzZXBudm1fZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwOC1cdFx0a3ZmcmVlKGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDA5Olx0a2ZyZWUocG52bV9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQxMC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDEzPWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQxNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MTc6XHRzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MTgtXHR1OCAqZGF0YSA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDM0Olx0cG52bV9kYXRhID0ga3phbGxvY19vYmooKnBudm1fZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MzU6XHRpZiAoIXBudm1fZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzNi1cdFx0Z290byBmcmVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDM4Olx0cmV0ID0gaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHRyYW5zLCBkYXRhLCBsZW5ndGgsIHBudm1fZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzOS1cdFx0XHRcdFx0ICBza3VfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ0NTpcdHJldCA9IGl3bF90cmFuc19sb2FkX3JlZHVjZV9wb3dlcih0cmFucywgcG52bV9kYXRhLCBjYXBhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ0Ni1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTctXHRrZnJlZShkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ1ODpcdGtmcmVlKHBudm1fZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTktfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTI2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpcm13YXJlIFZ1bG5lcmFiaWxpdHkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHJlY29nbml6ZSB0aGUgY29udGV4dC4gVGhpcyBkYXRhIGlzIGNvbWluZyBmcm9tIGBpd2xfZ2V0X3Budm1faW1hZ2VgLCB3aGljaCBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGZpcm13YXJl4oCUaXQmIzM5O3MgbG9hZGVkIGVpdGhlciBkaXJlY3RseSBmcm9tIGZpcm13YXJlIGZpbGVzIG9yIHRocm91Z2ggVUVGSS4gVGhlIHN0YW5kYXJkIHdheSB0byBsb2FkIHRoZXNlIGZpbGVzLCBhcyBJIHJlY2FsbCwgaXMgdmlhIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2FpdCwgaG93IGRpZCB0aGlzIGNvbWUgdXA/JiMzNDsgU3l6a2FsbGVyICpjb3VsZCogZnV6eiBmaXJtd2FyZSBmaWxlcywgcG90ZW50aWFsbHkgdXNpbmcgYHN5el9tb3VudF9pbWFnZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFsdGhvdWdoIHRoYXQgdXN1YWxseSBoYXBwZW5zIHdoZW4gYSBzcGVjaWZpYyBzZXR1cCBpcyBpbnZvbHZlZC4gSXMgdGhlcmUgYSBgc3l6X2Zpcm13YXJlYCBzeXNjYWxsIHRoYXQgSSYjMzk7bSBmb3JnZXR0aW5nPyBPciBpcyBpdCBzb21ldGhpbmcgZWxzZT8KCkFoLCByaWdodCEgVGhlIGtleSBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgY29taW5nIGZyb20gYHN5ei1jbHVzdGVyYC4gVGhhdCBtZWFucyBTeXprYWxsZXIsIGl0c2VsZiwgZm91bmQgdGhpcyBidWcuIFRoaXMgaXMgZ3JlYXQsIGJlY2F1c2UgaXQgbWVhbnMgd2UgaGF2ZSBhIHRlc3QgY2FzZSB0byB3b3JrIGZyb20uCgpOb3csIHRoZSBwYXRjaCBpdHNlbGYgaW50cm9kdWNlcyBhIGxlbmd0aCBjaGVjazoKCmBgYGMKJiM0MzsJCQlpZiAodGx2X2xlbiAmbHQ7IDMgKiBzaXplb2YoX19sZTMyKSkgewomIzQzOwkJCQlJV0xfRVJSKHRyYW5zLCAmIzM0O2ludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcbiYjMzQ7LAomIzQzOwkJCQkJdGx2X2xlbik7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KYGBgCgpUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGNoYW5nZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBib3VuZHMgY2hlY2ssIHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyB0aGUgcGFyc2luZyBvZiB0aGUgYElXTF9VQ09ERV9UTFZfUE5WTV9TS1VgIGRhdGEuIFNpbmNlIFN5emthbGxlciBmb3VuZCBpdCwgd2UgY2FuIGJlIGNvbmZpZGVudCB0aGlzIGJ1ZyBpcyByZWFjaGFibGUgYW5kIGl0IGlzIGZ1enplZCBieSBTeXprYWxsZXIuIFRoaXMgYWxzbyBtYWtlcyBtZSB3YW50IHRvIHN0YXJ0IHRoaW5raW5nIGFib3V0IGNvbmZpZyBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgZHJpdmVycyBhbmQgbW9kdWxlcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyBjb2RlIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY9c3RhdGljIGludCBpd2xfcG52bV9oYW5kbGVfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTY5OnN0YXRpYyBpbnQgaXdsX3Budm1fcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTcwLVx0XHRcdCAgc2l6ZV90IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNjY9aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM5MjpcdHJldCA9IGl3bF9wbnZtX3BhcnNlKHRyYW5zLCBkYXRhLCBsZW5ndGgsIHBudm1fZGF0YSwgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk2NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkh1bnRpbmcgRG93biB0aGUgYGl3bHdpZmlgIEtjb25maWcqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBpd2x3aWZpYCBkcml2ZXIuIFRoaXMgbGlrZWx5IGNvbnRhaW5zIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgd2lyZWxlc3MgbW9kdWxlIHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBLY29uZmlnIGFyY2hpdGVjdHVyZSwgSSYjMzk7bGwgYXBwcm9hY2ggdGhpcyBzeXN0ZW1hdGljYWxseS4KCkZpcnN0LCBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBjb21tb24gbG9jYXRpb25zIHdoZXJlIHRoZXNlIEtjb25maWcgZmlsZXMgcmVzaWRlLiBUeXBpY2FsbHksIHRoZXkmIzM5O3JlIG5lc3RsZWQgd2l0aGluIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIHRoZSBkcml2ZXIgaXRzZWxmLiBTaW5jZSBgaXdsd2lmaWAgZGVhbHMgd2l0aCBJbnRlbCB3aXJlbGVzcywgdGhlIHBhdGggaXMgcHJvYmFibHkgc29tZXdoZXJlIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2AsIG9yIGF0IGxlYXN0IHdpdGhpbiB0aGUgZ2VuZXJhbCB3aXJlbGVzcyBuZXR3b3JrIHN0cnVjdHVyZS4gVGhlIGJlc3Qgd2F5IHRvIGJlIHN1cmUgaXMgdG8gc2VhcmNoLgoKSSYjMzk7bGwgcHJvYmFibHkgZW5kIHVwIHVzaW5nIGBmaW5kYCB3aXRoIHNvbWUganVkaWNpb3VzIHNlYXJjaCBwYXJhbWV0ZXJzLCBvciBtYXliZSBhIG1vcmUgdGFyZ2V0ZWQgYGdyZXBgIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGl0c2VsZiwgdG8gbG9vayBmb3IgYSBmaWxlIG5hbWVkIHNvbWV0aGluZyBsaWtlIGBLY29uZmlnYCwgYEtjb25maWcuaXdsd2lmaWAsIG9yIGV2ZW4gYENvbmZpZy5pd2x3aWZpYCwgdGhhdCBpcyByZWxhdGVkIHRvIGl3bHdpZmkuIFRoaXMgdXN1YWxseSByZXZlYWxzIHRoZSBjb3JyZWN0IGZpbGUgcXVpY2tseS4KCk9uY2UgSSYjMzk7dmUgZ290IGEgbGlrZWx5IGNhbmRpZGF0ZSwgSSBjYW4gY29uZmlybSBpdCYjMzk7cyB0aGUgY29ycmVjdCBmaWxlIGJ5IGxvb2tpbmcgYXQgaXRzIGNvbnRlbnQuIEl0IHNob3VsZCBjb250YWluIHZhcmlvdXMgYGNvbmZpZ2Agc3ltYm9scywgYWxvbmcgd2l0aCBkZXNjcmlwdGlvbnMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgZGVwZW5kZW5jaWVzIHNwZWNpZmljIHRvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBpdHMgZmVhdHVyZXMsIGFuZCBwb3NzaWJseSBoYXJkd2FyZSBzdXBwb3J0LiBUaGF0JiMzOTtzIHRoZSBrZXk6IGxvb2sgZm9yIHRoZSBkZWZpbml0aW9ucywgYm9vbGVhbiwgc3RyaW5nLCBvciB0cmlzdGF0ZSBzZXR0aW5ncy4gVGhvc2UgYXJlIHRoZSBjb25maWd1cmF0aW9ucyBJJiMzOTttIGFmdGVyLiBBbmQgYWZ0ZXIgdGhhdCwgSSBjYW4gbW92ZSBvbiB0byB0aGUgbmV4dCB0YXNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJiMzOTt0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDM0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQTlZNIFBvdGVudGlhbCoqCgpBbHJpZ2h0LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaXMgYElXTFdJRklgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgcHJvYmUgZGVlcGVyLiBXaGlsZSBgSVdMV0lGSWAgaXMgcHJldHR5IHN0YW5kYXJkIGZvciBJbnRlbCB3aXJlbGVzcywgbXkgZXhwZXJpZW5jZSBzY3JlYW1zIHRoZSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBjb25maWd1cmF0aW9uIGhhcyBhbnkgaW1wbGljaXQgb3IgZXhwbGljaXQgaW50ZXJhY3Rpb25zIHdpdGggUE5WTSAoUGhhc2UtQ2hhbmdlIE5vbi1Wb2xhdGlsZSBNZW1vcnkpLiBJcyB0aGVyZSBhbnkgc3BlY2lmaWMgb3IgaW1wbGllZCBzdXBwb3J0IGVtYmVkZGVkIHdpdGhpbiB0aGUgYElXTFdJRklgIGltcGxlbWVudGF0aW9uIGZvciBQTlZNPyBJ4oCZbSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucywgb3IgZXZlbiBwb3RlbnRpYWwgbGltaXRhdGlvbnMsIHRoYXQgd291bGQgYmUgZGlyZWN0bHkgYXBwbGljYWJsZS4gVW5kZXJzdGFuZGluZyBhbnkgZGVwZW5kZW5jaWVzIGhlcmUgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgd2l0aCBQTlZNLiBBbnkgc3BlY2lmaWMgUE5WTS1vcmllbnRlZCBjb25maWcgb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIGhpZGRlbiBvciB0aGF0IGNvdWxkIGluZmx1ZW5jZSBpdD8gSXQgd291bGQgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIGlmIGFueSBkcml2ZXJzIG9yIG1vZHVsZXMgd2l0aGluIGBJV0xXSUZJYCBhcmUgd3JpdHRlbiBpbiBhIHdheSB0aGF0IHdvdWxkIGJlIGltbWVkaWF0ZWx5IGJlbmVmaWNpYWwsIG9yIHJlcXVpcmUgZnVydGhlciBtb2RpZmljYXRpb24sIHRvIGhhcm5lc3MgdGhlIHBvdGVudGlhbCBnYWlucyBmcm9tIFBOVk0tYmFzZWQgc3RvcmFnZS4gSSBpbW1lZGlhdGVseSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3BlY2lmaWNzOyBpdCBtaWdodCBzZWVtIHVubGlrZWx5LCBidXQgaXQgaXMgaW1wb3J0YW50IHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Budm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM0MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgaXdsd2lmaWAgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBtZW50aW9uZWQgZm9yIFBOVk0gKFBlcnNpc3RlbnQgTm9uLVZvbGF0aWxlIE1lbW9yeSkgaW4gdGhlIGNvbnRleHQgb2YgdGhpcy4gV2FpdCBhIG1pbnV0ZSwgYGl3bHdpZmlgIGlzIGEgUENJIGRyaXZlciwgcmlnaHQ/IEhtbSwgY291bGQgc3l6a2FsbGVyIGJlIGZ1enppbmcgaXQgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gPyBObywgbm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBgbWFjODAyMTFfaHdzaW1gIGlzIHNvZnR3YXJlLCBhIHNpbXVsYXRvciBmb3IgbWFjODAyMTEsIG5vdCBzcGVjaWZpY2FsbHkgZm9yIGBpd2x3aWZpYC4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIGJhc2ljcy4gU3l6a2FsbGVyIHByb2JhYmx5IGhpdHMgYGl3bHdpZmlgIHRocm91Z2ggUENJIGZ1enppbmcsIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciwgb3IgcG90ZW50aWFsbHkgVVNCIGZ1enppbmcgaWYgaXQgcHJlc2VudGVkIGFzIHN1Y2guIEJ1dCwgYXMgSSBqdXN0IGNvbmZpcm1lZCwgaXQmIzM5O3MgUENJLiBUaGVuLCBJIHJlbWVtYmVyZWQgU3l6a2FsbGVyJiMzOTtzIGZpcm13YXJlIGxvYWRpbmcgY2FwYWJpbGl0aWVzLgoKSXMgYGl3bHdpZmlgIGFjdHVhbGx5IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gWWVzLCB0aGVyZSYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoaXMgZHJpdmVyLCBhbmQgU3l6a2FsbGVyIGZvdW5kIHRoZSBidWcuIFNvLCBpbiB0aGVvcnksIGl0JiMzOTtzIHJlYWNoYWJsZSB3aXRoaW4gU3l6a2FsbGVyJiMzOTtzIGVudmlyb25tZW50LiBCdXQsIHdhaXQsIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IHByb21wdCYjMzk7cyBsaW1pdGF0aW9ucy4gSXQgc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFNvLCB0aGUga2V5IGlzIHdoZXRoZXIgb3Igbm90IGBpd2x3aWZpYCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKTHVja2lseSwgU3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJJiMzOTt2ZSBnb3QgdG8gY2hlY2sgaWYgYGl3bHdpZmlgIGlzIHN1cHBvcnRlZCBieSB0aGF0IGZ1enplci4gSXQmIzM5O3MgZnV6emluZyBQQ0kgZGV2aWNlcywgYW5kIGBpd2x3aWZpYCBpcyBvbmUgb2YgdGhlIGRyaXZlcnMgdGhhdCBjYW4gYmUgcHJvYmVkIGlmIHRoZSBQQ0kgSUQgbWF0Y2hlcy4KClNvLCB0aGUgYW5zd2VyIGlzIHllcywgaXQgaXMgcmVhY2hhYmxlLiBPa2F5LCBub3cgbGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBhY3R1YWwgZnVuY3Rpb24gY2hhbmdlLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGl3bF9wbnZtX3BhcnNlYC4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY9c3RhdGljIGludCBpd2xfcG52bV9oYW5kbGVfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTY5OnN0YXRpYyBpbnQgaXdsX3Budm1fcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTcwLVx0XHRcdCAgc2l6ZV90IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNjY9aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM5MjpcdHJldCA9IGl3bF9wbnZtX3BhcnNlKHRyYW5zLCBkYXRhLCBsZW5ndGgsIHBudm1fZGF0YSwgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1MzYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDaGVja2luZyB0aGUgU2NvcGUgb2YgdGhlIElXTFdJRkkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCB0aGUga2V5IHRoaW5nIEkmIzM5O20gbG9va2luZyBhdCByaWdodCBub3cgaXMgYGl3bF9wbnZtX3BhcnNlYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBmb2N1cy4gTm93LCB0aGlzIGlzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgYElXTFdJRklgIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggb24gdGhlIHN1cmZhY2UuIEJ1dCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5IG9yIHJlbGF0ZWQuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gQXJlIHdlICpqdXN0KiBkZWFsaW5nIHdpdGggYElXTFdJRklgPyBDb3VsZCB0aGVyZSBiZSwgcGVyaGFwcywgYSBgSVdMV0lGSV9CU1NgIHRoYXQmIzM5O3Mgc29tZWhvdyBpbnRlcnR3aW5lZCBoZXJlPyBPciBtYXliZSBldmVuIGEgYElXTFdJRklfTVZNYD8gSXQmIzM5O3MgZXNzZW50aWFsIHRoYXQgSSBlbGltaW5hdGUgdGhlIHBvc3NpYmlsaXR5IG9mIGludGVyYWN0aW9uIHdpdGggdGhlc2UgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBjb2RlIHBhdGhzIGJlZm9yZSBwcm9jZWVkaW5nLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbnZtLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM0PWl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gZncvaW1nLm8gZncvbm90aWYtd2FpdC5vIGZ3L3JzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MzU6aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBmdy9kYmcubyBmdy9kYmctb2xkLm8gZncvcG52bS5vIGZ3L2R1bXAub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0zNi1pd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGZ3L3JlZ3VsYXRvcnkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk1NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBgaXdsd2lmaWAgTW9kdWxlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRocm91Z2ggaXRzIGltcGxpY2F0aW9ucy4gVGhlIG9iamVjdGl2ZSBoZXJlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYHBudm0ub2AgaXMgcGFydCBvZiB0aGUgYGl3bHdpZmktb2Jqc2AsIHdoaWNoIGl0c2VsZiBvbmx5IGdldHMgYnVpbHQgd2hlbiBgQ09ORklHX0lXTFdJRklgIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUsIGBJV0xXSUZJYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWcgdG8gZm9jdXMgb24uCgpMZXQmIzM5O3MgZGlzc2VjdCB0aGlzIHBhdGNoIGFnYWluLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgd2l0aGluIHRoZSBgaXdsX3Budm1fcGFyc2VgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGEgbGVuZ3RoIGNoZWNrIGhhcyBiZWVuIGludHJvZHVjZWQuICBUaGUgY29kZSBub3cgY2hlY2tzIGlmIHRoZSBUTFYgbGVuZ3RoIChgdGx2X2xlbmApIGlzIGxlc3MgdGhhbiBgMyAqIHNpemVvZihfX2xlMzIpYC4gVGhlIGludGVudGlvbiBpcyB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIGFjY2Vzc2luZyB0aGUgZWxlbWVudHMgYHRsdl9za3VfaWQtJmd0O2RhdGFbMF1gLCBgZGF0YVsxXWAsIGFuZCBgZGF0YVsyXWAuIFRoaXMgbWVhbnMgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBhaW1pbmcgZm9yIHJvYnVzdG5lc3M7IGdvb2QgdG8gc2VlLgoKU2luY2UgdGhpcyBwYXRjaCBtb2RpZmllcyBvbmx5IGBpd2xfcG52bV9wYXJzZWAsIGl0IHN0YW5kcyBvdXQuICBXZSBzaG91bGQgaW5jbHVkZSB0aGlzIGZ1bmN0aW9uIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHJlbGV2YW50IGZ1bmN0aW9uIHRoYXQgbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBJdCBzZWVtcyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFuc2AuCgpTbywgd2UmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgYElXTFdJRklgIGlzIHRoZSBjcml0aWNhbCBjb25maWcgdG8gdHJhY2suIFdlIG5lZWQgdG8gY2hlY2sgdG8gYmUgY2VydGFpbiB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncy4gQSBxdWljayBjaGVjayBvZiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZWAgc2hvdWxkIGNvbmZpcm0gdGhpcywgYnV0IEkmIzM5O20gcmVhc29uYWJseSBjb25maWRlbnQgaW4gdGhpcyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yLSMgY29tbW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0lXTFdJRkkpXHQmIzQzOz0gaXdsd2lmaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQtaXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtaW8ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NDc9Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX0lXTERWTSlcdCYjNDM7PSBkdm0vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19JV0xNVk0pXHQmIzQzOz0gbXZtL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfSVdMTUVJKVx0JiM0Mzs9IG1laS9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX0lXTE1MRClcdCYjNDM7PSBtbGQvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo1NDpvYmotJChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykgJiM0Mzs9IHRlc3RzL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxNDcKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBpd2x3aWZpYCBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290LiBUaGUgcmVsZXZhbnQgb2JqZWN0IGZpbGUsIGBpd2x3aWZpLm9gLCBpcyBidWlsdCB3aXRoIHRoZSBgQ09ORklHX0lXTFdJRklgIGZsYWcgZW5hYmxlZCwgd2hpY2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhpcyBjb25maXJtcyB0aGF0IGBJV0xXSUZJYCBpcyBhIHN1ZmZpY2llbnQgY29uZmlndXJhdGlvbiB0byBmb2N1cyBvbi4KClNvLCBsZXQgbWUgc3VtbWFyaXplIHRoZSBmaW5kaW5ncyBjb25jaXNlbHk6IFRoaXMgaXMgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHBhdGNoLCBmb2N1c2luZyBpbiBwYXJ0aWN1bGFyIG9uIHRoZSBgaXdsX3Budm1fcGFyc2VgIHN5bWJvbC4gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gaXMgc2ltcGx5IGBJV0xXSUZJYC4KClRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgc29saWQsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY3J1Y2lhbCBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gVGhpcyBpcyBsb2NhdGVkIGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBgaXdsd2lmaWAgZHJpdmVyLiBUaGlzIHBhcnRpY3VsYXIgY29kZSBpcyByZWFjaGFibGUgdmlhIHR3byByb3V0ZXMsIGVpdGhlciB0aGUgZHJpdmVyJiMzOTtzIGZpcm13YXJlIGxvYWRpbmcgZnVuY3Rpb24gb3IgdGhlIFVFRkkgdmFyaWFibGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVdMV0lGSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF9wbnZtX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX3Budm1fcGFyc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgUE5WTSBTS1UgVExWcyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGZpcm13YXJlIGxvYWRpbmcgb3IgVUVGSSB2YXJpYWJsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTowNi40MzYwNDE4NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDQxMDQyNzgwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXdsX3Budm1fcGFyc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBQTlZNIFNLVSBUTFZzIGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgZmlybXdhcmUgbG9hZGluZyBvciBVRUZJIHZhcmlhYmxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTE6MDYuNDM2MDQ3MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MjAwODU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ0NWY5ODIzY2VmODFkNDA0NmIwMjRkNjNiYmE1NmFhZjc3MzQ4YzFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTE6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xcbmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5mNjFlNjliYTkzM2JjNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXFxuQEAgLTE5OCw2ICsxOTgsMTIgQEAgc3RhdGljIGludCBpd2xfcG52bV9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXFxuIFxcdFxcdFxcdElXTF9ERUJVR19GVyh0cmFucyxcXG4gXFx0XFx0XFx0XFx0ICAgICBcXFwiR290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgIHRsdl9sZW4pO1xcbitcXHRcXHRcXHRpZiAodGx2X2xlbiBcXHUwMDNjIDMgKiBzaXplb2YoX19sZTMyKSkge1xcbitcXHRcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0dGx2X2xlbik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcbiBcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsIFxcXCJza3VfaWQgMHglMHggMHglMHggMHglMHhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVswXSksXFxuIFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVsxXSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjExOjA3LjAwOTA0MTU0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzODM3NDE5NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ0NWY5ODIzY2VmODFkNDA0NmIwMjRkNjNiYmE1NmFhZjc3MzQ4YzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwOToxMTowNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcbmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5mNjFlNjliYTkzM2JjNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xuQEAgLTE5OCw2ICsxOTgsMTIgQEAgc3RhdGljIGludCBpd2xfcG52bV9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuIFx0XHRcdFx0ICAgICBcIkdvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwiLFxuIFx0XHRcdFx0ICAgICB0bHZfbGVuKTtcbitcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XG4rXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcbitcdFx0XHRcdFx0dGx2X2xlbik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcblwiLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTE6MDcuMDA5MDQzODgzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzODE5NjY2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIEludGVsIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jYCB0aGF0IGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2sgZm9yIGBJV0xfVUNPREVfVExWX1BOVk1fU0tVYCB3aXRoaW4gdGhlIGBpd2xfcG52bV9wYXJzZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGJlIGZ1enppbmc/IExldCdzIGRpdmUgaW50byBgaXdsX3Budm1fcGFyc2VgIGRpcmVjdGx5IGFuZCBkZXRlcm1pbmUgaXRzIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGZ1enppbmcgdmFsdWUuXG5cblRoZSBjb250ZXh0IGlzIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBzcGVjaWZpYyB0byBJbnRlbCB3aXJlbGVzcyBjYXJkcy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgcXVlc3Rpb25zIGFib3V0IGl0cyBhY2Nlc3NpYmlsaXR5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2UgaXTigJlzIGEgUENJIGRyaXZlciwgaXQgdHlwaWNhbGx5IHJlbGllcyBvbiB0aGUgcHJlc2VuY2Ugb2Ygc3BlY2lmaWMgUENJIGhhcmR3YXJlLiBDYW4gd2UgZ2V0IGFyb3VuZCB0aGF0IHNvbWVob3c/IEkga25vdyBgbWFjODAyMTFfaHdzaW1gIGlzIG9mdGVuIHVzZWQgZm9yIHNvZnR3YXJlLWVtdWxhdGVkIFdpLUZpLCBidXQgdGhpcyBpcyBhICpoYXJkd2FyZSogZHJpdmVyLCBzbyB0aGF0IHByb2JhYmx5IHdvbid0IHdvcmsuXG5cbkhvbGQgb24sIEkgc2VlbSB0byByZWNhbGwgU3l6a2FsbGVyIGhhcyBtZWNoYW5pc21zIGZvciBmdXp6aW5nIFBDSSBkZXZpY2VzLiBJc24ndCB0aGVyZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgIG9yIGEgc2ltaWxhciB0ZWNobmlxdWU/IE9yIGlzIGBpd2x3aWZpYCBzb21laG93IGV4Y2x1ZGVkIGZyb20gZnV6emluZz8gTGV0IG1lIGNoZWNrIGlmIGBpd2x3aWZpYCBpcyBhY3R1YWxseSBmdXp6ZWQuXG5cblJpZ2h0LCBgaXdsd2lmaWAgKmlzKiBhIFBDSSBkcml2ZXIsIHNvIFBDSSBmdXp6aW5nIChwb3RlbnRpYWxseSB2aWEgVkZJTyBvciBTeXprYWxsZXIncyBQQ0kgY2FwYWJpbGl0aWVzKSBpcyB0aGUgd2F5IHRvIGdvLiBZZXMsIFN5emthbGxlciAqZG9lcyogZnV6eiBQQ0kgZGV2aWNlcyFcblxuT2theSwgbmV3IGZvY3VzLiBOb3cgdGhlIG1vc3QgaW1wb3J0YW50IHF1ZXN0aW9uOiBJcyBgaXdsX3Budm1fcGFyc2VgIHJlYWNoYWJsZT8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMToxOS4zOTEwMTQyNjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2NzgxNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wbnZtX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2PXN0YXRpYyBpbnQgaXdsX3Budm1faGFuZGxlX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2OTpzdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzAtXFx0XFx0XFx0ICBzaXplX3QgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY2PWl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTI6XFx0cmV0ID0gaXdsX3Budm1fcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5My1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjExOjE5LjU2NzgwMTU2NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MjY4MDQ1OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKlRyYWNpbmcgdGhlIFBOVk0gUGFyc2luZyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBpd2xfcG52bV9wYXJzZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBwYXJzaW5nIHRoZSBQTlZNIGRhdGEuIEkga25vdyB0aGF0J3MgY2FsbGVkIGZyb20gYGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFuc2AuIE5vdywgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIHBvdGVudGlhbCBpc3N1ZXMsIEkgbmVlZCB0byBrbm93ICp3aGVyZSogYGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFuc2AgaXRzZWxmIGlzIGJlaW5nIGNhbGxlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IG9mICp0aGF0KiBmdW5jdGlvbiBpcyBrZXkgdG8gZGVidWdnaW5nIHRoaXMgYXJlYS4gTGV0IG1lIHRyYWNlIGJhY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoZXJlIHRoZSBkYXRhIGlzIGFjdHVhbGx5IGNvbWluZyBmcm9tIGFuZCBob3cgdGhlIFBOVk0gcGFyc2luZyBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJIHN1c3BlY3QgaXQgd2lsbCBzaGVkIGxpZ2h0IG9uIHdoYXQgZGF0YSBpcyBiZWluZyBwYXJzZWQsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMDcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTozOC44MzU4NDk0NzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMDgzNTY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzY2Oml3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNjctXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfZncgKmZ3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDYxPWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ3MzpcXHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ3NC1cXHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLCBza3VfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTo0MC4zNTY2ODkxODVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDUxNDUxOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBxdWVzdGlvbjpcblxuKipEZWVwIERpdmUgaW50byBgaXdsX3Budm1fbG9hZGAncyBPcmlnaW5zKipcblxuT2theSwgc28gYGl3bF9wbnZtX2xvYWRgLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGdldCBpbnZva2VkIGZyb20/IFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBkcml2ZXIgZnJhbWV3b3JrLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBpdHMgY2FsbCBwYXRoLiBJcyBpdCBjYWxsZWQgZnJvbSBhIG1haW4gaW5pdGlhbGl6YXRpb24gcm91dGluZSwgbGlrZSBgaXdsd2lmaV9wY2lfcHJvYmVgIG9yIG9uZSBvZiB0aGUgZGV2aWNlLXNwZWNpZmljIHByb2JlIGZ1bmN0aW9ucz8gT3IgaXMgaXQgdHJpZ2dlcmVkIGxhdGVyLCBtYXliZSBkdXJpbmcgYSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlPyBJcyBpdCBwYXJ0IG9mIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbml0aWFsaXphdGlvbiwgcGVyaGFwcz9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb250ZXh0IHRvIGVmZmVjdGl2ZWx5IGFuYWx5c2UgaXRzIGJlaGF2aW91ci4gS25vd2luZyB3aGVyZSBpdCBpcyBjYWxsZWQgZnJvbSB3aWxsIG9mZmVyIGluc2lnaHQgaW50byBob3cgdGhlIHByb2dyYW0gc3RhdGUgaXMgbGlrZWx5IHRvIGJlIHNldCwgaG93IGRlcGVuZGVuY2llcyBhbmQgYXNzdW1wdGlvbnMgd2lsbCBtYW5pZmVzdC4gSXQgY291bGQgcHJvdmlkZSBhIHF1aWNrIGFuc3dlciB0byB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTo0NC40MDgxNDM1MTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NjY1MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wbnZtX2xvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzY2Oml3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNjctXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfZncgKmZ3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDEyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDEzOml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQxNC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDYxOmludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Mi1cXHRcXHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ3MzpcXHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ3NDpcXHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ4Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDg3OklXTF9FWFBPUlRfU1lNQk9MKGl3bF9wbnZtX2xvYWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmgtMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmg6MTY6aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmgtMTctXFx0XFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmM9MjcyPXN0YXRpYyBpbnQgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZShzdHJ1Y3QgaXdsX21sZCAqbWxkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYy0yODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYzoyOTA6XFx0cmV0ID0gaXdsX3Budm1fbG9hZChtbGQtXFx1MDAzZXRyYW5zLCBcXHUwMDI2bWxkLVxcdTAwM2Vub3RpZl93YWl0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmMtMjkxLVxcdFxcdFxcdCAgICBtbGQtXFx1MDAzZWZ3LCBhbGl2ZV9kYXRhLnNrdV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jPTI4Nj1zdGF0aWMgaW50IGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jOjQwNzpcXHRyZXQgPSBpd2xfcG52bV9sb2FkKG12bS1cXHUwMDNldHJhbnMsIFxcdTAwMjZtdm0tXFx1MDAzZW5vdGlmX3dhaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy00MDgtXFx0XFx0XFx0ICAgIG12bS1cXHUwMDNlZncsIGFsaXZlX2RhdGEuc2t1X2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTE6NDQuODUyODEzNzYyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMzMTQ2MzEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIEZpcm13YXJlIExvYWRpbmcgRnV6emluZyoqXG5cbk9rYXksIHNvIGBpd2xfcG52bV9sb2FkYCBpcyBjZW50cmFsIHRvIHRoaXMgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIGxpa2UgaXQncyBhIGtleSBwYXJ0IG9mIHRoZSBwcm9jZXNzLCBjYWxsZWQgZHVyaW5nIGJvdGggYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCBhbmQgYGl3bF9tbGRfcnVuX2Z3X2luaXRfc2VxdWVuY2VgLiBUaGUgZmlybXdhcmUgaXRzZWxmIGlzIGZldGNoZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSB1c2luZyBgcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCB3YXkuXG5cbk5vdywgdGhlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyIGJlIGxldmVyYWdlZCB0byBmdXp6IHRoaXMgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIGZpcm13YXJlIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBtYXliZSB1c2luZyBzb21ldGhpbmcgbGlrZSBgc3l6X21vdW50X2ltYWdlYCwgb3IgcG90ZW50aWFsbHkgaW5qZWN0aW5nIGZhdWx0cyB0aHJvdWdoIGByZXF1ZXN0X2Zpcm13YXJlYC4gQnV0Li4uIGl0J3Mgbm90IGEgc3RyYWlnaHRmb3J3YXJkIFwibmF0aXZlXCIgZmlybXdhcmUgY29udGVudCBmdXp6ZXIsIHJpZ2h0PyBJdCB1c3VhbGx5IG5lZWRzIGEgc3BlY2lmaWMgc2V0dXAuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBgaXdsX3Budm1fbG9hZGAgaXMgc3BlY2lmaWNhbGx5IGxvYWRpbmcgUE5WTSBkYXRhLiBXaGVyZSBkb2VzIHRoZSBgZGF0YWAgYWN0dWFsbHkgY29tZSBmcm9tIHdoZW4gaXQncyBwYXNzZWQgdG8gYGl3bF9wbnZtX3BhcnNlYD8gVW5kZXJzdGFuZGluZyB0aGF0IGlzIHRoZSBjcml0aWNhbCBwb2ludCBpZiBJIHdhbnQgdG8gdGFyZ2V0IHRoaXMgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgxNiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTo1MS4xODQyNzkxOTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjcwNDI5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwbnZtX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY9c3RhdGljIGludCBpd2xfcG52bV9oYW5kbGVfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzctXFx0XFx0XFx0XFx0ICAgc2l6ZV90IGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozODpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NzpcXHRtZW1zZXQocG52bV9kYXRhLCAwLCBzaXplb2YoKnBudm1fZGF0YSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNzktXFx0XFx0XFx0XFx0ICAgICBzaGExKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo4MDpcXHRcXHRcXHRwbnZtX2RhdGEtXFx1MDAzZXZlcnNpb24gPSBzaGExO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTgxLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjExODpcXHRcXHRcXHRpZiAocG52bV9kYXRhLVxcdTAwM2VuX2NodW5rcyA9PSBJUENfRFJBTV9NQVBfRU5UUllfTlVNX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTExOS1cXHRcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTI3OlxcdFxcdFxcdHBudm1fZGF0YS1cXHUwMDNlY2h1bmtzW3Budm1fZGF0YS1cXHUwMDNlbl9jaHVua3NdLmRhdGEgPSBzZWN0aW9uLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEyODpcXHRcXHRcXHRwbnZtX2RhdGEtXFx1MDAzZWNodW5rc1twbnZtX2RhdGEtXFx1MDAzZW5fY2h1bmtzXS5sZW4gPSBkYXRhX2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMjk6XFx0XFx0XFx0cG52bV9kYXRhLVxcdTAwM2VuX2NodW5rcysrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzNC1cXHRcXHRcXHRpZiAoaXdsX3VlZmlfaGFuZGxlX3Rsdl9tZW1fZGVzYyh0cmFucywgZGF0YSwgdGx2X2xlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMzU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IHBudm1fZGF0YSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTM2LVxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2MTpcXHRpZiAoIXBudm1fZGF0YS1cXHUwMDNlbl9jaHVua3MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNjItXFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwiRW1wdHkgUE5WTSwgc2tpcHBpbmcuXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTE2OT1zdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzAtXFx0XFx0XFx0ICBzaXplX3QgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE3MTpcXHRcXHRcXHQgIHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE3Mi1cXHRcXHRcXHQgIF9fbGUzMiBza3VfaWRbM10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0yMzAtXFx0XFx0XFx0XFx0cmV0ID0gaXdsX3Budm1faGFuZGxlX3NlY3Rpb24odHJhbnMsIGRhdGEsIGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoyMzE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcG52bV9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0yMzItXFx0XFx0XFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zMTM9c3RhdGljIGNvbnN0IHU4ICppd2xfZ2V0X3Budm1faW1hZ2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnNfcCwgc2l6ZV90ICpsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzU2OlxcdGlmIChwbnZtX3NyYyA9PSBJV0xfUE5WTV9TT1VSQ0VfRU1CRURERUQgXFx1MDAyNlxcdTAwMjYgZnctXFx1MDAzZXBudm1fZGF0YSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM1Ny1cXHRcXHQqbGVuID0gZnctXFx1MDAzZXBudm1fc2l6ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozNTg6XFx0XFx0cmV0dXJuIGZ3LVxcdTAwM2VwbnZtX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzU5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2Nj1pd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNjkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM3MDpcXHRzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzcxLVxcdGNvbnN0IHU4ICpkYXRhID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozODg6XFx0cG52bV9kYXRhID0ga3phbGxvY19vYmooKnBudm1fZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6Mzg5OlxcdGlmICghcG52bV9kYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MC1cXHRcXHRnb3RvIGZyZWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM5MjpcXHRyZXQgPSBpd2xfcG52bV9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTg6XFx0cmV0ID0gaXdsX3RyYW5zX2xvYWRfcG52bSh0cmFucywgcG52bV9kYXRhLCBcXHUwMDI2ZnctXFx1MDAzZXVjb2RlX2NhcGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5OS1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwMC1cXHRcXHRnb3RvIGZyZWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDAxOlxcdElXTF9ERUJVR19JTkZPKHRyYW5zLCBcXFwibG9hZGVkIFBOVk0gdmVyc2lvbiAlMDh4XFxcXG5cXFwiLCBwbnZtX2RhdGEtXFx1MDAzZXZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwNi1cXHQvKiBmcmVlIG9ubHkgaWYgaXQgd2FzIGFsbG9jYXRlZCwgaS5lLiBub3QganVzdCBlbWJlZGRlZCBQTlZNIGRhdGEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MDc6XFx0aWYgKGRhdGEgIT0gZnctXFx1MDAzZXBudm1fZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXFx0XFx0a3ZmcmVlKGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwOTpcXHRrZnJlZShwbnZtX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQxMC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MTM9aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQxNzpcXHRzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDE4LVxcdHU4ICpkYXRhID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MzQ6XFx0cG52bV9kYXRhID0ga3phbGxvY19vYmooKnBudm1fZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDM1OlxcdGlmICghcG52bV9kYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzNi1cXHRcXHRnb3RvIGZyZWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzODpcXHRyZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzOS1cXHRcXHRcXHRcXHRcXHQgIHNrdV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDQ1OlxcdHJldCA9IGl3bF90cmFuc19sb2FkX3JlZHVjZV9wb3dlcih0cmFucywgcG52bV9kYXRhLCBjYXBhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NDYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU3LVxcdGtmcmVlKGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ1ODpcXHRrZnJlZShwbnZtX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ1OS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjExOjUxLjY1MDk4ODc1MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTAyOTMxMjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIFZ1bG5lcmFiaWxpdHkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSByZWNvZ25pemUgdGhlIGNvbnRleHQuIFRoaXMgZGF0YSBpcyBjb21pbmcgZnJvbSBgaXdsX2dldF9wbnZtX2ltYWdlYCwgd2hpY2ggbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGZpcm13YXJl4oCUaXQncyBsb2FkZWQgZWl0aGVyIGRpcmVjdGx5IGZyb20gZmlybXdhcmUgZmlsZXMgb3IgdGhyb3VnaCBVRUZJLiBUaGUgc3RhbmRhcmQgd2F5IHRvIGxvYWQgdGhlc2UgZmlsZXMsIGFzIEkgcmVjYWxsLCBpcyB2aWEgYGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuYC4gSSdtIHRoaW5raW5nLCBcIldhaXQsIGhvdyBkaWQgdGhpcyBjb21lIHVwP1wiIFN5emthbGxlciAqY291bGQqIGZ1enogZmlybXdhcmUgZmlsZXMsIHBvdGVudGlhbGx5IHVzaW5nIGBzeXpfbW91bnRfaW1hZ2VgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbHRob3VnaCB0aGF0IHVzdWFsbHkgaGFwcGVucyB3aGVuIGEgc3BlY2lmaWMgc2V0dXAgaXMgaW52b2x2ZWQuIElzIHRoZXJlIGEgYHN5el9maXJtd2FyZWAgc3lzY2FsbCB0aGF0IEknbSBmb3JnZXR0aW5nPyBPciBpcyBpdCBzb21ldGhpbmcgZWxzZT9cblxuQWgsIHJpZ2h0ISBUaGUga2V5IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBjb21pbmcgZnJvbSBgc3l6LWNsdXN0ZXJgLiBUaGF0IG1lYW5zIFN5emthbGxlciwgaXRzZWxmLCBmb3VuZCB0aGlzIGJ1Zy4gVGhpcyBpcyBncmVhdCwgYmVjYXVzZSBpdCBtZWFucyB3ZSBoYXZlIGEgdGVzdCBjYXNlIHRvIHdvcmsgZnJvbS5cblxuTm93LCB0aGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2s6XG5cbmBgYGNcbitcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XG4rXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcbitcdFx0XHRcdFx0dGx2X2xlbik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG5gYGBcblxuVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBjaGFuZ2UuIEl0J3MgZXNzZW50aWFsbHkgYSBib3VuZHMgY2hlY2ssIHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyB0aGUgcGFyc2luZyBvZiB0aGUgYElXTF9VQ09ERV9UTFZfUE5WTV9TS1VgIGRhdGEuIFNpbmNlIFN5emthbGxlciBmb3VuZCBpdCwgd2UgY2FuIGJlIGNvbmZpZGVudCB0aGlzIGJ1ZyBpcyByZWFjaGFibGUgYW5kIGl0IGlzIGZ1enplZCBieSBTeXprYWxsZXIuIFRoaXMgYWxzbyBtYWtlcyBtZSB3YW50IHRvIHN0YXJ0IHRoaW5raW5nIGFib3V0IGNvbmZpZyBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbnN1cmUgdGhlIG5lY2Vzc2FyeSBkcml2ZXJzIGFuZCBtb2R1bGVzIGFyZSBlbmFibGVkIGZvciB0aGlzIGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkyNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTo1OS43NTM5MjE1NzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5OTE2ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wbnZtX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2PXN0YXRpYyBpbnQgaXdsX3Budm1faGFuZGxlX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2OTpzdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzAtXFx0XFx0XFx0ICBzaXplX3QgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY2PWl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTI6XFx0cmV0ID0gaXdsX3Budm1fcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5My1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjExOjU5Ljg1Mzg0MjYxMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM3NzU2NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gdGhlIGBpd2x3aWZpYCBLY29uZmlnKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBpd2x3aWZpYCBkcml2ZXIuIFRoaXMgbGlrZWx5IGNvbnRhaW5zIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgd2lyZWxlc3MgbW9kdWxlIHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBLY29uZmlnIGFyY2hpdGVjdHVyZSwgSSdsbCBhcHByb2FjaCB0aGlzIHN5c3RlbWF0aWNhbGx5LlxuXG5GaXJzdCwgSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBjb21tb24gbG9jYXRpb25zIHdoZXJlIHRoZXNlIEtjb25maWcgZmlsZXMgcmVzaWRlLiBUeXBpY2FsbHksIHRoZXkncmUgbmVzdGxlZCB3aXRoaW4gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgb2YgdGhlIGRyaXZlciBpdHNlbGYuIFNpbmNlIGBpd2x3aWZpYCBkZWFscyB3aXRoIEludGVsIHdpcmVsZXNzLCB0aGUgcGF0aCBpcyBwcm9iYWJseSBzb21ld2hlcmUgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvYCwgb3IgYXQgbGVhc3Qgd2l0aGluIHRoZSBnZW5lcmFsIHdpcmVsZXNzIG5ldHdvcmsgc3RydWN0dXJlLiBUaGUgYmVzdCB3YXkgdG8gYmUgc3VyZSBpcyB0byBzZWFyY2guXG5cbkknbGwgcHJvYmFibHkgZW5kIHVwIHVzaW5nIGBmaW5kYCB3aXRoIHNvbWUganVkaWNpb3VzIHNlYXJjaCBwYXJhbWV0ZXJzLCBvciBtYXliZSBhIG1vcmUgdGFyZ2V0ZWQgYGdyZXBgIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGl0c2VsZiwgdG8gbG9vayBmb3IgYSBmaWxlIG5hbWVkIHNvbWV0aGluZyBsaWtlIGBLY29uZmlnYCwgYEtjb25maWcuaXdsd2lmaWAsIG9yIGV2ZW4gYENvbmZpZy5pd2x3aWZpYCwgdGhhdCBpcyByZWxhdGVkIHRvIGl3bHdpZmkuIFRoaXMgdXN1YWxseSByZXZlYWxzIHRoZSBjb3JyZWN0IGZpbGUgcXVpY2tseS5cblxuT25jZSBJJ3ZlIGdvdCBhIGxpa2VseSBjYW5kaWRhdGUsIEkgY2FuIGNvbmZpcm0gaXQncyB0aGUgY29ycmVjdCBmaWxlIGJ5IGxvb2tpbmcgYXQgaXRzIGNvbnRlbnQuIEl0IHNob3VsZCBjb250YWluIHZhcmlvdXMgYGNvbmZpZ2Agc3ltYm9scywgYWxvbmcgd2l0aCBkZXNjcmlwdGlvbnMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgZGVwZW5kZW5jaWVzIHNwZWNpZmljIHRvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBpdHMgZmVhdHVyZXMsIGFuZCBwb3NzaWJseSBoYXJkd2FyZSBzdXBwb3J0LiBUaGF0J3MgdGhlIGtleTogbG9vayBmb3IgdGhlIGRlZmluaXRpb25zLCBib29sZWFuLCBzdHJpbmcsIG9yIHRyaXN0YXRlIHNldHRpbmdzLiBUaG9zZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIEknbSBhZnRlci4gQW5kIGFmdGVyIHRoYXQsIEkgY2FuIG1vdmUgb24gdG8gdGhlIG5leHQgdGFzay5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjA0LjU5MTYwMTcyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MzQ2MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1ODpjb25maWcgSVdMV0lGSV9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTQtIyBkb24ndCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5NTpjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXFxcIkRlYnVnZ2luZyBPcHRpb25zXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwiRW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVxcdGJvb2wgXFxcIml3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjowNS4wNTY5NTI0MjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzczODU5MTQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQTlZNIFBvdGVudGlhbCoqXG5cbkFscmlnaHQsIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gd2UncmUgZGVhbGluZyB3aXRoIGlzIGBJV0xXSUZJYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IHByb2JlIGRlZXBlci4gV2hpbGUgYElXTFdJRklgIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgSW50ZWwgd2lyZWxlc3MsIG15IGV4cGVyaWVuY2Ugc2NyZWFtcyB0aGUgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgY29uZmlndXJhdGlvbiBoYXMgYW55IGltcGxpY2l0IG9yIGV4cGxpY2l0IGludGVyYWN0aW9ucyB3aXRoIFBOVk0gKFBoYXNlLUNoYW5nZSBOb24tVm9sYXRpbGUgTWVtb3J5KS4gSXMgdGhlcmUgYW55IHNwZWNpZmljIG9yIGltcGxpZWQgc3VwcG9ydCBlbWJlZGRlZCB3aXRoaW4gdGhlIGBJV0xXSUZJYCBpbXBsZW1lbnRhdGlvbiBmb3IgUE5WTT8gSeKAmW0gdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIG9wdGltaXphdGlvbnMsIG9yIGV2ZW4gcG90ZW50aWFsIGxpbWl0YXRpb25zLCB0aGF0IHdvdWxkIGJlIGRpcmVjdGx5IGFwcGxpY2FibGUuIFVuZGVyc3RhbmRpbmcgYW55IGRlcGVuZGVuY2llcyBoZXJlIGlzIGNydWNpYWwgZm9yIGFzc2Vzc2luZyBpdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHdpdGggUE5WTS4gQW55IHNwZWNpZmljIFBOVk0tb3JpZW50ZWQgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBiZSBoaWRkZW4gb3IgdGhhdCBjb3VsZCBpbmZsdWVuY2UgaXQ/IEl0IHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIHNlZSBpZiBhbnkgZHJpdmVycyBvciBtb2R1bGVzIHdpdGhpbiBgSVdMV0lGSWAgYXJlIHdyaXR0ZW4gaW4gYSB3YXkgdGhhdCB3b3VsZCBiZSBpbW1lZGlhdGVseSBiZW5lZmljaWFsLCBvciByZXF1aXJlIGZ1cnRoZXIgbW9kaWZpY2F0aW9uLCB0byBoYXJuZXNzIHRoZSBwb3RlbnRpYWwgZ2FpbnMgZnJvbSBQTlZNLWJhc2VkIHN0b3JhZ2UuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBsb29rIGludG8gdGhlIHNwZWNpZmljczsgaXQgbWlnaHQgc2VlbSB1bmxpa2VseSwgYnV0IGl0IGlzIGltcG9ydGFudCB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMzQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjowOC43OTU1NDY1NTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1Njk0NTMxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwbnZtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MDguODgxMjQ5MzUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1ODg3NDgyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGl3bHdpZmlgIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlcmUncyBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG1lbnRpb25lZCBmb3IgUE5WTSAoUGVyc2lzdGVudCBOb24tVm9sYXRpbGUgTWVtb3J5KSBpbiB0aGUgY29udGV4dCBvZiB0aGlzLiBXYWl0IGEgbWludXRlLCBgaXdsd2lmaWAgaXMgYSBQQ0kgZHJpdmVyLCByaWdodD8gSG1tLCBjb3VsZCBzeXprYWxsZXIgYmUgZnV6emluZyBpdCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWA/IE5vLCBubywgdGhhdCdzIG5vdCByaWdodC4gYG1hYzgwMjExX2h3c2ltYCBpcyBzb2Z0d2FyZSwgYSBzaW11bGF0b3IgZm9yIG1hYzgwMjExLCBub3Qgc3BlY2lmaWNhbGx5IGZvciBgaXdsd2lmaWAuXG5cbkFscmlnaHQsIGJhY2sgdG8gdGhlIGJhc2ljcy4gU3l6a2FsbGVyIHByb2JhYmx5IGhpdHMgYGl3bHdpZmlgIHRocm91Z2ggUENJIGZ1enppbmcsIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciwgb3IgcG90ZW50aWFsbHkgVVNCIGZ1enppbmcgaWYgaXQgcHJlc2VudGVkIGFzIHN1Y2guIEJ1dCwgYXMgSSBqdXN0IGNvbmZpcm1lZCwgaXQncyBQQ0kuIFRoZW4sIEkgcmVtZW1iZXJlZCBTeXprYWxsZXIncyBmaXJtd2FyZSBsb2FkaW5nIGNhcGFiaWxpdGllcy5cblxuSXMgYGl3bHdpZmlgIGFjdHVhbGx5IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gWWVzLCB0aGVyZSdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhpcyBkcml2ZXIsIGFuZCBTeXprYWxsZXIgZm91bmQgdGhlIGJ1Zy4gU28sIGluIHRoZW9yeSwgaXQncyByZWFjaGFibGUgd2l0aGluIFN5emthbGxlcidzIGVudmlyb25tZW50LiBCdXQsIHdhaXQsIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IHByb21wdCdzIGxpbWl0YXRpb25zLiBJdCBzYXlzIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gU28sIHRoZSBrZXkgaXMgd2hldGhlciBvciBub3QgYGl3bHdpZmlgIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cbkx1Y2tpbHksIFN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyLCB3aGljaCBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcy4gSSd2ZSBnb3QgdG8gY2hlY2sgaWYgYGl3bHdpZmlgIGlzIHN1cHBvcnRlZCBieSB0aGF0IGZ1enplci4gSXQncyBmdXp6aW5nIFBDSSBkZXZpY2VzLCBhbmQgYGl3bHdpZmlgIGlzIG9uZSBvZiB0aGUgZHJpdmVycyB0aGF0IGNhbiBiZSBwcm9iZWQgaWYgdGhlIFBDSSBJRCBtYXRjaGVzLlxuXG5TbywgdGhlIGFuc3dlciBpcyB5ZXMsIGl0IGlzIHJlYWNoYWJsZS4gT2theSwgbm93IGxldCdzIGZvY3VzIG9uIHRoZSBhY3R1YWwgZnVuY3Rpb24gY2hhbmdlLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGl3bF9wbnZtX3BhcnNlYC4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzQyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjE3LjQ3MDAwMDk2NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIyNjEyODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3Budm1fcGFyc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY9c3RhdGljIGludCBpd2xfcG52bV9oYW5kbGVfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTY5OnN0YXRpYyBpbnQgaXdsX3Budm1fcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE3MC1cXHRcXHRcXHQgIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNjY9aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM5MjpcXHRyZXQgPSBpd2xfcG52bV9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTcuNTYyMjY3NzY2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTQ5MTcwMDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoZWNraW5nIHRoZSBTY29wZSBvZiB0aGUgSVdMV0lGSSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCB0aGUga2V5IHRoaW5nIEknbSBsb29raW5nIGF0IHJpZ2h0IG5vdyBpcyBgaXdsX3Budm1fcGFyc2VgLiBUaGF0J3MgdGhlIGNvcmUgZm9jdXMuIE5vdywgdGhpcyBpcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBJV0xXSUZJYCBjb25maWd1cmF0aW9uLCBhbmQgdGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIG9uIHRoZSBzdXJmYWNlLiBCdXQsIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkgb3IgcmVsYXRlZC4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBBcmUgd2UgKmp1c3QqIGRlYWxpbmcgd2l0aCBgSVdMV0lGSWA/IENvdWxkIHRoZXJlIGJlLCBwZXJoYXBzLCBhIGBJV0xXSUZJX0JTU2AgdGhhdCdzIHNvbWVob3cgaW50ZXJ0d2luZWQgaGVyZT8gT3IgbWF5YmUgZXZlbiBhIGBJV0xXSUZJX01WTWA/IEl0J3MgZXNzZW50aWFsIHRoYXQgSSBlbGltaW5hdGUgdGhlIHBvc3NpYmlsaXR5IG9mIGludGVyYWN0aW9uIHdpdGggdGhlc2UgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBjb2RlIHBhdGhzIGJlZm9yZSBwcm9jZWVkaW5nLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTUzNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjMwLjExMTQ0MDIwOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MDQzNDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBudm0ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM0PWl3bHdpZmktb2Jqc1xcdFxcdCs9IGZ3L2ltZy5vIGZ3L25vdGlmLXdhaXQubyBmdy9ycy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozNTppd2x3aWZpLW9ianNcXHRcXHQrPSBmdy9kYmcubyBmdy9kYmctb2xkLm8gZncvcG52bS5vIGZ3L2R1bXAub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMzYtaXdsd2lmaS1vYmpzXFx0XFx0Kz0gZncvcmVndWxhdG9yeS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjMwLjU1NTQ5MTIyNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTgxNTA3MjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIGBpd2x3aWZpYCBNb2R1bGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRocm91Z2ggaXRzIGltcGxpY2F0aW9ucy4gVGhlIG9iamVjdGl2ZSBoZXJlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYHBudm0ub2AgaXMgcGFydCBvZiB0aGUgYGl3bHdpZmktb2Jqc2AsIHdoaWNoIGl0c2VsZiBvbmx5IGdldHMgYnVpbHQgd2hlbiBgQ09ORklHX0lXTFdJRklgIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUsIGBJV0xXSUZJYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWcgdG8gZm9jdXMgb24uXG5cbkxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaCBhZ2Fpbi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiB0aGUgYGl3bF9wbnZtX3BhcnNlYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBhIGxlbmd0aCBjaGVjayBoYXMgYmVlbiBpbnRyb2R1Y2VkLiAgVGhlIGNvZGUgbm93IGNoZWNrcyBpZiB0aGUgVExWIGxlbmd0aCAoYHRsdl9sZW5gKSBpcyBsZXNzIHRoYW4gYDMgKiBzaXplb2YoX19sZTMyKWAuIFRoZSBpbnRlbnRpb24gaXMgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBhY2Nlc3NpbmcgdGhlIGVsZW1lbnRzIGB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF1gLCBgZGF0YVsxXWAsIGFuZCBgZGF0YVsyXWAuIFRoaXMgbWVhbnMgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFpbWluZyBmb3Igcm9idXN0bmVzczsgZ29vZCB0byBzZWUuXG5cblNpbmNlIHRoaXMgcGF0Y2ggbW9kaWZpZXMgb25seSBgaXdsX3Budm1fcGFyc2VgLCBpdCBzdGFuZHMgb3V0LiAgV2Ugc2hvdWxkIGluY2x1ZGUgdGhpcyBmdW5jdGlvbiB3aXRoaW4gYEZvY3VzU3ltYm9sc2AuIExldCdzIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHJlbGV2YW50IGZ1bmN0aW9uIHRoYXQgbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBJdCBzZWVtcyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFuc2AuXG5cblNvLCB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGF0IGBJV0xXSUZJYCBpcyB0aGUgY3JpdGljYWwgY29uZmlnIHRvIHRyYWNrLiBXZSBuZWVkIHRvIGNoZWNrIHRvIGJlIGNlcnRhaW4gdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncy4gQSBxdWljayBjaGVjayBvZiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZWAgc2hvdWxkIGNvbmZpcm0gdGhpcywgYnV0IEknbSByZWFzb25hYmx5IGNvbmZpZGVudCBpbiB0aGlzIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk1NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjozNy43MzcwMDA1ODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODk0MjEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yLSMgY29tbW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19JV0xXSUZJKVxcdCs9IGl3bHdpZmkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNC1pd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtaW8ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT00Nz1jY2ZsYWdzLXkgKz0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX0lXTERWTSlcXHQrPSBkdm0vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfSVdMTVZNKVxcdCs9IG12bS9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19JV0xNRUkpXFx0Kz0gbWVpL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX0lXTE1MRClcXHQrPSBtbGQvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSArPSB0ZXN0cy9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTU1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjozNy44NDU5NDc2MTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4Njg2ODQ4NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBpd2x3aWZpYCBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290LiBUaGUgcmVsZXZhbnQgb2JqZWN0IGZpbGUsIGBpd2x3aWZpLm9gLCBpcyBidWlsdCB3aXRoIHRoZSBgQ09ORklHX0lXTFdJRklgIGZsYWcgZW5hYmxlZCwgd2hpY2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhpcyBjb25maXJtcyB0aGF0IGBJV0xXSUZJYCBpcyBhIHN1ZmZpY2llbnQgY29uZmlndXJhdGlvbiB0byBmb2N1cyBvbi5cblxuU28sIGxldCBtZSBzdW1tYXJpemUgdGhlIGZpbmRpbmdzIGNvbmNpc2VseTogVGhpcyBpcyB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgcGF0Y2gsIGZvY3VzaW5nIGluIHBhcnRpY3VsYXIgb24gdGhlIGBpd2xfcG52bV9wYXJzZWAgc3ltYm9sLiBUaGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBpcyBzaW1wbHkgYElXTFdJRklgLlxuXG5UaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzIHNvbGlkLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNydWNpYWwgbGVuZ3RoIGNoZWNrIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIFRoaXMgaXMgbG9jYXRlZCBpbiB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBvZiB0aGUgYGl3bHdpZmlgIGRyaXZlci4gVGhpcyBwYXJ0aWN1bGFyIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0d28gcm91dGVzLCBlaXRoZXIgdGhlIGRyaXZlcidzIGZpcm13YXJlIGxvYWRpbmcgZnVuY3Rpb24gb3IgdGhlIFVFRkkgdmFyaWFibGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzE0NywiT3V0cHV0VG9rZW5zIjo5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjo1MC43MTQ2MzUxNjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE4MjIyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 08:50:00 +0000 UTC FinishedAt: 2026-06-30 09:12:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI" ], "series_id": "c266f2b3-f8fb-4437-9109-e77917eee1ee" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_pnvm_parse" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfcG52bV9wYXJzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBQTlZNIFNLVSBUTFZzIGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgZmlybXdhcmUgbG9hZGluZyBvciBVRUZJIHZhcmlhYmxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ0NWY5ODIzY2VmODFkNDA0NmIwMjRkNjNiYmE1NmFhZjc3MzQ4YzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwOToxMTowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXG5pbmRleCBhZmZmOGQ1MWNhOTUwYy4uZjYxZTY5YmE5MzNiYzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcbkBAIC0xOTgsNiAmIzQzOzE5OCwxMiBAQCBzdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbiBcdFx0XHRJV0xfREVCVUdfRlcodHJhbnMsXG4gXHRcdFx0XHQgICAgIFwmIzM0O0dvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwmIzM0OyxcbiBcdFx0XHRcdCAgICAgdGx2X2xlbik7XG4mIzQzO1x0XHRcdGlmICh0bHZfbGVuIFx1MDAzYyAzICogc2l6ZW9mKF9fbGUzMikpIHtcbiYjNDM7XHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcJiMzNDtpbnZhbGlkIFBOVk0gU0tVIFRMViBsZW46ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0dGx2X2xlbik7XG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVswXSksXG4gXHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsxXSksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVdMV0lGSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF9wbnZtX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NDVmOTgyM2NlZjgxZDQwNDZiMDI0ZDYzYmJhNTZhYWY3NzM0OGMxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTE6MDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jCmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5mNjFlNjliYTkzM2JjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMKQEAgLTE5OCw2ICYjNDM7MTk4LDEyIEBAIHN0YXRpYyBpbnQgaXdsX3Budm1fcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLAogCQkJSVdMX0RFQlVHX0ZXKHRyYW5zLAogCQkJCSAgICAgJiMzNDtHb3QgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSBsZW4gJWRcbiYjMzQ7LAogCQkJCSAgICAgdGx2X2xlbik7CiYjNDM7CQkJaWYgKHRsdl9sZW4gJmx0OyAzICogc2l6ZW9mKF9fbGUzMikpIHsKJiM0MzsJCQkJSVdMX0VSUih0cmFucywgJiMzNDtpbnZhbGlkIFBOVk0gU0tVIFRMViBsZW46ICV1XG4mIzM0OywKJiM0MzsJCQkJCXRsdl9sZW4pOwomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiYjNDM7CiAJCQlJV0xfREVCVUdfRlcodHJhbnMsICYjMzQ7c2t1X2lkIDB4JTB4IDB4JTB4IDB4JTB4XG4mIzM0OywKIAkJCQkgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtJmd0O2RhdGFbMF0pLAogCQkJCSAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC0mZ3Q7ZGF0YVsxXSksCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIEludGVsIFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNgIHRoYXQgaW50cm9kdWNlcyBhIGxlbmd0aCBjaGVjayBmb3IgYElXTF9VQ09ERV9UTFZfUE5WTV9TS1VgIHdpdGhpbiB0aGUgYGl3bF9wbnZtX3BhcnNlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZnV6emluZz8gTGV0JiMzOTtzIGRpdmUgaW50byBgaXdsX3Budm1fcGFyc2VgIGRpcmVjdGx5IGFuZCBkZXRlcm1pbmUgaXRzIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGZ1enppbmcgdmFsdWUuCgpUaGUgY29udGV4dCBpcyB0aGUgYGl3bHdpZmlgIGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gSW50ZWwgd2lyZWxlc3MgY2FyZHMuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIHF1ZXN0aW9ucyBhYm91dCBpdHMgYWNjZXNzaWJpbGl0eSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBCZWNhdXNlIGl04oCZcyBhIFBDSSBkcml2ZXIsIGl0IHR5cGljYWxseSByZWxpZXMgb24gdGhlIHByZXNlbmNlIG9mIHNwZWNpZmljIFBDSSBoYXJkd2FyZS4gQ2FuIHdlIGdldCBhcm91bmQgdGhhdCBzb21laG93PyBJIGtub3cgYG1hYzgwMjExX2h3c2ltYCBpcyBvZnRlbiB1c2VkIGZvciBzb2Z0d2FyZS1lbXVsYXRlZCBXaS1GaSwgYnV0IHRoaXMgaXMgYSAqaGFyZHdhcmUqIGRyaXZlciwgc28gdGhhdCBwcm9iYWJseSB3b24mIzM5O3Qgd29yay4KCkhvbGQgb24sIEkgc2VlbSB0byByZWNhbGwgU3l6a2FsbGVyIGhhcyBtZWNoYW5pc21zIGZvciBmdXp6aW5nIFBDSSBkZXZpY2VzLiBJc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlYCBvciBhIHNpbWlsYXIgdGVjaG5pcXVlPyBPciBpcyBgaXdsd2lmaWAgc29tZWhvdyBleGNsdWRlZCBmcm9tIGZ1enppbmc/IExldCBtZSBjaGVjayBpZiBgaXdsd2lmaWAgaXMgYWN0dWFsbHkgZnV6emVkLgoKUmlnaHQsIGBpd2x3aWZpYCAqaXMqIGEgUENJIGRyaXZlciwgc28gUENJIGZ1enppbmcgKHBvdGVudGlhbGx5IHZpYSBWRklPIG9yIFN5emthbGxlciYjMzk7cyBQQ0kgY2FwYWJpbGl0aWVzKSBpcyB0aGUgd2F5IHRvIGdvLiBZZXMsIFN5emthbGxlciAqZG9lcyogZnV6eiBQQ0kgZGV2aWNlcyEKCk9rYXksIG5ldyBmb2N1cy4gTm93IHRoZSBtb3N0IGltcG9ydGFudCBxdWVzdGlvbjogSXMgYGl3bF9wbnZtX3BhcnNlYCByZWFjaGFibGU/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dCBmaXJzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcG52bV9wYXJzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2PXN0YXRpYyBpbnQgaXdsX3Budm1faGFuZGxlX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2OTpzdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE3MC1cdFx0XHQgIHNpemVfdCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY2PWl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTI6XHRyZXQgPSBpd2xfcG52bV9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOTMtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgUE5WTSBQYXJzaW5nIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBpd2xfcG52bV9wYXJzZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBwYXJzaW5nIHRoZSBQTlZNIGRhdGEuIEkga25vdyB0aGF0JiMzOTtzIGNhbGxlZCBmcm9tIGBpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnNgLiBOb3csIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBwb3RlbnRpYWwgaXNzdWVzLCBJIG5lZWQgdG8ga25vdyAqd2hlcmUqIGBpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnNgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBvZiAqdGhhdCogZnVuY3Rpb24gaXMga2V5IHRvIGRlYnVnZ2luZyB0aGlzIGFyZWEuIExldCBtZSB0cmFjZSBiYWNrIHRoZSBjYWxsIGdyYXBoIHRvIHNlZSB3aGVyZSB0aGUgZGF0YSBpcyBhY3R1YWxseSBjb21pbmcgZnJvbSBhbmQgaG93IHRoZSBQTlZNIHBhcnNpbmcgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBzdXNwZWN0IGl0IHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0IGRhdGEgaXMgYmVpbmcgcGFyc2VkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2NT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzY2Oml3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM2Ny1cdFx0XHQgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDYxPWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ3MzpcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NzQtXHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTY4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBxdWVzdGlvbjoKCioqRGVlcCBEaXZlIGludG8gYGl3bF9wbnZtX2xvYWRgJiMzOTtzIE9yaWdpbnMqKgoKT2theSwgc28gYGl3bF9wbnZtX2xvYWRgLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGdldCBpbnZva2VkIGZyb20/IFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBkcml2ZXIgZnJhbWV3b3JrLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBpdHMgY2FsbCBwYXRoLiBJcyBpdCBjYWxsZWQgZnJvbSBhIG1haW4gaW5pdGlhbGl6YXRpb24gcm91dGluZSwgbGlrZSBgaXdsd2lmaV9wY2lfcHJvYmVgIG9yIG9uZSBvZiB0aGUgZGV2aWNlLXNwZWNpZmljIHByb2JlIGZ1bmN0aW9ucz8gT3IgaXMgaXQgdHJpZ2dlcmVkIGxhdGVyLCBtYXliZSBkdXJpbmcgYSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlPyBJcyBpdCBwYXJ0IG9mIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbml0aWFsaXphdGlvbiwgcGVyaGFwcz8KCkkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgY29udGV4dCB0byBlZmZlY3RpdmVseSBhbmFseXNlIGl0cyBiZWhhdmlvdXIuIEtub3dpbmcgd2hlcmUgaXQgaXMgY2FsbGVkIGZyb20gd2lsbCBvZmZlciBpbnNpZ2h0IGludG8gaG93IHRoZSBwcm9ncmFtIHN0YXRlIGlzIGxpa2VseSB0byBiZSBzZXQsIGhvdyBkZXBlbmRlbmNpZXMgYW5kIGFzc3VtcHRpb25zIHdpbGwgbWFuaWZlc3QuIEl0IGNvdWxkIHByb3ZpZGUgYSBxdWljayBhbnN3ZXIgdG8gd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX2xvYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNjU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM2Njppd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNjctXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfZncgKmZ3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQxMj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDEzOml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDE0LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ2MTppbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Mi1cdFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NzM6XHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDc0Olx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFx1MDAyNmZ3LVx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDg2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ4NzpJV0xfRVhQT1JUX1NZTUJPTChpd2xfcG52bV9sb2FkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaC0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oOjE2OmludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmgtMTctXHRcdCAgc3RydWN0IGl3bF9ub3RpZl93YWl0X2RhdGEgKm5vdGlmX3dhaXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYz0yNzI9c3RhdGljIGludCBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlKHN0cnVjdCBpd2xfbWxkICptbGQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYy0yODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jOjI5MDpcdHJldCA9IGl3bF9wbnZtX2xvYWQobWxkLVx1MDAzZXRyYW5zLCBcdTAwMjZtbGQtXHUwMDNlbm90aWZfd2FpdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmMtMjkxLVx0XHRcdCAgICBtbGQtXHUwMDNlZncsIGFsaXZlX2RhdGEuc2t1X2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jPTI4Nj1zdGF0aWMgaW50IGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jOjQwNzpcdHJldCA9IGl3bF9wbnZtX2xvYWQobXZtLVx1MDAzZXRyYW5zLCBcdTAwMjZtdm0tXHUwMDNlbm90aWZfd2FpdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtNDA4LVx0XHRcdCAgICBtdm0tXHUwMDNlZncsIGFsaXZlX2RhdGEuc2t1X2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODE2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gRmlybXdhcmUgTG9hZGluZyBGdXp6aW5nKioKCk9rYXksIHNvIGBpd2xfcG52bV9sb2FkYCBpcyBjZW50cmFsIHRvIHRoaXMgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBrZXkgcGFydCBvZiB0aGUgcHJvY2VzcywgY2FsbGVkIGR1cmluZyBib3RoIGBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZWAgYW5kIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYC4gVGhlIGZpcm13YXJlIGl0c2VsZiBpcyBmZXRjaGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gdXNpbmcgYHJlcXVlc3RfZmlybXdhcmVgLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgd2F5LgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgYmUgbGV2ZXJhZ2VkIHRvIGZ1enogdGhpcyBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3M/IEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgZmlybXdhcmUgZnV6emluZyBjYXBhYmlsaXRpZXMsIG1heWJlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfbW91bnRfaW1hZ2VgLCBvciBwb3RlbnRpYWxseSBpbmplY3RpbmcgZmF1bHRzIHRocm91Z2ggYHJlcXVlc3RfZmlybXdhcmVgLiBCdXQuLi4gaXQmIzM5O3Mgbm90IGEgc3RyYWlnaHRmb3J3YXJkICYjMzQ7bmF0aXZlJiMzNDsgZmlybXdhcmUgY29udGVudCBmdXp6ZXIsIHJpZ2h0PyBJdCB1c3VhbGx5IG5lZWRzIGEgc3BlY2lmaWMgc2V0dXAuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgYGl3bF9wbnZtX2xvYWRgIGlzIHNwZWNpZmljYWxseSBsb2FkaW5nIFBOVk0gZGF0YS4gV2hlcmUgZG9lcyB0aGUgYGRhdGFgIGFjdHVhbGx5IGNvbWUgZnJvbSB3aGVuIGl0JiMzOTtzIHBhc3NlZCB0byBgaXdsX3Budm1fcGFyc2VgPyBVbmRlcnN0YW5kaW5nIHRoYXQgaXMgdGhlIGNyaXRpY2FsIHBvaW50IGlmIEkgd2FudCB0byB0YXJnZXQgdGhpcyBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbnZtX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNj1zdGF0aWMgaW50IGl3bF9wbnZtX2hhbmRsZV9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM3LVx0XHRcdFx0ICAgc2l6ZV90IGxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM4Olx0XHRcdFx0ICAgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NzpcdG1lbXNldChwbnZtX2RhdGEsIDAsIHNpemVvZigqcG52bV9kYXRhKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy03OS1cdFx0XHRcdCAgICAgc2hhMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo4MDpcdFx0XHRwbnZtX2RhdGEtXHUwMDNldmVyc2lvbiA9IHNoYTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy04MS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMTg6XHRcdFx0aWYgKHBudm1fZGF0YS1cdTAwM2VuX2NodW5rcyA9PSBJUENfRFJBTV9NQVBfRU5UUllfTlVNX01BWCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTE5LVx0XHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEyNzpcdFx0XHRwbnZtX2RhdGEtXHUwMDNlY2h1bmtzW3Budm1fZGF0YS1cdTAwM2VuX2NodW5rc10uZGF0YSA9IHNlY3Rpb24tXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEyODpcdFx0XHRwbnZtX2RhdGEtXHUwMDNlY2h1bmtzW3Budm1fZGF0YS1cdTAwM2VuX2NodW5rc10ubGVuID0gZGF0YV9sZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMjk6XHRcdFx0cG52bV9kYXRhLVx1MDAzZW5fY2h1bmtzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xMzQtXHRcdFx0aWYgKGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2ModHJhbnMsIGRhdGEsIHRsdl9sZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMzU6XHRcdFx0XHRcdFx0XHQgcG52bV9kYXRhKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzNi1cdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2MTpcdGlmICghcG52bV9kYXRhLVx1MDAzZW5fY2h1bmtzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNjItXHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7RW1wdHkgUE5WTSwgc2tpcHBpbmcuXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0xNjk9c3RhdGljIGludCBpd2xfcG52bV9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzAtXHRcdFx0ICBzaXplX3QgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTcxOlx0XHRcdCAgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzItXHRcdFx0ICBfX2xlMzIgc2t1X2lkWzNdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTIzMC1cdFx0XHRcdHJldCA9IGl3bF9wbnZtX2hhbmRsZV9zZWN0aW9uKHRyYW5zLCBkYXRhLCBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoyMzE6XHRcdFx0XHRcdFx0XHQgICAgICBwbnZtX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMjMyLVx0XHRcdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzEzPXN0YXRpYyBjb25zdCB1OCAqaXdsX2dldF9wbnZtX2ltYWdlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zX3AsIHNpemVfdCAqbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM1NjpcdGlmIChwbnZtX3NyYyA9PSBJV0xfUE5WTV9TT1VSQ0VfRU1CRURERUQgXHUwMDI2XHUwMDI2IGZ3LVx1MDAzZXBudm1fZGF0YSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzU3LVx0XHQqbGVuID0gZnctXHUwMDNlcG52bV9zaXplO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzU4Olx0XHRyZXR1cm4gZnctXHUwMDNlcG52bV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzU5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2Nj1pd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzY5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM3MDpcdHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM3MS1cdGNvbnN0IHU4ICpkYXRhID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozODg6XHRwbnZtX2RhdGEgPSBremFsbG9jX29iaigqcG52bV9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM4OTpcdGlmICghcG52bV9kYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkwLVx0XHRnb3RvIGZyZWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTI6XHRyZXQgPSBpd2xfcG52bV9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOTMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6Mzk4Olx0cmV0ID0gaXdsX3RyYW5zX2xvYWRfcG52bSh0cmFucywgcG52bV9kYXRhLCBcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5OS1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDAtXHRcdGdvdG8gZnJlZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwMTpcdElXTF9ERUJVR19JTkZPKHRyYW5zLCBcJiMzNDtsb2FkZWQgUE5WTSB2ZXJzaW9uICUwOHhcXG5cJiMzNDssIHBudm1fZGF0YS1cdTAwM2V2ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDYtXHQvKiBmcmVlIG9ubHkgaWYgaXQgd2FzIGFsbG9jYXRlZCwgaS5lLiBub3QganVzdCBlbWJlZGRlZCBQTlZNIGRhdGEgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzpcdGlmIChkYXRhICE9IGZ3LVx1MDAzZXBudm1fZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwOC1cdFx0a3ZmcmVlKGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDA5Olx0a2ZyZWUocG52bV9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQxMC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDEzPWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQxNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MTc6XHRzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MTgtXHR1OCAqZGF0YSA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDM0Olx0cG52bV9kYXRhID0ga3phbGxvY19vYmooKnBudm1fZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MzU6XHRpZiAoIXBudm1fZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzNi1cdFx0Z290byBmcmVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDM4Olx0cmV0ID0gaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHRyYW5zLCBkYXRhLCBsZW5ndGgsIHBudm1fZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzOS1cdFx0XHRcdFx0ICBza3VfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ0NTpcdHJldCA9IGl3bF90cmFuc19sb2FkX3JlZHVjZV9wb3dlcih0cmFucywgcG52bV9kYXRhLCBjYXBhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ0Ni1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTctXHRrZnJlZShkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ1ODpcdGtmcmVlKHBudm1fZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTktfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTI2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZpcm13YXJlIFZ1bG5lcmFiaWxpdHkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHJlY29nbml6ZSB0aGUgY29udGV4dC4gVGhpcyBkYXRhIGlzIGNvbWluZyBmcm9tIGBpd2xfZ2V0X3Budm1faW1hZ2VgLCB3aGljaCBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGZpcm13YXJl4oCUaXQmIzM5O3MgbG9hZGVkIGVpdGhlciBkaXJlY3RseSBmcm9tIGZpcm13YXJlIGZpbGVzIG9yIHRocm91Z2ggVUVGSS4gVGhlIHN0YW5kYXJkIHdheSB0byBsb2FkIHRoZXNlIGZpbGVzLCBhcyBJIHJlY2FsbCwgaXMgdmlhIGBmaXJtd2FyZV9yZXF1ZXN0X25vd2FybmAuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2FpdCwgaG93IGRpZCB0aGlzIGNvbWUgdXA/JiMzNDsgU3l6a2FsbGVyICpjb3VsZCogZnV6eiBmaXJtd2FyZSBmaWxlcywgcG90ZW50aWFsbHkgdXNpbmcgYHN5el9tb3VudF9pbWFnZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFsdGhvdWdoIHRoYXQgdXN1YWxseSBoYXBwZW5zIHdoZW4gYSBzcGVjaWZpYyBzZXR1cCBpcyBpbnZvbHZlZC4gSXMgdGhlcmUgYSBgc3l6X2Zpcm13YXJlYCBzeXNjYWxsIHRoYXQgSSYjMzk7bSBmb3JnZXR0aW5nPyBPciBpcyBpdCBzb21ldGhpbmcgZWxzZT8KCkFoLCByaWdodCEgVGhlIGtleSBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgY29taW5nIGZyb20gYHN5ei1jbHVzdGVyYC4gVGhhdCBtZWFucyBTeXprYWxsZXIsIGl0c2VsZiwgZm91bmQgdGhpcyBidWcuIFRoaXMgaXMgZ3JlYXQsIGJlY2F1c2UgaXQgbWVhbnMgd2UgaGF2ZSBhIHRlc3QgY2FzZSB0byB3b3JrIGZyb20uCgpOb3csIHRoZSBwYXRjaCBpdHNlbGYgaW50cm9kdWNlcyBhIGxlbmd0aCBjaGVjazoKCmBgYGMKJiM0MzsJCQlpZiAodGx2X2xlbiAmbHQ7IDMgKiBzaXplb2YoX19sZTMyKSkgewomIzQzOwkJCQlJV0xfRVJSKHRyYW5zLCAmIzM0O2ludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcbiYjMzQ7LAomIzQzOwkJCQkJdGx2X2xlbik7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KYGBgCgpUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGNoYW5nZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBib3VuZHMgY2hlY2ssIHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyB0aGUgcGFyc2luZyBvZiB0aGUgYElXTF9VQ09ERV9UTFZfUE5WTV9TS1VgIGRhdGEuIFNpbmNlIFN5emthbGxlciBmb3VuZCBpdCwgd2UgY2FuIGJlIGNvbmZpZGVudCB0aGlzIGJ1ZyBpcyByZWFjaGFibGUgYW5kIGl0IGlzIGZ1enplZCBieSBTeXprYWxsZXIuIFRoaXMgYWxzbyBtYWtlcyBtZSB3YW50IHRvIHN0YXJ0IHRoaW5raW5nIGFib3V0IGNvbmZpZyBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgZHJpdmVycyBhbmQgbW9kdWxlcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyBjb2RlIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY9c3RhdGljIGludCBpd2xfcG52bV9oYW5kbGVfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTY5OnN0YXRpYyBpbnQgaXdsX3Budm1fcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTcwLVx0XHRcdCAgc2l6ZV90IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNjY9aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM5MjpcdHJldCA9IGl3bF9wbnZtX3BhcnNlKHRyYW5zLCBkYXRhLCBsZW5ndGgsIHBudm1fZGF0YSwgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk2NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkh1bnRpbmcgRG93biB0aGUgYGl3bHdpZmlgIEtjb25maWcqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBpd2x3aWZpYCBkcml2ZXIuIFRoaXMgbGlrZWx5IGNvbnRhaW5zIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgd2lyZWxlc3MgbW9kdWxlIHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBLY29uZmlnIGFyY2hpdGVjdHVyZSwgSSYjMzk7bGwgYXBwcm9hY2ggdGhpcyBzeXN0ZW1hdGljYWxseS4KCkZpcnN0LCBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBjb21tb24gbG9jYXRpb25zIHdoZXJlIHRoZXNlIEtjb25maWcgZmlsZXMgcmVzaWRlLiBUeXBpY2FsbHksIHRoZXkmIzM5O3JlIG5lc3RsZWQgd2l0aGluIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIHRoZSBkcml2ZXIgaXRzZWxmLiBTaW5jZSBgaXdsd2lmaWAgZGVhbHMgd2l0aCBJbnRlbCB3aXJlbGVzcywgdGhlIHBhdGggaXMgcHJvYmFibHkgc29tZXdoZXJlIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2AsIG9yIGF0IGxlYXN0IHdpdGhpbiB0aGUgZ2VuZXJhbCB3aXJlbGVzcyBuZXR3b3JrIHN0cnVjdHVyZS4gVGhlIGJlc3Qgd2F5IHRvIGJlIHN1cmUgaXMgdG8gc2VhcmNoLgoKSSYjMzk7bGwgcHJvYmFibHkgZW5kIHVwIHVzaW5nIGBmaW5kYCB3aXRoIHNvbWUganVkaWNpb3VzIHNlYXJjaCBwYXJhbWV0ZXJzLCBvciBtYXliZSBhIG1vcmUgdGFyZ2V0ZWQgYGdyZXBgIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGl0c2VsZiwgdG8gbG9vayBmb3IgYSBmaWxlIG5hbWVkIHNvbWV0aGluZyBsaWtlIGBLY29uZmlnYCwgYEtjb25maWcuaXdsd2lmaWAsIG9yIGV2ZW4gYENvbmZpZy5pd2x3aWZpYCwgdGhhdCBpcyByZWxhdGVkIHRvIGl3bHdpZmkuIFRoaXMgdXN1YWxseSByZXZlYWxzIHRoZSBjb3JyZWN0IGZpbGUgcXVpY2tseS4KCk9uY2UgSSYjMzk7dmUgZ290IGEgbGlrZWx5IGNhbmRpZGF0ZSwgSSBjYW4gY29uZmlybSBpdCYjMzk7cyB0aGUgY29ycmVjdCBmaWxlIGJ5IGxvb2tpbmcgYXQgaXRzIGNvbnRlbnQuIEl0IHNob3VsZCBjb250YWluIHZhcmlvdXMgYGNvbmZpZ2Agc3ltYm9scywgYWxvbmcgd2l0aCBkZXNjcmlwdGlvbnMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgZGVwZW5kZW5jaWVzIHNwZWNpZmljIHRvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBpdHMgZmVhdHVyZXMsIGFuZCBwb3NzaWJseSBoYXJkd2FyZSBzdXBwb3J0LiBUaGF0JiMzOTtzIHRoZSBrZXk6IGxvb2sgZm9yIHRoZSBkZWZpbml0aW9ucywgYm9vbGVhbiwgc3RyaW5nLCBvciB0cmlzdGF0ZSBzZXR0aW5ncy4gVGhvc2UgYXJlIHRoZSBjb25maWd1cmF0aW9ucyBJJiMzOTttIGFmdGVyLiBBbmQgYWZ0ZXIgdGhhdCwgSSBjYW4gbW92ZSBvbiB0byB0aGUgbmV4dCB0YXNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJiMzOTt0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXCYjMzQ7RGVidWdnaW5nIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDM0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQTlZNIFBvdGVudGlhbCoqCgpBbHJpZ2h0LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaXMgYElXTFdJRklgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgcHJvYmUgZGVlcGVyLiBXaGlsZSBgSVdMV0lGSWAgaXMgcHJldHR5IHN0YW5kYXJkIGZvciBJbnRlbCB3aXJlbGVzcywgbXkgZXhwZXJpZW5jZSBzY3JlYW1zIHRoZSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBjb25maWd1cmF0aW9uIGhhcyBhbnkgaW1wbGljaXQgb3IgZXhwbGljaXQgaW50ZXJhY3Rpb25zIHdpdGggUE5WTSAoUGhhc2UtQ2hhbmdlIE5vbi1Wb2xhdGlsZSBNZW1vcnkpLiBJcyB0aGVyZSBhbnkgc3BlY2lmaWMgb3IgaW1wbGllZCBzdXBwb3J0IGVtYmVkZGVkIHdpdGhpbiB0aGUgYElXTFdJRklgIGltcGxlbWVudGF0aW9uIGZvciBQTlZNPyBJ4oCZbSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucywgb3IgZXZlbiBwb3RlbnRpYWwgbGltaXRhdGlvbnMsIHRoYXQgd291bGQgYmUgZGlyZWN0bHkgYXBwbGljYWJsZS4gVW5kZXJzdGFuZGluZyBhbnkgZGVwZW5kZW5jaWVzIGhlcmUgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgd2l0aCBQTlZNLiBBbnkgc3BlY2lmaWMgUE5WTS1vcmllbnRlZCBjb25maWcgb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIGhpZGRlbiBvciB0aGF0IGNvdWxkIGluZmx1ZW5jZSBpdD8gSXQgd291bGQgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIGlmIGFueSBkcml2ZXJzIG9yIG1vZHVsZXMgd2l0aGluIGBJV0xXSUZJYCBhcmUgd3JpdHRlbiBpbiBhIHdheSB0aGF0IHdvdWxkIGJlIGltbWVkaWF0ZWx5IGJlbmVmaWNpYWwsIG9yIHJlcXVpcmUgZnVydGhlciBtb2RpZmljYXRpb24sIHRvIGhhcm5lc3MgdGhlIHBvdGVudGlhbCBnYWlucyBmcm9tIFBOVk0tYmFzZWQgc3RvcmFnZS4gSSBpbW1lZGlhdGVseSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3BlY2lmaWNzOyBpdCBtaWdodCBzZWVtIHVubGlrZWx5LCBidXQgaXQgaXMgaW1wb3J0YW50IHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Budm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM0MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgaXdsd2lmaWAgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBtZW50aW9uZWQgZm9yIFBOVk0gKFBlcnNpc3RlbnQgTm9uLVZvbGF0aWxlIE1lbW9yeSkgaW4gdGhlIGNvbnRleHQgb2YgdGhpcy4gV2FpdCBhIG1pbnV0ZSwgYGl3bHdpZmlgIGlzIGEgUENJIGRyaXZlciwgcmlnaHQ/IEhtbSwgY291bGQgc3l6a2FsbGVyIGJlIGZ1enppbmcgaXQgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gPyBObywgbm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBgbWFjODAyMTFfaHdzaW1gIGlzIHNvZnR3YXJlLCBhIHNpbXVsYXRvciBmb3IgbWFjODAyMTEsIG5vdCBzcGVjaWZpY2FsbHkgZm9yIGBpd2x3aWZpYC4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIGJhc2ljcy4gU3l6a2FsbGVyIHByb2JhYmx5IGhpdHMgYGl3bHdpZmlgIHRocm91Z2ggUENJIGZ1enppbmcsIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciwgb3IgcG90ZW50aWFsbHkgVVNCIGZ1enppbmcgaWYgaXQgcHJlc2VudGVkIGFzIHN1Y2guIEJ1dCwgYXMgSSBqdXN0IGNvbmZpcm1lZCwgaXQmIzM5O3MgUENJLiBUaGVuLCBJIHJlbWVtYmVyZWQgU3l6a2FsbGVyJiMzOTtzIGZpcm13YXJlIGxvYWRpbmcgY2FwYWJpbGl0aWVzLgoKSXMgYGl3bHdpZmlgIGFjdHVhbGx5IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gWWVzLCB0aGVyZSYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoaXMgZHJpdmVyLCBhbmQgU3l6a2FsbGVyIGZvdW5kIHRoZSBidWcuIFNvLCBpbiB0aGVvcnksIGl0JiMzOTtzIHJlYWNoYWJsZSB3aXRoaW4gU3l6a2FsbGVyJiMzOTtzIGVudmlyb25tZW50LiBCdXQsIHdhaXQsIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IHByb21wdCYjMzk7cyBsaW1pdGF0aW9ucy4gSXQgc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFNvLCB0aGUga2V5IGlzIHdoZXRoZXIgb3Igbm90IGBpd2x3aWZpYCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKTHVja2lseSwgU3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJJiMzOTt2ZSBnb3QgdG8gY2hlY2sgaWYgYGl3bHdpZmlgIGlzIHN1cHBvcnRlZCBieSB0aGF0IGZ1enplci4gSXQmIzM5O3MgZnV6emluZyBQQ0kgZGV2aWNlcywgYW5kIGBpd2x3aWZpYCBpcyBvbmUgb2YgdGhlIGRyaXZlcnMgdGhhdCBjYW4gYmUgcHJvYmVkIGlmIHRoZSBQQ0kgSUQgbWF0Y2hlcy4KClNvLCB0aGUgYW5zd2VyIGlzIHllcywgaXQgaXMgcmVhY2hhYmxlLiBPa2F5LCBub3cgbGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBhY3R1YWwgZnVuY3Rpb24gY2hhbmdlLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGl3bF9wbnZtX3BhcnNlYC4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY9c3RhdGljIGludCBpd2xfcG52bV9oYW5kbGVfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTY5OnN0YXRpYyBpbnQgaXdsX3Budm1fcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTcwLVx0XHRcdCAgc2l6ZV90IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNjY9aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM5MjpcdHJldCA9IGl3bF9wbnZtX3BhcnNlKHRyYW5zLCBkYXRhLCBsZW5ndGgsIHBudm1fZGF0YSwgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1MzYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDaGVja2luZyB0aGUgU2NvcGUgb2YgdGhlIElXTFdJRkkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCB0aGUga2V5IHRoaW5nIEkmIzM5O20gbG9va2luZyBhdCByaWdodCBub3cgaXMgYGl3bF9wbnZtX3BhcnNlYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBmb2N1cy4gTm93LCB0aGlzIGlzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgYElXTFdJRklgIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggb24gdGhlIHN1cmZhY2UuIEJ1dCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5IG9yIHJlbGF0ZWQuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gQXJlIHdlICpqdXN0KiBkZWFsaW5nIHdpdGggYElXTFdJRklgPyBDb3VsZCB0aGVyZSBiZSwgcGVyaGFwcywgYSBgSVdMV0lGSV9CU1NgIHRoYXQmIzM5O3Mgc29tZWhvdyBpbnRlcnR3aW5lZCBoZXJlPyBPciBtYXliZSBldmVuIGEgYElXTFdJRklfTVZNYD8gSXQmIzM5O3MgZXNzZW50aWFsIHRoYXQgSSBlbGltaW5hdGUgdGhlIHBvc3NpYmlsaXR5IG9mIGludGVyYWN0aW9uIHdpdGggdGhlc2UgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBjb2RlIHBhdGhzIGJlZm9yZSBwcm9jZWVkaW5nLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbnZtLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM0PWl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gZncvaW1nLm8gZncvbm90aWYtd2FpdC5vIGZ3L3JzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MzU6aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBmdy9kYmcubyBmdy9kYmctb2xkLm8gZncvcG52bS5vIGZ3L2R1bXAub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0zNi1pd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGZ3L3JlZ3VsYXRvcnkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk1NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBgaXdsd2lmaWAgTW9kdWxlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRocm91Z2ggaXRzIGltcGxpY2F0aW9ucy4gVGhlIG9iamVjdGl2ZSBoZXJlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYHBudm0ub2AgaXMgcGFydCBvZiB0aGUgYGl3bHdpZmktb2Jqc2AsIHdoaWNoIGl0c2VsZiBvbmx5IGdldHMgYnVpbHQgd2hlbiBgQ09ORklHX0lXTFdJRklgIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUsIGBJV0xXSUZJYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWcgdG8gZm9jdXMgb24uCgpMZXQmIzM5O3MgZGlzc2VjdCB0aGlzIHBhdGNoIGFnYWluLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgd2l0aGluIHRoZSBgaXdsX3Budm1fcGFyc2VgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGEgbGVuZ3RoIGNoZWNrIGhhcyBiZWVuIGludHJvZHVjZWQuICBUaGUgY29kZSBub3cgY2hlY2tzIGlmIHRoZSBUTFYgbGVuZ3RoIChgdGx2X2xlbmApIGlzIGxlc3MgdGhhbiBgMyAqIHNpemVvZihfX2xlMzIpYC4gVGhlIGludGVudGlvbiBpcyB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIGFjY2Vzc2luZyB0aGUgZWxlbWVudHMgYHRsdl9za3VfaWQtJmd0O2RhdGFbMF1gLCBgZGF0YVsxXWAsIGFuZCBgZGF0YVsyXWAuIFRoaXMgbWVhbnMgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBhaW1pbmcgZm9yIHJvYnVzdG5lc3M7IGdvb2QgdG8gc2VlLgoKU2luY2UgdGhpcyBwYXRjaCBtb2RpZmllcyBvbmx5IGBpd2xfcG52bV9wYXJzZWAsIGl0IHN0YW5kcyBvdXQuICBXZSBzaG91bGQgaW5jbHVkZSB0aGlzIGZ1bmN0aW9uIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHJlbGV2YW50IGZ1bmN0aW9uIHRoYXQgbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBJdCBzZWVtcyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFuc2AuCgpTbywgd2UmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgYElXTFdJRklgIGlzIHRoZSBjcml0aWNhbCBjb25maWcgdG8gdHJhY2suIFdlIG5lZWQgdG8gY2hlY2sgdG8gYmUgY2VydGFpbiB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncy4gQSBxdWljayBjaGVjayBvZiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZWAgc2hvdWxkIGNvbmZpcm0gdGhpcywgYnV0IEkmIzM5O20gcmVhc29uYWJseSBjb25maWRlbnQgaW4gdGhpcyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yLSMgY29tbW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0lXTFdJRkkpXHQmIzQzOz0gaXdsd2lmaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQtaXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtaW8ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU9NDc9Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX0lXTERWTSlcdCYjNDM7PSBkdm0vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19JV0xNVk0pXHQmIzQzOz0gbXZtL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfSVdMTUVJKVx0JiM0Mzs9IG1laS9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX0lXTE1MRClcdCYjNDM7PSBtbGQvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo1NDpvYmotJChDT05GSUdfSVdMV0lGSV9LVU5JVF9URVNUUykgJiM0Mzs9IHRlc3RzL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxNDcKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBpd2x3aWZpYCBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290LiBUaGUgcmVsZXZhbnQgb2JqZWN0IGZpbGUsIGBpd2x3aWZpLm9gLCBpcyBidWlsdCB3aXRoIHRoZSBgQ09ORklHX0lXTFdJRklgIGZsYWcgZW5hYmxlZCwgd2hpY2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhpcyBjb25maXJtcyB0aGF0IGBJV0xXSUZJYCBpcyBhIHN1ZmZpY2llbnQgY29uZmlndXJhdGlvbiB0byBmb2N1cyBvbi4KClNvLCBsZXQgbWUgc3VtbWFyaXplIHRoZSBmaW5kaW5ncyBjb25jaXNlbHk6IFRoaXMgaXMgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHBhdGNoLCBmb2N1c2luZyBpbiBwYXJ0aWN1bGFyIG9uIHRoZSBgaXdsX3Budm1fcGFyc2VgIHN5bWJvbC4gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gaXMgc2ltcGx5IGBJV0xXSUZJYC4KClRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgc29saWQsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY3J1Y2lhbCBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gVGhpcyBpcyBsb2NhdGVkIGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBgaXdsd2lmaWAgZHJpdmVyLiBUaGlzIHBhcnRpY3VsYXIgY29kZSBpcyByZWFjaGFibGUgdmlhIHR3byByb3V0ZXMsIGVpdGhlciB0aGUgZHJpdmVyJiMzOTtzIGZpcm13YXJlIGxvYWRpbmcgZnVuY3Rpb24gb3IgdGhlIFVFRkkgdmFyaWFibGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVdMV0lGSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF9wbnZtX3BhcnNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX3Budm1fcGFyc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgUE5WTSBTS1UgVExWcyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGZpcm13YXJlIGxvYWRpbmcgb3IgVUVGSSB2YXJpYWJsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTowNi40MzYwNDE4NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDQxMDQyNzgwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXdsX3Budm1fcGFyc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBQTlZNIFNLVSBUTFZzIGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgZmlybXdhcmUgbG9hZGluZyBvciBVRUZJIHZhcmlhYmxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTE6MDYuNDM2MDQ3MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MjAwODU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ0NWY5ODIzY2VmODFkNDA0NmIwMjRkNjNiYmE1NmFhZjc3MzQ4YzFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTE6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xcbmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5mNjFlNjliYTkzM2JjNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXFxuQEAgLTE5OCw2ICsxOTgsMTIgQEAgc3RhdGljIGludCBpd2xfcG52bV9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXFxuIFxcdFxcdFxcdElXTF9ERUJVR19GVyh0cmFucyxcXG4gXFx0XFx0XFx0XFx0ICAgICBcXFwiR290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgIHRsdl9sZW4pO1xcbitcXHRcXHRcXHRpZiAodGx2X2xlbiBcXHUwMDNjIDMgKiBzaXplb2YoX19sZTMyKSkge1xcbitcXHRcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0dGx2X2xlbik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcbiBcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsIFxcXCJza3VfaWQgMHglMHggMHglMHggMHglMHhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVswXSksXFxuIFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVsxXSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjExOjA3LjAwOTA0MTU0M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzODM3NDE5NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ0NWY5ODIzY2VmODFkNDA0NmIwMjRkNjNiYmE1NmFhZjc3MzQ4YzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAwOToxMTowNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcbmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5mNjFlNjliYTkzM2JjNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xuQEAgLTE5OCw2ICsxOTgsMTIgQEAgc3RhdGljIGludCBpd2xfcG52bV9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuIFx0XHRcdFx0ICAgICBcIkdvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwiLFxuIFx0XHRcdFx0ICAgICB0bHZfbGVuKTtcbitcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XG4rXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcbitcdFx0XHRcdFx0dGx2X2xlbik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcblwiLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTE6MDcuMDA5MDQzODgzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzODE5NjY2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIEludGVsIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jYCB0aGF0IGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2sgZm9yIGBJV0xfVUNPREVfVExWX1BOVk1fU0tVYCB3aXRoaW4gdGhlIGBpd2xfcG52bV9wYXJzZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGJlIGZ1enppbmc/IExldCdzIGRpdmUgaW50byBgaXdsX3Budm1fcGFyc2VgIGRpcmVjdGx5IGFuZCBkZXRlcm1pbmUgaXRzIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGZ1enppbmcgdmFsdWUuXG5cblRoZSBjb250ZXh0IGlzIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBzcGVjaWZpYyB0byBJbnRlbCB3aXJlbGVzcyBjYXJkcy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgcXVlc3Rpb25zIGFib3V0IGl0cyBhY2Nlc3NpYmlsaXR5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2UgaXTigJlzIGEgUENJIGRyaXZlciwgaXQgdHlwaWNhbGx5IHJlbGllcyBvbiB0aGUgcHJlc2VuY2Ugb2Ygc3BlY2lmaWMgUENJIGhhcmR3YXJlLiBDYW4gd2UgZ2V0IGFyb3VuZCB0aGF0IHNvbWVob3c/IEkga25vdyBgbWFjODAyMTFfaHdzaW1gIGlzIG9mdGVuIHVzZWQgZm9yIHNvZnR3YXJlLWVtdWxhdGVkIFdpLUZpLCBidXQgdGhpcyBpcyBhICpoYXJkd2FyZSogZHJpdmVyLCBzbyB0aGF0IHByb2JhYmx5IHdvbid0IHdvcmsuXG5cbkhvbGQgb24sIEkgc2VlbSB0byByZWNhbGwgU3l6a2FsbGVyIGhhcyBtZWNoYW5pc21zIGZvciBmdXp6aW5nIFBDSSBkZXZpY2VzLiBJc24ndCB0aGVyZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgIG9yIGEgc2ltaWxhciB0ZWNobmlxdWU/IE9yIGlzIGBpd2x3aWZpYCBzb21laG93IGV4Y2x1ZGVkIGZyb20gZnV6emluZz8gTGV0IG1lIGNoZWNrIGlmIGBpd2x3aWZpYCBpcyBhY3R1YWxseSBmdXp6ZWQuXG5cblJpZ2h0LCBgaXdsd2lmaWAgKmlzKiBhIFBDSSBkcml2ZXIsIHNvIFBDSSBmdXp6aW5nIChwb3RlbnRpYWxseSB2aWEgVkZJTyBvciBTeXprYWxsZXIncyBQQ0kgY2FwYWJpbGl0aWVzKSBpcyB0aGUgd2F5IHRvIGdvLiBZZXMsIFN5emthbGxlciAqZG9lcyogZnV6eiBQQ0kgZGV2aWNlcyFcblxuT2theSwgbmV3IGZvY3VzLiBOb3cgdGhlIG1vc3QgaW1wb3J0YW50IHF1ZXN0aW9uOiBJcyBgaXdsX3Budm1fcGFyc2VgIHJlYWNoYWJsZT8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMToxOS4zOTEwMTQyNjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2NzgxNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wbnZtX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2PXN0YXRpYyBpbnQgaXdsX3Budm1faGFuZGxlX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2OTpzdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzAtXFx0XFx0XFx0ICBzaXplX3QgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY2PWl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTI6XFx0cmV0ID0gaXdsX3Budm1fcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5My1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjExOjE5LjU2NzgwMTU2NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MjY4MDQ1OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKlRyYWNpbmcgdGhlIFBOVk0gUGFyc2luZyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBpd2xfcG52bV9wYXJzZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBwYXJzaW5nIHRoZSBQTlZNIGRhdGEuIEkga25vdyB0aGF0J3MgY2FsbGVkIGZyb20gYGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFuc2AuIE5vdywgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIHBvdGVudGlhbCBpc3N1ZXMsIEkgbmVlZCB0byBrbm93ICp3aGVyZSogYGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFuc2AgaXRzZWxmIGlzIGJlaW5nIGNhbGxlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IG9mICp0aGF0KiBmdW5jdGlvbiBpcyBrZXkgdG8gZGVidWdnaW5nIHRoaXMgYXJlYS4gTGV0IG1lIHRyYWNlIGJhY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoZXJlIHRoZSBkYXRhIGlzIGFjdHVhbGx5IGNvbWluZyBmcm9tIGFuZCBob3cgdGhlIFBOVk0gcGFyc2luZyBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJIHN1c3BlY3QgaXQgd2lsbCBzaGVkIGxpZ2h0IG9uIHdoYXQgZGF0YSBpcyBiZWluZyBwYXJzZWQsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMDcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTozOC44MzU4NDk0NzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMDgzNTY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzY2Oml3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNjctXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfZncgKmZ3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDYxPWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ3MzpcXHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ3NC1cXHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLCBza3VfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTo0MC4zNTY2ODkxODVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDUxNDUxOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBxdWVzdGlvbjpcblxuKipEZWVwIERpdmUgaW50byBgaXdsX3Budm1fbG9hZGAncyBPcmlnaW5zKipcblxuT2theSwgc28gYGl3bF9wbnZtX2xvYWRgLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBpcywgd2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGdldCBpbnZva2VkIGZyb20/IFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBkcml2ZXIgZnJhbWV3b3JrLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBpdHMgY2FsbCBwYXRoLiBJcyBpdCBjYWxsZWQgZnJvbSBhIG1haW4gaW5pdGlhbGl6YXRpb24gcm91dGluZSwgbGlrZSBgaXdsd2lmaV9wY2lfcHJvYmVgIG9yIG9uZSBvZiB0aGUgZGV2aWNlLXNwZWNpZmljIHByb2JlIGZ1bmN0aW9ucz8gT3IgaXMgaXQgdHJpZ2dlcmVkIGxhdGVyLCBtYXliZSBkdXJpbmcgYSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlPyBJcyBpdCBwYXJ0IG9mIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbml0aWFsaXphdGlvbiwgcGVyaGFwcz9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb250ZXh0IHRvIGVmZmVjdGl2ZWx5IGFuYWx5c2UgaXRzIGJlaGF2aW91ci4gS25vd2luZyB3aGVyZSBpdCBpcyBjYWxsZWQgZnJvbSB3aWxsIG9mZmVyIGluc2lnaHQgaW50byBob3cgdGhlIHByb2dyYW0gc3RhdGUgaXMgbGlrZWx5IHRvIGJlIHNldCwgaG93IGRlcGVuZGVuY2llcyBhbmQgYXNzdW1wdGlvbnMgd2lsbCBtYW5pZmVzdC4gSXQgY291bGQgcHJvdmlkZSBhIHF1aWNrIGFuc3dlciB0byB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTo0NC40MDgxNDM1MTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NjY1MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wbnZtX2xvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzY2Oml3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNjctXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfZncgKmZ3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDEyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDEzOml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQxNC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDYxOmludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Mi1cXHRcXHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ3MzpcXHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ3NDpcXHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ4Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDg3OklXTF9FWFBPUlRfU1lNQk9MKGl3bF9wbnZtX2xvYWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmgtMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmg6MTY6aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmgtMTctXFx0XFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmM9MjcyPXN0YXRpYyBpbnQgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZShzdHJ1Y3QgaXdsX21sZCAqbWxkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYy0yODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYzoyOTA6XFx0cmV0ID0gaXdsX3Budm1fbG9hZChtbGQtXFx1MDAzZXRyYW5zLCBcXHUwMDI2bWxkLVxcdTAwM2Vub3RpZl93YWl0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmMtMjkxLVxcdFxcdFxcdCAgICBtbGQtXFx1MDAzZWZ3LCBhbGl2ZV9kYXRhLnNrdV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jPTI4Nj1zdGF0aWMgaW50IGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jOjQwNzpcXHRyZXQgPSBpd2xfcG52bV9sb2FkKG12bS1cXHUwMDNldHJhbnMsIFxcdTAwMjZtdm0tXFx1MDAzZW5vdGlmX3dhaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy00MDgtXFx0XFx0XFx0ICAgIG12bS1cXHUwMDNlZncsIGFsaXZlX2RhdGEuc2t1X2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTE6NDQuODUyODEzNzYyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMzMTQ2MzEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIEZpcm13YXJlIExvYWRpbmcgRnV6emluZyoqXG5cbk9rYXksIHNvIGBpd2xfcG52bV9sb2FkYCBpcyBjZW50cmFsIHRvIHRoaXMgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIGxpa2UgaXQncyBhIGtleSBwYXJ0IG9mIHRoZSBwcm9jZXNzLCBjYWxsZWQgZHVyaW5nIGJvdGggYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCBhbmQgYGl3bF9tbGRfcnVuX2Z3X2luaXRfc2VxdWVuY2VgLiBUaGUgZmlybXdhcmUgaXRzZWxmIGlzIGZldGNoZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSB1c2luZyBgcmVxdWVzdF9maXJtd2FyZWAsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCB3YXkuXG5cbk5vdywgdGhlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyIGJlIGxldmVyYWdlZCB0byBmdXp6IHRoaXMgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIGZpcm13YXJlIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBtYXliZSB1c2luZyBzb21ldGhpbmcgbGlrZSBgc3l6X21vdW50X2ltYWdlYCwgb3IgcG90ZW50aWFsbHkgaW5qZWN0aW5nIGZhdWx0cyB0aHJvdWdoIGByZXF1ZXN0X2Zpcm13YXJlYC4gQnV0Li4uIGl0J3Mgbm90IGEgc3RyYWlnaHRmb3J3YXJkIFwibmF0aXZlXCIgZmlybXdhcmUgY29udGVudCBmdXp6ZXIsIHJpZ2h0PyBJdCB1c3VhbGx5IG5lZWRzIGEgc3BlY2lmaWMgc2V0dXAuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBgaXdsX3Budm1fbG9hZGAgaXMgc3BlY2lmaWNhbGx5IGxvYWRpbmcgUE5WTSBkYXRhLiBXaGVyZSBkb2VzIHRoZSBgZGF0YWAgYWN0dWFsbHkgY29tZSBmcm9tIHdoZW4gaXQncyBwYXNzZWQgdG8gYGl3bF9wbnZtX3BhcnNlYD8gVW5kZXJzdGFuZGluZyB0aGF0IGlzIHRoZSBjcml0aWNhbCBwb2ludCBpZiBJIHdhbnQgdG8gdGFyZ2V0IHRoaXMgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgxNiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTo1MS4xODQyNzkxOTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjcwNDI5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwbnZtX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY9c3RhdGljIGludCBpd2xfcG52bV9oYW5kbGVfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzctXFx0XFx0XFx0XFx0ICAgc2l6ZV90IGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozODpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NzpcXHRtZW1zZXQocG52bV9kYXRhLCAwLCBzaXplb2YoKnBudm1fZGF0YSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNzktXFx0XFx0XFx0XFx0ICAgICBzaGExKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo4MDpcXHRcXHRcXHRwbnZtX2RhdGEtXFx1MDAzZXZlcnNpb24gPSBzaGExO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTgxLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjExODpcXHRcXHRcXHRpZiAocG52bV9kYXRhLVxcdTAwM2VuX2NodW5rcyA9PSBJUENfRFJBTV9NQVBfRU5UUllfTlVNX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTExOS1cXHRcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTI3OlxcdFxcdFxcdHBudm1fZGF0YS1cXHUwMDNlY2h1bmtzW3Budm1fZGF0YS1cXHUwMDNlbl9jaHVua3NdLmRhdGEgPSBzZWN0aW9uLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEyODpcXHRcXHRcXHRwbnZtX2RhdGEtXFx1MDAzZWNodW5rc1twbnZtX2RhdGEtXFx1MDAzZW5fY2h1bmtzXS5sZW4gPSBkYXRhX2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMjk6XFx0XFx0XFx0cG52bV9kYXRhLVxcdTAwM2VuX2NodW5rcysrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzNC1cXHRcXHRcXHRpZiAoaXdsX3VlZmlfaGFuZGxlX3Rsdl9tZW1fZGVzYyh0cmFucywgZGF0YSwgdGx2X2xlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMzU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IHBudm1fZGF0YSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTM2LVxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2MTpcXHRpZiAoIXBudm1fZGF0YS1cXHUwMDNlbl9jaHVua3MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNjItXFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwiRW1wdHkgUE5WTSwgc2tpcHBpbmcuXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTE2OT1zdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzAtXFx0XFx0XFx0ICBzaXplX3QgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE3MTpcXHRcXHRcXHQgIHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE3Mi1cXHRcXHRcXHQgIF9fbGUzMiBza3VfaWRbM10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0yMzAtXFx0XFx0XFx0XFx0cmV0ID0gaXdsX3Budm1faGFuZGxlX3NlY3Rpb24odHJhbnMsIGRhdGEsIGxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoyMzE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcG52bV9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0yMzItXFx0XFx0XFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zMTM9c3RhdGljIGNvbnN0IHU4ICppd2xfZ2V0X3Budm1faW1hZ2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnNfcCwgc2l6ZV90ICpsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzU2OlxcdGlmIChwbnZtX3NyYyA9PSBJV0xfUE5WTV9TT1VSQ0VfRU1CRURERUQgXFx1MDAyNlxcdTAwMjYgZnctXFx1MDAzZXBudm1fZGF0YSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM1Ny1cXHRcXHQqbGVuID0gZnctXFx1MDAzZXBudm1fc2l6ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozNTg6XFx0XFx0cmV0dXJuIGZ3LVxcdTAwM2VwbnZtX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzU5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2Nj1pd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zNjkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM3MDpcXHRzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzcxLVxcdGNvbnN0IHU4ICpkYXRhID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozODg6XFx0cG52bV9kYXRhID0ga3phbGxvY19vYmooKnBudm1fZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6Mzg5OlxcdGlmICghcG52bV9kYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MC1cXHRcXHRnb3RvIGZyZWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM5MjpcXHRyZXQgPSBpd2xfcG52bV9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTg6XFx0cmV0ID0gaXdsX3RyYW5zX2xvYWRfcG52bSh0cmFucywgcG52bV9kYXRhLCBcXHUwMDI2ZnctXFx1MDAzZXVjb2RlX2NhcGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5OS1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwMC1cXHRcXHRnb3RvIGZyZWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDAxOlxcdElXTF9ERUJVR19JTkZPKHRyYW5zLCBcXFwibG9hZGVkIFBOVk0gdmVyc2lvbiAlMDh4XFxcXG5cXFwiLCBwbnZtX2RhdGEtXFx1MDAzZXZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwNi1cXHQvKiBmcmVlIG9ubHkgaWYgaXQgd2FzIGFsbG9jYXRlZCwgaS5lLiBub3QganVzdCBlbWJlZGRlZCBQTlZNIGRhdGEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MDc6XFx0aWYgKGRhdGEgIT0gZnctXFx1MDAzZXBudm1fZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXFx0XFx0a3ZmcmVlKGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwOTpcXHRrZnJlZShwbnZtX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQxMC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MTM9aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQxNzpcXHRzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDE4LVxcdHU4ICpkYXRhID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MzQ6XFx0cG52bV9kYXRhID0ga3phbGxvY19vYmooKnBudm1fZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDM1OlxcdGlmICghcG52bV9kYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzNi1cXHRcXHRnb3RvIGZyZWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzODpcXHRyZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzOS1cXHRcXHRcXHRcXHRcXHQgIHNrdV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDQ1OlxcdHJldCA9IGl3bF90cmFuc19sb2FkX3JlZHVjZV9wb3dlcih0cmFucywgcG52bV9kYXRhLCBjYXBhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NDYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU3LVxcdGtmcmVlKGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ1ODpcXHRrZnJlZShwbnZtX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ1OS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjExOjUxLjY1MDk4ODc1MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTAyOTMxMjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIFZ1bG5lcmFiaWxpdHkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSByZWNvZ25pemUgdGhlIGNvbnRleHQuIFRoaXMgZGF0YSBpcyBjb21pbmcgZnJvbSBgaXdsX2dldF9wbnZtX2ltYWdlYCwgd2hpY2ggbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGZpcm13YXJl4oCUaXQncyBsb2FkZWQgZWl0aGVyIGRpcmVjdGx5IGZyb20gZmlybXdhcmUgZmlsZXMgb3IgdGhyb3VnaCBVRUZJLiBUaGUgc3RhbmRhcmQgd2F5IHRvIGxvYWQgdGhlc2UgZmlsZXMsIGFzIEkgcmVjYWxsLCBpcyB2aWEgYGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuYC4gSSdtIHRoaW5raW5nLCBcIldhaXQsIGhvdyBkaWQgdGhpcyBjb21lIHVwP1wiIFN5emthbGxlciAqY291bGQqIGZ1enogZmlybXdhcmUgZmlsZXMsIHBvdGVudGlhbGx5IHVzaW5nIGBzeXpfbW91bnRfaW1hZ2VgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbHRob3VnaCB0aGF0IHVzdWFsbHkgaGFwcGVucyB3aGVuIGEgc3BlY2lmaWMgc2V0dXAgaXMgaW52b2x2ZWQuIElzIHRoZXJlIGEgYHN5el9maXJtd2FyZWAgc3lzY2FsbCB0aGF0IEknbSBmb3JnZXR0aW5nPyBPciBpcyBpdCBzb21ldGhpbmcgZWxzZT9cblxuQWgsIHJpZ2h0ISBUaGUga2V5IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBjb21pbmcgZnJvbSBgc3l6LWNsdXN0ZXJgLiBUaGF0IG1lYW5zIFN5emthbGxlciwgaXRzZWxmLCBmb3VuZCB0aGlzIGJ1Zy4gVGhpcyBpcyBncmVhdCwgYmVjYXVzZSBpdCBtZWFucyB3ZSBoYXZlIGEgdGVzdCBjYXNlIHRvIHdvcmsgZnJvbS5cblxuTm93LCB0aGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2s6XG5cbmBgYGNcbitcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XG4rXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcbitcdFx0XHRcdFx0dGx2X2xlbik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG5gYGBcblxuVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBjaGFuZ2UuIEl0J3MgZXNzZW50aWFsbHkgYSBib3VuZHMgY2hlY2ssIHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyB0aGUgcGFyc2luZyBvZiB0aGUgYElXTF9VQ09ERV9UTFZfUE5WTV9TS1VgIGRhdGEuIFNpbmNlIFN5emthbGxlciBmb3VuZCBpdCwgd2UgY2FuIGJlIGNvbmZpZGVudCB0aGlzIGJ1ZyBpcyByZWFjaGFibGUgYW5kIGl0IGlzIGZ1enplZCBieSBTeXprYWxsZXIuIFRoaXMgYWxzbyBtYWtlcyBtZSB3YW50IHRvIHN0YXJ0IHRoaW5raW5nIGFib3V0IGNvbmZpZyBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbnN1cmUgdGhlIG5lY2Vzc2FyeSBkcml2ZXJzIGFuZCBtb2R1bGVzIGFyZSBlbmFibGVkIGZvciB0aGlzIGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkyNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMTo1OS43NTM5MjE1NzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5OTE2ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wbnZtX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2PXN0YXRpYyBpbnQgaXdsX3Budm1faGFuZGxlX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjE2OTpzdGF0aWMgaW50IGl3bF9wbnZtX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNzAtXFx0XFx0XFx0ICBzaXplX3QgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY2PWl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozOTI6XFx0cmV0ID0gaXdsX3Budm1fcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLCBza3VfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM5My1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjExOjU5Ljg1Mzg0MjYxMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM3NzU2NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gdGhlIGBpd2x3aWZpYCBLY29uZmlnKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBpd2x3aWZpYCBkcml2ZXIuIFRoaXMgbGlrZWx5IGNvbnRhaW5zIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgd2lyZWxlc3MgbW9kdWxlIHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBLY29uZmlnIGFyY2hpdGVjdHVyZSwgSSdsbCBhcHByb2FjaCB0aGlzIHN5c3RlbWF0aWNhbGx5LlxuXG5GaXJzdCwgSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBjb21tb24gbG9jYXRpb25zIHdoZXJlIHRoZXNlIEtjb25maWcgZmlsZXMgcmVzaWRlLiBUeXBpY2FsbHksIHRoZXkncmUgbmVzdGxlZCB3aXRoaW4gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgb2YgdGhlIGRyaXZlciBpdHNlbGYuIFNpbmNlIGBpd2x3aWZpYCBkZWFscyB3aXRoIEludGVsIHdpcmVsZXNzLCB0aGUgcGF0aCBpcyBwcm9iYWJseSBzb21ld2hlcmUgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvYCwgb3IgYXQgbGVhc3Qgd2l0aGluIHRoZSBnZW5lcmFsIHdpcmVsZXNzIG5ldHdvcmsgc3RydWN0dXJlLiBUaGUgYmVzdCB3YXkgdG8gYmUgc3VyZSBpcyB0byBzZWFyY2guXG5cbkknbGwgcHJvYmFibHkgZW5kIHVwIHVzaW5nIGBmaW5kYCB3aXRoIHNvbWUganVkaWNpb3VzIHNlYXJjaCBwYXJhbWV0ZXJzLCBvciBtYXliZSBhIG1vcmUgdGFyZ2V0ZWQgYGdyZXBgIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGl0c2VsZiwgdG8gbG9vayBmb3IgYSBmaWxlIG5hbWVkIHNvbWV0aGluZyBsaWtlIGBLY29uZmlnYCwgYEtjb25maWcuaXdsd2lmaWAsIG9yIGV2ZW4gYENvbmZpZy5pd2x3aWZpYCwgdGhhdCBpcyByZWxhdGVkIHRvIGl3bHdpZmkuIFRoaXMgdXN1YWxseSByZXZlYWxzIHRoZSBjb3JyZWN0IGZpbGUgcXVpY2tseS5cblxuT25jZSBJJ3ZlIGdvdCBhIGxpa2VseSBjYW5kaWRhdGUsIEkgY2FuIGNvbmZpcm0gaXQncyB0aGUgY29ycmVjdCBmaWxlIGJ5IGxvb2tpbmcgYXQgaXRzIGNvbnRlbnQuIEl0IHNob3VsZCBjb250YWluIHZhcmlvdXMgYGNvbmZpZ2Agc3ltYm9scywgYWxvbmcgd2l0aCBkZXNjcmlwdGlvbnMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgZGVwZW5kZW5jaWVzIHNwZWNpZmljIHRvIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCBpdHMgZmVhdHVyZXMsIGFuZCBwb3NzaWJseSBoYXJkd2FyZSBzdXBwb3J0LiBUaGF0J3MgdGhlIGtleTogbG9vayBmb3IgdGhlIGRlZmluaXRpb25zLCBib29sZWFuLCBzdHJpbmcsIG9yIHRyaXN0YXRlIHNldHRpbmdzLiBUaG9zZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIEknbSBhZnRlci4gQW5kIGFmdGVyIHRoYXQsIEkgY2FuIG1vdmUgb24gdG8gdGhlIG5leHQgdGFzay5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjA0LjU5MTYwMTcyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MzQ2MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1ODpjb25maWcgSVdMV0lGSV9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTQtIyBkb24ndCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5NTpjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05Ni1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTA1PW1lbnUgXFxcIkRlYnVnZ2luZyBPcHRpb25zXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwiRW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzk6Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVxcdGJvb2wgXFxcIml3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjowNS4wNTY5NTI0MjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzczODU5MTQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQTlZNIFBvdGVudGlhbCoqXG5cbkFscmlnaHQsIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gd2UncmUgZGVhbGluZyB3aXRoIGlzIGBJV0xXSUZJYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IHByb2JlIGRlZXBlci4gV2hpbGUgYElXTFdJRklgIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgSW50ZWwgd2lyZWxlc3MsIG15IGV4cGVyaWVuY2Ugc2NyZWFtcyB0aGUgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgY29uZmlndXJhdGlvbiBoYXMgYW55IGltcGxpY2l0IG9yIGV4cGxpY2l0IGludGVyYWN0aW9ucyB3aXRoIFBOVk0gKFBoYXNlLUNoYW5nZSBOb24tVm9sYXRpbGUgTWVtb3J5KS4gSXMgdGhlcmUgYW55IHNwZWNpZmljIG9yIGltcGxpZWQgc3VwcG9ydCBlbWJlZGRlZCB3aXRoaW4gdGhlIGBJV0xXSUZJYCBpbXBsZW1lbnRhdGlvbiBmb3IgUE5WTT8gSeKAmW0gdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIG9wdGltaXphdGlvbnMsIG9yIGV2ZW4gcG90ZW50aWFsIGxpbWl0YXRpb25zLCB0aGF0IHdvdWxkIGJlIGRpcmVjdGx5IGFwcGxpY2FibGUuIFVuZGVyc3RhbmRpbmcgYW55IGRlcGVuZGVuY2llcyBoZXJlIGlzIGNydWNpYWwgZm9yIGFzc2Vzc2luZyBpdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHdpdGggUE5WTS4gQW55IHNwZWNpZmljIFBOVk0tb3JpZW50ZWQgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBiZSBoaWRkZW4gb3IgdGhhdCBjb3VsZCBpbmZsdWVuY2UgaXQ/IEl0IHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIHNlZSBpZiBhbnkgZHJpdmVycyBvciBtb2R1bGVzIHdpdGhpbiBgSVdMV0lGSWAgYXJlIHdyaXR0ZW4gaW4gYSB3YXkgdGhhdCB3b3VsZCBiZSBpbW1lZGlhdGVseSBiZW5lZmljaWFsLCBvciByZXF1aXJlIGZ1cnRoZXIgbW9kaWZpY2F0aW9uLCB0byBoYXJuZXNzIHRoZSBwb3RlbnRpYWwgZ2FpbnMgZnJvbSBQTlZNLWJhc2VkIHN0b3JhZ2UuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBsb29rIGludG8gdGhlIHNwZWNpZmljczsgaXQgbWlnaHQgc2VlbSB1bmxpa2VseSwgYnV0IGl0IGlzIGltcG9ydGFudCB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMzQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjowOC43OTU1NDY1NTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1Njk0NTMxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwbnZtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MDguODgxMjQ5MzUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1ODg3NDgyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGl3bHdpZmlgIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlcmUncyBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG1lbnRpb25lZCBmb3IgUE5WTSAoUGVyc2lzdGVudCBOb24tVm9sYXRpbGUgTWVtb3J5KSBpbiB0aGUgY29udGV4dCBvZiB0aGlzLiBXYWl0IGEgbWludXRlLCBgaXdsd2lmaWAgaXMgYSBQQ0kgZHJpdmVyLCByaWdodD8gSG1tLCBjb3VsZCBzeXprYWxsZXIgYmUgZnV6emluZyBpdCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWA/IE5vLCBubywgdGhhdCdzIG5vdCByaWdodC4gYG1hYzgwMjExX2h3c2ltYCBpcyBzb2Z0d2FyZSwgYSBzaW11bGF0b3IgZm9yIG1hYzgwMjExLCBub3Qgc3BlY2lmaWNhbGx5IGZvciBgaXdsd2lmaWAuXG5cbkFscmlnaHQsIGJhY2sgdG8gdGhlIGJhc2ljcy4gU3l6a2FsbGVyIHByb2JhYmx5IGhpdHMgYGl3bHdpZmlgIHRocm91Z2ggUENJIGZ1enppbmcsIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciwgb3IgcG90ZW50aWFsbHkgVVNCIGZ1enppbmcgaWYgaXQgcHJlc2VudGVkIGFzIHN1Y2guIEJ1dCwgYXMgSSBqdXN0IGNvbmZpcm1lZCwgaXQncyBQQ0kuIFRoZW4sIEkgcmVtZW1iZXJlZCBTeXprYWxsZXIncyBmaXJtd2FyZSBsb2FkaW5nIGNhcGFiaWxpdGllcy5cblxuSXMgYGl3bHdpZmlgIGFjdHVhbGx5IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gWWVzLCB0aGVyZSdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhpcyBkcml2ZXIsIGFuZCBTeXprYWxsZXIgZm91bmQgdGhlIGJ1Zy4gU28sIGluIHRoZW9yeSwgaXQncyByZWFjaGFibGUgd2l0aGluIFN5emthbGxlcidzIGVudmlyb25tZW50LiBCdXQsIHdhaXQsIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IHByb21wdCdzIGxpbWl0YXRpb25zLiBJdCBzYXlzIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gU28sIHRoZSBrZXkgaXMgd2hldGhlciBvciBub3QgYGl3bHdpZmlgIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cbkx1Y2tpbHksIFN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyLCB3aGljaCBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcy4gSSd2ZSBnb3QgdG8gY2hlY2sgaWYgYGl3bHdpZmlgIGlzIHN1cHBvcnRlZCBieSB0aGF0IGZ1enplci4gSXQncyBmdXp6aW5nIFBDSSBkZXZpY2VzLCBhbmQgYGl3bHdpZmlgIGlzIG9uZSBvZiB0aGUgZHJpdmVycyB0aGF0IGNhbiBiZSBwcm9iZWQgaWYgdGhlIFBDSSBJRCBtYXRjaGVzLlxuXG5TbywgdGhlIGFuc3dlciBpcyB5ZXMsIGl0IGlzIHJlYWNoYWJsZS4gT2theSwgbm93IGxldCdzIGZvY3VzIG9uIHRoZSBhY3R1YWwgZnVuY3Rpb24gY2hhbmdlLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGl3bF9wbnZtX3BhcnNlYC4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzQyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjE3LjQ3MDAwMDk2NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIyNjEyODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3Budm1fcGFyc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzY9c3RhdGljIGludCBpd2xfcG52bV9oYW5kbGVfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MTY5OnN0YXRpYyBpbnQgaXdsX3Budm1fcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE3MC1cXHRcXHRcXHQgIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNjY9aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM5MjpcXHRyZXQgPSBpd2xfcG52bV9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzkzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTcuNTYyMjY3NzY2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTQ5MTcwMDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoZWNraW5nIHRoZSBTY29wZSBvZiB0aGUgSVdMV0lGSSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCB0aGUga2V5IHRoaW5nIEknbSBsb29raW5nIGF0IHJpZ2h0IG5vdyBpcyBgaXdsX3Budm1fcGFyc2VgLiBUaGF0J3MgdGhlIGNvcmUgZm9jdXMuIE5vdywgdGhpcyBpcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBJV0xXSUZJYCBjb25maWd1cmF0aW9uLCBhbmQgdGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIG9uIHRoZSBzdXJmYWNlLiBCdXQsIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkgb3IgcmVsYXRlZC4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBBcmUgd2UgKmp1c3QqIGRlYWxpbmcgd2l0aCBgSVdMV0lGSWA/IENvdWxkIHRoZXJlIGJlLCBwZXJoYXBzLCBhIGBJV0xXSUZJX0JTU2AgdGhhdCdzIHNvbWVob3cgaW50ZXJ0d2luZWQgaGVyZT8gT3IgbWF5YmUgZXZlbiBhIGBJV0xXSUZJX01WTWA/IEl0J3MgZXNzZW50aWFsIHRoYXQgSSBlbGltaW5hdGUgdGhlIHBvc3NpYmlsaXR5IG9mIGludGVyYWN0aW9uIHdpdGggdGhlc2UgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBjb2RlIHBhdGhzIGJlZm9yZSBwcm9jZWVkaW5nLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTUzNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjMwLjExMTQ0MDIwOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MDQzNDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBudm0ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM0PWl3bHdpZmktb2Jqc1xcdFxcdCs9IGZ3L2ltZy5vIGZ3L25vdGlmLXdhaXQubyBmdy9ycy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozNTppd2x3aWZpLW9ianNcXHRcXHQrPSBmdy9kYmcubyBmdy9kYmctb2xkLm8gZncvcG52bS5vIGZ3L2R1bXAub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMzYtaXdsd2lmaS1vYmpzXFx0XFx0Kz0gZncvcmVndWxhdG9yeS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjMwLjU1NTQ5MTIyNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTgxNTA3MjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIGBpd2x3aWZpYCBNb2R1bGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIHRocm91Z2ggaXRzIGltcGxpY2F0aW9ucy4gVGhlIG9iamVjdGl2ZSBoZXJlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogYHBudm0ub2AgaXMgcGFydCBvZiB0aGUgYGl3bHdpZmktb2Jqc2AsIHdoaWNoIGl0c2VsZiBvbmx5IGdldHMgYnVpbHQgd2hlbiBgQ09ORklHX0lXTFdJRklgIGlzIGVuYWJsZWQuICBUaGVyZWZvcmUsIGBJV0xXSUZJYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWcgdG8gZm9jdXMgb24uXG5cbkxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaCBhZ2Fpbi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiB0aGUgYGl3bF9wbnZtX3BhcnNlYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBhIGxlbmd0aCBjaGVjayBoYXMgYmVlbiBpbnRyb2R1Y2VkLiAgVGhlIGNvZGUgbm93IGNoZWNrcyBpZiB0aGUgVExWIGxlbmd0aCAoYHRsdl9sZW5gKSBpcyBsZXNzIHRoYW4gYDMgKiBzaXplb2YoX19sZTMyKWAuIFRoZSBpbnRlbnRpb24gaXMgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBhY2Nlc3NpbmcgdGhlIGVsZW1lbnRzIGB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF1gLCBgZGF0YVsxXWAsIGFuZCBgZGF0YVsyXWAuIFRoaXMgbWVhbnMgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFpbWluZyBmb3Igcm9idXN0bmVzczsgZ29vZCB0byBzZWUuXG5cblNpbmNlIHRoaXMgcGF0Y2ggbW9kaWZpZXMgb25seSBgaXdsX3Budm1fcGFyc2VgLCBpdCBzdGFuZHMgb3V0LiAgV2Ugc2hvdWxkIGluY2x1ZGUgdGhpcyBmdW5jdGlvbiB3aXRoaW4gYEZvY3VzU3ltYm9sc2AuIExldCdzIGNvbmZpcm0gdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHJlbGV2YW50IGZ1bmN0aW9uIHRoYXQgbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBJdCBzZWVtcyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFuc2AuXG5cblNvLCB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGF0IGBJV0xXSUZJYCBpcyB0aGUgY3JpdGljYWwgY29uZmlnIHRvIHRyYWNrLiBXZSBuZWVkIHRvIGNoZWNrIHRvIGJlIGNlcnRhaW4gdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncy4gQSBxdWljayBjaGVjayBvZiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZWAgc2hvdWxkIGNvbmZpcm0gdGhpcywgYnV0IEknbSByZWFzb25hYmx5IGNvbmZpZGVudCBpbiB0aGlzIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk1NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjozNy43MzcwMDA1ODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODk0MjEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS0yLSMgY29tbW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19JV0xXSUZJKVxcdCs9IGl3bHdpZmkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNC1pd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtaW8ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT00Nz1jY2ZsYWdzLXkgKz0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX0lXTERWTSlcXHQrPSBkdm0vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfSVdMTVZNKVxcdCs9IG12bS9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19JV0xNRUkpXFx0Kz0gbWVpL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX0lXTE1MRClcXHQrPSBtbGQvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19JV0xXSUZJX0tVTklUX1RFU1RTKSArPSB0ZXN0cy9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTU1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjozNy44NDU5NDc2MTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4Njg2ODQ4NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBpd2x3aWZpYCBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290LiBUaGUgcmVsZXZhbnQgb2JqZWN0IGZpbGUsIGBpd2x3aWZpLm9gLCBpcyBidWlsdCB3aXRoIHRoZSBgQ09ORklHX0lXTFdJRklgIGZsYWcgZW5hYmxlZCwgd2hpY2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhpcyBjb25maXJtcyB0aGF0IGBJV0xXSUZJYCBpcyBhIHN1ZmZpY2llbnQgY29uZmlndXJhdGlvbiB0byBmb2N1cyBvbi5cblxuU28sIGxldCBtZSBzdW1tYXJpemUgdGhlIGZpbmRpbmdzIGNvbmNpc2VseTogVGhpcyBpcyB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgcGF0Y2gsIGZvY3VzaW5nIGluIHBhcnRpY3VsYXIgb24gdGhlIGBpd2xfcG52bV9wYXJzZWAgc3ltYm9sLiBUaGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBpcyBzaW1wbHkgYElXTFdJRklgLlxuXG5UaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzIHNvbGlkLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNydWNpYWwgbGVuZ3RoIGNoZWNrIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIFRoaXMgaXMgbG9jYXRlZCBpbiB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBvZiB0aGUgYGl3bHdpZmlgIGRyaXZlci4gVGhpcyBwYXJ0aWN1bGFyIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB0d28gcm91dGVzLCBlaXRoZXIgdGhlIGRyaXZlcidzIGZpcm13YXJlIGxvYWRpbmcgZnVuY3Rpb24gb3IgdGhlIFVFRkkgdmFyaWFibGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzE0NywiT3V0cHV0VG9rZW5zIjo5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjo1MC43MTQ2MzUxNjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE4MjIyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgd2hlbiBwYXJzaW5nIFBOVk0gU0tVIFRMVnMgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZmlybXdhcmUgcGFyc2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBmaXJtd2FyZSBsb2FkaW5nIG9yIFVFRkkgdmFyaWFibGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[1] Phase: Succeeded StartedAt: 2026-06-30 09:13:02 +0000 UTC FinishedAt: 2026-06-30 09:13:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 09:13:02 +0000 UTC FinishedAt: 2026-06-30 09:13:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2] Phase: Succeeded StartedAt: 2026-06-30 09:13:02 +0000 UTC FinishedAt: 2026-06-30 10:09:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 09:13:02 +0000 UTC FinishedAt: 2026-06-30 10:09:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 09:13:02 +0000 UTC FinishedAt: 2026-06-30 09:13:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 09:13:02 +0000 UTC FinishedAt: 2026-06-30 09:13:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow5jdfx/series-workflow5jdfx-convert-artifact-2209951729/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 09:13:23 +0000 UTC FinishedAt: 2026-06-30 09:39:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 09:13:23 +0000 UTC FinishedAt: 2026-06-30 09:39:26 +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:*969733cd-056c-4cf5-8c07-74418939a37f,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-workflow5jdfx/series-workflow5jdfx-convert-artifact-2209951729/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": "f69be8e7-5ee8-4ddb-9b5c-7272c9aaf0fa", "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-workflow5jdfx/series-workflow5jdfx-build-action-2955143711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 09:13:23 +0000 UTC FinishedAt: 2026-06-30 09:38:58 +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:*969733cd-056c-4cf5-8c07-74418939a37f,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-workflow5jdfx/series-workflow5jdfx-convert-artifact-2209951729/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": "f69be8e7-5ee8-4ddb-9b5c-7272c9aaf0fa", "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-workflow5jdfx/series-workflow5jdfx-build-action-2955143711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 09:39:26 +0000 UTC FinishedAt: 2026-06-30 09:39:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 09:39:26 +0000 UTC FinishedAt: 2026-06-30 09:39:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 09:39:26 +0000 UTC FinishedAt: 2026-06-30 09:39:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 09:39:26 +0000 UTC FinishedAt: 2026-06-30 09:39:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow5jdfx/series-workflow5jdfx-convert-artifact-2221161540/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 09:39:48 +0000 UTC FinishedAt: 2026-06-30 09:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 09:39:48 +0000 UTC FinishedAt: 2026-06-30 09:41:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f69be8e7-5ee8-4ddb-9b5c-7272c9aaf0fa,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-workflow5jdfx/series-workflow5jdfx-build-action-2955143711/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-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 09:42:01 +0000 UTC FinishedAt: 2026-06-30 09:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 09:42:01 +0000 UTC FinishedAt: 2026-06-30 09:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 09:42:01 +0000 UTC FinishedAt: 2026-06-30 10:05:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 09:42:01 +0000 UTC FinishedAt: 2026-06-30 10:05:37 +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:*969733cd-056c-4cf5-8c07-74418939a37f,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-workflow5jdfx/series-workflow5jdfx-convert-artifact-2221161540/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": "6cd6c94a-528d-4e5c-bf52-82f058371bb7", "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-workflow5jdfx/series-workflow5jdfx-build-action-4091176016/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 09:42:01 +0000 UTC FinishedAt: 2026-06-30 10:04:02 +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:*969733cd-056c-4cf5-8c07-74418939a37f,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-workflow5jdfx/series-workflow5jdfx-convert-artifact-2221161540/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": "6cd6c94a-528d-4e5c-bf52-82f058371bb7", "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-workflow5jdfx/series-workflow5jdfx-build-action-4091176016/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 10:05:37 +0000 UTC FinishedAt: 2026-06-30 10:05:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 10:05:37 +0000 UTC FinishedAt: 2026-06-30 10:05:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 10:05:37 +0000 UTC FinishedAt: 2026-06-30 10:07:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 10:05:37 +0000 UTC FinishedAt: 2026-06-30 10:07:25 +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:*6cd6c94a-528d-4e5c-bf52-82f058371bb7,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-workflow5jdfx/series-workflow5jdfx-build-action-4091176016/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-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 10:07:35 +0000 UTC FinishedAt: 2026-06-30 10:09:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 10:07:35 +0000 UTC FinishedAt: 2026-06-30 10:09:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"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:*f69be8e7-5ee8-4ddb-9b5c-7272c9aaf0fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6cd6c94a-528d-4e5c-bf52-82f058371bb7,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-workflow5jdfx/series-workflow5jdfx-build-action-2955143711/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-workflow5jdfx/series-workflow5jdfx-build-action-4091176016/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 10:07:35 +0000 UTC FinishedAt: 2026-06-30 10:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 10:07:35 +0000 UTC FinishedAt: 2026-06-30 10:07:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"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-workflow5jdfx/series-workflow5jdfx-convert-artifact-3709869901/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 10:07:35 +0000 UTC FinishedAt: 2026-06-30 10:07:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 10:07:35 +0000 UTC FinishedAt: 2026-06-30 10:07:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 10:07:35 +0000 UTC FinishedAt: 2026-06-30 10:07:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 10:08:33 +0000 UTC FinishedAt: 2026-06-30 10:09:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jdfx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_pnvm_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI"],"series_id":"c266f2b3-f8fb-4437-9109-e77917eee1ee","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 10:08:33 +0000 UTC FinishedAt: 2026-06-30 10:09:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f69be8e7-5ee8-4ddb-9b5c-7272c9aaf0fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6cd6c94a-528d-4e5c-bf52-82f058371bb7,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-workflow5jdfx/series-workflow5jdfx-build-action-2955143711/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-workflow5jdfx/series-workflow5jdfx-build-action-4091176016/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-workflow5jdfx/series-workflow5jdfx-convert-artifact-3709869901/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,}