Name: series-workflowqzqqf Phase: Succeeded StartedAt: 2026-07-02 07:08:22 +0000 UTC FinishedAt: 2026-07-02 08:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzqqf[0] Phase: Succeeded StartedAt: 2026-07-02 07:08:22 +0000 UTC FinishedAt: 2026-07-02 07:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzqqf[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 07:08:22 +0000 UTC FinishedAt: 2026-07-02 07:51:24 +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": "a24cd110e664396061b0a72930734bf419bf88c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a24cd110e664396061b0a72930734bf419bf88c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "aggr_recv_addba_req_evt", "ath6kl_wmi_addba_req_event_rx" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAgICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhbmQgYW4gZWFybHkgcmV0dXJuIGZvciBhbiBvdXQtb2YtYm91bmRzIHdpbmRvdyBzaXplIGluIHRoZSBBRERCQSByZXF1ZXN0IGV2ZW50IGhhbmRsZXIgb2YgdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYWxsb2NhdGluZyB0aGUgaG9sZCBxdWV1ZS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzZlZGY5NzUwYmRmNzMxNzFjY2Y1NDA2MDFlMTNkMjFlOThlMTNkN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMDc6NTA6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggODBlNjZhY2M1Y2Y2ZTkuLmEzOWM4MTUwNTg3ZWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG5AQCAtMTcyMiwxMyAmIzQzOzE3MjIsMTUgQEAgdm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuIFxuIFx0cnh0aWQgPSBcdTAwMjZhZ2dyX2Nvbm4tXHUwMDNlcnhfdGlkW3RpZF07XG4gXG4tXHRpZiAod2luX3N6IFx1MDAzYyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6IFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpXG4tXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX1JYLCBcJiMzNDslczogd2luX3N6ICVkLCB0aWQgJWRcXG5cJiMzNDssXG4tXHRcdFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcbi1cbiBcdGlmIChyeHRpZC1cdTAwM2VhZ2dyKVxuIFx0XHRhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpO1xuIFxuJiM0MztcdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xuJiM0MztcdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwmIzM0OyVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cnh0aWQtXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XG4gXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XG4gXHRyeHRpZC1cdTAwM2Vob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNzo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg2S0wmIzM0OywKICAgICYjMzQ7QVRINktMX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0JiMzNDssCiAgICAmIzM0O2F0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYW5kIGFuIGVhcmx5IHJldHVybiBmb3IgYW4gb3V0LW9mLWJvdW5kcyB3aW5kb3cgc2l6ZSBpbiB0aGUgQUREQkEgcmVxdWVzdCBldmVudCBoYW5kbGVyIG9mIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGFsbG9jYXRpbmcgdGhlIGhvbGQgcXVldWUuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzZlZGY5NzUwYmRmNzMxNzFjY2Y1NDA2MDFlMTNkMjFlOThlMTNkNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMDc6NTA6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCmluZGV4IDgwZTY2YWNjNWNmNmU5Li5hMzljODE1MDU4N2VlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMKQEAgLTE3MjIsMTMgJiM0MzsxNzIyLDE1IEBAIHZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubywKIAogCXJ4dGlkID0gJmFtcDthZ2dyX2Nvbm4tJmd0O3J4X3RpZFt0aWRdOwogCi0JaWYgKHdpbl9zeiAmbHQ7IEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogJmd0OyBBR0dSX1dJTl9TWl9NQVgpCi0JCWF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX1JYLCAmIzM0OyVzOiB3aW5fc3ogJWQsIHRpZCAlZFxuJiMzNDssCi0JCQkgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpOwotCiAJaWYgKHJ4dGlkLSZndDthZ2dyKQogCQlhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpOwogCiYjNDM7CWlmICh3aW5fc3ogJmx0OyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6ICZndDsgQUdHUl9XSU5fU1pfTUFYKSB7CiYjNDM7CQlhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgJiMzNDslczogd2luX3N6ICVkLCB0aWQgJWRcbiYjMzQ7LAomIzQzOwkJCSAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlyeHRpZC0mZ3Q7c2VxX25leHQgPSBzZXFfbm87CiAJaG9sZF9xX3NpemUgPSBUSURfV0lORE9XX1NaKHdpbl9zeikgKiBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpOwogCXJ4dGlkLSZndDtob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYXRoNmtsIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGFkZGluZyBhIHJldHVybiBzdGF0ZW1lbnQgaWYgYHdpbl9zemAgZmFsbHMgb3V0c2lkZSBvZiB0aGUgYWNjZXB0YWJsZSByYW5nZTogYEFHR1JfV0lOX1NaX01JTmAgYW5kIGBBR0dSX1dJTl9TWl9NQVhgLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBkZXNpZ25lZCB0byBwcmV2ZW50IGRvZGd5IG1lbW9yeSBhbGxvY2F0aW9uLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcg4oCTIHByb3RlY3RpbmcgYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIG9yIGludmFsaWQgd2luZG93IHNpemUgaXMgYWx3YXlzIHBydWRlbnQuIEhvbGQgb24sIHRob3VnaC4uLiB0aGlua2luZyBhYm91dCBpdCwgYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgY291bGQgaGF2ZSBiZWVuIGRvaW5nIHNvbWV0aGluZyBuYXN0eSBpZiBgd2luX3N6YCB3YXMgb3V0IG9mIHNwZWMuCgpOb3cgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgd2UgY2FuIHJlYWNoIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGdldCBgYXRoNmtsYCBydW5uaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIGBhdGg2a2xgIGlzIHRoZSBkcml2ZXIgZm9yIHRob3NlIG9sZCBBdGhlcm9zIEFSNjAwMy9BUjYwMDQgd2lyZWxlc3MgZGV2aWNlcy4gSXMgdGhlcmUgYSB3YXkgdG8gZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IEkmIzM5O20gdXN1YWxseSB1c2luZyBgbWFjODAyMTFfaHdzaW1gIHRvIGVtdWxhdGUgbWFjODAyMTEgZGV2aWNlcywgYnV0IGBhdGg2a2xgIGlzIGEgZnVsbG1hYyBkcml2ZXIsIHNvIGl0IHVzZXMgYGNmZzgwMjExYC4gSXQmIzM5O3Mgbm90IGEgZGlyZWN0IGNvbXBhcmlzb24uCgpXYWl0IGEgc2Vjb25k4oCmIGNhbiBJIGZ1enogdGhpcyB0aGluZyB2aWEgVVNCPyBUaGF0JiMzOTtzIGFuIGludGVyZXN0aW5nIGFuZ2xlLiBMZXQgbWUgY2hlY2sgaWYgYGF0aDZrbGAgZXZlbiAqaGFzKiBhIFVTQiBpbnRlcmZhY2UuIElzIHRoZXJlIGEgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmNgIGZpbGU/IFllcCwgdGhhdCYjMzk7cyB3aGF0IEkmIzM5O2xsIGludmVzdGlnYXRlIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoNmtsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMDM4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9Mj1jb25maWcgQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEwLVx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjExOlx0ICBhdGg2a2xfY29yZS4gUGxlYXNlIG5vdGUgdGhhdCBBUjYwMDIgYW5kIEFSNjAwMSBhcmUgbm90XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTItXHQgIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MTQ9Y29uZmlnIEFUSDZLTF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MTU6XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xNi1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTIwLVx0ICBBdGhlcm9zIEFSNjAwMyBhbmQgQVI2MDA0IGNoaXBzZXRzIHJ1bm5pbmcgb3ZlciBTRElPLiBJZiB5b3VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyMTpcdCAgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdGg2a2xfc2Rpby5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMi1cdCAgUGxlYXNlIG5vdGUgdGhhdCBBUjYwMDIgYW5kIEFSNjAwMSBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI1PWNvbmZpZyBBVEg2S0xfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjY6XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI3LVx0ZGVwZW5kcyBvbiBBVEg2S0xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzItXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjMzOlx0ICBjYWxsZWQgYXRoNmtsX3VzYi5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0zNT1jb25maWcgQVRINktMX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MzY6XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM3LVx0ZGVwZW5kcyBvbiBBVEg2S0xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zOC1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozOTpcdCAgRW5hYmxlcyBhdGg2a2wgZGVidWcgc3VwcG9ydCwgaW5jbHVkaW5nIGRlYnVnIG1lc3NhZ2VzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDAtXHQgIGVuYWJsZWQgd2l0aCBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGRlYnVnZnNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NDU9Y29uZmlnIEFUSDZLTF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NDY6XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ3LVx0ZGVwZW5kcyBvbiBBVEg2S0xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDktXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NTA6XHQgIFNlbGVjdCB0aGlzIHRvIGF0aDZrbCB1c2UgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSB3aGljaCwgZm9yXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTEtXHQgIGV4YW1wbGUsIGNhbiBiZSBlbmFibGVkIHdpdGggaGVscCBvZiB0cmFjZS1jbWQuIEFsbCBkZWJ1Z1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz01Nz1jb25maWcgQVRINktMX1JFR0RPTUFJTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjU4Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCByZWdkb21haW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTU5LVx0ZGVwZW5kcyBvbiBBVEg2S0xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRINktMKSAmIzQzOz0gYXRoNmtsX2NvcmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNjphdGg2a2xfY29yZS15ICYjNDM7PSBkZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI3OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGhpZi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI4OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGh0Y19tYm94Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjk6YXRoNmtsX2NvcmUteSAmIzQzOz0gaHRjX3BpcGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMDphdGg2a2xfY29yZS15ICYjNDM7PSBibWkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMTphdGg2a2xfY29yZS15ICYjNDM7PSBjZmc4MDIxMS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMyOmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGluaXQub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMzphdGg2a2xfY29yZS15ICYjNDM7PSBtYWluLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzQ6YXRoNmtsX2NvcmUteSAmIzQzOz0gdHhyeC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM1OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IHdtaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM2OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGNvcmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNzphdGg2a2xfY29yZS15ICYjNDM7PSByZWNvdmVyeS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozOTphdGg2a2xfY29yZS0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MDphdGg2a2xfY29yZS0kKENPTkZJR19BVEg2S0xfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19BVEg2S0xfU0RJTykgJiM0Mzs9IGF0aDZrbF9zZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDM6YXRoNmtsX3NkaW8teSAmIzQzOz0gc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQVRINktMX1VTQikgJiM0Mzs9IGF0aDZrbF91c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NjphdGg2a2xfdXNiLXkgJiM0Mzs9IHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzOmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4LVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjk6XHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSBkb25lIHNraXBwZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMC1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgKHU4ICopXHUwMDI2Y2lkLCBzaXplb2YoY2lkKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gc2VuZCBibWkgZG9uZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0OmludCBhdGg2a2xfYm1pX2dldF90YXJnZXRfaW5mbyhzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU6XHRcdFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTItXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU1Olx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVx1MDAyNmNpZCwgc2l6ZW9mKGNpZCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Ni1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTc6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHNlbmQgZ2V0IHRhcmdldCBpbmZvOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTgtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02MS1cdGlmIChhci1cdTAwM2VoaWZfdHlwZSA9PSBBVEg2S0xfSElGX1RZUEVfVVNCKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjYyOlx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKil0YXJnX2luZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTYzLVx0XHRcdFx0XHQgIHNpemVvZigqdGFyZ19pbmZvKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY0LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NjU6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsICh1OCAqKVx1MDAyNnRhcmdfaW5mby1cdTAwM2V2ZXJzaW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02Ni1cdFx0XHRcdHNpemVvZih0YXJnX2luZm8tXHUwMDNldmVyc2lvbikpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjcwOlx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWN2IHRhcmdldCBpbmZvOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzEtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03NS1cdFx0LyogRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIGFyZSBpbiB0aGUgVGFyZ2V0JiMzOTtzIHRhcmdfaW5mbyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3NjpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzctXHRcdFx0XHQgICAodTggKilcdTAwMjZ0YXJnX2luZm8tXHUwMDNlYnl0ZV9jb3VudCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTc5LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjgwOlx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7dW5hYmxlIHRvIHJlYWQgdGFyZ2V0IGluZm8gYnl0ZSBjb3VudDogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTgxLVx0XHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk0LVx0XHQvKiBSZWFkIHRoZSByZW1haW5kZXIgb2YgdGhlIHRhcmdfaW5mbyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo5NTpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTYtXHRcdFx0XHQgICAoKHU4ICopdGFyZ19pbmZvKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTAxLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEwMjpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWFkIHRhcmdldCBpbmZvICglZCBieXRlcyk6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDMtXHRcdFx0XHQgICB0YXJnX2luZm8tXHUwMDNlYnl0ZV9jb3VudCwgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTA4Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXCYjMzQ7dGFyZ2V0IGluZm8gKHZlcjogMHgleCB0eXBlOiAweCV4KVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTA5LVx0XHQgICB0YXJnX2luZm8tXHUwMDNldmVyc2lvbiwgdGFyZ19pbmZvLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMTQ6aW50IGF0aDZrbF9ibWlfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMjItXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMjM6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTI0LVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTM0Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTM1LVx0XHQgICBcJiMzNDtibWkgcmVhZCBtZW1vcnk6IGRldmljZTogYWRkcjogMHgleCwgbGVuOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTUxOlx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1Mi1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTM6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1NC1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTYtXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTU3Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1ZiwgcnhfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU4LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1OTpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE2MC1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE3MDppbnQgYXRoNmtsX2JtaV93cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xODAtXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxODE6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgyLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTk1Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTk2LVx0XHQgICBcJiMzNDtibWkgd3JpdGUgbWVtb3J5OiBhZGRyOiAweCV4LCBsZW46ICVkXFxuXCYjMzQ7LCBhZGRyLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjU6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI2LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIyNzpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI4LVx0XHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjM3OmludCBhdGg2a2xfYm1pX2V4ZWN1dGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQ0LVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjQ1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0Ni1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI1NjpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSBleGVjdXRlOiBhZGRyOiAweCV4LCBwYXJhbTogJWQpXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNTctXHRcdCAgIGFkZHIsICpwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI2NzpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY4LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjk6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzAtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3MzpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBzaXplb2YoKnBhcmFtKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjc1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3Ni1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjg0OmludCBhdGg2a2xfYm1pX3NldF9hcHBfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjkxLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjkyOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5My1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMwMzpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSBzZXQgYXBwIHN0YXJ0OiBhZGRyOiAweCV4XFxuXCYjMzQ7LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzA0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMTE6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxMi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzEzOlx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzE0LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMjA6aW50IGF0aDZrbF9ibWlfcmVnX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzI3LVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzI4Olx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyOS1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMzOTpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSByZWFkIFNPQyByZWc6IGFkZHI6IDB4JXhcXG5cJiMzNDssIGFkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM0NzpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ4LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDk6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTAtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1MzpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBzaXplb2YoKnBhcmFtKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1Ni1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzYzOmludCBhdGg2a2xfYm1pX3JlZ193cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiBwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM3MC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM3MTpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzItXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozODI6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zODMtXHRcdCAgIFwmIzM0O2JtaSB3cml0ZSBTT0MgcmVnOiBhZGRyOiAweCV4LCBwYXJhbTogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM5NDpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTY6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTctXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQwMzppbnQgYXRoNmtsX2JtaV9sel9kYXRhKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDEyLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDEzOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxNC1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQyNDpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSBzZW5kIExaIGRhdGE6IGxlbjogJWQpXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MjUtXHRcdCAgIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0MTpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDItXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQzOlx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDQtXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NTQ6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDU1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2MS1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ2MjpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjMtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NzM6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NzQtXHRcdCAgIFwmIzM0O2JtaSBMWiBzdHJlYW0gc3RhcnQ6IGFkZHI6IDB4JXgpXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0ODM6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDg1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byBzdGFydCBMWiBzdHJlYW0gdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4Ni1cdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0OTM6aW50IGF0aDZrbF9ibWlfZmFzdF9kb3dubG9hZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUwMDpcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTAxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTA5Olx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCBidWYsIGxhc3Rfd29yZF9vZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTEzLVx0aWYgKHVuYWxpZ25lZF9ieXRlcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE0Olx0XHRyZXQgPSBhdGg2a2xfYm1pX2x6X2RhdGEoYXIsICh1OCAqKVx1MDAyNmxhc3Rfd29yZCwgNCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxOC1cdFx0ICogVGhpcyBzZXJ2ZXMgbWFpbmx5IHRvIGZsdXNoIFRhcmdldCBjYWNoZXMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxOTpcdFx0cmV0ID0gYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoYXIsIDB4MDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUyNDp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUyOTppbnQgYXRoNmtsX2JtaV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NDQ6dm9pZCBhdGg2a2xfYm1pX2NsZWFudXAoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIxOTpzdHJ1Y3QgYXRoNmtsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjA6c3RydWN0IGF0aDZrbF9ibWlfdGFyZ2V0X2luZm8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjEtXHRfX2xlMzIgYnl0ZV9jb3VudDsgICAvKiBzaXplIG9mIHRoaXMgc3RydWN0dXJlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIyNjojZGVmaW5lIGF0aDZrbF9ibWlfd3JpdGVfaGkzMihhciwgaXRlbSwgdmFsKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI3LVx0KHtcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzMC1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzE6XHRcdGFkZHIgPSBhdGg2a2xfZ2V0X2hpX2l0ZW1fYWRkcihhciwgSElfSVRFTShpdGVtKSk7XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzItXHRcdHYgPSBjcHVfdG9fbGUzMih2YWwpO1x0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzM6XHRcdGF0aDZrbF9ibWlfd3JpdGUoYXIsIGFkZHIsICh1OCAqKSBcdTAwMjZ2LCBzaXplb2YodikpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM0LVx0fSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzY6I2RlZmluZSBhdGg2a2xfYm1pX3JlYWRfaGkzMihhciwgaXRlbSwgdmFsKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM3LVx0KHtcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI0Mi1cdFx0KHZvaWQpIChjaGVja190eXBlID09IHZhbCk7XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNDM6XHRcdGFkZHIgPSBhdGg2a2xfZ2V0X2hpX2l0ZW1fYWRkcihhciwgSElfSVRFTShpdGVtKSk7XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNDQ6XHRcdHJldCA9IGF0aDZrbF9ibWlfcmVhZChhciwgYWRkciwgKHU4ICopIFx1MDAyNnRtcCwgNCk7XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDUtXHRcdGlmICghcmV0KVx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MDppbnQgYXRoNmtsX2JtaV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUxOnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUyOnZvaWQgYXRoNmtsX2JtaV9yZXNldChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU0OmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTU6aW50IGF0aDZrbF9ibWlfZ2V0X3RhcmdldF9pbmZvKHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTY6XHRcdFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTc6aW50IGF0aDZrbF9ibWlfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTg6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU5OmludCBhdGg2a2xfYm1pX2V4ZWN1dGUoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2MC1cdFx0ICAgICAgIHUzMiBhZGRyLCB1MzIgKnBhcmFtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjYxOmludCBhdGg2a2xfYm1pX3NldF9hcHBfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Mi1cdFx0XHQgICAgIHUzMiBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjYzOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NDppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjU6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjY2LVx0XHQgICAgICAgdTggKmJ1ZiwgdTMyIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NzppbnQgYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2OC1cdFx0XHQgICAgICAgdTMyIGFkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjk6aW50IGF0aDZrbF9ibWlfZmFzdF9kb3dubG9hZChzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjcwLVx0XHRcdCAgICAgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo1NzpzdHJ1Y3QgYXRoNmtsX2NmZzgwMjExX21hdGNoX3Byb2JlX3NzaWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTU4LVx0c3RydWN0IGNmZzgwMjExX3NzaWQgc3NpZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NjI6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSBhdGg2a2xfcmF0ZXNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy02My1cdFJBVEVUQUJfRU5UKDEwLCAweDEsIDApLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3NzojZGVmaW5lIGF0aDZrbF9hX3JhdGVzICAgICAoYXRoNmtsX3JhdGVzICYjNDM7IDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzg6I2RlZmluZSBhdGg2a2xfYV9yYXRlc19zaXplICAgIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3OTojZGVmaW5lIGF0aDZrbF9nX3JhdGVzICAgICAoYXRoNmtsX3JhdGVzICYjNDM7IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODA6I2RlZmluZSBhdGg2a2xfZ19yYXRlc19zaXplICAgIDEyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODI6I2RlZmluZSBhdGg2a2xfZ19odGNhcCBJRUVFODAyMTFfSFRfQ0FQX1NHSV8yMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgzOiNkZWZpbmUgYXRoNmtsX2FfaHRjYXAgKElFRUU4MDIxMV9IVF9DQVBfU1VQX1dJRFRIXzIwXzQwIHwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04NC1cdFx0XHRJRUVFODAyMTFfSFRfQ0FQX1NHSV8yMFx0XHQgfCBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4NzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsIGF0aDZrbF8yZ2h6X2NoYW5uZWxzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODgtXHRDSEFOMkcoMSwgMjQxMiwgMCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMDQ6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfNWdoel9hX2NoYW5uZWxzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTA1LVx0Q0hBTjVHKDM2LCAwKSwgQ0hBTjVHKDQwLCAwKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNDpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF8yZ2h6ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNTpcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfMmdoel9jaGFubmVscyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI2Olx0LmNoYW5uZWxzID0gYXRoNmtsXzJnaHpfY2hhbm5lbHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI3Olx0Lm5fYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlc19zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyODpcdC5iaXRyYXRlcyA9IGF0aDZrbF9nX3JhdGVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyOTpcdC5odF9jYXAuY2FwID0gYXRoNmtsX2dfaHRjYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMwLVx0Lmh0X2NhcC5odF9zdXBwb3J0ZWQgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTMzOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kIGF0aDZrbF9iYW5kXzVnaHogPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM0Olx0Lm5fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGF0aDZrbF81Z2h6X2FfY2hhbm5lbHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNTpcdC5jaGFubmVscyA9IGF0aDZrbF81Z2h6X2FfY2hhbm5lbHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM2Olx0Lm5fYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlc19zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNzpcdC5iaXRyYXRlcyA9IGF0aDZrbF9hX3JhdGVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzODpcdC5odF9jYXAuY2FwID0gYXRoNmtsX2FfaHRjYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTM5LVx0Lmh0X2NhcC5odF9zdXBwb3J0ZWQgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDQtLyogcmV0dXJucyB0cnVlIGlmIHNjaGVkdWxlZCBzY2FuIHdhcyBzdG9wcGVkICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTQ1OnN0YXRpYyBib29sIF9fYXRoNmtsX2NmZzgwMjExX3NzY2FuX3N0b3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NzpcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE1NzpcdGF0aDZrbF93bWlfZW5hYmxlX3NjaGVkX3NjYW5fY21kKGFyLVx1MDAzZXdtaSwgdmlmLVx1MDAzZWZ3X3ZpZl9pZHgsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjI6c3RhdGljIHZvaWQgYXRoNmtsX2NmZzgwMjExX3NzY2FuX2Rpc2FibGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2NDpcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2NS1cdGJvb2wgc3RvcHBlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTY3Olx0c3RvcHBlZCA9IF9fYXRoNmtsX2NmZzgwMjExX3NzY2FuX3N0b3AodmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNzU6c3RhdGljIGludCBhdGg2a2xfc2V0X3dwYV92ZXJzaW9uKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc2LVx0XHRcdFx0ICBlbnVtIG5sODAyMTFfd3BhX3ZlcnNpb25zIHdwYV92ZXJzaW9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc4Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogJXVcXG5cJiMzNDssIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODYtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE4NzpcdFx0YXRoNmtsX2VycihcJiMzNDslczogJXUgbm90IHN1cHBvcnRlZFxcblwmIzM0OywgX19mdW5jX18sIHdwYV92ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODgtXHRcdHJldHVybiAtRU5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxOTQ6c3RhdGljIGludCBhdGg2a2xfc2V0X2F1dGhfdHlwZShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5NS1cdFx0XHRcdGVudW0gbmw4MDIxMV9hdXRoX3R5cGUgYXV0aF90eXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk3Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogMHgleFxcblwmIzM0OywgX19mdW5jX18sIGF1dGhfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMTQtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjIxNTpcdFx0YXRoNmtsX2VycihcJiMzNDslczogMHgleCBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7LCBfX2Z1bmNfXywgYXV0aF90eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMTYtXHRcdHJldHVybiAtRU5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMjI6c3RhdGljIGludCBhdGg2a2xfc2V0X2NpcGhlcihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MzIgY2lwaGVyLCBib29sIHVjYXN0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMjg6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFwmIzM0OyVzOiBjaXBoZXIgMHgleCwgdWNhc3QgJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjI5LVx0XHQgICBfX2Z1bmNfXywgY2lwaGVyLCB1Y2FzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI1Ny1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjU4Olx0XHRhdGg2a2xfZXJyKFwmIzM0O2NpcGhlciAweCV4IG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIGNpcGhlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjU5LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjY1OnN0YXRpYyB2b2lkIGF0aDZrbF9zZXRfa2V5X21nbXQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGtleV9tZ210KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjY3Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogMHgleFxcblwmIzM0OywgX19mdW5jX18sIGtleV9tZ210KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODQ6c3RhdGljIGJvb2wgYXRoNmtsX2NmZzgwMjExX3JlYWR5KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODY6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg4LVx0aWYgKCF0ZXN0X2JpdChXTUlfUkVBRFksIFx1MDAyNmFyLVx1MDAzZWZsYWcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg5Olx0XHRhdGg2a2xfZXJyKFwmIzM0O3dtaSBpcyBub3QgcmVhZHlcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI5MC1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTMtXHRpZiAoIXRlc3RfYml0KFdMQU5fRU5BQkxFRCwgXHUwMDI2dmlmLVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI5NDpcdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDt3bGFuIGRpc2FibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTUtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwMTpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfd3BhX2llKGNvbnN0IHU4ICpwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzAyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwODpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfcnNuX2llKGNvbnN0IHU4ICpwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxMzpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfd3BzX2llKGNvbnN0IHU4ICpwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzE0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyMTpzdGF0aWMgaW50IGF0aDZrbF9zZXRfYXNzb2NfcmVxX2llcyhzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCBjb25zdCB1OCAqaWVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMi1cdFx0XHRcdCAgICBzaXplX3QgaWVzX2xlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyNDpcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyNS1cdGNvbnN0IHU4ICpwb3M7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2NDAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVVNCIEZ1enppbmcgUG90ZW50aWFsIGZvciBhdGg2a2xfdXNiISoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGBBVEg2S0xfVVNCYCBpcyBhICpjb25maWd1cmF0aW9uKiBvcHRpb24/IFJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIGBjb25maWcgQVRINktMX1VTQmAsIGl0JiMzOTtzIGEgYHRyaXN0YXRlICYjMzQ7QXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnQmIzM0O2AsIGFuZCAqY3J1Y2lhbGx5KiwgaXQgYGRlcGVuZHMgb24gQVRINktMYC4gIFRoYXQmIzM5O3MuLi4gaW50ZXJlc3RpbmcuICBTbywgdGhpcyBtZWFucyB0aGlzIGlzICpkZWZpbml0ZWx5KiBhIGRyaXZlciB0aGF0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIFVTQi4KClRoYXQgb3BlbnMgdXAgYSB3aG9sZSBuZXcgYXR0YWNrIHN1cmZhY2UuIEkgY2FuIHJlYWNoIHRoaXMgdGhpbmcgdmlhIHRoZSBkdW1teSBIQ0Qgb3IgcmF3LWdhZGdldCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyBhbmQgdGhhdCBtZWFucyBpdCYjMzk7cyBwcmltZSBmb3IgVVNCIGZ1enppbmchIFRoaXMgY2hhbmdlcyBldmVyeXRoaW5nLgoKTm93LCB3YWl0LCBsZXQmIzM5O3MgY29uZmlybSBteSBhc3N1bXB0aW9ucy4uLiBgYXRoNmtsX3VzYmAuLi4gdGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGEgVVNCIGRyaXZlci4gT2theSwgc28gbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHkuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuY2AsIGFuZCBjaGVjayB0byBzZWUgaWYgaXQgcmVnaXN0ZXJzIGEgVVNCIGRyaXZlci4gIFRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiX3JlZ2lzdGVyfG1vZHVsZV91c2JfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jPTEyMzQ9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDZrbF91c2JfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTI0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTI0NTptb2R1bGVfdXNiX2RyaXZlcihhdGg2a2xfdXNiX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxOTkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgaWYgSSYjMzk7bSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IFVTQiBGdXp6aW5nIGFuZCBhdGg2a2wgVnVsbmVyYWJpbGl0eSoqCgpZZXMsIHRoYXQmIzM5O3MgcmlnaHQhIEl0IHNlZW1zIHdlJiMzOTt2ZSBnb3QgYSByZWFjaGFibGUgZW50cnkgcG9pbnQgZm9yIFVTQiBmdXp6aW5nIHdpdGhpbiB0aGUgYGF0aDZrbGAgZHJpdmVyLiBFeGNlbGxlbnQhIFRoZSB2dWxuZXJhYmlsaXR5IGFwcGVhcnMgdG8gYmUgbGlua2VkIHRvIGEgc3BlY2lmaWMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgIGZ1bmN0aW9uLCBhbmQgdGhhdCBmdW5jdGlvbiBsaXZlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNgLiBJIG5lZWQgdG8gZGlnIGludG8gYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBub3cgYW5kIHVuZGVyc3RhbmQgdGhlIG1vZGlmaWNhdGlvbnMgaW4gZGV0YWlsLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD05NjE9dm9pZCBhZ2dyX3JlY3ZfZGVsYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTYyOnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkLCB1MTYgc2VxX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtOTYzLVx0XHRcdCAgICAgdTggd2luX3N6KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2OTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNjk4OnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2OTktXHRcdFx0ICAgICB1OCB3aW5fc3opXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzUyPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozMzU3Olx0YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQodmlmLCBjbWQtXHUwMDNldGlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU4LVx0XHRcdFx0bGUxNl90b19jcHUoY21kLVx1MDAzZXN0X3NlcV9ubyksIGNtZC1cdTAwM2V3aW5fc3opO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTYxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAsIHdoaWNoIGlzIHRyaWdnZXJlZCBieSBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgLiBUaGUga2V5IGlzIHRoYXQgdGhpcyBpcyBhIFdNSSBldmVudCBjb21pbmcgZnJvbSB0aGUgZmlybXdhcmUsIGFuZCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIFVTQiAob3IgU0RJTykgY29tbXVuaWNhdGlvbi4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZSwgYmVjYXVzZSBhIGZ1enplZCBVU0IgZGV2aWNlIGNvdWxkLCBpbiB0aGVvcnksIHNlbmQgY29tcGxldGVseSBhcmJpdHJhcnkgV01JIGV2ZW50cyB0byB0aGUgaG9zdC4gVGhhdCBtZWFucyBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgIGNvdWxkIGJlIGV4cGxvaXRlZC4KClRoZSB2dWxuZXJhYmlsaXR5IHN0ZW1zIGZyb20gdGhlIGB3aW5fc3pgIHZhcmlhYmxlLCB1c2VkIHdpdGhpbiBgVElEX1dJTkRPV19TWmAuIFRoZSBwYXRjaCBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIHZhbHVlIG9mIGB3aW5fc3pgIGZyb20gYmVpbmcgdXNlZCwgYmVjYXVzZSBpdCYjMzk7cyB1c2VkIGluIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBxdWV1ZSBzZXR1cC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBgVElEX1dJTkRPV19TWmAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBzZWUgZXhhY3RseSBob3cgdGhleSYjMzk7cmUgbWl0aWdhdGluZyB0aGUgaXNzdWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgd2luX3N6YCBwYXJhbWV0ZXIgY29udHJvbHMgd2l0aGluIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgcXVldWUgc2V0dXAsIGFuZCBob3cgYSBtYWxpY2lvdXMgdmFsdWUgY291bGQgbGVhZCB0byBhIGJ1ZmZlciBvdmVyZmxvdyBvciBzb21lIG90aGVyIGZvcm0gb2YgbWVtb3J5IGNvcnJ1cHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RJRF9XSU5ET1dfU1omIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD0xNjY9ZW51bSBhdGg2a2xfaHdfZmxhZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjI3MjojZGVmaW5lIFRJRF9XSU5ET1dfU1ooX3gpICAgKChfeCkgXHUwMDNjXHUwMDNjIDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTA0Nj1zdGF0aWMgdm9pZCBhZ2dyX2RlcXVlX2ZybXMoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEwNjktXHQgKiBUYXJnZXQgc2hvdWxkIGp1ZGljaW91c2x5IGNob29zZSB0aGUgd2luX3N6LCBiYXNlZCBvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA3MDpcdCAqIHRoaXMgY29uZGl0aW9uLiBGb3IgNDA5NSwgKFRJRF9XSU5ET1dfU1ogPSAyIHggd2luX3N6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDcxLVx0ICogMiwgNCwgOCwgMTYgd2luX3N6IHdvcmtzIGZpbmUpLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTExMDU9c3RhdGljIGJvb2wgYWdncl9wcm9jZXNzX3JlY3ZfZnJtKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdnX2Nvbm4sIHU4IHRpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMTg3LVx0ICogICAgICAgICB0aGlzIGlzIHRha2VuIGNhcmUgb2YgYWJvdmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMTg4Olx0ICogIDJiLiBpcyB0aGUgZnJhbWVfc2VxX25vIGJleW9uZCB3aW5kb3coc3QsIFRJRF9XSU5ET1dfU1opO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTE4OS1cdCAqICAgICAgLVx1MDAzZSBUYWtlbiBjYXJlIG9mIGl0IGFib3ZlLCBieSBtb3Zpbmcgd2luZG93IGZvcndhcmQuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTY5OD12b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczNC1cdHJ4dGlkLVx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTczNTpcdGhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzYtXHRyeHRpZC1cdTAwM2Vob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzQwLVx0cnh0aWQtXHUwMDNld2luX3N6ID0gd2luX3N6O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTc0MTpcdHJ4dGlkLVx1MDAzZWhvbGRfcV9zeiA9IFRJRF9XSU5ET1dfU1ood2luX3N6KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3NDItXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShcdTAwMjZyeHRpZC1cdTAwM2VxKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyMTYKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHByZXZlbnRpbmcgYGhvbGRfcV9zaXplYCBmcm9tIGdldHRpbmcgbWVzc2VkIHVwIGNhbGN1bGF0aW9ucyBkdWUgdG8gYW4gaW52YWxpZCBgd2luX3N6YCB2YWx1ZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7c21hcnQgbW92ZS4mIzM0OyBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHNjZW5hcmlvIHdoZXJlIGEgZ2lhbnQgYHdpbl9zemAgY291bGQgdHJpZ2dlciBhIGh1Z2UgYWxsb2NhdGlvbiBvciBhbiBpbnRlZ2VyIG92ZXJmbG93LCB3aGljaCwgd2UgYWxsIGtub3csIGlzIGEgcmVjaXBlIGZvciBkaXNhc3Rlci4gT24gdGhlIG90aGVyIGhhbmQsIGlmIGB3aW5fc3pgIGlzIHplcm8sIHdlJiMzOTtyZSBhbGxvY2F0aW5nICpub3RoaW5nKiwgd2hpY2ggY291bGQgZWFzaWx5IHJlc3VsdCBpbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MgbGF0ZXIgb24uIFllcCwgdGhpcyBpcyBhIHByZXR0eSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBVU0IgZnV6emluZyBjb3VsZCB1bmNvdmVyLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gcGlucG9pbnRpbmcgdGhlIGZvY3VzIHN5bWJvbHMuIEkmIzM5O20gdGhpbmtpbmcgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBBbmQgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCBpcyBhbm90aGVyIHN0cm9uZyBjb250ZW5kZXIuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd2Ugc2hvdWxkIGNvbnNpZGVyLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzMzM9c3RhdGljIGludCBhdGg2a2xfd21pX2dldF9wbWtpZF9saXN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM6MzM1MjpzdGF0aWMgaW50IGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzUzLVx0XHRcdFx0XHQgc3RydWN0IGF0aDZrbF92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTM4NzY9c3RhdGljIGludCBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZihzdHJ1Y3Qgd21pICp3bWksIHUxNiBpZl9pZHgsIHUxNiBjbWRfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zOTIyLVx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcJiMzNDtXTUlfQUREQkFfUkVRX0VWRU5USURcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozOTIzOlx0XHRyZXR1cm4gYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngod21pLCBkYXRhcCwgbGVuLCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zOTI0LVx0Y2FzZSBXTUlfREVMQkFfUkVRX0VWRU5USUQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDM0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29udHJvbCBQYWNrZXQgRmxvdyBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoaXMgY29udHJvbCBwYWNrZXQgZmxvdzogYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCBpcyBjYWxsZWQgZnJvbSBgYXRoNmtsX3dtaV9wcm9jX2V2ZW50c192aWZgLiBSaWdodCwgYW5kIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAgaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGBhdGg2a2xfd21pX2NvbnRyb2xfcnhgLiBUaGF0IG1ha2VzIHNlbnNlOyBgYXRoNmtsX3dtaV9jb250cm9sX3J4YCBpcyB0aGUgZW50cnkgcG9pbnQgd2hlbiB0aGUgZGV2aWNlIHNlbmRzIGEgY29udHJvbCBwYWNrZXQuIEdvb2QsIGdvb2QuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0aGlzIHdob2xlIHRoaW5nIHRvIHdvcmsgcHJvcGVybHkuIExldCYjMzk7cyBzZWUuLi4gRmlyc3QsIEkmIzM5O20gY2hlY2tpbmcgZm9yIGBDT05GSUdfQVRINktMX1VTQmAgYW5kIGBDT05GSUdfQVRINktMYC4gIEl0IG1ha2VzIHNlbnNlIHRvIGVuYWJsZSBib3RoIG9mIHRoZXNlLiBPaCwgd2FpdCwgdGhvc2UgYXJlICptb2R1bGVzKi4gT2theSwgcmlnaHQuIE5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4KCk5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdG8gZXhhbWluZT8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGRlcGVuZGVuY2llcy4gSSYjMzk7bSB3b25kZXJpbmcgaWYgYENPTkZJR19NQUM4MDIxMWAgb3IgYENPTkZJR19DRkc4MDIxMWAgYXJlIGludm9sdmVkLiBPaCwgdGhhdCYjMzk7cyByaWdodCwgYEFUSDZLTGAgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLiBUaGF0IGlzIGltcG9ydGFudCEgTGV0JiMzOTtzIGdvIGFuZCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRINktMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI6Y29uZmlnIEFUSDZLTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIG1vYmlsZSBjaGlwc2V0cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE0OmNvbmZpZyBBVEg2S0xfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgU0RJTyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI1OmNvbmZpZyBBVEg2S0xfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozNTpjb25maWcgQVRINktMX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzYtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo0NTpjb25maWcgQVRINktMX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ni1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjU3OmNvbmZpZyBBVEg2S0xfUkVHRE9NQUlOXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDkxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBhdGg2a2wgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgZHJpdmVyLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gc3VycHJpc2VzIG9yIGltcGxpY2l0IGFzc3VtcHRpb25zIGluIGl0cyBidWlsZCBlbnZpcm9ubWVudC4gVGhpcyBjb3VsZCBpbnZvbHZlIGxvb2tpbmcgYXQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLCBvdGhlciBzdWItZHJpdmVycywgcGxhdGZvcm0gcmVxdWlyZW1lbnRzLCBhbnkgYm9hcmQtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIG9yIHBvdGVudGlhbCBjb25mbGljdHMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBwcmVzZW50IGZvciBgYXRoNmtsYCB0byBzdWNjZXNzZnVsbHkgYnVpbGQgYW5kIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGludHJpY2F0ZSByZWxhdGlvbnNoaXBzIGFuZCBtaWdodCB1bmNvdmVyIGEgZmV3IGludGVyZXN0aW5nIGJ1aWxkIHNjZW5hcmlvcyBhbG9uZyB0aGUgd2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRjb25maWcgQVRINktMXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIG1vYmlsZSBjaGlwc2V0cyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgY29yZSBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxuICAgNzpcdFx0ICBBdGhlcm9zIEFSNjAwMyBhbmQgQVI2MDA0IGNoaXBzZXRzLiBZb3Ugc3RpbGwgbmVlZCBzZXBhcmF0ZVxuICAgODpcdFx0ICBidXMgZHJpdmVycyBmb3IgVVNCIGFuZCBTRElPIHRvIGJlIGFibGUgdG8gdXNlIHJlYWwgZGV2aWNlcy5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTE6XHRcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxuICAxMjpcdFx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIEFUSDZLTF9TRElPXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gQVRINktMXG4gIDE3Olx0XHRkZXBlbmRzIG9uIE1NQ1xuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXG4gIDIwOlx0XHQgIEF0aGVyb3MgQVI2MDAzIGFuZCBBUjYwMDQgY2hpcHNldHMgcnVubmluZyBvdmVyIFNESU8uIElmIHlvdVxuICAyMTpcdFx0ICBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0aDZrbF9zZGlvLlxuICAyMjpcdFx0ICBQbGVhc2Ugbm90ZSB0aGF0IEFSNjAwMiBhbmQgQVI2MDAxIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXNcbiAgMjM6XHRcdCAgZHJpdmVyLlxuICAyNDpcdFxuICAyNTpcdGNvbmZpZyBBVEg2S0xfVVNCXG4gIDI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFwmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBBVEg2S0xcbiAgMjg6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI5Olx0XHRoZWxwXG4gIDMwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgMzE6XHRcdCAgQXRoZXJvcyBBUjYwMDQgY2hpcHNldCBhbmQgY2hpcHNldHMgYmFzZWQgb24gaXQgcnVubmluZyBvdmVyXG4gIDMyOlx0XHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxuICAzMzpcdFx0ICBjYWxsZWQgYXRoNmtsX3VzYi5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgQVRINktMX0RFQlVHXG4gIDM2Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBBVEg2S0xcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgRW5hYmxlcyBhdGg2a2wgZGVidWcgc3VwcG9ydCwgaW5jbHVkaW5nIGRlYnVnIG1lc3NhZ2VzXG4gIDQwOlx0XHQgIGVuYWJsZWQgd2l0aCBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGRlYnVnZnNcbiAgNDE6XHRcdCAgaW50ZXJmYWNlLlxuICA0MjpcdFxuICA0MzpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxuICA0NDpcdFxuICA0NTpcdGNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xuICA0NjpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gQVRINktMXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcbiAgNDk6XHRcdGhlbHBcbiAgNTA6XHRcdCAgU2VsZWN0IHRoaXMgdG8gYXRoNmtsIHVzZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlIHdoaWNoLCBmb3JcbiAgNTE6XHRcdCAgZXhhbXBsZSwgY2FuIGJlIGVuYWJsZWQgd2l0aCBoZWxwIG9mIHRyYWNlLWNtZC4gQWxsIGRlYnVnXG4gIDUyOlx0XHQgIG1lc3NhZ2VzIGFuZCBjb21tYW5kcyBhcmUgZGVsaXZlcmVkIHRvIHVzaW5nIGluZGl2aWR1YWxseVxuICA1MzpcdFx0ICBlbmFibGFibGUgdHJhY2UgcG9pbnRzLlxuICA1NDpcdFxuICA1NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxuICA1NjpcdFxuICA1NzpcdGNvbmZpZyBBVEg2S0xfUkVHRE9NQUlOXG4gIDU4Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XCYjMzQ7XG4gIDU5Olx0XHRkZXBlbmRzIG9uIEFUSDZLTFxuICA2MDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgNjE6XHRcdGhlbHBcbiAgNjI6XHRcdCAgRW5hYmxpbmcgdGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHJlZ2RvbWFpbiBpblxuICA2MzpcdFx0ICB0aGUgZmlybXdhcmUuIFRoaXMgY2FuIGJlIG9ubHkgZW5hYmxlZCBpZiByZWd1bGF0b3J5IHJlcXVpcmVtZW50c1xuICA2NDpcdFx0ICBhcmUgdGFrZW4gaW50byBhY2NvdW50LlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI3MgoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiAzNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEFUSDZLTCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBwYXRjaCB3aXRoaW4gdGhlIGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAgbW9kdWxlcy4gVGhlIHBhdGNoIGl0c2VsZiBpcyBzdHJhaWdodGZvcndhcmQ7IGl0JiMzOTtzIGEgZGVmZW5zaXZlIG1lYXN1cmUsIGFkZGluZyBhIGNydWNpYWwgcmV0dXJuIHN0YXRlbWVudCB0byBwcmV2ZW50IHRoZSBwcm9jZXNzaW5nIG9mIGFuIG91dC1vZi1ib3VuZHMgYHdpbl9zemAgdmFsdWUuIFRoaXMgaXMgZ29vZCDigJMgaXQmIzM5O3MgZGlyZWN0bHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gQUREQkEgcmVxdWVzdCBoYW5kbGluZy4KClRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBkZWZpbml0ZWx5IGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgYW5kIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAuIEJvdGggb2YgdGhlc2UgZnVuY3Rpb25zIGRlYWwgd2l0aCBBRERCQSAoQWRkIEJsb2NrIEFjaykgcmVxdWVzdHMsIHdoaWNoIGFyZSBjb250cm9sIGZyYW1lcywgbm90IGRhdGEgZnJhbWVzLiBUaGF0IG1lYW5zIHRoZXkgbWlnaHQgbm90IGJlICpzdXBlciogaGlnaC10aHJvdWdocHV0LCBidXQgdGhleSYjMzk7cmUgc3RpbGwgY3JpdGljYWwgZW50cnkgcG9pbnRzIGZvciB0aGUgQUREQkEgcHJvY2VzcywgbWFraW5nIHRoZW0gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4KClNpbmNlIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgY2FsbHMgYGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZWAsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBpbmNsdWRpbmcgdGhhdCBpbiBvdXIgZm9jdXMgdG9vLiBBbmQgd2hpbGUgd2UgYXJlIGhlcmUsIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBgYXRoNmtsX3dtaV9wcm9jX2V2ZW50c192aWZgIGZ1bmN0aW9uLCBzaW5jZSBpdCBpcyB0aGUgZGlzcGF0Y2hlci4KClRoZXJlZm9yZSwgZm9yIHRoZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24sIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIG9mIGNvdXJzZS4gSSYjMzk7bGwgZGVmaW5lIGBGb2N1c1N5bWJvbHNgIGFzIGBbJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LCAmIzM0O2F0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4JiMzNDtdYC4gV2UgYWxzbyBlbmFibGUgYEFUSDZLTGAgYW5kIGBBVEg2S0xfVVNCYCBjb25maWd1cmF0aW9ucy4KClRoZSByZWFzb25pbmcgaGVyZSBpcyBzb2xpZDogdGhpcyBwYXRjaCBpcyBndWFyZGluZyBhZ2FpbnN0IGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIHRoZSBBRERCQSByZXF1ZXN0IGV2ZW50IGhhbmRsZXIsIGFuZCB0aGUgYEFUSDZLTGAgZHJpdmVyLCBiZWluZyBVU0IgYWNjZXNzaWJsZSwgaXMgcmVhY2hhYmxlIHZpYSBmdXp6aW5nLiBUaGlzIHNldHVwIHdpbGwgYWxsb3cgdXMgdG8gdGhvcm91Z2hseSB0ZXN0IHRoZSBib3VuZHMgY2hlY2sgYW5kIGVuc3VyZSB0aGUgZml4IGlzIGVmZmVjdGl2ZSwgYW5kIHRoYXQgd2UgaGF2ZSBpZGVudGlmaWVkIHRoZSBmdW5jdGlvbnMgdGhlIHBhdGNoIGFmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg2S0wmIzM0OywKICAgICYjMzQ7QVRINktMX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0JiMzNDssCiAgICAmIzM0O2F0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYW5kIGFuIGVhcmx5IHJldHVybiBmb3IgYW4gb3V0LW9mLWJvdW5kcyB3aW5kb3cgc2l6ZSBpbiB0aGUgQUREQkEgcmVxdWVzdCBldmVudCBoYW5kbGVyIG9mIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGFsbG9jYXRpbmcgdGhlIGhvbGQgcXVldWUuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRINktMJiMzNDssCiAgICAmIzM0O0FUSDZLTF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LAogICAgJiMzNDthdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFuZCBhbiBlYXJseSByZXR1cm4gZm9yIGFuIG91dC1vZi1ib3VuZHMgd2luZG93IHNpemUgaW4gdGhlIEFEREJBIHJlcXVlc3QgZXZlbnQgaGFuZGxlciBvZiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiBhbGxvY2F0aW5nIHRoZSBob2xkIHF1ZXVlLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDozMS4xOTc5MTI5NDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjM4NDY0MTI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg2S0xcIixcbiAgICBcIkFUSDZLTF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dFwiLFxuICAgIFwiYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFuZCBhbiBlYXJseSByZXR1cm4gZm9yIGFuIG91dC1vZi1ib3VuZHMgd2luZG93IHNpemUgaW4gdGhlIEFEREJBIHJlcXVlc3QgZXZlbnQgaGFuZGxlciBvZiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiBhbGxvY2F0aW5nIHRoZSBob2xkIHF1ZXVlLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjMxLjE5NzkzMTAzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMzUyMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzZlZGY5NzUwYmRmNzMxNzFjY2Y1NDA2MDFlMTNkMjFlOThlMTNkN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyIDA3OjUwOjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG5pbmRleCA4MGU2NmFjYzVjZjZlOS4uYTM5YzgxNTA1ODdlZWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xcbkBAIC0xNzIyLDEzICsxNzIyLDE1IEBAIHZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG4gXFxuIFxcdHJ4dGlkID0gXFx1MDAyNmFnZ3JfY29ubi1cXHUwMDNlcnhfdGlkW3RpZF07XFxuIFxcbi1cXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWClcXG4tXFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7XFxuLVxcbiBcXHRpZiAocnh0aWQtXFx1MDAzZWFnZ3IpXFxuIFxcdFxcdGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShhZ2dyX2Nvbm4sIHRpZCk7XFxuIFxcbitcXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xcbitcXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXFxcIiVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbiBcXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XFxuIFxcdGhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTtcXG4gXFx0cnh0aWQtXFx1MDAzZWhvbGRfcSA9IGt6YWxsb2MoaG9sZF9xX3NpemUsIEdGUF9LRVJORUwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDozMS42MzIyOTgzNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5NTAyNDYxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhbmQgYW4gZWFybHkgcmV0dXJuIGZvciBhbiBvdXQtb2YtYm91bmRzIHdpbmRvdyBzaXplIGluIHRoZSBBRERCQSByZXF1ZXN0IGV2ZW50IGhhbmRsZXIgb2YgdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYWxsb2NhdGluZyB0aGUgaG9sZCBxdWV1ZS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc2ZWRmOTc1MGJkZjczMTcxY2NmNTQwNjAxZTEzZDIxZTk4ZTEzZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA3OjUwOjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggODBlNjZhY2M1Y2Y2ZTkuLmEzOWM4MTUwNTg3ZWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG5AQCAtMTcyMiwxMyArMTcyMiwxNSBAQCB2b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXG4gXG4gXHRyeHRpZCA9IFx1MDAyNmFnZ3JfY29ubi1cdTAwM2VyeF90aWRbdGlkXTtcbiBcbi1cdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWClcbi1cdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwiJXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCIsXG4tXHRcdFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcbi1cbiBcdGlmIChyeHRpZC1cdTAwM2VhZ2dyKVxuIFx0XHRhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpO1xuIFxuK1x0aWYgKHdpbl9zeiBcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcdTAwM2UgQUdHUl9XSU5fU1pfTUFYKSB7XG4rXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX1JYLCBcIiVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcblwiLFxuK1x0XHRcdCAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJ4dGlkLVx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xuIFx0aG9sZF9xX3NpemUgPSBUSURfV0lORE9XX1NaKHdpbl9zeikgKiBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpO1xuIFx0cnh0aWQtXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDozMS42MzIzMDAxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Mjc5NjA4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGF0aDZrbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgLiBFc3NlbnRpYWxseSwgaXQncyBhZGRpbmcgYSByZXR1cm4gc3RhdGVtZW50IGlmIGB3aW5fc3pgIGZhbGxzIG91dHNpZGUgb2YgdGhlIGFjY2VwdGFibGUgcmFuZ2U6IGBBR0dSX1dJTl9TWl9NSU5gIGFuZCBgQUdHUl9XSU5fU1pfTUFYYC4gSXQncyBhIGZ1bmN0aW9uYWwgZml4LCBkZXNpZ25lZCB0byBwcmV2ZW50IGRvZGd5IG1lbW9yeSBhbGxvY2F0aW9uLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcg4oCTIHByb3RlY3RpbmcgYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIG9yIGludmFsaWQgd2luZG93IHNpemUgaXMgYWx3YXlzIHBydWRlbnQuIEhvbGQgb24sIHRob3VnaC4uLiB0aGlua2luZyBhYm91dCBpdCwgYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgY291bGQgaGF2ZSBiZWVuIGRvaW5nIHNvbWV0aGluZyBuYXN0eSBpZiBgd2luX3N6YCB3YXMgb3V0IG9mIHNwZWMuXG5cbk5vdyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiByZWFjaCB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiBnZXQgYGF0aDZrbGAgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBgYXRoNmtsYCBpcyB0aGUgZHJpdmVyIGZvciB0aG9zZSBvbGQgQXRoZXJvcyBBUjYwMDMvQVI2MDA0IHdpcmVsZXNzIGRldmljZXMuIElzIHRoZXJlIGEgd2F5IHRvIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBJJ20gdXN1YWxseSB1c2luZyBgbWFjODAyMTFfaHdzaW1gIHRvIGVtdWxhdGUgbWFjODAyMTEgZGV2aWNlcywgYnV0IGBhdGg2a2xgIGlzIGEgZnVsbG1hYyBkcml2ZXIsIHNvIGl0IHVzZXMgYGNmZzgwMjExYC4gSXQncyBub3QgYSBkaXJlY3QgY29tcGFyaXNvbi5cblxuV2FpdCBhIHNlY29uZOKApiBjYW4gSSBmdXp6IHRoaXMgdGhpbmcgdmlhIFVTQj8gVGhhdCdzIGFuIGludGVyZXN0aW5nIGFuZ2xlLiBMZXQgbWUgY2hlY2sgaWYgYGF0aDZrbGAgZXZlbiAqaGFzKiBhIFVTQiBpbnRlcmZhY2UuIElzIHRoZXJlIGEgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmNgIGZpbGU/IFllcCwgdGhhdCdzIHdoYXQgSSdsbCBpbnZlc3RpZ2F0ZSBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTA6MzcuNDYwMjYzNDAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzQ5NTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDZrbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMDM4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9Mj1jb25maWcgQVRINktMXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTAtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxMTpcXHQgIGF0aDZrbF9jb3JlLiBQbGVhc2Ugbm90ZSB0aGF0IEFSNjAwMiBhbmQgQVI2MDAxIGFyZSBub3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTItXFx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MTQ9Y29uZmlnIEFUSDZLTF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE1OlxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTE2LVxcdGRlcGVuZHMgb24gQVRINktMXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjAtXFx0ICBBdGhlcm9zIEFSNjAwMyBhbmQgQVI2MDA0IGNoaXBzZXRzIHJ1bm5pbmcgb3ZlciBTRElPLiBJZiB5b3VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjE6XFx0ICBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0aDZrbF9zZGlvLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMi1cXHQgIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI1PWNvbmZpZyBBVEg2S0xfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI2OlxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zMi1cXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcXHQgIGNhbGxlZCBhdGg2a2xfdXNiLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MzU9Y29uZmlnIEFUSDZLTF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozNjpcXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM3LVxcdGRlcGVuZHMgb24gQVRINktMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6Mzk6XFx0ICBFbmFibGVzIGF0aDZrbCBkZWJ1ZyBzdXBwb3J0LCBpbmNsdWRpbmcgZGVidWcgbWVzc2FnZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDAtXFx0ICBlbmFibGVkIHdpdGggZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyIGFuZCBkZWJ1Z2ZzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NDU9Y29uZmlnIEFUSDZLTF9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ2OlxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00OS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjUwOlxcdCAgU2VsZWN0IHRoaXMgdG8gYXRoNmtsIHVzZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlIHdoaWNoLCBmb3JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTEtXFx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz01Nz1jb25maWcgQVRINktMX1JFR0RPTUFJTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1ODpcXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCByZWdkb21haW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTktXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRINktMKSArPSBhdGg2a2xfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNjphdGg2a2xfY29yZS15ICs9IGRlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI3OmF0aDZrbF9jb3JlLXkgKz0gaGlmLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI4OmF0aDZrbF9jb3JlLXkgKz0gaHRjX21ib3gub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjk6YXRoNmtsX2NvcmUteSArPSBodGNfcGlwZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMDphdGg2a2xfY29yZS15ICs9IGJtaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMTphdGg2a2xfY29yZS15ICs9IGNmZzgwMjExLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMyOmF0aDZrbF9jb3JlLXkgKz0gaW5pdC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMzphdGg2a2xfY29yZS15ICs9IG1haW4ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzQ6YXRoNmtsX2NvcmUteSArPSB0eHJ4Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM1OmF0aDZrbF9jb3JlLXkgKz0gd21pLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM2OmF0aDZrbF9jb3JlLXkgKz0gY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNzphdGg2a2xfY29yZS15ICs9IHJlY292ZXJ5Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzk6YXRoNmtsX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDA6YXRoNmtsX2NvcmUtJChDT05GSUdfQVRINktMX1RSQUNJTkcpICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX0FUSDZLTF9TRElPKSArPSBhdGg2a2xfc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MzphdGg2a2xfc2Rpby15ICs9IHNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQVRINktMX1VTQikgKz0gYXRoNmtsX3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NjphdGg2a2xfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzOmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4LVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjk6XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBkb25lIHNraXBwZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVxcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byBzZW5kIGJtaSBkb25lOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQ6aW50IGF0aDZrbF9ibWlfZ2V0X3RhcmdldF9pbmZvKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU1OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCAodTggKilcXHUwMDI2Y2lkLCBzaXplb2YoY2lkKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Ni1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gc2VuZCBnZXQgdGFyZ2V0IGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjEtXFx0aWYgKGFyLVxcdTAwM2VoaWZfdHlwZSA9PSBBVEg2S0xfSElGX1RZUEVfVVNCKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2MjpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKil0YXJnX2luZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02My1cXHRcXHRcXHRcXHRcXHQgIHNpemVvZigqdGFyZ19pbmZvKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NjU6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgKHU4ICopXFx1MDAyNnRhcmdfaW5mby1cXHUwMDNldmVyc2lvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY2LVxcdFxcdFxcdFxcdHNpemVvZih0YXJnX2luZm8tXFx1MDAzZXZlcnNpb24pKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjktXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NzA6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlY3YgdGFyZ2V0IGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzUtXFx0XFx0LyogRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIGFyZSBpbiB0aGUgVGFyZ2V0J3MgdGFyZ19pbmZvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3NjpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzctXFx0XFx0XFx0XFx0ICAgKHU4ICopXFx1MDAyNnRhcmdfaW5mby1cXHUwMDNlYnl0ZV9jb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzktXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6ODA6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwidW5hYmxlIHRvIHJlYWQgdGFyZ2V0IGluZm8gYnl0ZSBjb3VudDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04MS1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy05NC1cXHRcXHQvKiBSZWFkIHRoZSByZW1haW5kZXIgb2YgdGhlIHRhcmdfaW5mbyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6OTU6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk2LVxcdFxcdFxcdFxcdCAgICgodTggKil0YXJnX2luZm8pICtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTAxLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEwMjpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVhZCB0YXJnZXQgaW5mbyAoJWQgYnl0ZXMpOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwMy1cXHRcXHRcXHRcXHQgICB0YXJnX2luZm8tXFx1MDAzZWJ5dGVfY291bnQsIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEwODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwidGFyZ2V0IGluZm8gKHZlcjogMHgleCB0eXBlOiAweCV4KVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwOS1cXHRcXHQgICB0YXJnX2luZm8tXFx1MDAzZXZlcnNpb24sIHRhcmdfaW5mby1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjExNDppbnQgYXRoNmtsX2JtaV9yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEyMi1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEyMzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTI0LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMzQ6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzNS1cXHRcXHQgICBcXFwiYm1pIHJlYWQgbWVtb3J5OiBkZXZpY2U6IGFkZHI6IDB4JXgsIGxlbjogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1MTpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTUyLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1MzpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTQtXFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU2LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1NzpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIHJ4X2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTgtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTU5OlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjAtXFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTcwOmludCBhdGg2a2xfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE3MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE4MC1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE4MTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgyLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxOTU6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5Ni1cXHRcXHQgICBcXFwiYm1pIHdyaXRlIG1lbW9yeTogYWRkcjogMHgleCwgbGVuOiAlZFxcXFxuXFxcIiwgYWRkciwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjI1OlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMjYtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjI3OlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyOC1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMzc6aW50IGF0aDZrbF9ibWlfZXhlY3V0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNDQtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNDU6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0Ni1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjU2OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJibWkgZXhlY3V0ZTogYWRkcjogMHgleCwgcGFyYW06ICVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI1Ny1cXHRcXHQgICBhZGRyLCAqcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjc6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI2OC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjk6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcwLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3MzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIHNpemVvZigqcGFyYW0pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3NC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNzU6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlYWQgZnJvbSB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3Ni1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyODQ6aW50IGF0aDZrbF9ibWlfc2V0X2FwcF9zdGFydChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOTEtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyOTI6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5My1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzAzOlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJibWkgc2V0IGFwcCBzdGFydDogYWRkcjogMHgleFxcXFxuXFxcIiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMxMTpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzEyLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMxMzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTQtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzIwOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyNy1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMyODpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzI5LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMzk6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSByZWFkIFNPQyByZWc6IGFkZHI6IDB4JXhcXFxcblxcXCIsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDc6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0OC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDk6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUwLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1MzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIHNpemVvZigqcGFyYW0pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1NC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTU6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlYWQgZnJvbSB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1Ni1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNjM6aW50IGF0aDZrbF9ibWlfcmVnX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyIHBhcmFtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzcwLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzcxOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzItXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM4MjpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgzLVxcdFxcdCAgIFxcXCJibWkgd3JpdGUgU09DIHJlZzogYWRkcjogMHgleCwgcGFyYW06ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTQ6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTY6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk3LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQwMzppbnQgYXRoNmtsX2JtaV9sel9kYXRhKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDEyLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDEzOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MTQtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQyNDpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIHNlbmQgTFogZGF0YTogbGVuOiAlZClcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MjUtXFx0XFx0ICAgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQxOlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDItXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQzOlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ0NC1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NTQ6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2MS1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ2MjpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDYzLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NzM6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ3NC1cXHRcXHQgICBcXFwiYm1pIExaIHN0cmVhbSBzdGFydDogYWRkcjogMHgleClcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ4MzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDg0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ4NTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gc3RhcnQgTFogc3RyZWFtIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDg2LVxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ5MzppbnQgYXRoNmtsX2JtaV9mYXN0X2Rvd25sb2FkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUwMDpcXHRyZXQgPSBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChhciwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MDEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTA5OlxcdHJldCA9IGF0aDZrbF9ibWlfbHpfZGF0YShhciwgYnVmLCBsYXN0X3dvcmRfb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTMtXFx0aWYgKHVuYWxpZ25lZF9ieXRlcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxNDpcXHRcXHRyZXQgPSBhdGg2a2xfYm1pX2x6X2RhdGEoYXIsICh1OCAqKVxcdTAwMjZsYXN0X3dvcmQsIDQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTgtXFx0XFx0ICogVGhpcyBzZXJ2ZXMgbWFpbmx5IHRvIGZsdXNoIFRhcmdldCBjYWNoZXMuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MTk6XFx0XFx0cmV0ID0gYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoYXIsIDB4MDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTI0OnZvaWQgYXRoNmtsX2JtaV9yZXNldChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUyOTppbnQgYXRoNmtsX2JtaV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTQ0OnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjE5OnN0cnVjdCBhdGg2a2w7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjA6c3RydWN0IGF0aDZrbF9ibWlfdGFyZ2V0X2luZm8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjIxLVxcdF9fbGUzMiBieXRlX2NvdW50OyAgIC8qIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjI2OiNkZWZpbmUgYXRoNmtsX2JtaV93cml0ZV9oaTMyKGFyLCBpdGVtLCB2YWwpXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI3LVxcdCh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMxOlxcdFxcdGFkZHIgPSBhdGg2a2xfZ2V0X2hpX2l0ZW1fYWRkcihhciwgSElfSVRFTShpdGVtKSk7XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjMyLVxcdFxcdHYgPSBjcHVfdG9fbGUzMih2YWwpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIzMzpcXHRcXHRhdGg2a2xfYm1pX3dyaXRlKGFyLCBhZGRyLCAodTggKikgXFx1MDAyNnYsIHNpemVvZih2KSk7XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM0LVxcdH0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzY6I2RlZmluZSBhdGg2a2xfYm1pX3JlYWRfaGkzMihhciwgaXRlbSwgdmFsKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNy1cXHQoe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQyLVxcdFxcdCh2b2lkKSAoY2hlY2tfdHlwZSA9PSB2YWwpO1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI0MzpcXHRcXHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI0NDpcXHRcXHRyZXQgPSBhdGg2a2xfYm1pX3JlYWQoYXIsIGFkZHIsICh1OCAqKSBcXHUwMDI2dG1wLCA0KTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDUtXFx0XFx0aWYgKCFyZXQpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTA6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTE6dm9pZCBhdGg2a2xfYm1pX2NsZWFudXAoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUyOnZvaWQgYXRoNmtsX2JtaV9yZXNldChzdHJ1Y3QgYXRoNmtsICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTQ6aW50IGF0aDZrbF9ibWlfZG9uZShzdHJ1Y3QgYXRoNmtsICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTU6aW50IGF0aDZrbF9ibWlfZ2V0X3RhcmdldF9pbmZvKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU2OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NzppbnQgYXRoNmtsX2JtaV9yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTg6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1OTppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjYwLVxcdFxcdCAgICAgICB1MzIgYWRkciwgdTMyICpwYXJhbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjE6aW50IGF0aDZrbF9ibWlfc2V0X2FwcF9zdGFydChzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Mi1cXHRcXHRcXHQgICAgIHUzMiBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MzppbnQgYXRoNmtsX2JtaV9yZWdfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY0OmludCBhdGg2a2xfYm1pX3JlZ193cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiBwYXJhbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjU6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Ni1cXHRcXHQgICAgICAgdTggKmJ1ZiwgdTMyIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjc6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjY4LVxcdFxcdFxcdCAgICAgICB1MzIgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjk6aW50IGF0aDZrbF9ibWlfZmFzdF9kb3dubG9hZChzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI3MC1cXHRcXHRcXHQgICAgIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NTc6c3RydWN0IGF0aDZrbF9jZmc4MDIxMV9tYXRjaF9wcm9iZV9zc2lkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNTgtXFx0c3RydWN0IGNmZzgwMjExX3NzaWQgc3NpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy02MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NjI6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSBhdGg2a2xfcmF0ZXNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjMtXFx0UkFURVRBQl9FTlQoMTAsIDB4MSwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc3OiNkZWZpbmUgYXRoNmtsX2FfcmF0ZXMgICAgIChhdGg2a2xfcmF0ZXMgKyA0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3ODojZGVmaW5lIGF0aDZrbF9hX3JhdGVzX3NpemUgICAgOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3OTojZGVmaW5lIGF0aDZrbF9nX3JhdGVzICAgICAoYXRoNmtsX3JhdGVzICsgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODA6I2RlZmluZSBhdGg2a2xfZ19yYXRlc19zaXplICAgIDEyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4MjojZGVmaW5lIGF0aDZrbF9nX2h0Y2FwIElFRUU4MDIxMV9IVF9DQVBfU0dJXzIwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgzOiNkZWZpbmUgYXRoNmtsX2FfaHRjYXAgKElFRUU4MDIxMV9IVF9DQVBfU1VQX1dJRFRIXzIwXzQwIHwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04NC1cXHRcXHRcXHRJRUVFODAyMTFfSFRfQ0FQX1NHSV8yMFxcdFxcdCB8IFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODc6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfMmdoel9jaGFubmVsc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04OC1cXHRDSEFOMkcoMSwgMjQxMiwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMDQ6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfNWdoel9hX2NoYW5uZWxzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwNS1cXHRDSEFONUcoMzYsIDApLCBDSEFONUcoNDAsIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI0OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kIGF0aDZrbF9iYW5kXzJnaHogPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNTpcXHQubl9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoNmtsXzJnaHpfY2hhbm5lbHMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjY6XFx0LmNoYW5uZWxzID0gYXRoNmtsXzJnaHpfY2hhbm5lbHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNzpcXHQubl9iaXRyYXRlcyA9IGF0aDZrbF9nX3JhdGVzX3NpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyODpcXHQuYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI5OlxcdC5odF9jYXAuY2FwID0gYXRoNmtsX2dfaHRjYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzMC1cXHQuaHRfY2FwLmh0X3N1cHBvcnRlZCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzM6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgYXRoNmtsX2JhbmRfNWdoeiA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM0OlxcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfNWdoel9hX2NoYW5uZWxzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM1OlxcdC5jaGFubmVscyA9IGF0aDZrbF81Z2h6X2FfY2hhbm5lbHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNjpcXHQubl9iaXRyYXRlcyA9IGF0aDZrbF9hX3JhdGVzX3NpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNzpcXHQuYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM4OlxcdC5odF9jYXAuY2FwID0gYXRoNmtsX2FfaHRjYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzOS1cXHQuaHRfY2FwLmh0X3N1cHBvcnRlZCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ0LS8qIHJldHVybnMgdHJ1ZSBpZiBzY2hlZHVsZWQgc2NhbiB3YXMgc3RvcHBlZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNDU6c3RhdGljIGJvb2wgX19hdGg2a2xfY2ZnODAyMTFfc3NjYW5fc3RvcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNDc6XFx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNTc6XFx0YXRoNmtsX3dtaV9lbmFibGVfc2NoZWRfc2Nhbl9jbWQoYXItXFx1MDAzZXdtaSwgdmlmLVxcdTAwM2Vmd192aWZfaWR4LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2MjpzdGF0aWMgdm9pZCBhdGg2a2xfY2ZnODAyMTFfc3NjYW5fZGlzYWJsZShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjQ6XFx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjUtXFx0Ym9vbCBzdG9wcGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2NzpcXHRzdG9wcGVkID0gX19hdGg2a2xfY2ZnODAyMTFfc3NjYW5fc3RvcCh2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNzU6c3RhdGljIGludCBhdGg2a2xfc2V0X3dwYV92ZXJzaW9uKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ni1cXHRcXHRcXHRcXHQgIGVudW0gbmw4MDIxMV93cGFfdmVyc2lvbnMgd3BhX3ZlcnNpb24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE3ODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCIlczogJXVcXFxcblxcXCIsIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODYtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTg3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIiVzOiAldSBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgd3BhX3ZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODgtXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE5NDpzdGF0aWMgaW50IGF0aDZrbF9zZXRfYXV0aF90eXBlKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5NS1cXHRcXHRcXHRcXHRlbnVtIG5sODAyMTFfYXV0aF90eXBlIGF1dGhfdHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk3OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIiVzOiAweCV4XFxcXG5cXFwiLCBfX2Z1bmNfXywgYXV0aF90eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIxNC1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMTU6XFx0XFx0YXRoNmtsX2VycihcXFwiJXM6IDB4JXggbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18sIGF1dGhfdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIxNi1cXHRcXHRyZXR1cm4gLUVOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjIyOnN0YXRpYyBpbnQgYXRoNmtsX3NldF9jaXBoZXIoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGNpcGhlciwgYm9vbCB1Y2FzdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjIyODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCIlczogY2lwaGVyIDB4JXgsIHVjYXN0ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjktXFx0XFx0ICAgX19mdW5jX18sIGNpcGhlciwgdWNhc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI1Ny1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyNTg6XFx0XFx0YXRoNmtsX2VycihcXFwiY2lwaGVyIDB4JXggbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgY2lwaGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjU5LVxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyNjU6c3RhdGljIHZvaWQgYXRoNmtsX3NldF9rZXlfbWdtdChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MzIga2V5X21nbXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NzpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCIlczogMHgleFxcXFxuXFxcIiwgX19mdW5jX18sIGtleV9tZ210KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg0OnN0YXRpYyBib29sIGF0aDZrbF9jZmc4MDIxMV9yZWFkeShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODY6XFx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4OC1cXHRpZiAoIXRlc3RfYml0KFdNSV9SRUFEWSwgXFx1MDAyNmFyLVxcdTAwM2VmbGFnKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODk6XFx0XFx0YXRoNmtsX2VycihcXFwid21pIGlzIG5vdCByZWFkeVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI5MC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjkzLVxcdGlmICghdGVzdF9iaXQoV0xBTl9FTkFCTEVELCBcXHUwMDI2dmlmLVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjk0OlxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIndsYW4gZGlzYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTUtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzAxOnN0YXRpYyBib29sIGF0aDZrbF9pc193cGFfaWUoY29uc3QgdTggKnBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwODpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfcnNuX2llKGNvbnN0IHU4ICpwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMTM6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwc19pZShjb25zdCB1OCAqcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzIxOnN0YXRpYyBpbnQgYXRoNmtsX3NldF9hc3NvY19yZXFfaWVzKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIGNvbnN0IHU4ICppZXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMi1cXHRcXHRcXHRcXHQgICAgc2l6ZV90IGllc19sZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyNDpcXHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyNS1cXHRjb25zdCB1OCAqcG9zO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjM3LjUyMDAxOTA5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzUxNDIwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVVNCIEZ1enppbmcgUG90ZW50aWFsIGZvciBhdGg2a2xfdXNiISoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gYEFUSDZLTF9VU0JgIGlzIGEgKmNvbmZpZ3VyYXRpb24qIG9wdGlvbj8gUmlnaHQsIGxldCdzIHNlZS4uLiBgY29uZmlnIEFUSDZLTF9VU0JgLCBpdCdzIGEgYHRyaXN0YXRlIFwiQXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnRcImAsIGFuZCAqY3J1Y2lhbGx5KiwgaXQgYGRlcGVuZHMgb24gQVRINktMYC4gIFRoYXQncy4uLiBpbnRlcmVzdGluZy4gIFNvLCB0aGlzIG1lYW5zIHRoaXMgaXMgKmRlZmluaXRlbHkqIGEgZHJpdmVyIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggVVNCLlxuXG5UaGF0IG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF0dGFjayBzdXJmYWNlLiBJIGNhbiByZWFjaCB0aGlzIHRoaW5nIHZpYSB0aGUgZHVtbXkgSENEIG9yIHJhdy1nYWRnZXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgYW5kIHRoYXQgbWVhbnMgaXQncyBwcmltZSBmb3IgVVNCIGZ1enppbmchIFRoaXMgY2hhbmdlcyBldmVyeXRoaW5nLlxuXG5Ob3csIHdhaXQsIGxldCdzIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMuLi4gYGF0aDZrbF91c2JgLi4uIHRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIFVTQiBkcml2ZXIuIE9rYXksIHNvIGxldCdzIHZlcmlmeSB0aGF0IHF1aWNrbHkuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jYCwgYW5kIGNoZWNrIHRvIHNlZSBpZiBpdCByZWdpc3RlcnMgYSBVU0IgZHJpdmVyLiAgVGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgd2UndmUgZ290IVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY0MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDo0Mi40NTUxNjMxNDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyMzIzMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiX3JlZ2lzdGVyfG1vZHVsZV91c2JfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0xMjM0PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBhdGg2a2xfdXNiX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyNDU6bW9kdWxlX3VzYl9kcml2ZXIoYXRoNmtsX3VzYl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTI0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTA6NDIuNTExMzk5OTYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4OTIxNzM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBpZiBJJ20gdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IFVTQiBGdXp6aW5nIGFuZCBhdGg2a2wgVnVsbmVyYWJpbGl0eSoqXG5cblllcywgdGhhdCdzIHJpZ2h0ISBJdCBzZWVtcyB3ZSd2ZSBnb3QgYSByZWFjaGFibGUgZW50cnkgcG9pbnQgZm9yIFVTQiBmdXp6aW5nIHdpdGhpbiB0aGUgYGF0aDZrbGAgZHJpdmVyLiBFeGNlbGxlbnQhIFRoZSB2dWxuZXJhYmlsaXR5IGFwcGVhcnMgdG8gYmUgbGlua2VkIHRvIGEgc3BlY2lmaWMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgIGZ1bmN0aW9uLCBhbmQgdGhhdCBmdW5jdGlvbiBsaXZlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNgLiBJIG5lZWQgdG8gZGlnIGludG8gYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBub3cgYW5kIHVuZGVyc3RhbmQgdGhlIG1vZGlmaWNhdGlvbnMgaW4gZGV0YWlsLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHZlY3Rvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxOTksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDo0NS44MDA2MTk2ODlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MzUzNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9OTYxPXZvaWQgYWdncl9yZWN2X2RlbGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5NjI6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQsIHUxNiBzZXFfbm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtOTYzLVxcdFxcdFxcdCAgICAgdTggd2luX3N6KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2NzI9c3RhdGljIHZvaWQgYWdncl9kZWxldGVfdGlkX3N0YXRlKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdncl9jb25uLCB1OCB0aWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2OTg6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2OTktXFx0XFx0XFx0ICAgICB1OCB3aW5fc3opXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzNTI9c3RhdGljIGludCBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTc6XFx0YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQodmlmLCBjbWQtXFx1MDAzZXRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTgtXFx0XFx0XFx0XFx0bGUxNl90b19jcHUoY21kLVxcdTAwM2VzdF9zZXFfbm8pLCBjbWQtXFx1MDAzZXdpbl9zeik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjQ1Ljg1ODA1OTEyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjY5NTA0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAsIHdoaWNoIGlzIHRyaWdnZXJlZCBieSBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgLiBUaGUga2V5IGlzIHRoYXQgdGhpcyBpcyBhIFdNSSBldmVudCBjb21pbmcgZnJvbSB0aGUgZmlybXdhcmUsIGFuZCB3ZSdyZSBkZWFsaW5nIHdpdGggVVNCIChvciBTRElPKSBjb21tdW5pY2F0aW9uLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGlzc3VlLCBiZWNhdXNlIGEgZnV6emVkIFVTQiBkZXZpY2UgY291bGQsIGluIHRoZW9yeSwgc2VuZCBjb21wbGV0ZWx5IGFyYml0cmFyeSBXTUkgZXZlbnRzIHRvIHRoZSBob3N0LiBUaGF0IG1lYW5zIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgY291bGQgYmUgZXhwbG9pdGVkLlxuXG5UaGUgdnVsbmVyYWJpbGl0eSBzdGVtcyBmcm9tIHRoZSBgd2luX3N6YCB2YXJpYWJsZSwgdXNlZCB3aXRoaW4gYFRJRF9XSU5ET1dfU1pgLiBUaGUgcGF0Y2ggcHJldmVudHMgYW4gb3V0LW9mLWJvdW5kcyB2YWx1ZSBvZiBgd2luX3N6YCBmcm9tIGJlaW5nIHVzZWQsIGJlY2F1c2UgaXQncyB1c2VkIGluIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBxdWV1ZSBzZXR1cC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBgVElEX1dJTkRPV19TWmAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBzZWUgZXhhY3RseSBob3cgdGhleSdyZSBtaXRpZ2F0aW5nIHRoZSBpc3N1ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGB3aW5fc3pgIHBhcmFtZXRlciBjb250cm9scyB3aXRoaW4gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBxdWV1ZSBzZXR1cCwgYW5kIGhvdyBhIG1hbGljaW91cyB2YWx1ZSBjb3VsZCBsZWFkIHRvIGEgYnVmZmVyIG92ZXJmbG93IG9yIHNvbWUgb3RoZXIgZm9ybSBvZiBtZW1vcnkgY29ycnVwdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5NjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTA6NTEuNTI1MDExMzYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk4MzA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJUSURfV0lORE9XX1NaXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTE2Nj1lbnVtIGF0aDZrbF9od19mbGFncyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6MjcyOiNkZWZpbmUgVElEX1dJTkRPV19TWihfeCkgICAoKF94KSBcXHUwMDNjXFx1MDAzYyAxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTEwNDY9c3RhdGljIHZvaWQgYWdncl9kZXF1ZV9mcm1zKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdnX2Nvbm4sIHU4IHRpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEwNjktXFx0ICogVGFyZ2V0IHNob3VsZCBqdWRpY2lvdXNseSBjaG9vc2UgdGhlIHdpbl9zeiwgYmFzZWQgb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMDcwOlxcdCAqIHRoaXMgY29uZGl0aW9uLiBGb3IgNDA5NSwgKFRJRF9XSU5ET1dfU1ogPSAyIHggd2luX3N6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA3MS1cXHQgKiAyLCA0LCA4LCAxNiB3aW5fc3ogd29ya3MgZmluZSkuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xMTA1PXN0YXRpYyBib29sIGFnZ3JfcHJvY2Vzc19yZWN2X2ZybShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ19jb25uLCB1OCB0aWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMTg3LVxcdCAqICAgICAgICAgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGFib3ZlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjExODg6XFx0ICogIDJiLiBpcyB0aGUgZnJhbWVfc2VxX25vIGJleW9uZCB3aW5kb3coc3QsIFRJRF9XSU5ET1dfU1opO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExODktXFx0ICogICAgICAtXFx1MDAzZSBUYWtlbiBjYXJlIG9mIGl0IGFib3ZlLCBieSBtb3Zpbmcgd2luZG93IGZvcndhcmQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjk4PXZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzQtXFx0cnh0aWQtXFx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3MzU6XFx0aG9sZF9xX3NpemUgPSBUSURfV0lORE9XX1NaKHdpbl9zeikgKiBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzYtXFx0cnh0aWQtXFx1MDAzZWhvbGRfcSA9IGt6YWxsb2MoaG9sZF9xX3NpemUsIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTc0MC1cXHRyeHRpZC1cXHUwMDNld2luX3N6ID0gd2luX3N6O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3NDE6XFx0cnh0aWQtXFx1MDAzZWhvbGRfcV9zeiA9IFRJRF9XSU5ET1dfU1ood2luX3N6KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzQyLVxcdGlmICghc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZyeHRpZC1cXHUwMDNlcSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjUxLjU4MTAwNDQ3MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjI5MDYyOTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVnVsbmVyYWJpbGl0eSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHByZXZlbnRpbmcgYGhvbGRfcV9zaXplYCBmcm9tIGdldHRpbmcgbWVzc2VkIHVwIGNhbGN1bGF0aW9ucyBkdWUgdG8gYW4gaW52YWxpZCBgd2luX3N6YCB2YWx1ZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwic21hcnQgbW92ZS5cIiBXZSdyZSB0YWxraW5nIGFib3V0IGEgc2NlbmFyaW8gd2hlcmUgYSBnaWFudCBgd2luX3N6YCBjb3VsZCB0cmlnZ2VyIGEgaHVnZSBhbGxvY2F0aW9uIG9yIGFuIGludGVnZXIgb3ZlcmZsb3csIHdoaWNoLCB3ZSBhbGwga25vdywgaXMgYSByZWNpcGUgZm9yIGRpc2FzdGVyLiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgYHdpbl9zemAgaXMgemVybywgd2UncmUgYWxsb2NhdGluZyAqbm90aGluZyosIHdoaWNoIGNvdWxkIGVhc2lseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIGxhdGVyIG9uLiBZZXAsIHRoaXMgaXMgYSBwcmV0dHkgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgVVNCIGZ1enppbmcgY291bGQgdW5jb3Zlci5cblxuTm93LCBsZXQncyBnZXQgaW50byBwaW5wb2ludGluZyB0aGUgZm9jdXMgc3ltYm9scy4gSSdtIHRoaW5raW5nIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gQW5kIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgaXMgYW5vdGhlciBzdHJvbmcgY29udGVuZGVyLiBJdCdzIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd2Ugc2hvdWxkIGNvbnNpZGVyLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyMTYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTA6NTYuODEwMDY4OTE2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU3NjAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzMzM9c3RhdGljIGludCBhdGg2a2xfd21pX2dldF9wbWtpZF9saXN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM6MzM1MjpzdGF0aWMgaW50IGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1My1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9Mzg3Nj1zdGF0aWMgaW50IGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmKHN0cnVjdCB3bWkgKndtaSwgdTE2IGlmX2lkeCwgdTE2IGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzkyMi1cXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcXFwiV01JX0FEREJBX1JFUV9FVkVOVElEXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjM5MjM6XFx0XFx0cmV0dXJuIGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4KHdtaSwgZGF0YXAsIGxlbiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM5MjQtXFx0Y2FzZSBXTUlfREVMQkFfUkVRX0VWRU5USUQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjU2Ljg2NTY1MTc5NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDcyMzg2MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29udHJvbCBQYWNrZXQgRmxvdyBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGlzIGNvbnRyb2wgcGFja2V0IGZsb3c6IGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgaXMgY2FsbGVkIGZyb20gYGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmYC4gUmlnaHQsIGFuZCBgYXRoNmtsX3dtaV9wcm9jX2V2ZW50c192aWZgIGlzIGl0c2VsZiBjYWxsZWQgZnJvbSBgYXRoNmtsX3dtaV9jb250cm9sX3J4YC4gVGhhdCBtYWtlcyBzZW5zZTsgYGF0aDZrbF93bWlfY29udHJvbF9yeGAgaXMgdGhlIGVudHJ5IHBvaW50IHdoZW4gdGhlIGRldmljZSBzZW5kcyBhIGNvbnRyb2wgcGFja2V0LiBHb29kLCBnb29kLlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0aGlzIHdob2xlIHRoaW5nIHRvIHdvcmsgcHJvcGVybHkuIExldCdzIHNlZS4uLiBGaXJzdCwgSSdtIGNoZWNraW5nIGZvciBgQ09ORklHX0FUSDZLTF9VU0JgIGFuZCBgQ09ORklHX0FUSDZLTGAuICBJdCBtYWtlcyBzZW5zZSB0byBlbmFibGUgYm90aCBvZiB0aGVzZS4gT2gsIHdhaXQsIHRob3NlIGFyZSAqbW9kdWxlcyouIE9rYXksIHJpZ2h0LiBOb3RoaW5nIHN1cnByaXNpbmcgdGhlcmUuXG5cbk5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdG8gZXhhbWluZT8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGRlcGVuZGVuY2llcy4gSSdtIHdvbmRlcmluZyBpZiBgQ09ORklHX01BQzgwMjExYCBvciBgQ09ORklHX0NGRzgwMjExYCBhcmUgaW52b2x2ZWQuIE9oLCB0aGF0J3MgcmlnaHQsIGBBVEg2S0xgIGRlcGVuZHMgb24gYENGRzgwMjExYC4gVGhhdCBpcyBpbXBvcnRhbnQhIExldCdzIGdvIGFuZCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAzNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MTowMi4zMzgwNDAxMTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzkwNTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEg2S0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyOmNvbmZpZyBBVEg2S0xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBtb2JpbGUgY2hpcHNldHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MTQ6Y29uZmlnIEFUSDZLTF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI1OmNvbmZpZyBBVEg2S0xfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MzU6Y29uZmlnIEFUSDZLTF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ1OmNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ni1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjU3OmNvbmZpZyBBVEg2S0xfUkVHRE9NQUlOXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTU4LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MTowMi4zOTI0MzU3OThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4Nzc3NjQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBhdGg2a2wgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRyaXZlci4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gc3VycHJpc2VzIG9yIGltcGxpY2l0IGFzc3VtcHRpb25zIGluIGl0cyBidWlsZCBlbnZpcm9ubWVudC4gVGhpcyBjb3VsZCBpbnZvbHZlIGxvb2tpbmcgYXQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLCBvdGhlciBzdWItZHJpdmVycywgcGxhdGZvcm0gcmVxdWlyZW1lbnRzLCBhbnkgYm9hcmQtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIG9yIHBvdGVudGlhbCBjb25mbGljdHMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBwcmVzZW50IGZvciBgYXRoNmtsYCB0byBzdWNjZXNzZnVsbHkgYnVpbGQgYW5kIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgaW50cmljYXRlIHJlbGF0aW9uc2hpcHMgYW5kIG1pZ2h0IHVuY292ZXIgYSBmZXcgaW50ZXJlc3RpbmcgYnVpbGQgc2NlbmFyaW9zIGFsb25nIHRoZSB3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDkxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTE6MDUuNzgwMjE0NTE0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdGNvbmZpZyBBVEg2S0xcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIG1vYmlsZSBjaGlwc2V0cyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIGNvcmUgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gICA3OlxcdFxcdCAgQXRoZXJvcyBBUjYwMDMgYW5kIEFSNjAwNCBjaGlwc2V0cy4gWW91IHN0aWxsIG5lZWQgc2VwYXJhdGVcXG4gICA4OlxcdFxcdCAgYnVzIGRyaXZlcnMgZm9yIFVTQiBhbmQgU0RJTyB0byBiZSBhYmxlIHRvIHVzZSByZWFsIGRldmljZXMuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDExOlxcdFxcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxcbiAgMTI6XFx0XFx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBBVEg2S0xfU0RJT1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFNESU8gc3VwcG9ydFxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gQVRINktMXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIE1NQ1xcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXFxuICAyMDpcXHRcXHQgIEF0aGVyb3MgQVI2MDAzIGFuZCBBUjYwMDQgY2hpcHNldHMgcnVubmluZyBvdmVyIFNESU8uIElmIHlvdVxcbiAgMjE6XFx0XFx0ICBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0aDZrbF9zZGlvLlxcbiAgMjI6XFx0XFx0ICBQbGVhc2Ugbm90ZSB0aGF0IEFSNjAwMiBhbmQgQVI2MDAxIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXNcXG4gIDIzOlxcdFxcdCAgZHJpdmVyLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgQVRINktMX1VTQlxcbiAgMjY6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFVTQiBzdXBwb3J0XFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4gIDI4OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyOTpcXHRcXHRoZWxwXFxuICAzMDpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gIDMxOlxcdFxcdCAgQXRoZXJvcyBBUjYwMDQgY2hpcHNldCBhbmQgY2hpcHNldHMgYmFzZWQgb24gaXQgcnVubmluZyBvdmVyXFxuICAzMjpcXHRcXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxcbiAgMzM6XFx0XFx0ICBjYWxsZWQgYXRoNmtsX3VzYi5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIEFUSDZLTF9ERUJVR1xcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg2a2wgZGVidWdnaW5nXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlcyBhdGg2a2wgZGVidWcgc3VwcG9ydCwgaW5jbHVkaW5nIGRlYnVnIG1lc3NhZ2VzXFxuICA0MDpcXHRcXHQgIGVuYWJsZWQgd2l0aCBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGRlYnVnZnNcXG4gIDQxOlxcdFxcdCAgaW50ZXJmYWNlLlxcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xcbiAgNDY6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg2a2wgdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gRVZFTlRfVFJBQ0lOR1xcbiAgNDk6XFx0XFx0aGVscFxcbiAgNTA6XFx0XFx0ICBTZWxlY3QgdGhpcyB0byBhdGg2a2wgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2gsIGZvclxcbiAgNTE6XFx0XFx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcXG4gIDUyOlxcdFxcdCAgbWVzc2FnZXMgYW5kIGNvbW1hbmRzIGFyZSBkZWxpdmVyZWQgdG8gdXNpbmcgaW5kaXZpZHVhbGx5XFxuICA1MzpcXHRcXHQgIGVuYWJsYWJsZSB0cmFjZSBwb2ludHMuXFxuICA1NDpcXHRcXG4gIDU1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy5cXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29uZmlnIEFUSDZLTF9SRUdET01BSU5cXG4gIDU4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XFxcIlxcbiAgNTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA2MTpcXHRcXHRoZWxwXFxuICA2MjpcXHRcXHQgIEVuYWJsaW5nIHRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gY2hhbmdlIHRoZSByZWdkb21haW4gaW5cXG4gIDYzOlxcdFxcdCAgdGhlIGZpcm13YXJlLiBUaGlzIGNhbiBiZSBvbmx5IGVuYWJsZWQgaWYgcmVndWxhdG9yeSByZXF1aXJlbWVudHNcXG4gIDY0OlxcdFxcdCAgYXJlIHRha2VuIGludG8gYWNjb3VudC5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MTowNS43ODAyOTY3OTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcyOTA5ODIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQVRINktMIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIHBhdGNoIHdpdGhpbiB0aGUgYEFUSDZLTGAgYW5kIGBBVEg2S0xfVVNCYCBtb2R1bGVzLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHN0cmFpZ2h0Zm9yd2FyZDsgaXQncyBhIGRlZmVuc2l2ZSBtZWFzdXJlLCBhZGRpbmcgYSBjcnVjaWFsIHJldHVybiBzdGF0ZW1lbnQgdG8gcHJldmVudCB0aGUgcHJvY2Vzc2luZyBvZiBhbiBvdXQtb2YtYm91bmRzIGB3aW5fc3pgIHZhbHVlLiBUaGlzIGlzIGdvb2Qg4oCTIGl0J3MgZGlyZWN0bHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gQUREQkEgcmVxdWVzdCBoYW5kbGluZy5cblxuVGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGRlZmluaXRlbHkgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBhbmQgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YC4gQm90aCBvZiB0aGVzZSBmdW5jdGlvbnMgZGVhbCB3aXRoIEFEREJBIChBZGQgQmxvY2sgQWNrKSByZXF1ZXN0cywgd2hpY2ggYXJlIGNvbnRyb2wgZnJhbWVzLCBub3QgZGF0YSBmcmFtZXMuIFRoYXQgbWVhbnMgdGhleSBtaWdodCBub3QgYmUgKnN1cGVyKiBoaWdoLXRocm91Z2hwdXQsIGJ1dCB0aGV5J3JlIHN0aWxsIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgdGhlIEFEREJBIHByb2Nlc3MsIG1ha2luZyB0aGVtIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcuXG5cblNpbmNlIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgY2FsbHMgYGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZWAsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlJ3JlIGluY2x1ZGluZyB0aGF0IGluIG91ciBmb2N1cyB0b28uIEFuZCB3aGlsZSB3ZSBhcmUgaGVyZSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAgZnVuY3Rpb24sIHNpbmNlIGl0IGlzIHRoZSBkaXNwYXRjaGVyLlxuXG5UaGVyZWZvcmUsIGZvciB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIG9mIGNvdXJzZS4gSSdsbCBkZWZpbmUgYEZvY3VzU3ltYm9sc2AgYXMgYFtcImFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0XCIsIFwiYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhcIl1gLiBXZSBhbHNvIGVuYWJsZSBgQVRINktMYCBhbmQgYEFUSDZLTF9VU0JgIGNvbmZpZ3VyYXRpb25zLlxuXG5UaGUgcmVhc29uaW5nIGhlcmUgaXMgc29saWQ6IHRoaXMgcGF0Y2ggaXMgZ3VhcmRpbmcgYWdhaW5zdCBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiB0aGUgQUREQkEgcmVxdWVzdCBldmVudCBoYW5kbGVyLCBhbmQgdGhlIGBBVEg2S0xgIGRyaXZlciwgYmVpbmcgVVNCIGFjY2Vzc2libGUsIGlzIHJlYWNoYWJsZSB2aWEgZnV6emluZy4gVGhpcyBzZXR1cCB3aWxsIGFsbG93IHVzIHRvIHRob3JvdWdobHkgdGVzdCB0aGUgYm91bmRzIGNoZWNrIGFuZCBlbnN1cmUgdGhlIGZpeCBpcyBlZmZlY3RpdmUsIGFuZCB0aGF0IHdlIGhhdmUgaWRlbnRpZmllZCB0aGUgZnVuY3Rpb25zIHRoZSBwYXRjaCBhZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjI3MiwiT3V0cHV0VG9rZW5zIjoxMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MToxMy41MDkzOTc1NTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzE0MjIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhbmQgYW4gZWFybHkgcmV0dXJuIGZvciBhbiBvdXQtb2YtYm91bmRzIHdpbmRvdyBzaXplIGluIHRoZSBBRERCQSByZXF1ZXN0IGV2ZW50IGhhbmRsZXIgb2YgdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYWxsb2NhdGluZyB0aGUgaG9sZCBxdWV1ZS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDZLTFwiLFxuICAgIFwiQVRINktMX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0XCIsXG4gICAgXCJhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYW5kIGFuIGVhcmx5IHJldHVybiBmb3IgYW4gb3V0LW9mLWJvdW5kcyB3aW5kb3cgc2l6ZSBpbiB0aGUgQUREQkEgcmVxdWVzdCBldmVudCBoYW5kbGVyIG9mIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGFsbG9jYXRpbmcgdGhlIGhvbGQgcXVldWUuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzqqf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 07:08:22 +0000 UTC FinishedAt: 2026-07-02 07:51:14 +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": "a24cd110e664396061b0a72930734bf419bf88c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a24cd110e664396061b0a72930734bf419bf88c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "aggr_recv_addba_req_evt", "ath6kl_wmi_addba_req_event_rx" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAgICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhbmQgYW4gZWFybHkgcmV0dXJuIGZvciBhbiBvdXQtb2YtYm91bmRzIHdpbmRvdyBzaXplIGluIHRoZSBBRERCQSByZXF1ZXN0IGV2ZW50IGhhbmRsZXIgb2YgdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYWxsb2NhdGluZyB0aGUgaG9sZCBxdWV1ZS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzZlZGY5NzUwYmRmNzMxNzFjY2Y1NDA2MDFlMTNkMjFlOThlMTNkN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMDc6NTA6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggODBlNjZhY2M1Y2Y2ZTkuLmEzOWM4MTUwNTg3ZWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG5AQCAtMTcyMiwxMyAmIzQzOzE3MjIsMTUgQEAgdm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxuIFxuIFx0cnh0aWQgPSBcdTAwMjZhZ2dyX2Nvbm4tXHUwMDNlcnhfdGlkW3RpZF07XG4gXG4tXHRpZiAod2luX3N6IFx1MDAzYyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6IFx1MDAzZSBBR0dSX1dJTl9TWl9NQVgpXG4tXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX1JYLCBcJiMzNDslczogd2luX3N6ICVkLCB0aWQgJWRcXG5cJiMzNDssXG4tXHRcdFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcbi1cbiBcdGlmIChyeHRpZC1cdTAwM2VhZ2dyKVxuIFx0XHRhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpO1xuIFxuJiM0MztcdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xuJiM0MztcdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwmIzM0OyVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cnh0aWQtXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XG4gXHRob2xkX3Ffc2l6ZSA9IFRJRF9XSU5ET1dfU1ood2luX3N6KSAqIHNpemVvZihzdHJ1Y3Qgc2tiX2hvbGRfcSk7XG4gXHRyeHRpZC1cdTAwM2Vob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNzo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg2S0wmIzM0OywKICAgICYjMzQ7QVRINktMX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0JiMzNDssCiAgICAmIzM0O2F0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYW5kIGFuIGVhcmx5IHJldHVybiBmb3IgYW4gb3V0LW9mLWJvdW5kcyB3aW5kb3cgc2l6ZSBpbiB0aGUgQUREQkEgcmVxdWVzdCBldmVudCBoYW5kbGVyIG9mIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGFsbG9jYXRpbmcgdGhlIGhvbGQgcXVldWUuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzZlZGY5NzUwYmRmNzMxNzFjY2Y1NDA2MDFlMTNkMjFlOThlMTNkNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMDc6NTA6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCmluZGV4IDgwZTY2YWNjNWNmNmU5Li5hMzljODE1MDU4N2VlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMKQEAgLTE3MjIsMTMgJiM0MzsxNzIyLDE1IEBAIHZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubywKIAogCXJ4dGlkID0gJmFtcDthZ2dyX2Nvbm4tJmd0O3J4X3RpZFt0aWRdOwogCi0JaWYgKHdpbl9zeiAmbHQ7IEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogJmd0OyBBR0dSX1dJTl9TWl9NQVgpCi0JCWF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX1JYLCAmIzM0OyVzOiB3aW5fc3ogJWQsIHRpZCAlZFxuJiMzNDssCi0JCQkgICBfX2Z1bmNfXywgd2luX3N6LCB0aWQpOwotCiAJaWYgKHJ4dGlkLSZndDthZ2dyKQogCQlhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpOwogCiYjNDM7CWlmICh3aW5fc3ogJmx0OyBBR0dSX1dJTl9TWl9NSU4gfHwgd2luX3N6ICZndDsgQUdHUl9XSU5fU1pfTUFYKSB7CiYjNDM7CQlhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgJiMzNDslczogd2luX3N6ICVkLCB0aWQgJWRcbiYjMzQ7LAomIzQzOwkJCSAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlyeHRpZC0mZ3Q7c2VxX25leHQgPSBzZXFfbm87CiAJaG9sZF9xX3NpemUgPSBUSURfV0lORE9XX1NaKHdpbl9zeikgKiBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpOwogCXJ4dGlkLSZndDtob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYXRoNmtsIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGFkZGluZyBhIHJldHVybiBzdGF0ZW1lbnQgaWYgYHdpbl9zemAgZmFsbHMgb3V0c2lkZSBvZiB0aGUgYWNjZXB0YWJsZSByYW5nZTogYEFHR1JfV0lOX1NaX01JTmAgYW5kIGBBR0dSX1dJTl9TWl9NQVhgLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZml4LCBkZXNpZ25lZCB0byBwcmV2ZW50IGRvZGd5IG1lbW9yeSBhbGxvY2F0aW9uLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcg4oCTIHByb3RlY3RpbmcgYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIG9yIGludmFsaWQgd2luZG93IHNpemUgaXMgYWx3YXlzIHBydWRlbnQuIEhvbGQgb24sIHRob3VnaC4uLiB0aGlua2luZyBhYm91dCBpdCwgYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgY291bGQgaGF2ZSBiZWVuIGRvaW5nIHNvbWV0aGluZyBuYXN0eSBpZiBgd2luX3N6YCB3YXMgb3V0IG9mIHNwZWMuCgpOb3cgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgd2UgY2FuIHJlYWNoIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGdldCBgYXRoNmtsYCBydW5uaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIGBhdGg2a2xgIGlzIHRoZSBkcml2ZXIgZm9yIHRob3NlIG9sZCBBdGhlcm9zIEFSNjAwMy9BUjYwMDQgd2lyZWxlc3MgZGV2aWNlcy4gSXMgdGhlcmUgYSB3YXkgdG8gZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IEkmIzM5O20gdXN1YWxseSB1c2luZyBgbWFjODAyMTFfaHdzaW1gIHRvIGVtdWxhdGUgbWFjODAyMTEgZGV2aWNlcywgYnV0IGBhdGg2a2xgIGlzIGEgZnVsbG1hYyBkcml2ZXIsIHNvIGl0IHVzZXMgYGNmZzgwMjExYC4gSXQmIzM5O3Mgbm90IGEgZGlyZWN0IGNvbXBhcmlzb24uCgpXYWl0IGEgc2Vjb25k4oCmIGNhbiBJIGZ1enogdGhpcyB0aGluZyB2aWEgVVNCPyBUaGF0JiMzOTtzIGFuIGludGVyZXN0aW5nIGFuZ2xlLiBMZXQgbWUgY2hlY2sgaWYgYGF0aDZrbGAgZXZlbiAqaGFzKiBhIFVTQiBpbnRlcmZhY2UuIElzIHRoZXJlIGEgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmNgIGZpbGU/IFllcCwgdGhhdCYjMzk7cyB3aGF0IEkmIzM5O2xsIGludmVzdGlnYXRlIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoNmtsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMDM4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9Mj1jb25maWcgQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEwLVx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjExOlx0ICBhdGg2a2xfY29yZS4gUGxlYXNlIG5vdGUgdGhhdCBBUjYwMDIgYW5kIEFSNjAwMSBhcmUgbm90XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTItXHQgIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MTQ9Y29uZmlnIEFUSDZLTF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MTU6XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xNi1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTIwLVx0ICBBdGhlcm9zIEFSNjAwMyBhbmQgQVI2MDA0IGNoaXBzZXRzIHJ1bm5pbmcgb3ZlciBTRElPLiBJZiB5b3VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyMTpcdCAgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdGg2a2xfc2Rpby5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMi1cdCAgUGxlYXNlIG5vdGUgdGhhdCBBUjYwMDIgYW5kIEFSNjAwMSBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI1PWNvbmZpZyBBVEg2S0xfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjY6XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI3LVx0ZGVwZW5kcyBvbiBBVEg2S0xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzItXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjMzOlx0ICBjYWxsZWQgYXRoNmtsX3VzYi5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0zNT1jb25maWcgQVRINktMX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MzY6XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM3LVx0ZGVwZW5kcyBvbiBBVEg2S0xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zOC1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozOTpcdCAgRW5hYmxlcyBhdGg2a2wgZGVidWcgc3VwcG9ydCwgaW5jbHVkaW5nIGRlYnVnIG1lc3NhZ2VzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDAtXHQgIGVuYWJsZWQgd2l0aCBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGRlYnVnZnNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NDU9Y29uZmlnIEFUSDZLTF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NDY6XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ3LVx0ZGVwZW5kcyBvbiBBVEg2S0xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDktXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6NTA6XHQgIFNlbGVjdCB0aGlzIHRvIGF0aDZrbCB1c2UgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSB3aGljaCwgZm9yXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTEtXHQgIGV4YW1wbGUsIGNhbiBiZSBlbmFibGVkIHdpdGggaGVscCBvZiB0cmFjZS1jbWQuIEFsbCBkZWJ1Z1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz01Nz1jb25maWcgQVRINktMX1JFR0RPTUFJTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjU4Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCByZWdkb21haW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTU5LVx0ZGVwZW5kcyBvbiBBVEg2S0xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRINktMKSAmIzQzOz0gYXRoNmtsX2NvcmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNjphdGg2a2xfY29yZS15ICYjNDM7PSBkZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI3OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGhpZi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI4OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGh0Y19tYm94Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjk6YXRoNmtsX2NvcmUteSAmIzQzOz0gaHRjX3BpcGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMDphdGg2a2xfY29yZS15ICYjNDM7PSBibWkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMTphdGg2a2xfY29yZS15ICYjNDM7PSBjZmc4MDIxMS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMyOmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGluaXQub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMzphdGg2a2xfY29yZS15ICYjNDM7PSBtYWluLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzQ6YXRoNmtsX2NvcmUteSAmIzQzOz0gdHhyeC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM1OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IHdtaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM2OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGNvcmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNzphdGg2a2xfY29yZS15ICYjNDM7PSByZWNvdmVyeS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozOTphdGg2a2xfY29yZS0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MDphdGg2a2xfY29yZS0kKENPTkZJR19BVEg2S0xfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19BVEg2S0xfU0RJTykgJiM0Mzs9IGF0aDZrbF9zZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDM6YXRoNmtsX3NkaW8teSAmIzQzOz0gc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQVRINktMX1VTQikgJiM0Mzs9IGF0aDZrbF91c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NjphdGg2a2xfdXNiLXkgJiM0Mzs9IHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzOmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4LVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjk6XHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSBkb25lIHNraXBwZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMC1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgKHU4ICopXHUwMDI2Y2lkLCBzaXplb2YoY2lkKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gc2VuZCBibWkgZG9uZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0OmludCBhdGg2a2xfYm1pX2dldF90YXJnZXRfaW5mbyhzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU6XHRcdFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTItXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU1Olx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVx1MDAyNmNpZCwgc2l6ZW9mKGNpZCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Ni1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTc6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHNlbmQgZ2V0IHRhcmdldCBpbmZvOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTgtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02MS1cdGlmIChhci1cdTAwM2VoaWZfdHlwZSA9PSBBVEg2S0xfSElGX1RZUEVfVVNCKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjYyOlx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKil0YXJnX2luZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTYzLVx0XHRcdFx0XHQgIHNpemVvZigqdGFyZ19pbmZvKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY0LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NjU6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsICh1OCAqKVx1MDAyNnRhcmdfaW5mby1cdTAwM2V2ZXJzaW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02Ni1cdFx0XHRcdHNpemVvZih0YXJnX2luZm8tXHUwMDNldmVyc2lvbikpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjcwOlx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWN2IHRhcmdldCBpbmZvOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzEtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03NS1cdFx0LyogRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIGFyZSBpbiB0aGUgVGFyZ2V0JiMzOTtzIHRhcmdfaW5mbyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3NjpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzctXHRcdFx0XHQgICAodTggKilcdTAwMjZ0YXJnX2luZm8tXHUwMDNlYnl0ZV9jb3VudCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTc5LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjgwOlx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7dW5hYmxlIHRvIHJlYWQgdGFyZ2V0IGluZm8gYnl0ZSBjb3VudDogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTgxLVx0XHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk0LVx0XHQvKiBSZWFkIHRoZSByZW1haW5kZXIgb2YgdGhlIHRhcmdfaW5mbyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo5NTpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTYtXHRcdFx0XHQgICAoKHU4ICopdGFyZ19pbmZvKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTAxLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEwMjpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWFkIHRhcmdldCBpbmZvICglZCBieXRlcyk6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDMtXHRcdFx0XHQgICB0YXJnX2luZm8tXHUwMDNlYnl0ZV9jb3VudCwgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTA4Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXCYjMzQ7dGFyZ2V0IGluZm8gKHZlcjogMHgleCB0eXBlOiAweCV4KVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTA5LVx0XHQgICB0YXJnX2luZm8tXHUwMDNldmVyc2lvbiwgdGFyZ19pbmZvLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMTQ6aW50IGF0aDZrbF9ibWlfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMjItXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMjM6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTI0LVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTM0Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTM1LVx0XHQgICBcJiMzNDtibWkgcmVhZCBtZW1vcnk6IGRldmljZTogYWRkcjogMHgleCwgbGVuOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTUxOlx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1Mi1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTM6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1NC1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTYtXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTU3Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1ZiwgcnhfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU4LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1OTpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE2MC1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE3MDppbnQgYXRoNmtsX2JtaV93cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xODAtXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxODE6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgyLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTk1Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTk2LVx0XHQgICBcJiMzNDtibWkgd3JpdGUgbWVtb3J5OiBhZGRyOiAweCV4LCBsZW46ICVkXFxuXCYjMzQ7LCBhZGRyLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjU6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI2LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIyNzpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI4LVx0XHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjM3OmludCBhdGg2a2xfYm1pX2V4ZWN1dGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQ0LVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjQ1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0Ni1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI1NjpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSBleGVjdXRlOiBhZGRyOiAweCV4LCBwYXJhbTogJWQpXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNTctXHRcdCAgIGFkZHIsICpwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI2NzpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY4LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjk6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzAtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3MzpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBzaXplb2YoKnBhcmFtKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjc1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3Ni1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjg0OmludCBhdGg2a2xfYm1pX3NldF9hcHBfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjkxLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjkyOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5My1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMwMzpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSBzZXQgYXBwIHN0YXJ0OiBhZGRyOiAweCV4XFxuXCYjMzQ7LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzA0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMTE6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxMi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzEzOlx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzE0LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMjA6aW50IGF0aDZrbF9ibWlfcmVnX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzI3LVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzI4Olx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyOS1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMzOTpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSByZWFkIFNPQyByZWc6IGFkZHI6IDB4JXhcXG5cJiMzNDssIGFkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM0NzpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ4LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDk6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTAtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1MzpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBzaXplb2YoKnBhcmFtKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1Ni1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzYzOmludCBhdGg2a2xfYm1pX3JlZ193cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiBwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM3MC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM3MTpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzItXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozODI6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zODMtXHRcdCAgIFwmIzM0O2JtaSB3cml0ZSBTT0MgcmVnOiBhZGRyOiAweCV4LCBwYXJhbTogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM5NDpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTY6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTctXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQwMzppbnQgYXRoNmtsX2JtaV9sel9kYXRhKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDEyLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDEzOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxNC1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQyNDpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O2JtaSBzZW5kIExaIGRhdGE6IGxlbjogJWQpXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MjUtXHRcdCAgIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0MTpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDItXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQzOlx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDQtXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NTQ6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDU1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2MS1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ2MjpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjMtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NzM6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NzQtXHRcdCAgIFwmIzM0O2JtaSBMWiBzdHJlYW0gc3RhcnQ6IGFkZHI6IDB4JXgpXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0ODM6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDg1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byBzdGFydCBMWiBzdHJlYW0gdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4Ni1cdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0OTM6aW50IGF0aDZrbF9ibWlfZmFzdF9kb3dubG9hZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUwMDpcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTAxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTA5Olx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCBidWYsIGxhc3Rfd29yZF9vZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTEzLVx0aWYgKHVuYWxpZ25lZF9ieXRlcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE0Olx0XHRyZXQgPSBhdGg2a2xfYm1pX2x6X2RhdGEoYXIsICh1OCAqKVx1MDAyNmxhc3Rfd29yZCwgNCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxOC1cdFx0ICogVGhpcyBzZXJ2ZXMgbWFpbmx5IHRvIGZsdXNoIFRhcmdldCBjYWNoZXMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxOTpcdFx0cmV0ID0gYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoYXIsIDB4MDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUyNDp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUyOTppbnQgYXRoNmtsX2JtaV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NDQ6dm9pZCBhdGg2a2xfYm1pX2NsZWFudXAoc3RydWN0IGF0aDZrbCAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIxOTpzdHJ1Y3QgYXRoNmtsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjA6c3RydWN0IGF0aDZrbF9ibWlfdGFyZ2V0X2luZm8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjEtXHRfX2xlMzIgYnl0ZV9jb3VudDsgICAvKiBzaXplIG9mIHRoaXMgc3RydWN0dXJlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIyNjojZGVmaW5lIGF0aDZrbF9ibWlfd3JpdGVfaGkzMihhciwgaXRlbSwgdmFsKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI3LVx0KHtcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzMC1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzE6XHRcdGFkZHIgPSBhdGg2a2xfZ2V0X2hpX2l0ZW1fYWRkcihhciwgSElfSVRFTShpdGVtKSk7XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzItXHRcdHYgPSBjcHVfdG9fbGUzMih2YWwpO1x0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzM6XHRcdGF0aDZrbF9ibWlfd3JpdGUoYXIsIGFkZHIsICh1OCAqKSBcdTAwMjZ2LCBzaXplb2YodikpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM0LVx0fSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzY6I2RlZmluZSBhdGg2a2xfYm1pX3JlYWRfaGkzMihhciwgaXRlbSwgdmFsKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM3LVx0KHtcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI0Mi1cdFx0KHZvaWQpIChjaGVja190eXBlID09IHZhbCk7XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNDM6XHRcdGFkZHIgPSBhdGg2a2xfZ2V0X2hpX2l0ZW1fYWRkcihhciwgSElfSVRFTShpdGVtKSk7XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNDQ6XHRcdHJldCA9IGF0aDZrbF9ibWlfcmVhZChhciwgYWRkciwgKHU4ICopIFx1MDAyNnRtcCwgNCk7XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDUtXHRcdGlmICghcmV0KVx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MDppbnQgYXRoNmtsX2JtaV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUxOnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUyOnZvaWQgYXRoNmtsX2JtaV9yZXNldChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU0OmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTU6aW50IGF0aDZrbF9ibWlfZ2V0X3RhcmdldF9pbmZvKHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTY6XHRcdFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTc6aW50IGF0aDZrbF9ibWlfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTg6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU5OmludCBhdGg2a2xfYm1pX2V4ZWN1dGUoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2MC1cdFx0ICAgICAgIHUzMiBhZGRyLCB1MzIgKnBhcmFtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjYxOmludCBhdGg2a2xfYm1pX3NldF9hcHBfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Mi1cdFx0XHQgICAgIHUzMiBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjYzOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NDppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjU6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjY2LVx0XHQgICAgICAgdTggKmJ1ZiwgdTMyIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NzppbnQgYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2OC1cdFx0XHQgICAgICAgdTMyIGFkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjk6aW50IGF0aDZrbF9ibWlfZmFzdF9kb3dubG9hZChzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjcwLVx0XHRcdCAgICAgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo1NzpzdHJ1Y3QgYXRoNmtsX2NmZzgwMjExX21hdGNoX3Byb2JlX3NzaWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTU4LVx0c3RydWN0IGNmZzgwMjExX3NzaWQgc3NpZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NjI6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSBhdGg2a2xfcmF0ZXNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy02My1cdFJBVEVUQUJfRU5UKDEwLCAweDEsIDApLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3NzojZGVmaW5lIGF0aDZrbF9hX3JhdGVzICAgICAoYXRoNmtsX3JhdGVzICYjNDM7IDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzg6I2RlZmluZSBhdGg2a2xfYV9yYXRlc19zaXplICAgIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3OTojZGVmaW5lIGF0aDZrbF9nX3JhdGVzICAgICAoYXRoNmtsX3JhdGVzICYjNDM7IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODA6I2RlZmluZSBhdGg2a2xfZ19yYXRlc19zaXplICAgIDEyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODI6I2RlZmluZSBhdGg2a2xfZ19odGNhcCBJRUVFODAyMTFfSFRfQ0FQX1NHSV8yMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgzOiNkZWZpbmUgYXRoNmtsX2FfaHRjYXAgKElFRUU4MDIxMV9IVF9DQVBfU1VQX1dJRFRIXzIwXzQwIHwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04NC1cdFx0XHRJRUVFODAyMTFfSFRfQ0FQX1NHSV8yMFx0XHQgfCBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4NzpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsIGF0aDZrbF8yZ2h6X2NoYW5uZWxzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODgtXHRDSEFOMkcoMSwgMjQxMiwgMCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMDQ6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfNWdoel9hX2NoYW5uZWxzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTA1LVx0Q0hBTjVHKDM2LCAwKSwgQ0hBTjVHKDQwLCAwKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNDpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF8yZ2h6ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNTpcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfMmdoel9jaGFubmVscyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI2Olx0LmNoYW5uZWxzID0gYXRoNmtsXzJnaHpfY2hhbm5lbHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI3Olx0Lm5fYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlc19zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyODpcdC5iaXRyYXRlcyA9IGF0aDZrbF9nX3JhdGVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyOTpcdC5odF9jYXAuY2FwID0gYXRoNmtsX2dfaHRjYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMwLVx0Lmh0X2NhcC5odF9zdXBwb3J0ZWQgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTMzOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kIGF0aDZrbF9iYW5kXzVnaHogPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM0Olx0Lm5fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGF0aDZrbF81Z2h6X2FfY2hhbm5lbHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNTpcdC5jaGFubmVscyA9IGF0aDZrbF81Z2h6X2FfY2hhbm5lbHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM2Olx0Lm5fYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlc19zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNzpcdC5iaXRyYXRlcyA9IGF0aDZrbF9hX3JhdGVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzODpcdC5odF9jYXAuY2FwID0gYXRoNmtsX2FfaHRjYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTM5LVx0Lmh0X2NhcC5odF9zdXBwb3J0ZWQgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDQtLyogcmV0dXJucyB0cnVlIGlmIHNjaGVkdWxlZCBzY2FuIHdhcyBzdG9wcGVkICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTQ1OnN0YXRpYyBib29sIF9fYXRoNmtsX2NmZzgwMjExX3NzY2FuX3N0b3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NzpcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE1NzpcdGF0aDZrbF93bWlfZW5hYmxlX3NjaGVkX3NjYW5fY21kKGFyLVx1MDAzZXdtaSwgdmlmLVx1MDAzZWZ3X3ZpZl9pZHgsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjI6c3RhdGljIHZvaWQgYXRoNmtsX2NmZzgwMjExX3NzY2FuX2Rpc2FibGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2NDpcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE2NS1cdGJvb2wgc3RvcHBlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTY3Olx0c3RvcHBlZCA9IF9fYXRoNmtsX2NmZzgwMjExX3NzY2FuX3N0b3AodmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNzU6c3RhdGljIGludCBhdGg2a2xfc2V0X3dwYV92ZXJzaW9uKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc2LVx0XHRcdFx0ICBlbnVtIG5sODAyMTFfd3BhX3ZlcnNpb25zIHdwYV92ZXJzaW9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc4Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogJXVcXG5cJiMzNDssIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODYtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE4NzpcdFx0YXRoNmtsX2VycihcJiMzNDslczogJXUgbm90IHN1cHBvcnRlZFxcblwmIzM0OywgX19mdW5jX18sIHdwYV92ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODgtXHRcdHJldHVybiAtRU5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxOTQ6c3RhdGljIGludCBhdGg2a2xfc2V0X2F1dGhfdHlwZShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5NS1cdFx0XHRcdGVudW0gbmw4MDIxMV9hdXRoX3R5cGUgYXV0aF90eXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk3Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogMHgleFxcblwmIzM0OywgX19mdW5jX18sIGF1dGhfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMTQtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjIxNTpcdFx0YXRoNmtsX2VycihcJiMzNDslczogMHgleCBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7LCBfX2Z1bmNfXywgYXV0aF90eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMTYtXHRcdHJldHVybiAtRU5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMjI6c3RhdGljIGludCBhdGg2a2xfc2V0X2NpcGhlcihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MzIgY2lwaGVyLCBib29sIHVjYXN0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMjg6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFwmIzM0OyVzOiBjaXBoZXIgMHgleCwgdWNhc3QgJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjI5LVx0XHQgICBfX2Z1bmNfXywgY2lwaGVyLCB1Y2FzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI1Ny1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjU4Olx0XHRhdGg2a2xfZXJyKFwmIzM0O2NpcGhlciAweCV4IG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIGNpcGhlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjU5LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjY1OnN0YXRpYyB2b2lkIGF0aDZrbF9zZXRfa2V5X21nbXQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGtleV9tZ210KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjY3Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogMHgleFxcblwmIzM0OywgX19mdW5jX18sIGtleV9tZ210KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODQ6c3RhdGljIGJvb2wgYXRoNmtsX2NmZzgwMjExX3JlYWR5KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODY6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg4LVx0aWYgKCF0ZXN0X2JpdChXTUlfUkVBRFksIFx1MDAyNmFyLVx1MDAzZWZsYWcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg5Olx0XHRhdGg2a2xfZXJyKFwmIzM0O3dtaSBpcyBub3QgcmVhZHlcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI5MC1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTMtXHRpZiAoIXRlc3RfYml0KFdMQU5fRU5BQkxFRCwgXHUwMDI2dmlmLVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI5NDpcdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDt3bGFuIGRpc2FibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTUtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwMTpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfd3BhX2llKGNvbnN0IHU4ICpwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzAyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwODpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfcnNuX2llKGNvbnN0IHU4ICpwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxMzpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfd3BzX2llKGNvbnN0IHU4ICpwb3MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzE0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyMTpzdGF0aWMgaW50IGF0aDZrbF9zZXRfYXNzb2NfcmVxX2llcyhzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCBjb25zdCB1OCAqaWVzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMi1cdFx0XHRcdCAgICBzaXplX3QgaWVzX2xlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyNDpcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyNS1cdGNvbnN0IHU4ICpwb3M7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2NDAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVVNCIEZ1enppbmcgUG90ZW50aWFsIGZvciBhdGg2a2xfdXNiISoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGBBVEg2S0xfVVNCYCBpcyBhICpjb25maWd1cmF0aW9uKiBvcHRpb24/IFJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIGBjb25maWcgQVRINktMX1VTQmAsIGl0JiMzOTtzIGEgYHRyaXN0YXRlICYjMzQ7QXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnQmIzM0O2AsIGFuZCAqY3J1Y2lhbGx5KiwgaXQgYGRlcGVuZHMgb24gQVRINktMYC4gIFRoYXQmIzM5O3MuLi4gaW50ZXJlc3RpbmcuICBTbywgdGhpcyBtZWFucyB0aGlzIGlzICpkZWZpbml0ZWx5KiBhIGRyaXZlciB0aGF0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIFVTQi4KClRoYXQgb3BlbnMgdXAgYSB3aG9sZSBuZXcgYXR0YWNrIHN1cmZhY2UuIEkgY2FuIHJlYWNoIHRoaXMgdGhpbmcgdmlhIHRoZSBkdW1teSBIQ0Qgb3IgcmF3LWdhZGdldCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyBhbmQgdGhhdCBtZWFucyBpdCYjMzk7cyBwcmltZSBmb3IgVVNCIGZ1enppbmchIFRoaXMgY2hhbmdlcyBldmVyeXRoaW5nLgoKTm93LCB3YWl0LCBsZXQmIzM5O3MgY29uZmlybSBteSBhc3N1bXB0aW9ucy4uLiBgYXRoNmtsX3VzYmAuLi4gdGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGEgVVNCIGRyaXZlci4gT2theSwgc28gbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHkuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBzb3VyY2UsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuY2AsIGFuZCBjaGVjayB0byBzZWUgaWYgaXQgcmVnaXN0ZXJzIGEgVVNCIGRyaXZlci4gIFRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiX3JlZ2lzdGVyfG1vZHVsZV91c2JfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jPTEyMzQ9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDZrbF91c2JfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTI0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MTI0NTptb2R1bGVfdXNiX2RyaXZlcihhdGg2a2xfdXNiX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTEyNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxOTkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgaWYgSSYjMzk7bSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IFVTQiBGdXp6aW5nIGFuZCBhdGg2a2wgVnVsbmVyYWJpbGl0eSoqCgpZZXMsIHRoYXQmIzM5O3MgcmlnaHQhIEl0IHNlZW1zIHdlJiMzOTt2ZSBnb3QgYSByZWFjaGFibGUgZW50cnkgcG9pbnQgZm9yIFVTQiBmdXp6aW5nIHdpdGhpbiB0aGUgYGF0aDZrbGAgZHJpdmVyLiBFeGNlbGxlbnQhIFRoZSB2dWxuZXJhYmlsaXR5IGFwcGVhcnMgdG8gYmUgbGlua2VkIHRvIGEgc3BlY2lmaWMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgIGZ1bmN0aW9uLCBhbmQgdGhhdCBmdW5jdGlvbiBsaXZlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNgLiBJIG5lZWQgdG8gZGlnIGludG8gYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBub3cgYW5kIHVuZGVyc3RhbmQgdGhlIG1vZGlmaWNhdGlvbnMgaW4gZGV0YWlsLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD05NjE9dm9pZCBhZ2dyX3JlY3ZfZGVsYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6OTYyOnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkLCB1MTYgc2VxX25vLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtOTYzLVx0XHRcdCAgICAgdTggd2luX3N6KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjcyPXN0YXRpYyB2b2lkIGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ3JfY29ubiwgdTggdGlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2OTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxNjk4OnZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2OTktXHRcdFx0ICAgICB1OCB3aW5fc3opXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zMzUyPXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozMzU3Olx0YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQodmlmLCBjbWQtXHUwMDNldGlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzU4LVx0XHRcdFx0bGUxNl90b19jcHUoY21kLVx1MDAzZXN0X3NlcV9ubyksIGNtZC1cdTAwM2V3aW5fc3opO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTYxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAsIHdoaWNoIGlzIHRyaWdnZXJlZCBieSBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgLiBUaGUga2V5IGlzIHRoYXQgdGhpcyBpcyBhIFdNSSBldmVudCBjb21pbmcgZnJvbSB0aGUgZmlybXdhcmUsIGFuZCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIFVTQiAob3IgU0RJTykgY29tbXVuaWNhdGlvbi4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZSwgYmVjYXVzZSBhIGZ1enplZCBVU0IgZGV2aWNlIGNvdWxkLCBpbiB0aGVvcnksIHNlbmQgY29tcGxldGVseSBhcmJpdHJhcnkgV01JIGV2ZW50cyB0byB0aGUgaG9zdC4gVGhhdCBtZWFucyBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgIGNvdWxkIGJlIGV4cGxvaXRlZC4KClRoZSB2dWxuZXJhYmlsaXR5IHN0ZW1zIGZyb20gdGhlIGB3aW5fc3pgIHZhcmlhYmxlLCB1c2VkIHdpdGhpbiBgVElEX1dJTkRPV19TWmAuIFRoZSBwYXRjaCBwcmV2ZW50cyBhbiBvdXQtb2YtYm91bmRzIHZhbHVlIG9mIGB3aW5fc3pgIGZyb20gYmVpbmcgdXNlZCwgYmVjYXVzZSBpdCYjMzk7cyB1c2VkIGluIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBxdWV1ZSBzZXR1cC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBgVElEX1dJTkRPV19TWmAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBzZWUgZXhhY3RseSBob3cgdGhleSYjMzk7cmUgbWl0aWdhdGluZyB0aGUgaXNzdWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgd2luX3N6YCBwYXJhbWV0ZXIgY29udHJvbHMgd2l0aGluIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgcXVldWUgc2V0dXAsIGFuZCBob3cgYSBtYWxpY2lvdXMgdmFsdWUgY291bGQgbGVhZCB0byBhIGJ1ZmZlciBvdmVyZmxvdyBvciBzb21lIG90aGVyIGZvcm0gb2YgbWVtb3J5IGNvcnJ1cHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1RJRF9XSU5ET1dfU1omIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaD0xNjY9ZW51bSBhdGg2a2xfaHdfZmxhZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oOjI3MjojZGVmaW5lIFRJRF9XSU5ET1dfU1ooX3gpICAgKChfeCkgXHUwMDNjXHUwMDNjIDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTA0Nj1zdGF0aWMgdm9pZCBhZ2dyX2RlcXVlX2ZybXMoc3RydWN0IGFnZ3JfaW5mb19jb25uICphZ2dfY29ubiwgdTggdGlkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEwNjktXHQgKiBUYXJnZXQgc2hvdWxkIGp1ZGljaW91c2x5IGNob29zZSB0aGUgd2luX3N6LCBiYXNlZCBvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTA3MDpcdCAqIHRoaXMgY29uZGl0aW9uLiBGb3IgNDA5NSwgKFRJRF9XSU5ET1dfU1ogPSAyIHggd2luX3N6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMDcxLVx0ICogMiwgNCwgOCwgMTYgd2luX3N6IHdvcmtzIGZpbmUpLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTExMDU9c3RhdGljIGJvb2wgYWdncl9wcm9jZXNzX3JlY3ZfZnJtKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdnX2Nvbm4sIHU4IHRpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMTg3LVx0ICogICAgICAgICB0aGlzIGlzIHRha2VuIGNhcmUgb2YgYWJvdmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMTg4Olx0ICogIDJiLiBpcyB0aGUgZnJhbWVfc2VxX25vIGJleW9uZCB3aW5kb3coc3QsIFRJRF9XSU5ET1dfU1opO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTE4OS1cdCAqICAgICAgLVx1MDAzZSBUYWtlbiBjYXJlIG9mIGl0IGFib3ZlLCBieSBtb3Zpbmcgd2luZG93IGZvcndhcmQuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM9MTY5OD12b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTczNC1cdHJ4dGlkLVx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTczNTpcdGhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzYtXHRyeHRpZC1cdTAwM2Vob2xkX3EgPSBremFsbG9jKGhvbGRfcV9zaXplLCBHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzQwLVx0cnh0aWQtXHUwMDNld2luX3N6ID0gd2luX3N6O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmM6MTc0MTpcdHJ4dGlkLVx1MDAzZWhvbGRfcV9zeiA9IFRJRF9XSU5ET1dfU1ood2luX3N6KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3NDItXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShcdTAwMjZyeHRpZC1cdTAwM2VxKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyMTYKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHByZXZlbnRpbmcgYGhvbGRfcV9zaXplYCBmcm9tIGdldHRpbmcgbWVzc2VkIHVwIGNhbGN1bGF0aW9ucyBkdWUgdG8gYW4gaW52YWxpZCBgd2luX3N6YCB2YWx1ZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7c21hcnQgbW92ZS4mIzM0OyBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHNjZW5hcmlvIHdoZXJlIGEgZ2lhbnQgYHdpbl9zemAgY291bGQgdHJpZ2dlciBhIGh1Z2UgYWxsb2NhdGlvbiBvciBhbiBpbnRlZ2VyIG92ZXJmbG93LCB3aGljaCwgd2UgYWxsIGtub3csIGlzIGEgcmVjaXBlIGZvciBkaXNhc3Rlci4gT24gdGhlIG90aGVyIGhhbmQsIGlmIGB3aW5fc3pgIGlzIHplcm8sIHdlJiMzOTtyZSBhbGxvY2F0aW5nICpub3RoaW5nKiwgd2hpY2ggY291bGQgZWFzaWx5IHJlc3VsdCBpbiBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MgbGF0ZXIgb24uIFllcCwgdGhpcyBpcyBhIHByZXR0eSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBVU0IgZnV6emluZyBjb3VsZCB1bmNvdmVyLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gcGlucG9pbnRpbmcgdGhlIGZvY3VzIHN5bWJvbHMuIEkmIzM5O20gdGhpbmtpbmcgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBBbmQgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCBpcyBhbm90aGVyIHN0cm9uZyBjb250ZW5kZXIuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd2Ugc2hvdWxkIGNvbnNpZGVyLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzMzM9c3RhdGljIGludCBhdGg2a2xfd21pX2dldF9wbWtpZF9saXN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM6MzM1MjpzdGF0aWMgaW50IGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzUzLVx0XHRcdFx0XHQgc3RydWN0IGF0aDZrbF92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTM4NzY9c3RhdGljIGludCBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZihzdHJ1Y3Qgd21pICp3bWksIHUxNiBpZl9pZHgsIHUxNiBjbWRfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zOTIyLVx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcJiMzNDtXTUlfQUREQkFfUkVRX0VWRU5USURcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozOTIzOlx0XHRyZXR1cm4gYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcngod21pLCBkYXRhcCwgbGVuLCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zOTI0LVx0Y2FzZSBXTUlfREVMQkFfUkVRX0VWRU5USUQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDM0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29udHJvbCBQYWNrZXQgRmxvdyBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoaXMgY29udHJvbCBwYWNrZXQgZmxvdzogYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YCBpcyBjYWxsZWQgZnJvbSBgYXRoNmtsX3dtaV9wcm9jX2V2ZW50c192aWZgLiBSaWdodCwgYW5kIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAgaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGBhdGg2a2xfd21pX2NvbnRyb2xfcnhgLiBUaGF0IG1ha2VzIHNlbnNlOyBgYXRoNmtsX3dtaV9jb250cm9sX3J4YCBpcyB0aGUgZW50cnkgcG9pbnQgd2hlbiB0aGUgZGV2aWNlIHNlbmRzIGEgY29udHJvbCBwYWNrZXQuIEdvb2QsIGdvb2QuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0aGlzIHdob2xlIHRoaW5nIHRvIHdvcmsgcHJvcGVybHkuIExldCYjMzk7cyBzZWUuLi4gRmlyc3QsIEkmIzM5O20gY2hlY2tpbmcgZm9yIGBDT05GSUdfQVRINktMX1VTQmAgYW5kIGBDT05GSUdfQVRINktMYC4gIEl0IG1ha2VzIHNlbnNlIHRvIGVuYWJsZSBib3RoIG9mIHRoZXNlLiBPaCwgd2FpdCwgdGhvc2UgYXJlICptb2R1bGVzKi4gT2theSwgcmlnaHQuIE5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4KCk5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdG8gZXhhbWluZT8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGRlcGVuZGVuY2llcy4gSSYjMzk7bSB3b25kZXJpbmcgaWYgYENPTkZJR19NQUM4MDIxMWAgb3IgYENPTkZJR19DRkc4MDIxMWAgYXJlIGludm9sdmVkLiBPaCwgdGhhdCYjMzk7cyByaWdodCwgYEFUSDZLTGAgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLiBUaGF0IGlzIGltcG9ydGFudCEgTGV0JiMzOTtzIGdvIGFuZCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRINktMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI6Y29uZmlnIEFUSDZLTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIG1vYmlsZSBjaGlwc2V0cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE0OmNvbmZpZyBBVEg2S0xfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgU0RJTyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI1OmNvbmZpZyBBVEg2S0xfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozNTpjb25maWcgQVRINktMX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzYtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo0NTpjb25maWcgQVRINktMX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ni1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjU3OmNvbmZpZyBBVEg2S0xfUkVHRE9NQUlOXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDkxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBhdGg2a2wgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgZHJpdmVyLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gc3VycHJpc2VzIG9yIGltcGxpY2l0IGFzc3VtcHRpb25zIGluIGl0cyBidWlsZCBlbnZpcm9ubWVudC4gVGhpcyBjb3VsZCBpbnZvbHZlIGxvb2tpbmcgYXQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLCBvdGhlciBzdWItZHJpdmVycywgcGxhdGZvcm0gcmVxdWlyZW1lbnRzLCBhbnkgYm9hcmQtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIG9yIHBvdGVudGlhbCBjb25mbGljdHMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBwcmVzZW50IGZvciBgYXRoNmtsYCB0byBzdWNjZXNzZnVsbHkgYnVpbGQgYW5kIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGludHJpY2F0ZSByZWxhdGlvbnNoaXBzIGFuZCBtaWdodCB1bmNvdmVyIGEgZmV3IGludGVyZXN0aW5nIGJ1aWxkIHNjZW5hcmlvcyBhbG9uZyB0aGUgd2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRjb25maWcgQVRINktMXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIG1vYmlsZSBjaGlwc2V0cyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgY29yZSBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxuICAgNzpcdFx0ICBBdGhlcm9zIEFSNjAwMyBhbmQgQVI2MDA0IGNoaXBzZXRzLiBZb3Ugc3RpbGwgbmVlZCBzZXBhcmF0ZVxuICAgODpcdFx0ICBidXMgZHJpdmVycyBmb3IgVVNCIGFuZCBTRElPIHRvIGJlIGFibGUgdG8gdXNlIHJlYWwgZGV2aWNlcy5cbiAgIDk6XHRcbiAgMTA6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTE6XHRcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxuICAxMjpcdFx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIEFUSDZLTF9TRElPXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gQVRINktMXG4gIDE3Olx0XHRkZXBlbmRzIG9uIE1NQ1xuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXG4gIDIwOlx0XHQgIEF0aGVyb3MgQVI2MDAzIGFuZCBBUjYwMDQgY2hpcHNldHMgcnVubmluZyBvdmVyIFNESU8uIElmIHlvdVxuICAyMTpcdFx0ICBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0aDZrbF9zZGlvLlxuICAyMjpcdFx0ICBQbGVhc2Ugbm90ZSB0aGF0IEFSNjAwMiBhbmQgQVI2MDAxIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXNcbiAgMjM6XHRcdCAgZHJpdmVyLlxuICAyNDpcdFxuICAyNTpcdGNvbmZpZyBBVEg2S0xfVVNCXG4gIDI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFwmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBBVEg2S0xcbiAgMjg6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI5Olx0XHRoZWxwXG4gIDMwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgMzE6XHRcdCAgQXRoZXJvcyBBUjYwMDQgY2hpcHNldCBhbmQgY2hpcHNldHMgYmFzZWQgb24gaXQgcnVubmluZyBvdmVyXG4gIDMyOlx0XHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxuICAzMzpcdFx0ICBjYWxsZWQgYXRoNmtsX3VzYi5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgQVRINktMX0RFQlVHXG4gIDM2Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIGRlYnVnZ2luZ1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBBVEg2S0xcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgRW5hYmxlcyBhdGg2a2wgZGVidWcgc3VwcG9ydCwgaW5jbHVkaW5nIGRlYnVnIG1lc3NhZ2VzXG4gIDQwOlx0XHQgIGVuYWJsZWQgd2l0aCBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGRlYnVnZnNcbiAgNDE6XHRcdCAgaW50ZXJmYWNlLlxuICA0MjpcdFxuICA0MzpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxuICA0NDpcdFxuICA0NTpcdGNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xuICA0NjpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gQVRINktMXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcbiAgNDk6XHRcdGhlbHBcbiAgNTA6XHRcdCAgU2VsZWN0IHRoaXMgdG8gYXRoNmtsIHVzZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlIHdoaWNoLCBmb3JcbiAgNTE6XHRcdCAgZXhhbXBsZSwgY2FuIGJlIGVuYWJsZWQgd2l0aCBoZWxwIG9mIHRyYWNlLWNtZC4gQWxsIGRlYnVnXG4gIDUyOlx0XHQgIG1lc3NhZ2VzIGFuZCBjb21tYW5kcyBhcmUgZGVsaXZlcmVkIHRvIHVzaW5nIGluZGl2aWR1YWxseVxuICA1MzpcdFx0ICBlbmFibGFibGUgdHJhY2UgcG9pbnRzLlxuICA1NDpcdFxuICA1NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxuICA1NjpcdFxuICA1NzpcdGNvbmZpZyBBVEg2S0xfUkVHRE9NQUlOXG4gIDU4Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XCYjMzQ7XG4gIDU5Olx0XHRkZXBlbmRzIG9uIEFUSDZLTFxuICA2MDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgNjE6XHRcdGhlbHBcbiAgNjI6XHRcdCAgRW5hYmxpbmcgdGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHJlZ2RvbWFpbiBpblxuICA2MzpcdFx0ICB0aGUgZmlybXdhcmUuIFRoaXMgY2FuIGJlIG9ubHkgZW5hYmxlZCBpZiByZWd1bGF0b3J5IHJlcXVpcmVtZW50c1xuICA2NDpcdFx0ICBhcmUgdGFrZW4gaW50byBhY2NvdW50LlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI3MgoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiAzNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEFUSDZLTCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBwYXRjaCB3aXRoaW4gdGhlIGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAgbW9kdWxlcy4gVGhlIHBhdGNoIGl0c2VsZiBpcyBzdHJhaWdodGZvcndhcmQ7IGl0JiMzOTtzIGEgZGVmZW5zaXZlIG1lYXN1cmUsIGFkZGluZyBhIGNydWNpYWwgcmV0dXJuIHN0YXRlbWVudCB0byBwcmV2ZW50IHRoZSBwcm9jZXNzaW5nIG9mIGFuIG91dC1vZi1ib3VuZHMgYHdpbl9zemAgdmFsdWUuIFRoaXMgaXMgZ29vZCDigJMgaXQmIzM5O3MgZGlyZWN0bHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gQUREQkEgcmVxdWVzdCBoYW5kbGluZy4KClRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBkZWZpbml0ZWx5IGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgYW5kIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAuIEJvdGggb2YgdGhlc2UgZnVuY3Rpb25zIGRlYWwgd2l0aCBBRERCQSAoQWRkIEJsb2NrIEFjaykgcmVxdWVzdHMsIHdoaWNoIGFyZSBjb250cm9sIGZyYW1lcywgbm90IGRhdGEgZnJhbWVzLiBUaGF0IG1lYW5zIHRoZXkgbWlnaHQgbm90IGJlICpzdXBlciogaGlnaC10aHJvdWdocHV0LCBidXQgdGhleSYjMzk7cmUgc3RpbGwgY3JpdGljYWwgZW50cnkgcG9pbnRzIGZvciB0aGUgQUREQkEgcHJvY2VzcywgbWFraW5nIHRoZW0gcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZy4KClNpbmNlIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgY2FsbHMgYGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZWAsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBpbmNsdWRpbmcgdGhhdCBpbiBvdXIgZm9jdXMgdG9vLiBBbmQgd2hpbGUgd2UgYXJlIGhlcmUsIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBgYXRoNmtsX3dtaV9wcm9jX2V2ZW50c192aWZgIGZ1bmN0aW9uLCBzaW5jZSBpdCBpcyB0aGUgZGlzcGF0Y2hlci4KClRoZXJlZm9yZSwgZm9yIHRoZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24sIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIG9mIGNvdXJzZS4gSSYjMzk7bGwgZGVmaW5lIGBGb2N1c1N5bWJvbHNgIGFzIGBbJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LCAmIzM0O2F0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4JiMzNDtdYC4gV2UgYWxzbyBlbmFibGUgYEFUSDZLTGAgYW5kIGBBVEg2S0xfVVNCYCBjb25maWd1cmF0aW9ucy4KClRoZSByZWFzb25pbmcgaGVyZSBpcyBzb2xpZDogdGhpcyBwYXRjaCBpcyBndWFyZGluZyBhZ2FpbnN0IGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIHRoZSBBRERCQSByZXF1ZXN0IGV2ZW50IGhhbmRsZXIsIGFuZCB0aGUgYEFUSDZLTGAgZHJpdmVyLCBiZWluZyBVU0IgYWNjZXNzaWJsZSwgaXMgcmVhY2hhYmxlIHZpYSBmdXp6aW5nLiBUaGlzIHNldHVwIHdpbGwgYWxsb3cgdXMgdG8gdGhvcm91Z2hseSB0ZXN0IHRoZSBib3VuZHMgY2hlY2sgYW5kIGVuc3VyZSB0aGUgZml4IGlzIGVmZmVjdGl2ZSwgYW5kIHRoYXQgd2UgaGF2ZSBpZGVudGlmaWVkIHRoZSBmdW5jdGlvbnMgdGhlIHBhdGNoIGFmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg2S0wmIzM0OywKICAgICYjMzQ7QVRINktMX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0JiMzNDssCiAgICAmIzM0O2F0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYW5kIGFuIGVhcmx5IHJldHVybiBmb3IgYW4gb3V0LW9mLWJvdW5kcyB3aW5kb3cgc2l6ZSBpbiB0aGUgQUREQkEgcmVxdWVzdCBldmVudCBoYW5kbGVyIG9mIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGFsbG9jYXRpbmcgdGhlIGhvbGQgcXVldWUuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRINktMJiMzNDssCiAgICAmIzM0O0FUSDZLTF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dCYjMzQ7LAogICAgJiMzNDthdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFuZCBhbiBlYXJseSByZXR1cm4gZm9yIGFuIG91dC1vZi1ib3VuZHMgd2luZG93IHNpemUgaW4gdGhlIEFEREJBIHJlcXVlc3QgZXZlbnQgaGFuZGxlciBvZiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiBhbGxvY2F0aW5nIHRoZSBob2xkIHF1ZXVlLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDozMS4xOTc5MTI5NDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjM4NDY0MTI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg2S0xcIixcbiAgICBcIkFUSDZLTF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dFwiLFxuICAgIFwiYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGFuZCBhbiBlYXJseSByZXR1cm4gZm9yIGFuIG91dC1vZi1ib3VuZHMgd2luZG93IHNpemUgaW4gdGhlIEFEREJBIHJlcXVlc3QgZXZlbnQgaGFuZGxlciBvZiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiBhbGxvY2F0aW5nIHRoZSBob2xkIHF1ZXVlLiBUaGUgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjMxLjE5NzkzMTAzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMzUyMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzZlZGY5NzUwYmRmNzMxNzFjY2Y1NDA2MDFlMTNkMjFlOThlMTNkN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyIDA3OjUwOjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG5pbmRleCA4MGU2NmFjYzVjZjZlOS4uYTM5YzgxNTA1ODdlZWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xcbkBAIC0xNzIyLDEzICsxNzIyLDE1IEBAIHZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG4gXFxuIFxcdHJ4dGlkID0gXFx1MDAyNmFnZ3JfY29ubi1cXHUwMDNlcnhfdGlkW3RpZF07XFxuIFxcbi1cXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWClcXG4tXFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFxcXCIlczogd2luX3N6ICVkLCB0aWQgJWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7XFxuLVxcbiBcXHRpZiAocnh0aWQtXFx1MDAzZWFnZ3IpXFxuIFxcdFxcdGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZShhZ2dyX2Nvbm4sIHRpZCk7XFxuIFxcbitcXHRpZiAod2luX3N6IFxcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcXHUwMDNlIEFHR1JfV0lOX1NaX01BWCkge1xcbitcXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9SWCwgXFxcIiVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbiBcXHRyeHRpZC1cXHUwMDNlc2VxX25leHQgPSBzZXFfbm87XFxuIFxcdGhvbGRfcV9zaXplID0gVElEX1dJTkRPV19TWih3aW5fc3opICogc2l6ZW9mKHN0cnVjdCBza2JfaG9sZF9xKTtcXG4gXFx0cnh0aWQtXFx1MDAzZWhvbGRfcSA9IGt6YWxsb2MoaG9sZF9xX3NpemUsIEdGUF9LRVJORUwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDozMS42MzIyOTgzNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5NTAyNDYxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhbmQgYW4gZWFybHkgcmV0dXJuIGZvciBhbiBvdXQtb2YtYm91bmRzIHdpbmRvdyBzaXplIGluIHRoZSBBRERCQSByZXF1ZXN0IGV2ZW50IGhhbmRsZXIgb2YgdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYWxsb2NhdGluZyB0aGUgaG9sZCBxdWV1ZS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc2ZWRmOTc1MGJkZjczMTcxY2NmNTQwNjAxZTEzZDIxZTk4ZTEzZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA3OjUwOjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggODBlNjZhY2M1Y2Y2ZTkuLmEzOWM4MTUwNTg3ZWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG5AQCAtMTcyMiwxMyArMTcyMiwxNSBAQCB2b2lkIGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHU4IHRpZF9tdXgsIHUxNiBzZXFfbm8sXG4gXG4gXHRyeHRpZCA9IFx1MDAyNmFnZ3JfY29ubi1cdTAwM2VyeF90aWRbdGlkXTtcbiBcbi1cdGlmICh3aW5fc3ogXHUwMDNjIEFHR1JfV0lOX1NaX01JTiB8fCB3aW5fc3ogXHUwMDNlIEFHR1JfV0lOX1NaX01BWClcbi1cdFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fUlgsIFwiJXM6IHdpbl9zeiAlZCwgdGlkICVkXFxuXCIsXG4tXHRcdFx0ICAgX19mdW5jX18sIHdpbl9zeiwgdGlkKTtcbi1cbiBcdGlmIChyeHRpZC1cdTAwM2VhZ2dyKVxuIFx0XHRhZ2dyX2RlbGV0ZV90aWRfc3RhdGUoYWdncl9jb25uLCB0aWQpO1xuIFxuK1x0aWYgKHdpbl9zeiBcdTAwM2MgQUdHUl9XSU5fU1pfTUlOIHx8IHdpbl9zeiBcdTAwM2UgQUdHUl9XSU5fU1pfTUFYKSB7XG4rXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX1JYLCBcIiVzOiB3aW5fc3ogJWQsIHRpZCAlZFxcblwiLFxuK1x0XHRcdCAgIF9fZnVuY19fLCB3aW5fc3osIHRpZCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJ4dGlkLVx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xuIFx0aG9sZF9xX3NpemUgPSBUSURfV0lORE9XX1NaKHdpbl9zeikgKiBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpO1xuIFx0cnh0aWQtXHUwMDNlaG9sZF9xID0ga3phbGxvYyhob2xkX3Ffc2l6ZSwgR0ZQX0tFUk5FTCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDozMS42MzIzMDAxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Mjc5NjA4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGF0aDZrbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgLiBFc3NlbnRpYWxseSwgaXQncyBhZGRpbmcgYSByZXR1cm4gc3RhdGVtZW50IGlmIGB3aW5fc3pgIGZhbGxzIG91dHNpZGUgb2YgdGhlIGFjY2VwdGFibGUgcmFuZ2U6IGBBR0dSX1dJTl9TWl9NSU5gIGFuZCBgQUdHUl9XSU5fU1pfTUFYYC4gSXQncyBhIGZ1bmN0aW9uYWwgZml4LCBkZXNpZ25lZCB0byBwcmV2ZW50IGRvZGd5IG1lbW9yeSBhbGxvY2F0aW9uLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcg4oCTIHByb3RlY3RpbmcgYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIG9yIGludmFsaWQgd2luZG93IHNpemUgaXMgYWx3YXlzIHBydWRlbnQuIEhvbGQgb24sIHRob3VnaC4uLiB0aGlua2luZyBhYm91dCBpdCwgYFRJRF9XSU5ET1dfU1ood2luX3N6KWAgY291bGQgaGF2ZSBiZWVuIGRvaW5nIHNvbWV0aGluZyBuYXN0eSBpZiBgd2luX3N6YCB3YXMgb3V0IG9mIHNwZWMuXG5cbk5vdyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiByZWFjaCB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiBnZXQgYGF0aDZrbGAgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBgYXRoNmtsYCBpcyB0aGUgZHJpdmVyIGZvciB0aG9zZSBvbGQgQXRoZXJvcyBBUjYwMDMvQVI2MDA0IHdpcmVsZXNzIGRldmljZXMuIElzIHRoZXJlIGEgd2F5IHRvIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBJJ20gdXN1YWxseSB1c2luZyBgbWFjODAyMTFfaHdzaW1gIHRvIGVtdWxhdGUgbWFjODAyMTEgZGV2aWNlcywgYnV0IGBhdGg2a2xgIGlzIGEgZnVsbG1hYyBkcml2ZXIsIHNvIGl0IHVzZXMgYGNmZzgwMjExYC4gSXQncyBub3QgYSBkaXJlY3QgY29tcGFyaXNvbi5cblxuV2FpdCBhIHNlY29uZOKApiBjYW4gSSBmdXp6IHRoaXMgdGhpbmcgdmlhIFVTQj8gVGhhdCdzIGFuIGludGVyZXN0aW5nIGFuZ2xlLiBMZXQgbWUgY2hlY2sgaWYgYGF0aDZrbGAgZXZlbiAqaGFzKiBhIFVTQiBpbnRlcmZhY2UuIElzIHRoZXJlIGEgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmNgIGZpbGU/IFllcCwgdGhhdCdzIHdoYXQgSSdsbCBpbnZlc3RpZ2F0ZSBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTA6MzcuNDYwMjYzNDAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzQ5NTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDZrbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMDM4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9Mj1jb25maWcgQVRINktMXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTAtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxMTpcXHQgIGF0aDZrbF9jb3JlLiBQbGVhc2Ugbm90ZSB0aGF0IEFSNjAwMiBhbmQgQVI2MDAxIGFyZSBub3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTItXFx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MTQ9Y29uZmlnIEFUSDZLTF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE1OlxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTE2LVxcdGRlcGVuZHMgb24gQVRINktMXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjAtXFx0ICBBdGhlcm9zIEFSNjAwMyBhbmQgQVI2MDA0IGNoaXBzZXRzIHJ1bm5pbmcgb3ZlciBTRElPLiBJZiB5b3VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjE6XFx0ICBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0aDZrbF9zZGlvLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMi1cXHQgIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI1PWNvbmZpZyBBVEg2S0xfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI2OlxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zMi1cXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcXHQgIGNhbGxlZCBhdGg2a2xfdXNiLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MzU9Y29uZmlnIEFUSDZLTF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozNjpcXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM3LVxcdGRlcGVuZHMgb24gQVRINktMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6Mzk6XFx0ICBFbmFibGVzIGF0aDZrbCBkZWJ1ZyBzdXBwb3J0LCBpbmNsdWRpbmcgZGVidWcgbWVzc2FnZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDAtXFx0ICBlbmFibGVkIHdpdGggZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyIGFuZCBkZWJ1Z2ZzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NDU9Y29uZmlnIEFUSDZLTF9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ2OlxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00OS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjUwOlxcdCAgU2VsZWN0IHRoaXMgdG8gYXRoNmtsIHVzZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlIHdoaWNoLCBmb3JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTEtXFx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz01Nz1jb25maWcgQVRINktMX1JFR0RPTUFJTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1ODpcXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCByZWdkb21haW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTktXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRINktMKSArPSBhdGg2a2xfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNjphdGg2a2xfY29yZS15ICs9IGRlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI3OmF0aDZrbF9jb3JlLXkgKz0gaGlmLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI4OmF0aDZrbF9jb3JlLXkgKz0gaHRjX21ib3gub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjk6YXRoNmtsX2NvcmUteSArPSBodGNfcGlwZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMDphdGg2a2xfY29yZS15ICs9IGJtaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMTphdGg2a2xfY29yZS15ICs9IGNmZzgwMjExLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMyOmF0aDZrbF9jb3JlLXkgKz0gaW5pdC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMzphdGg2a2xfY29yZS15ICs9IG1haW4ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzQ6YXRoNmtsX2NvcmUteSArPSB0eHJ4Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM1OmF0aDZrbF9jb3JlLXkgKz0gd21pLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM2OmF0aDZrbF9jb3JlLXkgKz0gY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNzphdGg2a2xfY29yZS15ICs9IHJlY292ZXJ5Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzk6YXRoNmtsX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDA6YXRoNmtsX2NvcmUtJChDT05GSUdfQVRINktMX1RSQUNJTkcpICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX0FUSDZLTF9TRElPKSArPSBhdGg2a2xfc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MzphdGg2a2xfc2Rpby15ICs9IHNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQVRINktMX1VTQikgKz0gYXRoNmtsX3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NjphdGg2a2xfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzOmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4LVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjk6XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBkb25lIHNraXBwZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVxcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byBzZW5kIGJtaSBkb25lOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQ6aW50IGF0aDZrbF9ibWlfZ2V0X3RhcmdldF9pbmZvKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU1OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCAodTggKilcXHUwMDI2Y2lkLCBzaXplb2YoY2lkKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Ni1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gc2VuZCBnZXQgdGFyZ2V0IGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjEtXFx0aWYgKGFyLVxcdTAwM2VoaWZfdHlwZSA9PSBBVEg2S0xfSElGX1RZUEVfVVNCKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2MjpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKil0YXJnX2luZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02My1cXHRcXHRcXHRcXHRcXHQgIHNpemVvZigqdGFyZ19pbmZvKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NjU6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgKHU4ICopXFx1MDAyNnRhcmdfaW5mby1cXHUwMDNldmVyc2lvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY2LVxcdFxcdFxcdFxcdHNpemVvZih0YXJnX2luZm8tXFx1MDAzZXZlcnNpb24pKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjktXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NzA6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlY3YgdGFyZ2V0IGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzUtXFx0XFx0LyogRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIGFyZSBpbiB0aGUgVGFyZ2V0J3MgdGFyZ19pbmZvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3NjpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzctXFx0XFx0XFx0XFx0ICAgKHU4ICopXFx1MDAyNnRhcmdfaW5mby1cXHUwMDNlYnl0ZV9jb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzktXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6ODA6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwidW5hYmxlIHRvIHJlYWQgdGFyZ2V0IGluZm8gYnl0ZSBjb3VudDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04MS1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy05NC1cXHRcXHQvKiBSZWFkIHRoZSByZW1haW5kZXIgb2YgdGhlIHRhcmdfaW5mbyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6OTU6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk2LVxcdFxcdFxcdFxcdCAgICgodTggKil0YXJnX2luZm8pICtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTAxLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEwMjpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVhZCB0YXJnZXQgaW5mbyAoJWQgYnl0ZXMpOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwMy1cXHRcXHRcXHRcXHQgICB0YXJnX2luZm8tXFx1MDAzZWJ5dGVfY291bnQsIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEwODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwidGFyZ2V0IGluZm8gKHZlcjogMHgleCB0eXBlOiAweCV4KVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwOS1cXHRcXHQgICB0YXJnX2luZm8tXFx1MDAzZXZlcnNpb24sIHRhcmdfaW5mby1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjExNDppbnQgYXRoNmtsX2JtaV9yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEyMi1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEyMzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTI0LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMzQ6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzNS1cXHRcXHQgICBcXFwiYm1pIHJlYWQgbWVtb3J5OiBkZXZpY2U6IGFkZHI6IDB4JXgsIGxlbjogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1MTpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTUyLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1MzpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTQtXFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU2LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1NzpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIHJ4X2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTgtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTU5OlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjAtXFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTcwOmludCBhdGg2a2xfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE3MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE4MC1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE4MTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgyLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxOTU6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5Ni1cXHRcXHQgICBcXFwiYm1pIHdyaXRlIG1lbW9yeTogYWRkcjogMHgleCwgbGVuOiAlZFxcXFxuXFxcIiwgYWRkciwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjI1OlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMjYtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjI3OlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyOC1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMzc6aW50IGF0aDZrbF9ibWlfZXhlY3V0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNDQtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNDU6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0Ni1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjU2OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJibWkgZXhlY3V0ZTogYWRkcjogMHgleCwgcGFyYW06ICVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI1Ny1cXHRcXHQgICBhZGRyLCAqcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjc6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI2OC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjk6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcwLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3MzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIHNpemVvZigqcGFyYW0pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3NC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNzU6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlYWQgZnJvbSB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3Ni1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyODQ6aW50IGF0aDZrbF9ibWlfc2V0X2FwcF9zdGFydChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOTEtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyOTI6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5My1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzAzOlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJibWkgc2V0IGFwcCBzdGFydDogYWRkcjogMHgleFxcXFxuXFxcIiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMxMTpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzEyLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMxMzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTQtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzIwOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyNy1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMyODpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzI5LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMzk6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSByZWFkIFNPQyByZWc6IGFkZHI6IDB4JXhcXFxcblxcXCIsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDc6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0OC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDk6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUwLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1MzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIHNpemVvZigqcGFyYW0pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1NC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTU6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlYWQgZnJvbSB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1Ni1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNjM6aW50IGF0aDZrbF9ibWlfcmVnX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyIHBhcmFtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzcwLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzcxOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzItXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM4MjpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzgzLVxcdFxcdCAgIFxcXCJibWkgd3JpdGUgU09DIHJlZzogYWRkcjogMHgleCwgcGFyYW06ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTQ6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTY6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk3LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQwMzppbnQgYXRoNmtsX2JtaV9sel9kYXRhKHN0cnVjdCBhdGg2a2wgKmFyLCB1OCAqYnVmLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDEyLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDEzOlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MTQtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQyNDpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIHNlbmQgTFogZGF0YTogbGVuOiAlZClcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MjUtXFx0XFx0ICAgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQxOlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDItXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQzOlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ0NC1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NTQ6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2MS1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ2MjpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDYzLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NzM6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ3NC1cXHRcXHQgICBcXFwiYm1pIExaIHN0cmVhbSBzdGFydDogYWRkcjogMHgleClcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ4MzpcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDg0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ4NTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gc3RhcnQgTFogc3RyZWFtIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDg2LVxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ5MzppbnQgYXRoNmtsX2JtaV9mYXN0X2Rvd25sb2FkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUwMDpcXHRyZXQgPSBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChhciwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MDEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTA5OlxcdHJldCA9IGF0aDZrbF9ibWlfbHpfZGF0YShhciwgYnVmLCBsYXN0X3dvcmRfb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTMtXFx0aWYgKHVuYWxpZ25lZF9ieXRlcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxNDpcXHRcXHRyZXQgPSBhdGg2a2xfYm1pX2x6X2RhdGEoYXIsICh1OCAqKVxcdTAwMjZsYXN0X3dvcmQsIDQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTgtXFx0XFx0ICogVGhpcyBzZXJ2ZXMgbWFpbmx5IHRvIGZsdXNoIFRhcmdldCBjYWNoZXMuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MTk6XFx0XFx0cmV0ID0gYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoYXIsIDB4MDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTI0OnZvaWQgYXRoNmtsX2JtaV9yZXNldChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUyOTppbnQgYXRoNmtsX2JtaV9pbml0KHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTQ0OnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjE5OnN0cnVjdCBhdGg2a2w7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjA6c3RydWN0IGF0aDZrbF9ibWlfdGFyZ2V0X2luZm8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjIxLVxcdF9fbGUzMiBieXRlX2NvdW50OyAgIC8qIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjI2OiNkZWZpbmUgYXRoNmtsX2JtaV93cml0ZV9oaTMyKGFyLCBpdGVtLCB2YWwpXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI3LVxcdCh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMxOlxcdFxcdGFkZHIgPSBhdGg2a2xfZ2V0X2hpX2l0ZW1fYWRkcihhciwgSElfSVRFTShpdGVtKSk7XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjMyLVxcdFxcdHYgPSBjcHVfdG9fbGUzMih2YWwpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIzMzpcXHRcXHRhdGg2a2xfYm1pX3dyaXRlKGFyLCBhZGRyLCAodTggKikgXFx1MDAyNnYsIHNpemVvZih2KSk7XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM0LVxcdH0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzY6I2RlZmluZSBhdGg2a2xfYm1pX3JlYWRfaGkzMihhciwgaXRlbSwgdmFsKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNy1cXHQoe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQyLVxcdFxcdCh2b2lkKSAoY2hlY2tfdHlwZSA9PSB2YWwpO1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI0MzpcXHRcXHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI0NDpcXHRcXHRyZXQgPSBhdGg2a2xfYm1pX3JlYWQoYXIsIGFkZHIsICh1OCAqKSBcXHUwMDI2dG1wLCA0KTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDUtXFx0XFx0aWYgKCFyZXQpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTA6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTE6dm9pZCBhdGg2a2xfYm1pX2NsZWFudXAoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUyOnZvaWQgYXRoNmtsX2JtaV9yZXNldChzdHJ1Y3QgYXRoNmtsICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTQ6aW50IGF0aDZrbF9ibWlfZG9uZShzdHJ1Y3QgYXRoNmtsICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTU6aW50IGF0aDZrbF9ibWlfZ2V0X3RhcmdldF9pbmZvKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU2OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NzppbnQgYXRoNmtsX2JtaV9yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTg6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1OTppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjYwLVxcdFxcdCAgICAgICB1MzIgYWRkciwgdTMyICpwYXJhbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjE6aW50IGF0aDZrbF9ibWlfc2V0X2FwcF9zdGFydChzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Mi1cXHRcXHRcXHQgICAgIHUzMiBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MzppbnQgYXRoNmtsX2JtaV9yZWdfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY0OmludCBhdGg2a2xfYm1pX3JlZ193cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiBwYXJhbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjU6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Ni1cXHRcXHQgICAgICAgdTggKmJ1ZiwgdTMyIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjc6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjY4LVxcdFxcdFxcdCAgICAgICB1MzIgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjk6aW50IGF0aDZrbF9ibWlfZmFzdF9kb3dubG9hZChzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI3MC1cXHRcXHRcXHQgICAgIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NTc6c3RydWN0IGF0aDZrbF9jZmc4MDIxMV9tYXRjaF9wcm9iZV9zc2lkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNTgtXFx0c3RydWN0IGNmZzgwMjExX3NzaWQgc3NpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy02MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NjI6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfcmF0ZSBhdGg2a2xfcmF0ZXNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjMtXFx0UkFURVRBQl9FTlQoMTAsIDB4MSwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc3OiNkZWZpbmUgYXRoNmtsX2FfcmF0ZXMgICAgIChhdGg2a2xfcmF0ZXMgKyA0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3ODojZGVmaW5lIGF0aDZrbF9hX3JhdGVzX3NpemUgICAgOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3OTojZGVmaW5lIGF0aDZrbF9nX3JhdGVzICAgICAoYXRoNmtsX3JhdGVzICsgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODA6I2RlZmluZSBhdGg2a2xfZ19yYXRlc19zaXplICAgIDEyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4MjojZGVmaW5lIGF0aDZrbF9nX2h0Y2FwIElFRUU4MDIxMV9IVF9DQVBfU0dJXzIwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgzOiNkZWZpbmUgYXRoNmtsX2FfaHRjYXAgKElFRUU4MDIxMV9IVF9DQVBfU1VQX1dJRFRIXzIwXzQwIHwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04NC1cXHRcXHRcXHRJRUVFODAyMTFfSFRfQ0FQX1NHSV8yMFxcdFxcdCB8IFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODc6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfMmdoel9jaGFubmVsc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04OC1cXHRDSEFOMkcoMSwgMjQxMiwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMDQ6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfNWdoel9hX2NoYW5uZWxzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwNS1cXHRDSEFONUcoMzYsIDApLCBDSEFONUcoNDAsIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI0OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kIGF0aDZrbF9iYW5kXzJnaHogPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNTpcXHQubl9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoNmtsXzJnaHpfY2hhbm5lbHMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjY6XFx0LmNoYW5uZWxzID0gYXRoNmtsXzJnaHpfY2hhbm5lbHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNzpcXHQubl9iaXRyYXRlcyA9IGF0aDZrbF9nX3JhdGVzX3NpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyODpcXHQuYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI5OlxcdC5odF9jYXAuY2FwID0gYXRoNmtsX2dfaHRjYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzMC1cXHQuaHRfY2FwLmh0X3N1cHBvcnRlZCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzM6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgYXRoNmtsX2JhbmRfNWdoeiA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM0OlxcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfNWdoel9hX2NoYW5uZWxzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM1OlxcdC5jaGFubmVscyA9IGF0aDZrbF81Z2h6X2FfY2hhbm5lbHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNjpcXHQubl9iaXRyYXRlcyA9IGF0aDZrbF9hX3JhdGVzX3NpemUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNzpcXHQuYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM4OlxcdC5odF9jYXAuY2FwID0gYXRoNmtsX2FfaHRjYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzOS1cXHQuaHRfY2FwLmh0X3N1cHBvcnRlZCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ0LS8qIHJldHVybnMgdHJ1ZSBpZiBzY2hlZHVsZWQgc2NhbiB3YXMgc3RvcHBlZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNDU6c3RhdGljIGJvb2wgX19hdGg2a2xfY2ZnODAyMTFfc3NjYW5fc3RvcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNDc6XFx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNTc6XFx0YXRoNmtsX3dtaV9lbmFibGVfc2NoZWRfc2Nhbl9jbWQoYXItXFx1MDAzZXdtaSwgdmlmLVxcdTAwM2Vmd192aWZfaWR4LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2MjpzdGF0aWMgdm9pZCBhdGg2a2xfY2ZnODAyMTFfc3NjYW5fZGlzYWJsZShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjQ6XFx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjUtXFx0Ym9vbCBzdG9wcGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2NzpcXHRzdG9wcGVkID0gX19hdGg2a2xfY2ZnODAyMTFfc3NjYW5fc3RvcCh2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNzU6c3RhdGljIGludCBhdGg2a2xfc2V0X3dwYV92ZXJzaW9uKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ni1cXHRcXHRcXHRcXHQgIGVudW0gbmw4MDIxMV93cGFfdmVyc2lvbnMgd3BhX3ZlcnNpb24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE3ODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCIlczogJXVcXFxcblxcXCIsIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODYtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTg3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIiVzOiAldSBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgd3BhX3ZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODgtXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE5NDpzdGF0aWMgaW50IGF0aDZrbF9zZXRfYXV0aF90eXBlKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5NS1cXHRcXHRcXHRcXHRlbnVtIG5sODAyMTFfYXV0aF90eXBlIGF1dGhfdHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk3OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIiVzOiAweCV4XFxcXG5cXFwiLCBfX2Z1bmNfXywgYXV0aF90eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIxNC1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMTU6XFx0XFx0YXRoNmtsX2VycihcXFwiJXM6IDB4JXggbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18sIGF1dGhfdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIxNi1cXHRcXHRyZXR1cm4gLUVOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjIyOnN0YXRpYyBpbnQgYXRoNmtsX3NldF9jaXBoZXIoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGNpcGhlciwgYm9vbCB1Y2FzdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjIyODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCIlczogY2lwaGVyIDB4JXgsIHVjYXN0ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjktXFx0XFx0ICAgX19mdW5jX18sIGNpcGhlciwgdWNhc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI1Ny1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyNTg6XFx0XFx0YXRoNmtsX2VycihcXFwiY2lwaGVyIDB4JXggbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgY2lwaGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjU5LVxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyNjU6c3RhdGljIHZvaWQgYXRoNmtsX3NldF9rZXlfbWdtdChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MzIga2V5X21nbXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NzpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCIlczogMHgleFxcXFxuXFxcIiwgX19mdW5jX18sIGtleV9tZ210KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg0OnN0YXRpYyBib29sIGF0aDZrbF9jZmc4MDIxMV9yZWFkeShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODY6XFx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4OC1cXHRpZiAoIXRlc3RfYml0KFdNSV9SRUFEWSwgXFx1MDAyNmFyLVxcdTAwM2VmbGFnKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODk6XFx0XFx0YXRoNmtsX2VycihcXFwid21pIGlzIG5vdCByZWFkeVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI5MC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjkzLVxcdGlmICghdGVzdF9iaXQoV0xBTl9FTkFCTEVELCBcXHUwMDI2dmlmLVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjk0OlxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXFxcIndsYW4gZGlzYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTUtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzAxOnN0YXRpYyBib29sIGF0aDZrbF9pc193cGFfaWUoY29uc3QgdTggKnBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwODpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfcnNuX2llKGNvbnN0IHU4ICpwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMTM6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwc19pZShjb25zdCB1OCAqcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzIxOnN0YXRpYyBpbnQgYXRoNmtsX3NldF9hc3NvY19yZXFfaWVzKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIGNvbnN0IHU4ICppZXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMi1cXHRcXHRcXHRcXHQgICAgc2l6ZV90IGllc19sZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyNDpcXHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyNS1cXHRjb25zdCB1OCAqcG9zO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjM3LjUyMDAxOTA5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzUxNDIwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVVNCIEZ1enppbmcgUG90ZW50aWFsIGZvciBhdGg2a2xfdXNiISoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gYEFUSDZLTF9VU0JgIGlzIGEgKmNvbmZpZ3VyYXRpb24qIG9wdGlvbj8gUmlnaHQsIGxldCdzIHNlZS4uLiBgY29uZmlnIEFUSDZLTF9VU0JgLCBpdCdzIGEgYHRyaXN0YXRlIFwiQXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnRcImAsIGFuZCAqY3J1Y2lhbGx5KiwgaXQgYGRlcGVuZHMgb24gQVRINktMYC4gIFRoYXQncy4uLiBpbnRlcmVzdGluZy4gIFNvLCB0aGlzIG1lYW5zIHRoaXMgaXMgKmRlZmluaXRlbHkqIGEgZHJpdmVyIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggVVNCLlxuXG5UaGF0IG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF0dGFjayBzdXJmYWNlLiBJIGNhbiByZWFjaCB0aGlzIHRoaW5nIHZpYSB0aGUgZHVtbXkgSENEIG9yIHJhdy1nYWRnZXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgYW5kIHRoYXQgbWVhbnMgaXQncyBwcmltZSBmb3IgVVNCIGZ1enppbmchIFRoaXMgY2hhbmdlcyBldmVyeXRoaW5nLlxuXG5Ob3csIHdhaXQsIGxldCdzIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMuLi4gYGF0aDZrbF91c2JgLi4uIHRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIFVTQiBkcml2ZXIuIE9rYXksIHNvIGxldCdzIHZlcmlmeSB0aGF0IHF1aWNrbHkuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jYCwgYW5kIGNoZWNrIHRvIHNlZSBpZiBpdCByZWdpc3RlcnMgYSBVU0IgZHJpdmVyLiAgVGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgd2UndmUgZ290IVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY0MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDo0Mi40NTUxNjMxNDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyMzIzMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiX3JlZ2lzdGVyfG1vZHVsZV91c2JfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0xMjM0PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBhdGg2a2xfdXNiX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjEyNDU6bW9kdWxlX3VzYl9kcml2ZXIoYXRoNmtsX3VzYl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTI0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTA6NDIuNTExMzk5OTYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4OTIxNzM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBpZiBJJ20gdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IFVTQiBGdXp6aW5nIGFuZCBhdGg2a2wgVnVsbmVyYWJpbGl0eSoqXG5cblllcywgdGhhdCdzIHJpZ2h0ISBJdCBzZWVtcyB3ZSd2ZSBnb3QgYSByZWFjaGFibGUgZW50cnkgcG9pbnQgZm9yIFVTQiBmdXp6aW5nIHdpdGhpbiB0aGUgYGF0aDZrbGAgZHJpdmVyLiBFeGNlbGxlbnQhIFRoZSB2dWxuZXJhYmlsaXR5IGFwcGVhcnMgdG8gYmUgbGlua2VkIHRvIGEgc3BlY2lmaWMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRgIGZ1bmN0aW9uLCBhbmQgdGhhdCBmdW5jdGlvbiBsaXZlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNgLiBJIG5lZWQgdG8gZGlnIGludG8gYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBub3cgYW5kIHVuZGVyc3RhbmQgdGhlIG1vZGlmaWNhdGlvbnMgaW4gZGV0YWlsLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHZlY3Rvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxOTksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MDo0NS44MDA2MTk2ODlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MzUzNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg9OTYxPXZvaWQgYWdncl9yZWN2X2RlbGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaDo5NjI6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWQsIHUxNiBzZXFfbm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgtOTYzLVxcdFxcdFxcdCAgICAgdTggd2luX3N6KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTE2NzI9c3RhdGljIHZvaWQgYWdncl9kZWxldGVfdGlkX3N0YXRlKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdncl9jb25uLCB1OCB0aWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNjk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE2OTg6dm9pZCBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCB0aWRfbXV4LCB1MTYgc2VxX25vLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE2OTktXFx0XFx0XFx0ICAgICB1OCB3aW5fc3opXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzNTI9c3RhdGljIGludCBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjMzNTc6XFx0YWdncl9yZWN2X2FkZGJhX3JlcV9ldnQodmlmLCBjbWQtXFx1MDAzZXRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTMzNTgtXFx0XFx0XFx0XFx0bGUxNl90b19jcHUoY21kLVxcdTAwM2VzdF9zZXFfbm8pLCBjbWQtXFx1MDAzZXdpbl9zeik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjQ1Ljg1ODA1OTEyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjY5NTA0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAsIHdoaWNoIGlzIHRyaWdnZXJlZCBieSBgYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhgLiBUaGUga2V5IGlzIHRoYXQgdGhpcyBpcyBhIFdNSSBldmVudCBjb21pbmcgZnJvbSB0aGUgZmlybXdhcmUsIGFuZCB3ZSdyZSBkZWFsaW5nIHdpdGggVVNCIChvciBTRElPKSBjb21tdW5pY2F0aW9uLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGlzc3VlLCBiZWNhdXNlIGEgZnV6emVkIFVTQiBkZXZpY2UgY291bGQsIGluIHRoZW9yeSwgc2VuZCBjb21wbGV0ZWx5IGFyYml0cmFyeSBXTUkgZXZlbnRzIHRvIHRoZSBob3N0LiBUaGF0IG1lYW5zIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgY291bGQgYmUgZXhwbG9pdGVkLlxuXG5UaGUgdnVsbmVyYWJpbGl0eSBzdGVtcyBmcm9tIHRoZSBgd2luX3N6YCB2YXJpYWJsZSwgdXNlZCB3aXRoaW4gYFRJRF9XSU5ET1dfU1pgLiBUaGUgcGF0Y2ggcHJldmVudHMgYW4gb3V0LW9mLWJvdW5kcyB2YWx1ZSBvZiBgd2luX3N6YCBmcm9tIGJlaW5nIHVzZWQsIGJlY2F1c2UgaXQncyB1c2VkIGluIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBxdWV1ZSBzZXR1cC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBgVElEX1dJTkRPV19TWmAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBzZWUgZXhhY3RseSBob3cgdGhleSdyZSBtaXRpZ2F0aW5nIHRoZSBpc3N1ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGB3aW5fc3pgIHBhcmFtZXRlciBjb250cm9scyB3aXRoaW4gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBxdWV1ZSBzZXR1cCwgYW5kIGhvdyBhIG1hbGljaW91cyB2YWx1ZSBjb3VsZCBsZWFkIHRvIGEgYnVmZmVyIG92ZXJmbG93IG9yIHNvbWUgb3RoZXIgZm9ybSBvZiBtZW1vcnkgY29ycnVwdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5NjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTA6NTEuNTI1MDExMzYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk4MzA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJUSURfV0lORE9XX1NaXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oPTE2Nj1lbnVtIGF0aDZrbF9od19mbGFncyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaC0yNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmg6MjcyOiNkZWZpbmUgVElEX1dJTkRPV19TWihfeCkgICAoKF94KSBcXHUwMDNjXFx1MDAzYyAxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oLTI3My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jPTEwNDY9c3RhdGljIHZvaWQgYWdncl9kZXF1ZV9mcm1zKHN0cnVjdCBhZ2dyX2luZm9fY29ubiAqYWdnX2Nvbm4sIHU4IHRpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTEwNjktXFx0ICogVGFyZ2V0IHNob3VsZCBqdWRpY2lvdXNseSBjaG9vc2UgdGhlIHdpbl9zeiwgYmFzZWQgb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYzoxMDcwOlxcdCAqIHRoaXMgY29uZGl0aW9uLiBGb3IgNDA5NSwgKFRJRF9XSU5ET1dfU1ogPSAyIHggd2luX3N6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTA3MS1cXHQgKiAyLCA0LCA4LCAxNiB3aW5fc3ogd29ya3MgZmluZSkuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xMTA1PXN0YXRpYyBib29sIGFnZ3JfcHJvY2Vzc19yZWN2X2ZybShzdHJ1Y3QgYWdncl9pbmZvX2Nvbm4gKmFnZ19jb25uLCB1OCB0aWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xMTg3LVxcdCAqICAgICAgICAgdGhpcyBpcyB0YWtlbiBjYXJlIG9mIGFib3ZlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjExODg6XFx0ICogIDJiLiBpcyB0aGUgZnJhbWVfc2VxX25vIGJleW9uZCB3aW5kb3coc3QsIFRJRF9XSU5ET1dfU1opO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTExODktXFx0ICogICAgICAtXFx1MDAzZSBUYWtlbiBjYXJlIG9mIGl0IGFib3ZlLCBieSBtb3Zpbmcgd2luZG93IGZvcndhcmQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYz0xNjk4PXZvaWQgYWdncl9yZWN2X2FkZGJhX3JlcV9ldnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggdGlkX211eCwgdTE2IHNlcV9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzQtXFx0cnh0aWQtXFx1MDAzZXNlcV9uZXh0ID0gc2VxX25vO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3MzU6XFx0aG9sZF9xX3NpemUgPSBUSURfV0lORE9XX1NaKHdpbl9zeikgKiBzaXplb2Yoc3RydWN0IHNrYl9ob2xkX3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jLTE3MzYtXFx0cnh0aWQtXFx1MDAzZWhvbGRfcSA9IGt6YWxsb2MoaG9sZF9xX3NpemUsIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMtMTc0MC1cXHRyeHRpZC1cXHUwMDNld2luX3N6ID0gd2luX3N6O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jOjE3NDE6XFx0cnh0aWQtXFx1MDAzZWhvbGRfcV9zeiA9IFRJRF9XSU5ET1dfU1ood2luX3N6KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYy0xNzQyLVxcdGlmICghc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZyeHRpZC1cXHUwMDNlcSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjUxLjU4MTAwNDQ3MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjI5MDYyOTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVnVsbmVyYWJpbGl0eSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHByZXZlbnRpbmcgYGhvbGRfcV9zaXplYCBmcm9tIGdldHRpbmcgbWVzc2VkIHVwIGNhbGN1bGF0aW9ucyBkdWUgdG8gYW4gaW52YWxpZCBgd2luX3N6YCB2YWx1ZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwic21hcnQgbW92ZS5cIiBXZSdyZSB0YWxraW5nIGFib3V0IGEgc2NlbmFyaW8gd2hlcmUgYSBnaWFudCBgd2luX3N6YCBjb3VsZCB0cmlnZ2VyIGEgaHVnZSBhbGxvY2F0aW9uIG9yIGFuIGludGVnZXIgb3ZlcmZsb3csIHdoaWNoLCB3ZSBhbGwga25vdywgaXMgYSByZWNpcGUgZm9yIGRpc2FzdGVyLiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgYHdpbl9zemAgaXMgemVybywgd2UncmUgYWxsb2NhdGluZyAqbm90aGluZyosIHdoaWNoIGNvdWxkIGVhc2lseSByZXN1bHQgaW4gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIGxhdGVyIG9uLiBZZXAsIHRoaXMgaXMgYSBwcmV0dHkgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgVVNCIGZ1enppbmcgY291bGQgdW5jb3Zlci5cblxuTm93LCBsZXQncyBnZXQgaW50byBwaW5wb2ludGluZyB0aGUgZm9jdXMgc3ltYm9scy4gSSdtIHRoaW5raW5nIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gQW5kIGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgaXMgYW5vdGhlciBzdHJvbmcgY29udGVuZGVyLiBJdCdzIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd2Ugc2hvdWxkIGNvbnNpZGVyLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyMTYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTA6NTYuODEwMDY4OTE2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU3NjAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTMzMzM9c3RhdGljIGludCBhdGg2a2xfd21pX2dldF9wbWtpZF9saXN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zMzUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM6MzM1MjpzdGF0aWMgaW50IGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzM1My1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9Mzg3Nj1zdGF0aWMgaW50IGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmKHN0cnVjdCB3bWkgKndtaSwgdTE2IGlmX2lkeCwgdTE2IGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzkyMi1cXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcXFwiV01JX0FEREJBX1JFUV9FVkVOVElEXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjM5MjM6XFx0XFx0cmV0dXJuIGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4KHdtaSwgZGF0YXAsIGxlbiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM5MjQtXFx0Y2FzZSBXTUlfREVMQkFfUkVRX0VWRU5USUQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA3OjUwOjU2Ljg2NTY1MTc5NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDcyMzg2MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29udHJvbCBQYWNrZXQgRmxvdyBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGlzIGNvbnRyb2wgcGFja2V0IGZsb3c6IGBhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeGAgaXMgY2FsbGVkIGZyb20gYGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmYC4gUmlnaHQsIGFuZCBgYXRoNmtsX3dtaV9wcm9jX2V2ZW50c192aWZgIGlzIGl0c2VsZiBjYWxsZWQgZnJvbSBgYXRoNmtsX3dtaV9jb250cm9sX3J4YC4gVGhhdCBtYWtlcyBzZW5zZTsgYGF0aDZrbF93bWlfY29udHJvbF9yeGAgaXMgdGhlIGVudHJ5IHBvaW50IHdoZW4gdGhlIGRldmljZSBzZW5kcyBhIGNvbnRyb2wgcGFja2V0LiBHb29kLCBnb29kLlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0aGlzIHdob2xlIHRoaW5nIHRvIHdvcmsgcHJvcGVybHkuIExldCdzIHNlZS4uLiBGaXJzdCwgSSdtIGNoZWNraW5nIGZvciBgQ09ORklHX0FUSDZLTF9VU0JgIGFuZCBgQ09ORklHX0FUSDZLTGAuICBJdCBtYWtlcyBzZW5zZSB0byBlbmFibGUgYm90aCBvZiB0aGVzZS4gT2gsIHdhaXQsIHRob3NlIGFyZSAqbW9kdWxlcyouIE9rYXksIHJpZ2h0LiBOb3RoaW5nIHN1cnByaXNpbmcgdGhlcmUuXG5cbk5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdG8gZXhhbWluZT8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGRlcGVuZGVuY2llcy4gSSdtIHdvbmRlcmluZyBpZiBgQ09ORklHX01BQzgwMjExYCBvciBgQ09ORklHX0NGRzgwMjExYCBhcmUgaW52b2x2ZWQuIE9oLCB0aGF0J3MgcmlnaHQsIGBBVEg2S0xgIGRlcGVuZHMgb24gYENGRzgwMjExYC4gVGhhdCBpcyBpbXBvcnRhbnQhIExldCdzIGdvIGFuZCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAzNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MTowMi4zMzgwNDAxMTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzkwNTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEg2S0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoyOmNvbmZpZyBBVEg2S0xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBtb2JpbGUgY2hpcHNldHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MTQ6Y29uZmlnIEFUSDZLTF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI1OmNvbmZpZyBBVEg2S0xfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MzU6Y29uZmlnIEFUSDZLTF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ1OmNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ni1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjU3OmNvbmZpZyBBVEg2S0xfUkVHRE9NQUlOXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTU4LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MTowMi4zOTI0MzU3OThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4Nzc3NjQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBhdGg2a2wgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRyaXZlci4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gc3VycHJpc2VzIG9yIGltcGxpY2l0IGFzc3VtcHRpb25zIGluIGl0cyBidWlsZCBlbnZpcm9ubWVudC4gVGhpcyBjb3VsZCBpbnZvbHZlIGxvb2tpbmcgYXQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLCBvdGhlciBzdWItZHJpdmVycywgcGxhdGZvcm0gcmVxdWlyZW1lbnRzLCBhbnkgYm9hcmQtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIG9yIHBvdGVudGlhbCBjb25mbGljdHMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBwcmVzZW50IGZvciBgYXRoNmtsYCB0byBzdWNjZXNzZnVsbHkgYnVpbGQgYW5kIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgaW50cmljYXRlIHJlbGF0aW9uc2hpcHMgYW5kIG1pZ2h0IHVuY292ZXIgYSBmZXcgaW50ZXJlc3RpbmcgYnVpbGQgc2NlbmFyaW9zIGFsb25nIHRoZSB3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDkxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDc6NTE6MDUuNzgwMjE0NTE0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdGNvbmZpZyBBVEg2S0xcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIG1vYmlsZSBjaGlwc2V0cyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIGNvcmUgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gICA3OlxcdFxcdCAgQXRoZXJvcyBBUjYwMDMgYW5kIEFSNjAwNCBjaGlwc2V0cy4gWW91IHN0aWxsIG5lZWQgc2VwYXJhdGVcXG4gICA4OlxcdFxcdCAgYnVzIGRyaXZlcnMgZm9yIFVTQiBhbmQgU0RJTyB0byBiZSBhYmxlIHRvIHVzZSByZWFsIGRldmljZXMuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDExOlxcdFxcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxcbiAgMTI6XFx0XFx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBBVEg2S0xfU0RJT1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFNESU8gc3VwcG9ydFxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gQVRINktMXFxuICAxNzpcXHRcXHRkZXBlbmRzIG9uIE1NQ1xcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXFxuICAyMDpcXHRcXHQgIEF0aGVyb3MgQVI2MDAzIGFuZCBBUjYwMDQgY2hpcHNldHMgcnVubmluZyBvdmVyIFNESU8uIElmIHlvdVxcbiAgMjE6XFx0XFx0ICBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0aDZrbF9zZGlvLlxcbiAgMjI6XFx0XFx0ICBQbGVhc2Ugbm90ZSB0aGF0IEFSNjAwMiBhbmQgQVI2MDAxIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXNcXG4gIDIzOlxcdFxcdCAgZHJpdmVyLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgQVRINktMX1VTQlxcbiAgMjY6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoNmtsIFVTQiBzdXBwb3J0XFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4gIDI4OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyOTpcXHRcXHRoZWxwXFxuICAzMDpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gIDMxOlxcdFxcdCAgQXRoZXJvcyBBUjYwMDQgY2hpcHNldCBhbmQgY2hpcHNldHMgYmFzZWQgb24gaXQgcnVubmluZyBvdmVyXFxuICAzMjpcXHRcXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxcbiAgMzM6XFx0XFx0ICBjYWxsZWQgYXRoNmtsX3VzYi5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIEFUSDZLTF9ERUJVR1xcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg2a2wgZGVidWdnaW5nXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlcyBhdGg2a2wgZGVidWcgc3VwcG9ydCwgaW5jbHVkaW5nIGRlYnVnIG1lc3NhZ2VzXFxuICA0MDpcXHRcXHQgIGVuYWJsZWQgd2l0aCBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGRlYnVnZnNcXG4gIDQxOlxcdFxcdCAgaW50ZXJmYWNlLlxcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xcbiAgNDY6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg2a2wgdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gRVZFTlRfVFJBQ0lOR1xcbiAgNDk6XFx0XFx0aGVscFxcbiAgNTA6XFx0XFx0ICBTZWxlY3QgdGhpcyB0byBhdGg2a2wgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2gsIGZvclxcbiAgNTE6XFx0XFx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcXG4gIDUyOlxcdFxcdCAgbWVzc2FnZXMgYW5kIGNvbW1hbmRzIGFyZSBkZWxpdmVyZWQgdG8gdXNpbmcgaW5kaXZpZHVhbGx5XFxuICA1MzpcXHRcXHQgIGVuYWJsYWJsZSB0cmFjZSBwb2ludHMuXFxuICA1NDpcXHRcXG4gIDU1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy5cXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29uZmlnIEFUSDZLTF9SRUdET01BSU5cXG4gIDU4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHJlZ2RvbWFpbiBzdXBwb3J0XFxcIlxcbiAgNTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA2MTpcXHRcXHRoZWxwXFxuICA2MjpcXHRcXHQgIEVuYWJsaW5nIHRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gY2hhbmdlIHRoZSByZWdkb21haW4gaW5cXG4gIDYzOlxcdFxcdCAgdGhlIGZpcm13YXJlLiBUaGlzIGNhbiBiZSBvbmx5IGVuYWJsZWQgaWYgcmVndWxhdG9yeSByZXF1aXJlbWVudHNcXG4gIDY0OlxcdFxcdCAgYXJlIHRha2VuIGludG8gYWNjb3VudC5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MTowNS43ODAyOTY3OTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcyOTA5ODIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQVRINktMIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIHBhdGNoIHdpdGhpbiB0aGUgYEFUSDZLTGAgYW5kIGBBVEg2S0xfVVNCYCBtb2R1bGVzLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHN0cmFpZ2h0Zm9yd2FyZDsgaXQncyBhIGRlZmVuc2l2ZSBtZWFzdXJlLCBhZGRpbmcgYSBjcnVjaWFsIHJldHVybiBzdGF0ZW1lbnQgdG8gcHJldmVudCB0aGUgcHJvY2Vzc2luZyBvZiBhbiBvdXQtb2YtYm91bmRzIGB3aW5fc3pgIHZhbHVlLiBUaGlzIGlzIGdvb2Qg4oCTIGl0J3MgZGlyZWN0bHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gQUREQkEgcmVxdWVzdCBoYW5kbGluZy5cblxuVGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGRlZmluaXRlbHkgYGFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0YCBhbmQgYGF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4YC4gQm90aCBvZiB0aGVzZSBmdW5jdGlvbnMgZGVhbCB3aXRoIEFEREJBIChBZGQgQmxvY2sgQWNrKSByZXF1ZXN0cywgd2hpY2ggYXJlIGNvbnRyb2wgZnJhbWVzLCBub3QgZGF0YSBmcmFtZXMuIFRoYXQgbWVhbnMgdGhleSBtaWdodCBub3QgYmUgKnN1cGVyKiBoaWdoLXRocm91Z2hwdXQsIGJ1dCB0aGV5J3JlIHN0aWxsIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBmb3IgdGhlIEFEREJBIHByb2Nlc3MsIG1ha2luZyB0aGVtIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcuXG5cblNpbmNlIGBhZ2dyX3JlY3ZfYWRkYmFfcmVxX2V2dGAgY2FsbHMgYGFnZ3JfZGVsZXRlX3RpZF9zdGF0ZWAsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlJ3JlIGluY2x1ZGluZyB0aGF0IGluIG91ciBmb2N1cyB0b28uIEFuZCB3aGlsZSB3ZSBhcmUgaGVyZSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAgZnVuY3Rpb24sIHNpbmNlIGl0IGlzIHRoZSBkaXNwYXRjaGVyLlxuXG5UaGVyZWZvcmUsIGZvciB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIG9mIGNvdXJzZS4gSSdsbCBkZWZpbmUgYEZvY3VzU3ltYm9sc2AgYXMgYFtcImFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0XCIsIFwiYXRoNmtsX3dtaV9hZGRiYV9yZXFfZXZlbnRfcnhcIl1gLiBXZSBhbHNvIGVuYWJsZSBgQVRINktMYCBhbmQgYEFUSDZLTF9VU0JgIGNvbmZpZ3VyYXRpb25zLlxuXG5UaGUgcmVhc29uaW5nIGhlcmUgaXMgc29saWQ6IHRoaXMgcGF0Y2ggaXMgZ3VhcmRpbmcgYWdhaW5zdCBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiB0aGUgQUREQkEgcmVxdWVzdCBldmVudCBoYW5kbGVyLCBhbmQgdGhlIGBBVEg2S0xgIGRyaXZlciwgYmVpbmcgVVNCIGFjY2Vzc2libGUsIGlzIHJlYWNoYWJsZSB2aWEgZnV6emluZy4gVGhpcyBzZXR1cCB3aWxsIGFsbG93IHVzIHRvIHRob3JvdWdobHkgdGVzdCB0aGUgYm91bmRzIGNoZWNrIGFuZCBlbnN1cmUgdGhlIGZpeCBpcyBlZmZlY3RpdmUsIGFuZCB0aGF0IHdlIGhhdmUgaWRlbnRpZmllZCB0aGUgZnVuY3Rpb25zIHRoZSBwYXRjaCBhZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjI3MiwiT3V0cHV0VG9rZW5zIjoxMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNzo1MToxMy41MDkzOTc1NTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzE0MjIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWdncl9yZWN2X2FkZGJhX3JlcV9ldnRcIixcbiAgICBcImF0aDZrbF93bWlfYWRkYmFfcmVxX2V2ZW50X3J4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBhbmQgYW4gZWFybHkgcmV0dXJuIGZvciBhbiBvdXQtb2YtYm91bmRzIHdpbmRvdyBzaXplIGluIHRoZSBBRERCQSByZXF1ZXN0IGV2ZW50IGhhbmRsZXIgb2YgdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gYWxsb2NhdGluZyB0aGUgaG9sZCBxdWV1ZS4gVGhlIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDZLTFwiLFxuICAgIFwiQVRINktMX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFnZ3JfcmVjdl9hZGRiYV9yZXFfZXZ0XCIsXG4gICAgXCJhdGg2a2xfd21pX2FkZGJhX3JlcV9ldmVudF9yeFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgYW5kIGFuIGVhcmx5IHJldHVybiBmb3IgYW4gb3V0LW9mLWJvdW5kcyB3aW5kb3cgc2l6ZSBpbiB0aGUgQUREQkEgcmVxdWVzdCBldmVudCBoYW5kbGVyIG9mIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGFsbG9jYXRpbmcgdGhlIGhvbGQgcXVldWUuIFRoZSBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzqqf[1] Phase: Succeeded StartedAt: 2026-07-02 07:51:24 +0000 UTC FinishedAt: 2026-07-02 07:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzqqf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 07:51:24 +0000 UTC FinishedAt: 2026-07-02 07:51:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzqqf[2] Phase: Succeeded StartedAt: 2026-07-02 07:51:24 +0000 UTC FinishedAt: 2026-07-02 08:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzqqf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-02 07:51:24 +0000 UTC FinishedAt: 2026-07-02 08:14:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","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-workflowqzqqf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","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-07-02 07:51:24 +0000 UTC FinishedAt: 2026-07-02 07:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzqqf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","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-07-02 07:51:24 +0000 UTC FinishedAt: 2026-07-02 07:51:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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-workflowqzqqf/series-workflowqzqqf-convert-artifact-2164405505/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzqqf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","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-07-02 07:51:34 +0000 UTC FinishedAt: 2026-07-02 08:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzqqf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","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-07-02 07:51:34 +0000 UTC FinishedAt: 2026-07-02 08:14:05 +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:*95790cc0-6afd-4571-a3f7-944089f89294,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-workflowqzqqf/series-workflowqzqqf-convert-artifact-2164405505/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": "ee5dba1d-7db8-4c47-a0d5-77ca5e2d0b28", "success": false },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-workflowqzqqf/series-workflowqzqqf-build-action-4149842479/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzqqf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","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-07-02 07:51:34 +0000 UTC FinishedAt: 2026-07-02 08:13:45 +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:*95790cc0-6afd-4571-a3f7-944089f89294,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-workflowqzqqf/series-workflowqzqqf-convert-artifact-2164405505/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": "ee5dba1d-7db8-4c47-a0d5-77ca5e2d0b28", "success": false },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-workflowqzqqf/series-workflowqzqqf-build-action-4149842479/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzqqf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Failed StartedAt: 2026-07-02 08:14:05 +0000 UTC FinishedAt: 2026-07-02 08:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzqqf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"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":["aggr_recv_addba_req_evt","ath6kl_wmi_addba_req_event_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a24cd110e664396061b0a72930734bf419bf88c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"326d3e75-c5fd-4b8f-ba3c-9e3b3fe8ca1a","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: Failed StartedAt: 2026-07-02 08:14:05 +0000 UTC FinishedAt: 2026-07-02 08:14:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}