Name: series-workflow7tmnt Phase: Succeeded StartedAt: 2026-07-11 07:33:03 +0000 UTC FinishedAt: 2026-07-11 09:51:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[0] Phase: Succeeded StartedAt: 2026-07-11 07:33:03 +0000 UTC FinishedAt: 2026-07-11 07:48:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 07:33:03 +0000 UTC FinishedAt: 2026-07-11 07:48:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA_MT7530", "NET_DSA_MT7530_MMIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA_MT7530", "NET_DSA_MT7530_MMIO" ], "series_id": "006345a8-3446-4b6e-b5a2-0f8a799b0600" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "en7528_mac_port_get_caps", "mt7988_setup", "mt753x_conduit_state_change" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0FfTVQ3NTMwJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTVQ3NTMwX01NSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHMmIzM0OywKICAgICYjMzQ7bXQ3OTg4X3NldHVwJiMzNDssCiAgICAmIzM0O210NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBFY29OZXQgRU43NTI4IFNvQyBidWlsdC1pbiBzd2l0Y2ggdG8gdGhlIE1lZGlhdGVrIE1UNzUzMCBEU0EgZHJpdmVyLiBUaGlzIGluY2x1ZGVzIGEgbmV3IGZ1bmN0aW9uIGZvciBnZXR0aW5nIE1BQyBwb3J0IGNhcGFiaWxpdGllcyBhbmQgbW9kaWZpY2F0aW9ucyB0byBzd2l0Y2ggc2V0dXAgYW5kIGNvbmR1aXQgc3RhdGUgY2hhbmdlIGxvZ2ljLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIGRldmljZSB0cmVlIGFuZCB0aGUgc3dpdGNoIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgdGhlIERTQSBjb3JlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1Y2YxOGVjMGI5NGJlMWMwMWZmNTk0NTIwY2QxNWM0YjIzYjRjNWY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDc6NDU6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tZWRpYXRlayxtdDc1MzAueWFtbFxuaW5kZXggODE1YTkwODA4OTAxMDQuLjkwYjM1ODJiNzYxOTA5IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sXG5AQCAtMTAwLDYgJiM0MzsxMDAsMTAgQEAgcHJvcGVydGllczpcbiAgICAgICAgICAgQnVpbHQtaW4gc3dpdGNoIG9mIHRoZSBBaXJvaGEgQU43NTgzIFNvQ1xuICAgICAgICAgY29uc3Q6IGFpcm9oYSxhbjc1ODMtc3dpdGNoXG4gXG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246XG4mIzQzOyAgICAgICAgICBCdWlsdC1pbiBzd2l0Y2ggb2YgdGhlIEVjb05ldCBFTjc1MjggU29DXG4mIzQzOyAgICAgICAgY29uc3Q6IGVjb25ldCxlbjc1Mjgtc3dpdGNoXG4mIzQzO1xuICAgcmVnOlxuICAgICBtYXhJdGVtczogMVxuIFxuQEAgLTMxOCw2ICYjNDM7MzIyLDcgQEAgYWxsT2Y6XG4gICAgICAgICAgICAgLSBtZWRpYXRlayxtdDc5ODgtc3dpdGNoXG4gICAgICAgICAgICAgLSBhaXJvaGEsZW43NTgxLXN3aXRjaFxuICAgICAgICAgICAgIC0gYWlyb2hhLGFuNzU4My1zd2l0Y2hcbiYjNDM7ICAgICAgICAgICAgLSBlY29uZXQsZW43NTI4LXN3aXRjaFxuICAgICB0aGVuOlxuICAgICAgICRyZWY6IFwmIzM0OyMvJGRlZnMvYnVpbHRpbi1kc2EtcG9ydFwmIzM0O1xuICAgICAgIHByb3BlcnRpZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY1xuaW5kZXggMWRjOGI5M2ZiNTFhMTMuLjEwNjU2NzFiY2RkMTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXG5AQCAtMTMsNiAmIzQzOzEzLDcgQEBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc5ODhfb2ZfbWF0Y2hbXSA9IHtcbiBcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsYW43NTgzLXN3aXRjaFwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfQU43NTgzXSwgfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsZW43NTgxLXN3aXRjaFwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfRU43NTgxXSwgfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7ZWNvbmV0LGVuNzUyOC1zd2l0Y2hcJiMzNDssIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX0VONzUyOF0sIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWVkaWF0ZWssbXQ3OTg4LXN3aXRjaFwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3OTg4XSwgfSxcbiBcdHsgLyogc2VudGluZWwgKi8gfSxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggM2MyYTMwMjliMTBjZmIuLjJhZWNhZDc3YWY5YWQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbkBAIC0yOTEyLDYgJiM0MzsyOTEyLDMwIEBAIHN0YXRpYyB2b2lkIGVuNzU4MV9tYWNfcG9ydF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZW43NTI4X21hY19wb3J0X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4mIzQzO1x0XHRcdFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbiYjNDM7e1xuJiM0MztcdHN3aXRjaCAocG9ydCkge1xuJiM0MztcdC8qIFBvcnRzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gc3dpdGNoIFBIWXMuIFRoZXJlIGlzIG5vIE1JSSBwaW5vdXQuICovXG4mIzQzO1x0Y2FzZSAxIC4uLiA0OlxuJiM0MztcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbiYjNDM7XHRcdFx0ICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuJiM0MztcbiYjNDM7XHRcdGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMEZEO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdC8qIFBvcnQgNiBpcyBjb25uZWN0ZWQgdG8gU29DJiMzOTtzIEdNQUMgYXQgMTAwMCBNYnBzIGZ1bGwgZHVwbGV4LiBUaGVyZVxuJiM0MztcdCAqIGlzIG5vIE1JSSBwaW5vdXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0Y2FzZSA2OlxuJiM0MztcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbiYjNDM7XHRcdFx0ICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuJiM0MztcbiYjNDM7XHRcdGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWRcbiBtdDc1MzBfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcbiBcdFx0ICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuQEAgLTMyNTQsNyAmIzQzOzMyNzgsOCBAQCBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0ICogZm9yd2FyZGVkIHRvIHRoZSBudW1lcmljYWxseSBzbWFsbGVzdCBDUFUgcG9ydCB3aG9zZSBjb25kdWl0XG4gXHQgKiBpbnRlcmZhY2UgaXMgdXAuXG4gXHQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWlkICE9IElEX01UNzUzMCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2VpZCAhPSBJRF9NVDc2MjEpXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfTVQ3NTMwIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWlkICE9IElEX01UNzYyMSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcHJpdi1cdTAwM2VpZCAhPSBJRF9FTjc1MjgpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1hc2sgPSBCSVQoY3B1X2RwLVx1MDAzZWluZGV4KTtcbkBAIC0zMzE5LDkgJiM0MzszMzQ0LDE3IEBAIHN0YXRpYyBpbnQgbXQ3NTN4X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHR9XG4gfVxuIFxuJiM0MzsvKiBUaGUgRU43NTI4IExBTiBwb3J0cyBhcmUgaW50ZWdyYXRlZCBHUEhZcyBhdCBNRElPIGFkZHJlc3NlcyA5Li4xMiAoc3dpdGNoXG4mIzQzOyAqIHBvcnRzIDEuLjQpIG9uIHRoZSBzd2l0Y2ggaW50ZXJuYWwgTURJTyBidXMsIHJlYWNoYWJsZSBvbmx5IHRocm91Z2ggdGhlIFBIWVxuJiM0MzsgKiBpbmRpcmVjdCBhY2Nlc3MgcmVnaXN0ZXJzLiBUaGVyZSBpcyBubyBtZGlvZGV2IHRvIGRlcml2ZSB0aGUgYWRkcmVzc2VzIGZyb20uXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIEVONzUyOF9HUEhZX0JBU0VcdFx0OVxuJiM0MzsjZGVmaW5lIEVONzUyOF9OVU1fR1BIWVNcdFx0NFxuJiM0MztcbiBzdGF0aWMgaW50IG10Nzk4OF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4ge1xuIFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XHRpbnQgaTtcbiBcbiBcdC8qIFJlc2V0IHRoZSBzd2l0Y2ggKi9cbiBcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtXHUwMDNlcnN0Yyk7XG5AQCAtMzM0Miw2ICYjNDM7MzM3NSwxNyBAQCBzdGF0aWMgaW50IG10Nzk4OF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHQvKiBSZXNldCB0aGUgc3dpdGNoIFBIWXMgKi9cbiBcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfU1lTX0NUUkwsIFNZU19DVFJMX1BIWV9SU1QpO1xuIFxuJiM0MztcdC8qIFRoZSBFTjc1MjggTEFOIEdQSFlzIGFkdmVydGlzZSBFRUUgYnkgZGVmYXVsdCwgYnV0IG5lZ290aWF0aW5nIEVFRVxuJiM0MztcdCAqIHdpdGggY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhblxuJiM0MztcdCAqIHVuc3RhYmxlIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvblxuJiM0MztcdCAqIHRoZW0uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaWQgPT0gSURfRU43NTI4KVxuJiM0MztcdFx0Zm9yIChpID0gRU43NTI4X0dQSFlfQkFTRTtcbiYjNDM7XHRcdCAgICAgaSBcdTAwM2MgRU43NTI4X0dQSFlfQkFTRSAmIzQzOyBFTjc1MjhfTlVNX0dQSFlTOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHByaXYsIGksIE1ESU9fTU1EX0FOLFxuJiM0MztcdFx0XHRcdFx0XHQgTURJT19BTl9FRUVfQURWLCAwKTtcbiYjNDM7XG4gXHRyZXR1cm4gbXQ3NTMxX3NldHVwX2NvbW1vbihkcyk7XG4gfVxuIFxuQEAgLTM0NTksNiAmIzQzOzM1MDMsMTYgQEAgY29uc3Qgc3RydWN0IG10NzUzeF9pbmZvIG10NzUzeF90YWJsZVtdID0ge1xuIFx0XHQucGh5X3dyaXRlX2M0NSA9IG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZSxcbiBcdFx0Lm1hY19wb3J0X2dldF9jYXBzID0gZW43NTgxX21hY19wb3J0X2dldF9jYXBzLFxuIFx0fSxcbiYjNDM7XHRbSURfRU43NTI4XSA9IHtcbiYjNDM7XHRcdC5pZCA9IElEX0VONzUyOCxcbiYjNDM7XHRcdC5wY3Nfb3BzID0gXHUwMDI2bXQ3NTMwX3Bjc19vcHMsXG4mIzQzO1x0XHQuc3dfc2V0dXAgPSBtdDc5ODhfc2V0dXAsXG4mIzQzO1x0XHQucGh5X3JlYWRfYzIyID0gbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQsXG4mIzQzO1x0XHQucGh5X3dyaXRlX2MyMiA9IG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZSxcbiYjNDM7XHRcdC5waHlfcmVhZF9jNDUgPSBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZCxcbiYjNDM7XHRcdC5waHlfd3JpdGVfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlLFxuJiM0MztcdFx0Lm1hY19wb3J0X2dldF9jYXBzID0gZW43NTI4X21hY19wb3J0X2dldF9jYXBzLFxuJiM0MztcdH0sXG4gfTtcbiBFWFBPUlRfU1lNQk9MX0dQTChtdDc1M3hfdGFibGUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaFxuaW5kZXggZGQzM2IwZGYzNDE5ZTMuLjVmMWU4NDFmNDJjMGVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmhcbkBAIC0yMSw2ICYjNDM7MjEsNyBAQCBlbnVtIG10NzUzeF9pZCB7XG4gXHRJRF9NVDc5ODggPSAzLFxuIFx0SURfRU43NTgxID0gNCxcbiBcdElEX0FONzU4MyA9IDUsXG4mIzQzO1x0SURfRU43NTI4ID0gNixcbiB9O1xuIFxuICNkZWZpbmVcdE5VTV9UUkdNSUlfQ1RSTFx0XHRcdDVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBX01UNzUzMCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX01UNzUzMF9NTUlPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW43NTI4X21hY19wb3J0X2dldF9jYXBzJiMzNDssCiAgICAmIzM0O210Nzk4OF9zZXR1cCYjMzQ7LAogICAgJiMzNDttdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRWNvTmV0IEVONzUyOCBTb0MgYnVpbHQtaW4gc3dpdGNoIHRvIHRoZSBNZWRpYXRlayBNVDc1MzAgRFNBIGRyaXZlci4gVGhpcyBpbmNsdWRlcyBhIG5ldyBmdW5jdGlvbiBmb3IgZ2V0dGluZyBNQUMgcG9ydCBjYXBhYmlsaXRpZXMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gc3dpdGNoIHNldHVwIGFuZCBjb25kdWl0IHN0YXRlIGNoYW5nZSBsb2dpYy4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBkZXZpY2UgdHJlZSBhbmQgdGhlIHN3aXRjaCBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIHRoZSBEU0EgY29yZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1Y2YxOGVjMGI5NGJlMWMwMWZmNTk0NTIwY2QxNWM0YjIzYjRjNWY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTEgMDc6NDU6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tZWRpYXRlayxtdDc1MzAueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sCmluZGV4IDgxNWE5MDgwODkwMTA0Li45MGIzNTgyYjc2MTkwOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWwKQEAgLTEwMCw2ICYjNDM7MTAwLDEwIEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgQnVpbHQtaW4gc3dpdGNoIG9mIHRoZSBBaXJvaGEgQU43NTgzIFNvQwogICAgICAgICBjb25zdDogYWlyb2hhLGFuNzU4My1zd2l0Y2gKIAomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246CiYjNDM7ICAgICAgICAgIEJ1aWx0LWluIHN3aXRjaCBvZiB0aGUgRWNvTmV0IEVONzUyOCBTb0MKJiM0MzsgICAgICAgIGNvbnN0OiBlY29uZXQsZW43NTI4LXN3aXRjaAomIzQzOwogICByZWc6CiAgICAgbWF4SXRlbXM6IDEKIApAQCAtMzE4LDYgJiM0MzszMjIsNyBAQCBhbGxPZjoKICAgICAgICAgICAgIC0gbWVkaWF0ZWssbXQ3OTg4LXN3aXRjaAogICAgICAgICAgICAgLSBhaXJvaGEsZW43NTgxLXN3aXRjaAogICAgICAgICAgICAgLSBhaXJvaGEsYW43NTgzLXN3aXRjaAomIzQzOyAgICAgICAgICAgIC0gZWNvbmV0LGVuNzUyOC1zd2l0Y2gKICAgICB0aGVuOgogICAgICAgJHJlZjogJiMzNDsjLyRkZWZzL2J1aWx0aW4tZHNhLXBvcnQmIzM0OwogICAgICAgcHJvcGVydGllczoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMKaW5kZXggMWRjOGI5M2ZiNTFhMTMuLjEwNjU2NzFiY2RkMTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYwpAQCAtMTMsNiAmIzQzOzEzLDcgQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10Nzk4OF9vZl9tYXRjaFtdID0gewogCXsgLmNvbXBhdGlibGUgPSAmIzM0O2Fpcm9oYSxhbjc1ODMtc3dpdGNoJiMzNDssIC5kYXRhID0gJmFtcDttdDc1M3hfdGFibGVbSURfQU43NTgzXSwgfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDthaXJvaGEsZW43NTgxLXN3aXRjaCYjMzQ7LCAuZGF0YSA9ICZhbXA7bXQ3NTN4X3RhYmxlW0lEX0VONzU4MV0sIH0sCiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O2Vjb25ldCxlbjc1Mjgtc3dpdGNoJiMzNDssIC5kYXRhID0gJmFtcDttdDc1M3hfdGFibGVbSURfRU43NTI4XSwgfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDttZWRpYXRlayxtdDc5ODgtc3dpdGNoJiMzNDssIC5kYXRhID0gJmFtcDttdDc1M3hfdGFibGVbSURfTVQ3OTg4XSwgfSwKIAl7IC8qIHNlbnRpbmVsICovIH0sCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCmluZGV4IDNjMmEzMDI5YjEwY2ZiLi4yYWVjYWQ3N2FmOWFkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwpAQCAtMjkxMiw2ICYjNDM7MjkxMiwzMCBAQCBzdGF0aWMgdm9pZCBlbjc1ODFfbWFjX3BvcnRfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKJiM0MzsJCQkJICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZykKJiM0Mzt7CiYjNDM7CXN3aXRjaCAocG9ydCkgewomIzQzOwkvKiBQb3J0cyB3aGljaCBhcmUgY29ubmVjdGVkIHRvIHN3aXRjaCBQSFlzLiBUaGVyZSBpcyBubyBNSUkgcGlub3V0LiAqLwomIzQzOwljYXNlIDEgLi4uIDQ6CiYjNDM7CQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLAomIzQzOwkJCSAgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CQljb25maWctJmd0O21hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwRkQ7CiYjNDM7CQlicmVhazsKJiM0MzsKJiM0MzsJLyogUG9ydCA2IGlzIGNvbm5lY3RlZCB0byBTb0MmIzM5O3MgR01BQyBhdCAxMDAwIE1icHMgZnVsbCBkdXBsZXguIFRoZXJlCiYjNDM7CSAqIGlzIG5vIE1JSSBwaW5vdXQuCiYjNDM7CSAqLwomIzQzOwljYXNlIDY6CiYjNDM7CQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLAomIzQzOwkJCSAgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CQljb25maWctJmd0O21hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQKIG10NzUzMF9tYWNfY29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLAogCQkgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCkBAIC0zMjU0LDcgJiM0MzszMjc4LDggQEAgbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywKIAkgKiBmb3J3YXJkZWQgdG8gdGhlIG51bWVyaWNhbGx5IHNtYWxsZXN0IENQVSBwb3J0IHdob3NlIGNvbmR1aXQKIAkgKiBpbnRlcmZhY2UgaXMgdXAuCiAJICovCi0JaWYgKHByaXYtJmd0O2lkICE9IElEX01UNzUzMCAmYW1wOyZhbXA7IHByaXYtJmd0O2lkICE9IElEX01UNzYyMSkKJiM0MzsJaWYgKHByaXYtJmd0O2lkICE9IElEX01UNzUzMCAmYW1wOyZhbXA7IHByaXYtJmd0O2lkICE9IElEX01UNzYyMSAmYW1wOyZhbXA7CiYjNDM7CSAgICBwcml2LSZndDtpZCAhPSBJRF9FTjc1MjgpCiAJCXJldHVybjsKIAogCW1hc2sgPSBCSVQoY3B1X2RwLSZndDtpbmRleCk7CkBAIC0zMzE5LDkgJiM0MzszMzQ0LDE3IEBAIHN0YXRpYyBpbnQgbXQ3NTN4X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJfQogfQogCiYjNDM7LyogVGhlIEVONzUyOCBMQU4gcG9ydHMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaAomIzQzOyAqIHBvcnRzIDEuLjQpIG9uIHRoZSBzd2l0Y2ggaW50ZXJuYWwgTURJTyBidXMsIHJlYWNoYWJsZSBvbmx5IHRocm91Z2ggdGhlIFBIWQomIzQzOyAqIGluZGlyZWN0IGFjY2VzcyByZWdpc3RlcnMuIFRoZXJlIGlzIG5vIG1kaW9kZXYgdG8gZGVyaXZlIHRoZSBhZGRyZXNzZXMgZnJvbS4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIEVONzUyOF9HUEhZX0JBU0UJCTkKJiM0MzsjZGVmaW5lIEVONzUyOF9OVU1fR1BIWVMJCTQKJiM0MzsKIHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIHsKIAlzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0mZ3Q7cHJpdjsKJiM0MzsJaW50IGk7CiAKIAkvKiBSZXNldCB0aGUgc3dpdGNoICovCiAJcmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0mZ3Q7cnN0Yyk7CkBAIC0zMzQyLDYgJiM0MzszMzc1LDE3IEBAIHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIAkvKiBSZXNldCB0aGUgc3dpdGNoIFBIWXMgKi8KIAltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1NZU19DVFJMLCBTWVNfQ1RSTF9QSFlfUlNUKTsKIAomIzQzOwkvKiBUaGUgRU43NTI4IExBTiBHUEhZcyBhZHZlcnRpc2UgRUVFIGJ5IGRlZmF1bHQsIGJ1dCBuZWdvdGlhdGluZyBFRUUKJiM0MzsJICogd2l0aCBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuCiYjNDM7CSAqIHVuc3RhYmxlIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvbgomIzQzOwkgKiB0aGVtLgomIzQzOwkgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2lkID09IElEX0VONzUyOCkKJiM0MzsJCWZvciAoaSA9IEVONzUyOF9HUEhZX0JBU0U7CiYjNDM7CQkgICAgIGkgJmx0OyBFTjc1MjhfR1BIWV9CQVNFICYjNDM7IEVONzUyOF9OVU1fR1BIWVM7IGkmIzQzOyYjNDM7KQomIzQzOwkJCW10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBpLCBNRElPX01NRF9BTiwKJiM0MzsJCQkJCQkgTURJT19BTl9FRUVfQURWLCAwKTsKJiM0MzsKIAlyZXR1cm4gbXQ3NTMxX3NldHVwX2NvbW1vbihkcyk7CiB9CiAKQEAgLTM0NTksNiAmIzQzOzM1MDMsMTYgQEAgY29uc3Qgc3RydWN0IG10NzUzeF9pbmZvIG10NzUzeF90YWJsZVtdID0gewogCQkucGh5X3dyaXRlX2M0NSA9IG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZSwKIAkJLm1hY19wb3J0X2dldF9jYXBzID0gZW43NTgxX21hY19wb3J0X2dldF9jYXBzLAogCX0sCiYjNDM7CVtJRF9FTjc1MjhdID0gewomIzQzOwkJLmlkID0gSURfRU43NTI4LAomIzQzOwkJLnBjc19vcHMgPSAmYW1wO210NzUzMF9wY3Nfb3BzLAomIzQzOwkJLnN3X3NldHVwID0gbXQ3OTg4X3NldHVwLAomIzQzOwkJLnBoeV9yZWFkX2MyMiA9IG10NzUzMV9pbmRfYzIyX3BoeV9yZWFkLAomIzQzOwkJLnBoeV93cml0ZV9jMjIgPSBtdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUsCiYjNDM7CQkucGh5X3JlYWRfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQsCiYjNDM7CQkucGh5X3dyaXRlX2M0NSA9IG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZSwKJiM0MzsJCS5tYWNfcG9ydF9nZXRfY2FwcyA9IGVuNzUyOF9tYWNfcG9ydF9nZXRfY2FwcywKJiM0MzsJfSwKIH07CiBFWFBPUlRfU1lNQk9MX0dQTChtdDc1M3hfdGFibGUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmggYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmgKaW5kZXggZGQzM2IwZGYzNDE5ZTMuLjVmMWU4NDFmNDJjMGVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oCkBAIC0yMSw2ICYjNDM7MjEsNyBAQCBlbnVtIG10NzUzeF9pZCB7CiAJSURfTVQ3OTg4ID0gMywKIAlJRF9FTjc1ODEgPSA0LAogCUlEX0FONzU4MyA9IDUsCiYjNDM7CUlEX0VONzUyOCA9IDYsCiB9OwogCiAjZGVmaW5lCU5VTV9UUkdNSUlfQ1RSTAkJCTUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDgxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgTmV0d29yayBTd2l0Y2ggRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBFY29OZXQgRU43NTI4IFNvQyYjMzk7cyBidWlsdC1pbiBzd2l0Y2ggdG8gdGhlIE1lZGlhdGVrIE1UNzUzMCBEU0EgZHJpdmVyLiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyBzZXZlcmFsIGZpbGVzOiB0aGUgRGV2aWNlIFRyZWUgYmluZGluZ3MsIHRoZSBNTUlPIGFuZCBjb3JlIGRyaXZlciBmaWxlcywgYW5kIHRoZSBoZWFkZXIgZmlsZS4gTG9va2luZyBhdCB0aGUgY2hhbmdlcywgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGRldmljZS1zcGVjaWZpYyBtYXRjaGluZywgY2FwYWJpbGl0aWVzLCBhbmQgd29ya2Fyb3VuZHMgZm9yIHRoaXMgcGFydGljdWxhciBzd2l0Y2guIFNwZWNpZmljYWxseSwgSSBzZWUgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYCBiZWluZyBhZGRlZCwgYWxvbmcgd2l0aCBmdW5jdGlvbnMgYW5kIGlkZW50aWZpZXJzIHRoYXQgcmVsYXRlIHRvIHRoaXMgbmV3IGhhcmR3YXJlLiBUaGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIHdvcmthcm91bmQgdG8gZGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvbiBpdHMgR1BIWXMuCgpOb3csIGFzIGFuIGV4cGVydCwgbXkgcHJpbWFyeSB0aG91Z2h0IGlzLCAmIzM0O0NhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsgVGhpcyBpcyBhIERTQSBzd2l0Y2ggZHJpdmVyLCBzbyBpdCYjMzk7cyBsaWtlbHkgcHJvYmVkIHRocm91Z2ggdGhlIERldmljZSBUcmVlLiBJIGltbWVkaWF0ZWx5IHRoaW5rIG9mIFFFTVUuIENhbiBJIGVtdWxhdGUgdGhlIEVONzUyOCBvciB0aGUgTVQ3NTMwL01UNzk4OCBpbiBRRU1VPyBBbG1vc3QgY2VydGFpbmx5IG5vdCDigJMgSSYjMzk7dmUgbmV2ZXIgaGVhcmQgb2Ygc3VjaCBzcGVjaWZpYyBlbXVsYXRpb24gYmVpbmcgYXZhaWxhYmxlLiBUaGVzZSBhcmUgdHlwaWNhbGx5IGxvdy1sZXZlbCBoYXJkd2FyZSBkcml2ZXJzLgoKSG93ZXZlciwgYSBnbGltbWVyIG9mIGhvcGUgYXJpc2VzOiBzeXprYWxsZXIuIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBhcmJpdHJhcnkgRGV2aWNlIFRyZWVzLiBUaGVvcmV0aWNhbGx5LCBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGluLCBpdCAqY291bGQqIGJlIHByb2JlZCBieSBzeXprYWxsZXIgaWYgdGhlIERUIG5vZGUgbWF0Y2hlcy4gVGhlIGNhdGNoPyBJdCYjMzk7cyBhbiBNTUlPIGRyaXZlci4gV2l0aG91dCB0aGUgKmFjdHVhbCogaGFyZHdhcmUsIE1NSU8gYWNjZXNzZXMgYXJlIGdvaW5nIHRvIGJlIHByb2JsZW1hdGljLiBUaGV5JiMzOTtsbCBlaXRoZXIgZmF1bHQgaWYgdW5tYXBwZWQgb3IganVzdCByZXR1cm4gbWVhbmluZ2xlc3MgZGF0YSBpZiBtYXBwZWQgdG8gZHVtbXkgbWVtb3J5LiBBbHRob3VnaCBzeXprYWxsZXIgKmRvZXMqIG1hcCBzb21lIGR1bW15IG1lbW9yeSBmb3IgTU1JTywgaXQgZG9lc24mIzM5O3QgZ2l2ZSBtZSBtdWNoIGhvcGUgdGhhdCB0aGUgZHJpdmVyIHdpbGwgYmVoYXZlIGluIGEgbWVhbmluZ2Z1bCB3YXkuCgpCdXQsIHN5emthbGxlciAqZG9lcyogZnV6eiBkZXZpY2UgdHJlZXMgYW5kICpjYW4qIHByb2JlIGRyaXZlcnMuIFNvIGxldCYjMzk7cyBjaGVjayBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nIQoKTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBqdXN0IGRvIE1NSU8gd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgdmlydHVhbCBpbnRlcmZhY2VzIGFyZSB1c3VhbGx5ICpub3QqIHdvcnRoIGZ1enppbmcuIFRoZXkgdGVuZCB0byBqdXN0IGNyYXNoIG9yIGZhaWwgZWFybHkgZHVyaW5nIHRoZSBwcm9iZSBkdWUgdG8gdGhlIGhhcmR3YXJlIG5vdCByZXNwb25kaW5nLCBhbmQgdGhleSByYXJlbHkgZXhwb3NlIGludGVyZXN0aW5nLCBzb2Z0d2FyZS1yZWFjaGFibGUgYXR0YWNrIHN1cmZhY2VzLiBUaGVzZSB0eXBlcyBvZiBkcml2ZXJzIGFyZSBsaWtlIFVTQiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltIG9yIHZoY2ksIHRoYXQgb2ZmZXIgYW4gZW50cnkgcG9pbnQgdG8gdGhlIHN5c3RlbSBhbmQgaGF2ZSBncmVhdCBwb3RlbnRpYWwgdG8gYmUgZnV6emVkLgoKV2FpdCwgbG9va2luZyBjbG9zZXIgYXQgdGhlIHByb21wdCBmb3IgdGhlIHRhc2suIEl0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCAqZXZlbiogd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgc2VlbXMgcHJldHR5IGNsZWFyLiBNeSBpbnN0aW5jdHMgYXJlIHJpZ2h0LgoKU28sIHRoZSBgbXQ3NTMwYCBzd2l0Y2ggZHJpdmVyLi4uaXMgaXQgcmVhY2hhYmxlIGluIFFFTVU/IEkgZG91YnQgaXQsIGJ1dCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgZG9uJiMzOTt0IG5lZWQgdG8gbG9vayBhdCBRRU1VIHNvdXJjZSBjb2RlLiBJIGtub3cgaXQmIzM5O3MgYSBoYXJkd2FyZSBkcml2ZXIuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGRyaXZlciBiZWluZyB0aWdodGx5IGNvdXBsZWQgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgaW5hY2Nlc3NpYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB0aGF0IHRoaXMgaXMgKm5vdCogd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc1MzAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDE3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzApXHQmIzQzOz0gbXQ3NTMwLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMF9NRElPKSAmIzQzOz0gbXQ3NTMwLW1kaW8ub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01NSU8pICYjNDM7PSBtdDc1MzAtbW1pby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTYwNjApICYjNDM7PSBtdjg4ZTYwNjAub1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY6I2luY2x1ZGUgXCYjMzQ7bXQ3NTMwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTk6bXQ3NTMwX3JlZ21hcF93cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjAte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjItXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9NDM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDQ6bXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNDUte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDY6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNDctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9NjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjY3Om10NzUzMF9tZGlvX3JlZ21hcF9sb2NrKHZvaWQgKm1kaW9fbG9jaylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTY4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NzM6bXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jayh2b2lkICptZGlvX2xvY2spXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNzctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3ODpzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9idXMgbXQ3NTMwX3JlZ21hcF9idXMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3OTpcdC5yZWdfd3JpdGUgPSBtdDc1MzBfcmVnbWFwX3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6ODA6XHQucmVnX3JlYWQgPSBtdDc1MzBfcmVnbWFwX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04MS19O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTgzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg0Om10NzUzMV9jcmVhdGVfc2dtaWkoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwNS1cdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNlbWF4X3JlZ2lzdGVyID0gMHgxN2M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMDY6XHRcdG10NzUzMV9wY3NfY29uZmlnW2ldLVx1MDAzZWxvY2sgPSBtdDc1MzBfbWRpb19yZWdtYXBfbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEwNzpcdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNldW5sb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwOC1cdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNlbG9ja19hcmcgPSBcdTAwMjZwcml2LVx1MDAzZWJ1cy1cdTAwM2VtZGlvX2xvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMDktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTA6XHRcdHJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cdTAwM2VkZXYsIFx1MDAyNm10NzUzMF9yZWdtYXBfYnVzLCBwcml2LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTExLVx0XHRcdFx0XHQgIG10NzUzMV9wY3NfY29uZmlnW2ldKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzE6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXQ3NTMwX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzItXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWVkaWF0ZWssbXQ3NjIxXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTMzOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzUzMFwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NTMwXSwgfSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzNC1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDc1MzFcJiMzNDssIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzUzMV0sIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM2LX07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXQ3NTMwX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xNDc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTQ4Om10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDkte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTUwOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUxLVx0c3RydWN0IGRldmljZV9ub2RlICpkbjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNjQ6XHRyZXQgPSBtdDc1MzBfcHJvYmVfY29tbW9uKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTY1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMDM6XHRwcml2LVx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cdTAwM2VkZXYsIFx1MDAyNm10NzUzMF9yZWdtYXBfYnVzLCBwcml2LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjA0LVx0XHRcdFx0XHRcdTAwMjZyZWdtYXBfY29uZmlnKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0yMTQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxNTptdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIxNi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjE4LVx0aW50IHJldCA9IDAsIGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjMzOlx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjM4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjM5OnN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDAte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjQxOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNTAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTE6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTI6XHQucHJvYmUgID0gbXQ3NTMwX3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjUzOlx0LnJlbW92ZSA9IG10NzUzMF9yZW1vdmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTQ6XHQuc2h1dGRvd24gPSBtdDc1MzBfc2h1dGRvd24sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNTUtXHQubWRpb2Rydi5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTY6XHRcdC5uYW1lID0gXCYjMzQ7bXQ3NTMwLW1kaW9cJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTc6XHRcdC5vZl9tYXRjaF90YWJsZSA9IG10NzUzMF9vZl9tYXRjaCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjYxOm1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTEwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6MTE6I2luY2x1ZGUgXCYjMzQ7bXQ3NTMwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTEyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTMxPW10Nzk4OF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzIte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6MzM6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zNC1cdHZvaWQgX19pb21lbSAqYmFzZV9hZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NDQ6XHRyZXQgPSBtdDc1MzBfcHJvYmVfY29tbW9uKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTY4PXN0YXRpYyB2b2lkIG10Nzk4OF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTY5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjcwOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcyLVx0aWYgKHByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3MzpcdFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03NC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9NzY9c3RhdGljIHZvaWQgbXQ3OTg4X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03Ny17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3ODpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9ODg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTg4X3BsYXRmb3JtX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy05Mi1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo5MzpcdFx0Lm5hbWUgPSBcJiMzNDttdDc1MzAtbW1pb1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTk0LVx0XHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc5ODhfb2ZfbWF0Y2gsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2OiNpbmNsdWRlIFwmIzM0O210NzUzMC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjctXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMxPXN0YXRpYyBzdHJ1Y3QgbXQ3NTN4X3BjcyAqcGNzX3RvX210NzUzeF9wY3Moc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM2LS8qIFN0cmluZywgb2Zmc2V0LCBhbmQgcmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyBpZiBkaWZmZXJlbnQgZnJvbSA0IGJ5dGVzICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzc6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc1MzBfbWliX2Rlc2MgbXQ3NTMwX21pYltdID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4LVx0TUlCX0RFU0MoMSwgTVQ3NTMwX1BPUlRfTUlCX1RYX0RST1AsIFwmIzM0O1R4RHJvcFwmIzM0OyksXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTQ5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA6bXQ3NTMwX211dGV4X2xvY2soc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzptdDc1MzBfbXV0ZXhfdW5sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTYzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ6Y29yZV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05NS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo5NjpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTctfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz05OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwMDpjb3JlX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgc2V0KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMDY6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDctXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEzNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMzg6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEzOS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE0MT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE0Mjpjb3JlX3NldChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQ3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ4OmNvcmVfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTU0Om10NzUzMF9taWlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE1NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2MS1cdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNjI6XHRcdFx0XCYjMzQ7ZmFpbGVkIHRvIHdyaXRlIG10NzUzMCByZWdpc3RlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTYzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjc9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2ODptdDc1MzBfbWlpX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE3Ni1cdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzc6XHRcdFx0XCYjMzQ7ZmFpbGVkIHRvIHJlYWQgbXQ3NTMwIHJlZ2lzdGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNzgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xODQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODU6bXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xODYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4NzpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE4OC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODk6XHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTkxOlx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTItfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xOTQ9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NTpfbXQ3NTMwX3VubG9ja2VkX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Ni17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk3Olx0cmV0dXJuIG10NzUzMF9taWlfcmVhZChwLVx1MDAzZXByaXYsIHAtXHUwMDNlcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDA9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwMTpfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDU6XHRtdDc1MzBfbXV0ZXhfbG9jayhwLVx1MDAzZXByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDc6XHR2YWwgPSBtdDc1MzBfbWlpX3JlYWQocC1cdTAwM2Vwcml2LCBwLVx1MDAzZXJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwOTpcdG10NzUzMF9tdXRleF91bmxvY2socC1cdTAwM2Vwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIxND1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE1Om10NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxNzpcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTktXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIwOlx0cmV0dXJuIF9tdDc1MzBfcmVhZChcdTAwMjZwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjEtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjQ6bXQ3NTMwX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI1LVx0ICAgdTMyIG1hc2ssIHUzMiBzZXQpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjc6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzE6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNTptdDc1MzBfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzpcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQxOm10NzUzMF9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQyLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDM6XHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0NzptdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTAtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1MTpcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU0LVx0dmFsID0gQVRDX0JVU1kgfCBBVENfTUFUKDApIHwgY21kO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1NTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTctXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMF9BVEMpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1ODpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTktXHRcdFx0XHQgISh2YWwgXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY3LVx0ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY4Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX0FUQyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY5LVx0aWYgKChjbWQgPT0gTVQ3NTMwX0ZEQl9SRUFEKSBcdTAwMjZcdTAwMjYgKHZhbCBcdTAwMjYgQVRDX0lOVkFMSUQpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNzg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNzk6bXQ3NTMwX2ZkYl9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgc3RydWN0IG10NzUzMF9mZGIgKmZkYilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI4NjpcdFx0cmVnW2ldID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX1RTUkExICYjNDM7IChpICogNCkpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzA0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzA1Om10NzUzMF9mZGJfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MTYgdmlkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMwNi1cdFx0IHU4IHBvcnRfbWFzaywgY29uc3QgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzMwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzMxOlx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQTEgJiM0MzsgKGkgKiA0KSwgcmVnW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzItfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzQtLyogU2V0IHVwIHN3aXRjaCBjb3JlIGNsb2NrIGZvciBNVDc1MzAgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzU6c3RhdGljIHZvaWQgbXQ3NTMwX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mzc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzc2Om10NzUzMF9zZXR1cF9wb3J0NihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc3LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzg6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM3OS1cdHUzMiBuY3BvMSwgc3NjX2RlbHRhLCB4dGFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODQtXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM4NTpcdFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4Ni1cdFx0XHQgICBQNl9JTlRGX01PREUoMCkpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzkwOlx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLCBQNl9JTlRGX01PREUoMSkpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTI6XHR4dGFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX01UUkFQKSBcdTAwMjYgTVQ3NTMwX1hUQUxfTUFTSztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTQyOD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQyOTptdDc1MzFfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX0NSRVYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNzpcdHRvcF9zaWcgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfVE9QX1NJR19TUik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM4Olx0aHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9UUkFQKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzktXHRpZiAoKHZhbCBcdTAwMjYgQ0hJUF9SRVZfTSkgXHUwMDNlIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0Ni1cdC8qIFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NDc6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0OC1cdHZhbCBcdTAwMjY9IH5FTl9DT1JFUExMO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0OTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDUwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1MS1cdC8qIFN0ZXAgMjogc3dpdGNoIHRvIFhUQUwgb3V0cHV0ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDUyOlx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTMtXHR2YWwgfD0gU1dfQ0xLU1c7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU0Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU3LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfRU47XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU4Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2MC1cdC8qIFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjE6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Mi1cdHZhbCB8PSBTV19QTExHUDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjM6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2NC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjUtXHQvKiBTdGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2NjpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Ny1cdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1BPU0RJVl9NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2OC1cdHZhbCB8PSAyIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1BPU0RJVl9TO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2OTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3MC1cdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzMtXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfMjVNSFo6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc0Olx0XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzUtXHRcdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzYtXHRcdHZhbCB8PSAweDE0MDAwMCBcdTAwM2NcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc3Olx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzgtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OS1cdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF80ME1IWjpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODA6XHRcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4MS1cdFx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Mi1cdFx0dmFsIHw9IDB4MTkwMDAwIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODM6XHRcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ny1cdC8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBoaWdoICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg4Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg5LVx0dmFsIHw9IFJHX0NPUkVQTExfU0RNX1BDV19DSEc7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDkwOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDkxLVx0LyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3MgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk0LVx0LyogU3RlcCA1OiBzZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk1Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk2LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19DSEc7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk3Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OS1cdC8qIEVuYWJsZSAzMjVNIGNsb2NrIGZvciBTR01JSSAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMDpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDItXHQvKiBFbmFibGUgMjUwU1NDIGNsb2NrIGZvciBSR01JSSAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMzpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSMiwgMHg0ZjQwMDAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA1LVx0LyogU3RlcCA2OiBFbmFibGUgTVQ3NTMxIFBMTCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwNjpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNy1cdHZhbCB8PSBSR19DT1JFUExMX0VOO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwODpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTA6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMS1cdHZhbCB8PSBFTl9DT1JFUExMO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxMjpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEzLVx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUxNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNzptdDc1MzBfbWliX3Jlc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTgte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxOTpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTIwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyMTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9GTFVTSCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIyOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0FDVElWQVRFKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjMtfVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyNC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjU6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMDpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTMxLVx0XHRcdFx0dTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzNjpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzctXHRcdFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU0MjpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDMtXHRcdFx0XHRpbnQgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01NDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU0OTptdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUwLVx0XHRcdGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUxLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTI6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTMtXHR1MzIgcmVnLCB2YWw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTg6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTYwOlx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU2MS1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTY4LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU2OTpcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTcxOlx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3Mi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTc5LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU4MDpcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTgyOlx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4My1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTkwLW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1OTE6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTk2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1OTc6bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTgtXHRcdFx0IGludCByZWdudW0sIHUxNiBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5OS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjAwOlx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjAxLVx0dTMyIHZhbCwgcmVnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA2Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjA3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwODpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDktXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxNi1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MTc6XHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjE4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxOTpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjAtXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyNy1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjI4Olx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MzA6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjMxLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02Mzctb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYzODpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02NDM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0NDptdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0NS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ2Olx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ3LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1MjpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NTQ6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU1LVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjY0Olx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2NS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NjY6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjY3LVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzQtb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY3NTpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjc2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02ODA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY4MTptdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODItXHRcdFx0IHUxNiBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4My17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njg0Olx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjg1LVx0aW50IHJldDtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjU5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0aCB0byBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGBtdDc1MzBfcHJvYmVfY29tbW9uYCBmdW5jdGlvbiBnZXRzIGV4ZWN1dGVkLCBwYXJ0aWN1bGFybHkgaW4gYSBRRU1VIGVudmlyb25tZW50LiBJdCBsb29rcyBsaWtlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHRocm91Z2ggZWl0aGVyIE1ESU8gb3IgTU1JTy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYG10NzUzMC1tbWlvLmNgIHJlZ2lzdGVycyBhIHBsYXRmb3JtIGRyaXZlciBjYWxsZWQgYG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXJgLiBUaGUgY3J1Y2lhbCBzdGVwIGFwcGVhcnMgdG8gYmUgdGhhdCB0aGUgYG10Nzk4OF9wcm9iZWAgZnVuY3Rpb24gKmV2ZW50dWFsbHkqIGNhbGxzIGBtdDc1MzBfcHJvYmVfY29tbW9uYC4KClRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gSSB0cmlnZ2VyIHRoaXMgd2l0aGluIFFFTVU/IEl0IHNlZW1zIHBsYXVzaWJsZS4gSWYgc3l6a2FsbGVyIGNyYWZ0cyBhIGRldmljZSB0cmVlIHRoYXQgaW5jbHVkZXMgdGhlIG5vZGUgcHJvcGVydHkgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYCwgdGhlIHBsYXRmb3JtIGRyaXZlciBzaG91bGQgcHJvYmUuIER1cmluZyB0aGlzIHByb2JlLCB0aGUgY29kZSBpcyBnb2luZyB0byBtYXAgdGhlIE1NSU8gcmVnaW9uIGFuZCwgY3J1Y2lhbGx5LCBjYWxsIGBtdDc1MzBfcHJvYmVfY29tbW9uYC4gVGhlbiwgdGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBkbyB0aGUgaW5pdGlhbGl6YXRpb24sIGFuZCByZWdpc3RlciBhIERTQSBzd2l0Y2guCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiB3aGF0IGRvZXMgYG10NzUzMF9wcm9iZV9jb21tb25gIGFjdHVhbGx5ICpkbyo/IEkgbmVlZCB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIHRvIHNlZSBpZiBpdCYjMzk7cyByZWFjaGFibGUgYW5kIGlmIGl0JiMzOTtzIGRvaW5nIHdoYXQgSSBleHBlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTMwX3Byb2JlX2NvbW1vbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTQ4PW10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTYzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY0Olx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE2NS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzE9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0NDpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00NS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM1MTk9aW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzUyMDptdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTIxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzU1MC19XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzU1MTpFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaD05NDE9c3RhdGljIGlubGluZSB2b2lkIElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaC05NDctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmg6OTQ4OmludCBtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmgtOTQ5LXZvaWQgbXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM0MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE1UNzUzMCBQcm9iZSBGdW5jdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgTVQ3NTMwIGRyaXZlciBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgYG10NzUzMF9wcm9iZV9jb21tb25gIHdpdGhpbiBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBmaXJzdCBwbGFjZSBJIHN0YXJ0IHdoZW4gZGVidWdnaW5nIG9yIHVuZGVyc3RhbmRpbmcgYSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBmdW5jdGlvbiBpcyB0aGUgY29yZSBvZiB0aGUgZGV2aWNlIHByb2JpbmcgcHJvY2VzcywgYW5kIHRodXMgd2hlcmUgdGhlIGluaXRpYWwgZGV2aWNlIHNldHVwIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uIGlzIGhhbmRsZWQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgbGlrZWx5IHN0ZXBzIHBlcmZvcm1lZCB0aGVyZTogZGV0ZXJtaW5pbmcgdGhlIGRldmljZSYjMzk7cyBoYXJkd2FyZSwgcmVxdWVzdGluZyB0aGUgY29ycmVjdCBjbG9ja3MsIG1heWJlIHNldHRpbmcgdXAgdGhlIGludGVycnVwdCBsaW5lcyBhbmQgSS9PIG1lbW9yeSByZWdpb25zLiBJIGFsc28gbmVlZCB0byBzZWUgaG93IHRoZSBkc2EgZHJpdmVyIGlzIHdvcmtpbmcgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIGRldmljZS4gSSBhbnRpY2lwYXRlIGEgZmFpciBhbW91bnQgb2YgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcmVnaXN0ZXIgYWNjZXNzIGluaXRpYWxpemF0aW9uLCBhbmQgcHJvYmFibHkgc29tZSBlYXJseSBQSFkgY29uZmlndXJhdGlvbiBjYWxscyB0byBnZXQgdGhpcyBjaGlwIHVwIGFuZCBydW5uaW5nLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjaGVja2luZyBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhpcyBwcm9iZSBsb29rcyBsaWtlLiBIb3BlZnVsbHksIGl0JiMzOTtzIHdlbGwtZG9jdW1lbnRlZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1MTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM1MTk6XHRpbnRcbjM1MjA6XHRtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbjM1MjE6XHR7XG4zNTIyOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LVx1MDAzZWRldjtcbjM1MjM6XHRcbjM1MjQ6XHRcdHByaXYtXHUwMDNlZHMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYtXHUwMDNlZHMpLCBHRlBfS0VSTkVMKTtcbjM1MjU6XHRcdGlmICghcHJpdi1cdTAwM2VkcylcbjM1MjY6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zNTI3Olx0XG4zNTI4Olx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZWRldiA9IGRldjtcbjM1Mjk6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlbnVtX3BvcnRzID0gTVQ3NTMwX05VTV9QT1JUUztcbjM1MzA6XHRcbjM1MzE6XHRcdC8qIEdldCB0aGUgaGFyZHdhcmUgaWRlbnRpZmllciBmcm9tIHRoZSBkZXZpY2V0cmVlIG5vZGUuXG4zNTMyOlx0XHQgKiBXZSB3aWxsIG5lZWQgaXQgZm9yIHNvbWUgb2YgdGhlIGNsb2NrIGFuZCByZWd1bGF0b3Igc2V0dXAuXG4zNTMzOlx0XHQgKi9cbjM1MzQ6XHRcdHByaXYtXHUwMDNlaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuMzUzNTpcdFx0aWYgKCFwcml2LVx1MDAzZWluZm8pXG4zNTM2Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzUzNzpcdFxuMzUzODpcdFx0cHJpdi1cdTAwM2VpZCA9IHByaXYtXHUwMDNlaW5mby1cdTAwM2VpZDtcbjM1Mzk6XHRcdHByaXYtXHUwMDNlZGV2ID0gZGV2O1xuMzU0MDpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjM1NDE6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XG4zNTQyOlx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XG4zNTQzOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1NDQ6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNnByaXYtXHUwMDNlc3RhdHNfbG9jayk7XG4zNTQ1Olx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcbjM1NDY6XHRcbjM1NDc6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpO1xuMzU0ODpcdFxuMzU0OTpcdFx0cmV0dXJuIDA7XG4zNTUwOlx0fVxuMzU1MTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xuMzU1MjpcdFxuMzU1MzpcdHZvaWRcbjM1NTQ6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4zNTU1Olx0e1xuMzU1NjpcdFx0aWYgKHByaXYtXHUwMDNlaXJxX2RvbWFpbilcbjM1NTc6XHRcdFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XG4zNTU4Olx0XG4zNTU5Olx0XHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cdTAwM2Vkcyk7XG4zNTYwOlx0XG4zNTYxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1NjI6XHR9XG4zNTYzOlx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xuMzU2NDpcdFxuMzU2NTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7U2VhbiBXYW5nIFx1MDAzY3NlYW4ud2FuZ0BtZWRpYXRlay5jb21cdTAwM2VcJiMzNDspO1xuMzU2NjpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEcml2ZXIgZm9yIE1lZGlhdGVrIE1UNzUzMCBTd2l0Y2hcJiMzNDspO1xuMzU2NzpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MzcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUqKgoKT2theSwgc28gbG9va2luZyBhdCBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAsIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEFsbCBpdCYjMzk7cyBkb2luZyBpcyBhbGxvY2F0aW5nIHNvbWUgbWVtb3J5IGFuZCBzZXR0aW5nIHVwIHNvbWUgZGF0YSBzdHJ1Y3R1cmVzLiBJdCYjMzk7cyBub3QgYWN0dWFsbHkgdGhlIGJpdCB3aGVyZSB0aGUgc3dpdGNoIGdldHMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEU0Egc3Vic3lzdGVtLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIFRoZSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgdGhhdCB2aXRhbCBgZHNhX3JlZ2lzdGVyX3N3aXRjaGAgZnVuY3Rpb24gY2FsbGVkPyBUaW1lIHRvIGdvIGh1bnRpbmcuLi4KCkxldCYjMzk7cyBzZWUsIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpcyBsb2NhdGVkIGluIGBtdDc5ODhfcHJvYmVgIHdpdGhpbiB0aGUgYG10NzUzMC1tbWlvLmNgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gbG9vayBmb3IgdGhlIHN3aXRjaCByZWdpc3RyYXRpb24gdG8gb2NjdXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMxOlx0bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gIDMyOlx0e1xuICAzMzpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2O1xuICAzNDpcdFx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XG4gIDM1Olx0XHRpbnQgcmV0O1xuICAzNjpcdFxuICAzNzpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XG4gIDM4Olx0XHRpZiAoIXByaXYpXG4gIDM5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA0MDpcdFxuICA0MTpcdFx0cHJpdi1cdTAwM2VidXMgPSBOVUxMO1xuICA0MjpcdFx0cHJpdi1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiAgNDM6XHRcbiAgNDQ6XHRcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG4gIDQ1Olx0XHRpZiAocmV0KVxuICA0NjpcdFx0XHRyZXR1cm4gcmV0O1xuICA0NzpcdFxuICA0ODpcdFx0cHJpdi1cdTAwM2Vyc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChcdTAwMjZwZGV2LVx1MDAzZWRldiwgTlVMTCk7XG4gIDQ5Olx0XHRpZiAoSVNfRVJSKHByaXYtXHUwMDNlcnN0YykpIHtcbiAgNTA6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Q291bGRuJiMzOTt0IGdldCBvdXIgcmVzZXQgbGluZVxcblwmIzM0Oyk7XG4gIDUxOlx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcnN0Yyk7XG4gIDUyOlx0XHR9XG4gIDUzOlx0XG4gIDU0Olx0XHRiYXNlX2FkZHIgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XG4gIDU1Olx0XHRpZiAoSVNfRVJSKGJhc2VfYWRkcikpIHtcbiAgNTY6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y2Fubm90IHJlcXVlc3QgSS9PIG1lbW9yeSBzcGFjZVxcblwmIzM0Oyk7XG4gIDU3Olx0XHRcdHJldHVybiAtRU5YSU87XG4gIDU4Olx0XHR9XG4gIDU5Olx0XG4gIDYwOlx0XHRwcml2LVx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgYmFzZV9hZGRyLFxuICA2MTpcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnN3X3JlZ21hcF9jb25maWcpO1xuICA2MjpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpXG4gIDYzOlx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbiAgNjQ6XHRcbiAgNjU6XHRcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuICA2NjpcdH1cbiAgNjc6XHRcbiAgNjg6XHRzdGF0aWMgdm9pZCBtdDc5ODhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gIDY5Olx0e1xuICA3MDpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4gIDcxOlx0XG4gIDcyOlx0XHRpZiAocHJpdilcbiAgNzM6XHRcdFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG4gIDc0Olx0fVxuICA3NTpcdFxuICA3NjpcdHN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuICA3NzpcdHtcbiAgNzg6XHRcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuICA3OTpcdFxuICA4MDpcdFx0aWYgKCFwcml2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQxNAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzk4OCBTd2l0Y2ggUHJvYmUqKgoKT2theSwgc28gYG10Nzk4OF9wcm9iZWAgY2FsbHMgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIOKAkyB0aGF0JiMzOTtzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludC4gUmlnaHQsIGFuZCBgZHNhX3JlZ2lzdGVyX3N3aXRjaGAgdGhlbiB0YWtlcyBvdmVyLCBpbml0aWF0aW5nIHRoZSBzd2l0Y2gmIzM5O3Mgc2V0dXAgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhvc2Ugc2V0dXAgZnVuY3Rpb25zIGFyZSBpbmV2aXRhYmx5IGdvaW5nIHRvIGludm9sdmUgaGFyZHdhcmUgYWNjZXNzZXMsIHBva2luZyBhdCB0aGUgTU1JTyByZWdpb25zLiBOb3csIHRoZSBiaWcgcXVlc3Rpb24gaXMsIHdoYXQgaGFwcGVucyBpZiB0aGVyZSYjMzk7cyAqbm8qIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PyBTcGVjaWZpY2FsbHksIGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcgbGlrZSB3ZSBkbywgd2l0aCBubyBhY3R1YWwgc3dpdGNoIHByZXNlbnQ/CgpTeXprYWxsZXIsIGluIGl0cyBicmlsbGlhbmNlLCBwcm92aWRlcyB0aGVzZSBmYWtlIE1NSU8gcmVnaW9ucywgdXN1YWxseSBmaWxsZWQgd2l0aCBlaXRoZXIgemVyb2VzIG9yIG9uZXMuIFdpbGwgdGhlIHByb2JlIHN1Y2NlZWQgaW4gdGhpcyBzY2VuYXJpbz8gSSBuZWVkIHRvIGxvb2sgYXQgYG10Nzk4OF9zZXR1cGAg4oCTIHRoYXQmIzM5O3MgdGhlIHNldHVwIGZ1bmN0aW9uIHNwZWNpZmljIHRvIGBJRF9FTjc1MjhgLCB0aGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYW5zd2VyLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgYmVpbmcgcmVhZCBhbmQgd3JpdHRlbiBhbmQgaWYgdGhlIGVycm9yIGhhbmRsaW5nIGlzIHJvYnVzdCBlbm91Z2guIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIHRoZSBwcm9iaW5nIHdpbGwgZmFpbCBvciB3aGV0aGVyIHdlIHdpbGwgaGF2ZSBhIGZhbHNlIHBvc2l0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNDcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM0NzpcdC8qIFRoZSBFTjc1MjggTEFOIHBvcnRzIGFyZSBpbnRlZ3JhdGVkIEdQSFlzIGF0IE1ESU8gYWRkcmVzc2VzIDkuLjEyIChzd2l0Y2hcbjMzNDg6XHQgKiBwb3J0cyAxLi40KSBvbiB0aGUgc3dpdGNoIGludGVybmFsIE1ESU8gYnVzLCByZWFjaGFibGUgb25seSB0aHJvdWdoIHRoZSBQSFlcbjMzNDk6XHQgKiBpbmRpcmVjdCBhY2Nlc3MgcmVnaXN0ZXJzLiBUaGVyZSBpcyBubyBtZGlvZGV2IHRvIGRlcml2ZSB0aGUgYWRkcmVzc2VzIGZyb20uXG4zMzUwOlx0ICovXG4zMzUxOlx0I2RlZmluZSBFTjc1MjhfR1BIWV9CQVNFXHRcdDlcbjMzNTI6XHQjZGVmaW5lIEVONzUyOF9OVU1fR1BIWVNcdFx0NFxuMzM1MzpcdFxuMzM1NDpcdHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbjMzNTU6XHR7XG4zMzU2Olx0XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuMzM1NzpcdFx0aW50IGk7XG4zMzU4Olx0XG4zMzU5Olx0XHQvKiBSZXNldCB0aGUgc3dpdGNoICovXG4zMzYwOlx0XHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVx1MDAzZXJzdGMpO1xuMzM2MTpcdFx0dXNsZWVwX3JhbmdlKDIwLCA1MCk7XG4zMzYyOlx0XHRyZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtXHUwMDNlcnN0Yyk7XG4zMzYzOlx0XHR1c2xlZXBfcmFuZ2UoMjAsIDUwKTtcbjMzNjQ6XHRcbjMzNjU6XHRcdC8qIEFONzU4MyByZXF1aXJlIGFkZGl0aW9uYWwgdHdlYWsgdG8gQ09OTl9DRkcgKi9cbjMzNjY6XHRcdGlmIChwcml2LVx1MDAzZWlkID09IElEX0FONzU4MylcbjMzNjc6XHRcdFx0bXQ3NTMwX3Jtdyhwcml2LCBBTjc1ODNfR0VQSFlfQ09OTl9DRkcsXG4zMzY4Olx0XHRcdFx0ICAgQU43NTgzX0NTUl9EUEhZX0NLSU5fU0VMIHxcbjMzNjk6XHRcdFx0XHQgICBBTjc1ODNfQ1NSX1BIWV9DT1JFX1JFR19DTEtfU0VMIHxcbjMzNzA6XHRcdFx0XHQgICBBTjc1ODNfQ1NSX0VUSEVSX0FGRV9QV0QsXG4zMzcxOlx0XHRcdFx0ICAgQU43NTgzX0NTUl9EUEhZX0NLSU5fU0VMIHxcbjMzNzI6XHRcdFx0XHQgICBBTjc1ODNfQ1NSX1BIWV9DT1JFX1JFR19DTEtfU0VMIHxcbjMzNzM6XHRcdFx0XHQgICBGSUVMRF9QUkVQKEFONzU4M19DU1JfRVRIRVJfQUZFX1BXRCwgMCkpO1xuMzM3NDpcdFxuMzM3NTpcdFx0LyogUmVzZXQgdGhlIHN3aXRjaCBQSFlzICovXG4zMzc2Olx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1NZU19DVFJMLCBTWVNfQ1RSTF9QSFlfUlNUKTtcbjMzNzc6XHRcbjMzNzg6XHRcdC8qIFRoZSBFTjc1MjggTEFOIEdQSFlzIGFkdmVydGlzZSBFRUUgYnkgZGVmYXVsdCwgYnV0IG5lZ290aWF0aW5nIEVFRVxuMzM3OTpcdFx0ICogd2l0aCBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuXG4zMzgwOlx0XHQgKiB1bnN0YWJsZSBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIERpc2FibGUgRUVFIGFkdmVydGlzZW1lbnQgb25cbjMzODE6XHRcdCAqIHRoZW0uXG4zMzgyOlx0XHQgKi9cbjMzODM6XHRcdGlmIChwcml2LVx1MDAzZWlkID09IElEX0VONzUyOClcbjMzODQ6XHRcdFx0Zm9yIChpID0gRU43NTI4X0dQSFlfQkFTRTtcbjMzODU6XHRcdFx0ICAgICBpIFx1MDAzYyBFTjc1MjhfR1BIWV9CQVNFICYjNDM7IEVONzUyOF9OVU1fR1BIWVM7IGkmIzQzOyYjNDM7KVxuMzM4NjpcdFx0XHRcdG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBpLCBNRElPX01NRF9BTixcbjMzODc6XHRcdFx0XHRcdFx0XHQgTURJT19BTl9FRUVfQURWLCAwKTtcbjMzODg6XHRcbjMzODk6XHRcdHJldHVybiBtdDc1MzFfc2V0dXBfY29tbW9uKGRzKTtcbjMzOTA6XHR9XG4zMzkxOlx0XG4zMzkyOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBtdDc1MzBfc3dpdGNoX29wcyA9IHtcbjMzOTM6XHRcdC5nZXRfdGFnX3Byb3RvY29sXHQ9IG10a19nZXRfdGFnX3Byb3RvY29sLFxuMzM5NDpcdFx0LnNldHVwXHRcdFx0PSBtdDc1M3hfc2V0dXAsXG4zMzk1Olx0XHQudGVhcmRvd25cdFx0PSBtdDc1M3hfdGVhcmRvd24sXG4zMzk2Olx0XHQucHJlZmVycmVkX2RlZmF1bHRfbG9jYWxfY3B1X3BvcnQgPSBtdDc1M3hfcHJlZmVycmVkX2RlZmF1bHRfbG9jYWxfY3B1X3BvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODIzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gdGhpcyBlbWJlZGRlZCBzeXN0ZW1zIG5ldHdvcmtpbmcgY29udGV4dDoKCioqQW5hbHl6aW5nIHRoZSBNVDc5ODggYW5kIE1UNzUzMSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtdDc5ODhfc2V0dXBgIGZ1bmN0aW9uLCBhbmQgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYG10NzUzMV9zZXR1cF9jb21tb24oZHMpYC4gVGhlICYjMzk7ZHMmIzM5OyBsaWtlbHkgcmVmZXJzIHRvIGEgZGV2aWNlLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlLiBBbHJpZ2h0LCB0aGlzIGlzIGEgY29tbW9uIHBhdHRlcm4g4oCTIHdlIGhhdmUgYSBzcGVjaWZpYyBzZXR1cCBmdW5jdGlvbiBmb3IgdGhlIE1UNzk4OCwgYnV0IGl0IGxldmVyYWdlcyBhIG1vcmUgZ2VuZXJpYyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciB0aGUgTVQ3NTMxLCB3aGljaCBpcyBwcm9iYWJseSB0aGUgdW5kZXJseWluZyBzd2l0Y2ggY2hpcC4gSXQgbWFrZXMgc2Vuc2UgdG8gc2hhcmUgY29kZSBsaWtlIHRoaXMuIE5vdywgdG8gdHJ1bHkgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZywgSSBuZWVkIHRvIGRpdmUgaW50byBgbXQ3NTMxX3NldHVwX2NvbW1vbmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQmIzM5O3MgZG9pbmcgd2l0aCB0aGlzIGRldmljZSBzdHJ1Y3R1cmUgKGRzKS4gSXMgaXQgY29uZmlndXJpbmcgdGhlIFBIWXM/IFNldHRpbmcgdXAgcmVnaXN0ZXJzPyBJbml0aWFsaXppbmcgdGhlIE1BQyBhZGRyZXNzZXM/IEkmIzM5O20gYmV0dGluZyBpdCYjMzk7cyBkb2luZyB0aGUgbG93LWxldmVsIHJlZ2lzdGVyIHNldHVwIGFuZCBicmluZ2luZyB0aGUgc3dpdGNoIHVwIGludG8gYSBrbm93biBzdGF0ZS4gU28sIGxldCYjMzk7cyBnbyBjaGVjayB0aGF0IHJvdXRpbmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIGNvbmZpZ3VyYXRpb24sIFBIWSBpbml0aWFsaXphdGlvbiwgYW5kIHBvc3NpYmx5IHNvbWUgYmFzaWMgcG9ydCBjb25maWd1cmF0aW9uIGFzIGEgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMV9zZXR1cF9jb21tb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNjM1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjM2Om10NzUzMV9zZXR1cF9jb21tb24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNzA3PW10NzUzMV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI3OTQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjc5NTpcdHJldCA9IG10NzUzMV9zZXR1cF9jb21tb24oZHMpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI3OTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMzU0PXN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4OC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzg5Olx0cmV0dXJuIG10NzUzMV9zZXR1cF9jb21tb24oZHMpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzOTAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDUwMAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIGBtdDc1MzFfc2V0dXBfY29tbW9uYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbXQ3NTMxX3NldHVwX2NvbW1vbmAgZnVuY3Rpb24uIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBnb2luZyB0byBiZSBhIGNvbW1vbiBzZXR1cCByb3V0aW5lIHNwZWNpZmljYWxseSBmb3IgdGhlIE1UNzUzMSBjaGlwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBhbmQgY29uZmlndXJlcyB0aGUgY29yZSBhc3BlY3RzIG9mIHRoaXMgcGFydGljdWxhciBzd2l0Y2guIEkmIzM5O20gZ29pbmcgdG8gYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpbmdzIGhhcHBlbiwgYW55IHJlZ2lzdGVyIHdyaXRlcywgYW5kIHdoYXQga2luZCBvZiBhc3N1bXB0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhpcyBmdW5jdGlvbiBoYXMgb24gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIHRoZSBvdmVyYWxsIGRyaXZlciBjb250ZXh0LiBUaGlzIGxpa2VseSBzZXRzIHVwIHRoZSBiYXNpYyBjbG9ja2luZywgcmVzZXQgc2VxdWVuY2VzLCBhbmQgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBuZWNlc3NhcnkgZm9yIHRoZSBzd2l0Y2ggdG8gZnVuY3Rpb24gY29ycmVjdGx5IGJlZm9yZSBtb3JlIHNwZWNpZmljIGZlYXR1cmVzIG9yIHBvcnQgc2V0dGluZ3MgYXJlIGFwcGxpZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBsaWtlIHJhY2UgY29uZGl0aW9ucywgaW5jb3JyZWN0IHJlZ2lzdGVyIHZhbHVlcywgb3IgbGFjayBvZiBlcnJvciBoYW5kbGluZy4gVWx0aW1hdGVseSwgSSYjMzk7bSBhc3Nlc3NpbmcgdGhpcyBmb3Igb3ZlcmFsbCBjb2RlIHF1YWxpdHksIGJlc3QgcHJhY3RpY2VzLCBhbmQgd2hldGhlciBJIGNhbiB0cnVzdCB0aGlzIGZ1bmN0aW9uIHRvIGJlIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI2MzU6XHRzdGF0aWMgaW50XG4yNjM2Olx0bXQ3NTMxX3NldHVwX2NvbW1vbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4yNjM3Olx0e1xuMjYzODpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbjI2Mzk6XHRcdGludCByZXQsIGk7XG4yNjQwOlx0XG4yNjQxOlx0XHRkcy1cdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9IHRydWU7XG4yNjQyOlx0XHRkcy1cdTAwM2V1bnRhZ192bGFuX2F3YXJlX2JyaWRnZV9wdmlkID0gdHJ1ZTtcbjI2NDM6XHRcdGRzLVx1MDAzZW10dV9lbmZvcmNlbWVudF9pbmdyZXNzID0gdHJ1ZTtcbjI2NDQ6XHRcdGRzLVx1MDAzZWFnZWluZ190aW1lX21pbiA9IDIgKiAxMDAwO1xuMjY0NTpcdFx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gKEFHRV9DTlRfTUFYICYjNDM7IDEpICogKEFHRV9VTklUX01BWCAmIzQzOyAxKSAqIDEwMDA7XG4yNjQ2Olx0XG4yNjQ3Olx0XHRtdDc1M3hfdHJhcF9mcmFtZXMocHJpdik7XG4yNjQ4Olx0XG4yNjQ5Olx0XHQvKiBFbmFibGUgYW5kIHJlc2V0IE1JQiBjb3VudGVycyAqL1xuMjY1MDpcdFx0bXQ3NTMwX21pYl9yZXNldChkcyk7XG4yNjUxOlx0XG4yNjUyOlx0XHQvKiBEaXNhYmxlIGZsb29kaW5nIG9uIGFsbCBwb3J0cyAqL1xuMjY1MzpcdFx0bXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzWF9NRkMsIEJDX0ZGUF9NQVNLIHwgVU5NX0ZGUF9NQVNLIHxcbjI2NTQ6XHRcdFx0ICAgICBVTlVfRkZQX01BU0spO1xuMjY1NTpcdFxuMjY1NjpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2Vkcy1cdTAwM2VudW1fcG9ydHM7IGkmIzQzOyYjNDM7KSB7XG4yNjU3Olx0XHRcdC8qIENsZWFyIGxpbmsgc2V0dGluZ3MgYW5kIGVuYWJsZSBmb3JjZSBtb2RlIHRvIGZvcmNlIGxpbmsgZG93blxuMjY1ODpcdFx0XHQgKiBvbiBhbGwgcG9ydHMgdW50aWwgdGhleSYjMzk7cmUgZW5hYmxlZCBsYXRlci5cbjI2NTk6XHRcdFx0ICovXG4yNjYwOlx0XHRcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTNYX1BNQ1JfUChpKSxcbjI2NjE6XHRcdFx0XHQgICBQTUNSX0xJTktfU0VUVElOR1NfTUFTSyB8XG4yNjYyOlx0XHRcdFx0ICAgTVQ3NTNYX0ZPUkNFX01PREUocHJpdi1cdTAwM2VpZCksXG4yNjYzOlx0XHRcdFx0ICAgTVQ3NTNYX0ZPUkNFX01PREUocHJpdi1cdTAwM2VpZCkpO1xuMjY2NDpcdFxuMjY2NTpcdFx0XHQvKiBEaXNhYmxlIGZvcndhcmRpbmcgYnkgZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi9cbjI2NjY6XHRcdFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUENSX1AoaSksIFBDUl9NQVRSSVhfTUFTSyxcbjI2Njc6XHRcdFx0XHQgICBQQ1JfTUFUUklYX0NMUik7XG4yNjY4Olx0XG4yNjY5Olx0XHRcdC8qIERpc2FibGUgbGVhcm5pbmcgYnkgZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi9cbjI2NzA6XHRcdFx0bXQ3NTMwX3NldChwcml2LCBNVDc1MzBfUFNDX1AoaSksIFNBX0RJUyk7XG4yNjcxOlx0XG4yNjcyOlx0XHRcdG10NzUzMF9zZXQocHJpdiwgTVQ3NTMxX0RCR19DTlQoaSksIE1UNzUzMV9ESVNfQ0xSKTtcbjI2NzM6XHRcbjI2NzQ6XHRcdFx0aWYgKGRzYV9pc19jcHVfcG9ydChkcywgaSkpIHtcbjI2NzU6XHRcdFx0XHRtdDc1M3hfY3B1X3BvcnRfZW5hYmxlKGRzLCBpKTtcbjI2NzY6XHRcdFx0fSBlbHNlIHtcbjI2Nzc6XHRcdFx0XHRtdDc1MzBfcG9ydF9kaXNhYmxlKGRzLCBpKTtcbjI2Nzg6XHRcbjI2Nzk6XHRcdFx0XHQvKiBTZXQgZGVmYXVsdCBQVklEIHRvIDAgb24gYWxsIHVzZXIgcG9ydHMgKi9cbjI2ODA6XHRcdFx0XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QUEJWMV9QKGkpLCBHMF9QT1JUX1ZJRF9NQVNLLFxuMjY4MTpcdFx0XHRcdFx0ICAgRzBfUE9SVF9WSURfREVGKTtcbjI2ODI6XHRcdFx0fVxuMjY4MzpcdFxuMjY4NDpcdFx0XHQvKiBFbmFibGUgY29uc2lzdGVudCBlZ3Jlc3MgdGFnICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzIyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNzk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBNTUlPIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBmdXp6YWJsZSB3aXRoIHN5emthbGxlci4gVGhlIGNvZGUgaXMgaW50ZXJhY3Rpbmcgd2l0aCBNTUlPIHJlZ2lzdGVycywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIElmIHN5emthbGxlciBtYXBzIGR1bW15IG1lbW9yeSwgdGhlc2UgcmVhZHMgYW5kIHdyaXRlcyB3aWxsIGxpa2VseSBzdWNjZWVkLCBhbGJlaXQgd2l0aCBkdW1teSB2YWx1ZXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCB0aGVyZSYjMzk7cyBhIHBvbGxpbmcgbG9vcCBpbiBgbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlYC4gSXQmIzM5O3MgcmVhZGluZyBhIHJlZ2lzdGVyIGFuZCB3YWl0aW5nIGZvciBhIHNwZWNpZmljIGJpdCB0byBjbGVhci4gSWYgdGhlIHJlYWQgcmV0dXJucyAwIChkdWUgdG8gdGhlIGR1bW15IG1lbW9yeSksIHRoZSBwb2xsaW5nIGxvb3AgbWlnaHQgc3VjY2VlZCBpbW1lZGlhdGVseS4gSWYgaXQgcmV0dXJucyBgMHhmZmZmZmZmZmAsIHdoaWNoIGlzIGFub3RoZXIgZHVtbXkgdmFsdWUgdGhhdCBjb3VsZCBhcmlzZSwgdGhlIGxvb3AgbWlnaHQgdGltZSBvdXQgYWZ0ZXIgMTAwbXMuIEluIGVpdGhlciBvZiB0aGVzZSBjYXNlcywgaXQgd29uJiMzOTt0IGNyYXNoIHRoZSBzeXN0ZW0sIGFuZCBpdCB3aWxsIGtlZXAgZ29pbmcuIEV2ZW4gaWYgdGhlcmUmIzM5O3MgYW4gZXJyb3IsIGBtdDc5ODhfc2V0dXBgIGRvZXNuJiMzOTt0IHNlZW0gdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBgbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlYC4gU28sIGl0IGp1c3QgY29udGludWVzIHRvIHRoZSBuZXh0IHN0ZXAuIFRoZW4sIGBtdDc1MzFfc2V0dXBfY29tbW9uKGRzKWAgd291bGQgYmUgY2FsbGVkLgoKVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoYXQgYG10NzUzMV9zZXR1cF9jb21tb25gIGVpdGhlciBzdWNjZWVkcyBvciBmYWlscyBncmFjZWZ1bGx5LCB0b28uIFRoZXJlZm9yZSwgdGhlIHN3aXRjaCAqd2lsbCogZ2V0IHJlZ2lzdGVyZWQhIFN5emthbGxlciBjYW4gdGhlbiB1c2UgbmV0bGluayB0byBpbnRlcmFjdCB3aXRoIHRoZSBEU0Egc3dpdGNoLCBjb25maWd1cmluZyB0aGluZ3MgbGlrZSBicmlkZ2VzLCBhbmQgc28gb24uCgpUaGUgYmlnZ2VyIHF1ZXN0aW9uIGlzIHRoaXM6IGlzIHRoaXMgZHJpdmVyICphY3R1YWxseSogcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiBpdCYjMzk7cyBpbXBvc3NpYmxlLiBOb3csIHdoYXQmIzM5O3MgaW50ZXJlc3RpbmcgaXMgdGhpcyBpcyBhIHB1cmUgTU1JTyBkcml2ZXIgdGhhdCBvbmx5IHdvcmtzIHdpdGggaGFyZHdhcmUuIFN5emthbGxlciBjYW4gZ2VuZXJhdGUgYSBkZXZpY2UgdHJlZSB0aGF0IG1hdGNoZXMgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYC4gVGhlIGRyaXZlciB3aWxsIHByb2JlLCBtYXAgdGhlIGR1bW15IG1lbW9yeSwgYW5kIHJlZ2lzdGVyIGEgRFNBIHN3aXRjaC4gVGhlbiBzeXprYWxsZXIgY2FuIHN0YXJ0IGZ1enppbmcuCgpUeXBpY2FsbHksIGhhcmR3YXJlIGRyaXZlcnMgdGhhdCByZWx5IG9uIHNwZWNpZmljIHJlZ2lzdGVyIHZhbHVlcyBvciBiZWhhdmlvciB3aWxsIGZhaWwgdG8gcHJvYmUuIEhvd2V2ZXIsIGluIHRoaXMgY2FzZSwgYG10Nzk4OF9zZXR1cGAgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIHN0cmljdCBjaGVja3MgdGhhdCB3b3VsZCBjYXVzZSBhIGZhaWx1cmUgaWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LgoKSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAgYW5kIGBtdDc5ODhfcHJvYmVgIGFnYWluIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXkgZG9uJiMzOTt0IGNvbnRhaW4gYW55IGhhcmR3YXJlIElEIGNoZWNrcyB0aGF0IHdvdWxkIGtpbGwgdGhlIHByb2JpbmcgcHJvY2Vzcy4gQnV0IGF0IHRoaXMgcG9pbnQsIGl0IGxvb2tzIHByb21pc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTE5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM1MTk6XHRpbnRcbjM1MjA6XHRtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbjM1MjE6XHR7XG4zNTIyOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LVx1MDAzZWRldjtcbjM1MjM6XHRcbjM1MjQ6XHRcdHByaXYtXHUwMDNlZHMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYtXHUwMDNlZHMpLCBHRlBfS0VSTkVMKTtcbjM1MjU6XHRcdGlmICghcHJpdi1cdTAwM2VkcylcbjM1MjY6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zNTI3Olx0XG4zNTI4Olx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZWRldiA9IGRldjtcbjM1Mjk6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlbnVtX3BvcnRzID0gTVQ3NTMwX05VTV9QT1JUUztcbjM1MzA6XHRcbjM1MzE6XHRcdC8qIEdldCB0aGUgaGFyZHdhcmUgaWRlbnRpZmllciBmcm9tIHRoZSBkZXZpY2V0cmVlIG5vZGUuXG4zNTMyOlx0XHQgKiBXZSB3aWxsIG5lZWQgaXQgZm9yIHNvbWUgb2YgdGhlIGNsb2NrIGFuZCByZWd1bGF0b3Igc2V0dXAuXG4zNTMzOlx0XHQgKi9cbjM1MzQ6XHRcdHByaXYtXHUwMDNlaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuMzUzNTpcdFx0aWYgKCFwcml2LVx1MDAzZWluZm8pXG4zNTM2Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzUzNzpcdFxuMzUzODpcdFx0cHJpdi1cdTAwM2VpZCA9IHByaXYtXHUwMDNlaW5mby1cdTAwM2VpZDtcbjM1Mzk6XHRcdHByaXYtXHUwMDNlZGV2ID0gZGV2O1xuMzU0MDpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjM1NDE6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XG4zNTQyOlx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XG4zNTQzOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1NDQ6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNnByaXYtXHUwMDNlc3RhdHNfbG9jayk7XG4zNTQ1Olx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcbjM1NDY6XHRcbjM1NDc6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpO1xuMzU0ODpcdFxuMzU0OTpcdFx0cmV0dXJuIDA7XG4zNTUwOlx0fVxuMzU1MTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xuMzU1MjpcdFxuMzU1MzpcdHZvaWRcbjM1NTQ6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4zNTU1Olx0e1xuMzU1NjpcdFx0aWYgKHByaXYtXHUwMDNlaXJxX2RvbWFpbilcbjM1NTc6XHRcdFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XG4zNTU4Olx0XG4zNTU5Olx0XHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cdTAwM2Vkcyk7XG4zNTYwOlx0XG4zNTYxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1NjI6XHR9XG4zNTYzOlx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xuMzU2NDpcdFxuMzU2NTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7U2VhbiBXYW5nIFx1MDAzY3NlYW4ud2FuZ0BtZWRpYXRlay5jb21cdTAwM2VcJiMzNDspO1xuMzU2NjpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEcml2ZXIgZm9yIE1lZGlhdGVrIE1UNzUzMCBTd2l0Y2hcJiMzNDspO1xuMzU2NzpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgTVQ3NTMwIERyaXZlciBQcm9iZSBGdW5jdGlvbioqCgpIbW0sIHNvIHRoZSBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAgZnVuY3Rpb27igKYgcmlnaHQsIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgY2hlY2tpbmcgYW55IGhhcmR3YXJlIElEIHJlZ2lzdGVycywgd2hpY2ggaXMgYSBiaXQgdW51c3VhbC4gT2theSwgdGhhdCYjMzk7cyBub3RlZC4gTm93LCB3aGVyZSBhcmUgdGhvc2UgSURzIGJlaW5nIHZhbGlkYXRlZCBvciB2ZXJpZmllZD8gTGV0IG1lIHNlZeKApiB3aGF0IGFib3V0IGBkc2FfcmVnaXN0ZXJfc3dpdGNoYD8gRG9lcyAqdGhhdCogZnVuY3Rpb24gdHJpZ2dlciBhbnkgc2V0dXAgcm91dGluZXM/CgpBaCwgeWVzLiBHb3QgaXQuIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCBjYWxscyBgZHMtJmd0O29wcy0mZ3Q7c2V0dXBgLiBBbmQgbG9va2luZyBhdCB0aGUgTVQ3NTN4IGRyaXZlciwgdGhlIGBzZXR1cGAgb3BlcmF0aW9uIGlzIGRlZmluZWQgYXMgYG10NzUzeF9zZXR1cGAuIEdvb2QuIFNvIHRoZSBpbml0aWFsaXphdGlvbiBsaWtlbHkgb2NjdXJzIHRoZXJlLCBvciBwb3NzaWJseSBmdXJ0aGVyIGRvd24gdGhlIGNhbGwgY2hhaW4gd2l0aGluIHRoYXQgc2V0dXAgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG10NzUzeF9zZXR1cGAgdG8gc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIHByb2NlZWRzLCBhbmQgd2hldGhlciBoYXJkd2FyZSBJRCBjaGVja3MgYXJlIHBlcmZvcm1lZCB0aGVyZS4gVGhhdCYjMzk7cyB3aGVyZSBJIHNob3VsZCBmb2N1cyBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyODYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzI4NjpcdFxuMzI4NzpcdFx0aWYgKG9wZXJhdGlvbmFsKVxuMzI4ODpcdFx0XHRwcml2LVx1MDAzZWFjdGl2ZV9jcHVfcG9ydHMgfD0gbWFzaztcbjMyODk6XHRcdGVsc2VcbjMyOTA6XHRcdFx0cHJpdi1cdTAwM2VhY3RpdmVfY3B1X3BvcnRzIFx1MDAyNj0gfm1hc2s7XG4zMjkxOlx0XG4zMjkyOlx0XHRpZiAocHJpdi1cdTAwM2VhY3RpdmVfY3B1X3BvcnRzKSB7XG4zMjkzOlx0XHRcdHZhbCA9IE1UNzUzMF9DUFVfRU4gfFxuMzI5NDpcdFx0XHQgICAgICBNVDc1MzBfQ1BVX1BPUlQoX19mZnMocHJpdi1cdTAwM2VhY3RpdmVfY3B1X3BvcnRzKSk7XG4zMjk1Olx0XHR9XG4zMjk2Olx0XG4zMjk3Olx0XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzWF9NRkMsIE1UNzUzMF9DUFVfRU4gfCBNVDc1MzBfQ1BVX1BPUlRfTUFTSywgdmFsKTtcbjMyOTg6XHR9XG4zMjk5Olx0XG4zMzAwOlx0c3RhdGljIGludCBtdDc1M3hfdGNfc2V0dXBfcWRpc2NfdGJmKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4zMzAxOlx0XHRcdFx0XHQgICAgIHN0cnVjdCB0Y190YmZfcW9wdF9vZmZsb2FkICpxb3B0KVxuMzMwMjpcdHtcbjMzMDM6XHRcdHN0cnVjdCB0Y190YmZfcW9wdF9vZmZsb2FkX3JlcGxhY2VfcGFyYW1zICpwID0gXHUwMDI2cW9wdC1cdTAwM2VyZXBsYWNlX3BhcmFtcztcbjMzMDQ6XHRcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4zMzA1Olx0XHR1MzIgcmF0ZSA9IDA7XG4zMzA2Olx0XG4zMzA3Olx0XHRzd2l0Y2ggKHFvcHQtXHUwMDNlY29tbWFuZCkge1xuMzMwODpcdFx0Y2FzZSBUQ19UQkZfUkVQTEFDRTpcbjMzMDk6XHRcdFx0cmF0ZSA9IGRpdl91NjQocC1cdTAwM2VyYXRlLnJhdGVfYnl0ZXNfcHMsIDEwMDApIFx1MDAzY1x1MDAzYyAzOyAvKiBrYnBzICovXG4zMzEwOlx0XHRcdGZhbGx0aHJvdWdoO1xuMzMxMTpcdFx0Y2FzZSBUQ19UQkZfREVTVFJPWToge1xuMzMxMjpcdFx0XHR1MzIgdmFsLCB0aWNrO1xuMzMxMzpcdFxuMzMxNDpcdFx0XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzWF9HRVJMQ1IsIEVHUl9CQ19NQVNLLFxuMzMxNTpcdFx0XHRcdCAgIEVHUl9CQ19DUkNfSVBHX1BSRUFNQkxFKTtcbjMzMTY6XHRcbjMzMTc6XHRcdFx0LyogaWYgcmF0ZSBpcyBncmVhdGVyIHRoYW4gMTBNYnBzIHRpY2sgaXMgMS8zMiBtcyxcbjMzMTg6XHRcdFx0ICogMW1zIG90aGVyd2lzZVxuMzMxOTpcdFx0XHQgKi9cbjMzMjA6XHRcdFx0dGljayA9IHJhdGUgXHUwMDNlIDEwMDAwID8gMiA6IDc7XG4zMzIxOlx0XHRcdHZhbCA9IEZJRUxEX1BSRVAoRVJMQ1JfQ0lSX01BU0ssIChyYXRlIFx1MDAzZVx1MDAzZSA1KSkgfFxuMzMyMjpcdFx0XHQgICAgICBGSUVMRF9QUkVQKEVSTENSX0VOX01BU0ssICEhcmF0ZSkgfFxuMzMyMzpcdFx0XHQgICAgICBGSUVMRF9QUkVQKEVSTENSX0VYUF9NQVNLLCB0aWNrKSB8XG4zMzI0Olx0XHRcdCAgICAgIEVSTENSX1RCRl9NT0RFX01BU0sgfFxuMzMyNTpcdFx0XHQgICAgICBGSUVMRF9QUkVQKEVSTENSX01BTlRfTUFTSywgMHhmKTtcbjMzMjY6XHRcdFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzWF9FUkxDUl9QKHBvcnQpLCB2YWwpO1xuMzMyNzpcdFx0XHRicmVhaztcbjMzMjg6XHRcdH1cbjMzMjk6XHRcdGRlZmF1bHQ6XG4zMzMwOlx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjMzMzE6XHRcdH1cbjMzMzI6XHRcbjMzMzM6XHRcdHJldHVybiAwO1xuMzMzNDpcdH1cbjMzMzU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUXVpY2sgQ2hlY2s6IG10NzUzeF9zZXR1cCoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpdmluZyBpbiBoZXJlLCBidXQgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBhcmVhLCBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIOKAkyAqbXQ3NTN4X3NldHVwKi4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gaW4gdGhpcyBzdWJzeXN0ZW0sIGFuZCBleHBlcmllbmNlIGhhcyB0YXVnaHQgbWUgdGhhdCBvdmVybG9va2luZyBpdHMgaW5pdGlhbCBjb25maWd1cmF0aW9uIGNhbiBsZWFkIHRvIHNvbWUgcmVhbGx5IG5hc3R5IGRlYnVnZ2luZyBzZXNzaW9ucyBkb3duIHRoZSByb2FkLiBJJiMzOTt2ZSBiZWVuIGJ1cm5lZCBieSB0aGF0IGJlZm9yZS4gSSBrbm93IGl0JiMzOTtzIHByb2JhYmx5IGJlZW4gY2hlY2tlZCByZWNlbnRseSwgYnV0IGl0IG5ldmVyIGh1cnRzIHRvIGRvdWJsZS1jaGVjayBhIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24sIGVzcGVjaWFsbHkgb25lIHRoYXQmIzM5O3MgZnVuZGFtZW50YWwgdG8gZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBwb3RlbnRpYWwgc3VidGxlIGludGVyYWN0aW9ucyB3aXRoIG5ld2VyIGZlYXR1cmVzIG9yIHVwc3RyZWFtIGNoYW5nZXMsIGFueSBvZiB3aGljaCBtaWdodCBhbHRlciBleHBlY3RlZCByZWdpc3RlciBzZXR0aW5ncyBvciByZXF1aXJlZCB0aW1pbmcuIFRoYXQgc2V0dXAgZnVuY3Rpb24gY291bGQgYWxzbyBiZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgYW55IGhhcmR3YXJlIHByZS1yZXF1aXNpdGVzIGFyZSBtZXQuIEEgcXVpY2sgcmV2aWV3IG9mIGl0cyBsb2dpYyB3aWxsIHNhdmUgYSB0b24gb2YgdGltZS4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeSwgSSYjMzk7bGwgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCYjMzk7cyBzZXR0aW5nIHVwIHRoZSBQSFkgYW5kIHRoZSByZWxldmFudCBjbG9ja3MuIEJhY2sgdG8gdGhlIHBsYW4gYWZ0ZXIgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTN4X3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzIwOT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzIxMDptdDc1M3hfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMyMTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMzAwPXN0YXRpYyBpbnQgbXQ3NTN4X3RjX3NldHVwX3FkaXNjX3RiZihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzM1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzMzY6c3RhdGljIGludCBtdDc1M3hfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzM3LVx0XHRcdCAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMzOTI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBtdDc1MzBfc3dpdGNoX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzkzLVx0LmdldF90YWdfcHJvdG9jb2xcdD0gbXRrX2dldF90YWdfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM5NDpcdC5zZXR1cFx0XHRcdD0gbXQ3NTN4X3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzOTUtXHQudGVhcmRvd25cdFx0PSBtdDc1M3hfdGVhcmRvd24sXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MjctXHQuY29uZHVpdF9zdGF0ZV9jaGFuZ2VcdD0gbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM0Mjg6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IG10NzUzeF9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDI5LVx0LnBvcnRfaHNyX2pvaW5cdFx0PSBkc2FfcG9ydF9zaW1wbGVfaHNyX2pvaW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODk0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgYG10NzUzeF9zZXR1cGAgRnVuY3Rpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYG10NzUzeF9zZXR1cGAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGEgbWVudGFsIGludmVudG9yeSBvZiB3aGF0IEkgYWxyZWFkeSBrbm93IGFib3V0IHRoaXMgZHJpdmVyIG9yIHRoZSBjaGlwc2V0IGl0IHBlcnRhaW5zIHRvLiBJJiMzOTttIHJlY2FsbGluZyBhbnkgcGFzdCBleHBlcmllbmNlcyB3aXRoIE1USyBzd2l0Y2ggY29uZmlndXJhdGlvbnMgb3Igc2ltaWxhciBzZXR1cHMuIEFyZSB0aGVyZSBhbnkga25vd24gcXVpcmtzPyBDb21tb24gcGl0ZmFsbHM/IERvZXMgdGhpcyBhbGlnbiB3aXRoIHRoZSB0eXBpY2FsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlPwoKQXMgSSByZWFkLCBJJiMzOTttIG1lbnRhbGx5IGNoZWNraW5nIGVhY2ggbGluZSBvZiBjb2RlIGFnYWluc3QgbXkgdW5kZXJzdGFuZGluZyBvZiBzd2l0Y2ggaGFyZHdhcmUsIHJlZ2lzdGVyIG1hcHMsIGFuZCBsaWtlbHkgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlcy4gQXJlIHRoZXkgYWRkcmVzc2luZyB0aGluZ3MgaW4gdGhlIGNvcnJlY3Qgb3JkZXI/IEFyZSB0aGUgY2xvY2sgc2V0dGluZ3MgcGxhdXNpYmxlPyBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBvYnZpb3VzIHJlZCBmbGFncywgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgb3IgYW55dGhpbmcgdGhhdCBzZWVtcyBvdXQgb2YgdGhlIG9yZGluYXJ5LCBhbmQgSSBhbSBjcm9zcyBjaGVja2luZyB0aGlzIG5ldyBkYXRhIHdpdGggdGhlIGtub3dsZWRnZSBJIGFscmVhZHkgcG9zc2Vzcy4KCkkgYW0gcXVpY2tseSBsb29raW5nIGZvciB0aGUgY29yZSBjb21wb25lbnRzIHRoYXQgYXJlIGJlaW5nIHNldCB1cDogUEhZcywgaW50ZXJuYWwgc3dpdGNoIGZhYnJpYyBjb25maWd1cmF0aW9uLCBWTEFOIHNldHRpbmdzLCBRb1MgcGFyYW1ldGVycy4uLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBtb3N0IGNyaXRpY2FsIHBhdGhzIGFuZCBkYXRhIHN0cnVjdHVyZXMuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gRE1BIHRyYW5zZmVycywgaW50ZXJydXB0IGhhbmRsaW5nLCBvciBtZW1vcnkgbWFuYWdlbWVudD8KCkkmIzM5O20ga2VlcGluZyBhIGNvbnN0YW50IGludGVybmFsIGxvZyBvZiB3aGVyZSBJIGNhbiBmaW5kIG1vcmUgY29udGV4dCBvciBpbmZvcm1hdGlvbiBvbiBzcGVjaWZpYyBvcGVyYXRpb25zLiBJJiMzOTttIGxvb2tpbmcgZm9yIGZ1bmN0aW9uIGNhbGxzIHRvIHJlbGF0ZWQgQVBJcyBvciBkcml2ZXItc3BlY2lmaWMgc3RydWN0dXJlcyB0aGF0IEkgbWF5IHdhbnQgdG8gZXhhbWluZSBpbiBkZXB0aC4gVGhlIG92ZXJhbGwgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG10NzUzeF9zZXR1cGAgZnVuY3Rpb24gaXMgaW50ZWdyYXRpbmcgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gd2l0aCBhbnkgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgdGhlIE9TLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyMDksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzIwOTpcdHN0YXRpYyBpbnRcbjMyMTA6XHRtdDc1M3hfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuMzIxMTpcdHtcbjMyMTI6XHRcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4zMjEzOlx0XHRpbnQgcmV0ID0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXN3X3NldHVwKGRzKTtcbjMyMTQ6XHRcdGludCBpO1xuMzIxNTpcdFxuMzIxNjpcdFx0aWYgKHJldClcbjMyMTc6XHRcdFx0cmV0dXJuIHJldDtcbjMyMTg6XHRcbjMyMTk6XHRcdHJldCA9IG10NzUzMF9zZXR1cF9pcnEocHJpdik7XG4zMjIwOlx0XHRpZiAocmV0KVxuMzIyMTpcdFx0XHRyZXR1cm4gcmV0O1xuMzIyMjpcdFxuMzIyMzpcdFx0cmV0ID0gbXQ3NTMwX3NldHVwX21kaW8ocHJpdik7XG4zMjI0Olx0XHRpZiAocmV0KVxuMzIyNTpcdFx0XHRyZXR1cm4gcmV0O1xuMzIyNjpcdFxuMzIyNzpcdFx0LyogSW5pdGlhbGlzZSB0aGUgUENTIGRldmljZXMgKi9cbjMyMjg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlZHMtXHUwMDNlbnVtX3BvcnRzOyBpJiM0MzsmIzQzOykge1xuMzIyOTpcdFx0XHRwcml2LVx1MDAzZXBjc1tpXS5wY3Mub3BzID0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXBjc19vcHM7XG4zMjMwOlx0XHRcdHByaXYtXHUwMDNlcGNzW2ldLnByaXYgPSBwcml2O1xuMzIzMTpcdFx0XHRwcml2LVx1MDAzZXBjc1tpXS5wb3J0ID0gaTtcbjMyMzI6XHRcdH1cbjMyMzM6XHRcbjMyMzQ6XHRcdGlmIChwcml2LVx1MDAzZWNyZWF0ZV9zZ21paSlcbjMyMzU6XHRcdFx0cmV0ID0gcHJpdi1cdTAwM2VjcmVhdGVfc2dtaWkocHJpdik7XG4zMjM2Olx0XG4zMjM3Olx0XHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWlycV9kb21haW4pXG4zMjM4Olx0XHRcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xuMzIzOTpcdFxuMzI0MDpcdFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlYnVzKSB7XG4zMjQxOlx0XHRcdG10NzUzMF9zdGF0c19yZWZyZXNoKHByaXYpO1xuMzI0MjpcdFx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c193b3JrLFxuMzI0MzpcdFx0XHRcdFx0ICAgICAgTVQ3NTMwX1NUQVRTX1BPTExfSU5URVJWQUwpO1xuMzI0NDpcdFx0fVxuMzI0NTpcdFxuMzI0NjpcdFx0cmV0dXJuIHJldDtcbjMyNDc6XHR9XG4zMjQ4Olx0XG4zMjQ5Olx0c3RhdGljIHZvaWRcbjMyNTA6XHRtdDc1M3hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuMzI1MTpcdHtcbjMyNTI6XHRcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4zMjUzOlx0XG4zMjU0Olx0XHRpZiAocHJpdi1cdTAwM2VidXMpXG4zMjU1Olx0XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmspO1xuMzI1NjpcdH1cbjMyNTc6XHRcbjMyNTg6XHRzdGF0aWMgaW50IG10NzUzeF9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTAyMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgU3dpdGNoIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgbmV0d29yayBzd2l0Y2ggaW5pdGlhbGl6YXRpb24sIHNwZWNpZmljYWxseSBmb3IgdGhlIGBJRF9FTjc1MjhgIGNvbmZpZ3VyYXRpb24uIEkgc2VlIHRoYXQgYHByaXYtJmd0O2luZm8tJmd0O3N3X3NldHVwKGRzKWAgaXMgc2V0IHRvIGBtdDc5ODhfc2V0dXBgLCB3aGljaCBpcyBleHBlY3RlZC4gV2Uga25vdyB0aGF0IGBtdDc5ODhfc2V0dXBgIGlzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgcHJvY2Vzcy4KCk5vdywgYXMgSSByZWNhbGwgZnJvbSBwcmV2aW91cyBkZWJ1Z2dpbmcsIGBtdDc5ODhfc2V0dXBgIHRoZW4gY2FsbHMgYG10NzUzMV9zZXR1cF9jb21tb25gLiBUaGUgZnVuY3Rpb24gY2FsbHMgYG10NzUzMV9zZXR1cF9jb21tb25gIHdoaWNoLCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgaW52b2x2ZXMgYSBnb29kIGFtb3VudCBvZiBNTUlPIHJlZ2lzdGVyIGFjY2VzcyB3aGljaCwgYXQgdGhpcyBwb2ludCwgYWxsIHNlZW1lZCB0byBoYXZlIHN1Y2NlZWRlZC4gCgpUaGUgbmV4dCBzdGVwcyBhZnRlciB0aGF0IGluaXRpYWwgc2V0dXAgYXJlIGBtdDc1MzBfc2V0dXBfaXJxYCBhbmQgYG10NzUzMF9zZXR1cF9tZGlvYC4gR2l2ZW4gd2hlcmUgd2UgYXJlIG5vdywgbGV0JiMzOTtzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgbXQ3NTMwX3NldHVwX21kaW9gIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTMwX3NldHVwX21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjY5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI3MDptdDc1MzBfc2V0dXBfbWRpb19pcnEoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzcwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzcxOm10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzcyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNC1cdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4gXHUwMDI2XHUwMDI2ICFtbnApXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQwNTpcdFx0bXQ3NTMwX3NldHVwX21kaW9faXJxKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMyMTA9bXQ3NTN4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzIyMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMjIzOlx0cmV0ID0gbXQ3NTMwX3NldHVwX21kaW8ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzIyNC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODEyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbXQ3NTMwX3NldHVwX21kaW9gIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBwcm9iYWJseSBwYXJ0IG9mIGEgZHJpdmVyIG9yIHNvbWUgbG93LWxldmVsIG5ldHdvcmsgaW50ZXJmYWNlIGNvZGUsIGp1ZGdpbmcgYnkgdGhlIG5hbWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgY29udGV4dC4gV2hhdCYjMzk7cyB0aGUgb3ZlcmFsbCBnb2FsIG9mIHRoaXMgZnVuY3Rpb24/IEZyb20gdGhlIG5hbWUsIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3Mgc2V0dGluZyB1cCB0aGUgTURJTyBpbnRlcmZhY2UsIHdoaWNoIGlzIGEgY29tbW9uIHNlcmlhbCBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyBQSFkgKHBoeXNpY2FsIGxheWVyKSByZWdpc3RlcnMuIEtub3dpbmcgdGhpcywgSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gSXMgaXQgaW5pdGlhbGl6aW5nIHRoZSBNRElPIGNvbnRyb2xsZXI/IENvbmZpZ3VyaW5nIHRoZSBjbG9jaz8gTWFwcGluZyB0aGUgcmVnaXN0ZXJzPyBJdCYjMzk7cyBhbGwgYWJvdXQgZWZmaWNpZW50IFBIWSBjb21tdW5pY2F0aW9uLgoKSSBhbnRpY2lwYXRlIHRoZSBjb2RlIHdpbGwgaW52b2x2ZSB3cml0aW5nIHRvIHNwZWNpZmljIHJlZ2lzdGVycyB0byBjb250cm9sIHRoZSBNRElPIGNsb2NrIGZyZXF1ZW5jeSwgdGhlIE1ESU8gbW9kZSAoZS5nLiwgYml0LWJhbmdpbmcgdnMuIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiksIGFuZCBwb3RlbnRpYWxseSBlbmFibGluZyB0aGUgTURJTyBjb250cm9sbGVyLiBJ4oCZbGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBlcnJvciBoYW5kbGluZyBvciB0aW1lb3V0cywgZXNwZWNpYWxseSB3aGVuIHdhaXRpbmcgZm9yIE1ESU8gdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLiBBcmUgdGhleSB1c2luZyBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgTURJTyBjb21tYW5kcz8gQW55IGJpdC1zaGlmdGluZyBvciBtYXNraW5nIG9wZXJhdGlvbnMgdG8gaXNvbGF0ZSBhbmQgbWFuaXB1bGF0ZSBzcGVjaWZpYyByZWdpc3RlciBiaXRzPyBJJiMzOTtsbCBwcm9iYWJseSBzY3J1dGluaXplIGFueSBsb29wcyBvciBkZWxheXMgdmVyeSBjbG9zZWx5LCBiZWNhdXNlIHRoZXNlIGFyZSBjbGFzc2ljIGFyZWFzIGZvciBwb3RlbnRpYWwgdGltaW5nIGlzc3VlcyBvciBsb2NrdXBzLgoKSeKAmW0gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBkaWZmZXJlbnQgTURJTyBhZGRyZXNzIHNwYWNlcyBpZiB0aGV5JiMzOTtyZSBzdXBwb3J0aW5nIG11bHRpcGxlIFBIWXMuIElzIHRoZXJlIGEgY2xlYXIgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBpbiB0aGUgY29kZSwgb3IgaXMgZXZlcnl0aGluZyB0aWdodGx5IGNvdXBsZWQ/IEFuZCwgb2YgY291cnNlLCBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSB1bmRvY3VtZW50ZWQgb3IgdW51c3VhbCByZWdpc3RlciBhY2Nlc3NlcyB0aGF0IG1pZ2h0IHJlcHJlc2VudCBhIHZlbmRvci1zcGVjaWZpYyBoYWNrIG9yIG9wdGltaXphdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGluIHRoZXJlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjM3MDpcdHN0YXRpYyBpbnRcbjIzNzE6XHRtdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4yMzcyOlx0e1xuMjM3MzpcdFx0c3RydWN0IGRldmljZV9ub2RlICptbnAsICpucCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGU7XG4yMzc0Olx0XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBwcml2LVx1MDAzZWRzO1xuMjM3NTpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4yMzc2Olx0XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuMjM3NzpcdFx0c3RhdGljIGludCBpZHg7XG4yMzc4Olx0XHRpbnQgcmV0ID0gMDtcbjIzNzk6XHRcbjIzODA6XHRcdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcJiMzNDttZGlvXCYjMzQ7KTtcbjIzODE6XHRcbjIzODI6XHRcdGlmIChtbnAgXHUwMDI2XHUwMDI2ICFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG1ucCkpXG4yMzgzOlx0XHRcdGdvdG8gb3V0O1xuMjM4NDpcdFxuMjM4NTpcdFx0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKGRldik7XG4yMzg2Olx0XHRpZiAoIWJ1cykge1xuMjM4NzpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMjM4ODpcdFx0XHRnb3RvIG91dDtcbjIzODk6XHRcdH1cbjIzOTA6XHRcbjIzOTE6XHRcdGlmICghbW5wKVxuMjM5MjpcdFx0XHRkcy1cdTAwM2V1c2VyX21paV9idXMgPSBidXM7XG4yMzkzOlx0XG4yMzk0Olx0XHRidXMtXHUwMDNlcHJpdiA9IHByaXY7XG4yMzk1Olx0XHRidXMtXHUwMDNlbmFtZSA9IEtCVUlMRF9NT0ROQU1FIFwmIzM0Oy1taWlcJiMzNDs7XG4yMzk2Olx0XHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgS0JVSUxEX01PRE5BTUUgXCYjMzQ7LSVkXCYjMzQ7LCBpZHgmIzQzOyYjNDM7KTtcbjIzOTc6XHRcdGJ1cy1cdTAwM2VyZWFkID0gbXQ3NTN4X3BoeV9yZWFkX2MyMjtcbjIzOTg6XHRcdGJ1cy1cdTAwM2V3cml0ZSA9IG10NzUzeF9waHlfd3JpdGVfYzIyO1xuMjM5OTpcdFx0YnVzLVx1MDAzZXJlYWRfYzQ1ID0gbXQ3NTN4X3BoeV9yZWFkX2M0NTtcbjI0MDA6XHRcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSBtdDc1M3hfcGh5X3dyaXRlX2M0NTtcbjI0MDE6XHRcdGJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4yNDAyOlx0XHRidXMtXHUwMDNlcGh5X21hc2sgPSB+ZHMtXHUwMDNlcGh5c19taWlfbWFzaztcbjI0MDM6XHRcbjI0MDQ6XHRcdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4gXHUwMDI2XHUwMDI2ICFtbnApXG4yNDA1Olx0XHRcdG10NzUzMF9zZXR1cF9tZGlvX2lycShwcml2KTtcbjI0MDY6XHRcbjI0MDc6XHRcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcbjI0MDg6XHRcdGlmIChyZXQpIHtcbjI0MDk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBNRElPIGJ1czogJWRcXG5cJiMzNDssIHJldCk7XG4yNDEwOlx0XHRcdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4gXHUwMDI2XHUwMDI2ICFtbnApXG4yNDExOlx0XHRcdFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XG4yNDEyOlx0XHR9XG4yNDEzOlx0XG4yNDE0Olx0b3V0OlxuMjQxNTpcdFx0b2Zfbm9kZV9wdXQobW5wKTtcbjI0MTY6XHRcdHJldHVybiByZXQ7XG4yNDE3Olx0fVxuMjQxODpcdFxuMjQxOTpcdHN0YXRpYyBpbnRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMwMTAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgYG10NzUzMF9zZXR1cF9tZGlvYCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJpbmcgdGhlIE1ESU8gYnVzIGFuZCB0aGUgc3dpdGNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhpcyBtZWFucyB0aGUgRFNBIGNvcmUgd2lsbCBleHBvc2Ugc3dpdGNoIHBvcnRzIGFzIG5ldHdvcmsgaW50ZXJmYWNlcywgYW5kIHRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoZXJlIFN5emthbGxlciBjYW4gZ28gdG8gdG93biBmdXp6aW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgIGNhbGxlZCBieSBwaHlsaW5rLCBtb2RpZmljYXRpb25zIHRvIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIGZvciBgSURfRU43NTI4YCwgYW5kIHRoZSBFRUUgZGlzYWJsZSBpbiBgbXQ3OTg4X3NldHVwYCDigJMgdGhhdCBhbGwgc291bmRzIGxpa2UgbmV3IGhhcmR3YXJlIElEIGFuZCBuZXcgc3dpdGNoIGxvZ2ljIGFjY2Vzc2libGUgdGhyb3VnaCBEU0EuIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vaywgcmlnaHQ/CgpCdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQ6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiYjMzQ7LiBDYW4gSSByZWFjaCB0aGlzIGluIEdDRSBvciBRRU1VPyBIbW0uLi4gTm8sIG5vdCBpbXBvc3NpYmxlLiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIGEgZGV2aWNlIHRyZWUgd2l0aCBgZWNvbmV0LGVuNzUyOC1zd2l0Y2hgLCB0aGUgZHJpdmVyIHdpbGwgcHJvYmUsIG1hcCBkdW1teSBtZW1vcnksIHJlZ2lzdGVyIHRoZSBEU0Egc3dpdGNoLCBEU0EgY29yZSB3aWxsIGNhbGwgdGhlIHN3aXRjaCBvcGVyYXRpb25zLiBTbyBpdCAqaXMqIHJlYWNoYWJsZS4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCBtZWV0cyB0aGUgb3RoZXIgY3JpdGVyaWEuICYjMzQ7SWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4mIzM0OyBZdXAsIHRoYXQmIzM5O3Mgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaGVyZS4gVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBkcml2ZXIgY29kZSwgYW5kIGNvcmUgbG9naWMsIHNvIEkmIzM5O20gY29uY2x1ZGluZyBXb3J0aEZ1enppbmc9dHJ1ZS4KCk5vdywgYmVjYXVzZSBXb3J0aEZ1enppbmc9dHJ1ZSwgSSBuZWVkIHRvIGlkZW50aWZ5IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgKEZvY3VzU3ltYm9scykgYW5kIGFueSByZWxldmFudCBDT05GSUcgb3B0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiBUaGUgcmVsZXZhbnQgZHJpdmVyIGZpbGVzIGFyZSBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jYC4gVGltZSB0byBkaWcgaW50byB0aGUgYE1ha2VmaWxlYCBhbmQgYEtjb25maWdgIGZpbGVzIGluIGBkcml2ZXJzL25ldC9kc2EvYCBhbmQgc2VlIHdoYXQgQ09ORklHIG9wdGlvbnMgYXJlIGluIHBsYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIwMTcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMClcdCYjNDM7PSBtdDc1MzAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICYjNDM7PSBtdDc1MzAtbWRpby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgJiM0Mzs9IG10NzUzMC1tbWlvLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNjA2MCkgJiM0Mzs9IG12ODhlNjA2MC5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNjojaW5jbHVkZSBcJiMzNDttdDc1MzAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxOTptdDc1MzBfcmVnbWFwX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMi1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NDptdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy00NS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy00Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz02Nj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6Njc6bXQ3NTMwX21kaW9fcmVnbWFwX2xvY2sodm9pZCAqbWRpb19sb2NrKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTcyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3MzptdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrKHZvaWQgKm1kaW9fbG9jaylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTc0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc5Olx0LnJlZ193cml0ZSA9IG10NzUzMF9yZWdtYXBfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4MDpcdC5yZWdfcmVhZCA9IG10NzUzMF9yZWdtYXBfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTgxLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9ODM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6ODQ6bXQ3NTMxX2NyZWF0ZV9zZ21paShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTA1LVx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2VtYXhfcmVnaXN0ZXIgPSAweDE3YztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEwNjpcdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTA3Olx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2V1bmxvY2sgPSBtdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTA4LVx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2Vsb2NrX2FyZyA9IFx1MDAyNnByaXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMDpcdFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTEtXHRcdFx0XHRcdCAgbXQ3NTMxX3Bjc19jb25maWdbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzMC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEzMTpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc1MzBfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzMi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDc2MjFcJiMzNDssIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzYyMV0sIH0sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzM6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWVkaWF0ZWssbXQ3NTMwXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzBdLCB9LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM0LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzUzMVwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NTMxXSwgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzYtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEzNzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc1MzBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE0Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNDg6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE0OS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTA6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTEtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE2My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2NDpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIwMzpcdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDQtXHRcdFx0XHRcdFx1MDAyNnJlZ21hcF9jb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIxND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE1Om10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjE2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxNzpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTgtXHRpbnQgcmV0ID0gMCwgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMzM6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIzNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMzk6c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0MC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDE6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1MTpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1MjpcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTM6XHQucmVtb3ZlID0gbXQ3NTMwX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NDpcdC5zaHV0ZG93biA9IG10NzUzMF9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1NS1cdC5tZGlvZHJ2LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NjpcdFx0Lm5hbWUgPSBcJiMzNDttdDc1MzAtbWRpb1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3NTMwX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjU4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjE6bWRpb19tb2R1bGVfZHJpdmVyKG10NzUzMF9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjItXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMTAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzoxMTojaW5jbHVkZSBcJiMzNDttdDc1MzAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzE9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zMi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzozMzpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTM0LVx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0NDpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00NS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9Njg9c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjkte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzA6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzItXHRpZiAocHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjczOlx0XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc0LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz03Nj1zdGF0aWMgdm9pZCBtdDc5ODhfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc3LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjc4Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz04OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc5ODhfcGxhdGZvcm1fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTkyLVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjkzOlx0XHQubmFtZSA9IFwmIzM0O210NzUzMC1tbWlvXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOTQtXHRcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4OF9vZl9tYXRjaCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY6I2luY2x1ZGUgXCYjMzQ7bXQ3NTMwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzE9c3RhdGljIHN0cnVjdCBtdDc1M3hfcGNzICpwY3NfdG9fbXQ3NTN4X3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzYtLyogU3RyaW5nLCBvZmZzZXQsIGFuZCByZWdpc3RlciBzaXplIGluIGJ5dGVzIGlmIGRpZmZlcmVudCBmcm9tIDQgYnl0ZXMgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzUzMF9taWJfZGVzYyBtdDc1MzBfbWliW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXHRNSUJfREVTQygxLCBNVDc1MzBfUE9SVF9NSUJfVFhfRFJPUCwgXCYjMzQ7VHhEcm9wXCYjMzQ7KSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU3Om10NzUzMF9tdXRleF91bmxvY2soc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDpjb3JlX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTk1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjk2Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05Ny19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTAwOmNvcmVfcm13KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiBzZXQpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTAxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwNjpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTM3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEzODpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTM5LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQyOmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNDg6Y29yZV9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTUzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNTQ6bXQ3NTMwX21paV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTYxLVx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2MjpcdFx0XHRcJiMzNDtmYWlsZWQgdG8gd3JpdGUgbXQ3NTMwIHJlZ2lzdGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE2Nz1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY4Om10NzUzMF9taWlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTY5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTc2LVx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE3NzpcdFx0XHRcJiMzNDtmYWlsZWQgdG8gcmVhZCBtdDc1MzAgcmVnaXN0ZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE3OC1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE4ND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4NTptdDc1MzBfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE4Ni17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTg3Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTg4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4OTpcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTE6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Mi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE5ND1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk1Ol9tdDc1MzBfdW5sb2NrZWRfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTc6XHRyZXR1cm4gbXQ3NTMwX21paV9yZWFkKHAtXHUwMDNlcHJpdiwgcC1cdTAwM2VyZWcpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5OC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIwMD1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjAxOl9tdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNTpcdG10NzUzMF9tdXRleF9sb2NrKHAtXHUwMDNlcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNzpcdHZhbCA9IG10NzUzMF9taWlfcmVhZChwLVx1MDAzZXByaXYsIHAtXHUwMDNlcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA5Olx0bXQ3NTMwX211dGV4X3VubG9jayhwLVx1MDAzZXByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjE0PXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTU6bXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxNi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE3Olx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjE4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOS1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjA6XHRyZXR1cm4gX210NzUzMF9yZWFkKFx1MDAyNnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIyMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyNDptdDc1MzBfcm13KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjUtXHQgICB1MzIgbWFzaywgdTMyIHNldClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyNzpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzMTpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMyLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM1Om10NzUzMF9zZXQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM3Olx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDE6bXQ3NTMwX2NsZWFyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDIte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MzpcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIDApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0Nj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ3Om10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1MC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjUxOlx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTQtXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU1Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEMsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ny1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX0FUQyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU4Olx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1OS1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgQVRDX0JVU1kpLCAyMCwgMjAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjctXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjg6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfQVRDKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjktXHRpZiAoKGNtZCA9PSBNVDc1MzBfRkRCX1JFQUQpIFx1MDAyNlx1MDAyNiAodmFsIFx1MDAyNiBBVENfSU5WQUxJRCkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI3OD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI3OTptdDc1MzBfZmRiX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBzdHJ1Y3QgbXQ3NTMwX2ZkYiAqZmRiKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjg2Olx0XHRyZWdbaV0gPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVFNSQTEgJiM0MzsgKGkgKiA0KSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMDU6bXQ3NTMwX2ZkYl93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUxNiB2aWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzA2LVx0XHQgdTggcG9ydF9tYXNrLCBjb25zdCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzE6XHRcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRBMSAmIzQzOyAoaSAqIDQpLCByZWdbaV0pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzMi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzNC0vKiBTZXQgdXAgc3dpdGNoIGNvcmUgY2xvY2sgZm9yIE1UNzUzMCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzNTpzdGF0aWMgdm9pZCBtdDc1MzBfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zNzU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzY6bXQ3NTMwX3NldHVwX3BvcnQ2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNzcte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3ODpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc5LVx0dTMyIG5jcG8xLCBzc2NfZGVsdGEsIHh0YWw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4NC1cdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg1Olx0XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QNkVDUiwgUDZfSU5URl9NT0RFX01BU0ssXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg2LVx0XHRcdCAgIFA2X0lOVEZfTU9ERSgwKSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTA6XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QNkVDUiwgUDZfSU5URl9NT0RFX01BU0ssIFA2X0lOVEZfTU9ERSgxKSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzkxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5MjpcdHh0YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfTVRSQVApIFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDI4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDI5Om10NzUzMV9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQzMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQzNS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0MzY6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfQ1JFVik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM3Olx0dG9wX3NpZyA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9UT1BfU0lHX1NSKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Mzg6XHRod3N0cmFwID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX1RSQVApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQzOS1cdGlmICgodmFsIFx1MDAyNiBDSElQX1JFVl9NKSBcdTAwM2UgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ2LVx0LyogU3RlcCAxIDogRGlzYWJsZSBNVDc1MzEgQ09SRVBMTCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NzpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ4LVx0dmFsIFx1MDAyNj0gfkVOX0NPUkVQTEw7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ5Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDUxLVx0LyogU3RlcCAyOiBzd2l0Y2ggdG8gWFRBTCBvdXRwdXQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTI6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1My1cdHZhbCB8PSBTV19DTEtTVztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTQ6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1NS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTY6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTctXHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9FTjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTg6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYwLVx0LyogU3RlcCAzOiBkaXNhYmxlIFBMTEdQIGFuZCBlbmFibGUgcHJvZ3JhbSBQTExHUCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MTpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYyLVx0dmFsIHw9IFNXX1BMTEdQO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MzpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2NS1cdC8qIFN0ZXAgNDogcHJvZ3JhbSBDT1JFUExMIG91dHB1dCBmcmVxdWVuY3kgdG8gNTAwTUh6ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY3LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfUE9TRElWX007XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY4LVx0dmFsIHw9IDIgXHUwMDNjXHUwMDNjIFJHX0NPUkVQTExfUE9TRElWX1M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY5Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDcwLVx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3My1cdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF8yNU1IWjpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzQ6XHRcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3NS1cdFx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3Ni1cdFx0dmFsIHw9IDB4MTQwMDAwIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Nzc6XHRcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDc5LVx0Y2FzZSBNVDc1MzFfWFRBTF9GU0VMXzQwTUhaOlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MDpcdFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgxLVx0XHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX007XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgyLVx0XHR2YWwgfD0gMHgxOTAwMDAgXHUwMDNjXHUwMDNjIFJHX0NPUkVQTExfU0RNX1BDV19TO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MzpcdFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg0LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg3LVx0LyogU2V0IGZlZWRiYWNrIGRpdmlkZSByYXRpbyB1cGRhdGUgc2lnbmFsIHRvIGhpZ2ggKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODg6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODktXHR2YWwgfD0gUkdfQ09SRVBMTF9TRE1fUENXX0NIRztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTA6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTEtXHQvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBYVEFMIGNsb2NrcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTQtXHQvKiBTdGVwIDU6IHNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBsb3cgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTU6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTYtXHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX0NIRztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTc6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk5LVx0LyogRW5hYmxlIDMyNU0gY2xvY2sgZm9yIFNHTUlJICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAwOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1I1LCAweGFkMDAwMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTAxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMi1cdC8qIEVuYWJsZSAyNTBTU0MgY2xvY2sgZm9yIFJHTUlJICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAzOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1IyLCAweDRmNDAwMDApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDUtXHQvKiBTdGVwIDY6IEVuYWJsZSBNVDc1MzEgUExMICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA3LVx0dmFsIHw9IFJHX0NPUkVQTExfRU47XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA4Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxMDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTExLVx0dmFsIHw9IEVOX0NPUkVQTEw7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTEyOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTMtXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTE2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE3Om10NzUzMF9taWJfcmVzZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxOC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE5Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIxOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0ZMVVNIKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjI6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX01JQl9DQ1IsIENDUl9NSUJfQUNUSVZBVEUpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMy19XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNTpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMwOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzEtXHRcdFx0XHR1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTM2OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2M0NShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNy1cdFx0XHQgICAgICAgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQyOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0My1cdFx0XHRcdGludCByZWdudW0sIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU0OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQ5Om10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTAtXHRcdFx0aW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTEte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1MjpcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1My1cdHUzMiByZWcsIHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTU3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1ODpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NjA6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTYxLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjgtXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTY5Olx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzE6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTcyLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzktXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTgwOlx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODI6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgzLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTAtb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU5MTpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTkyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01OTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU5NzptdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5OC1cdFx0XHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDA6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDEtXHR1MzIgdmFsLCByZWc7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDY6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA4Olx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwOS1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjE2LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxNzpcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjE5Olx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyMC1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjI3LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2Mjg6XHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjI5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYzMDpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MzEtXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzNy1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjM4Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MzktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY0Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ0Om10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDY6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDctXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjUyOlx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1NDpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTUtXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NjQ6XHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjY1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY2NjpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjctXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY3NC1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njc1Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY4MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjgxOm10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4Mi1cdFx0XHQgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgzLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2ODQ6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODUtXHRpbnQgcmV0O1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3Nzg4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NTMwIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IG1pbmQganVtcHMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBNVDc1MzAgc3dpdGNoLiBJdCYjMzk7cyBsaXN0aW5nIGBORVRfRFNBX01UNzUzMGAsIGBORVRfRFNBX01UNzUzMF9NRElPYCwgYW5kIGBORVRfRFNBX01UNzUzMF9NTUlPYC4gS25vd2luZyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZXNlIGRyaXZlcnMsIHRoZSBmYWN0IHRoYXQgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc1MzAtbW1pby5jYCBhbmQgYG10NzUzMC5jYCB0ZWxscyBtZSByaWdodCBhd2F5IHRoYXQgYE5FVF9EU0FfTVQ3NTMwYCAqYW5kKiBgTkVUX0RTQV9NVDc1MzBfTU1JT2AgYXJlIGdvaW5nIHRvIGJlIGVzc2VudGlhbCBmb3IgdGhlIGNoYW5nZXMgdG8gdGFrZSBlZmZlY3QuIE5vIHN1cnByaXNlcyB0aGVyZS4KClRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRlZCwgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIERTQSBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5lZWQgdG8gbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBqdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGF2b2lkIGFueSB1bmV4cGVjdGVkIGlzc3VlcyBkb3duc3RyZWFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX01UNzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzQtXHRzZWxlY3QgUkVHTUFQX0lSUVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzU6XHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNjpcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Ni1cdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01My1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU2Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTctXHRkZXBlbmRzIG9uIEhBU19JT01FTVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY2MgoJCQkJCQkJb3V0cHV0OiAxNzMKCQkJCQkJCXRob3VnaHRzOiAyNDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1UNzUzMCBTd2l0Y2ggQ2hpcCBTdXBwb3J0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGFkZGluZyBzdXBwb3J0IGZvciBhIG5ldyBzd2l0Y2ggY2hpcCwgdGhlIEVONzUyOCwgd2l0aGluIHRoZSBNVDc1MzAgRFNBIGRyaXZlci4gIFRoZSBlc3NlbnRpYWwgY29uZmlncyBuZWVkZWQgYXJlIGBORVRfRFNBX01UNzUzMGAgYW5kIGBORVRfRFNBX01UNzUzMF9NTUlPYC4gIFRoaXMgaXMgYSBwcmV0dHkgZm9jdXNlZCBjaGFuZ2UsIHNvIGl0JiMzOTtzIGdvb2QuCgpNeSBpbW1lZGlhdGUgZm9jdXMgc2hpZnRzIHRvIHRoZSBuZXdseSBpbnRyb2R1Y2VkIGFuZCBtb2RpZmllZCBmdW5jdGlvbnM6IGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgLCBgbXQ3OTg4X3NldHVwYCAod2l0aCBpdHMgbmV3IGBJRF9FTjc1MjhgIGJsb2NrKSwgYW5kIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIChhbHNvIG1vZGlmaWVkIHRvIGluY2x1ZGUgYElEX0VONzUyOGApLiAgYGVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc2AgaXMgYnJhbmQgbmV3LCB3aGljaCBtZWFucyBpdCB3aWxsIHByb2JhYmx5IG5lZWQgdGhvcm91Z2ggYXR0ZW50aW9uIHdoZW4gZnV6emluZy4KCkFmdGVyIGEgcXVpY2sgYXNzZXNzbWVudCwgdGhlc2UgYXJlbiYjMzk7dCBob3QtcGF0aCBmdW5jdGlvbnMsIHNvIHBvdGVudGlhbCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBhcmUgbGVzcyBvZiBhIGNvbmNlcm4uIGBtdDc5ODhfc2V0dXBgIGlzIGEgcHJvYmUtdGltZSBmdW5jdGlvbiwgYGVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc2AgaXMgY2FsbGVkIGR1cmluZyBwb3J0IHNldHVwLCBhbmQgYG10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZWAgaXMgdHJpZ2dlcmVkIGJ5IGNvbmR1aXQgc3RhdGUgY2hhbmdlcy4KCkxvb2tpbmcgY2xvc2VyIGF0IHRoZSBwYXRjaCwgdGhlIG1haW4gbW9kaWZpY2F0aW9ucyBhcmUgaW4gYG10NzUzMC1tbWlvLmNgIHdoZXJlIHdlIHNlZSB0aGUgYWRkaXRpb24gb2YgdGhlIEVONzUyOCBjb21wYXRpYmxlIHN0cmluZyBhbmQgYW4gZW50cnkgaW4gdGhlIGBtdDc1M3hfdGFibGVgLiAgYG10NzUzMC5jYCBnZXRzIHRoZSBidWxrIG9mIHRoZSBjaGFuZ2VzLiBUaGUgc3dpdGNoJiMzOTtzIFBIWXMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaCBwb3J0cyAxLi40KSwgc28gdGhleSYjMzk7cmUgcmVhY2hlZCB0aHJvdWdoIHRoZSBQSFkmIzM5O3MgaW50ZXJuYWwgaW5kaXJlY3QgYWNjZXNzIHJlZ2lzdGVycy4KClRoZSBrZXkgYWRkaXRpb24gaXMgYGVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc2AsIHdoaWNoIGRlZmluZXMgdGhlIGNhcGFiaWxpdGllcyBmb3IgdGhlIEVONzUyOCBwb3J0cy4gUG9ydHMgMS00IGFyZSBpbnRlcm5hbCBhbmQgc3VwcG9ydCAxMC8xMDAvMTAwMCBNYnBzLCB3aGlsZSBwb3J0IDYgYWxzbyBzdXBwb3J0cyBpbnRlcm5hbCBtb2RlIGFuZCAxMDAwRkQuCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSBtb2RpZmljYXRpb24gdG8gYG10Nzk4OF9zZXR1cGAgd2hpY2ggZGlzYWJsZXMgRUVFIChFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0KSBvbiB0aGUgRU43NTI4IExBTiBHUEhZcy4gSXQmIzM5O3MgZGlzYWJsaW5nIHRoZSBhZHZlcnRpc2VtZW50IG9mIEVFRSBiZWNhdXNlIGl0IGNhdXNlcyBpc3N1ZXMgd2l0aCBsaW5rIHN0YWJpbGl0eS4gIEZpbmFsbHksIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIGlzIG1vZGlmaWVkIHRvIGluY2x1ZGUgSURfRU43NTI4LgoKR2l2ZW4gdGhlIHNjb3BlIGFuZCByZWFjaGFiaWxpdHkgdGhyb3VnaCB0aGUgRFNBIGNvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIG1hcmtpbmcgdGhpcyBhcyAmIzM0O1dvcnRoRnV6emluZz10cnVlLiYjMzQ7ICBUaGUgZm9jdXMgc3ltYm9scyBhcmUgY2xlYXI6IGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgLCBgbXQ3OTg4X3NldHVwYCwgYW5kIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgLiBJIHdpbGwgc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RTQV9NVDc1MzAmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NVDc1MzBfTU1JTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VuNzUyOF9tYWNfcG9ydF9nZXRfY2FwcyYjMzQ7LAogICAgJiMzNDttdDc5ODhfc2V0dXAmIzM0OywKICAgICYjMzQ7bXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggU29DIGJ1aWx0LWluIHN3aXRjaCB0byB0aGUgTWVkaWF0ZWsgTVQ3NTMwIERTQSBkcml2ZXIuIFRoaXMgaW5jbHVkZXMgYSBuZXcgZnVuY3Rpb24gZm9yIGdldHRpbmcgTUFDIHBvcnQgY2FwYWJpbGl0aWVzIGFuZCBtb2RpZmljYXRpb25zIHRvIHN3aXRjaCBzZXR1cCBhbmQgY29uZHVpdCBzdGF0ZSBjaGFuZ2UgbG9naWMuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgZGV2aWNlIHRyZWUgYW5kIHRoZSBzd2l0Y2ggb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgRFNBIGNvcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RTQV9NVDc1MzAmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NVDc1MzBfTU1JTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VuNzUyOF9tYWNfcG9ydF9nZXRfY2FwcyYjMzQ7LAogICAgJiMzNDttdDc5ODhfc2V0dXAmIzM0OywKICAgICYjMzQ7bXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggU29DIGJ1aWx0LWluIHN3aXRjaCB0byB0aGUgTWVkaWF0ZWsgTVQ3NTMwIERTQSBkcml2ZXIuIFRoaXMgaW5jbHVkZXMgYSBuZXcgZnVuY3Rpb24gZm9yIGdldHRpbmcgTUFDIHBvcnQgY2FwYWJpbGl0aWVzIGFuZCBtb2RpZmljYXRpb25zIHRvIHN3aXRjaCBzZXR1cCBhbmQgY29uZHVpdCBzdGF0ZSBjaGFuZ2UgbG9naWMuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgZGV2aWNlIHRyZWUgYW5kIHRoZSBzd2l0Y2ggb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgRFNBIGNvcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ1OjU0LjQ4NjEzODI1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODI4MDMyNTAxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRFNBX01UNzUzMFwiLFxuICAgIFwiTkVUX0RTQV9NVDc1MzBfTU1JT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc1wiLFxuICAgIFwibXQ3OTg4X3NldHVwXCIsXG4gICAgXCJtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBFY29OZXQgRU43NTI4IFNvQyBidWlsdC1pbiBzd2l0Y2ggdG8gdGhlIE1lZGlhdGVrIE1UNzUzMCBEU0EgZHJpdmVyLiBUaGlzIGluY2x1ZGVzIGEgbmV3IGZ1bmN0aW9uIGZvciBnZXR0aW5nIE1BQyBwb3J0IGNhcGFiaWxpdGllcyBhbmQgbW9kaWZpY2F0aW9ucyB0byBzd2l0Y2ggc2V0dXAgYW5kIGNvbmR1aXQgc3RhdGUgY2hhbmdlIGxvZ2ljLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIGRldmljZSB0cmVlIGFuZCB0aGUgc3dpdGNoIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgdGhlIERTQSBjb3JlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ1OjU0LjQ4NjE0NDE4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk4OTQ1OTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWNmMThlYzBiOTRiZTFjMDFmZjU5NDUyMGNkMTVjNGIyM2I0YzVmNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxMSAwNzo0NTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tZWRpYXRlayxtdDc1MzAueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sXFxuaW5kZXggODE1YTkwODA4OTAxMDQuLjkwYjM1ODJiNzYxOTA5IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWxcXG5AQCAtMTAwLDYgKzEwMCwxMCBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAgICAgQnVpbHQtaW4gc3dpdGNoIG9mIHRoZSBBaXJvaGEgQU43NTgzIFNvQ1xcbiAgICAgICAgIGNvbnN0OiBhaXJvaGEsYW43NTgzLXN3aXRjaFxcbiBcXG4rICAgICAgLSBkZXNjcmlwdGlvbjpcXG4rICAgICAgICAgIEJ1aWx0LWluIHN3aXRjaCBvZiB0aGUgRWNvTmV0IEVONzUyOCBTb0NcXG4rICAgICAgICBjb25zdDogZWNvbmV0LGVuNzUyOC1zd2l0Y2hcXG4rXFxuICAgcmVnOlxcbiAgICAgbWF4SXRlbXM6IDFcXG4gXFxuQEAgLTMxOCw2ICszMjIsNyBAQCBhbGxPZjpcXG4gICAgICAgICAgICAgLSBtZWRpYXRlayxtdDc5ODgtc3dpdGNoXFxuICAgICAgICAgICAgIC0gYWlyb2hhLGVuNzU4MS1zd2l0Y2hcXG4gICAgICAgICAgICAgLSBhaXJvaGEsYW43NTgzLXN3aXRjaFxcbisgICAgICAgICAgICAtIGVjb25ldCxlbjc1Mjgtc3dpdGNoXFxuICAgICB0aGVuOlxcbiAgICAgICAkcmVmOiBcXFwiIy8kZGVmcy9idWlsdGluLWRzYS1wb3J0XFxcIlxcbiAgICAgICBwcm9wZXJ0aWVzOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXFxuaW5kZXggMWRjOGI5M2ZiNTFhMTMuLjEwNjU2NzFiY2RkMTMyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmNcXG5AQCAtMTMsNiArMTMsNyBAQFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc5ODhfb2ZfbWF0Y2hbXSA9IHtcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhaXJvaGEsYW43NTgzLXN3aXRjaFxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9BTjc1ODNdLCB9LFxcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcImFpcm9oYSxlbjc1ODEtc3dpdGNoXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX0VONzU4MV0sIH0sXFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwiZWNvbmV0LGVuNzUyOC1zd2l0Y2hcXFwiLCAuZGF0YSA9IFxcdTAwMjZtdDc1M3hfdGFibGVbSURfRU43NTI4XSwgfSxcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtZWRpYXRlayxtdDc5ODgtc3dpdGNoXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzk4OF0sIH0sXFxuIFxcdHsgLyogc2VudGluZWwgKi8gfSxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXFxuaW5kZXggM2MyYTMwMjliMTBjZmIuLjJhZWNhZDc3YWY5YWQ2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbkBAIC0yOTEyLDYgKzI5MTIsMzAgQEAgc3RhdGljIHZvaWQgZW43NTgxX21hY19wb3J0X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZW43NTI4X21hY19wb3J0X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuK1xcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuK3tcXG4rXFx0c3dpdGNoIChwb3J0KSB7XFxuK1xcdC8qIFBvcnRzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gc3dpdGNoIFBIWXMuIFRoZXJlIGlzIG5vIE1JSSBwaW5vdXQuICovXFxuK1xcdGNhc2UgMSAuLi4gNDpcXG4rXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcXG4rXFx0XFx0XFx0ICBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFxuK1xcdFxcdGNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDBGRDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcbitcXHQvKiBQb3J0IDYgaXMgY29ubmVjdGVkIHRvIFNvQydzIEdNQUMgYXQgMTAwMCBNYnBzIGZ1bGwgZHVwbGV4LiBUaGVyZVxcbitcXHQgKiBpcyBubyBNSUkgcGlub3V0LlxcbitcXHQgKi9cXG4rXFx0Y2FzZSA2OlxcbitcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbitcXHRcXHRcXHQgIGNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXG4rXFx0XFx0Y29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkXFxuIG10NzUzMF9tYWNfY29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLFxcbiBcXHRcXHQgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuQEAgLTMyNTQsNyArMzI3OCw4IEBAIG10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuIFxcdCAqIGZvcndhcmRlZCB0byB0aGUgbnVtZXJpY2FsbHkgc21hbGxlc3QgQ1BVIHBvcnQgd2hvc2UgY29uZHVpdFxcbiBcXHQgKiBpbnRlcmZhY2UgaXMgdXAuXFxuIFxcdCAqL1xcbi1cXHRpZiAocHJpdi1cXHUwMDNlaWQgIT0gSURfTVQ3NTMwIFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWlkICE9IElEX01UNzYyMSlcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWlkICE9IElEX01UNzUzMCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2VpZCAhPSBJRF9NVDc2MjEgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHByaXYtXFx1MDAzZWlkICE9IElEX0VONzUyOClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0bWFzayA9IEJJVChjcHVfZHAtXFx1MDAzZWluZGV4KTtcXG5AQCAtMzMxOSw5ICszMzQ0LDE3IEBAIHN0YXRpYyBpbnQgbXQ3NTN4X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcdH1cXG4gfVxcbiBcXG4rLyogVGhlIEVONzUyOCBMQU4gcG9ydHMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaFxcbisgKiBwb3J0cyAxLi40KSBvbiB0aGUgc3dpdGNoIGludGVybmFsIE1ESU8gYnVzLCByZWFjaGFibGUgb25seSB0aHJvdWdoIHRoZSBQSFlcXG4rICogaW5kaXJlY3QgYWNjZXNzIHJlZ2lzdGVycy4gVGhlcmUgaXMgbm8gbWRpb2RldiB0byBkZXJpdmUgdGhlIGFkZHJlc3NlcyBmcm9tLlxcbisgKi9cXG4rI2RlZmluZSBFTjc1MjhfR1BIWV9CQVNFXFx0XFx0OVxcbisjZGVmaW5lIEVONzUyOF9OVU1fR1BIWVNcXHRcXHQ0XFxuK1xcbiBzdGF0aWMgaW50IG10Nzk4OF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIHtcXG4gXFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuK1xcdGludCBpO1xcbiBcXG4gXFx0LyogUmVzZXQgdGhlIHN3aXRjaCAqL1xcbiBcXHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVxcdTAwM2Vyc3RjKTtcXG5AQCAtMzM0Miw2ICszMzc1LDE3IEBAIHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4gXFx0LyogUmVzZXQgdGhlIHN3aXRjaCBQSFlzICovXFxuIFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfU1lTX0NUUkwsIFNZU19DVFJMX1BIWV9SU1QpO1xcbiBcXG4rXFx0LyogVGhlIEVONzUyOCBMQU4gR1BIWXMgYWR2ZXJ0aXNlIEVFRSBieSBkZWZhdWx0LCBidXQgbmVnb3RpYXRpbmcgRUVFXFxuK1xcdCAqIHdpdGggY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhblxcbitcXHQgKiB1bnN0YWJsZSBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIERpc2FibGUgRUVFIGFkdmVydGlzZW1lbnQgb25cXG4rXFx0ICogdGhlbS5cXG4rXFx0ICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2VpZCA9PSBJRF9FTjc1MjgpXFxuK1xcdFxcdGZvciAoaSA9IEVONzUyOF9HUEhZX0JBU0U7XFxuK1xcdFxcdCAgICAgaSBcXHUwMDNjIEVONzUyOF9HUEhZX0JBU0UgKyBFTjc1MjhfTlVNX0dQSFlTOyBpKyspXFxuK1xcdFxcdFxcdG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBpLCBNRElPX01NRF9BTixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IE1ESU9fQU5fRUVFX0FEViwgMCk7XFxuK1xcbiBcXHRyZXR1cm4gbXQ3NTMxX3NldHVwX2NvbW1vbihkcyk7XFxuIH1cXG4gXFxuQEAgLTM0NTksNiArMzUwMywxNiBAQCBjb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7XFxuIFxcdFxcdC5waHlfd3JpdGVfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlLFxcbiBcXHRcXHQubWFjX3BvcnRfZ2V0X2NhcHMgPSBlbjc1ODFfbWFjX3BvcnRfZ2V0X2NhcHMsXFxuIFxcdH0sXFxuK1xcdFtJRF9FTjc1MjhdID0ge1xcbitcXHRcXHQuaWQgPSBJRF9FTjc1MjgsXFxuK1xcdFxcdC5wY3Nfb3BzID0gXFx1MDAyNm10NzUzMF9wY3Nfb3BzLFxcbitcXHRcXHQuc3dfc2V0dXAgPSBtdDc5ODhfc2V0dXAsXFxuK1xcdFxcdC5waHlfcmVhZF9jMjIgPSBtdDc1MzFfaW5kX2MyMl9waHlfcmVhZCxcXG4rXFx0XFx0LnBoeV93cml0ZV9jMjIgPSBtdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUsXFxuK1xcdFxcdC5waHlfcmVhZF9jNDUgPSBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZCxcXG4rXFx0XFx0LnBoeV93cml0ZV9jNDUgPSBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUsXFxuK1xcdFxcdC5tYWNfcG9ydF9nZXRfY2FwcyA9IGVuNzUyOF9tYWNfcG9ydF9nZXRfY2FwcyxcXG4rXFx0fSxcXG4gfTtcXG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTN4X3RhYmxlKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaFxcbmluZGV4IGRkMzNiMGRmMzQxOWUzLi41ZjFlODQxZjQyYzBlZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmhcXG5AQCAtMjEsNiArMjEsNyBAQCBlbnVtIG10NzUzeF9pZCB7XFxuIFxcdElEX01UNzk4OCA9IDMsXFxuIFxcdElEX0VONzU4MSA9IDQsXFxuIFxcdElEX0FONzU4MyA9IDUsXFxuK1xcdElEX0VONzUyOCA9IDYsXFxuIH07XFxuIFxcbiAjZGVmaW5lXFx0TlVNX1RSR01JSV9DVFJMXFx0XFx0XFx0NVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NTo1NC44ODU5MzY1MTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNzg4MDUxODczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRFNBX01UNzUzMFwiLFxuICAgIFwiTkVUX0RTQV9NVDc1MzBfTU1JT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc1wiLFxuICAgIFwibXQ3OTg4X3NldHVwXCIsXG4gICAgXCJtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBFY29OZXQgRU43NTI4IFNvQyBidWlsdC1pbiBzd2l0Y2ggdG8gdGhlIE1lZGlhdGVrIE1UNzUzMCBEU0EgZHJpdmVyLiBUaGlzIGluY2x1ZGVzIGEgbmV3IGZ1bmN0aW9uIGZvciBnZXR0aW5nIE1BQyBwb3J0IGNhcGFiaWxpdGllcyBhbmQgbW9kaWZpY2F0aW9ucyB0byBzd2l0Y2ggc2V0dXAgYW5kIGNvbmR1aXQgc3RhdGUgY2hhbmdlIGxvZ2ljLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIGRldmljZSB0cmVlIGFuZCB0aGUgc3dpdGNoIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgdGhlIERTQSBjb3JlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWNmMThlYzBiOTRiZTFjMDFmZjU5NDUyMGNkMTVjNGIyM2I0YzVmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDA3OjQ1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tZWRpYXRlayxtdDc1MzAueWFtbFxuaW5kZXggODE1YTkwODA4OTAxMDQuLjkwYjM1ODJiNzYxOTA5IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sXG5AQCAtMTAwLDYgKzEwMCwxMCBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICBCdWlsdC1pbiBzd2l0Y2ggb2YgdGhlIEFpcm9oYSBBTjc1ODMgU29DXG4gICAgICAgICBjb25zdDogYWlyb2hhLGFuNzU4My1zd2l0Y2hcbiBcbisgICAgICAtIGRlc2NyaXB0aW9uOlxuKyAgICAgICAgICBCdWlsdC1pbiBzd2l0Y2ggb2YgdGhlIEVjb05ldCBFTjc1MjggU29DXG4rICAgICAgICBjb25zdDogZWNvbmV0LGVuNzUyOC1zd2l0Y2hcbitcbiAgIHJlZzpcbiAgICAgbWF4SXRlbXM6IDFcbiBcbkBAIC0zMTgsNiArMzIyLDcgQEAgYWxsT2Y6XG4gICAgICAgICAgICAgLSBtZWRpYXRlayxtdDc5ODgtc3dpdGNoXG4gICAgICAgICAgICAgLSBhaXJvaGEsZW43NTgxLXN3aXRjaFxuICAgICAgICAgICAgIC0gYWlyb2hhLGFuNzU4My1zd2l0Y2hcbisgICAgICAgICAgICAtIGVjb25ldCxlbjc1Mjgtc3dpdGNoXG4gICAgIHRoZW46XG4gICAgICAgJHJlZjogXCIjLyRkZWZzL2J1aWx0aW4tZHNhLXBvcnRcIlxuICAgICAgIHByb3BlcnRpZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY1xuaW5kZXggMWRjOGI5M2ZiNTFhMTMuLjEwNjU2NzFiY2RkMTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXG5AQCAtMTMsNiArMTMsNyBAQFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10Nzk4OF9vZl9tYXRjaFtdID0ge1xuIFx0eyAuY29tcGF0aWJsZSA9IFwiYWlyb2hhLGFuNzU4My1zd2l0Y2hcIiwgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfQU43NTgzXSwgfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcImFpcm9oYSxlbjc1ODEtc3dpdGNoXCIsIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX0VONzU4MV0sIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJlY29uZXQsZW43NTI4LXN3aXRjaFwiLCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9FTjc1MjhdLCB9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwibWVkaWF0ZWssbXQ3OTg4LXN3aXRjaFwiLCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc5ODhdLCB9LFxuIFx0eyAvKiBzZW50aW5lbCAqLyB9LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5pbmRleCAzYzJhMzAyOWIxMGNmYi4uMmFlY2FkNzdhZjlhZDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuQEAgLTI5MTIsNiArMjkxMiwzMCBAQCBzdGF0aWMgdm9pZCBlbjc1ODFfbWFjX3BvcnRfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgZW43NTI4X21hY19wb3J0X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4rXHRcdFx0XHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuK3tcbitcdHN3aXRjaCAocG9ydCkge1xuK1x0LyogUG9ydHMgd2hpY2ggYXJlIGNvbm5lY3RlZCB0byBzd2l0Y2ggUEhZcy4gVGhlcmUgaXMgbm8gTUlJIHBpbm91dC4gKi9cbitcdGNhc2UgMSAuLi4gNDpcbitcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbitcdFx0XHQgIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXG4rXHRcdGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMEZEO1xuK1x0XHRicmVhaztcbitcbitcdC8qIFBvcnQgNiBpcyBjb25uZWN0ZWQgdG8gU29DJ3MgR01BQyBhdCAxMDAwIE1icHMgZnVsbCBkdXBsZXguIFRoZXJlXG4rXHQgKiBpcyBubyBNSUkgcGlub3V0LlxuK1x0ICovXG4rXHRjYXNlIDY6XG4rXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4rXHRcdFx0ICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1xuK1x0XHRjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xuK1x0XHRicmVhaztcbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWRcbiBtdDc1MzBfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcbiBcdFx0ICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuQEAgLTMyNTQsNyArMzI3OCw4IEBAIG10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4gXHQgKiBmb3J3YXJkZWQgdG8gdGhlIG51bWVyaWNhbGx5IHNtYWxsZXN0IENQVSBwb3J0IHdob3NlIGNvbmR1aXRcbiBcdCAqIGludGVyZmFjZSBpcyB1cC5cbiBcdCAqL1xuLVx0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfTVQ3NTMwIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWlkICE9IElEX01UNzYyMSlcbitcdGlmIChwcml2LVx1MDAzZWlkICE9IElEX01UNzUzMCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2VpZCAhPSBJRF9NVDc2MjEgXHUwMDI2XHUwMDI2XG4rXHQgICAgcHJpdi1cdTAwM2VpZCAhPSBJRF9FTjc1MjgpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1hc2sgPSBCSVQoY3B1X2RwLVx1MDAzZWluZGV4KTtcbkBAIC0zMzE5LDkgKzMzNDQsMTcgQEAgc3RhdGljIGludCBtdDc1M3hfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdH1cbiB9XG4gXG4rLyogVGhlIEVONzUyOCBMQU4gcG9ydHMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaFxuKyAqIHBvcnRzIDEuLjQpIG9uIHRoZSBzd2l0Y2ggaW50ZXJuYWwgTURJTyBidXMsIHJlYWNoYWJsZSBvbmx5IHRocm91Z2ggdGhlIFBIWVxuKyAqIGluZGlyZWN0IGFjY2VzcyByZWdpc3RlcnMuIFRoZXJlIGlzIG5vIG1kaW9kZXYgdG8gZGVyaXZlIHRoZSBhZGRyZXNzZXMgZnJvbS5cbisgKi9cbisjZGVmaW5lIEVONzUyOF9HUEhZX0JBU0VcdFx0OVxuKyNkZWZpbmUgRU43NTI4X05VTV9HUEhZU1x0XHQ0XG4rXG4gc3RhdGljIGludCBtdDc5ODhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIHtcbiBcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4rXHRpbnQgaTtcbiBcbiBcdC8qIFJlc2V0IHRoZSBzd2l0Y2ggKi9cbiBcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtXHUwMDNlcnN0Yyk7XG5AQCAtMzM0Miw2ICszMzc1LDE3IEBAIHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcdC8qIFJlc2V0IHRoZSBzd2l0Y2ggUEhZcyAqL1xuIFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9TWVNfQ1RSTCwgU1lTX0NUUkxfUEhZX1JTVCk7XG4gXG4rXHQvKiBUaGUgRU43NTI4IExBTiBHUEhZcyBhZHZlcnRpc2UgRUVFIGJ5IGRlZmF1bHQsIGJ1dCBuZWdvdGlhdGluZyBFRUVcbitcdCAqIHdpdGggY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhblxuK1x0ICogdW5zdGFibGUgbGluayB3aXRoIGRyb3BwZWQgZnJhbWVzLiBEaXNhYmxlIEVFRSBhZHZlcnRpc2VtZW50IG9uXG4rXHQgKiB0aGVtLlxuK1x0ICovXG4rXHRpZiAocHJpdi1cdTAwM2VpZCA9PSBJRF9FTjc1MjgpXG4rXHRcdGZvciAoaSA9IEVONzUyOF9HUEhZX0JBU0U7XG4rXHRcdCAgICAgaSBcdTAwM2MgRU43NTI4X0dQSFlfQkFTRSArIEVONzUyOF9OVU1fR1BIWVM7IGkrKylcbitcdFx0XHRtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUocHJpdiwgaSwgTURJT19NTURfQU4sXG4rXHRcdFx0XHRcdFx0IE1ESU9fQU5fRUVFX0FEViwgMCk7XG4rXG4gXHRyZXR1cm4gbXQ3NTMxX3NldHVwX2NvbW1vbihkcyk7XG4gfVxuIFxuQEAgLTM0NTksNiArMzUwMywxNiBAQCBjb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7XG4gXHRcdC5waHlfd3JpdGVfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlLFxuIFx0XHQubWFjX3BvcnRfZ2V0X2NhcHMgPSBlbjc1ODFfbWFjX3BvcnRfZ2V0X2NhcHMsXG4gXHR9LFxuK1x0W0lEX0VONzUyOF0gPSB7XG4rXHRcdC5pZCA9IElEX0VONzUyOCxcbitcdFx0LnBjc19vcHMgPSBcdTAwMjZtdDc1MzBfcGNzX29wcyxcbitcdFx0LnN3X3NldHVwID0gbXQ3OTg4X3NldHVwLFxuK1x0XHQucGh5X3JlYWRfYzIyID0gbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQsXG4rXHRcdC5waHlfd3JpdGVfYzIyID0gbXQ3NTMxX2luZF9jMjJfcGh5X3dyaXRlLFxuK1x0XHQucGh5X3JlYWRfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQsXG4rXHRcdC5waHlfd3JpdGVfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlLFxuK1x0XHQubWFjX3BvcnRfZ2V0X2NhcHMgPSBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHMsXG4rXHR9LFxuIH07XG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTN4X3RhYmxlKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmggYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmhcbmluZGV4IGRkMzNiMGRmMzQxOWUzLi41ZjFlODQxZjQyYzBlZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oXG5AQCAtMjEsNiArMjEsNyBAQCBlbnVtIG10NzUzeF9pZCB7XG4gXHRJRF9NVDc5ODggPSAzLFxuIFx0SURfRU43NTgxID0gNCxcbiBcdElEX0FONzU4MyA9IDUsXG4rXHRJRF9FTjc1MjggPSA2LFxuIH07XG4gXG4gI2RlZmluZVx0TlVNX1RSR01JSV9DVFJMXHRcdFx0NVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDU6NTQuODg1OTM4MDA1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE3NzM0MTk2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBhIE5ldHdvcmsgU3dpdGNoIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggU29DJ3MgYnVpbHQtaW4gc3dpdGNoIHRvIHRoZSBNZWRpYXRlayBNVDc1MzAgRFNBIGRyaXZlci4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlczogdGhlIERldmljZSBUcmVlIGJpbmRpbmdzLCB0aGUgTU1JTyBhbmQgY29yZSBkcml2ZXIgZmlsZXMsIGFuZCB0aGUgaGVhZGVyIGZpbGUuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBkZXZpY2Utc3BlY2lmaWMgbWF0Y2hpbmcsIGNhcGFiaWxpdGllcywgYW5kIHdvcmthcm91bmRzIGZvciB0aGlzIHBhcnRpY3VsYXIgc3dpdGNoLiBTcGVjaWZpY2FsbHksIEkgc2VlIGBlY29uZXQsZW43NTI4LXN3aXRjaGAgYmVpbmcgYWRkZWQsIGFsb25nIHdpdGggZnVuY3Rpb25zIGFuZCBpZGVudGlmaWVycyB0aGF0IHJlbGF0ZSB0byB0aGlzIG5ldyBoYXJkd2FyZS4gVGhlIHBhdGNoIGFsc28gaW5jbHVkZXMgYSB3b3JrYXJvdW5kIHRvIGRpc2FibGUgRUVFIGFkdmVydGlzZW1lbnQgb24gaXRzIEdQSFlzLlxuXG5Ob3csIGFzIGFuIGV4cGVydCwgbXkgcHJpbWFyeSB0aG91Z2h0IGlzLCBcIkNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCIgVGhpcyBpcyBhIERTQSBzd2l0Y2ggZHJpdmVyLCBzbyBpdCdzIGxpa2VseSBwcm9iZWQgdGhyb3VnaCB0aGUgRGV2aWNlIFRyZWUuIEkgaW1tZWRpYXRlbHkgdGhpbmsgb2YgUUVNVS4gQ2FuIEkgZW11bGF0ZSB0aGUgRU43NTI4IG9yIHRoZSBNVDc1MzAvTVQ3OTg4IGluIFFFTVU/IEFsbW9zdCBjZXJ0YWlubHkgbm90IOKAkyBJJ3ZlIG5ldmVyIGhlYXJkIG9mIHN1Y2ggc3BlY2lmaWMgZW11bGF0aW9uIGJlaW5nIGF2YWlsYWJsZS4gVGhlc2UgYXJlIHR5cGljYWxseSBsb3ctbGV2ZWwgaGFyZHdhcmUgZHJpdmVycy5cblxuSG93ZXZlciwgYSBnbGltbWVyIG9mIGhvcGUgYXJpc2VzOiBzeXprYWxsZXIuIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBhcmJpdHJhcnkgRGV2aWNlIFRyZWVzLiBUaGVvcmV0aWNhbGx5LCBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGluLCBpdCAqY291bGQqIGJlIHByb2JlZCBieSBzeXprYWxsZXIgaWYgdGhlIERUIG5vZGUgbWF0Y2hlcy4gVGhlIGNhdGNoPyBJdCdzIGFuIE1NSU8gZHJpdmVyLiBXaXRob3V0IHRoZSAqYWN0dWFsKiBoYXJkd2FyZSwgTU1JTyBhY2Nlc3NlcyBhcmUgZ29pbmcgdG8gYmUgcHJvYmxlbWF0aWMuIFRoZXknbGwgZWl0aGVyIGZhdWx0IGlmIHVubWFwcGVkIG9yIGp1c3QgcmV0dXJuIG1lYW5pbmdsZXNzIGRhdGEgaWYgbWFwcGVkIHRvIGR1bW15IG1lbW9yeS4gQWx0aG91Z2ggc3l6a2FsbGVyICpkb2VzKiBtYXAgc29tZSBkdW1teSBtZW1vcnkgZm9yIE1NSU8sIGl0IGRvZXNuJ3QgZ2l2ZSBtZSBtdWNoIGhvcGUgdGhhdCB0aGUgZHJpdmVyIHdpbGwgYmVoYXZlIGluIGEgbWVhbmluZ2Z1bCB3YXkuXG5cbkJ1dCwgc3l6a2FsbGVyICpkb2VzKiBmdXp6IGRldmljZSB0cmVlcyBhbmQgKmNhbiogcHJvYmUgZHJpdmVycy4gU28gbGV0J3MgY2hlY2sgaWYgaXQncyB3b3J0aCBmdXp6aW5nIVxuXG5NeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyB0aGF0IGp1c3QgZG8gTU1JTyB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiBvciB2aXJ0dWFsIGludGVyZmFjZXMgYXJlIHVzdWFsbHkgKm5vdCogd29ydGggZnV6emluZy4gVGhleSB0ZW5kIHRvIGp1c3QgY3Jhc2ggb3IgZmFpbCBlYXJseSBkdXJpbmcgdGhlIHByb2JlIGR1ZSB0byB0aGUgaGFyZHdhcmUgbm90IHJlc3BvbmRpbmcsIGFuZCB0aGV5IHJhcmVseSBleHBvc2UgaW50ZXJlc3RpbmcsIHNvZnR3YXJlLXJlYWNoYWJsZSBhdHRhY2sgc3VyZmFjZXMuIFRoZXNlIHR5cGVzIG9mIGRyaXZlcnMgYXJlIGxpa2UgVVNCIGdhZGdldCwgbWFjODAyMTFfaHdzaW0gb3IgdmhjaSwgdGhhdCBvZmZlciBhbiBlbnRyeSBwb2ludCB0byB0aGUgc3lzdGVtIGFuZCBoYXZlIGdyZWF0IHBvdGVudGlhbCB0byBiZSBmdXp6ZWQuXG5cbldhaXQsIGxvb2tpbmcgY2xvc2VyIGF0IHRoZSBwcm9tcHQgZm9yIHRoZSB0YXNrLiBJdCBzcGVjaWZpY2FsbHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgKmV2ZW4qIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEl0IHNlZW1zIHByZXR0eSBjbGVhci4gTXkgaW5zdGluY3RzIGFyZSByaWdodC5cblxuU28sIHRoZSBgbXQ3NTMwYCBzd2l0Y2ggZHJpdmVyLi4uaXMgaXQgcmVhY2hhYmxlIGluIFFFTVU/IEkgZG91YnQgaXQsIGJ1dCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgZG9uJ3QgbmVlZCB0byBsb29rIGF0IFFFTVUgc291cmNlIGNvZGUuIEkga25vdyBpdCdzIGEgaGFyZHdhcmUgZHJpdmVyLlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGRyaXZlciBiZWluZyB0aWdodGx5IGNvdXBsZWQgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgaW5hY2Nlc3NpYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIHRoYXQgdGhpcyBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTM2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MDYuNjU5MzU5ODUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Nzc0MzgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIwMTcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXFx0Kz0ga3M4OTk1Lm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzApXFx0Kz0gbXQ3NTMwLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTURJTykgKz0gbXQ3NTMwLW1kaW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMF9NTUlPKSArPSBtdDc1MzAtbW1pby5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX05FVF9EU0FfTVY4OEU2MDYwKSArPSBtdjg4ZTYwNjAub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxOTptdDc1MzBfcmVnbWFwX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjAte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjItXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTQzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NDptdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNDUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjQ2OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNDctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTY2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6Njc6bXQ3NTMwX21kaW9fcmVnbWFwX2xvY2sodm9pZCAqbWRpb19sb2NrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTcyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NzM6bXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jayh2b2lkICptZGlvX2xvY2spXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6Nzg6c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYnVzIG10NzUzMF9yZWdtYXBfYnVzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc5OlxcdC5yZWdfd3JpdGUgPSBtdDc1MzBfcmVnbWFwX3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjgwOlxcdC5yZWdfcmVhZCA9IG10NzUzMF9yZWdtYXBfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04MS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9ODM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg0Om10NzUzMV9jcmVhdGVfc2dtaWkoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwNS1cXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbWF4X3JlZ2lzdGVyID0gMHgxN2M7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTA2OlxcdFxcdG10NzUzMV9wY3NfY29uZmlnW2ldLVxcdTAwM2Vsb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX2xvY2s7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTA3OlxcdFxcdG10NzUzMV9wY3NfY29uZmlnW2ldLVxcdTAwM2V1bmxvY2sgPSBtdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwOC1cXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbG9ja19hcmcgPSBcXHUwMDI2cHJpdi1cXHUwMDNlYnVzLVxcdTAwM2VtZGlvX2xvY2s7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTA5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMDpcXHRcXHRyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0KHByaXYtXFx1MDAzZWRldiwgXFx1MDAyNm10NzUzMF9yZWdtYXBfYnVzLCBwcml2LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExMS1cXHRcXHRcXHRcXHRcXHQgIG10NzUzMV9wY3NfY29uZmlnW2ldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzE6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXQ3NTMwX29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTMyLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWVkaWF0ZWssbXQ3NjIxXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzYyMV0sIH0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTMzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWVkaWF0ZWssbXQ3NTMwXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzUzMF0sIH0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM0LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWVkaWF0ZWssbXQ3NTMxXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzUzMV0sIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzYtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXQ3NTMwX29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xNDc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0ODptdDc1MzBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE0OS17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTUwOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTEtXFx0c3RydWN0IGRldmljZV9ub2RlICpkbjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE2My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNjQ6XFx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMDM6XFx0cHJpdi1cXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDQtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlZ21hcF9jb25maWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjE0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE1Om10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIxNi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE3OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTgtXFx0aW50IHJldCA9IDAsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjMzOlxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIzOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMzk6c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDAte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI0MTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjUwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1MTpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTI6XFx0LnByb2JlICA9IG10NzUzMF9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTM6XFx0LnJlbW92ZSA9IG10NzUzMF9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU0OlxcdC5zaHV0ZG93biA9IG10NzUzMF9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNTUtXFx0Lm1kaW9kcnYuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NjpcXHRcXHQubmFtZSA9IFxcXCJtdDc1MzAtbWRpb1xcXCIsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU3OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG10NzUzMF9vZl9tYXRjaCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNTgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2MC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjE6bWRpb19tb2R1bGVfZHJpdmVyKG10NzUzMF9tZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMTAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6MTE6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzE9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzIte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjMzOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zNC1cXHR2b2lkIF9faW9tZW0gKmJhc2VfYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQ0OlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTY4PXN0YXRpYyB2b2lkIG10Nzk4OF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy02OS17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzA6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzItXFx0aWYgKHByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzM6XFx0XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9NzY9c3RhdGljIHZvaWQgbXQ3OTg4X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjc4OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9ODg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTg4X3BsYXRmb3JtX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTkyLVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6OTM6XFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1taW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTk0LVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4OF9vZl9tYXRjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMT1zdGF0aWMgc3RydWN0IG10NzUzeF9wY3MgKnBjc190b19tdDc1M3hfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM2LS8qIFN0cmluZywgb2Zmc2V0LCBhbmQgcmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyBpZiBkaWZmZXJlbnQgZnJvbSA0IGJ5dGVzICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjIG10NzUzMF9taWJbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXFx0TUlCX0RFU0MoMSwgTVQ3NTMwX1BPUlRfTUlCX1RYX0RST1AsIFxcXCJUeERyb3BcXFwiKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzptdDc1MzBfbXV0ZXhfdW5sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTYzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0OmNvcmVfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6OTY6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwMDpjb3JlX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA2OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMzg6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDE9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQyOmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDc9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ4OmNvcmVfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1NDptdDc1MzBfbWlpX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjEtXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2MjpcXHRcXHRcXHRcXFwiZmFpbGVkIHRvIHdyaXRlIG10NzUzMCByZWdpc3RlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjc9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNjg6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNzYtXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE3NzpcXHRcXHRcXHRcXFwiZmFpbGVkIHRvIHJlYWQgbXQ3NTMwIHJlZ2lzdGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTc4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE4ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODU6bXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTg2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTg3OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xODgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4OTpcXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTkwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTE6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xOTQ9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTU6X210NzUzMF91bmxvY2tlZF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk3OlxcdHJldHVybiBtdDc1MzBfbWlpX3JlYWQocC1cXHUwMDNlcHJpdiwgcC1cXHUwMDNlcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDA9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDE6X210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNTpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwLVxcdTAwM2Vwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDc6XFx0dmFsID0gbXQ3NTMwX21paV9yZWFkKHAtXFx1MDAzZXByaXYsIHAtXFx1MDAzZXJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA5OlxcdG10NzUzMF9tdXRleF91bmxvY2socC1cXHUwMDNlcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMTQ9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTU6bXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTc6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjE5LVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyMDpcXHRyZXR1cm4gX210NzUzMF9yZWFkKFxcdTAwMjZwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI0Om10NzUzMF9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjUtXFx0ICAgdTMyIG1hc2ssIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyNzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjMxOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNTptdDc1MzBfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM3OlxcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzOC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MTptdDc1MzBfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDIte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDM6XFx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQ2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ3Om10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1MC1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNTE6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTQtXFx0dmFsID0gQVRDX0JVU1kgfCBBVENfTUFUKDApIHwgY21kO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNTU6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEMsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3LVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIE1UNzUzMF9BVEMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNTg6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU5LVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjctXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2ODpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfQVRDKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY5LVxcdGlmICgoY21kID09IE1UNzUzMF9GREJfUkVBRCkgXFx1MDAyNlxcdTAwMjYgKHZhbCBcXHUwMDI2IEFUQ19JTlZBTElEKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNzg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjc5Om10NzUzMF9mZGJfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHN0cnVjdCBtdDc1MzBfZmRiICpmZGIpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjg2OlxcdFxcdHJlZ1tpXSA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9UU1JBMSArIChpICogNCkpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzA0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMwNTptdDc1MzBfZmRiX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTE2IHZpZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzA2LVxcdFxcdCB1OCBwb3J0X21hc2ssIGNvbnN0IHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzMwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzMTpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQTEgKyAoaSAqIDQpLCByZWdbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzItfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzNC0vKiBTZXQgdXAgc3dpdGNoIGNvcmUgY2xvY2sgZm9yIE1UNzUzMCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzU6c3RhdGljIHZvaWQgbXQ3NTMwX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mzc1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3NjptdDc1MzBfc2V0dXBfcG9ydDYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNzcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzg6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM3OS1cXHR1MzIgbmNwbzEsIHNzY19kZWx0YSwgeHRhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODQtXFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg1OlxcdFxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg2LVxcdFxcdFxcdCAgIFA2X0lOVEZfTU9ERSgwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTA6XFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLCBQNl9JTlRGX01PREUoMSkpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5MjpcXHR4dGFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX01UUkFQKSBcXHUwMDI2IE1UNzUzMF9YVEFMX01BU0s7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00Mjg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDI5Om10NzUzMV9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQzNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM2OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9DUkVWKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM3OlxcdHRvcF9zaWcgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfVE9QX1NJR19TUik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzODpcXHRod3N0cmFwID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX1RSQVApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzktXFx0aWYgKCh2YWwgXFx1MDAyNiBDSElQX1JFVl9NKSBcXHUwMDNlIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ2LVxcdC8qIFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ3OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0OC1cXHR2YWwgXFx1MDAyNj0gfkVOX0NPUkVQTEw7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0OTpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1MS1cXHQvKiBTdGVwIDI6IHN3aXRjaCB0byBYVEFMIG91dHB1dCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTI6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDUzLVxcdHZhbCB8PSBTV19DTEtTVztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU0OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU2OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTctXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX0VOO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTg6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1OS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYwLVxcdC8qIFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYxOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Mi1cXHR2YWwgfD0gU1dfUExMR1A7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MzpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2NS1cXHQvKiBTdGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjY6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Ny1cXHR2YWwgXFx1MDAyNj0gflJHX0NPUkVQTExfUE9TRElWX007XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2OC1cXHR2YWwgfD0gMiBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1BPU0RJVl9TO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Njk6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3MC1cXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzMtXFx0Y2FzZSBNVDc1MzFfWFRBTF9GU0VMXzI1TUhaOlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzQ6XFx0XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3NS1cXHRcXHR2YWwgXFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzYtXFx0XFx0dmFsIHw9IDB4MTQwMDAwIFxcdTAwM2NcXHUwMDNjIFJHX0NPUkVQTExfU0RNX1BDV19TO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Nzc6XFx0XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDc5LVxcdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF80ME1IWjpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDgwOlxcdFxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODEtXFx0XFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgyLVxcdFxcdHZhbCB8PSAweDE5MDAwMCBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDgzOlxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg3LVxcdC8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBoaWdoICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4ODpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg5LVxcdHZhbCB8PSBSR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTA6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5MS1cXHQvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBYVEFMIGNsb2NrcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5NC1cXHQvKiBTdGVwIDU6IHNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBsb3cgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk1OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTYtXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTc6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk5LVxcdC8qIEVuYWJsZSAzMjVNIGNsb2NrIGZvciBTR01JSSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDA6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1I1LCAweGFkMDAwMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTAyLVxcdC8qIEVuYWJsZSAyNTBTU0MgY2xvY2sgZm9yIFJHTUlJICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMzpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjIsIDB4NGY0MDAwMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA1LVxcdC8qIFN0ZXAgNjogRW5hYmxlIE1UNzUzMSBQTEwgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA2OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDctXFx0dmFsIHw9IFJHX0NPUkVQTExfRU47XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwODpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTA6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTExLVxcdHZhbCB8PSBFTl9DT1JFUExMO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTI6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEzLVxcdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUxNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTc6bXQ3NTMwX21pYl9yZXNldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxOC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxOTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTIwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjE6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0ZMVVNIKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIyOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9BQ1RJVkFURSk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMy19XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyNC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTI1OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyOS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMwOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTMxLVxcdFxcdFxcdFxcdHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MzY6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNy1cXHRcXHRcXHQgICAgICAgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0MS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQyOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDMtXFx0XFx0XFx0XFx0aW50IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01NDg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDk6bXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTAtXFx0XFx0XFx0aW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUxLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTUyOlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTMtXFx0dTMyIHJlZywgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTU4OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU2MDpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjEtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjgtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Njk6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU3MTpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzItXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzktXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODA6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU4MjpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODMtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTAtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1OTE6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTkyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU5Nj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU5NzptdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTgtXFx0XFx0XFx0IGludCByZWdudW0sIHUxNiBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDA6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwMS1cXHR1MzIgdmFsLCByZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjA1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDY6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA4OlxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwOS1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxNi1cXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxNzpcXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjE5OlxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyMC1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyNy1cXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCBkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2Mjg6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYzMDpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MzEtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02Mzctb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2Mzg6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY0Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0NDptdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDY6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0Ny1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1MS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjUyOlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1NDpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTUtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY2NDpcXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjY2OlxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2Ny1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY3NC1vdXQ6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY3NTpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjgwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjgxOm10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODItXFx0XFx0XFx0IHUxNiBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2ODQ6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4NS1cXHRpbnQgcmV0O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NjowNi44MjcxMTIyMDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDA4OTEwNDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0aCB0byBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhpcyBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAgZnVuY3Rpb24gZ2V0cyBleGVjdXRlZCwgcGFydGljdWxhcmx5IGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSXQgbG9va3MgbGlrZSB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSB0aHJvdWdoIGVpdGhlciBNRElPIG9yIE1NSU8uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBtdDc1MzAtbW1pby5jYCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkcml2ZXIgY2FsbGVkIGBtdDc5ODhfcGxhdGZvcm1fZHJpdmVyYC4gVGhlIGNydWNpYWwgc3RlcCBhcHBlYXJzIHRvIGJlIHRoYXQgdGhlIGBtdDc5ODhfcHJvYmVgIGZ1bmN0aW9uICpldmVudHVhbGx5KiBjYWxscyBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAuXG5cblRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gSSB0cmlnZ2VyIHRoaXMgd2l0aGluIFFFTVU/IEl0IHNlZW1zIHBsYXVzaWJsZS4gSWYgc3l6a2FsbGVyIGNyYWZ0cyBhIGRldmljZSB0cmVlIHRoYXQgaW5jbHVkZXMgdGhlIG5vZGUgcHJvcGVydHkgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYCwgdGhlIHBsYXRmb3JtIGRyaXZlciBzaG91bGQgcHJvYmUuIER1cmluZyB0aGlzIHByb2JlLCB0aGUgY29kZSBpcyBnb2luZyB0byBtYXAgdGhlIE1NSU8gcmVnaW9uIGFuZCwgY3J1Y2lhbGx5LCBjYWxsIGBtdDc1MzBfcHJvYmVfY29tbW9uYC4gVGhlbiwgdGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBkbyB0aGUgaW5pdGlhbGl6YXRpb24sIGFuZCByZWdpc3RlciBhIERTQSBzd2l0Y2guXG5cbk5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IHdoYXQgZG9lcyBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAgYWN0dWFsbHkgKmRvKj8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gdG8gc2VlIGlmIGl0J3MgcmVhY2hhYmxlIGFuZCBpZiBpdCdzIGRvaW5nIHdoYXQgSSBleHBlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MjU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjEyLjIzNjAyNDQwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTMzNTE5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBfcHJvYmVfY29tbW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTQ4PW10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY0OlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz0zMT1tdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQ0OlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zNTE5PWludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNTIwOm10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTUwLX1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzU1MTpFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzU1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaD05NDE9c3RhdGljIGlubGluZSB2b2lkIElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmg6OTQ4OmludCBtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0OS12b2lkIG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjEyLjI5NzM2NDA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ1MTk0MzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3NTMwIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzIE1UNzUzMCBkcml2ZXIgY29kZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgYG10NzUzMF9wcm9iZV9jb21tb25gIHdpdGhpbiBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBmaXJzdCBwbGFjZSBJIHN0YXJ0IHdoZW4gZGVidWdnaW5nIG9yIHVuZGVyc3RhbmRpbmcgYSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdtIGFzc3VtaW5nIHRoaXMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgdGhlIGRldmljZSBwcm9iaW5nIHByb2Nlc3MsIGFuZCB0aHVzIHdoZXJlIHRoZSBpbml0aWFsIGRldmljZSBzZXR1cCBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGxpa2VseSBzdGVwcyBwZXJmb3JtZWQgdGhlcmU6IGRldGVybWluaW5nIHRoZSBkZXZpY2UncyBoYXJkd2FyZSwgcmVxdWVzdGluZyB0aGUgY29ycmVjdCBjbG9ja3MsIG1heWJlIHNldHRpbmcgdXAgdGhlIGludGVycnVwdCBsaW5lcyBhbmQgSS9PIG1lbW9yeSByZWdpb25zLiBJIGFsc28gbmVlZCB0byBzZWUgaG93IHRoZSBkc2EgZHJpdmVyIGlzIHdvcmtpbmcgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIGRldmljZS4gSSBhbnRpY2lwYXRlIGEgZmFpciBhbW91bnQgb2YgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcmVnaXN0ZXIgYWNjZXNzIGluaXRpYWxpemF0aW9uLCBhbmQgcHJvYmFibHkgc29tZSBlYXJseSBQSFkgY29uZmlndXJhdGlvbiBjYWxscyB0byBnZXQgdGhpcyBjaGlwIHVwIGFuZCBydW5uaW5nLiBMZXQncyBzZWUgaG93IHRoZXkgaGFuZGxlIGVycm9yIGNoZWNraW5nIGFuZCB3aGF0IHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBvZiB0aGlzIHByb2JlIGxvb2tzIGxpa2UuIEhvcGVmdWxseSwgaXQncyB3ZWxsLWRvY3VtZW50ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzQwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MTYuNzQ5MzExMDc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTE5LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzUxOTpcXHRpbnRcXG4zNTIwOlxcdG10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbjM1MjE6XFx0e1xcbjM1MjI6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi1cXHUwMDNlZGV2O1xcbjM1MjM6XFx0XFxuMzUyNDpcXHRcXHRwcml2LVxcdTAwM2VkcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdi1cXHUwMDNlZHMpLCBHRlBfS0VSTkVMKTtcXG4zNTI1OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlZHMpXFxuMzUyNjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zNTI3OlxcdFxcbjM1Mjg6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZWRldiA9IGRldjtcXG4zNTI5OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VudW1fcG9ydHMgPSBNVDc1MzBfTlVNX1BPUlRTO1xcbjM1MzA6XFx0XFxuMzUzMTpcXHRcXHQvKiBHZXQgdGhlIGhhcmR3YXJlIGlkZW50aWZpZXIgZnJvbSB0aGUgZGV2aWNldHJlZSBub2RlLlxcbjM1MzI6XFx0XFx0ICogV2Ugd2lsbCBuZWVkIGl0IGZvciBzb21lIG9mIHRoZSBjbG9jayBhbmQgcmVndWxhdG9yIHNldHVwLlxcbjM1MzM6XFx0XFx0ICovXFxuMzUzNDpcXHRcXHRwcml2LVxcdTAwM2VpbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuMzUzNTpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWluZm8pXFxuMzUzNjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNTM3OlxcdFxcbjM1Mzg6XFx0XFx0cHJpdi1cXHUwMDNlaWQgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VpZDtcXG4zNTM5OlxcdFxcdHByaXYtXFx1MDAzZWRldiA9IGRldjtcXG4zNTQwOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4zNTQxOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XFxuMzU0MjpcXHRcXHRwcml2LVxcdTAwM2Vkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XFxuMzU0MzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbXV0ZXgpO1xcbjM1NDQ6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX2xvY2spO1xcbjM1NDU6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcXG4zNTQ2OlxcdFxcbjM1NDc6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgcHJpdik7XFxuMzU0ODpcXHRcXG4zNTQ5OlxcdFxcdHJldHVybiAwO1xcbjM1NTA6XFx0fVxcbjM1NTE6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3Byb2JlX2NvbW1vbik7XFxuMzU1MjpcXHRcXG4zNTUzOlxcdHZvaWRcXG4zNTU0OlxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4zNTU1OlxcdHtcXG4zNTU2OlxcdFxcdGlmIChwcml2LVxcdTAwM2VpcnFfZG9tYWluKVxcbjM1NTc6XFx0XFx0XFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XFxuMzU1ODpcXHRcXG4zNTU5OlxcdFxcdGRzYV91bnJlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuMzU2MDpcXHRcXG4zNTYxOlxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuMzU2MjpcXHR9XFxuMzU2MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcmVtb3ZlX2NvbW1vbik7XFxuMzU2NDpcXHRcXG4zNTY1OlxcdE1PRFVMRV9BVVRIT1IoXFxcIlNlYW4gV2FuZyBcXHUwMDNjc2Vhbi53YW5nQG1lZGlhdGVrLmNvbVxcdTAwM2VcXFwiKTtcXG4zNTY2OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiRHJpdmVyIGZvciBNZWRpYXRlayBNVDc1MzAgU3dpdGNoXFxcIik7XFxuMzU2NzpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjE2Ljc0OTQ1OTYyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTk1NjU0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlKipcblxuT2theSwgc28gbG9va2luZyBhdCBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAsIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEFsbCBpdCdzIGRvaW5nIGlzIGFsbG9jYXRpbmcgc29tZSBtZW1vcnkgYW5kIHNldHRpbmcgdXAgc29tZSBkYXRhIHN0cnVjdHVyZXMuIEl0J3Mgbm90IGFjdHVhbGx5IHRoZSBiaXQgd2hlcmUgdGhlIHN3aXRjaCBnZXRzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgRFNBIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBUaGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIHRoYXQgdml0YWwgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIGZ1bmN0aW9uIGNhbGxlZD8gVGltZSB0byBnbyBodW50aW5nLi4uXG5cbkxldCdzIHNlZSwgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGlzIGxvY2F0ZWQgaW4gYG10Nzk4OF9wcm9iZWAgd2l0aGluIHRoZSBgbXQ3NTMwLW1taW8uY2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGxvb2sgZm9yIHRoZSBzd2l0Y2ggcmVnaXN0cmF0aW9uIHRvIG9jY3VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQzNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MjAuNDY5MDI3NzE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMTpcXHRtdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gIDMyOlxcdHtcXG4gIDMzOlxcdFxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcXG4gIDM0OlxcdFxcdHZvaWQgX19pb21lbSAqYmFzZV9hZGRyO1xcbiAgMzU6XFx0XFx0aW50IHJldDtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0cHJpdiA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4gIDM4OlxcdFxcdGlmICghcHJpdilcXG4gIDM5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHRwcml2LVxcdTAwM2VidXMgPSBOVUxMO1xcbiAgNDI6XFx0XFx0cHJpdi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcXG4gIDQ1OlxcdFxcdGlmIChyZXQpXFxuICA0NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHRwcml2LVxcdTAwM2Vyc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBOVUxMKTtcXG4gIDQ5OlxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcnN0YykpIHtcXG4gIDUwOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkNvdWxkbid0IGdldCBvdXIgcmVzZXQgbGluZVxcXFxuXFxcIik7XFxuICA1MTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwcml2LVxcdTAwM2Vyc3RjKTtcXG4gIDUyOlxcdFxcdH1cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0YmFzZV9hZGRyID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xcbiAgNTU6XFx0XFx0aWYgKElTX0VSUihiYXNlX2FkZHIpKSB7XFxuICA1NjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJjYW5ub3QgcmVxdWVzdCBJL08gbWVtb3J5IHNwYWNlXFxcXG5cXFwiKTtcXG4gIDU3OlxcdFxcdFxcdHJldHVybiAtRU5YSU87XFxuICA1ODpcXHRcXHR9XFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBiYXNlX2FkZHIsXFxuICA2MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzd19yZWdtYXBfY29uZmlnKTtcXG4gIDYyOlxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVnbWFwKSlcXG4gIDYzOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZXJlZ21hcCk7XFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXFx1MDAzZWRzKTtcXG4gIDY2OlxcdH1cXG4gIDY3OlxcdFxcbiAgNjg6XFx0c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiAgNjk6XFx0e1xcbiAgNzA6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuICA3MTpcXHRcXG4gIDcyOlxcdFxcdGlmIChwcml2KVxcbiAgNzM6XFx0XFx0XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuICA3NDpcXHR9XFxuICA3NTpcXHRcXG4gIDc2OlxcdHN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiAgNzc6XFx0e1xcbiAgNzg6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuICA3OTpcXHRcXG4gIDgwOlxcdFxcdGlmICghcHJpdilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MjAuNDY5MTcxODM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjYwMTA5NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5ODggU3dpdGNoIFByb2JlKipcblxuT2theSwgc28gYG10Nzk4OF9wcm9iZWAgY2FsbHMgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIOKAkyB0aGF0J3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LiBSaWdodCwgYW5kIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCB0aGVuIHRha2VzIG92ZXIsIGluaXRpYXRpbmcgdGhlIHN3aXRjaCdzIHNldHVwIGZ1bmN0aW9ucy4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBiZWNhdXNlIHRob3NlIHNldHVwIGZ1bmN0aW9ucyBhcmUgaW5ldml0YWJseSBnb2luZyB0byBpbnZvbHZlIGhhcmR3YXJlIGFjY2Vzc2VzLCBwb2tpbmcgYXQgdGhlIE1NSU8gcmVnaW9ucy4gTm93LCB0aGUgYmlnIHF1ZXN0aW9uIGlzLCB3aGF0IGhhcHBlbnMgaWYgdGhlcmUncyAqbm8qIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PyBTcGVjaWZpY2FsbHksIGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcgbGlrZSB3ZSBkbywgd2l0aCBubyBhY3R1YWwgc3dpdGNoIHByZXNlbnQ/XG5cblN5emthbGxlciwgaW4gaXRzIGJyaWxsaWFuY2UsIHByb3ZpZGVzIHRoZXNlIGZha2UgTU1JTyByZWdpb25zLCB1c3VhbGx5IGZpbGxlZCB3aXRoIGVpdGhlciB6ZXJvZXMgb3Igb25lcy4gV2lsbCB0aGUgcHJvYmUgc3VjY2VlZCBpbiB0aGlzIHNjZW5hcmlvPyBJIG5lZWQgdG8gbG9vayBhdCBgbXQ3OTg4X3NldHVwYCDigJMgdGhhdCdzIHRoZSBzZXR1cCBmdW5jdGlvbiBzcGVjaWZpYyB0byBgSURfRU43NTI4YCwgdGhhdCB3aWxsIGdpdmUgbWUgdGhlIGFuc3dlci4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgYmVpbmcgcmVhZCBhbmQgd3JpdHRlbiBhbmQgaWYgdGhlIGVycm9yIGhhbmRsaW5nIGlzIHJvYnVzdCBlbm91Z2guIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIHRoZSBwcm9iaW5nIHdpbGwgZmFpbCBvciB3aGV0aGVyIHdlIHdpbGwgaGF2ZSBhIGZhbHNlIHBvc2l0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQxNCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjI1LjYzNTE4NTYzNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzNDcsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzNDc6XFx0LyogVGhlIEVONzUyOCBMQU4gcG9ydHMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaFxcbjMzNDg6XFx0ICogcG9ydHMgMS4uNCkgb24gdGhlIHN3aXRjaCBpbnRlcm5hbCBNRElPIGJ1cywgcmVhY2hhYmxlIG9ubHkgdGhyb3VnaCB0aGUgUEhZXFxuMzM0OTpcXHQgKiBpbmRpcmVjdCBhY2Nlc3MgcmVnaXN0ZXJzLiBUaGVyZSBpcyBubyBtZGlvZGV2IHRvIGRlcml2ZSB0aGUgYWRkcmVzc2VzIGZyb20uXFxuMzM1MDpcXHQgKi9cXG4zMzUxOlxcdCNkZWZpbmUgRU43NTI4X0dQSFlfQkFTRVxcdFxcdDlcXG4zMzUyOlxcdCNkZWZpbmUgRU43NTI4X05VTV9HUEhZU1xcdFxcdDRcXG4zMzUzOlxcdFxcbjMzNTQ6XFx0c3RhdGljIGludCBtdDc5ODhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbjMzNTU6XFx0e1xcbjMzNTY6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuMzM1NzpcXHRcXHRpbnQgaTtcXG4zMzU4OlxcdFxcbjMzNTk6XFx0XFx0LyogUmVzZXQgdGhlIHN3aXRjaCAqL1xcbjMzNjA6XFx0XFx0cmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi1cXHUwMDNlcnN0Yyk7XFxuMzM2MTpcXHRcXHR1c2xlZXBfcmFuZ2UoMjAsIDUwKTtcXG4zMzYyOlxcdFxcdHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocHJpdi1cXHUwMDNlcnN0Yyk7XFxuMzM2MzpcXHRcXHR1c2xlZXBfcmFuZ2UoMjAsIDUwKTtcXG4zMzY0OlxcdFxcbjMzNjU6XFx0XFx0LyogQU43NTgzIHJlcXVpcmUgYWRkaXRpb25hbCB0d2VhayB0byBDT05OX0NGRyAqL1xcbjMzNjY6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlkID09IElEX0FONzU4MylcXG4zMzY3OlxcdFxcdFxcdG10NzUzMF9ybXcocHJpdiwgQU43NTgzX0dFUEhZX0NPTk5fQ0ZHLFxcbjMzNjg6XFx0XFx0XFx0XFx0ICAgQU43NTgzX0NTUl9EUEhZX0NLSU5fU0VMIHxcXG4zMzY5OlxcdFxcdFxcdFxcdCAgIEFONzU4M19DU1JfUEhZX0NPUkVfUkVHX0NMS19TRUwgfFxcbjMzNzA6XFx0XFx0XFx0XFx0ICAgQU43NTgzX0NTUl9FVEhFUl9BRkVfUFdELFxcbjMzNzE6XFx0XFx0XFx0XFx0ICAgQU43NTgzX0NTUl9EUEhZX0NLSU5fU0VMIHxcXG4zMzcyOlxcdFxcdFxcdFxcdCAgIEFONzU4M19DU1JfUEhZX0NPUkVfUkVHX0NMS19TRUwgfFxcbjMzNzM6XFx0XFx0XFx0XFx0ICAgRklFTERfUFJFUChBTjc1ODNfQ1NSX0VUSEVSX0FGRV9QV0QsIDApKTtcXG4zMzc0OlxcdFxcbjMzNzU6XFx0XFx0LyogUmVzZXQgdGhlIHN3aXRjaCBQSFlzICovXFxuMzM3NjpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1NZU19DVFJMLCBTWVNfQ1RSTF9QSFlfUlNUKTtcXG4zMzc3OlxcdFxcbjMzNzg6XFx0XFx0LyogVGhlIEVONzUyOCBMQU4gR1BIWXMgYWR2ZXJ0aXNlIEVFRSBieSBkZWZhdWx0LCBidXQgbmVnb3RpYXRpbmcgRUVFXFxuMzM3OTpcXHRcXHQgKiB3aXRoIGNvbW1vbiBsaW5rIHBhcnRuZXJzIChlLmcuIFJlYWx0ZWsgR2JFIE5JQ3MpIHJlc3VsdHMgaW4gYW5cXG4zMzgwOlxcdFxcdCAqIHVuc3RhYmxlIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvblxcbjMzODE6XFx0XFx0ICogdGhlbS5cXG4zMzgyOlxcdFxcdCAqL1xcbjMzODM6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlkID09IElEX0VONzUyOClcXG4zMzg0OlxcdFxcdFxcdGZvciAoaSA9IEVONzUyOF9HUEhZX0JBU0U7XFxuMzM4NTpcXHRcXHRcXHQgICAgIGkgXFx1MDAzYyBFTjc1MjhfR1BIWV9CQVNFICsgRU43NTI4X05VTV9HUEhZUzsgaSsrKVxcbjMzODY6XFx0XFx0XFx0XFx0bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHByaXYsIGksIE1ESU9fTU1EX0FOLFxcbjMzODc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IE1ESU9fQU5fRUVFX0FEViwgMCk7XFxuMzM4ODpcXHRcXG4zMzg5OlxcdFxcdHJldHVybiBtdDc1MzFfc2V0dXBfY29tbW9uKGRzKTtcXG4zMzkwOlxcdH1cXG4zMzkxOlxcdFxcbjMzOTI6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBtdDc1MzBfc3dpdGNoX29wcyA9IHtcXG4zMzkzOlxcdFxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBtdGtfZ2V0X3RhZ19wcm90b2NvbCxcXG4zMzk0OlxcdFxcdC5zZXR1cFxcdFxcdFxcdD0gbXQ3NTN4X3NldHVwLFxcbjMzOTU6XFx0XFx0LnRlYXJkb3duXFx0XFx0PSBtdDc1M3hfdGVhcmRvd24sXFxuMzM5NjpcXHRcXHQucHJlZmVycmVkX2RlZmF1bHRfbG9jYWxfY3B1X3BvcnQgPSBtdDc1M3hfcHJlZmVycmVkX2RlZmF1bHRfbG9jYWxfY3B1X3BvcnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjI1LjYzNTMzODU2NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTY5OTI1NDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gdGhpcyBlbWJlZGRlZCBzeXN0ZW1zIG5ldHdvcmtpbmcgY29udGV4dDpcblxuKipBbmFseXppbmcgdGhlIE1UNzk4OCBhbmQgTVQ3NTMxIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBtdDc5ODhfc2V0dXBgIGZ1bmN0aW9uLCBhbmQgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYG10NzUzMV9zZXR1cF9jb21tb24oZHMpYC4gVGhlICdkcycgbGlrZWx5IHJlZmVycyB0byBhIGRldmljZS1zcGVjaWZpYyBkYXRhIHN0cnVjdHVyZS4gQWxyaWdodCwgdGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIOKAkyB3ZSBoYXZlIGEgc3BlY2lmaWMgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZSBNVDc5ODgsIGJ1dCBpdCBsZXZlcmFnZXMgYSBtb3JlIGdlbmVyaWMgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgdGhlIE1UNzUzMSwgd2hpY2ggaXMgcHJvYmFibHkgdGhlIHVuZGVybHlpbmcgc3dpdGNoIGNoaXAuIEl0IG1ha2VzIHNlbnNlIHRvIHNoYXJlIGNvZGUgbGlrZSB0aGlzLiBOb3csIHRvIHRydWx5IHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZywgSSBuZWVkIHRvIGRpdmUgaW50byBgbXQ3NTMxX3NldHVwX2NvbW1vbmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQncyBkb2luZyB3aXRoIHRoaXMgZGV2aWNlIHN0cnVjdHVyZSAoZHMpLiBJcyBpdCBjb25maWd1cmluZyB0aGUgUEhZcz8gU2V0dGluZyB1cCByZWdpc3RlcnM/IEluaXRpYWxpemluZyB0aGUgTUFDIGFkZHJlc3Nlcz8gSSdtIGJldHRpbmcgaXQncyBkb2luZyB0aGUgbG93LWxldmVsIHJlZ2lzdGVyIHNldHVwIGFuZCBicmluZ2luZyB0aGUgc3dpdGNoIHVwIGludG8gYSBrbm93biBzdGF0ZS4gU28sIGxldCdzIGdvIGNoZWNrIHRoYXQgcm91dGluZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBjbG9jayBjb25maWd1cmF0aW9uLCBQSFkgaW5pdGlhbGl6YXRpb24sIGFuZCBwb3NzaWJseSBzb21lIGJhc2ljIHBvcnQgY29uZmlndXJhdGlvbiBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgyMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MzMuODA1MjY1NTUzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODQwNzgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzFfc2V0dXBfY29tbW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI2MzU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjM2Om10NzUzMV9zZXR1cF9jb21tb24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNzA3PW10NzUzMV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjc5NC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjc5NTpcXHRyZXQgPSBtdDc1MzFfc2V0dXBfY29tbW9uKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjc5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMzNTQ9c3RhdGljIGludCBtdDc5ODhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzODgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzODk6XFx0cmV0dXJuIG10NzUzMV9zZXR1cF9jb21tb24oZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzkwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MzMuODYzNjc3MjZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxNzc0NzY0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIGBtdDc1MzFfc2V0dXBfY29tbW9uYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYG10NzUzMV9zZXR1cF9jb21tb25gIGZ1bmN0aW9uLiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEknbSBleHBlY3RpbmcgdGhpcyBpcyBnb2luZyB0byBiZSBhIGNvbW1vbiBzZXR1cCByb3V0aW5lIHNwZWNpZmljYWxseSBmb3IgdGhlIE1UNzUzMSBjaGlwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBhbmQgY29uZmlndXJlcyB0aGUgY29yZSBhc3BlY3RzIG9mIHRoaXMgcGFydGljdWxhciBzd2l0Y2guIEknbSBnb2luZyB0byBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBvcmRlciBpbiB3aGljaCB0aGluZ3MgaGFwcGVuLCBhbnkgcmVnaXN0ZXIgd3JpdGVzLCBhbmQgd2hhdCBraW5kIG9mIGFzc3VtcHRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGlzIGZ1bmN0aW9uIGhhcyBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgdGhlIG92ZXJhbGwgZHJpdmVyIGNvbnRleHQuIFRoaXMgbGlrZWx5IHNldHMgdXAgdGhlIGJhc2ljIGNsb2NraW5nLCByZXNldCBzZXF1ZW5jZXMsIGFuZCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIG5lY2Vzc2FyeSBmb3IgdGhlIHN3aXRjaCB0byBmdW5jdGlvbiBjb3JyZWN0bHkgYmVmb3JlIG1vcmUgc3BlY2lmaWMgZmVhdHVyZXMgb3IgcG9ydCBzZXR0aW5ncyBhcmUgYXBwbGllZC4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgbGlrZSByYWNlIGNvbmRpdGlvbnMsIGluY29ycmVjdCByZWdpc3RlciB2YWx1ZXMsIG9yIGxhY2sgb2YgZXJyb3IgaGFuZGxpbmcuIFVsdGltYXRlbHksIEknbSBhc3Nlc3NpbmcgdGhpcyBmb3Igb3ZlcmFsbCBjb2RlIHF1YWxpdHksIGJlc3QgcHJhY3RpY2VzLCBhbmQgd2hldGhlciBJIGNhbiB0cnVzdCB0aGlzIGZ1bmN0aW9uIHRvIGJlIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdGhlIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ1MDAsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NjozNy4yODE0MjY4MjhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjM1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNjM1OlxcdHN0YXRpYyBpbnRcXG4yNjM2OlxcdG10NzUzMV9zZXR1cF9jb21tb24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbjI2Mzc6XFx0e1xcbjI2Mzg6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuMjYzOTpcXHRcXHRpbnQgcmV0LCBpO1xcbjI2NDA6XFx0XFxuMjY0MTpcXHRcXHRkcy1cXHUwMDNlYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlO1xcbjI2NDI6XFx0XFx0ZHMtXFx1MDAzZXVudGFnX3ZsYW5fYXdhcmVfYnJpZGdlX3B2aWQgPSB0cnVlO1xcbjI2NDM6XFx0XFx0ZHMtXFx1MDAzZW10dV9lbmZvcmNlbWVudF9pbmdyZXNzID0gdHJ1ZTtcXG4yNjQ0OlxcdFxcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9taW4gPSAyICogMTAwMDtcXG4yNjQ1OlxcdFxcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9tYXggPSAoQUdFX0NOVF9NQVggKyAxKSAqIChBR0VfVU5JVF9NQVggKyAxKSAqIDEwMDA7XFxuMjY0NjpcXHRcXG4yNjQ3OlxcdFxcdG10NzUzeF90cmFwX2ZyYW1lcyhwcml2KTtcXG4yNjQ4OlxcdFxcbjI2NDk6XFx0XFx0LyogRW5hYmxlIGFuZCByZXNldCBNSUIgY291bnRlcnMgKi9cXG4yNjUwOlxcdFxcdG10NzUzMF9taWJfcmVzZXQoZHMpO1xcbjI2NTE6XFx0XFxuMjY1MjpcXHRcXHQvKiBEaXNhYmxlIGZsb29kaW5nIG9uIGFsbCBwb3J0cyAqL1xcbjI2NTM6XFx0XFx0bXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzWF9NRkMsIEJDX0ZGUF9NQVNLIHwgVU5NX0ZGUF9NQVNLIHxcXG4yNjU0OlxcdFxcdFxcdCAgICAgVU5VX0ZGUF9NQVNLKTtcXG4yNjU1OlxcdFxcbjI2NTY6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZWRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKykge1xcbjI2NTc6XFx0XFx0XFx0LyogQ2xlYXIgbGluayBzZXR0aW5ncyBhbmQgZW5hYmxlIGZvcmNlIG1vZGUgdG8gZm9yY2UgbGluayBkb3duXFxuMjY1ODpcXHRcXHRcXHQgKiBvbiBhbGwgcG9ydHMgdW50aWwgdGhleSdyZSBlbmFibGVkIGxhdGVyLlxcbjI2NTk6XFx0XFx0XFx0ICovXFxuMjY2MDpcXHRcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzWF9QTUNSX1AoaSksXFxuMjY2MTpcXHRcXHRcXHRcXHQgICBQTUNSX0xJTktfU0VUVElOR1NfTUFTSyB8XFxuMjY2MjpcXHRcXHRcXHRcXHQgICBNVDc1M1hfRk9SQ0VfTU9ERShwcml2LVxcdTAwM2VpZCksXFxuMjY2MzpcXHRcXHRcXHRcXHQgICBNVDc1M1hfRk9SQ0VfTU9ERShwcml2LVxcdTAwM2VpZCkpO1xcbjI2NjQ6XFx0XFxuMjY2NTpcXHRcXHRcXHQvKiBEaXNhYmxlIGZvcndhcmRpbmcgYnkgZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi9cXG4yNjY2OlxcdFxcdFxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1BDUl9QKGkpLCBQQ1JfTUFUUklYX01BU0ssXFxuMjY2NzpcXHRcXHRcXHRcXHQgICBQQ1JfTUFUUklYX0NMUik7XFxuMjY2ODpcXHRcXG4yNjY5OlxcdFxcdFxcdC8qIERpc2FibGUgbGVhcm5pbmcgYnkgZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi9cXG4yNjcwOlxcdFxcdFxcdG10NzUzMF9zZXQocHJpdiwgTVQ3NTMwX1BTQ19QKGkpLCBTQV9ESVMpO1xcbjI2NzE6XFx0XFxuMjY3MjpcXHRcXHRcXHRtdDc1MzBfc2V0KHByaXYsIE1UNzUzMV9EQkdfQ05UKGkpLCBNVDc1MzFfRElTX0NMUik7XFxuMjY3MzpcXHRcXG4yNjc0OlxcdFxcdFxcdGlmIChkc2FfaXNfY3B1X3BvcnQoZHMsIGkpKSB7XFxuMjY3NTpcXHRcXHRcXHRcXHRtdDc1M3hfY3B1X3BvcnRfZW5hYmxlKGRzLCBpKTtcXG4yNjc2OlxcdFxcdFxcdH0gZWxzZSB7XFxuMjY3NzpcXHRcXHRcXHRcXHRtdDc1MzBfcG9ydF9kaXNhYmxlKGRzLCBpKTtcXG4yNjc4OlxcdFxcbjI2Nzk6XFx0XFx0XFx0XFx0LyogU2V0IGRlZmF1bHQgUFZJRCB0byAwIG9uIGFsbCB1c2VyIHBvcnRzICovXFxuMjY4MDpcXHRcXHRcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QUEJWMV9QKGkpLCBHMF9QT1JUX1ZJRF9NQVNLLFxcbjI2ODE6XFx0XFx0XFx0XFx0XFx0ICAgRzBfUE9SVF9WSURfREVGKTtcXG4yNjgyOlxcdFxcdFxcdH1cXG4yNjgzOlxcdFxcbjI2ODQ6XFx0XFx0XFx0LyogRW5hYmxlIGNvbnNpc3RlbnQgZWdyZXNzIHRhZyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NjozNy4yODE2MjQwNThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0OTY1ODYyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIE1NSU8gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCdzIGZ1enphYmxlIHdpdGggc3l6a2FsbGVyLiBUaGUgY29kZSBpcyBpbnRlcmFjdGluZyB3aXRoIE1NSU8gcmVnaXN0ZXJzLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSWYgc3l6a2FsbGVyIG1hcHMgZHVtbXkgbWVtb3J5LCB0aGVzZSByZWFkcyBhbmQgd3JpdGVzIHdpbGwgbGlrZWx5IHN1Y2NlZWQsIGFsYmVpdCB3aXRoIGR1bW15IHZhbHVlcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCB0aGVyZSdzIGEgcG9sbGluZyBsb29wIGluIGBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGVgLiBJdCdzIHJlYWRpbmcgYSByZWdpc3RlciBhbmQgd2FpdGluZyBmb3IgYSBzcGVjaWZpYyBiaXQgdG8gY2xlYXIuIElmIHRoZSByZWFkIHJldHVybnMgMCAoZHVlIHRvIHRoZSBkdW1teSBtZW1vcnkpLCB0aGUgcG9sbGluZyBsb29wIG1pZ2h0IHN1Y2NlZWQgaW1tZWRpYXRlbHkuIElmIGl0IHJldHVybnMgYDB4ZmZmZmZmZmZgLCB3aGljaCBpcyBhbm90aGVyIGR1bW15IHZhbHVlIHRoYXQgY291bGQgYXJpc2UsIHRoZSBsb29wIG1pZ2h0IHRpbWUgb3V0IGFmdGVyIDEwMG1zLiBJbiBlaXRoZXIgb2YgdGhlc2UgY2FzZXMsIGl0IHdvbid0IGNyYXNoIHRoZSBzeXN0ZW0sIGFuZCBpdCB3aWxsIGtlZXAgZ29pbmcuIEV2ZW4gaWYgdGhlcmUncyBhbiBlcnJvciwgYG10Nzk4OF9zZXR1cGAgZG9lc24ndCBzZWVtIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZWAuIFNvLCBpdCBqdXN0IGNvbnRpbnVlcyB0byB0aGUgbmV4dCBzdGVwLiBUaGVuLCBgbXQ3NTMxX3NldHVwX2NvbW1vbihkcylgIHdvdWxkIGJlIGNhbGxlZC5cblxuVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoYXQgYG10NzUzMV9zZXR1cF9jb21tb25gIGVpdGhlciBzdWNjZWVkcyBvciBmYWlscyBncmFjZWZ1bGx5LCB0b28uIFRoZXJlZm9yZSwgdGhlIHN3aXRjaCAqd2lsbCogZ2V0IHJlZ2lzdGVyZWQhIFN5emthbGxlciBjYW4gdGhlbiB1c2UgbmV0bGluayB0byBpbnRlcmFjdCB3aXRoIHRoZSBEU0Egc3dpdGNoLCBjb25maWd1cmluZyB0aGluZ3MgbGlrZSBicmlkZ2VzLCBhbmQgc28gb24uXG5cblRoZSBiaWdnZXIgcXVlc3Rpb24gaXMgdGhpczogaXMgdGhpcyBkcml2ZXIgKmFjdHVhbGx5KiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBcIldvcnRoRnV6emluZz1mYWxzZVwiIGlmIGl0J3MgaW1wb3NzaWJsZS4gTm93LCB3aGF0J3MgaW50ZXJlc3RpbmcgaXMgdGhpcyBpcyBhIHB1cmUgTU1JTyBkcml2ZXIgdGhhdCBvbmx5IHdvcmtzIHdpdGggaGFyZHdhcmUuIFN5emthbGxlciBjYW4gZ2VuZXJhdGUgYSBkZXZpY2UgdHJlZSB0aGF0IG1hdGNoZXMgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYC4gVGhlIGRyaXZlciB3aWxsIHByb2JlLCBtYXAgdGhlIGR1bW15IG1lbW9yeSwgYW5kIHJlZ2lzdGVyIGEgRFNBIHN3aXRjaC4gVGhlbiBzeXprYWxsZXIgY2FuIHN0YXJ0IGZ1enppbmcuXG5cblR5cGljYWxseSwgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlbHkgb24gc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzIG9yIGJlaGF2aW9yIHdpbGwgZmFpbCB0byBwcm9iZS4gSG93ZXZlciwgaW4gdGhpcyBjYXNlLCBgbXQ3OTg4X3NldHVwYCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBzdHJpY3QgY2hlY2tzIHRoYXQgd291bGQgY2F1c2UgYSBmYWlsdXJlIGlmIHRoZSBoYXJkd2FyZSBpc24ndCBwcmVzZW50LlxuXG5JIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBtdDc1MzBfcHJvYmVfY29tbW9uYCBhbmQgYG10Nzk4OF9wcm9iZWAgYWdhaW4gdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhleSBkb24ndCBjb250YWluIGFueSBoYXJkd2FyZSBJRCBjaGVja3MgdGhhdCB3b3VsZCBraWxsIHRoZSBwcm9iaW5nIHByb2Nlc3MuIEJ1dCBhdCB0aGlzIHBvaW50LCBpdCBsb29rcyBwcm9taXNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NzIyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6NTEuNzc4MjEyNDM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzUxOSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzUxOTpcXHRpbnRcXG4zNTIwOlxcdG10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbjM1MjE6XFx0e1xcbjM1MjI6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi1cXHUwMDNlZGV2O1xcbjM1MjM6XFx0XFxuMzUyNDpcXHRcXHRwcml2LVxcdTAwM2VkcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdi1cXHUwMDNlZHMpLCBHRlBfS0VSTkVMKTtcXG4zNTI1OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlZHMpXFxuMzUyNjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zNTI3OlxcdFxcbjM1Mjg6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZWRldiA9IGRldjtcXG4zNTI5OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VudW1fcG9ydHMgPSBNVDc1MzBfTlVNX1BPUlRTO1xcbjM1MzA6XFx0XFxuMzUzMTpcXHRcXHQvKiBHZXQgdGhlIGhhcmR3YXJlIGlkZW50aWZpZXIgZnJvbSB0aGUgZGV2aWNldHJlZSBub2RlLlxcbjM1MzI6XFx0XFx0ICogV2Ugd2lsbCBuZWVkIGl0IGZvciBzb21lIG9mIHRoZSBjbG9jayBhbmQgcmVndWxhdG9yIHNldHVwLlxcbjM1MzM6XFx0XFx0ICovXFxuMzUzNDpcXHRcXHRwcml2LVxcdTAwM2VpbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuMzUzNTpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWluZm8pXFxuMzUzNjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNTM3OlxcdFxcbjM1Mzg6XFx0XFx0cHJpdi1cXHUwMDNlaWQgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VpZDtcXG4zNTM5OlxcdFxcdHByaXYtXFx1MDAzZWRldiA9IGRldjtcXG4zNTQwOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4zNTQxOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XFxuMzU0MjpcXHRcXHRwcml2LVxcdTAwM2Vkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XFxuMzU0MzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbXV0ZXgpO1xcbjM1NDQ6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX2xvY2spO1xcbjM1NDU6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcXG4zNTQ2OlxcdFxcbjM1NDc6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgcHJpdik7XFxuMzU0ODpcXHRcXG4zNTQ5OlxcdFxcdHJldHVybiAwO1xcbjM1NTA6XFx0fVxcbjM1NTE6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3Byb2JlX2NvbW1vbik7XFxuMzU1MjpcXHRcXG4zNTUzOlxcdHZvaWRcXG4zNTU0OlxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4zNTU1OlxcdHtcXG4zNTU2OlxcdFxcdGlmIChwcml2LVxcdTAwM2VpcnFfZG9tYWluKVxcbjM1NTc6XFx0XFx0XFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XFxuMzU1ODpcXHRcXG4zNTU5OlxcdFxcdGRzYV91bnJlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuMzU2MDpcXHRcXG4zNTYxOlxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuMzU2MjpcXHR9XFxuMzU2MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcmVtb3ZlX2NvbW1vbik7XFxuMzU2NDpcXHRcXG4zNTY1OlxcdE1PRFVMRV9BVVRIT1IoXFxcIlNlYW4gV2FuZyBcXHUwMDNjc2Vhbi53YW5nQG1lZGlhdGVrLmNvbVxcdTAwM2VcXFwiKTtcXG4zNTY2OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiRHJpdmVyIGZvciBNZWRpYXRlayBNVDc1MzAgU3dpdGNoXFxcIik7XFxuMzU2NzpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjUxLjc3ODUwMTY4NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ1NTQwNjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyB0aGUgTVQ3NTMwIERyaXZlciBQcm9iZSBGdW5jdGlvbioqXG5cbkhtbSwgc28gdGhlIGBtdDc1MzBfcHJvYmVfY29tbW9uYCBmdW5jdGlvbuKApiByaWdodCwgaXQgZG9lc24ndCBzZWVtIHRvIGJlIGNoZWNraW5nIGFueSBoYXJkd2FyZSBJRCByZWdpc3RlcnMsIHdoaWNoIGlzIGEgYml0IHVudXN1YWwuIE9rYXksIHRoYXQncyBub3RlZC4gTm93LCB3aGVyZSBhcmUgdGhvc2UgSURzIGJlaW5nIHZhbGlkYXRlZCBvciB2ZXJpZmllZD8gTGV0IG1lIHNlZeKApiB3aGF0IGFib3V0IGBkc2FfcmVnaXN0ZXJfc3dpdGNoYD8gRG9lcyAqdGhhdCogZnVuY3Rpb24gdHJpZ2dlciBhbnkgc2V0dXAgcm91dGluZXM/XG5cbkFoLCB5ZXMuIEdvdCBpdC4gYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIGNhbGxzIGBkcy1cdTAwM2VvcHMtXHUwMDNlc2V0dXBgLiBBbmQgbG9va2luZyBhdCB0aGUgTVQ3NTN4IGRyaXZlciwgdGhlIGBzZXR1cGAgb3BlcmF0aW9uIGlzIGRlZmluZWQgYXMgYG10NzUzeF9zZXR1cGAuIEdvb2QuIFNvIHRoZSBpbml0aWFsaXphdGlvbiBsaWtlbHkgb2NjdXJzIHRoZXJlLCBvciBwb3NzaWJseSBmdXJ0aGVyIGRvd24gdGhlIGNhbGwgY2hhaW4gd2l0aGluIHRoYXQgc2V0dXAgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBkaWcgaW50byBgbXQ3NTN4X3NldHVwYCB0byBzZWUgaG93IHRoYXQgZnVuY3Rpb24gcHJvY2VlZHMsIGFuZCB3aGV0aGVyIGhhcmR3YXJlIElEIGNoZWNrcyBhcmUgcGVyZm9ybWVkIHRoZXJlLiBUaGF0J3Mgd2hlcmUgSSBzaG91bGQgZm9jdXMgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NzcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjU2LjQyNDA0NDI2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyODYsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyODY6XFx0XFxuMzI4NzpcXHRcXHRpZiAob3BlcmF0aW9uYWwpXFxuMzI4ODpcXHRcXHRcXHRwcml2LVxcdTAwM2VhY3RpdmVfY3B1X3BvcnRzIHw9IG1hc2s7XFxuMzI4OTpcXHRcXHRlbHNlXFxuMzI5MDpcXHRcXHRcXHRwcml2LVxcdTAwM2VhY3RpdmVfY3B1X3BvcnRzIFxcdTAwMjY9IH5tYXNrO1xcbjMyOTE6XFx0XFxuMzI5MjpcXHRcXHRpZiAocHJpdi1cXHUwMDNlYWN0aXZlX2NwdV9wb3J0cykge1xcbjMyOTM6XFx0XFx0XFx0dmFsID0gTVQ3NTMwX0NQVV9FTiB8XFxuMzI5NDpcXHRcXHRcXHQgICAgICBNVDc1MzBfQ1BVX1BPUlQoX19mZnMocHJpdi1cXHUwMDNlYWN0aXZlX2NwdV9wb3J0cykpO1xcbjMyOTU6XFx0XFx0fVxcbjMyOTY6XFx0XFxuMzI5NzpcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzWF9NRkMsIE1UNzUzMF9DUFVfRU4gfCBNVDc1MzBfQ1BVX1BPUlRfTUFTSywgdmFsKTtcXG4zMjk4OlxcdH1cXG4zMjk5OlxcdFxcbjMzMDA6XFx0c3RhdGljIGludCBtdDc1M3hfdGNfc2V0dXBfcWRpc2NfdGJmKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuMzMwMTpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCB0Y190YmZfcW9wdF9vZmZsb2FkICpxb3B0KVxcbjMzMDI6XFx0e1xcbjMzMDM6XFx0XFx0c3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWRfcmVwbGFjZV9wYXJhbXMgKnAgPSBcXHUwMDI2cW9wdC1cXHUwMDNlcmVwbGFjZV9wYXJhbXM7XFxuMzMwNDpcXHRcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4zMzA1OlxcdFxcdHUzMiByYXRlID0gMDtcXG4zMzA2OlxcdFxcbjMzMDc6XFx0XFx0c3dpdGNoIChxb3B0LVxcdTAwM2Vjb21tYW5kKSB7XFxuMzMwODpcXHRcXHRjYXNlIFRDX1RCRl9SRVBMQUNFOlxcbjMzMDk6XFx0XFx0XFx0cmF0ZSA9IGRpdl91NjQocC1cXHUwMDNlcmF0ZS5yYXRlX2J5dGVzX3BzLCAxMDAwKSBcXHUwMDNjXFx1MDAzYyAzOyAvKiBrYnBzICovXFxuMzMxMDpcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4zMzExOlxcdFxcdGNhc2UgVENfVEJGX0RFU1RST1k6IHtcXG4zMzEyOlxcdFxcdFxcdHUzMiB2YWwsIHRpY2s7XFxuMzMxMzpcXHRcXG4zMzE0OlxcdFxcdFxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTNYX0dFUkxDUiwgRUdSX0JDX01BU0ssXFxuMzMxNTpcXHRcXHRcXHRcXHQgICBFR1JfQkNfQ1JDX0lQR19QUkVBTUJMRSk7XFxuMzMxNjpcXHRcXG4zMzE3OlxcdFxcdFxcdC8qIGlmIHJhdGUgaXMgZ3JlYXRlciB0aGFuIDEwTWJwcyB0aWNrIGlzIDEvMzIgbXMsXFxuMzMxODpcXHRcXHRcXHQgKiAxbXMgb3RoZXJ3aXNlXFxuMzMxOTpcXHRcXHRcXHQgKi9cXG4zMzIwOlxcdFxcdFxcdHRpY2sgPSByYXRlIFxcdTAwM2UgMTAwMDAgPyAyIDogNztcXG4zMzIxOlxcdFxcdFxcdHZhbCA9IEZJRUxEX1BSRVAoRVJMQ1JfQ0lSX01BU0ssIChyYXRlIFxcdTAwM2VcXHUwMDNlIDUpKSB8XFxuMzMyMjpcXHRcXHRcXHQgICAgICBGSUVMRF9QUkVQKEVSTENSX0VOX01BU0ssICEhcmF0ZSkgfFxcbjMzMjM6XFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChFUkxDUl9FWFBfTUFTSywgdGljaykgfFxcbjMzMjQ6XFx0XFx0XFx0ICAgICAgRVJMQ1JfVEJGX01PREVfTUFTSyB8XFxuMzMyNTpcXHRcXHRcXHQgICAgICBGSUVMRF9QUkVQKEVSTENSX01BTlRfTUFTSywgMHhmKTtcXG4zMzI2OlxcdFxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1M1hfRVJMQ1JfUChwb3J0KSwgdmFsKTtcXG4zMzI3OlxcdFxcdFxcdGJyZWFrO1xcbjMzMjg6XFx0XFx0fVxcbjMzMjk6XFx0XFx0ZGVmYXVsdDpcXG4zMzMwOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4zMzMxOlxcdFxcdH1cXG4zMzMyOlxcdFxcbjMzMzM6XFx0XFx0cmV0dXJuIDA7XFxuMzMzNDpcXHR9XFxuMzMzNTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6NTYuNDI0MjcxOTIxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTUwMDAxMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipRdWljayBDaGVjazogbXQ3NTN4X3NldHVwKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbiBoZXJlLCBidXQgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBhcmVhLCBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIOKAkyAqbXQ3NTN4X3NldHVwKi4gSXQncyBhIGtleSBmdW5jdGlvbiBpbiB0aGlzIHN1YnN5c3RlbSwgYW5kIGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IG92ZXJsb29raW5nIGl0cyBpbml0aWFsIGNvbmZpZ3VyYXRpb24gY2FuIGxlYWQgdG8gc29tZSByZWFsbHkgbmFzdHkgZGVidWdnaW5nIHNlc3Npb25zIGRvd24gdGhlIHJvYWQuIEkndmUgYmVlbiBidXJuZWQgYnkgdGhhdCBiZWZvcmUuIEkga25vdyBpdCdzIHByb2JhYmx5IGJlZW4gY2hlY2tlZCByZWNlbnRseSwgYnV0IGl0IG5ldmVyIGh1cnRzIHRvIGRvdWJsZS1jaGVjayBhIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24sIGVzcGVjaWFsbHkgb25lIHRoYXQncyBmdW5kYW1lbnRhbCB0byBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgcG90ZW50aWFsIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCBuZXdlciBmZWF0dXJlcyBvciB1cHN0cmVhbSBjaGFuZ2VzLCBhbnkgb2Ygd2hpY2ggbWlnaHQgYWx0ZXIgZXhwZWN0ZWQgcmVnaXN0ZXIgc2V0dGluZ3Mgb3IgcmVxdWlyZWQgdGltaW5nLiBUaGF0IHNldHVwIGZ1bmN0aW9uIGNvdWxkIGFsc28gYmUgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIGFueSBoYXJkd2FyZSBwcmUtcmVxdWlzaXRlcyBhcmUgbWV0LiBBIHF1aWNrIHJldmlldyBvZiBpdHMgbG9naWMgd2lsbCBzYXZlIGEgdG9uIG9mIHRpbWUuIEJldHRlciBzYWZlIHRoYW4gc29ycnksIEknbGwgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCdzIHNldHRpbmcgdXAgdGhlIFBIWSBhbmQgdGhlIHJlbGV2YW50IGNsb2Nrcy4gQmFjayB0byB0aGUgcGxhbiBhZnRlciB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MDAuNzE5Mjc0NTA4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA0OTcwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NTN4X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMyMDk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMjEwOm10NzUzeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMyMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMzMDA9c3RhdGljIGludCBtdDc1M3hfdGNfc2V0dXBfcWRpc2NfdGJmKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzMzNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzMzNjpzdGF0aWMgaW50IG10NzUzeF9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzM3LVxcdFxcdFxcdCAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIG10NzUzMF9zd2l0Y2hfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzkzLVxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBtdGtfZ2V0X3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM5NDpcXHQuc2V0dXBcXHRcXHRcXHQ9IG10NzUzeF9zZXR1cCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM5NS1cXHQudGVhcmRvd25cXHRcXHQ9IG10NzUzeF90ZWFyZG93bixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDI3LVxcdC5jb25kdWl0X3N0YXRlX2NoYW5nZVxcdD0gbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDI4OlxcdC5wb3J0X3NldHVwX3RjXFx0XFx0PSBtdDc1M3hfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MjktXFx0LnBvcnRfaHNyX2pvaW5cXHRcXHQ9IGRzYV9wb3J0X3NpbXBsZV9oc3Jfam9pbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MDAuOTA5NzgwNzE2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MDU3MDIzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIGBtdDc1M3hfc2V0dXBgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgbXQ3NTN4X3NldHVwYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyBhIG1lbnRhbCBpbnZlbnRvcnkgb2Ygd2hhdCBJIGFscmVhZHkga25vdyBhYm91dCB0aGlzIGRyaXZlciBvciB0aGUgY2hpcHNldCBpdCBwZXJ0YWlucyB0by4gSSdtIHJlY2FsbGluZyBhbnkgcGFzdCBleHBlcmllbmNlcyB3aXRoIE1USyBzd2l0Y2ggY29uZmlndXJhdGlvbnMgb3Igc2ltaWxhciBzZXR1cHMuIEFyZSB0aGVyZSBhbnkga25vd24gcXVpcmtzPyBDb21tb24gcGl0ZmFsbHM/IERvZXMgdGhpcyBhbGlnbiB3aXRoIHRoZSB0eXBpY2FsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlP1xuXG5BcyBJIHJlYWQsIEknbSBtZW50YWxseSBjaGVja2luZyBlYWNoIGxpbmUgb2YgY29kZSBhZ2FpbnN0IG15IHVuZGVyc3RhbmRpbmcgb2Ygc3dpdGNoIGhhcmR3YXJlLCByZWdpc3RlciBtYXBzLCBhbmQgbGlrZWx5IGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXMuIEFyZSB0aGV5IGFkZHJlc3NpbmcgdGhpbmdzIGluIHRoZSBjb3JyZWN0IG9yZGVyPyBBcmUgdGhlIGNsb2NrIHNldHRpbmdzIHBsYXVzaWJsZT8gSSdtIGxvb2tpbmcgZm9yIGFueSBvYnZpb3VzIHJlZCBmbGFncywgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgb3IgYW55dGhpbmcgdGhhdCBzZWVtcyBvdXQgb2YgdGhlIG9yZGluYXJ5LCBhbmQgSSBhbSBjcm9zcyBjaGVja2luZyB0aGlzIG5ldyBkYXRhIHdpdGggdGhlIGtub3dsZWRnZSBJIGFscmVhZHkgcG9zc2Vzcy5cblxuSSBhbSBxdWlja2x5IGxvb2tpbmcgZm9yIHRoZSBjb3JlIGNvbXBvbmVudHMgdGhhdCBhcmUgYmVpbmcgc2V0IHVwOiBQSFlzLCBpbnRlcm5hbCBzd2l0Y2ggZmFicmljIGNvbmZpZ3VyYXRpb24sIFZMQU4gc2V0dGluZ3MsIFFvUyBwYXJhbWV0ZXJzLi4uIEknbGwgc3RhcnQgd2l0aCB0aGUgbW9zdCBjcml0aWNhbCBwYXRocyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBBcmUgdGhlcmUgYW55IGhhcmR3YXJlLXNwZWNpZmljIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIERNQSB0cmFuc2ZlcnMsIGludGVycnVwdCBoYW5kbGluZywgb3IgbWVtb3J5IG1hbmFnZW1lbnQ/XG5cbkknbSBrZWVwaW5nIGEgY29uc3RhbnQgaW50ZXJuYWwgbG9nIG9mIHdoZXJlIEkgY2FuIGZpbmQgbW9yZSBjb250ZXh0IG9yIGluZm9ybWF0aW9uIG9uIHNwZWNpZmljIG9wZXJhdGlvbnMuIEknbSBsb29raW5nIGZvciBmdW5jdGlvbiBjYWxscyB0byByZWxhdGVkIEFQSXMgb3IgZHJpdmVyLXNwZWNpZmljIHN0cnVjdHVyZXMgdGhhdCBJIG1heSB3YW50IHRvIGV4YW1pbmUgaW4gZGVwdGguIFRoZSBvdmVyYWxsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtdDc1M3hfc2V0dXBgIGZ1bmN0aW9uIGlzIGludGVncmF0aW5nIHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHdpdGggYW55IGhpZ2hlci1sZXZlbCBhYnN0cmFjdGlvbnMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IHRoZSBPUy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4OTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzowOC41MTU0ODY2MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjA5LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjA5OlxcdHN0YXRpYyBpbnRcXG4zMjEwOlxcdG10NzUzeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuMzIxMTpcXHR7XFxuMzIxMjpcXHRcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4zMjEzOlxcdFxcdGludCByZXQgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2Vzd19zZXR1cChkcyk7XFxuMzIxNDpcXHRcXHRpbnQgaTtcXG4zMjE1OlxcdFxcbjMyMTY6XFx0XFx0aWYgKHJldClcXG4zMjE3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzIxODpcXHRcXG4zMjE5OlxcdFxcdHJldCA9IG10NzUzMF9zZXR1cF9pcnEocHJpdik7XFxuMzIyMDpcXHRcXHRpZiAocmV0KVxcbjMyMjE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zMjIyOlxcdFxcbjMyMjM6XFx0XFx0cmV0ID0gbXQ3NTMwX3NldHVwX21kaW8ocHJpdik7XFxuMzIyNDpcXHRcXHRpZiAocmV0KVxcbjMyMjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zMjI2OlxcdFxcbjMyMjc6XFx0XFx0LyogSW5pdGlhbGlzZSB0aGUgUENTIGRldmljZXMgKi9cXG4zMjI4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2Vkcy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspIHtcXG4zMjI5OlxcdFxcdFxcdHByaXYtXFx1MDAzZXBjc1tpXS5wY3Mub3BzID0gcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlcGNzX29wcztcXG4zMjMwOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBjc1tpXS5wcml2ID0gcHJpdjtcXG4zMjMxOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBjc1tpXS5wb3J0ID0gaTtcXG4zMjMyOlxcdFxcdH1cXG4zMjMzOlxcdFxcbjMyMzQ6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWNyZWF0ZV9zZ21paSlcXG4zMjM1OlxcdFxcdFxcdHJldCA9IHByaXYtXFx1MDAzZWNyZWF0ZV9zZ21paShwcml2KTtcXG4zMjM2OlxcdFxcbjMyMzc6XFx0XFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2VpcnFfZG9tYWluKVxcbjMyMzg6XFx0XFx0XFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XFxuMzIzOTpcXHRcXG4zMjQwOlxcdFxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWJ1cykge1xcbjMyNDE6XFx0XFx0XFx0bXQ3NTMwX3N0YXRzX3JlZnJlc2gocHJpdik7XFxuMzI0MjpcXHRcXHRcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX3dvcmssXFxuMzI0MzpcXHRcXHRcXHRcXHRcXHQgICAgICBNVDc1MzBfU1RBVFNfUE9MTF9JTlRFUlZBTCk7XFxuMzI0NDpcXHRcXHR9XFxuMzI0NTpcXHRcXG4zMjQ2OlxcdFxcdHJldHVybiByZXQ7XFxuMzI0NzpcXHR9XFxuMzI0ODpcXHRcXG4zMjQ5OlxcdHN0YXRpYyB2b2lkXFxuMzI1MDpcXHRtdDc1M3hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbjMyNTE6XFx0e1xcbjMyNTI6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuMzI1MzpcXHRcXG4zMjU0OlxcdFxcdGlmIChwcml2LVxcdTAwM2VidXMpXFxuMzI1NTpcXHRcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX3dvcmspO1xcbjMyNTY6XFx0fVxcbjMyNTc6XFx0XFxuMzI1ODpcXHRzdGF0aWMgaW50IG10NzUzeF9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzowOC41MTU2NTk0MTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjcwNDE5NzU0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgU3dpdGNoIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIG5ldHdvcmsgc3dpdGNoIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgSURfRU43NTI4YCBjb25maWd1cmF0aW9uLiBJIHNlZSB0aGF0IGBwcml2LVx1MDAzZWluZm8tXHUwMDNlc3dfc2V0dXAoZHMpYCBpcyBzZXQgdG8gYG10Nzk4OF9zZXR1cGAsIHdoaWNoIGlzIGV4cGVjdGVkLiBXZSBrbm93IHRoYXQgYG10Nzk4OF9zZXR1cGAgaXMgYSBrZXkgZnVuY3Rpb24gaW4gdGhpcyBwcm9jZXNzLlxuXG5Ob3csIGFzIEkgcmVjYWxsIGZyb20gcHJldmlvdXMgZGVidWdnaW5nLCBgbXQ3OTg4X3NldHVwYCB0aGVuIGNhbGxzIGBtdDc1MzFfc2V0dXBfY29tbW9uYC4gVGhlIGZ1bmN0aW9uIGNhbGxzIGBtdDc1MzFfc2V0dXBfY29tbW9uYCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGludm9sdmVzIGEgZ29vZCBhbW91bnQgb2YgTU1JTyByZWdpc3RlciBhY2Nlc3Mgd2hpY2gsIGF0IHRoaXMgcG9pbnQsIGFsbCBzZWVtZWQgdG8gaGF2ZSBzdWNjZWVkZWQuIFxuXG5UaGUgbmV4dCBzdGVwcyBhZnRlciB0aGF0IGluaXRpYWwgc2V0dXAgYXJlIGBtdDc1MzBfc2V0dXBfaXJxYCBhbmQgYG10NzUzMF9zZXR1cF9tZGlvYC4gR2l2ZW4gd2hlcmUgd2UgYXJlIG5vdywgbGV0J3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBtdDc1MzBfc2V0dXBfbWRpb2AgYW5kIHNlZSB3aGF0IGl0J3MgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMDIwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MTUuMjE5ODYwODM0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg3OTA1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NTMwX3NldHVwX21kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjI2OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjcwOm10NzUzMF9zZXR1cF9tZGlvX2lycShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNzA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzcxOm10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNC1cXHRpZiAocHJpdi1cXHUwMDNlaXJxX2RvbWFpbiBcXHUwMDI2XFx1MDAyNiAhbW5wKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA1OlxcdFxcdG10NzUzMF9zZXR1cF9tZGlvX2lycShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMjEwPW10NzUzeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzIyMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzIyMzpcXHRyZXQgPSBtdDc1MzBfc2V0dXBfbWRpbyhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzIyNC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzoxNS4zODg2NTc1NjRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk5NzY5Njk3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzUzMF9zZXR1cF9tZGlvYCBmdW5jdGlvbi4gSSBzZWUgaXQncyBwcm9iYWJseSBwYXJ0IG9mIGEgZHJpdmVyIG9yIHNvbWUgbG93LWxldmVsIG5ldHdvcmsgaW50ZXJmYWNlIGNvZGUsIGp1ZGdpbmcgYnkgdGhlIG5hbWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgY29udGV4dC4gV2hhdCdzIHRoZSBvdmVyYWxsIGdvYWwgb2YgdGhpcyBmdW5jdGlvbj8gRnJvbSB0aGUgbmFtZSwgSSdtIGd1ZXNzaW5nIGl0J3Mgc2V0dGluZyB1cCB0aGUgTURJTyBpbnRlcmZhY2UsIHdoaWNoIGlzIGEgY29tbW9uIHNlcmlhbCBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyBQSFkgKHBoeXNpY2FsIGxheWVyKSByZWdpc3RlcnMuIEtub3dpbmcgdGhpcywgSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gSXMgaXQgaW5pdGlhbGl6aW5nIHRoZSBNRElPIGNvbnRyb2xsZXI/IENvbmZpZ3VyaW5nIHRoZSBjbG9jaz8gTWFwcGluZyB0aGUgcmVnaXN0ZXJzPyBJdCdzIGFsbCBhYm91dCBlZmZpY2llbnQgUEhZIGNvbW11bmljYXRpb24uXG5cbkkgYW50aWNpcGF0ZSB0aGUgY29kZSB3aWxsIGludm9sdmUgd3JpdGluZyB0byBzcGVjaWZpYyByZWdpc3RlcnMgdG8gY29udHJvbCB0aGUgTURJTyBjbG9jayBmcmVxdWVuY3ksIHRoZSBNRElPIG1vZGUgKGUuZy4sIGJpdC1iYW5naW5nIHZzLiBoYXJkd2FyZSBhY2NlbGVyYXRpb24pLCBhbmQgcG90ZW50aWFsbHkgZW5hYmxpbmcgdGhlIE1ESU8gY29udHJvbGxlci4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgZXJyb3IgaGFuZGxpbmcgb3IgdGltZW91dHMsIGVzcGVjaWFsbHkgd2hlbiB3YWl0aW5nIGZvciBNRElPIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4gQXJlIHRoZXkgdXNpbmcgYW55IGhhcmR3YXJlLXNwZWNpZmljIE1ESU8gY29tbWFuZHM/IEFueSBiaXQtc2hpZnRpbmcgb3IgbWFza2luZyBvcGVyYXRpb25zIHRvIGlzb2xhdGUgYW5kIG1hbmlwdWxhdGUgc3BlY2lmaWMgcmVnaXN0ZXIgYml0cz8gSSdsbCBwcm9iYWJseSBzY3J1dGluaXplIGFueSBsb29wcyBvciBkZWxheXMgdmVyeSBjbG9zZWx5LCBiZWNhdXNlIHRoZXNlIGFyZSBjbGFzc2ljIGFyZWFzIGZvciBwb3RlbnRpYWwgdGltaW5nIGlzc3VlcyBvciBsb2NrdXBzLlxuXG5J4oCZbSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IHRoZXkncmUgaGFuZGxpbmcgZGlmZmVyZW50IE1ESU8gYWRkcmVzcyBzcGFjZXMgaWYgdGhleSdyZSBzdXBwb3J0aW5nIG11bHRpcGxlIFBIWXMuIElzIHRoZXJlIGEgY2xlYXIgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBpbiB0aGUgY29kZSwgb3IgaXMgZXZlcnl0aGluZyB0aWdodGx5IGNvdXBsZWQ/IEFuZCwgb2YgY291cnNlLCBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHVuZG9jdW1lbnRlZCBvciB1bnVzdWFsIHJlZ2lzdGVyIGFjY2Vzc2VzIHRoYXQgbWlnaHQgcmVwcmVzZW50IGEgdmVuZG9yLXNwZWNpZmljIGhhY2sgb3Igb3B0aW1pemF0aW9uLiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBpbiB0aGVyZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzE4MTIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzoyMi4zODYzNTczMjJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMzcwOlxcdHN0YXRpYyBpbnRcXG4yMzcxOlxcdG10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4yMzcyOlxcdHtcXG4yMzczOlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wLCAqbnAgPSBwcml2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGU7XFxuMjM3NDpcXHRcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBwcml2LVxcdTAwM2VkcztcXG4yMzc1OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtXFx1MDAzZWRldjtcXG4yMzc2OlxcdFxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuMjM3NzpcXHRcXHRzdGF0aWMgaW50IGlkeDtcXG4yMzc4OlxcdFxcdGludCByZXQgPSAwO1xcbjIzNzk6XFx0XFxuMjM4MDpcXHRcXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXFxcIm1kaW9cXFwiKTtcXG4yMzgxOlxcdFxcbjIzODI6XFx0XFx0aWYgKG1ucCBcXHUwMDI2XFx1MDAyNiAhb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShtbnApKVxcbjIzODM6XFx0XFx0XFx0Z290byBvdXQ7XFxuMjM4NDpcXHRcXG4yMzg1OlxcdFxcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpO1xcbjIzODY6XFx0XFx0aWYgKCFidXMpIHtcXG4yMzg3OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMjM4ODpcXHRcXHRcXHRnb3RvIG91dDtcXG4yMzg5OlxcdFxcdH1cXG4yMzkwOlxcdFxcbjIzOTE6XFx0XFx0aWYgKCFtbnApXFxuMjM5MjpcXHRcXHRcXHRkcy1cXHUwMDNldXNlcl9taWlfYnVzID0gYnVzO1xcbjIzOTM6XFx0XFxuMjM5NDpcXHRcXHRidXMtXFx1MDAzZXByaXYgPSBwcml2O1xcbjIzOTU6XFx0XFx0YnVzLVxcdTAwM2VuYW1lID0gS0JVSUxEX01PRE5BTUUgXFxcIi1taWlcXFwiO1xcbjIzOTY6XFx0XFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBLQlVJTERfTU9ETkFNRSBcXFwiLSVkXFxcIiwgaWR4KyspO1xcbjIzOTc6XFx0XFx0YnVzLVxcdTAwM2VyZWFkID0gbXQ3NTN4X3BoeV9yZWFkX2MyMjtcXG4yMzk4OlxcdFxcdGJ1cy1cXHUwMDNld3JpdGUgPSBtdDc1M3hfcGh5X3dyaXRlX2MyMjtcXG4yMzk5OlxcdFxcdGJ1cy1cXHUwMDNlcmVhZF9jNDUgPSBtdDc1M3hfcGh5X3JlYWRfYzQ1O1xcbjI0MDA6XFx0XFx0YnVzLVxcdTAwM2V3cml0ZV9jNDUgPSBtdDc1M3hfcGh5X3dyaXRlX2M0NTtcXG4yNDAxOlxcdFxcdGJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbjI0MDI6XFx0XFx0YnVzLVxcdTAwM2VwaHlfbWFzayA9IH5kcy1cXHUwMDNlcGh5c19taWlfbWFzaztcXG4yNDAzOlxcdFxcbjI0MDQ6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlycV9kb21haW4gXFx1MDAyNlxcdTAwMjYgIW1ucClcXG4yNDA1OlxcdFxcdFxcdG10NzUzMF9zZXR1cF9tZGlvX2lycShwcml2KTtcXG4yNDA2OlxcdFxcbjI0MDc6XFx0XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xcbjI0MDg6XFx0XFx0aWYgKHJldCkge1xcbjI0MDk6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgTURJTyBidXM6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjI0MTA6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlycV9kb21haW4gXFx1MDAyNlxcdTAwMjYgIW1ucClcXG4yNDExOlxcdFxcdFxcdFxcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xcbjI0MTI6XFx0XFx0fVxcbjI0MTM6XFx0XFxuMjQxNDpcXHRvdXQ6XFxuMjQxNTpcXHRcXHRvZl9ub2RlX3B1dChtbnApO1xcbjI0MTY6XFx0XFx0cmV0dXJuIHJldDtcXG4yNDE3OlxcdH1cXG4yNDE4OlxcdFxcbjI0MTk6XFx0c3RhdGljIGludFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzoyMi4zODY1NTE1MzFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExNTk2MTcwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZyBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGBtdDc1MzBfc2V0dXBfbWRpb2Agc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyaW5nIHRoZSBNRElPIGJ1cyBhbmQgdGhlIHN3aXRjaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoaXMgbWVhbnMgdGhlIERTQSBjb3JlIHdpbGwgZXhwb3NlIHN3aXRjaCBwb3J0cyBhcyBuZXR3b3JrIGludGVyZmFjZXMsIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHdoZXJlIFN5emthbGxlciBjYW4gZ28gdG8gdG93biBmdXp6aW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgIGNhbGxlZCBieSBwaHlsaW5rLCBtb2RpZmljYXRpb25zIHRvIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIGZvciBgSURfRU43NTI4YCwgYW5kIHRoZSBFRUUgZGlzYWJsZSBpbiBgbXQ3OTg4X3NldHVwYCDigJMgdGhhdCBhbGwgc291bmRzIGxpa2UgbmV3IGhhcmR3YXJlIElEIGFuZCBuZXcgc3dpdGNoIGxvZ2ljIGFjY2Vzc2libGUgdGhyb3VnaCBEU0EuIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vaywgcmlnaHQ/XG5cbkJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdDogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uXCIuIENhbiBJIHJlYWNoIHRoaXMgaW4gR0NFIG9yIFFFTVU/IEhtbS4uLiBObywgbm90IGltcG9zc2libGUuIFN5emthbGxlciBjYW4gZ2VuZXJhdGUgYSBkZXZpY2UgdHJlZSB3aXRoIGBlY29uZXQsZW43NTI4LXN3aXRjaGAsIHRoZSBkcml2ZXIgd2lsbCBwcm9iZSwgbWFwIGR1bW15IG1lbW9yeSwgcmVnaXN0ZXIgdGhlIERTQSBzd2l0Y2gsIERTQSBjb3JlIHdpbGwgY2FsbCB0aGUgc3dpdGNoIG9wZXJhdGlvbnMuIFNvIGl0ICppcyogcmVhY2hhYmxlLlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSBpdCBtZWV0cyB0aGUgb3RoZXIgY3JpdGVyaWEuIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIiBZdXAsIHRoYXQncyB3aGF0J3MgaGFwcGVuaW5nIGhlcmUuIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgZHJpdmVyIGNvZGUsIGFuZCBjb3JlIGxvZ2ljLCBzbyBJJ20gY29uY2x1ZGluZyBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuTm93LCBiZWNhdXNlIFdvcnRoRnV6emluZz10cnVlLCBJIG5lZWQgdG8gaWRlbnRpZnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCAoRm9jdXNTeW1ib2xzKSBhbmQgYW55IHJlbGV2YW50IENPTkZJRyBvcHRpb25zLiBMZXQncyBzZWUuLi4gVGhlIHJlbGV2YW50IGRyaXZlciBmaWxlcyBhcmUgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY2AuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyBpbiBgZHJpdmVycy9uZXQvZHNhL2AgYW5kIHNlZSB3aGF0IENPTkZJRyBvcHRpb25zIGFyZSBpbiBwbGF5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzAxMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ3OjMzLjU0NjE3MTU1NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcxNTkyNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NTMwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDE3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwKVxcdCs9IG10NzUzMC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICs9IG10NzUzMC1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgKz0gbXQ3NTMwLW1taW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNjA2MCkgKz0gbXY4OGU2MDYwLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2OiNpbmNsdWRlIFxcXCJtdDc1MzAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTk6bXQ3NTMwX3JlZ21hcF93cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIyLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDQ6bXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz02Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjY3Om10NzUzMF9tZGlvX3JlZ21hcF9sb2NrKHZvaWQgKm1kaW9fbG9jaylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy02OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjczOm10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTc3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3OTpcXHQucmVnX3dyaXRlID0gbXQ3NTMwX3JlZ21hcF93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4MDpcXHQucmVnX3JlYWQgPSBtdDc1MzBfcmVnbWFwX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTgzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NDptdDc1MzFfY3JlYXRlX3NnbWlpKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMDUtXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZW1heF9yZWdpc3RlciA9IDB4MTdjO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEwNjpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEwNzpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNldW5sb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMDgtXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZWxvY2tfYXJnID0gXFx1MDAyNnByaXYtXFx1MDAzZWJ1cy1cXHUwMDNlbWRpb19sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTA6XFx0XFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTEtXFx0XFx0XFx0XFx0XFx0ICBtdDc1MzFfcGNzX2NvbmZpZ1tpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTMxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzMi1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzYyMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEzMzpcXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzUzMFxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzBdLCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzNC1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzUzMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzFdLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM2LX07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTQ3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNDg6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE1MDpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUxLVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG47XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY0OlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjAzOlxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjA0LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZWdtYXBfY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIxND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxNTptdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxNzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjE4LVxcdGludCByZXQgPSAwLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIzMzpcXHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjM5OnN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDE6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1MC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTE6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjUyOlxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjUzOlxcdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NDpcXHQuc2h1dGRvd24gPSBtdDc1MzBfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjU1LVxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTY6XFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1kaW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NzpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc1MzBfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjU4LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjYxOm1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjExOiNpbmNsdWRlIFxcXCJtdDc1MzAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTMxPW10Nzk4OF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTMyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzozMzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzQtXFx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0NDpcXHRyZXQgPSBtdDc1MzBfcHJvYmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQ1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz02OD1zdGF0aWMgdm9pZCBtdDc5ODhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjcwOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcyLVxcdGlmIChwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjczOlxcdFxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTc2PXN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc3LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3ODpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTg4PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy05Mi1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjkzOlxcdFxcdC5uYW1lID0gXFxcIm10NzUzMC1tbWlvXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy05NC1cXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc5ODhfb2ZfbWF0Y2gsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2OiNpbmNsdWRlIFxcXCJtdDc1MzAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzE9c3RhdGljIHN0cnVjdCBtdDc1M3hfcGNzICpwY3NfdG9fbXQ3NTN4X3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNi0vKiBTdHJpbmcsIG9mZnNldCwgYW5kIHJlZ2lzdGVyIHNpemUgaW4gYnl0ZXMgaWYgZGlmZmVyZW50IGZyb20gNCBieXRlcyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzUzMF9taWJfZGVzYyBtdDc1MzBfbWliW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4LVxcdE1JQl9ERVNDKDEsIE1UNzUzMF9QT1JUX01JQl9UWF9EUk9QLCBcXFwiVHhEcm9wXFxcIiksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA6bXQ3NTMwX211dGV4X2xvY2soc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTc6bXQ3NTMwX211dGV4X3VubG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDpjb3JlX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjk2OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTk3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz05OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMDA6Y29yZV9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHNldClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwNjpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEzNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTM4OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEzOS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE0Mjpjb3JlX3NldChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE0My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQ3PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE0ODpjb3JlX2NsZWFyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNTQ6bXQ3NTMwX21paV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTYxLVxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNjI6XFx0XFx0XFx0XFxcImZhaWxlZCB0byB3cml0ZSBtdDc1MzAgcmVnaXN0ZXJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTY3PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY4Om10NzUzMF9taWlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTc2LVxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzc6XFx0XFx0XFx0XFxcImZhaWxlZCB0byByZWFkIG10NzUzMCByZWdpc3RlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE3OC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xODQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTg1Om10NzUzMF93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE4Ni17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4NzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTg4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODk6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5MC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTkxOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTk0PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk1Ol9tdDc1MzBfdW5sb2NrZWRfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Ni17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NzpcXHRyZXR1cm4gbXQ3NTMwX21paV9yZWFkKHAtXFx1MDAzZXByaXYsIHAtXFx1MDAzZXJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5OC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjAwPXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjAxOl9tdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDU6XFx0bXQ3NTMwX211dGV4X2xvY2socC1cXHUwMDNlcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA3OlxcdHZhbCA9IG10NzUzMF9taWlfcmVhZChwLVxcdTAwM2Vwcml2LCBwLVxcdTAwM2VyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwOTpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHAtXFx1MDAzZXByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjE0PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE1Om10NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjE2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE3OlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOS1cXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFxcdTAwMjZwLCBwcml2LCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjA6XFx0cmV0dXJuIF9tdDc1MzBfcmVhZChcXHUwMDI2cCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjIzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyNDptdDc1MzBfcm13KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI1LVxcdCAgIHUzMiBtYXNrLCB1MzIgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjc6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzMTpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzItfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzU6bXQ3NTMwX3NldChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzpcXHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDE6bXQ3NTMwX2NsZWFyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQzOlxcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0Nj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0NzptdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTAtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjUxOlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU0LVxcdHZhbCA9IEFUQ19CVVNZIHwgQVRDX01BVCgwKSB8IGNtZDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU1OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ny1cXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFxcdTAwMjZwLCBwcml2LCBNVDc1MzBfQVRDKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU4OlxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1OS1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBBVENfQlVTWSksIDIwLCAyMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjg6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX0FUQyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2OS1cXHRpZiAoKGNtZCA9PSBNVDc1MzBfRkRCX1JFQUQpIFxcdTAwMjZcXHUwMDI2ICh2YWwgXFx1MDAyNiBBVENfSU5WQUxJRCkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mjc4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI3OTptdDc1MzBfZmRiX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBzdHJ1Y3QgbXQ3NTMwX2ZkYiAqZmRiKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4NS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMzsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI4NjpcXHRcXHRyZWdbaV0gPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVFNSQTEgKyAoaSAqIDQpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMwND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMDU6bXQ3NTMwX2ZkYl93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUxNiB2aWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMwNi1cXHRcXHQgdTggcG9ydF9tYXNrLCBjb25zdCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzMC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzE6XFx0XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEExICsgKGkgKiA0KSwgcmVnW2ldKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzMyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzQtLyogU2V0IHVwIHN3aXRjaCBjb3JlIGNsb2NrIGZvciBNVDc1MzAgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM1OnN0YXRpYyB2b2lkIG10NzUzMF9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM3NT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzY6bXQ3NTMwX3NldHVwX3BvcnQ2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc3LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzc4OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNzktXFx0dTMyIG5jcG8xLCBzc2NfZGVsdGEsIHh0YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg0LVxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM4NTpcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QNkVDUiwgUDZfSU5URl9NT0RFX01BU0ssXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4Ni1cXHRcXHRcXHQgICBQNl9JTlRGX01PREUoMCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4OS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzkwOlxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSywgUDZfSU5URl9NT0RFKDEpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzkxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTI6XFx0eHRhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9NVFJBUCkgXFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDI4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQyOTptdDc1MzFfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNjpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfQ1JFVik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNzpcXHR0b3Bfc2lnID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1RPUF9TSUdfU1IpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Mzg6XFx0aHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9UUkFQKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDM5LVxcdGlmICgodmFsIFxcdTAwMjYgQ0hJUF9SRVZfTSkgXFx1MDAzZSAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0Ni1cXHQvKiBTdGVwIDEgOiBEaXNhYmxlIE1UNzUzMSBDT1JFUExMICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NzpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDgtXFx0dmFsIFxcdTAwMjY9IH5FTl9DT1JFUExMO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NDk6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDUwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTEtXFx0LyogU3RlcCAyOiBzd2l0Y2ggdG8gWFRBTCBvdXRwdXQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDUyOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1My1cXHR2YWwgfD0gU1dfQ0xLU1c7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NDpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NjpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU3LVxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9FTjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU4OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2MC1cXHQvKiBTdGVwIDM6IGRpc2FibGUgUExMR1AgYW5kIGVuYWJsZSBwcm9ncmFtIFBMTEdQICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MTpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjItXFx0dmFsIHw9IFNXX1BMTEdQO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjM6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjUtXFx0LyogU3RlcCA0OiBwcm9ncmFtIENPUkVQTEwgb3V0cHV0IGZyZXF1ZW5jeSB0byA1MDBNSHogKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY2OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjctXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1BPU0RJVl9NO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjgtXFx0dmFsIHw9IDIgXFx1MDAzY1xcdTAwM2MgUkdfQ09SRVBMTF9QT1NESVZfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY5OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzAtXFx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDczLVxcdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF8yNU1IWjpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc0OlxcdFxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzUtXFx0XFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDc2LVxcdFxcdHZhbCB8PSAweDE0MDAwMCBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc3OlxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzgtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OS1cXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfNDBNSFo6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MDpcXHRcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgxLVxcdFxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX007XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Mi1cXHRcXHR2YWwgfD0gMHgxOTAwMDAgXFx1MDAzY1xcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MzpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ny1cXHQvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gaGlnaCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODg6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4OS1cXHR2YWwgfD0gUkdfQ09SRVBMTF9TRE1fUENXX0NIRztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDkwOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTEtXFx0LyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTQtXFx0LyogU3RlcCA1OiBzZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5NTpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk2LVxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX0NIRztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk3OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OS1cXHQvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAwOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMi1cXHQvKiBFbmFibGUgMjUwU1NDIGNsb2NrIGZvciBSR01JSSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDM6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1IyLCAweDRmNDAwMDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNS1cXHQvKiBTdGVwIDY6IEVuYWJsZSBNVDc1MzEgUExMICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwNjpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA3LVxcdHZhbCB8PSBSR19DT1JFUExMX0VOO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDg6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTEwOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMS1cXHR2YWwgfD0gRU5fQ09SRVBMTDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTEyOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMy1cXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MTY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE3Om10NzUzMF9taWJfcmVzZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTk6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIxOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9GTFVTSCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyMjpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX01JQl9DQ1IsIENDUl9NSUJfQUNUSVZBVEUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjMtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNTpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMDpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzMS1cXHRcXHRcXHRcXHR1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTM2OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2M0NShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzctXFx0XFx0XFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU0MjpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQzLVxcdFxcdFxcdFxcdGludCByZWdudW0sIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQ5Om10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUwLVxcdFxcdFxcdGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1MS17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1MjpcXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUzLVxcdHUzMiByZWcsIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1ODpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTU5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NjA6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTYxLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTY4LVxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTY5OlxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzE6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTcyLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTc5LVxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTgwOlxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODI6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgzLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTkwLW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTkxOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01OTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1OTc6bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk4LVxcdFxcdFxcdCBpbnQgcmVnbnVtLCB1MTYgZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk5LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjAwOlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDEtXFx0dTMyIHZhbCwgcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA2OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwODpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDktXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTYtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MTc6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxOTpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjAtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjctXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjI4OlxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjI5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MzA6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjMxLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM3LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjM4OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02NDM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDQ6bXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ2OlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDctXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1MjpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NTQ6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU1LVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjYzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NjQ6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY2NjpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjctXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzQtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NzU6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY4MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY4MTptdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgyLVxcdFxcdFxcdCB1MTYgZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgzLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njg0OlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODUtXFx0aW50IHJldDtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MzMuNjIzMzM1MTZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI2NTIwNTE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzUzMCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIE1UNzUzMCBzd2l0Y2guIEl0J3MgbGlzdGluZyBgTkVUX0RTQV9NVDc1MzBgLCBgTkVUX0RTQV9NVDc1MzBfTURJT2AsIGFuZCBgTkVUX0RTQV9NVDc1MzBfTU1JT2AuIEtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGVzZSBkcml2ZXJzLCB0aGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgbXQ3NTMwLW1taW8uY2AgYW5kIGBtdDc1MzAuY2AgdGVsbHMgbWUgcmlnaHQgYXdheSB0aGF0IGBORVRfRFNBX01UNzUzMGAgKmFuZCogYE5FVF9EU0FfTVQ3NTMwX01NSU9gIGFyZSBnb2luZyB0byBiZSBlc3NlbnRpYWwgZm9yIHRoZSBjaGFuZ2VzIHRvIHRha2UgZWZmZWN0LiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRlZCwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgRFNBIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMganVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBpc3N1ZXMgZG93bnN0cmVhbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc3ODgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MzguODg4NTQyMzc5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjEwNDI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfRFNBX01UNzUzMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zNC1cXHRzZWxlY3QgUkVHTUFQX0lSUVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM1OlxcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNjpcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0NTpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDYtXFx0c2VsZWN0IE1FRElBVEVLX0dFX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01NSU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NjpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTctXFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MzguOTUwNjUzMzE2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNzM5NjM3ODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1UNzUzMCBTd2l0Y2ggQ2hpcCBTdXBwb3J0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGFkZGluZyBzdXBwb3J0IGZvciBhIG5ldyBzd2l0Y2ggY2hpcCwgdGhlIEVONzUyOCwgd2l0aGluIHRoZSBNVDc1MzAgRFNBIGRyaXZlci4gIFRoZSBlc3NlbnRpYWwgY29uZmlncyBuZWVkZWQgYXJlIGBORVRfRFNBX01UNzUzMGAgYW5kIGBORVRfRFNBX01UNzUzMF9NTUlPYC4gIFRoaXMgaXMgYSBwcmV0dHkgZm9jdXNlZCBjaGFuZ2UsIHNvIGl0J3MgZ29vZC5cblxuTXkgaW1tZWRpYXRlIGZvY3VzIHNoaWZ0cyB0byB0aGUgbmV3bHkgaW50cm9kdWNlZCBhbmQgbW9kaWZpZWQgZnVuY3Rpb25zOiBgZW43NTI4X21hY19wb3J0X2dldF9jYXBzYCwgYG10Nzk4OF9zZXR1cGAgKHdpdGggaXRzIG5ldyBgSURfRU43NTI4YCBibG9jayksIGFuZCBgbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlYCAoYWxzbyBtb2RpZmllZCB0byBpbmNsdWRlIGBJRF9FTjc1MjhgKS4gIGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgIGlzIGJyYW5kIG5ldywgd2hpY2ggbWVhbnMgaXQgd2lsbCBwcm9iYWJseSBuZWVkIHRob3JvdWdoIGF0dGVudGlvbiB3aGVuIGZ1enppbmcuXG5cbkFmdGVyIGEgcXVpY2sgYXNzZXNzbWVudCwgdGhlc2UgYXJlbid0IGhvdC1wYXRoIGZ1bmN0aW9ucywgc28gcG90ZW50aWFsIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGFyZSBsZXNzIG9mIGEgY29uY2Vybi4gYG10Nzk4OF9zZXR1cGAgaXMgYSBwcm9iZS10aW1lIGZ1bmN0aW9uLCBgZW43NTI4X21hY19wb3J0X2dldF9jYXBzYCBpcyBjYWxsZWQgZHVyaW5nIHBvcnQgc2V0dXAsIGFuZCBgbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlYCBpcyB0cmlnZ2VyZWQgYnkgY29uZHVpdCBzdGF0ZSBjaGFuZ2VzLlxuXG5Mb29raW5nIGNsb3NlciBhdCB0aGUgcGF0Y2gsIHRoZSBtYWluIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBtdDc1MzAtbW1pby5jYCB3aGVyZSB3ZSBzZWUgdGhlIGFkZGl0aW9uIG9mIHRoZSBFTjc1MjggY29tcGF0aWJsZSBzdHJpbmcgYW5kIGFuIGVudHJ5IGluIHRoZSBgbXQ3NTN4X3RhYmxlYC4gIGBtdDc1MzAuY2AgZ2V0cyB0aGUgYnVsayBvZiB0aGUgY2hhbmdlcy4gVGhlIHN3aXRjaCdzIFBIWXMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaCBwb3J0cyAxLi40KSwgc28gdGhleSdyZSByZWFjaGVkIHRocm91Z2ggdGhlIFBIWSdzIGludGVybmFsIGluZGlyZWN0IGFjY2VzcyByZWdpc3RlcnMuXG5cblRoZSBrZXkgYWRkaXRpb24gaXMgYGVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc2AsIHdoaWNoIGRlZmluZXMgdGhlIGNhcGFiaWxpdGllcyBmb3IgdGhlIEVONzUyOCBwb3J0cy4gUG9ydHMgMS00IGFyZSBpbnRlcm5hbCBhbmQgc3VwcG9ydCAxMC8xMDAvMTAwMCBNYnBzLCB3aGlsZSBwb3J0IDYgYWxzbyBzdXBwb3J0cyBpbnRlcm5hbCBtb2RlIGFuZCAxMDAwRkQuXG5cblRoZW4gdGhlcmUncyB0aGUgbW9kaWZpY2F0aW9uIHRvIGBtdDc5ODhfc2V0dXBgIHdoaWNoIGRpc2FibGVzIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgb24gdGhlIEVONzUyOCBMQU4gR1BIWXMuIEl0J3MgZGlzYWJsaW5nIHRoZSBhZHZlcnRpc2VtZW50IG9mIEVFRSBiZWNhdXNlIGl0IGNhdXNlcyBpc3N1ZXMgd2l0aCBsaW5rIHN0YWJpbGl0eS4gIEZpbmFsbHksIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIGlzIG1vZGlmaWVkIHRvIGluY2x1ZGUgSURfRU43NTI4LlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHJlYWNoYWJpbGl0eSB0aHJvdWdoIHRoZSBEU0EgY29yZSwgSSdtIGNvbmZpZGVudCBpbiBtYXJraW5nIHRoaXMgYXMgXCJXb3J0aEZ1enppbmc9dHJ1ZS5cIiAgVGhlIGZvY3VzIHN5bWJvbHMgYXJlIGNsZWFyOiBgZW43NTI4X21hY19wb3J0X2dldF9jYXBzYCwgYG10Nzk4OF9zZXR1cGAsIGFuZCBgbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlYC4gSSB3aWxsIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg2NjIsIk91dHB1dFRva2VucyI6MTczLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0ODowMi42OTAyOTM0OTdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjE1NzgxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQV9NVDc1MzBcIixcbiAgICBcIk5FVF9EU0FfTVQ3NTMwX01NSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNcIixcbiAgICBcIm10Nzk4OF9zZXR1cFwiLFxuICAgIFwibXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRWNvTmV0IEVONzUyOCBTb0MgYnVpbHQtaW4gc3dpdGNoIHRvIHRoZSBNZWRpYXRlayBNVDc1MzAgRFNBIGRyaXZlci4gVGhpcyBpbmNsdWRlcyBhIG5ldyBmdW5jdGlvbiBmb3IgZ2V0dGluZyBNQUMgcG9ydCBjYXBhYmlsaXRpZXMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gc3dpdGNoIHNldHVwIGFuZCBjb25kdWl0IHN0YXRlIGNoYW5nZSBsb2dpYy4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBkZXZpY2UgdHJlZSBhbmQgdGhlIHN3aXRjaCBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIHRoZSBEU0EgY29yZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FfTVQ3NTMwXCIsXG4gICAgXCJORVRfRFNBX01UNzUzMF9NTUlPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW43NTI4X21hY19wb3J0X2dldF9jYXBzXCIsXG4gICAgXCJtdDc5ODhfc2V0dXBcIixcbiAgICBcIm10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggU29DIGJ1aWx0LWluIHN3aXRjaCB0byB0aGUgTWVkaWF0ZWsgTVQ3NTMwIERTQSBkcml2ZXIuIFRoaXMgaW5jbHVkZXMgYSBuZXcgZnVuY3Rpb24gZm9yIGdldHRpbmcgTUFDIHBvcnQgY2FwYWJpbGl0aWVzIGFuZCBtb2RpZmljYXRpb25zIHRvIHN3aXRjaCBzZXR1cCBhbmQgY29uZHVpdCBzdGF0ZSBjaGFuZ2UgbG9naWMuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgZGV2aWNlIHRyZWUgYW5kIHRoZSBzd2l0Y2ggb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgRFNBIGNvcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow7tmnt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 07:33:03 +0000 UTC FinishedAt: 2026-07-11 07:48:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA_MT7530", "NET_DSA_MT7530_MMIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA_MT7530", "NET_DSA_MT7530_MMIO" ], "series_id": "006345a8-3446-4b6e-b5a2-0f8a799b0600" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "en7528_mac_port_get_caps", "mt7988_setup", "mt753x_conduit_state_change" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0FfTVQ3NTMwJiMzNDssCiAgICAmIzM0O05FVF9EU0FfTVQ3NTMwX01NSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHMmIzM0OywKICAgICYjMzQ7bXQ3OTg4X3NldHVwJiMzNDssCiAgICAmIzM0O210NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBFY29OZXQgRU43NTI4IFNvQyBidWlsdC1pbiBzd2l0Y2ggdG8gdGhlIE1lZGlhdGVrIE1UNzUzMCBEU0EgZHJpdmVyLiBUaGlzIGluY2x1ZGVzIGEgbmV3IGZ1bmN0aW9uIGZvciBnZXR0aW5nIE1BQyBwb3J0IGNhcGFiaWxpdGllcyBhbmQgbW9kaWZpY2F0aW9ucyB0byBzd2l0Y2ggc2V0dXAgYW5kIGNvbmR1aXQgc3RhdGUgY2hhbmdlIGxvZ2ljLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIGRldmljZSB0cmVlIGFuZCB0aGUgc3dpdGNoIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgdGhlIERTQSBjb3JlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1Y2YxOGVjMGI5NGJlMWMwMWZmNTk0NTIwY2QxNWM0YjIzYjRjNWY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDc6NDU6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tZWRpYXRlayxtdDc1MzAueWFtbFxuaW5kZXggODE1YTkwODA4OTAxMDQuLjkwYjM1ODJiNzYxOTA5IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sXG5AQCAtMTAwLDYgJiM0MzsxMDAsMTAgQEAgcHJvcGVydGllczpcbiAgICAgICAgICAgQnVpbHQtaW4gc3dpdGNoIG9mIHRoZSBBaXJvaGEgQU43NTgzIFNvQ1xuICAgICAgICAgY29uc3Q6IGFpcm9oYSxhbjc1ODMtc3dpdGNoXG4gXG4mIzQzOyAgICAgIC0gZGVzY3JpcHRpb246XG4mIzQzOyAgICAgICAgICBCdWlsdC1pbiBzd2l0Y2ggb2YgdGhlIEVjb05ldCBFTjc1MjggU29DXG4mIzQzOyAgICAgICAgY29uc3Q6IGVjb25ldCxlbjc1Mjgtc3dpdGNoXG4mIzQzO1xuICAgcmVnOlxuICAgICBtYXhJdGVtczogMVxuIFxuQEAgLTMxOCw2ICYjNDM7MzIyLDcgQEAgYWxsT2Y6XG4gICAgICAgICAgICAgLSBtZWRpYXRlayxtdDc5ODgtc3dpdGNoXG4gICAgICAgICAgICAgLSBhaXJvaGEsZW43NTgxLXN3aXRjaFxuICAgICAgICAgICAgIC0gYWlyb2hhLGFuNzU4My1zd2l0Y2hcbiYjNDM7ICAgICAgICAgICAgLSBlY29uZXQsZW43NTI4LXN3aXRjaFxuICAgICB0aGVuOlxuICAgICAgICRyZWY6IFwmIzM0OyMvJGRlZnMvYnVpbHRpbi1kc2EtcG9ydFwmIzM0O1xuICAgICAgIHByb3BlcnRpZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY1xuaW5kZXggMWRjOGI5M2ZiNTFhMTMuLjEwNjU2NzFiY2RkMTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXG5AQCAtMTMsNiAmIzQzOzEzLDcgQEBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc5ODhfb2ZfbWF0Y2hbXSA9IHtcbiBcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsYW43NTgzLXN3aXRjaFwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfQU43NTgzXSwgfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthaXJvaGEsZW43NTgxLXN3aXRjaFwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfRU43NTgxXSwgfSxcbiYjNDM7XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7ZWNvbmV0LGVuNzUyOC1zd2l0Y2hcJiMzNDssIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX0VONzUyOF0sIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWVkaWF0ZWssbXQ3OTg4LXN3aXRjaFwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3OTg4XSwgfSxcbiBcdHsgLyogc2VudGluZWwgKi8gfSxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggM2MyYTMwMjliMTBjZmIuLjJhZWNhZDc3YWY5YWQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbkBAIC0yOTEyLDYgJiM0MzsyOTEyLDMwIEBAIHN0YXRpYyB2b2lkIGVuNzU4MV9tYWNfcG9ydF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZW43NTI4X21hY19wb3J0X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4mIzQzO1x0XHRcdFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbiYjNDM7e1xuJiM0MztcdHN3aXRjaCAocG9ydCkge1xuJiM0MztcdC8qIFBvcnRzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gc3dpdGNoIFBIWXMuIFRoZXJlIGlzIG5vIE1JSSBwaW5vdXQuICovXG4mIzQzO1x0Y2FzZSAxIC4uLiA0OlxuJiM0MztcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbiYjNDM7XHRcdFx0ICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuJiM0MztcbiYjNDM7XHRcdGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMEZEO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdC8qIFBvcnQgNiBpcyBjb25uZWN0ZWQgdG8gU29DJiMzOTtzIEdNQUMgYXQgMTAwMCBNYnBzIGZ1bGwgZHVwbGV4LiBUaGVyZVxuJiM0MztcdCAqIGlzIG5vIE1JSSBwaW5vdXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0Y2FzZSA2OlxuJiM0MztcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbiYjNDM7XHRcdFx0ICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuJiM0MztcbiYjNDM7XHRcdGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWRcbiBtdDc1MzBfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcbiBcdFx0ICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuQEAgLTMyNTQsNyAmIzQzOzMyNzgsOCBAQCBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0ICogZm9yd2FyZGVkIHRvIHRoZSBudW1lcmljYWxseSBzbWFsbGVzdCBDUFUgcG9ydCB3aG9zZSBjb25kdWl0XG4gXHQgKiBpbnRlcmZhY2UgaXMgdXAuXG4gXHQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWlkICE9IElEX01UNzUzMCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2VpZCAhPSBJRF9NVDc2MjEpXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfTVQ3NTMwIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWlkICE9IElEX01UNzYyMSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcHJpdi1cdTAwM2VpZCAhPSBJRF9FTjc1MjgpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1hc2sgPSBCSVQoY3B1X2RwLVx1MDAzZWluZGV4KTtcbkBAIC0zMzE5LDkgJiM0MzszMzQ0LDE3IEBAIHN0YXRpYyBpbnQgbXQ3NTN4X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHR9XG4gfVxuIFxuJiM0MzsvKiBUaGUgRU43NTI4IExBTiBwb3J0cyBhcmUgaW50ZWdyYXRlZCBHUEhZcyBhdCBNRElPIGFkZHJlc3NlcyA5Li4xMiAoc3dpdGNoXG4mIzQzOyAqIHBvcnRzIDEuLjQpIG9uIHRoZSBzd2l0Y2ggaW50ZXJuYWwgTURJTyBidXMsIHJlYWNoYWJsZSBvbmx5IHRocm91Z2ggdGhlIFBIWVxuJiM0MzsgKiBpbmRpcmVjdCBhY2Nlc3MgcmVnaXN0ZXJzLiBUaGVyZSBpcyBubyBtZGlvZGV2IHRvIGRlcml2ZSB0aGUgYWRkcmVzc2VzIGZyb20uXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIEVONzUyOF9HUEhZX0JBU0VcdFx0OVxuJiM0MzsjZGVmaW5lIEVONzUyOF9OVU1fR1BIWVNcdFx0NFxuJiM0MztcbiBzdGF0aWMgaW50IG10Nzk4OF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4ge1xuIFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XHRpbnQgaTtcbiBcbiBcdC8qIFJlc2V0IHRoZSBzd2l0Y2ggKi9cbiBcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtXHUwMDNlcnN0Yyk7XG5AQCAtMzM0Miw2ICYjNDM7MzM3NSwxNyBAQCBzdGF0aWMgaW50IG10Nzk4OF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHQvKiBSZXNldCB0aGUgc3dpdGNoIFBIWXMgKi9cbiBcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfU1lTX0NUUkwsIFNZU19DVFJMX1BIWV9SU1QpO1xuIFxuJiM0MztcdC8qIFRoZSBFTjc1MjggTEFOIEdQSFlzIGFkdmVydGlzZSBFRUUgYnkgZGVmYXVsdCwgYnV0IG5lZ290aWF0aW5nIEVFRVxuJiM0MztcdCAqIHdpdGggY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhblxuJiM0MztcdCAqIHVuc3RhYmxlIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvblxuJiM0MztcdCAqIHRoZW0uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaWQgPT0gSURfRU43NTI4KVxuJiM0MztcdFx0Zm9yIChpID0gRU43NTI4X0dQSFlfQkFTRTtcbiYjNDM7XHRcdCAgICAgaSBcdTAwM2MgRU43NTI4X0dQSFlfQkFTRSAmIzQzOyBFTjc1MjhfTlVNX0dQSFlTOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHByaXYsIGksIE1ESU9fTU1EX0FOLFxuJiM0MztcdFx0XHRcdFx0XHQgTURJT19BTl9FRUVfQURWLCAwKTtcbiYjNDM7XG4gXHRyZXR1cm4gbXQ3NTMxX3NldHVwX2NvbW1vbihkcyk7XG4gfVxuIFxuQEAgLTM0NTksNiAmIzQzOzM1MDMsMTYgQEAgY29uc3Qgc3RydWN0IG10NzUzeF9pbmZvIG10NzUzeF90YWJsZVtdID0ge1xuIFx0XHQucGh5X3dyaXRlX2M0NSA9IG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZSxcbiBcdFx0Lm1hY19wb3J0X2dldF9jYXBzID0gZW43NTgxX21hY19wb3J0X2dldF9jYXBzLFxuIFx0fSxcbiYjNDM7XHRbSURfRU43NTI4XSA9IHtcbiYjNDM7XHRcdC5pZCA9IElEX0VONzUyOCxcbiYjNDM7XHRcdC5wY3Nfb3BzID0gXHUwMDI2bXQ3NTMwX3Bjc19vcHMsXG4mIzQzO1x0XHQuc3dfc2V0dXAgPSBtdDc5ODhfc2V0dXAsXG4mIzQzO1x0XHQucGh5X3JlYWRfYzIyID0gbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQsXG4mIzQzO1x0XHQucGh5X3dyaXRlX2MyMiA9IG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZSxcbiYjNDM7XHRcdC5waHlfcmVhZF9jNDUgPSBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZCxcbiYjNDM7XHRcdC5waHlfd3JpdGVfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlLFxuJiM0MztcdFx0Lm1hY19wb3J0X2dldF9jYXBzID0gZW43NTI4X21hY19wb3J0X2dldF9jYXBzLFxuJiM0MztcdH0sXG4gfTtcbiBFWFBPUlRfU1lNQk9MX0dQTChtdDc1M3hfdGFibGUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaFxuaW5kZXggZGQzM2IwZGYzNDE5ZTMuLjVmMWU4NDFmNDJjMGVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmhcbkBAIC0yMSw2ICYjNDM7MjEsNyBAQCBlbnVtIG10NzUzeF9pZCB7XG4gXHRJRF9NVDc5ODggPSAzLFxuIFx0SURfRU43NTgxID0gNCxcbiBcdElEX0FONzU4MyA9IDUsXG4mIzQzO1x0SURfRU43NTI4ID0gNixcbiB9O1xuIFxuICNkZWZpbmVcdE5VTV9UUkdNSUlfQ1RSTFx0XHRcdDVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBX01UNzUzMCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX01UNzUzMF9NTUlPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW43NTI4X21hY19wb3J0X2dldF9jYXBzJiMzNDssCiAgICAmIzM0O210Nzk4OF9zZXR1cCYjMzQ7LAogICAgJiMzNDttdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRWNvTmV0IEVONzUyOCBTb0MgYnVpbHQtaW4gc3dpdGNoIHRvIHRoZSBNZWRpYXRlayBNVDc1MzAgRFNBIGRyaXZlci4gVGhpcyBpbmNsdWRlcyBhIG5ldyBmdW5jdGlvbiBmb3IgZ2V0dGluZyBNQUMgcG9ydCBjYXBhYmlsaXRpZXMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gc3dpdGNoIHNldHVwIGFuZCBjb25kdWl0IHN0YXRlIGNoYW5nZSBsb2dpYy4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBkZXZpY2UgdHJlZSBhbmQgdGhlIHN3aXRjaCBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIHRoZSBEU0EgY29yZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1Y2YxOGVjMGI5NGJlMWMwMWZmNTk0NTIwY2QxNWM0YjIzYjRjNWY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTEgMDc6NDU6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tZWRpYXRlayxtdDc1MzAueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sCmluZGV4IDgxNWE5MDgwODkwMTA0Li45MGIzNTgyYjc2MTkwOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWwKQEAgLTEwMCw2ICYjNDM7MTAwLDEwIEBAIHByb3BlcnRpZXM6CiAgICAgICAgICAgQnVpbHQtaW4gc3dpdGNoIG9mIHRoZSBBaXJvaGEgQU43NTgzIFNvQwogICAgICAgICBjb25zdDogYWlyb2hhLGFuNzU4My1zd2l0Y2gKIAomIzQzOyAgICAgIC0gZGVzY3JpcHRpb246CiYjNDM7ICAgICAgICAgIEJ1aWx0LWluIHN3aXRjaCBvZiB0aGUgRWNvTmV0IEVONzUyOCBTb0MKJiM0MzsgICAgICAgIGNvbnN0OiBlY29uZXQsZW43NTI4LXN3aXRjaAomIzQzOwogICByZWc6CiAgICAgbWF4SXRlbXM6IDEKIApAQCAtMzE4LDYgJiM0MzszMjIsNyBAQCBhbGxPZjoKICAgICAgICAgICAgIC0gbWVkaWF0ZWssbXQ3OTg4LXN3aXRjaAogICAgICAgICAgICAgLSBhaXJvaGEsZW43NTgxLXN3aXRjaAogICAgICAgICAgICAgLSBhaXJvaGEsYW43NTgzLXN3aXRjaAomIzQzOyAgICAgICAgICAgIC0gZWNvbmV0LGVuNzUyOC1zd2l0Y2gKICAgICB0aGVuOgogICAgICAgJHJlZjogJiMzNDsjLyRkZWZzL2J1aWx0aW4tZHNhLXBvcnQmIzM0OwogICAgICAgcHJvcGVydGllczoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMKaW5kZXggMWRjOGI5M2ZiNTFhMTMuLjEwNjU2NzFiY2RkMTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYwpAQCAtMTMsNiAmIzQzOzEzLDcgQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10Nzk4OF9vZl9tYXRjaFtdID0gewogCXsgLmNvbXBhdGlibGUgPSAmIzM0O2Fpcm9oYSxhbjc1ODMtc3dpdGNoJiMzNDssIC5kYXRhID0gJmFtcDttdDc1M3hfdGFibGVbSURfQU43NTgzXSwgfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDthaXJvaGEsZW43NTgxLXN3aXRjaCYjMzQ7LCAuZGF0YSA9ICZhbXA7bXQ3NTN4X3RhYmxlW0lEX0VONzU4MV0sIH0sCiYjNDM7CXsgLmNvbXBhdGlibGUgPSAmIzM0O2Vjb25ldCxlbjc1Mjgtc3dpdGNoJiMzNDssIC5kYXRhID0gJmFtcDttdDc1M3hfdGFibGVbSURfRU43NTI4XSwgfSwKIAl7IC5jb21wYXRpYmxlID0gJiMzNDttZWRpYXRlayxtdDc5ODgtc3dpdGNoJiMzNDssIC5kYXRhID0gJmFtcDttdDc1M3hfdGFibGVbSURfTVQ3OTg4XSwgfSwKIAl7IC8qIHNlbnRpbmVsICovIH0sCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCmluZGV4IDNjMmEzMDI5YjEwY2ZiLi4yYWVjYWQ3N2FmOWFkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwpAQCAtMjkxMiw2ICYjNDM7MjkxMiwzMCBAQCBzdGF0aWMgdm9pZCBlbjc1ODFfbWFjX3BvcnRfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKJiM0MzsJCQkJICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZykKJiM0Mzt7CiYjNDM7CXN3aXRjaCAocG9ydCkgewomIzQzOwkvKiBQb3J0cyB3aGljaCBhcmUgY29ubmVjdGVkIHRvIHN3aXRjaCBQSFlzLiBUaGVyZSBpcyBubyBNSUkgcGlub3V0LiAqLwomIzQzOwljYXNlIDEgLi4uIDQ6CiYjNDM7CQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLAomIzQzOwkJCSAgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CQljb25maWctJmd0O21hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwIHwgTUFDXzEwMCB8IE1BQ18xMDAwRkQ7CiYjNDM7CQlicmVhazsKJiM0MzsKJiM0MzsJLyogUG9ydCA2IGlzIGNvbm5lY3RlZCB0byBTb0MmIzM5O3MgR01BQyBhdCAxMDAwIE1icHMgZnVsbCBkdXBsZXguIFRoZXJlCiYjNDM7CSAqIGlzIG5vIE1JSSBwaW5vdXQuCiYjNDM7CSAqLwomIzQzOwljYXNlIDY6CiYjNDM7CQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLAomIzQzOwkJCSAgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CiYjNDM7CQljb25maWctJmd0O21hY19jYXBhYmlsaXRpZXMgfD0gTUFDXzEwMDBGRDsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQKIG10NzUzMF9tYWNfY29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLAogCQkgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCkBAIC0zMjU0LDcgJiM0MzszMjc4LDggQEAgbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywKIAkgKiBmb3J3YXJkZWQgdG8gdGhlIG51bWVyaWNhbGx5IHNtYWxsZXN0IENQVSBwb3J0IHdob3NlIGNvbmR1aXQKIAkgKiBpbnRlcmZhY2UgaXMgdXAuCiAJICovCi0JaWYgKHByaXYtJmd0O2lkICE9IElEX01UNzUzMCAmYW1wOyZhbXA7IHByaXYtJmd0O2lkICE9IElEX01UNzYyMSkKJiM0MzsJaWYgKHByaXYtJmd0O2lkICE9IElEX01UNzUzMCAmYW1wOyZhbXA7IHByaXYtJmd0O2lkICE9IElEX01UNzYyMSAmYW1wOyZhbXA7CiYjNDM7CSAgICBwcml2LSZndDtpZCAhPSBJRF9FTjc1MjgpCiAJCXJldHVybjsKIAogCW1hc2sgPSBCSVQoY3B1X2RwLSZndDtpbmRleCk7CkBAIC0zMzE5LDkgJiM0MzszMzQ0LDE3IEBAIHN0YXRpYyBpbnQgbXQ3NTN4X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJfQogfQogCiYjNDM7LyogVGhlIEVONzUyOCBMQU4gcG9ydHMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaAomIzQzOyAqIHBvcnRzIDEuLjQpIG9uIHRoZSBzd2l0Y2ggaW50ZXJuYWwgTURJTyBidXMsIHJlYWNoYWJsZSBvbmx5IHRocm91Z2ggdGhlIFBIWQomIzQzOyAqIGluZGlyZWN0IGFjY2VzcyByZWdpc3RlcnMuIFRoZXJlIGlzIG5vIG1kaW9kZXYgdG8gZGVyaXZlIHRoZSBhZGRyZXNzZXMgZnJvbS4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIEVONzUyOF9HUEhZX0JBU0UJCTkKJiM0MzsjZGVmaW5lIEVONzUyOF9OVU1fR1BIWVMJCTQKJiM0MzsKIHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIHsKIAlzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0mZ3Q7cHJpdjsKJiM0MzsJaW50IGk7CiAKIAkvKiBSZXNldCB0aGUgc3dpdGNoICovCiAJcmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0mZ3Q7cnN0Yyk7CkBAIC0zMzQyLDYgJiM0MzszMzc1LDE3IEBAIHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIAkvKiBSZXNldCB0aGUgc3dpdGNoIFBIWXMgKi8KIAltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1NZU19DVFJMLCBTWVNfQ1RSTF9QSFlfUlNUKTsKIAomIzQzOwkvKiBUaGUgRU43NTI4IExBTiBHUEhZcyBhZHZlcnRpc2UgRUVFIGJ5IGRlZmF1bHQsIGJ1dCBuZWdvdGlhdGluZyBFRUUKJiM0MzsJICogd2l0aCBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuCiYjNDM7CSAqIHVuc3RhYmxlIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvbgomIzQzOwkgKiB0aGVtLgomIzQzOwkgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2lkID09IElEX0VONzUyOCkKJiM0MzsJCWZvciAoaSA9IEVONzUyOF9HUEhZX0JBU0U7CiYjNDM7CQkgICAgIGkgJmx0OyBFTjc1MjhfR1BIWV9CQVNFICYjNDM7IEVONzUyOF9OVU1fR1BIWVM7IGkmIzQzOyYjNDM7KQomIzQzOwkJCW10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBpLCBNRElPX01NRF9BTiwKJiM0MzsJCQkJCQkgTURJT19BTl9FRUVfQURWLCAwKTsKJiM0MzsKIAlyZXR1cm4gbXQ3NTMxX3NldHVwX2NvbW1vbihkcyk7CiB9CiAKQEAgLTM0NTksNiAmIzQzOzM1MDMsMTYgQEAgY29uc3Qgc3RydWN0IG10NzUzeF9pbmZvIG10NzUzeF90YWJsZVtdID0gewogCQkucGh5X3dyaXRlX2M0NSA9IG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZSwKIAkJLm1hY19wb3J0X2dldF9jYXBzID0gZW43NTgxX21hY19wb3J0X2dldF9jYXBzLAogCX0sCiYjNDM7CVtJRF9FTjc1MjhdID0gewomIzQzOwkJLmlkID0gSURfRU43NTI4LAomIzQzOwkJLnBjc19vcHMgPSAmYW1wO210NzUzMF9wY3Nfb3BzLAomIzQzOwkJLnN3X3NldHVwID0gbXQ3OTg4X3NldHVwLAomIzQzOwkJLnBoeV9yZWFkX2MyMiA9IG10NzUzMV9pbmRfYzIyX3BoeV9yZWFkLAomIzQzOwkJLnBoeV93cml0ZV9jMjIgPSBtdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUsCiYjNDM7CQkucGh5X3JlYWRfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQsCiYjNDM7CQkucGh5X3dyaXRlX2M0NSA9IG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZSwKJiM0MzsJCS5tYWNfcG9ydF9nZXRfY2FwcyA9IGVuNzUyOF9tYWNfcG9ydF9nZXRfY2FwcywKJiM0MzsJfSwKIH07CiBFWFBPUlRfU1lNQk9MX0dQTChtdDc1M3hfdGFibGUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmggYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmgKaW5kZXggZGQzM2IwZGYzNDE5ZTMuLjVmMWU4NDFmNDJjMGVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oCkBAIC0yMSw2ICYjNDM7MjEsNyBAQCBlbnVtIG10NzUzeF9pZCB7CiAJSURfTVQ3OTg4ID0gMywKIAlJRF9FTjc1ODEgPSA0LAogCUlEX0FONzU4MyA9IDUsCiYjNDM7CUlEX0VONzUyOCA9IDYsCiB9OwogCiAjZGVmaW5lCU5VTV9UUkdNSUlfQ1RSTAkJCTUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDgxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgTmV0d29yayBTd2l0Y2ggRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBFY29OZXQgRU43NTI4IFNvQyYjMzk7cyBidWlsdC1pbiBzd2l0Y2ggdG8gdGhlIE1lZGlhdGVrIE1UNzUzMCBEU0EgZHJpdmVyLiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyBzZXZlcmFsIGZpbGVzOiB0aGUgRGV2aWNlIFRyZWUgYmluZGluZ3MsIHRoZSBNTUlPIGFuZCBjb3JlIGRyaXZlciBmaWxlcywgYW5kIHRoZSBoZWFkZXIgZmlsZS4gTG9va2luZyBhdCB0aGUgY2hhbmdlcywgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGRldmljZS1zcGVjaWZpYyBtYXRjaGluZywgY2FwYWJpbGl0aWVzLCBhbmQgd29ya2Fyb3VuZHMgZm9yIHRoaXMgcGFydGljdWxhciBzd2l0Y2guIFNwZWNpZmljYWxseSwgSSBzZWUgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYCBiZWluZyBhZGRlZCwgYWxvbmcgd2l0aCBmdW5jdGlvbnMgYW5kIGlkZW50aWZpZXJzIHRoYXQgcmVsYXRlIHRvIHRoaXMgbmV3IGhhcmR3YXJlLiBUaGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIHdvcmthcm91bmQgdG8gZGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvbiBpdHMgR1BIWXMuCgpOb3csIGFzIGFuIGV4cGVydCwgbXkgcHJpbWFyeSB0aG91Z2h0IGlzLCAmIzM0O0NhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsgVGhpcyBpcyBhIERTQSBzd2l0Y2ggZHJpdmVyLCBzbyBpdCYjMzk7cyBsaWtlbHkgcHJvYmVkIHRocm91Z2ggdGhlIERldmljZSBUcmVlLiBJIGltbWVkaWF0ZWx5IHRoaW5rIG9mIFFFTVUuIENhbiBJIGVtdWxhdGUgdGhlIEVONzUyOCBvciB0aGUgTVQ3NTMwL01UNzk4OCBpbiBRRU1VPyBBbG1vc3QgY2VydGFpbmx5IG5vdCDigJMgSSYjMzk7dmUgbmV2ZXIgaGVhcmQgb2Ygc3VjaCBzcGVjaWZpYyBlbXVsYXRpb24gYmVpbmcgYXZhaWxhYmxlLiBUaGVzZSBhcmUgdHlwaWNhbGx5IGxvdy1sZXZlbCBoYXJkd2FyZSBkcml2ZXJzLgoKSG93ZXZlciwgYSBnbGltbWVyIG9mIGhvcGUgYXJpc2VzOiBzeXprYWxsZXIuIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBhcmJpdHJhcnkgRGV2aWNlIFRyZWVzLiBUaGVvcmV0aWNhbGx5LCBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGluLCBpdCAqY291bGQqIGJlIHByb2JlZCBieSBzeXprYWxsZXIgaWYgdGhlIERUIG5vZGUgbWF0Y2hlcy4gVGhlIGNhdGNoPyBJdCYjMzk7cyBhbiBNTUlPIGRyaXZlci4gV2l0aG91dCB0aGUgKmFjdHVhbCogaGFyZHdhcmUsIE1NSU8gYWNjZXNzZXMgYXJlIGdvaW5nIHRvIGJlIHByb2JsZW1hdGljLiBUaGV5JiMzOTtsbCBlaXRoZXIgZmF1bHQgaWYgdW5tYXBwZWQgb3IganVzdCByZXR1cm4gbWVhbmluZ2xlc3MgZGF0YSBpZiBtYXBwZWQgdG8gZHVtbXkgbWVtb3J5LiBBbHRob3VnaCBzeXprYWxsZXIgKmRvZXMqIG1hcCBzb21lIGR1bW15IG1lbW9yeSBmb3IgTU1JTywgaXQgZG9lc24mIzM5O3QgZ2l2ZSBtZSBtdWNoIGhvcGUgdGhhdCB0aGUgZHJpdmVyIHdpbGwgYmVoYXZlIGluIGEgbWVhbmluZ2Z1bCB3YXkuCgpCdXQsIHN5emthbGxlciAqZG9lcyogZnV6eiBkZXZpY2UgdHJlZXMgYW5kICpjYW4qIHByb2JlIGRyaXZlcnMuIFNvIGxldCYjMzk7cyBjaGVjayBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nIQoKTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBqdXN0IGRvIE1NSU8gd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24gb3IgdmlydHVhbCBpbnRlcmZhY2VzIGFyZSB1c3VhbGx5ICpub3QqIHdvcnRoIGZ1enppbmcuIFRoZXkgdGVuZCB0byBqdXN0IGNyYXNoIG9yIGZhaWwgZWFybHkgZHVyaW5nIHRoZSBwcm9iZSBkdWUgdG8gdGhlIGhhcmR3YXJlIG5vdCByZXNwb25kaW5nLCBhbmQgdGhleSByYXJlbHkgZXhwb3NlIGludGVyZXN0aW5nLCBzb2Z0d2FyZS1yZWFjaGFibGUgYXR0YWNrIHN1cmZhY2VzLiBUaGVzZSB0eXBlcyBvZiBkcml2ZXJzIGFyZSBsaWtlIFVTQiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltIG9yIHZoY2ksIHRoYXQgb2ZmZXIgYW4gZW50cnkgcG9pbnQgdG8gdGhlIHN5c3RlbSBhbmQgaGF2ZSBncmVhdCBwb3RlbnRpYWwgdG8gYmUgZnV6emVkLgoKV2FpdCwgbG9va2luZyBjbG9zZXIgYXQgdGhlIHByb21wdCBmb3IgdGhlIHRhc2suIEl0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCAqZXZlbiogd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgc2VlbXMgcHJldHR5IGNsZWFyLiBNeSBpbnN0aW5jdHMgYXJlIHJpZ2h0LgoKU28sIHRoZSBgbXQ3NTMwYCBzd2l0Y2ggZHJpdmVyLi4uaXMgaXQgcmVhY2hhYmxlIGluIFFFTVU/IEkgZG91YnQgaXQsIGJ1dCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgZG9uJiMzOTt0IG5lZWQgdG8gbG9vayBhdCBRRU1VIHNvdXJjZSBjb2RlLiBJIGtub3cgaXQmIzM5O3MgYSBoYXJkd2FyZSBkcml2ZXIuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGRyaXZlciBiZWluZyB0aWdodGx5IGNvdXBsZWQgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgaW5hY2Nlc3NpYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB0aGF0IHRoaXMgaXMgKm5vdCogd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc1MzAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDE3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzApXHQmIzQzOz0gbXQ3NTMwLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMF9NRElPKSAmIzQzOz0gbXQ3NTMwLW1kaW8ub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01NSU8pICYjNDM7PSBtdDc1MzAtbW1pby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTYwNjApICYjNDM7PSBtdjg4ZTYwNjAub1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY6I2luY2x1ZGUgXCYjMzQ7bXQ3NTMwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTk6bXQ3NTMwX3JlZ21hcF93cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjAte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjItXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9NDM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDQ6bXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNDUte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDY6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNDctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9NjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjY3Om10NzUzMF9tZGlvX3JlZ21hcF9sb2NrKHZvaWQgKm1kaW9fbG9jaylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTY4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NzM6bXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jayh2b2lkICptZGlvX2xvY2spXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNzctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3ODpzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9idXMgbXQ3NTMwX3JlZ21hcF9idXMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3OTpcdC5yZWdfd3JpdGUgPSBtdDc1MzBfcmVnbWFwX3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6ODA6XHQucmVnX3JlYWQgPSBtdDc1MzBfcmVnbWFwX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04MS19O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTgzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg0Om10NzUzMV9jcmVhdGVfc2dtaWkoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwNS1cdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNlbWF4X3JlZ2lzdGVyID0gMHgxN2M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMDY6XHRcdG10NzUzMV9wY3NfY29uZmlnW2ldLVx1MDAzZWxvY2sgPSBtdDc1MzBfbWRpb19yZWdtYXBfbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEwNzpcdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNldW5sb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwOC1cdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNlbG9ja19hcmcgPSBcdTAwMjZwcml2LVx1MDAzZWJ1cy1cdTAwM2VtZGlvX2xvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMDktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTA6XHRcdHJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cdTAwM2VkZXYsIFx1MDAyNm10NzUzMF9yZWdtYXBfYnVzLCBwcml2LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTExLVx0XHRcdFx0XHQgIG10NzUzMV9wY3NfY29uZmlnW2ldKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzE6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXQ3NTMwX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzItXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWVkaWF0ZWssbXQ3NjIxXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTMzOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzUzMFwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NTMwXSwgfSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzNC1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDc1MzFcJiMzNDssIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzUzMV0sIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM2LX07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXQ3NTMwX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xNDc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTQ4Om10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDkte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTUwOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUxLVx0c3RydWN0IGRldmljZV9ub2RlICpkbjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNjQ6XHRyZXQgPSBtdDc1MzBfcHJvYmVfY29tbW9uKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTY1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMDM6XHRwcml2LVx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cdTAwM2VkZXYsIFx1MDAyNm10NzUzMF9yZWdtYXBfYnVzLCBwcml2LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjA0LVx0XHRcdFx0XHRcdTAwMjZyZWdtYXBfY29uZmlnKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0yMTQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxNTptdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIxNi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjE4LVx0aW50IHJldCA9IDAsIGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjMzOlx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjM4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjM5OnN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDAte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjQxOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNTAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTE6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTI6XHQucHJvYmUgID0gbXQ3NTMwX3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjUzOlx0LnJlbW92ZSA9IG10NzUzMF9yZW1vdmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTQ6XHQuc2h1dGRvd24gPSBtdDc1MzBfc2h1dGRvd24sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNTUtXHQubWRpb2Rydi5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTY6XHRcdC5uYW1lID0gXCYjMzQ7bXQ3NTMwLW1kaW9cJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTc6XHRcdC5vZl9tYXRjaF90YWJsZSA9IG10NzUzMF9vZl9tYXRjaCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjYxOm1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTEwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6MTE6I2luY2x1ZGUgXCYjMzQ7bXQ3NTMwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTEyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTMxPW10Nzk4OF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzIte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6MzM6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zNC1cdHZvaWQgX19pb21lbSAqYmFzZV9hZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NDQ6XHRyZXQgPSBtdDc1MzBfcHJvYmVfY29tbW9uKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTY4PXN0YXRpYyB2b2lkIG10Nzk4OF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTY5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjcwOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcyLVx0aWYgKHByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3MzpcdFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03NC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9NzY9c3RhdGljIHZvaWQgbXQ3OTg4X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03Ny17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3ODpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9ODg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTg4X3BsYXRmb3JtX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy05Mi1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo5MzpcdFx0Lm5hbWUgPSBcJiMzNDttdDc1MzAtbW1pb1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTk0LVx0XHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc5ODhfb2ZfbWF0Y2gsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2OiNpbmNsdWRlIFwmIzM0O210NzUzMC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjctXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMxPXN0YXRpYyBzdHJ1Y3QgbXQ3NTN4X3BjcyAqcGNzX3RvX210NzUzeF9wY3Moc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM2LS8qIFN0cmluZywgb2Zmc2V0LCBhbmQgcmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyBpZiBkaWZmZXJlbnQgZnJvbSA0IGJ5dGVzICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzc6c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc1MzBfbWliX2Rlc2MgbXQ3NTMwX21pYltdID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4LVx0TUlCX0RFU0MoMSwgTVQ3NTMwX1BPUlRfTUlCX1RYX0RST1AsIFwmIzM0O1R4RHJvcFwmIzM0OyksXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTQ5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA6bXQ3NTMwX211dGV4X2xvY2soc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzptdDc1MzBfbXV0ZXhfdW5sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTYzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ6Y29yZV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05NS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo5NjpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTctfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz05OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwMDpjb3JlX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgc2V0KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMDY6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDctXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEzNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMzg6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEzOS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE0MT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE0Mjpjb3JlX3NldChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQ3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ4OmNvcmVfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTU0Om10NzUzMF9taWlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE1NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2MS1cdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNjI6XHRcdFx0XCYjMzQ7ZmFpbGVkIHRvIHdyaXRlIG10NzUzMCByZWdpc3RlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTYzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjc9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2ODptdDc1MzBfbWlpX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE3Ni1cdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzc6XHRcdFx0XCYjMzQ7ZmFpbGVkIHRvIHJlYWQgbXQ3NTMwIHJlZ2lzdGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNzgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xODQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODU6bXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xODYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4NzpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE4OC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODk6XHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTkxOlx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTItfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xOTQ9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NTpfbXQ3NTMwX3VubG9ja2VkX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Ni17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk3Olx0cmV0dXJuIG10NzUzMF9taWlfcmVhZChwLVx1MDAzZXByaXYsIHAtXHUwMDNlcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDA9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwMTpfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDU6XHRtdDc1MzBfbXV0ZXhfbG9jayhwLVx1MDAzZXByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDc6XHR2YWwgPSBtdDc1MzBfbWlpX3JlYWQocC1cdTAwM2Vwcml2LCBwLVx1MDAzZXJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwOTpcdG10NzUzMF9tdXRleF91bmxvY2socC1cdTAwM2Vwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIxND1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE1Om10NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxNzpcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTktXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIwOlx0cmV0dXJuIF9tdDc1MzBfcmVhZChcdTAwMjZwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjEtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjQ6bXQ3NTMwX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI1LVx0ICAgdTMyIG1hc2ssIHUzMiBzZXQpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjc6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzE6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNTptdDc1MzBfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzpcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQxOm10NzUzMF9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQyLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDM6XHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0NzptdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTAtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1MTpcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU0LVx0dmFsID0gQVRDX0JVU1kgfCBBVENfTUFUKDApIHwgY21kO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1NTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTctXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMF9BVEMpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1ODpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTktXHRcdFx0XHQgISh2YWwgXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY3LVx0ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY4Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX0FUQyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY5LVx0aWYgKChjbWQgPT0gTVQ3NTMwX0ZEQl9SRUFEKSBcdTAwMjZcdTAwMjYgKHZhbCBcdTAwMjYgQVRDX0lOVkFMSUQpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNzg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNzk6bXQ3NTMwX2ZkYl9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgc3RydWN0IG10NzUzMF9mZGIgKmZkYilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI4NjpcdFx0cmVnW2ldID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX1RTUkExICYjNDM7IChpICogNCkpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzA0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzA1Om10NzUzMF9mZGJfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MTYgdmlkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMwNi1cdFx0IHU4IHBvcnRfbWFzaywgY29uc3QgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzMwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMzsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzMxOlx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQTEgJiM0MzsgKGkgKiA0KSwgcmVnW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzItfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzQtLyogU2V0IHVwIHN3aXRjaCBjb3JlIGNsb2NrIGZvciBNVDc1MzAgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzU6c3RhdGljIHZvaWQgbXQ3NTMwX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mzc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzc2Om10NzUzMF9zZXR1cF9wb3J0NihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc3LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzg6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM3OS1cdHUzMiBuY3BvMSwgc3NjX2RlbHRhLCB4dGFsO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODQtXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSSkge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM4NTpcdFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4Ni1cdFx0XHQgICBQNl9JTlRGX01PREUoMCkpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzkwOlx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLCBQNl9JTlRGX01PREUoMSkpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTI6XHR4dGFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX01UUkFQKSBcdTAwMjYgTVQ3NTMwX1hUQUxfTUFTSztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTQyOD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQyOTptdDc1MzFfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX0NSRVYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNzpcdHRvcF9zaWcgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfVE9QX1NJR19TUik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM4Olx0aHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9UUkFQKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzktXHRpZiAoKHZhbCBcdTAwMjYgQ0hJUF9SRVZfTSkgXHUwMDNlIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0Ni1cdC8qIFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NDc6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0OC1cdHZhbCBcdTAwMjY9IH5FTl9DT1JFUExMO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0OTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDUwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1MS1cdC8qIFN0ZXAgMjogc3dpdGNoIHRvIFhUQUwgb3V0cHV0ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDUyOlx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTMtXHR2YWwgfD0gU1dfQ0xLU1c7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU0Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU3LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfRU47XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU4Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2MC1cdC8qIFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjE6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Mi1cdHZhbCB8PSBTV19QTExHUDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjM6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2NC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjUtXHQvKiBTdGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2NjpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Ny1cdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1BPU0RJVl9NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2OC1cdHZhbCB8PSAyIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1BPU0RJVl9TO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2OTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3MC1cdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzMtXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfMjVNSFo6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc0Olx0XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzUtXHRcdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzYtXHRcdHZhbCB8PSAweDE0MDAwMCBcdTAwM2NcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc3Olx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzgtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OS1cdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF80ME1IWjpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODA6XHRcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4MS1cdFx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Mi1cdFx0dmFsIHw9IDB4MTkwMDAwIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODM6XHRcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ny1cdC8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBoaWdoICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg4Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg5LVx0dmFsIHw9IFJHX0NPUkVQTExfU0RNX1BDV19DSEc7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDkwOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDkxLVx0LyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3MgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk0LVx0LyogU3RlcCA1OiBzZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk1Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk2LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19DSEc7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk3Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OS1cdC8qIEVuYWJsZSAzMjVNIGNsb2NrIGZvciBTR01JSSAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMDpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDItXHQvKiBFbmFibGUgMjUwU1NDIGNsb2NrIGZvciBSR01JSSAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMzpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSMiwgMHg0ZjQwMDAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA1LVx0LyogU3RlcCA2OiBFbmFibGUgTVQ3NTMxIFBMTCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwNjpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNy1cdHZhbCB8PSBSR19DT1JFUExMX0VOO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwODpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTA6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMS1cdHZhbCB8PSBFTl9DT1JFUExMO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxMjpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEzLVx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUxNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNzptdDc1MzBfbWliX3Jlc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTgte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxOTpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTIwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyMTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9GTFVTSCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIyOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0FDVElWQVRFKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjMtfVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyNC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjU6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMDpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTMxLVx0XHRcdFx0dTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzNjpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzctXHRcdFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU0MjpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDMtXHRcdFx0XHRpbnQgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01NDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU0OTptdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUwLVx0XHRcdGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUxLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTI6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTMtXHR1MzIgcmVnLCB2YWw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTg6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTYwOlx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU2MS1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTY4LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU2OTpcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTcxOlx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3Mi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTc5LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU4MDpcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTgyOlx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4My1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTkwLW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1OTE6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTk2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1OTc6bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTgtXHRcdFx0IGludCByZWdudW0sIHUxNiBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5OS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjAwOlx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjAxLVx0dTMyIHZhbCwgcmVnO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA2Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjA3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwODpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDktXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxNi1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MTc6XHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjE4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxOTpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjAtXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyNy1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjI4Olx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MzA6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjMxLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02Mzctb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYzODpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02NDM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0NDptdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0NS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ2Olx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ3LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1MjpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NTQ6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU1LVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjY0Olx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2NS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NjY6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjY3LVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzQtb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY3NTpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjc2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02ODA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY4MTptdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODItXHRcdFx0IHUxNiBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4My17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njg0Olx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjg1LVx0aW50IHJldDtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjU5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0aCB0byBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGBtdDc1MzBfcHJvYmVfY29tbW9uYCBmdW5jdGlvbiBnZXRzIGV4ZWN1dGVkLCBwYXJ0aWN1bGFybHkgaW4gYSBRRU1VIGVudmlyb25tZW50LiBJdCBsb29rcyBsaWtlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHRocm91Z2ggZWl0aGVyIE1ESU8gb3IgTU1JTy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYG10NzUzMC1tbWlvLmNgIHJlZ2lzdGVycyBhIHBsYXRmb3JtIGRyaXZlciBjYWxsZWQgYG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXJgLiBUaGUgY3J1Y2lhbCBzdGVwIGFwcGVhcnMgdG8gYmUgdGhhdCB0aGUgYG10Nzk4OF9wcm9iZWAgZnVuY3Rpb24gKmV2ZW50dWFsbHkqIGNhbGxzIGBtdDc1MzBfcHJvYmVfY29tbW9uYC4KClRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gSSB0cmlnZ2VyIHRoaXMgd2l0aGluIFFFTVU/IEl0IHNlZW1zIHBsYXVzaWJsZS4gSWYgc3l6a2FsbGVyIGNyYWZ0cyBhIGRldmljZSB0cmVlIHRoYXQgaW5jbHVkZXMgdGhlIG5vZGUgcHJvcGVydHkgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYCwgdGhlIHBsYXRmb3JtIGRyaXZlciBzaG91bGQgcHJvYmUuIER1cmluZyB0aGlzIHByb2JlLCB0aGUgY29kZSBpcyBnb2luZyB0byBtYXAgdGhlIE1NSU8gcmVnaW9uIGFuZCwgY3J1Y2lhbGx5LCBjYWxsIGBtdDc1MzBfcHJvYmVfY29tbW9uYC4gVGhlbiwgdGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBkbyB0aGUgaW5pdGlhbGl6YXRpb24sIGFuZCByZWdpc3RlciBhIERTQSBzd2l0Y2guCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiB3aGF0IGRvZXMgYG10NzUzMF9wcm9iZV9jb21tb25gIGFjdHVhbGx5ICpkbyo/IEkgbmVlZCB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIHRvIHNlZSBpZiBpdCYjMzk7cyByZWFjaGFibGUgYW5kIGlmIGl0JiMzOTtzIGRvaW5nIHdoYXQgSSBleHBlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTMwX3Byb2JlX2NvbW1vbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTQ4PW10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTYzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY0Olx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE2NS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzE9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0NDpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00NS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM1MTk9aW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzUyMDptdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTIxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzU1MC19XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzU1MTpFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaD05NDE9c3RhdGljIGlubGluZSB2b2lkIElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaC05NDctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmg6OTQ4OmludCBtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmgtOTQ5LXZvaWQgbXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM0MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE1UNzUzMCBQcm9iZSBGdW5jdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgTVQ3NTMwIGRyaXZlciBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgYG10NzUzMF9wcm9iZV9jb21tb25gIHdpdGhpbiBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBmaXJzdCBwbGFjZSBJIHN0YXJ0IHdoZW4gZGVidWdnaW5nIG9yIHVuZGVyc3RhbmRpbmcgYSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBmdW5jdGlvbiBpcyB0aGUgY29yZSBvZiB0aGUgZGV2aWNlIHByb2JpbmcgcHJvY2VzcywgYW5kIHRodXMgd2hlcmUgdGhlIGluaXRpYWwgZGV2aWNlIHNldHVwIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uIGlzIGhhbmRsZWQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgbGlrZWx5IHN0ZXBzIHBlcmZvcm1lZCB0aGVyZTogZGV0ZXJtaW5pbmcgdGhlIGRldmljZSYjMzk7cyBoYXJkd2FyZSwgcmVxdWVzdGluZyB0aGUgY29ycmVjdCBjbG9ja3MsIG1heWJlIHNldHRpbmcgdXAgdGhlIGludGVycnVwdCBsaW5lcyBhbmQgSS9PIG1lbW9yeSByZWdpb25zLiBJIGFsc28gbmVlZCB0byBzZWUgaG93IHRoZSBkc2EgZHJpdmVyIGlzIHdvcmtpbmcgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIGRldmljZS4gSSBhbnRpY2lwYXRlIGEgZmFpciBhbW91bnQgb2YgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcmVnaXN0ZXIgYWNjZXNzIGluaXRpYWxpemF0aW9uLCBhbmQgcHJvYmFibHkgc29tZSBlYXJseSBQSFkgY29uZmlndXJhdGlvbiBjYWxscyB0byBnZXQgdGhpcyBjaGlwIHVwIGFuZCBydW5uaW5nLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjaGVja2luZyBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhpcyBwcm9iZSBsb29rcyBsaWtlLiBIb3BlZnVsbHksIGl0JiMzOTtzIHdlbGwtZG9jdW1lbnRlZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1MTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM1MTk6XHRpbnRcbjM1MjA6XHRtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbjM1MjE6XHR7XG4zNTIyOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LVx1MDAzZWRldjtcbjM1MjM6XHRcbjM1MjQ6XHRcdHByaXYtXHUwMDNlZHMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYtXHUwMDNlZHMpLCBHRlBfS0VSTkVMKTtcbjM1MjU6XHRcdGlmICghcHJpdi1cdTAwM2VkcylcbjM1MjY6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zNTI3Olx0XG4zNTI4Olx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZWRldiA9IGRldjtcbjM1Mjk6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlbnVtX3BvcnRzID0gTVQ3NTMwX05VTV9QT1JUUztcbjM1MzA6XHRcbjM1MzE6XHRcdC8qIEdldCB0aGUgaGFyZHdhcmUgaWRlbnRpZmllciBmcm9tIHRoZSBkZXZpY2V0cmVlIG5vZGUuXG4zNTMyOlx0XHQgKiBXZSB3aWxsIG5lZWQgaXQgZm9yIHNvbWUgb2YgdGhlIGNsb2NrIGFuZCByZWd1bGF0b3Igc2V0dXAuXG4zNTMzOlx0XHQgKi9cbjM1MzQ6XHRcdHByaXYtXHUwMDNlaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuMzUzNTpcdFx0aWYgKCFwcml2LVx1MDAzZWluZm8pXG4zNTM2Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzUzNzpcdFxuMzUzODpcdFx0cHJpdi1cdTAwM2VpZCA9IHByaXYtXHUwMDNlaW5mby1cdTAwM2VpZDtcbjM1Mzk6XHRcdHByaXYtXHUwMDNlZGV2ID0gZGV2O1xuMzU0MDpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjM1NDE6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XG4zNTQyOlx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XG4zNTQzOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1NDQ6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNnByaXYtXHUwMDNlc3RhdHNfbG9jayk7XG4zNTQ1Olx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcbjM1NDY6XHRcbjM1NDc6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpO1xuMzU0ODpcdFxuMzU0OTpcdFx0cmV0dXJuIDA7XG4zNTUwOlx0fVxuMzU1MTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xuMzU1MjpcdFxuMzU1MzpcdHZvaWRcbjM1NTQ6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4zNTU1Olx0e1xuMzU1NjpcdFx0aWYgKHByaXYtXHUwMDNlaXJxX2RvbWFpbilcbjM1NTc6XHRcdFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XG4zNTU4Olx0XG4zNTU5Olx0XHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cdTAwM2Vkcyk7XG4zNTYwOlx0XG4zNTYxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1NjI6XHR9XG4zNTYzOlx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xuMzU2NDpcdFxuMzU2NTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7U2VhbiBXYW5nIFx1MDAzY3NlYW4ud2FuZ0BtZWRpYXRlay5jb21cdTAwM2VcJiMzNDspO1xuMzU2NjpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEcml2ZXIgZm9yIE1lZGlhdGVrIE1UNzUzMCBTd2l0Y2hcJiMzNDspO1xuMzU2NzpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MzcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUqKgoKT2theSwgc28gbG9va2luZyBhdCBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAsIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEFsbCBpdCYjMzk7cyBkb2luZyBpcyBhbGxvY2F0aW5nIHNvbWUgbWVtb3J5IGFuZCBzZXR0aW5nIHVwIHNvbWUgZGF0YSBzdHJ1Y3R1cmVzLiBJdCYjMzk7cyBub3QgYWN0dWFsbHkgdGhlIGJpdCB3aGVyZSB0aGUgc3dpdGNoIGdldHMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEU0Egc3Vic3lzdGVtLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIFRoZSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgdGhhdCB2aXRhbCBgZHNhX3JlZ2lzdGVyX3N3aXRjaGAgZnVuY3Rpb24gY2FsbGVkPyBUaW1lIHRvIGdvIGh1bnRpbmcuLi4KCkxldCYjMzk7cyBzZWUsIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpcyBsb2NhdGVkIGluIGBtdDc5ODhfcHJvYmVgIHdpdGhpbiB0aGUgYG10NzUzMC1tbWlvLmNgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gbG9vayBmb3IgdGhlIHN3aXRjaCByZWdpc3RyYXRpb24gdG8gb2NjdXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMxOlx0bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gIDMyOlx0e1xuICAzMzpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2O1xuICAzNDpcdFx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XG4gIDM1Olx0XHRpbnQgcmV0O1xuICAzNjpcdFxuICAzNzpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XG4gIDM4Olx0XHRpZiAoIXByaXYpXG4gIDM5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA0MDpcdFxuICA0MTpcdFx0cHJpdi1cdTAwM2VidXMgPSBOVUxMO1xuICA0MjpcdFx0cHJpdi1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiAgNDM6XHRcbiAgNDQ6XHRcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG4gIDQ1Olx0XHRpZiAocmV0KVxuICA0NjpcdFx0XHRyZXR1cm4gcmV0O1xuICA0NzpcdFxuICA0ODpcdFx0cHJpdi1cdTAwM2Vyc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChcdTAwMjZwZGV2LVx1MDAzZWRldiwgTlVMTCk7XG4gIDQ5Olx0XHRpZiAoSVNfRVJSKHByaXYtXHUwMDNlcnN0YykpIHtcbiAgNTA6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Q291bGRuJiMzOTt0IGdldCBvdXIgcmVzZXQgbGluZVxcblwmIzM0Oyk7XG4gIDUxOlx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcnN0Yyk7XG4gIDUyOlx0XHR9XG4gIDUzOlx0XG4gIDU0Olx0XHRiYXNlX2FkZHIgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XG4gIDU1Olx0XHRpZiAoSVNfRVJSKGJhc2VfYWRkcikpIHtcbiAgNTY6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y2Fubm90IHJlcXVlc3QgSS9PIG1lbW9yeSBzcGFjZVxcblwmIzM0Oyk7XG4gIDU3Olx0XHRcdHJldHVybiAtRU5YSU87XG4gIDU4Olx0XHR9XG4gIDU5Olx0XG4gIDYwOlx0XHRwcml2LVx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgYmFzZV9hZGRyLFxuICA2MTpcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnN3X3JlZ21hcF9jb25maWcpO1xuICA2MjpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpXG4gIDYzOlx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbiAgNjQ6XHRcbiAgNjU6XHRcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuICA2NjpcdH1cbiAgNjc6XHRcbiAgNjg6XHRzdGF0aWMgdm9pZCBtdDc5ODhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gIDY5Olx0e1xuICA3MDpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG4gIDcxOlx0XG4gIDcyOlx0XHRpZiAocHJpdilcbiAgNzM6XHRcdFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG4gIDc0Olx0fVxuICA3NTpcdFxuICA3NjpcdHN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuICA3NzpcdHtcbiAgNzg6XHRcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuICA3OTpcdFxuICA4MDpcdFx0aWYgKCFwcml2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQxNAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzk4OCBTd2l0Y2ggUHJvYmUqKgoKT2theSwgc28gYG10Nzk4OF9wcm9iZWAgY2FsbHMgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIOKAkyB0aGF0JiMzOTtzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludC4gUmlnaHQsIGFuZCBgZHNhX3JlZ2lzdGVyX3N3aXRjaGAgdGhlbiB0YWtlcyBvdmVyLCBpbml0aWF0aW5nIHRoZSBzd2l0Y2gmIzM5O3Mgc2V0dXAgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcsIGJlY2F1c2UgdGhvc2Ugc2V0dXAgZnVuY3Rpb25zIGFyZSBpbmV2aXRhYmx5IGdvaW5nIHRvIGludm9sdmUgaGFyZHdhcmUgYWNjZXNzZXMsIHBva2luZyBhdCB0aGUgTU1JTyByZWdpb25zLiBOb3csIHRoZSBiaWcgcXVlc3Rpb24gaXMsIHdoYXQgaGFwcGVucyBpZiB0aGVyZSYjMzk7cyAqbm8qIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PyBTcGVjaWZpY2FsbHksIGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcgbGlrZSB3ZSBkbywgd2l0aCBubyBhY3R1YWwgc3dpdGNoIHByZXNlbnQ/CgpTeXprYWxsZXIsIGluIGl0cyBicmlsbGlhbmNlLCBwcm92aWRlcyB0aGVzZSBmYWtlIE1NSU8gcmVnaW9ucywgdXN1YWxseSBmaWxsZWQgd2l0aCBlaXRoZXIgemVyb2VzIG9yIG9uZXMuIFdpbGwgdGhlIHByb2JlIHN1Y2NlZWQgaW4gdGhpcyBzY2VuYXJpbz8gSSBuZWVkIHRvIGxvb2sgYXQgYG10Nzk4OF9zZXR1cGAg4oCTIHRoYXQmIzM5O3MgdGhlIHNldHVwIGZ1bmN0aW9uIHNwZWNpZmljIHRvIGBJRF9FTjc1MjhgLCB0aGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYW5zd2VyLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgYmVpbmcgcmVhZCBhbmQgd3JpdHRlbiBhbmQgaWYgdGhlIGVycm9yIGhhbmRsaW5nIGlzIHJvYnVzdCBlbm91Z2guIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIHRoZSBwcm9iaW5nIHdpbGwgZmFpbCBvciB3aGV0aGVyIHdlIHdpbGwgaGF2ZSBhIGZhbHNlIHBvc2l0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNDcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM0NzpcdC8qIFRoZSBFTjc1MjggTEFOIHBvcnRzIGFyZSBpbnRlZ3JhdGVkIEdQSFlzIGF0IE1ESU8gYWRkcmVzc2VzIDkuLjEyIChzd2l0Y2hcbjMzNDg6XHQgKiBwb3J0cyAxLi40KSBvbiB0aGUgc3dpdGNoIGludGVybmFsIE1ESU8gYnVzLCByZWFjaGFibGUgb25seSB0aHJvdWdoIHRoZSBQSFlcbjMzNDk6XHQgKiBpbmRpcmVjdCBhY2Nlc3MgcmVnaXN0ZXJzLiBUaGVyZSBpcyBubyBtZGlvZGV2IHRvIGRlcml2ZSB0aGUgYWRkcmVzc2VzIGZyb20uXG4zMzUwOlx0ICovXG4zMzUxOlx0I2RlZmluZSBFTjc1MjhfR1BIWV9CQVNFXHRcdDlcbjMzNTI6XHQjZGVmaW5lIEVONzUyOF9OVU1fR1BIWVNcdFx0NFxuMzM1MzpcdFxuMzM1NDpcdHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbjMzNTU6XHR7XG4zMzU2Olx0XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuMzM1NzpcdFx0aW50IGk7XG4zMzU4Olx0XG4zMzU5Olx0XHQvKiBSZXNldCB0aGUgc3dpdGNoICovXG4zMzYwOlx0XHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVx1MDAzZXJzdGMpO1xuMzM2MTpcdFx0dXNsZWVwX3JhbmdlKDIwLCA1MCk7XG4zMzYyOlx0XHRyZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtXHUwMDNlcnN0Yyk7XG4zMzYzOlx0XHR1c2xlZXBfcmFuZ2UoMjAsIDUwKTtcbjMzNjQ6XHRcbjMzNjU6XHRcdC8qIEFONzU4MyByZXF1aXJlIGFkZGl0aW9uYWwgdHdlYWsgdG8gQ09OTl9DRkcgKi9cbjMzNjY6XHRcdGlmIChwcml2LVx1MDAzZWlkID09IElEX0FONzU4MylcbjMzNjc6XHRcdFx0bXQ3NTMwX3Jtdyhwcml2LCBBTjc1ODNfR0VQSFlfQ09OTl9DRkcsXG4zMzY4Olx0XHRcdFx0ICAgQU43NTgzX0NTUl9EUEhZX0NLSU5fU0VMIHxcbjMzNjk6XHRcdFx0XHQgICBBTjc1ODNfQ1NSX1BIWV9DT1JFX1JFR19DTEtfU0VMIHxcbjMzNzA6XHRcdFx0XHQgICBBTjc1ODNfQ1NSX0VUSEVSX0FGRV9QV0QsXG4zMzcxOlx0XHRcdFx0ICAgQU43NTgzX0NTUl9EUEhZX0NLSU5fU0VMIHxcbjMzNzI6XHRcdFx0XHQgICBBTjc1ODNfQ1NSX1BIWV9DT1JFX1JFR19DTEtfU0VMIHxcbjMzNzM6XHRcdFx0XHQgICBGSUVMRF9QUkVQKEFONzU4M19DU1JfRVRIRVJfQUZFX1BXRCwgMCkpO1xuMzM3NDpcdFxuMzM3NTpcdFx0LyogUmVzZXQgdGhlIHN3aXRjaCBQSFlzICovXG4zMzc2Olx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1NZU19DVFJMLCBTWVNfQ1RSTF9QSFlfUlNUKTtcbjMzNzc6XHRcbjMzNzg6XHRcdC8qIFRoZSBFTjc1MjggTEFOIEdQSFlzIGFkdmVydGlzZSBFRUUgYnkgZGVmYXVsdCwgYnV0IG5lZ290aWF0aW5nIEVFRVxuMzM3OTpcdFx0ICogd2l0aCBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuXG4zMzgwOlx0XHQgKiB1bnN0YWJsZSBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIERpc2FibGUgRUVFIGFkdmVydGlzZW1lbnQgb25cbjMzODE6XHRcdCAqIHRoZW0uXG4zMzgyOlx0XHQgKi9cbjMzODM6XHRcdGlmIChwcml2LVx1MDAzZWlkID09IElEX0VONzUyOClcbjMzODQ6XHRcdFx0Zm9yIChpID0gRU43NTI4X0dQSFlfQkFTRTtcbjMzODU6XHRcdFx0ICAgICBpIFx1MDAzYyBFTjc1MjhfR1BIWV9CQVNFICYjNDM7IEVONzUyOF9OVU1fR1BIWVM7IGkmIzQzOyYjNDM7KVxuMzM4NjpcdFx0XHRcdG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBpLCBNRElPX01NRF9BTixcbjMzODc6XHRcdFx0XHRcdFx0XHQgTURJT19BTl9FRUVfQURWLCAwKTtcbjMzODg6XHRcbjMzODk6XHRcdHJldHVybiBtdDc1MzFfc2V0dXBfY29tbW9uKGRzKTtcbjMzOTA6XHR9XG4zMzkxOlx0XG4zMzkyOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBtdDc1MzBfc3dpdGNoX29wcyA9IHtcbjMzOTM6XHRcdC5nZXRfdGFnX3Byb3RvY29sXHQ9IG10a19nZXRfdGFnX3Byb3RvY29sLFxuMzM5NDpcdFx0LnNldHVwXHRcdFx0PSBtdDc1M3hfc2V0dXAsXG4zMzk1Olx0XHQudGVhcmRvd25cdFx0PSBtdDc1M3hfdGVhcmRvd24sXG4zMzk2Olx0XHQucHJlZmVycmVkX2RlZmF1bHRfbG9jYWxfY3B1X3BvcnQgPSBtdDc1M3hfcHJlZmVycmVkX2RlZmF1bHRfbG9jYWxfY3B1X3BvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODIzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gdGhpcyBlbWJlZGRlZCBzeXN0ZW1zIG5ldHdvcmtpbmcgY29udGV4dDoKCioqQW5hbHl6aW5nIHRoZSBNVDc5ODggYW5kIE1UNzUzMSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtdDc5ODhfc2V0dXBgIGZ1bmN0aW9uLCBhbmQgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYG10NzUzMV9zZXR1cF9jb21tb24oZHMpYC4gVGhlICYjMzk7ZHMmIzM5OyBsaWtlbHkgcmVmZXJzIHRvIGEgZGV2aWNlLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlLiBBbHJpZ2h0LCB0aGlzIGlzIGEgY29tbW9uIHBhdHRlcm4g4oCTIHdlIGhhdmUgYSBzcGVjaWZpYyBzZXR1cCBmdW5jdGlvbiBmb3IgdGhlIE1UNzk4OCwgYnV0IGl0IGxldmVyYWdlcyBhIG1vcmUgZ2VuZXJpYyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciB0aGUgTVQ3NTMxLCB3aGljaCBpcyBwcm9iYWJseSB0aGUgdW5kZXJseWluZyBzd2l0Y2ggY2hpcC4gSXQgbWFrZXMgc2Vuc2UgdG8gc2hhcmUgY29kZSBsaWtlIHRoaXMuIE5vdywgdG8gdHJ1bHkgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZywgSSBuZWVkIHRvIGRpdmUgaW50byBgbXQ3NTMxX3NldHVwX2NvbW1vbmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQmIzM5O3MgZG9pbmcgd2l0aCB0aGlzIGRldmljZSBzdHJ1Y3R1cmUgKGRzKS4gSXMgaXQgY29uZmlndXJpbmcgdGhlIFBIWXM/IFNldHRpbmcgdXAgcmVnaXN0ZXJzPyBJbml0aWFsaXppbmcgdGhlIE1BQyBhZGRyZXNzZXM/IEkmIzM5O20gYmV0dGluZyBpdCYjMzk7cyBkb2luZyB0aGUgbG93LWxldmVsIHJlZ2lzdGVyIHNldHVwIGFuZCBicmluZ2luZyB0aGUgc3dpdGNoIHVwIGludG8gYSBrbm93biBzdGF0ZS4gU28sIGxldCYjMzk7cyBnbyBjaGVjayB0aGF0IHJvdXRpbmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIGNvbmZpZ3VyYXRpb24sIFBIWSBpbml0aWFsaXphdGlvbiwgYW5kIHBvc3NpYmx5IHNvbWUgYmFzaWMgcG9ydCBjb25maWd1cmF0aW9uIGFzIGEgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMV9zZXR1cF9jb21tb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNjM1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjM2Om10NzUzMV9zZXR1cF9jb21tb24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNzA3PW10NzUzMV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI3OTQtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjc5NTpcdHJldCA9IG10NzUzMV9zZXR1cF9jb21tb24oZHMpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI3OTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMzU0PXN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4OC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzg5Olx0cmV0dXJuIG10NzUzMV9zZXR1cF9jb21tb24oZHMpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzOTAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDUwMAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIGBtdDc1MzFfc2V0dXBfY29tbW9uYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbXQ3NTMxX3NldHVwX2NvbW1vbmAgZnVuY3Rpb24uIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBnb2luZyB0byBiZSBhIGNvbW1vbiBzZXR1cCByb3V0aW5lIHNwZWNpZmljYWxseSBmb3IgdGhlIE1UNzUzMSBjaGlwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBhbmQgY29uZmlndXJlcyB0aGUgY29yZSBhc3BlY3RzIG9mIHRoaXMgcGFydGljdWxhciBzd2l0Y2guIEkmIzM5O20gZ29pbmcgdG8gYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpbmdzIGhhcHBlbiwgYW55IHJlZ2lzdGVyIHdyaXRlcywgYW5kIHdoYXQga2luZCBvZiBhc3N1bXB0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhpcyBmdW5jdGlvbiBoYXMgb24gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIHRoZSBvdmVyYWxsIGRyaXZlciBjb250ZXh0LiBUaGlzIGxpa2VseSBzZXRzIHVwIHRoZSBiYXNpYyBjbG9ja2luZywgcmVzZXQgc2VxdWVuY2VzLCBhbmQgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBuZWNlc3NhcnkgZm9yIHRoZSBzd2l0Y2ggdG8gZnVuY3Rpb24gY29ycmVjdGx5IGJlZm9yZSBtb3JlIHNwZWNpZmljIGZlYXR1cmVzIG9yIHBvcnQgc2V0dGluZ3MgYXJlIGFwcGxpZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBsaWtlIHJhY2UgY29uZGl0aW9ucywgaW5jb3JyZWN0IHJlZ2lzdGVyIHZhbHVlcywgb3IgbGFjayBvZiBlcnJvciBoYW5kbGluZy4gVWx0aW1hdGVseSwgSSYjMzk7bSBhc3Nlc3NpbmcgdGhpcyBmb3Igb3ZlcmFsbCBjb2RlIHF1YWxpdHksIGJlc3QgcHJhY3RpY2VzLCBhbmQgd2hldGhlciBJIGNhbiB0cnVzdCB0aGlzIGZ1bmN0aW9uIHRvIGJlIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI2MzU6XHRzdGF0aWMgaW50XG4yNjM2Olx0bXQ3NTMxX3NldHVwX2NvbW1vbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4yNjM3Olx0e1xuMjYzODpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbjI2Mzk6XHRcdGludCByZXQsIGk7XG4yNjQwOlx0XG4yNjQxOlx0XHRkcy1cdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9IHRydWU7XG4yNjQyOlx0XHRkcy1cdTAwM2V1bnRhZ192bGFuX2F3YXJlX2JyaWRnZV9wdmlkID0gdHJ1ZTtcbjI2NDM6XHRcdGRzLVx1MDAzZW10dV9lbmZvcmNlbWVudF9pbmdyZXNzID0gdHJ1ZTtcbjI2NDQ6XHRcdGRzLVx1MDAzZWFnZWluZ190aW1lX21pbiA9IDIgKiAxMDAwO1xuMjY0NTpcdFx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gKEFHRV9DTlRfTUFYICYjNDM7IDEpICogKEFHRV9VTklUX01BWCAmIzQzOyAxKSAqIDEwMDA7XG4yNjQ2Olx0XG4yNjQ3Olx0XHRtdDc1M3hfdHJhcF9mcmFtZXMocHJpdik7XG4yNjQ4Olx0XG4yNjQ5Olx0XHQvKiBFbmFibGUgYW5kIHJlc2V0IE1JQiBjb3VudGVycyAqL1xuMjY1MDpcdFx0bXQ3NTMwX21pYl9yZXNldChkcyk7XG4yNjUxOlx0XG4yNjUyOlx0XHQvKiBEaXNhYmxlIGZsb29kaW5nIG9uIGFsbCBwb3J0cyAqL1xuMjY1MzpcdFx0bXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzWF9NRkMsIEJDX0ZGUF9NQVNLIHwgVU5NX0ZGUF9NQVNLIHxcbjI2NTQ6XHRcdFx0ICAgICBVTlVfRkZQX01BU0spO1xuMjY1NTpcdFxuMjY1NjpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2Vkcy1cdTAwM2VudW1fcG9ydHM7IGkmIzQzOyYjNDM7KSB7XG4yNjU3Olx0XHRcdC8qIENsZWFyIGxpbmsgc2V0dGluZ3MgYW5kIGVuYWJsZSBmb3JjZSBtb2RlIHRvIGZvcmNlIGxpbmsgZG93blxuMjY1ODpcdFx0XHQgKiBvbiBhbGwgcG9ydHMgdW50aWwgdGhleSYjMzk7cmUgZW5hYmxlZCBsYXRlci5cbjI2NTk6XHRcdFx0ICovXG4yNjYwOlx0XHRcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTNYX1BNQ1JfUChpKSxcbjI2NjE6XHRcdFx0XHQgICBQTUNSX0xJTktfU0VUVElOR1NfTUFTSyB8XG4yNjYyOlx0XHRcdFx0ICAgTVQ3NTNYX0ZPUkNFX01PREUocHJpdi1cdTAwM2VpZCksXG4yNjYzOlx0XHRcdFx0ICAgTVQ3NTNYX0ZPUkNFX01PREUocHJpdi1cdTAwM2VpZCkpO1xuMjY2NDpcdFxuMjY2NTpcdFx0XHQvKiBEaXNhYmxlIGZvcndhcmRpbmcgYnkgZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi9cbjI2NjY6XHRcdFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUENSX1AoaSksIFBDUl9NQVRSSVhfTUFTSyxcbjI2Njc6XHRcdFx0XHQgICBQQ1JfTUFUUklYX0NMUik7XG4yNjY4Olx0XG4yNjY5Olx0XHRcdC8qIERpc2FibGUgbGVhcm5pbmcgYnkgZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi9cbjI2NzA6XHRcdFx0bXQ3NTMwX3NldChwcml2LCBNVDc1MzBfUFNDX1AoaSksIFNBX0RJUyk7XG4yNjcxOlx0XG4yNjcyOlx0XHRcdG10NzUzMF9zZXQocHJpdiwgTVQ3NTMxX0RCR19DTlQoaSksIE1UNzUzMV9ESVNfQ0xSKTtcbjI2NzM6XHRcbjI2NzQ6XHRcdFx0aWYgKGRzYV9pc19jcHVfcG9ydChkcywgaSkpIHtcbjI2NzU6XHRcdFx0XHRtdDc1M3hfY3B1X3BvcnRfZW5hYmxlKGRzLCBpKTtcbjI2NzY6XHRcdFx0fSBlbHNlIHtcbjI2Nzc6XHRcdFx0XHRtdDc1MzBfcG9ydF9kaXNhYmxlKGRzLCBpKTtcbjI2Nzg6XHRcbjI2Nzk6XHRcdFx0XHQvKiBTZXQgZGVmYXVsdCBQVklEIHRvIDAgb24gYWxsIHVzZXIgcG9ydHMgKi9cbjI2ODA6XHRcdFx0XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QUEJWMV9QKGkpLCBHMF9QT1JUX1ZJRF9NQVNLLFxuMjY4MTpcdFx0XHRcdFx0ICAgRzBfUE9SVF9WSURfREVGKTtcbjI2ODI6XHRcdFx0fVxuMjY4MzpcdFxuMjY4NDpcdFx0XHQvKiBFbmFibGUgY29uc2lzdGVudCBlZ3Jlc3MgdGFnICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzIyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNzk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBNTUlPIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBmdXp6YWJsZSB3aXRoIHN5emthbGxlci4gVGhlIGNvZGUgaXMgaW50ZXJhY3Rpbmcgd2l0aCBNTUlPIHJlZ2lzdGVycywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIElmIHN5emthbGxlciBtYXBzIGR1bW15IG1lbW9yeSwgdGhlc2UgcmVhZHMgYW5kIHdyaXRlcyB3aWxsIGxpa2VseSBzdWNjZWVkLCBhbGJlaXQgd2l0aCBkdW1teSB2YWx1ZXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCB0aGVyZSYjMzk7cyBhIHBvbGxpbmcgbG9vcCBpbiBgbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlYC4gSXQmIzM5O3MgcmVhZGluZyBhIHJlZ2lzdGVyIGFuZCB3YWl0aW5nIGZvciBhIHNwZWNpZmljIGJpdCB0byBjbGVhci4gSWYgdGhlIHJlYWQgcmV0dXJucyAwIChkdWUgdG8gdGhlIGR1bW15IG1lbW9yeSksIHRoZSBwb2xsaW5nIGxvb3AgbWlnaHQgc3VjY2VlZCBpbW1lZGlhdGVseS4gSWYgaXQgcmV0dXJucyBgMHhmZmZmZmZmZmAsIHdoaWNoIGlzIGFub3RoZXIgZHVtbXkgdmFsdWUgdGhhdCBjb3VsZCBhcmlzZSwgdGhlIGxvb3AgbWlnaHQgdGltZSBvdXQgYWZ0ZXIgMTAwbXMuIEluIGVpdGhlciBvZiB0aGVzZSBjYXNlcywgaXQgd29uJiMzOTt0IGNyYXNoIHRoZSBzeXN0ZW0sIGFuZCBpdCB3aWxsIGtlZXAgZ29pbmcuIEV2ZW4gaWYgdGhlcmUmIzM5O3MgYW4gZXJyb3IsIGBtdDc5ODhfc2V0dXBgIGRvZXNuJiMzOTt0IHNlZW0gdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBgbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlYC4gU28sIGl0IGp1c3QgY29udGludWVzIHRvIHRoZSBuZXh0IHN0ZXAuIFRoZW4sIGBtdDc1MzFfc2V0dXBfY29tbW9uKGRzKWAgd291bGQgYmUgY2FsbGVkLgoKVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoYXQgYG10NzUzMV9zZXR1cF9jb21tb25gIGVpdGhlciBzdWNjZWVkcyBvciBmYWlscyBncmFjZWZ1bGx5LCB0b28uIFRoZXJlZm9yZSwgdGhlIHN3aXRjaCAqd2lsbCogZ2V0IHJlZ2lzdGVyZWQhIFN5emthbGxlciBjYW4gdGhlbiB1c2UgbmV0bGluayB0byBpbnRlcmFjdCB3aXRoIHRoZSBEU0Egc3dpdGNoLCBjb25maWd1cmluZyB0aGluZ3MgbGlrZSBicmlkZ2VzLCBhbmQgc28gb24uCgpUaGUgYmlnZ2VyIHF1ZXN0aW9uIGlzIHRoaXM6IGlzIHRoaXMgZHJpdmVyICphY3R1YWxseSogcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiBpdCYjMzk7cyBpbXBvc3NpYmxlLiBOb3csIHdoYXQmIzM5O3MgaW50ZXJlc3RpbmcgaXMgdGhpcyBpcyBhIHB1cmUgTU1JTyBkcml2ZXIgdGhhdCBvbmx5IHdvcmtzIHdpdGggaGFyZHdhcmUuIFN5emthbGxlciBjYW4gZ2VuZXJhdGUgYSBkZXZpY2UgdHJlZSB0aGF0IG1hdGNoZXMgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYC4gVGhlIGRyaXZlciB3aWxsIHByb2JlLCBtYXAgdGhlIGR1bW15IG1lbW9yeSwgYW5kIHJlZ2lzdGVyIGEgRFNBIHN3aXRjaC4gVGhlbiBzeXprYWxsZXIgY2FuIHN0YXJ0IGZ1enppbmcuCgpUeXBpY2FsbHksIGhhcmR3YXJlIGRyaXZlcnMgdGhhdCByZWx5IG9uIHNwZWNpZmljIHJlZ2lzdGVyIHZhbHVlcyBvciBiZWhhdmlvciB3aWxsIGZhaWwgdG8gcHJvYmUuIEhvd2V2ZXIsIGluIHRoaXMgY2FzZSwgYG10Nzk4OF9zZXR1cGAgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIHN0cmljdCBjaGVja3MgdGhhdCB3b3VsZCBjYXVzZSBhIGZhaWx1cmUgaWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LgoKSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAgYW5kIGBtdDc5ODhfcHJvYmVgIGFnYWluIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXkgZG9uJiMzOTt0IGNvbnRhaW4gYW55IGhhcmR3YXJlIElEIGNoZWNrcyB0aGF0IHdvdWxkIGtpbGwgdGhlIHByb2JpbmcgcHJvY2Vzcy4gQnV0IGF0IHRoaXMgcG9pbnQsIGl0IGxvb2tzIHByb21pc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTE5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM1MTk6XHRpbnRcbjM1MjA6XHRtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbjM1MjE6XHR7XG4zNTIyOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LVx1MDAzZWRldjtcbjM1MjM6XHRcbjM1MjQ6XHRcdHByaXYtXHUwMDNlZHMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYtXHUwMDNlZHMpLCBHRlBfS0VSTkVMKTtcbjM1MjU6XHRcdGlmICghcHJpdi1cdTAwM2VkcylcbjM1MjY6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zNTI3Olx0XG4zNTI4Olx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZWRldiA9IGRldjtcbjM1Mjk6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlbnVtX3BvcnRzID0gTVQ3NTMwX05VTV9QT1JUUztcbjM1MzA6XHRcbjM1MzE6XHRcdC8qIEdldCB0aGUgaGFyZHdhcmUgaWRlbnRpZmllciBmcm9tIHRoZSBkZXZpY2V0cmVlIG5vZGUuXG4zNTMyOlx0XHQgKiBXZSB3aWxsIG5lZWQgaXQgZm9yIHNvbWUgb2YgdGhlIGNsb2NrIGFuZCByZWd1bGF0b3Igc2V0dXAuXG4zNTMzOlx0XHQgKi9cbjM1MzQ6XHRcdHByaXYtXHUwMDNlaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuMzUzNTpcdFx0aWYgKCFwcml2LVx1MDAzZWluZm8pXG4zNTM2Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzUzNzpcdFxuMzUzODpcdFx0cHJpdi1cdTAwM2VpZCA9IHByaXYtXHUwMDNlaW5mby1cdTAwM2VpZDtcbjM1Mzk6XHRcdHByaXYtXHUwMDNlZGV2ID0gZGV2O1xuMzU0MDpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjM1NDE6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XG4zNTQyOlx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XG4zNTQzOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1NDQ6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNnByaXYtXHUwMDNlc3RhdHNfbG9jayk7XG4zNTQ1Olx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcbjM1NDY6XHRcbjM1NDc6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpO1xuMzU0ODpcdFxuMzU0OTpcdFx0cmV0dXJuIDA7XG4zNTUwOlx0fVxuMzU1MTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xuMzU1MjpcdFxuMzU1MzpcdHZvaWRcbjM1NTQ6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4zNTU1Olx0e1xuMzU1NjpcdFx0aWYgKHByaXYtXHUwMDNlaXJxX2RvbWFpbilcbjM1NTc6XHRcdFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XG4zNTU4Olx0XG4zNTU5Olx0XHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cdTAwM2Vkcyk7XG4zNTYwOlx0XG4zNTYxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1NjI6XHR9XG4zNTYzOlx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xuMzU2NDpcdFxuMzU2NTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7U2VhbiBXYW5nIFx1MDAzY3NlYW4ud2FuZ0BtZWRpYXRlay5jb21cdTAwM2VcJiMzNDspO1xuMzU2NjpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEcml2ZXIgZm9yIE1lZGlhdGVrIE1UNzUzMCBTd2l0Y2hcJiMzNDspO1xuMzU2NzpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgTVQ3NTMwIERyaXZlciBQcm9iZSBGdW5jdGlvbioqCgpIbW0sIHNvIHRoZSBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAgZnVuY3Rpb27igKYgcmlnaHQsIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgY2hlY2tpbmcgYW55IGhhcmR3YXJlIElEIHJlZ2lzdGVycywgd2hpY2ggaXMgYSBiaXQgdW51c3VhbC4gT2theSwgdGhhdCYjMzk7cyBub3RlZC4gTm93LCB3aGVyZSBhcmUgdGhvc2UgSURzIGJlaW5nIHZhbGlkYXRlZCBvciB2ZXJpZmllZD8gTGV0IG1lIHNlZeKApiB3aGF0IGFib3V0IGBkc2FfcmVnaXN0ZXJfc3dpdGNoYD8gRG9lcyAqdGhhdCogZnVuY3Rpb24gdHJpZ2dlciBhbnkgc2V0dXAgcm91dGluZXM/CgpBaCwgeWVzLiBHb3QgaXQuIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCBjYWxscyBgZHMtJmd0O29wcy0mZ3Q7c2V0dXBgLiBBbmQgbG9va2luZyBhdCB0aGUgTVQ3NTN4IGRyaXZlciwgdGhlIGBzZXR1cGAgb3BlcmF0aW9uIGlzIGRlZmluZWQgYXMgYG10NzUzeF9zZXR1cGAuIEdvb2QuIFNvIHRoZSBpbml0aWFsaXphdGlvbiBsaWtlbHkgb2NjdXJzIHRoZXJlLCBvciBwb3NzaWJseSBmdXJ0aGVyIGRvd24gdGhlIGNhbGwgY2hhaW4gd2l0aGluIHRoYXQgc2V0dXAgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG10NzUzeF9zZXR1cGAgdG8gc2VlIGhvdyB0aGF0IGZ1bmN0aW9uIHByb2NlZWRzLCBhbmQgd2hldGhlciBoYXJkd2FyZSBJRCBjaGVja3MgYXJlIHBlcmZvcm1lZCB0aGVyZS4gVGhhdCYjMzk7cyB3aGVyZSBJIHNob3VsZCBmb2N1cyBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyODYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzI4NjpcdFxuMzI4NzpcdFx0aWYgKG9wZXJhdGlvbmFsKVxuMzI4ODpcdFx0XHRwcml2LVx1MDAzZWFjdGl2ZV9jcHVfcG9ydHMgfD0gbWFzaztcbjMyODk6XHRcdGVsc2VcbjMyOTA6XHRcdFx0cHJpdi1cdTAwM2VhY3RpdmVfY3B1X3BvcnRzIFx1MDAyNj0gfm1hc2s7XG4zMjkxOlx0XG4zMjkyOlx0XHRpZiAocHJpdi1cdTAwM2VhY3RpdmVfY3B1X3BvcnRzKSB7XG4zMjkzOlx0XHRcdHZhbCA9IE1UNzUzMF9DUFVfRU4gfFxuMzI5NDpcdFx0XHQgICAgICBNVDc1MzBfQ1BVX1BPUlQoX19mZnMocHJpdi1cdTAwM2VhY3RpdmVfY3B1X3BvcnRzKSk7XG4zMjk1Olx0XHR9XG4zMjk2Olx0XG4zMjk3Olx0XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzWF9NRkMsIE1UNzUzMF9DUFVfRU4gfCBNVDc1MzBfQ1BVX1BPUlRfTUFTSywgdmFsKTtcbjMyOTg6XHR9XG4zMjk5Olx0XG4zMzAwOlx0c3RhdGljIGludCBtdDc1M3hfdGNfc2V0dXBfcWRpc2NfdGJmKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4zMzAxOlx0XHRcdFx0XHQgICAgIHN0cnVjdCB0Y190YmZfcW9wdF9vZmZsb2FkICpxb3B0KVxuMzMwMjpcdHtcbjMzMDM6XHRcdHN0cnVjdCB0Y190YmZfcW9wdF9vZmZsb2FkX3JlcGxhY2VfcGFyYW1zICpwID0gXHUwMDI2cW9wdC1cdTAwM2VyZXBsYWNlX3BhcmFtcztcbjMzMDQ6XHRcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4zMzA1Olx0XHR1MzIgcmF0ZSA9IDA7XG4zMzA2Olx0XG4zMzA3Olx0XHRzd2l0Y2ggKHFvcHQtXHUwMDNlY29tbWFuZCkge1xuMzMwODpcdFx0Y2FzZSBUQ19UQkZfUkVQTEFDRTpcbjMzMDk6XHRcdFx0cmF0ZSA9IGRpdl91NjQocC1cdTAwM2VyYXRlLnJhdGVfYnl0ZXNfcHMsIDEwMDApIFx1MDAzY1x1MDAzYyAzOyAvKiBrYnBzICovXG4zMzEwOlx0XHRcdGZhbGx0aHJvdWdoO1xuMzMxMTpcdFx0Y2FzZSBUQ19UQkZfREVTVFJPWToge1xuMzMxMjpcdFx0XHR1MzIgdmFsLCB0aWNrO1xuMzMxMzpcdFxuMzMxNDpcdFx0XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzWF9HRVJMQ1IsIEVHUl9CQ19NQVNLLFxuMzMxNTpcdFx0XHRcdCAgIEVHUl9CQ19DUkNfSVBHX1BSRUFNQkxFKTtcbjMzMTY6XHRcbjMzMTc6XHRcdFx0LyogaWYgcmF0ZSBpcyBncmVhdGVyIHRoYW4gMTBNYnBzIHRpY2sgaXMgMS8zMiBtcyxcbjMzMTg6XHRcdFx0ICogMW1zIG90aGVyd2lzZVxuMzMxOTpcdFx0XHQgKi9cbjMzMjA6XHRcdFx0dGljayA9IHJhdGUgXHUwMDNlIDEwMDAwID8gMiA6IDc7XG4zMzIxOlx0XHRcdHZhbCA9IEZJRUxEX1BSRVAoRVJMQ1JfQ0lSX01BU0ssIChyYXRlIFx1MDAzZVx1MDAzZSA1KSkgfFxuMzMyMjpcdFx0XHQgICAgICBGSUVMRF9QUkVQKEVSTENSX0VOX01BU0ssICEhcmF0ZSkgfFxuMzMyMzpcdFx0XHQgICAgICBGSUVMRF9QUkVQKEVSTENSX0VYUF9NQVNLLCB0aWNrKSB8XG4zMzI0Olx0XHRcdCAgICAgIEVSTENSX1RCRl9NT0RFX01BU0sgfFxuMzMyNTpcdFx0XHQgICAgICBGSUVMRF9QUkVQKEVSTENSX01BTlRfTUFTSywgMHhmKTtcbjMzMjY6XHRcdFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzWF9FUkxDUl9QKHBvcnQpLCB2YWwpO1xuMzMyNzpcdFx0XHRicmVhaztcbjMzMjg6XHRcdH1cbjMzMjk6XHRcdGRlZmF1bHQ6XG4zMzMwOlx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjMzMzE6XHRcdH1cbjMzMzI6XHRcbjMzMzM6XHRcdHJldHVybiAwO1xuMzMzNDpcdH1cbjMzMzU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUXVpY2sgQ2hlY2s6IG10NzUzeF9zZXR1cCoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpdmluZyBpbiBoZXJlLCBidXQgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBhcmVhLCBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIOKAkyAqbXQ3NTN4X3NldHVwKi4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gaW4gdGhpcyBzdWJzeXN0ZW0sIGFuZCBleHBlcmllbmNlIGhhcyB0YXVnaHQgbWUgdGhhdCBvdmVybG9va2luZyBpdHMgaW5pdGlhbCBjb25maWd1cmF0aW9uIGNhbiBsZWFkIHRvIHNvbWUgcmVhbGx5IG5hc3R5IGRlYnVnZ2luZyBzZXNzaW9ucyBkb3duIHRoZSByb2FkLiBJJiMzOTt2ZSBiZWVuIGJ1cm5lZCBieSB0aGF0IGJlZm9yZS4gSSBrbm93IGl0JiMzOTtzIHByb2JhYmx5IGJlZW4gY2hlY2tlZCByZWNlbnRseSwgYnV0IGl0IG5ldmVyIGh1cnRzIHRvIGRvdWJsZS1jaGVjayBhIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24sIGVzcGVjaWFsbHkgb25lIHRoYXQmIzM5O3MgZnVuZGFtZW50YWwgdG8gZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBwb3RlbnRpYWwgc3VidGxlIGludGVyYWN0aW9ucyB3aXRoIG5ld2VyIGZlYXR1cmVzIG9yIHVwc3RyZWFtIGNoYW5nZXMsIGFueSBvZiB3aGljaCBtaWdodCBhbHRlciBleHBlY3RlZCByZWdpc3RlciBzZXR0aW5ncyBvciByZXF1aXJlZCB0aW1pbmcuIFRoYXQgc2V0dXAgZnVuY3Rpb24gY291bGQgYWxzbyBiZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgYW55IGhhcmR3YXJlIHByZS1yZXF1aXNpdGVzIGFyZSBtZXQuIEEgcXVpY2sgcmV2aWV3IG9mIGl0cyBsb2dpYyB3aWxsIHNhdmUgYSB0b24gb2YgdGltZS4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeSwgSSYjMzk7bGwgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCYjMzk7cyBzZXR0aW5nIHVwIHRoZSBQSFkgYW5kIHRoZSByZWxldmFudCBjbG9ja3MuIEJhY2sgdG8gdGhlIHBsYW4gYWZ0ZXIgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTN4X3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzIwOT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzIxMDptdDc1M3hfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMyMTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMzAwPXN0YXRpYyBpbnQgbXQ3NTN4X3RjX3NldHVwX3FkaXNjX3RiZihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzM1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzMzY6c3RhdGljIGludCBtdDc1M3hfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzM3LVx0XHRcdCAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMzOTI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBtdDc1MzBfc3dpdGNoX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzkzLVx0LmdldF90YWdfcHJvdG9jb2xcdD0gbXRrX2dldF90YWdfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM5NDpcdC5zZXR1cFx0XHRcdD0gbXQ3NTN4X3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzOTUtXHQudGVhcmRvd25cdFx0PSBtdDc1M3hfdGVhcmRvd24sXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MjctXHQuY29uZHVpdF9zdGF0ZV9jaGFuZ2VcdD0gbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM0Mjg6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IG10NzUzeF9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDI5LVx0LnBvcnRfaHNyX2pvaW5cdFx0PSBkc2FfcG9ydF9zaW1wbGVfaHNyX2pvaW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODk0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgYG10NzUzeF9zZXR1cGAgRnVuY3Rpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYG10NzUzeF9zZXR1cGAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGEgbWVudGFsIGludmVudG9yeSBvZiB3aGF0IEkgYWxyZWFkeSBrbm93IGFib3V0IHRoaXMgZHJpdmVyIG9yIHRoZSBjaGlwc2V0IGl0IHBlcnRhaW5zIHRvLiBJJiMzOTttIHJlY2FsbGluZyBhbnkgcGFzdCBleHBlcmllbmNlcyB3aXRoIE1USyBzd2l0Y2ggY29uZmlndXJhdGlvbnMgb3Igc2ltaWxhciBzZXR1cHMuIEFyZSB0aGVyZSBhbnkga25vd24gcXVpcmtzPyBDb21tb24gcGl0ZmFsbHM/IERvZXMgdGhpcyBhbGlnbiB3aXRoIHRoZSB0eXBpY2FsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlPwoKQXMgSSByZWFkLCBJJiMzOTttIG1lbnRhbGx5IGNoZWNraW5nIGVhY2ggbGluZSBvZiBjb2RlIGFnYWluc3QgbXkgdW5kZXJzdGFuZGluZyBvZiBzd2l0Y2ggaGFyZHdhcmUsIHJlZ2lzdGVyIG1hcHMsIGFuZCBsaWtlbHkgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlcy4gQXJlIHRoZXkgYWRkcmVzc2luZyB0aGluZ3MgaW4gdGhlIGNvcnJlY3Qgb3JkZXI/IEFyZSB0aGUgY2xvY2sgc2V0dGluZ3MgcGxhdXNpYmxlPyBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBvYnZpb3VzIHJlZCBmbGFncywgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgb3IgYW55dGhpbmcgdGhhdCBzZWVtcyBvdXQgb2YgdGhlIG9yZGluYXJ5LCBhbmQgSSBhbSBjcm9zcyBjaGVja2luZyB0aGlzIG5ldyBkYXRhIHdpdGggdGhlIGtub3dsZWRnZSBJIGFscmVhZHkgcG9zc2Vzcy4KCkkgYW0gcXVpY2tseSBsb29raW5nIGZvciB0aGUgY29yZSBjb21wb25lbnRzIHRoYXQgYXJlIGJlaW5nIHNldCB1cDogUEhZcywgaW50ZXJuYWwgc3dpdGNoIGZhYnJpYyBjb25maWd1cmF0aW9uLCBWTEFOIHNldHRpbmdzLCBRb1MgcGFyYW1ldGVycy4uLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBtb3N0IGNyaXRpY2FsIHBhdGhzIGFuZCBkYXRhIHN0cnVjdHVyZXMuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gRE1BIHRyYW5zZmVycywgaW50ZXJydXB0IGhhbmRsaW5nLCBvciBtZW1vcnkgbWFuYWdlbWVudD8KCkkmIzM5O20ga2VlcGluZyBhIGNvbnN0YW50IGludGVybmFsIGxvZyBvZiB3aGVyZSBJIGNhbiBmaW5kIG1vcmUgY29udGV4dCBvciBpbmZvcm1hdGlvbiBvbiBzcGVjaWZpYyBvcGVyYXRpb25zLiBJJiMzOTttIGxvb2tpbmcgZm9yIGZ1bmN0aW9uIGNhbGxzIHRvIHJlbGF0ZWQgQVBJcyBvciBkcml2ZXItc3BlY2lmaWMgc3RydWN0dXJlcyB0aGF0IEkgbWF5IHdhbnQgdG8gZXhhbWluZSBpbiBkZXB0aC4gVGhlIG92ZXJhbGwgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG10NzUzeF9zZXR1cGAgZnVuY3Rpb24gaXMgaW50ZWdyYXRpbmcgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gd2l0aCBhbnkgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgdGhlIE9TLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyMDksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzIwOTpcdHN0YXRpYyBpbnRcbjMyMTA6XHRtdDc1M3hfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuMzIxMTpcdHtcbjMyMTI6XHRcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4zMjEzOlx0XHRpbnQgcmV0ID0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXN3X3NldHVwKGRzKTtcbjMyMTQ6XHRcdGludCBpO1xuMzIxNTpcdFxuMzIxNjpcdFx0aWYgKHJldClcbjMyMTc6XHRcdFx0cmV0dXJuIHJldDtcbjMyMTg6XHRcbjMyMTk6XHRcdHJldCA9IG10NzUzMF9zZXR1cF9pcnEocHJpdik7XG4zMjIwOlx0XHRpZiAocmV0KVxuMzIyMTpcdFx0XHRyZXR1cm4gcmV0O1xuMzIyMjpcdFxuMzIyMzpcdFx0cmV0ID0gbXQ3NTMwX3NldHVwX21kaW8ocHJpdik7XG4zMjI0Olx0XHRpZiAocmV0KVxuMzIyNTpcdFx0XHRyZXR1cm4gcmV0O1xuMzIyNjpcdFxuMzIyNzpcdFx0LyogSW5pdGlhbGlzZSB0aGUgUENTIGRldmljZXMgKi9cbjMyMjg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlZHMtXHUwMDNlbnVtX3BvcnRzOyBpJiM0MzsmIzQzOykge1xuMzIyOTpcdFx0XHRwcml2LVx1MDAzZXBjc1tpXS5wY3Mub3BzID0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZXBjc19vcHM7XG4zMjMwOlx0XHRcdHByaXYtXHUwMDNlcGNzW2ldLnByaXYgPSBwcml2O1xuMzIzMTpcdFx0XHRwcml2LVx1MDAzZXBjc1tpXS5wb3J0ID0gaTtcbjMyMzI6XHRcdH1cbjMyMzM6XHRcbjMyMzQ6XHRcdGlmIChwcml2LVx1MDAzZWNyZWF0ZV9zZ21paSlcbjMyMzU6XHRcdFx0cmV0ID0gcHJpdi1cdTAwM2VjcmVhdGVfc2dtaWkocHJpdik7XG4zMjM2Olx0XG4zMjM3Olx0XHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWlycV9kb21haW4pXG4zMjM4Olx0XHRcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xuMzIzOTpcdFxuMzI0MDpcdFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlYnVzKSB7XG4zMjQxOlx0XHRcdG10NzUzMF9zdGF0c19yZWZyZXNoKHByaXYpO1xuMzI0MjpcdFx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c193b3JrLFxuMzI0MzpcdFx0XHRcdFx0ICAgICAgTVQ3NTMwX1NUQVRTX1BPTExfSU5URVJWQUwpO1xuMzI0NDpcdFx0fVxuMzI0NTpcdFxuMzI0NjpcdFx0cmV0dXJuIHJldDtcbjMyNDc6XHR9XG4zMjQ4Olx0XG4zMjQ5Olx0c3RhdGljIHZvaWRcbjMyNTA6XHRtdDc1M3hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuMzI1MTpcdHtcbjMyNTI6XHRcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4zMjUzOlx0XG4zMjU0Olx0XHRpZiAocHJpdi1cdTAwM2VidXMpXG4zMjU1Olx0XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmspO1xuMzI1NjpcdH1cbjMyNTc6XHRcbjMyNTg6XHRzdGF0aWMgaW50IG10NzUzeF9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTAyMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgU3dpdGNoIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgbmV0d29yayBzd2l0Y2ggaW5pdGlhbGl6YXRpb24sIHNwZWNpZmljYWxseSBmb3IgdGhlIGBJRF9FTjc1MjhgIGNvbmZpZ3VyYXRpb24uIEkgc2VlIHRoYXQgYHByaXYtJmd0O2luZm8tJmd0O3N3X3NldHVwKGRzKWAgaXMgc2V0IHRvIGBtdDc5ODhfc2V0dXBgLCB3aGljaCBpcyBleHBlY3RlZC4gV2Uga25vdyB0aGF0IGBtdDc5ODhfc2V0dXBgIGlzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgcHJvY2Vzcy4KCk5vdywgYXMgSSByZWNhbGwgZnJvbSBwcmV2aW91cyBkZWJ1Z2dpbmcsIGBtdDc5ODhfc2V0dXBgIHRoZW4gY2FsbHMgYG10NzUzMV9zZXR1cF9jb21tb25gLiBUaGUgZnVuY3Rpb24gY2FsbHMgYG10NzUzMV9zZXR1cF9jb21tb25gIHdoaWNoLCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgaW52b2x2ZXMgYSBnb29kIGFtb3VudCBvZiBNTUlPIHJlZ2lzdGVyIGFjY2VzcyB3aGljaCwgYXQgdGhpcyBwb2ludCwgYWxsIHNlZW1lZCB0byBoYXZlIHN1Y2NlZWRlZC4gCgpUaGUgbmV4dCBzdGVwcyBhZnRlciB0aGF0IGluaXRpYWwgc2V0dXAgYXJlIGBtdDc1MzBfc2V0dXBfaXJxYCBhbmQgYG10NzUzMF9zZXR1cF9tZGlvYC4gR2l2ZW4gd2hlcmUgd2UgYXJlIG5vdywgbGV0JiMzOTtzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgbXQ3NTMwX3NldHVwX21kaW9gIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NTMwX3NldHVwX21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjY5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI3MDptdDc1MzBfc2V0dXBfbWRpb19pcnEoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzcwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzcxOm10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzcyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNC1cdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4gXHUwMDI2XHUwMDI2ICFtbnApXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQwNTpcdFx0bXQ3NTMwX3NldHVwX21kaW9faXJxKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MDYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMyMTA9bXQ3NTN4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzIyMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMjIzOlx0cmV0ID0gbXQ3NTMwX3NldHVwX21kaW8ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzIyNC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODEyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbXQ3NTMwX3NldHVwX21kaW9gIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBwcm9iYWJseSBwYXJ0IG9mIGEgZHJpdmVyIG9yIHNvbWUgbG93LWxldmVsIG5ldHdvcmsgaW50ZXJmYWNlIGNvZGUsIGp1ZGdpbmcgYnkgdGhlIG5hbWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgY29udGV4dC4gV2hhdCYjMzk7cyB0aGUgb3ZlcmFsbCBnb2FsIG9mIHRoaXMgZnVuY3Rpb24/IEZyb20gdGhlIG5hbWUsIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3Mgc2V0dGluZyB1cCB0aGUgTURJTyBpbnRlcmZhY2UsIHdoaWNoIGlzIGEgY29tbW9uIHNlcmlhbCBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyBQSFkgKHBoeXNpY2FsIGxheWVyKSByZWdpc3RlcnMuIEtub3dpbmcgdGhpcywgSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gSXMgaXQgaW5pdGlhbGl6aW5nIHRoZSBNRElPIGNvbnRyb2xsZXI/IENvbmZpZ3VyaW5nIHRoZSBjbG9jaz8gTWFwcGluZyB0aGUgcmVnaXN0ZXJzPyBJdCYjMzk7cyBhbGwgYWJvdXQgZWZmaWNpZW50IFBIWSBjb21tdW5pY2F0aW9uLgoKSSBhbnRpY2lwYXRlIHRoZSBjb2RlIHdpbGwgaW52b2x2ZSB3cml0aW5nIHRvIHNwZWNpZmljIHJlZ2lzdGVycyB0byBjb250cm9sIHRoZSBNRElPIGNsb2NrIGZyZXF1ZW5jeSwgdGhlIE1ESU8gbW9kZSAoZS5nLiwgYml0LWJhbmdpbmcgdnMuIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiksIGFuZCBwb3RlbnRpYWxseSBlbmFibGluZyB0aGUgTURJTyBjb250cm9sbGVyLiBJ4oCZbGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBlcnJvciBoYW5kbGluZyBvciB0aW1lb3V0cywgZXNwZWNpYWxseSB3aGVuIHdhaXRpbmcgZm9yIE1ESU8gdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLiBBcmUgdGhleSB1c2luZyBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgTURJTyBjb21tYW5kcz8gQW55IGJpdC1zaGlmdGluZyBvciBtYXNraW5nIG9wZXJhdGlvbnMgdG8gaXNvbGF0ZSBhbmQgbWFuaXB1bGF0ZSBzcGVjaWZpYyByZWdpc3RlciBiaXRzPyBJJiMzOTtsbCBwcm9iYWJseSBzY3J1dGluaXplIGFueSBsb29wcyBvciBkZWxheXMgdmVyeSBjbG9zZWx5LCBiZWNhdXNlIHRoZXNlIGFyZSBjbGFzc2ljIGFyZWFzIGZvciBwb3RlbnRpYWwgdGltaW5nIGlzc3VlcyBvciBsb2NrdXBzLgoKSeKAmW0gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBkaWZmZXJlbnQgTURJTyBhZGRyZXNzIHNwYWNlcyBpZiB0aGV5JiMzOTtyZSBzdXBwb3J0aW5nIG11bHRpcGxlIFBIWXMuIElzIHRoZXJlIGEgY2xlYXIgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBpbiB0aGUgY29kZSwgb3IgaXMgZXZlcnl0aGluZyB0aWdodGx5IGNvdXBsZWQ/IEFuZCwgb2YgY291cnNlLCBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSB1bmRvY3VtZW50ZWQgb3IgdW51c3VhbCByZWdpc3RlciBhY2Nlc3NlcyB0aGF0IG1pZ2h0IHJlcHJlc2VudCBhIHZlbmRvci1zcGVjaWZpYyBoYWNrIG9yIG9wdGltaXphdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGluIHRoZXJlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjM3MDpcdHN0YXRpYyBpbnRcbjIzNzE6XHRtdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4yMzcyOlx0e1xuMjM3MzpcdFx0c3RydWN0IGRldmljZV9ub2RlICptbnAsICpucCA9IHByaXYtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGU7XG4yMzc0Olx0XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBwcml2LVx1MDAzZWRzO1xuMjM3NTpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4yMzc2Olx0XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuMjM3NzpcdFx0c3RhdGljIGludCBpZHg7XG4yMzc4Olx0XHRpbnQgcmV0ID0gMDtcbjIzNzk6XHRcbjIzODA6XHRcdG1ucCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcJiMzNDttZGlvXCYjMzQ7KTtcbjIzODE6XHRcbjIzODI6XHRcdGlmIChtbnAgXHUwMDI2XHUwMDI2ICFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG1ucCkpXG4yMzgzOlx0XHRcdGdvdG8gb3V0O1xuMjM4NDpcdFxuMjM4NTpcdFx0YnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKGRldik7XG4yMzg2Olx0XHRpZiAoIWJ1cykge1xuMjM4NzpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMjM4ODpcdFx0XHRnb3RvIG91dDtcbjIzODk6XHRcdH1cbjIzOTA6XHRcbjIzOTE6XHRcdGlmICghbW5wKVxuMjM5MjpcdFx0XHRkcy1cdTAwM2V1c2VyX21paV9idXMgPSBidXM7XG4yMzkzOlx0XG4yMzk0Olx0XHRidXMtXHUwMDNlcHJpdiA9IHByaXY7XG4yMzk1Olx0XHRidXMtXHUwMDNlbmFtZSA9IEtCVUlMRF9NT0ROQU1FIFwmIzM0Oy1taWlcJiMzNDs7XG4yMzk2Olx0XHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgS0JVSUxEX01PRE5BTUUgXCYjMzQ7LSVkXCYjMzQ7LCBpZHgmIzQzOyYjNDM7KTtcbjIzOTc6XHRcdGJ1cy1cdTAwM2VyZWFkID0gbXQ3NTN4X3BoeV9yZWFkX2MyMjtcbjIzOTg6XHRcdGJ1cy1cdTAwM2V3cml0ZSA9IG10NzUzeF9waHlfd3JpdGVfYzIyO1xuMjM5OTpcdFx0YnVzLVx1MDAzZXJlYWRfYzQ1ID0gbXQ3NTN4X3BoeV9yZWFkX2M0NTtcbjI0MDA6XHRcdGJ1cy1cdTAwM2V3cml0ZV9jNDUgPSBtdDc1M3hfcGh5X3dyaXRlX2M0NTtcbjI0MDE6XHRcdGJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4yNDAyOlx0XHRidXMtXHUwMDNlcGh5X21hc2sgPSB+ZHMtXHUwMDNlcGh5c19taWlfbWFzaztcbjI0MDM6XHRcbjI0MDQ6XHRcdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4gXHUwMDI2XHUwMDI2ICFtbnApXG4yNDA1Olx0XHRcdG10NzUzMF9zZXR1cF9tZGlvX2lycShwcml2KTtcbjI0MDY6XHRcbjI0MDc6XHRcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcbjI0MDg6XHRcdGlmIChyZXQpIHtcbjI0MDk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBNRElPIGJ1czogJWRcXG5cJiMzNDssIHJldCk7XG4yNDEwOlx0XHRcdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4gXHUwMDI2XHUwMDI2ICFtbnApXG4yNDExOlx0XHRcdFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XG4yNDEyOlx0XHR9XG4yNDEzOlx0XG4yNDE0Olx0b3V0OlxuMjQxNTpcdFx0b2Zfbm9kZV9wdXQobW5wKTtcbjI0MTY6XHRcdHJldHVybiByZXQ7XG4yNDE3Olx0fVxuMjQxODpcdFxuMjQxOTpcdHN0YXRpYyBpbnRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMwMTAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgYG10NzUzMF9zZXR1cF9tZGlvYCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJpbmcgdGhlIE1ESU8gYnVzIGFuZCB0aGUgc3dpdGNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhpcyBtZWFucyB0aGUgRFNBIGNvcmUgd2lsbCBleHBvc2Ugc3dpdGNoIHBvcnRzIGFzIG5ldHdvcmsgaW50ZXJmYWNlcywgYW5kIHRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoZXJlIFN5emthbGxlciBjYW4gZ28gdG8gdG93biBmdXp6aW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgIGNhbGxlZCBieSBwaHlsaW5rLCBtb2RpZmljYXRpb25zIHRvIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIGZvciBgSURfRU43NTI4YCwgYW5kIHRoZSBFRUUgZGlzYWJsZSBpbiBgbXQ3OTg4X3NldHVwYCDigJMgdGhhdCBhbGwgc291bmRzIGxpa2UgbmV3IGhhcmR3YXJlIElEIGFuZCBuZXcgc3dpdGNoIGxvZ2ljIGFjY2Vzc2libGUgdGhyb3VnaCBEU0EuIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vaywgcmlnaHQ/CgpCdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQ6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiYjMzQ7LiBDYW4gSSByZWFjaCB0aGlzIGluIEdDRSBvciBRRU1VPyBIbW0uLi4gTm8sIG5vdCBpbXBvc3NpYmxlLiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIGEgZGV2aWNlIHRyZWUgd2l0aCBgZWNvbmV0LGVuNzUyOC1zd2l0Y2hgLCB0aGUgZHJpdmVyIHdpbGwgcHJvYmUsIG1hcCBkdW1teSBtZW1vcnksIHJlZ2lzdGVyIHRoZSBEU0Egc3dpdGNoLCBEU0EgY29yZSB3aWxsIGNhbGwgdGhlIHN3aXRjaCBvcGVyYXRpb25zLiBTbyBpdCAqaXMqIHJlYWNoYWJsZS4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCBtZWV0cyB0aGUgb3RoZXIgY3JpdGVyaWEuICYjMzQ7SWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4mIzM0OyBZdXAsIHRoYXQmIzM5O3Mgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaGVyZS4gVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBkcml2ZXIgY29kZSwgYW5kIGNvcmUgbG9naWMsIHNvIEkmIzM5O20gY29uY2x1ZGluZyBXb3J0aEZ1enppbmc9dHJ1ZS4KCk5vdywgYmVjYXVzZSBXb3J0aEZ1enppbmc9dHJ1ZSwgSSBuZWVkIHRvIGlkZW50aWZ5IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgKEZvY3VzU3ltYm9scykgYW5kIGFueSByZWxldmFudCBDT05GSUcgb3B0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiBUaGUgcmVsZXZhbnQgZHJpdmVyIGZpbGVzIGFyZSBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jYC4gVGltZSB0byBkaWcgaW50byB0aGUgYE1ha2VmaWxlYCBhbmQgYEtjb25maWdgIGZpbGVzIGluIGBkcml2ZXJzL25ldC9kc2EvYCBhbmQgc2VlIHdoYXQgQ09ORklHIG9wdGlvbnMgYXJlIGluIHBsYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIwMTcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMClcdCYjNDM7PSBtdDc1MzAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICYjNDM7PSBtdDc1MzAtbWRpby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgJiM0Mzs9IG10NzUzMC1tbWlvLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNjA2MCkgJiM0Mzs9IG12ODhlNjA2MC5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNjojaW5jbHVkZSBcJiMzNDttdDc1MzAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxOTptdDc1MzBfcmVnbWFwX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMi1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NDptdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy00NS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy00Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz02Nj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6Njc6bXQ3NTMwX21kaW9fcmVnbWFwX2xvY2sodm9pZCAqbWRpb19sb2NrKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTcyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3MzptdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrKHZvaWQgKm1kaW9fbG9jaylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTc0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc5Olx0LnJlZ193cml0ZSA9IG10NzUzMF9yZWdtYXBfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4MDpcdC5yZWdfcmVhZCA9IG10NzUzMF9yZWdtYXBfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTgxLX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9ODM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6ODQ6bXQ3NTMxX2NyZWF0ZV9zZ21paShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTA1LVx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2VtYXhfcmVnaXN0ZXIgPSAweDE3YztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEwNjpcdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTA3Olx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2V1bmxvY2sgPSBtdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTA4LVx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2Vsb2NrX2FyZyA9IFx1MDAyNnByaXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMDpcdFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTEtXHRcdFx0XHRcdCAgbXQ3NTMxX3Bjc19jb25maWdbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzMC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEzMTpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc1MzBfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzMi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDc2MjFcJiMzNDssIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzYyMV0sIH0sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzM6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWVkaWF0ZWssbXQ3NTMwXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzBdLCB9LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM0LVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzUzMVwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NTMxXSwgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzYtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEzNzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc1MzBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE0Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNDg6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE0OS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTA6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTEtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE2My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2NDpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwMi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIwMzpcdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDQtXHRcdFx0XHRcdFx1MDAyNnJlZ21hcF9jb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIxND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE1Om10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjE2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxNzpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTgtXHRpbnQgcmV0ID0gMCwgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMzM6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIzNC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMzk6c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0MC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDE6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1MTpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1MjpcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTM6XHQucmVtb3ZlID0gbXQ3NTMwX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NDpcdC5zaHV0ZG93biA9IG10NzUzMF9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1NS1cdC5tZGlvZHJ2LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NjpcdFx0Lm5hbWUgPSBcJiMzNDttdDc1MzAtbWRpb1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3NTMwX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjU4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjE6bWRpb19tb2R1bGVfZHJpdmVyKG10NzUzMF9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjItXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMTAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzoxMTojaW5jbHVkZSBcJiMzNDttdDc1MzAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzE9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zMi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzozMzpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTM0LVx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDMtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0NDpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00NS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9Njg9c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjkte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzA6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzItXHRpZiAocHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjczOlx0XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc0LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz03Nj1zdGF0aWMgdm9pZCBtdDc5ODhfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc3LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjc4Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz04OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc5ODhfcGxhdGZvcm1fZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTkyLVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjkzOlx0XHQubmFtZSA9IFwmIzM0O210NzUzMC1tbWlvXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOTQtXHRcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4OF9vZl9tYXRjaCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY6I2luY2x1ZGUgXCYjMzQ7bXQ3NTMwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzE9c3RhdGljIHN0cnVjdCBtdDc1M3hfcGNzICpwY3NfdG9fbXQ3NTN4X3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzYtLyogU3RyaW5nLCBvZmZzZXQsIGFuZCByZWdpc3RlciBzaXplIGluIGJ5dGVzIGlmIGRpZmZlcmVudCBmcm9tIDQgYnl0ZXMgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzUzMF9taWJfZGVzYyBtdDc1MzBfbWliW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXHRNSUJfREVTQygxLCBNVDc1MzBfUE9SVF9NSUJfVFhfRFJPUCwgXCYjMzQ7VHhEcm9wXCYjMzQ7KSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU3Om10NzUzMF9tdXRleF91bmxvY2soc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDpjb3JlX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTk1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjk2Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05Ny19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTAwOmNvcmVfcm13KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiBzZXQpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTAxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwNjpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTM3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEzODpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTM5LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQyOmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNDg6Y29yZV9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTUzPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNTQ6bXQ3NTMwX21paV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTYxLVx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2MjpcdFx0XHRcJiMzNDtmYWlsZWQgdG8gd3JpdGUgbXQ3NTMwIHJlZ2lzdGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE2Nz1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY4Om10NzUzMF9taWlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTY5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTc2LVx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE3NzpcdFx0XHRcJiMzNDtmYWlsZWQgdG8gcmVhZCBtdDc1MzAgcmVnaXN0ZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE3OC1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE4ND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4NTptdDc1MzBfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE4Ni17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTg3Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTg4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4OTpcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTE6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Mi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE5ND1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk1Ol9tdDc1MzBfdW5sb2NrZWRfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTc6XHRyZXR1cm4gbXQ3NTMwX21paV9yZWFkKHAtXHUwMDNlcHJpdiwgcC1cdTAwM2VyZWcpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5OC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIwMD1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjAxOl9tdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNTpcdG10NzUzMF9tdXRleF9sb2NrKHAtXHUwMDNlcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNzpcdHZhbCA9IG10NzUzMF9taWlfcmVhZChwLVx1MDAzZXByaXYsIHAtXHUwMDNlcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA5Olx0bXQ3NTMwX211dGV4X3VubG9jayhwLVx1MDAzZXByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjE0PXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTU6bXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxNi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE3Olx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjE4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOS1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjA6XHRyZXR1cm4gX210NzUzMF9yZWFkKFx1MDAyNnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIyMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyNDptdDc1MzBfcm13KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjUtXHQgICB1MzIgbWFzaywgdTMyIHNldClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyNzpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzMTpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMyLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM1Om10NzUzMF9zZXQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNi17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM3Olx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDE6bXQ3NTMwX2NsZWFyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDIte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MzpcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIDApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0Nj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ3Om10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1MC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjUxOlx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTQtXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU1Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEMsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU2LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ny1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX0FUQyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU4Olx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1OS1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgQVRDX0JVU1kpLCAyMCwgMjAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjctXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjg6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfQVRDKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjktXHRpZiAoKGNtZCA9PSBNVDc1MzBfRkRCX1JFQUQpIFx1MDAyNlx1MDAyNiAodmFsIFx1MDAyNiBBVENfSU5WQUxJRCkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI3OD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI3OTptdDc1MzBfZmRiX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBzdHJ1Y3QgbXQ3NTMwX2ZkYiAqZmRiKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjg2Olx0XHRyZWdbaV0gPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVFNSQTEgJiM0MzsgKGkgKiA0KSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMDU6bXQ3NTMwX2ZkYl93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUxNiB2aWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzA2LVx0XHQgdTggcG9ydF9tYXNrLCBjb25zdCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzE6XHRcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRBMSAmIzQzOyAoaSAqIDQpLCByZWdbaV0pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzMi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzNC0vKiBTZXQgdXAgc3dpdGNoIGNvcmUgY2xvY2sgZm9yIE1UNzUzMCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzNTpzdGF0aWMgdm9pZCBtdDc1MzBfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zNzU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzY6bXQ3NTMwX3NldHVwX3BvcnQ2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNzcte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3ODpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc5LVx0dTMyIG5jcG8xLCBzc2NfZGVsdGEsIHh0YWw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4NC1cdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKSB7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg1Olx0XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QNkVDUiwgUDZfSU5URl9NT0RFX01BU0ssXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg2LVx0XHRcdCAgIFA2X0lOVEZfTU9ERSgwKSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTA6XHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QNkVDUiwgUDZfSU5URl9NT0RFX01BU0ssIFA2X0lOVEZfTU9ERSgxKSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzkxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5MjpcdHh0YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfTVRSQVApIFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDI4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDI5Om10NzUzMV9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQzMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQzNS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0MzY6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfQ1JFVik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM3Olx0dG9wX3NpZyA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9UT1BfU0lHX1NSKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Mzg6XHRod3N0cmFwID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX1RSQVApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQzOS1cdGlmICgodmFsIFx1MDAyNiBDSElQX1JFVl9NKSBcdTAwM2UgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ2LVx0LyogU3RlcCAxIDogRGlzYWJsZSBNVDc1MzEgQ09SRVBMTCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NzpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ4LVx0dmFsIFx1MDAyNj0gfkVOX0NPUkVQTEw7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ5Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDUxLVx0LyogU3RlcCAyOiBzd2l0Y2ggdG8gWFRBTCBvdXRwdXQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTI6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1My1cdHZhbCB8PSBTV19DTEtTVztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTQ6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1NS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTY6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTctXHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9FTjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTg6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYwLVx0LyogU3RlcCAzOiBkaXNhYmxlIFBMTEdQIGFuZCBlbmFibGUgcHJvZ3JhbSBQTExHUCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MTpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYyLVx0dmFsIHw9IFNXX1BMTEdQO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MzpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2NS1cdC8qIFN0ZXAgNDogcHJvZ3JhbSBDT1JFUExMIG91dHB1dCBmcmVxdWVuY3kgdG8gNTAwTUh6ICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY3LVx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfUE9TRElWX007XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY4LVx0dmFsIHw9IDIgXHUwMDNjXHUwMDNjIFJHX0NPUkVQTExfUE9TRElWX1M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY5Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDcwLVx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3My1cdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF8yNU1IWjpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzQ6XHRcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3NS1cdFx0dmFsIFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3Ni1cdFx0dmFsIHw9IDB4MTQwMDAwIFx1MDAzY1x1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Nzc6XHRcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDc5LVx0Y2FzZSBNVDc1MzFfWFRBTF9GU0VMXzQwTUhaOlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MDpcdFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgxLVx0XHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX007XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgyLVx0XHR2YWwgfD0gMHgxOTAwMDAgXHUwMDNjXHUwMDNjIFJHX0NPUkVQTExfU0RNX1BDV19TO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MzpcdFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg0LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg3LVx0LyogU2V0IGZlZWRiYWNrIGRpdmlkZSByYXRpbyB1cGRhdGUgc2lnbmFsIHRvIGhpZ2ggKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODg6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODktXHR2YWwgfD0gUkdfQ09SRVBMTF9TRE1fUENXX0NIRztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTA6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTEtXHQvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBYVEFMIGNsb2NrcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTQtXHQvKiBTdGVwIDU6IHNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBsb3cgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTU6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTYtXHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX0NIRztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTc6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk5LVx0LyogRW5hYmxlIDMyNU0gY2xvY2sgZm9yIFNHTUlJICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAwOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1I1LCAweGFkMDAwMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTAxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMi1cdC8qIEVuYWJsZSAyNTBTU0MgY2xvY2sgZm9yIFJHTUlJICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAzOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1IyLCAweDRmNDAwMDApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDUtXHQvKiBTdGVwIDY6IEVuYWJsZSBNVDc1MzEgUExMICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA2Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA3LVx0dmFsIHw9IFJHX0NPUkVQTExfRU47XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA4Olx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxMDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTExLVx0dmFsIHw9IEVOX0NPUkVQTEw7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTEyOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTMtXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTE2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE3Om10NzUzMF9taWJfcmVzZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxOC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE5Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIxOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0ZMVVNIKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjI6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX01JQl9DQ1IsIENDUl9NSUJfQUNUSVZBVEUpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMy19XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNTpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMwOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzEtXHRcdFx0XHR1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTM2OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2M0NShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNy1cdFx0XHQgICAgICAgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQyOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0My1cdFx0XHRcdGludCByZWdudW0sIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU0OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQ5Om10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTAtXHRcdFx0aW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTEte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1MjpcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1My1cdHUzMiByZWcsIHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTU3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1ODpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NjA6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTYxLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjgtXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTY5Olx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzE6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTcyLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzktXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTgwOlx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODI6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgzLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTAtb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU5MTpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTkyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01OTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU5NzptdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5OC1cdFx0XHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDA6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDEtXHR1MzIgdmFsLCByZWc7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDY6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA4Olx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwOS1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjE2LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxNzpcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjE5Olx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyMC1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjI3LVx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2Mjg6XHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjI5LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYzMDpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MzEtXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzNy1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjM4Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MzktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY0Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ0Om10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDY6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDctXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjUyOlx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1NDpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTUtXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NjQ6XHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjY1LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY2NjpcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjctXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY3NC1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njc1Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY4MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjgxOm10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4Mi1cdFx0XHQgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgzLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2ODQ6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODUtXHRpbnQgcmV0O1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3Nzg4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NTMwIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IG1pbmQganVtcHMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBNVDc1MzAgc3dpdGNoLiBJdCYjMzk7cyBsaXN0aW5nIGBORVRfRFNBX01UNzUzMGAsIGBORVRfRFNBX01UNzUzMF9NRElPYCwgYW5kIGBORVRfRFNBX01UNzUzMF9NTUlPYC4gS25vd2luZyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZXNlIGRyaXZlcnMsIHRoZSBmYWN0IHRoYXQgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc1MzAtbW1pby5jYCBhbmQgYG10NzUzMC5jYCB0ZWxscyBtZSByaWdodCBhd2F5IHRoYXQgYE5FVF9EU0FfTVQ3NTMwYCAqYW5kKiBgTkVUX0RTQV9NVDc1MzBfTU1JT2AgYXJlIGdvaW5nIHRvIGJlIGVzc2VudGlhbCBmb3IgdGhlIGNoYW5nZXMgdG8gdGFrZSBlZmZlY3QuIE5vIHN1cnByaXNlcyB0aGVyZS4KClRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRlZCwgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIERTQSBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5lZWQgdG8gbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBpcyBqdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGF2b2lkIGFueSB1bmV4cGVjdGVkIGlzc3VlcyBkb3duc3RyZWFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX01UNzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzQtXHRzZWxlY3QgUkVHTUFQX0lSUVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzU6XHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNjpcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Ni1cdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01My1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU2Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTctXHRkZXBlbmRzIG9uIEhBU19JT01FTVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY2MgoJCQkJCQkJb3V0cHV0OiAxNzMKCQkJCQkJCXRob3VnaHRzOiAyNDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1UNzUzMCBTd2l0Y2ggQ2hpcCBTdXBwb3J0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGFkZGluZyBzdXBwb3J0IGZvciBhIG5ldyBzd2l0Y2ggY2hpcCwgdGhlIEVONzUyOCwgd2l0aGluIHRoZSBNVDc1MzAgRFNBIGRyaXZlci4gIFRoZSBlc3NlbnRpYWwgY29uZmlncyBuZWVkZWQgYXJlIGBORVRfRFNBX01UNzUzMGAgYW5kIGBORVRfRFNBX01UNzUzMF9NTUlPYC4gIFRoaXMgaXMgYSBwcmV0dHkgZm9jdXNlZCBjaGFuZ2UsIHNvIGl0JiMzOTtzIGdvb2QuCgpNeSBpbW1lZGlhdGUgZm9jdXMgc2hpZnRzIHRvIHRoZSBuZXdseSBpbnRyb2R1Y2VkIGFuZCBtb2RpZmllZCBmdW5jdGlvbnM6IGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgLCBgbXQ3OTg4X3NldHVwYCAod2l0aCBpdHMgbmV3IGBJRF9FTjc1MjhgIGJsb2NrKSwgYW5kIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIChhbHNvIG1vZGlmaWVkIHRvIGluY2x1ZGUgYElEX0VONzUyOGApLiAgYGVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc2AgaXMgYnJhbmQgbmV3LCB3aGljaCBtZWFucyBpdCB3aWxsIHByb2JhYmx5IG5lZWQgdGhvcm91Z2ggYXR0ZW50aW9uIHdoZW4gZnV6emluZy4KCkFmdGVyIGEgcXVpY2sgYXNzZXNzbWVudCwgdGhlc2UgYXJlbiYjMzk7dCBob3QtcGF0aCBmdW5jdGlvbnMsIHNvIHBvdGVudGlhbCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBhcmUgbGVzcyBvZiBhIGNvbmNlcm4uIGBtdDc5ODhfc2V0dXBgIGlzIGEgcHJvYmUtdGltZSBmdW5jdGlvbiwgYGVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc2AgaXMgY2FsbGVkIGR1cmluZyBwb3J0IHNldHVwLCBhbmQgYG10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZWAgaXMgdHJpZ2dlcmVkIGJ5IGNvbmR1aXQgc3RhdGUgY2hhbmdlcy4KCkxvb2tpbmcgY2xvc2VyIGF0IHRoZSBwYXRjaCwgdGhlIG1haW4gbW9kaWZpY2F0aW9ucyBhcmUgaW4gYG10NzUzMC1tbWlvLmNgIHdoZXJlIHdlIHNlZSB0aGUgYWRkaXRpb24gb2YgdGhlIEVONzUyOCBjb21wYXRpYmxlIHN0cmluZyBhbmQgYW4gZW50cnkgaW4gdGhlIGBtdDc1M3hfdGFibGVgLiAgYG10NzUzMC5jYCBnZXRzIHRoZSBidWxrIG9mIHRoZSBjaGFuZ2VzLiBUaGUgc3dpdGNoJiMzOTtzIFBIWXMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaCBwb3J0cyAxLi40KSwgc28gdGhleSYjMzk7cmUgcmVhY2hlZCB0aHJvdWdoIHRoZSBQSFkmIzM5O3MgaW50ZXJuYWwgaW5kaXJlY3QgYWNjZXNzIHJlZ2lzdGVycy4KClRoZSBrZXkgYWRkaXRpb24gaXMgYGVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc2AsIHdoaWNoIGRlZmluZXMgdGhlIGNhcGFiaWxpdGllcyBmb3IgdGhlIEVONzUyOCBwb3J0cy4gUG9ydHMgMS00IGFyZSBpbnRlcm5hbCBhbmQgc3VwcG9ydCAxMC8xMDAvMTAwMCBNYnBzLCB3aGlsZSBwb3J0IDYgYWxzbyBzdXBwb3J0cyBpbnRlcm5hbCBtb2RlIGFuZCAxMDAwRkQuCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSBtb2RpZmljYXRpb24gdG8gYG10Nzk4OF9zZXR1cGAgd2hpY2ggZGlzYWJsZXMgRUVFIChFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0KSBvbiB0aGUgRU43NTI4IExBTiBHUEhZcy4gSXQmIzM5O3MgZGlzYWJsaW5nIHRoZSBhZHZlcnRpc2VtZW50IG9mIEVFRSBiZWNhdXNlIGl0IGNhdXNlcyBpc3N1ZXMgd2l0aCBsaW5rIHN0YWJpbGl0eS4gIEZpbmFsbHksIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIGlzIG1vZGlmaWVkIHRvIGluY2x1ZGUgSURfRU43NTI4LgoKR2l2ZW4gdGhlIHNjb3BlIGFuZCByZWFjaGFiaWxpdHkgdGhyb3VnaCB0aGUgRFNBIGNvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIG1hcmtpbmcgdGhpcyBhcyAmIzM0O1dvcnRoRnV6emluZz10cnVlLiYjMzQ7ICBUaGUgZm9jdXMgc3ltYm9scyBhcmUgY2xlYXI6IGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgLCBgbXQ3OTg4X3NldHVwYCwgYW5kIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgLiBJIHdpbGwgc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RTQV9NVDc1MzAmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NVDc1MzBfTU1JTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VuNzUyOF9tYWNfcG9ydF9nZXRfY2FwcyYjMzQ7LAogICAgJiMzNDttdDc5ODhfc2V0dXAmIzM0OywKICAgICYjMzQ7bXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggU29DIGJ1aWx0LWluIHN3aXRjaCB0byB0aGUgTWVkaWF0ZWsgTVQ3NTMwIERTQSBkcml2ZXIuIFRoaXMgaW5jbHVkZXMgYSBuZXcgZnVuY3Rpb24gZm9yIGdldHRpbmcgTUFDIHBvcnQgY2FwYWJpbGl0aWVzIGFuZCBtb2RpZmljYXRpb25zIHRvIHN3aXRjaCBzZXR1cCBhbmQgY29uZHVpdCBzdGF0ZSBjaGFuZ2UgbG9naWMuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgZGV2aWNlIHRyZWUgYW5kIHRoZSBzd2l0Y2ggb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgRFNBIGNvcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RTQV9NVDc1MzAmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9NVDc1MzBfTU1JTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VuNzUyOF9tYWNfcG9ydF9nZXRfY2FwcyYjMzQ7LAogICAgJiMzNDttdDc5ODhfc2V0dXAmIzM0OywKICAgICYjMzQ7bXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggU29DIGJ1aWx0LWluIHN3aXRjaCB0byB0aGUgTWVkaWF0ZWsgTVQ3NTMwIERTQSBkcml2ZXIuIFRoaXMgaW5jbHVkZXMgYSBuZXcgZnVuY3Rpb24gZm9yIGdldHRpbmcgTUFDIHBvcnQgY2FwYWJpbGl0aWVzIGFuZCBtb2RpZmljYXRpb25zIHRvIHN3aXRjaCBzZXR1cCBhbmQgY29uZHVpdCBzdGF0ZSBjaGFuZ2UgbG9naWMuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgZGV2aWNlIHRyZWUgYW5kIHRoZSBzd2l0Y2ggb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgRFNBIGNvcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ1OjU0LjQ4NjEzODI1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODI4MDMyNTAxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRFNBX01UNzUzMFwiLFxuICAgIFwiTkVUX0RTQV9NVDc1MzBfTU1JT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc1wiLFxuICAgIFwibXQ3OTg4X3NldHVwXCIsXG4gICAgXCJtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBFY29OZXQgRU43NTI4IFNvQyBidWlsdC1pbiBzd2l0Y2ggdG8gdGhlIE1lZGlhdGVrIE1UNzUzMCBEU0EgZHJpdmVyLiBUaGlzIGluY2x1ZGVzIGEgbmV3IGZ1bmN0aW9uIGZvciBnZXR0aW5nIE1BQyBwb3J0IGNhcGFiaWxpdGllcyBhbmQgbW9kaWZpY2F0aW9ucyB0byBzd2l0Y2ggc2V0dXAgYW5kIGNvbmR1aXQgc3RhdGUgY2hhbmdlIGxvZ2ljLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIGRldmljZSB0cmVlIGFuZCB0aGUgc3dpdGNoIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgdGhlIERTQSBjb3JlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ1OjU0LjQ4NjE0NDE4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk4OTQ1OTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWNmMThlYzBiOTRiZTFjMDFmZjU5NDUyMGNkMTVjNGIyM2I0YzVmNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxMSAwNzo0NTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tZWRpYXRlayxtdDc1MzAueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sXFxuaW5kZXggODE1YTkwODA4OTAxMDQuLjkwYjM1ODJiNzYxOTA5IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWxcXG5AQCAtMTAwLDYgKzEwMCwxMCBAQCBwcm9wZXJ0aWVzOlxcbiAgICAgICAgICAgQnVpbHQtaW4gc3dpdGNoIG9mIHRoZSBBaXJvaGEgQU43NTgzIFNvQ1xcbiAgICAgICAgIGNvbnN0OiBhaXJvaGEsYW43NTgzLXN3aXRjaFxcbiBcXG4rICAgICAgLSBkZXNjcmlwdGlvbjpcXG4rICAgICAgICAgIEJ1aWx0LWluIHN3aXRjaCBvZiB0aGUgRWNvTmV0IEVONzUyOCBTb0NcXG4rICAgICAgICBjb25zdDogZWNvbmV0LGVuNzUyOC1zd2l0Y2hcXG4rXFxuICAgcmVnOlxcbiAgICAgbWF4SXRlbXM6IDFcXG4gXFxuQEAgLTMxOCw2ICszMjIsNyBAQCBhbGxPZjpcXG4gICAgICAgICAgICAgLSBtZWRpYXRlayxtdDc5ODgtc3dpdGNoXFxuICAgICAgICAgICAgIC0gYWlyb2hhLGVuNzU4MS1zd2l0Y2hcXG4gICAgICAgICAgICAgLSBhaXJvaGEsYW43NTgzLXN3aXRjaFxcbisgICAgICAgICAgICAtIGVjb25ldCxlbjc1Mjgtc3dpdGNoXFxuICAgICB0aGVuOlxcbiAgICAgICAkcmVmOiBcXFwiIy8kZGVmcy9idWlsdGluLWRzYS1wb3J0XFxcIlxcbiAgICAgICBwcm9wZXJ0aWVzOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXFxuaW5kZXggMWRjOGI5M2ZiNTFhMTMuLjEwNjU2NzFiY2RkMTMyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmNcXG5AQCAtMTMsNiArMTMsNyBAQFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc5ODhfb2ZfbWF0Y2hbXSA9IHtcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhaXJvaGEsYW43NTgzLXN3aXRjaFxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9BTjc1ODNdLCB9LFxcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcImFpcm9oYSxlbjc1ODEtc3dpdGNoXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX0VONzU4MV0sIH0sXFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwiZWNvbmV0LGVuNzUyOC1zd2l0Y2hcXFwiLCAuZGF0YSA9IFxcdTAwMjZtdDc1M3hfdGFibGVbSURfRU43NTI4XSwgfSxcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtZWRpYXRlayxtdDc5ODgtc3dpdGNoXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzk4OF0sIH0sXFxuIFxcdHsgLyogc2VudGluZWwgKi8gfSxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXFxuaW5kZXggM2MyYTMwMjliMTBjZmIuLjJhZWNhZDc3YWY5YWQ2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbkBAIC0yOTEyLDYgKzI5MTIsMzAgQEAgc3RhdGljIHZvaWQgZW43NTgxX21hY19wb3J0X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZW43NTI4X21hY19wb3J0X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuK1xcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuK3tcXG4rXFx0c3dpdGNoIChwb3J0KSB7XFxuK1xcdC8qIFBvcnRzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gc3dpdGNoIFBIWXMuIFRoZXJlIGlzIG5vIE1JSSBwaW5vdXQuICovXFxuK1xcdGNhc2UgMSAuLi4gNDpcXG4rXFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcXG4rXFx0XFx0XFx0ICBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFxuK1xcdFxcdGNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDBGRDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcbitcXHQvKiBQb3J0IDYgaXMgY29ubmVjdGVkIHRvIFNvQydzIEdNQUMgYXQgMTAwMCBNYnBzIGZ1bGwgZHVwbGV4LiBUaGVyZVxcbitcXHQgKiBpcyBubyBNSUkgcGlub3V0LlxcbitcXHQgKi9cXG4rXFx0Y2FzZSA2OlxcbitcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbitcXHRcXHRcXHQgIGNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbitcXG4rXFx0XFx0Y29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMDAwRkQ7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkXFxuIG10NzUzMF9tYWNfY29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLFxcbiBcXHRcXHQgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuQEAgLTMyNTQsNyArMzI3OCw4IEBAIG10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuIFxcdCAqIGZvcndhcmRlZCB0byB0aGUgbnVtZXJpY2FsbHkgc21hbGxlc3QgQ1BVIHBvcnQgd2hvc2UgY29uZHVpdFxcbiBcXHQgKiBpbnRlcmZhY2UgaXMgdXAuXFxuIFxcdCAqL1xcbi1cXHRpZiAocHJpdi1cXHUwMDNlaWQgIT0gSURfTVQ3NTMwIFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWlkICE9IElEX01UNzYyMSlcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWlkICE9IElEX01UNzUzMCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2VpZCAhPSBJRF9NVDc2MjEgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHByaXYtXFx1MDAzZWlkICE9IElEX0VONzUyOClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0bWFzayA9IEJJVChjcHVfZHAtXFx1MDAzZWluZGV4KTtcXG5AQCAtMzMxOSw5ICszMzQ0LDE3IEBAIHN0YXRpYyBpbnQgbXQ3NTN4X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcdH1cXG4gfVxcbiBcXG4rLyogVGhlIEVONzUyOCBMQU4gcG9ydHMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaFxcbisgKiBwb3J0cyAxLi40KSBvbiB0aGUgc3dpdGNoIGludGVybmFsIE1ESU8gYnVzLCByZWFjaGFibGUgb25seSB0aHJvdWdoIHRoZSBQSFlcXG4rICogaW5kaXJlY3QgYWNjZXNzIHJlZ2lzdGVycy4gVGhlcmUgaXMgbm8gbWRpb2RldiB0byBkZXJpdmUgdGhlIGFkZHJlc3NlcyBmcm9tLlxcbisgKi9cXG4rI2RlZmluZSBFTjc1MjhfR1BIWV9CQVNFXFx0XFx0OVxcbisjZGVmaW5lIEVONzUyOF9OVU1fR1BIWVNcXHRcXHQ0XFxuK1xcbiBzdGF0aWMgaW50IG10Nzk4OF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIHtcXG4gXFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuK1xcdGludCBpO1xcbiBcXG4gXFx0LyogUmVzZXQgdGhlIHN3aXRjaCAqL1xcbiBcXHRyZXNldF9jb250cm9sX2Fzc2VydChwcml2LVxcdTAwM2Vyc3RjKTtcXG5AQCAtMzM0Miw2ICszMzc1LDE3IEBAIHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4gXFx0LyogUmVzZXQgdGhlIHN3aXRjaCBQSFlzICovXFxuIFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfU1lTX0NUUkwsIFNZU19DVFJMX1BIWV9SU1QpO1xcbiBcXG4rXFx0LyogVGhlIEVONzUyOCBMQU4gR1BIWXMgYWR2ZXJ0aXNlIEVFRSBieSBkZWZhdWx0LCBidXQgbmVnb3RpYXRpbmcgRUVFXFxuK1xcdCAqIHdpdGggY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhblxcbitcXHQgKiB1bnN0YWJsZSBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIERpc2FibGUgRUVFIGFkdmVydGlzZW1lbnQgb25cXG4rXFx0ICogdGhlbS5cXG4rXFx0ICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2VpZCA9PSBJRF9FTjc1MjgpXFxuK1xcdFxcdGZvciAoaSA9IEVONzUyOF9HUEhZX0JBU0U7XFxuK1xcdFxcdCAgICAgaSBcXHUwMDNjIEVONzUyOF9HUEhZX0JBU0UgKyBFTjc1MjhfTlVNX0dQSFlTOyBpKyspXFxuK1xcdFxcdFxcdG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBpLCBNRElPX01NRF9BTixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IE1ESU9fQU5fRUVFX0FEViwgMCk7XFxuK1xcbiBcXHRyZXR1cm4gbXQ3NTMxX3NldHVwX2NvbW1vbihkcyk7XFxuIH1cXG4gXFxuQEAgLTM0NTksNiArMzUwMywxNiBAQCBjb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7XFxuIFxcdFxcdC5waHlfd3JpdGVfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlLFxcbiBcXHRcXHQubWFjX3BvcnRfZ2V0X2NhcHMgPSBlbjc1ODFfbWFjX3BvcnRfZ2V0X2NhcHMsXFxuIFxcdH0sXFxuK1xcdFtJRF9FTjc1MjhdID0ge1xcbitcXHRcXHQuaWQgPSBJRF9FTjc1MjgsXFxuK1xcdFxcdC5wY3Nfb3BzID0gXFx1MDAyNm10NzUzMF9wY3Nfb3BzLFxcbitcXHRcXHQuc3dfc2V0dXAgPSBtdDc5ODhfc2V0dXAsXFxuK1xcdFxcdC5waHlfcmVhZF9jMjIgPSBtdDc1MzFfaW5kX2MyMl9waHlfcmVhZCxcXG4rXFx0XFx0LnBoeV93cml0ZV9jMjIgPSBtdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUsXFxuK1xcdFxcdC5waHlfcmVhZF9jNDUgPSBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZCxcXG4rXFx0XFx0LnBoeV93cml0ZV9jNDUgPSBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUsXFxuK1xcdFxcdC5tYWNfcG9ydF9nZXRfY2FwcyA9IGVuNzUyOF9tYWNfcG9ydF9nZXRfY2FwcyxcXG4rXFx0fSxcXG4gfTtcXG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTN4X3RhYmxlKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaFxcbmluZGV4IGRkMzNiMGRmMzQxOWUzLi41ZjFlODQxZjQyYzBlZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmhcXG5AQCAtMjEsNiArMjEsNyBAQCBlbnVtIG10NzUzeF9pZCB7XFxuIFxcdElEX01UNzk4OCA9IDMsXFxuIFxcdElEX0VONzU4MSA9IDQsXFxuIFxcdElEX0FONzU4MyA9IDUsXFxuK1xcdElEX0VONzUyOCA9IDYsXFxuIH07XFxuIFxcbiAjZGVmaW5lXFx0TlVNX1RSR01JSV9DVFJMXFx0XFx0XFx0NVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NTo1NC44ODU5MzY1MTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNzg4MDUxODczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRFNBX01UNzUzMFwiLFxuICAgIFwiTkVUX0RTQV9NVDc1MzBfTU1JT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc1wiLFxuICAgIFwibXQ3OTg4X3NldHVwXCIsXG4gICAgXCJtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBFY29OZXQgRU43NTI4IFNvQyBidWlsdC1pbiBzd2l0Y2ggdG8gdGhlIE1lZGlhdGVrIE1UNzUzMCBEU0EgZHJpdmVyLiBUaGlzIGluY2x1ZGVzIGEgbmV3IGZ1bmN0aW9uIGZvciBnZXR0aW5nIE1BQyBwb3J0IGNhcGFiaWxpdGllcyBhbmQgbW9kaWZpY2F0aW9ucyB0byBzd2l0Y2ggc2V0dXAgYW5kIGNvbmR1aXQgc3RhdGUgY2hhbmdlIGxvZ2ljLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIGRldmljZSB0cmVlIGFuZCB0aGUgc3dpdGNoIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgdGhlIERTQSBjb3JlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWNmMThlYzBiOTRiZTFjMDFmZjU5NDUyMGNkMTVjNGIyM2I0YzVmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDA3OjQ1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tZWRpYXRlayxtdDc1MzAueWFtbFxuaW5kZXggODE1YTkwODA4OTAxMDQuLjkwYjM1ODJiNzYxOTA5IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWVkaWF0ZWssbXQ3NTMwLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21lZGlhdGVrLG10NzUzMC55YW1sXG5AQCAtMTAwLDYgKzEwMCwxMCBAQCBwcm9wZXJ0aWVzOlxuICAgICAgICAgICBCdWlsdC1pbiBzd2l0Y2ggb2YgdGhlIEFpcm9oYSBBTjc1ODMgU29DXG4gICAgICAgICBjb25zdDogYWlyb2hhLGFuNzU4My1zd2l0Y2hcbiBcbisgICAgICAtIGRlc2NyaXB0aW9uOlxuKyAgICAgICAgICBCdWlsdC1pbiBzd2l0Y2ggb2YgdGhlIEVjb05ldCBFTjc1MjggU29DXG4rICAgICAgICBjb25zdDogZWNvbmV0LGVuNzUyOC1zd2l0Y2hcbitcbiAgIHJlZzpcbiAgICAgbWF4SXRlbXM6IDFcbiBcbkBAIC0zMTgsNiArMzIyLDcgQEAgYWxsT2Y6XG4gICAgICAgICAgICAgLSBtZWRpYXRlayxtdDc5ODgtc3dpdGNoXG4gICAgICAgICAgICAgLSBhaXJvaGEsZW43NTgxLXN3aXRjaFxuICAgICAgICAgICAgIC0gYWlyb2hhLGFuNzU4My1zd2l0Y2hcbisgICAgICAgICAgICAtIGVjb25ldCxlbjc1Mjgtc3dpdGNoXG4gICAgIHRoZW46XG4gICAgICAgJHJlZjogXCIjLyRkZWZzL2J1aWx0aW4tZHNhLXBvcnRcIlxuICAgICAgIHByb3BlcnRpZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY1xuaW5kZXggMWRjOGI5M2ZiNTFhMTMuLjEwNjU2NzFiY2RkMTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXG5AQCAtMTMsNiArMTMsNyBAQFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10Nzk4OF9vZl9tYXRjaFtdID0ge1xuIFx0eyAuY29tcGF0aWJsZSA9IFwiYWlyb2hhLGFuNzU4My1zd2l0Y2hcIiwgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfQU43NTgzXSwgfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcImFpcm9oYSxlbjc1ODEtc3dpdGNoXCIsIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX0VONzU4MV0sIH0sXG4rXHR7IC5jb21wYXRpYmxlID0gXCJlY29uZXQsZW43NTI4LXN3aXRjaFwiLCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9FTjc1MjhdLCB9LFxuIFx0eyAuY29tcGF0aWJsZSA9IFwibWVkaWF0ZWssbXQ3OTg4LXN3aXRjaFwiLCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc5ODhdLCB9LFxuIFx0eyAvKiBzZW50aW5lbCAqLyB9LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5pbmRleCAzYzJhMzAyOWIxMGNmYi4uMmFlY2FkNzdhZjlhZDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuQEAgLTI5MTIsNiArMjkxMiwzMCBAQCBzdGF0aWMgdm9pZCBlbjc1ODFfbWFjX3BvcnRfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgZW43NTI4X21hY19wb3J0X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4rXHRcdFx0XHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuK3tcbitcdHN3aXRjaCAocG9ydCkge1xuK1x0LyogUG9ydHMgd2hpY2ggYXJlIGNvbm5lY3RlZCB0byBzd2l0Y2ggUEhZcy4gVGhlcmUgaXMgbm8gTUlJIHBpbm91dC4gKi9cbitcdGNhc2UgMSAuLi4gNDpcbitcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbitcdFx0XHQgIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXG4rXHRcdGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIHw9IE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMEZEO1xuK1x0XHRicmVhaztcbitcbitcdC8qIFBvcnQgNiBpcyBjb25uZWN0ZWQgdG8gU29DJ3MgR01BQyBhdCAxMDAwIE1icHMgZnVsbCBkdXBsZXguIFRoZXJlXG4rXHQgKiBpcyBubyBNSUkgcGlub3V0LlxuK1x0ICovXG4rXHRjYXNlIDY6XG4rXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4rXHRcdFx0ICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1xuK1x0XHRjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyB8PSBNQUNfMTAwMEZEO1xuK1x0XHRicmVhaztcbitcdH1cbit9XG4rXG4gc3RhdGljIHZvaWRcbiBtdDc1MzBfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcbiBcdFx0ICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuQEAgLTMyNTQsNyArMzI3OCw4IEBAIG10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4gXHQgKiBmb3J3YXJkZWQgdG8gdGhlIG51bWVyaWNhbGx5IHNtYWxsZXN0IENQVSBwb3J0IHdob3NlIGNvbmR1aXRcbiBcdCAqIGludGVyZmFjZSBpcyB1cC5cbiBcdCAqL1xuLVx0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfTVQ3NTMwIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZWlkICE9IElEX01UNzYyMSlcbitcdGlmIChwcml2LVx1MDAzZWlkICE9IElEX01UNzUzMCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2VpZCAhPSBJRF9NVDc2MjEgXHUwMDI2XHUwMDI2XG4rXHQgICAgcHJpdi1cdTAwM2VpZCAhPSBJRF9FTjc1MjgpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1hc2sgPSBCSVQoY3B1X2RwLVx1MDAzZWluZGV4KTtcbkBAIC0zMzE5LDkgKzMzNDQsMTcgQEAgc3RhdGljIGludCBtdDc1M3hfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdH1cbiB9XG4gXG4rLyogVGhlIEVONzUyOCBMQU4gcG9ydHMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaFxuKyAqIHBvcnRzIDEuLjQpIG9uIHRoZSBzd2l0Y2ggaW50ZXJuYWwgTURJTyBidXMsIHJlYWNoYWJsZSBvbmx5IHRocm91Z2ggdGhlIFBIWVxuKyAqIGluZGlyZWN0IGFjY2VzcyByZWdpc3RlcnMuIFRoZXJlIGlzIG5vIG1kaW9kZXYgdG8gZGVyaXZlIHRoZSBhZGRyZXNzZXMgZnJvbS5cbisgKi9cbisjZGVmaW5lIEVONzUyOF9HUEhZX0JBU0VcdFx0OVxuKyNkZWZpbmUgRU43NTI4X05VTV9HUEhZU1x0XHQ0XG4rXG4gc3RhdGljIGludCBtdDc5ODhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIHtcbiBcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4rXHRpbnQgaTtcbiBcbiBcdC8qIFJlc2V0IHRoZSBzd2l0Y2ggKi9cbiBcdHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHByaXYtXHUwMDNlcnN0Yyk7XG5AQCAtMzM0Miw2ICszMzc1LDE3IEBAIHN0YXRpYyBpbnQgbXQ3OTg4X3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcdC8qIFJlc2V0IHRoZSBzd2l0Y2ggUEhZcyAqL1xuIFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9TWVNfQ1RSTCwgU1lTX0NUUkxfUEhZX1JTVCk7XG4gXG4rXHQvKiBUaGUgRU43NTI4IExBTiBHUEhZcyBhZHZlcnRpc2UgRUVFIGJ5IGRlZmF1bHQsIGJ1dCBuZWdvdGlhdGluZyBFRUVcbitcdCAqIHdpdGggY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhblxuK1x0ICogdW5zdGFibGUgbGluayB3aXRoIGRyb3BwZWQgZnJhbWVzLiBEaXNhYmxlIEVFRSBhZHZlcnRpc2VtZW50IG9uXG4rXHQgKiB0aGVtLlxuK1x0ICovXG4rXHRpZiAocHJpdi1cdTAwM2VpZCA9PSBJRF9FTjc1MjgpXG4rXHRcdGZvciAoaSA9IEVONzUyOF9HUEhZX0JBU0U7XG4rXHRcdCAgICAgaSBcdTAwM2MgRU43NTI4X0dQSFlfQkFTRSArIEVONzUyOF9OVU1fR1BIWVM7IGkrKylcbitcdFx0XHRtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUocHJpdiwgaSwgTURJT19NTURfQU4sXG4rXHRcdFx0XHRcdFx0IE1ESU9fQU5fRUVFX0FEViwgMCk7XG4rXG4gXHRyZXR1cm4gbXQ3NTMxX3NldHVwX2NvbW1vbihkcyk7XG4gfVxuIFxuQEAgLTM0NTksNiArMzUwMywxNiBAQCBjb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3NTN4X3RhYmxlW10gPSB7XG4gXHRcdC5waHlfd3JpdGVfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlLFxuIFx0XHQubWFjX3BvcnRfZ2V0X2NhcHMgPSBlbjc1ODFfbWFjX3BvcnRfZ2V0X2NhcHMsXG4gXHR9LFxuK1x0W0lEX0VONzUyOF0gPSB7XG4rXHRcdC5pZCA9IElEX0VONzUyOCxcbitcdFx0LnBjc19vcHMgPSBcdTAwMjZtdDc1MzBfcGNzX29wcyxcbitcdFx0LnN3X3NldHVwID0gbXQ3OTg4X3NldHVwLFxuK1x0XHQucGh5X3JlYWRfYzIyID0gbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQsXG4rXHRcdC5waHlfd3JpdGVfYzIyID0gbXQ3NTMxX2luZF9jMjJfcGh5X3dyaXRlLFxuK1x0XHQucGh5X3JlYWRfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQsXG4rXHRcdC5waHlfd3JpdGVfYzQ1ID0gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlLFxuK1x0XHQubWFjX3BvcnRfZ2V0X2NhcHMgPSBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHMsXG4rXHR9LFxuIH07XG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTN4X3RhYmxlKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmggYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmhcbmluZGV4IGRkMzNiMGRmMzQxOWUzLi41ZjFlODQxZjQyYzBlZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oXG5AQCAtMjEsNiArMjEsNyBAQCBlbnVtIG10NzUzeF9pZCB7XG4gXHRJRF9NVDc5ODggPSAzLFxuIFx0SURfRU43NTgxID0gNCxcbiBcdElEX0FONzU4MyA9IDUsXG4rXHRJRF9FTjc1MjggPSA2LFxuIH07XG4gXG4gI2RlZmluZVx0TlVNX1RSR01JSV9DVFJMXHRcdFx0NVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDU6NTQuODg1OTM4MDA1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE3NzM0MTk2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBhIE5ldHdvcmsgU3dpdGNoIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggU29DJ3MgYnVpbHQtaW4gc3dpdGNoIHRvIHRoZSBNZWRpYXRlayBNVDc1MzAgRFNBIGRyaXZlci4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlczogdGhlIERldmljZSBUcmVlIGJpbmRpbmdzLCB0aGUgTU1JTyBhbmQgY29yZSBkcml2ZXIgZmlsZXMsIGFuZCB0aGUgaGVhZGVyIGZpbGUuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBkZXZpY2Utc3BlY2lmaWMgbWF0Y2hpbmcsIGNhcGFiaWxpdGllcywgYW5kIHdvcmthcm91bmRzIGZvciB0aGlzIHBhcnRpY3VsYXIgc3dpdGNoLiBTcGVjaWZpY2FsbHksIEkgc2VlIGBlY29uZXQsZW43NTI4LXN3aXRjaGAgYmVpbmcgYWRkZWQsIGFsb25nIHdpdGggZnVuY3Rpb25zIGFuZCBpZGVudGlmaWVycyB0aGF0IHJlbGF0ZSB0byB0aGlzIG5ldyBoYXJkd2FyZS4gVGhlIHBhdGNoIGFsc28gaW5jbHVkZXMgYSB3b3JrYXJvdW5kIHRvIGRpc2FibGUgRUVFIGFkdmVydGlzZW1lbnQgb24gaXRzIEdQSFlzLlxuXG5Ob3csIGFzIGFuIGV4cGVydCwgbXkgcHJpbWFyeSB0aG91Z2h0IGlzLCBcIkNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCIgVGhpcyBpcyBhIERTQSBzd2l0Y2ggZHJpdmVyLCBzbyBpdCdzIGxpa2VseSBwcm9iZWQgdGhyb3VnaCB0aGUgRGV2aWNlIFRyZWUuIEkgaW1tZWRpYXRlbHkgdGhpbmsgb2YgUUVNVS4gQ2FuIEkgZW11bGF0ZSB0aGUgRU43NTI4IG9yIHRoZSBNVDc1MzAvTVQ3OTg4IGluIFFFTVU/IEFsbW9zdCBjZXJ0YWlubHkgbm90IOKAkyBJJ3ZlIG5ldmVyIGhlYXJkIG9mIHN1Y2ggc3BlY2lmaWMgZW11bGF0aW9uIGJlaW5nIGF2YWlsYWJsZS4gVGhlc2UgYXJlIHR5cGljYWxseSBsb3ctbGV2ZWwgaGFyZHdhcmUgZHJpdmVycy5cblxuSG93ZXZlciwgYSBnbGltbWVyIG9mIGhvcGUgYXJpc2VzOiBzeXprYWxsZXIuIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBhcmJpdHJhcnkgRGV2aWNlIFRyZWVzLiBUaGVvcmV0aWNhbGx5LCBpZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGluLCBpdCAqY291bGQqIGJlIHByb2JlZCBieSBzeXprYWxsZXIgaWYgdGhlIERUIG5vZGUgbWF0Y2hlcy4gVGhlIGNhdGNoPyBJdCdzIGFuIE1NSU8gZHJpdmVyLiBXaXRob3V0IHRoZSAqYWN0dWFsKiBoYXJkd2FyZSwgTU1JTyBhY2Nlc3NlcyBhcmUgZ29pbmcgdG8gYmUgcHJvYmxlbWF0aWMuIFRoZXknbGwgZWl0aGVyIGZhdWx0IGlmIHVubWFwcGVkIG9yIGp1c3QgcmV0dXJuIG1lYW5pbmdsZXNzIGRhdGEgaWYgbWFwcGVkIHRvIGR1bW15IG1lbW9yeS4gQWx0aG91Z2ggc3l6a2FsbGVyICpkb2VzKiBtYXAgc29tZSBkdW1teSBtZW1vcnkgZm9yIE1NSU8sIGl0IGRvZXNuJ3QgZ2l2ZSBtZSBtdWNoIGhvcGUgdGhhdCB0aGUgZHJpdmVyIHdpbGwgYmVoYXZlIGluIGEgbWVhbmluZ2Z1bCB3YXkuXG5cbkJ1dCwgc3l6a2FsbGVyICpkb2VzKiBmdXp6IGRldmljZSB0cmVlcyBhbmQgKmNhbiogcHJvYmUgZHJpdmVycy4gU28gbGV0J3MgY2hlY2sgaWYgaXQncyB3b3J0aCBmdXp6aW5nIVxuXG5NeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyB0aGF0IGp1c3QgZG8gTU1JTyB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiBvciB2aXJ0dWFsIGludGVyZmFjZXMgYXJlIHVzdWFsbHkgKm5vdCogd29ydGggZnV6emluZy4gVGhleSB0ZW5kIHRvIGp1c3QgY3Jhc2ggb3IgZmFpbCBlYXJseSBkdXJpbmcgdGhlIHByb2JlIGR1ZSB0byB0aGUgaGFyZHdhcmUgbm90IHJlc3BvbmRpbmcsIGFuZCB0aGV5IHJhcmVseSBleHBvc2UgaW50ZXJlc3RpbmcsIHNvZnR3YXJlLXJlYWNoYWJsZSBhdHRhY2sgc3VyZmFjZXMuIFRoZXNlIHR5cGVzIG9mIGRyaXZlcnMgYXJlIGxpa2UgVVNCIGdhZGdldCwgbWFjODAyMTFfaHdzaW0gb3IgdmhjaSwgdGhhdCBvZmZlciBhbiBlbnRyeSBwb2ludCB0byB0aGUgc3lzdGVtIGFuZCBoYXZlIGdyZWF0IHBvdGVudGlhbCB0byBiZSBmdXp6ZWQuXG5cbldhaXQsIGxvb2tpbmcgY2xvc2VyIGF0IHRoZSBwcm9tcHQgZm9yIHRoZSB0YXNrLiBJdCBzcGVjaWZpY2FsbHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgKmV2ZW4qIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEl0IHNlZW1zIHByZXR0eSBjbGVhci4gTXkgaW5zdGluY3RzIGFyZSByaWdodC5cblxuU28sIHRoZSBgbXQ3NTMwYCBzd2l0Y2ggZHJpdmVyLi4uaXMgaXQgcmVhY2hhYmxlIGluIFFFTVU/IEkgZG91YnQgaXQsIGJ1dCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgZG9uJ3QgbmVlZCB0byBsb29rIGF0IFFFTVUgc291cmNlIGNvZGUuIEkga25vdyBpdCdzIGEgaGFyZHdhcmUgZHJpdmVyLlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGRyaXZlciBiZWluZyB0aWdodGx5IGNvdXBsZWQgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgaW5hY2Nlc3NpYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIHRoYXQgdGhpcyBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTM2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MDYuNjU5MzU5ODUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Nzc0MzgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIwMTcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXFx0Kz0ga3M4OTk1Lm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzApXFx0Kz0gbXQ3NTMwLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTURJTykgKz0gbXQ3NTMwLW1kaW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMF9NTUlPKSArPSBtdDc1MzAtbW1pby5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX05FVF9EU0FfTVY4OEU2MDYwKSArPSBtdjg4ZTYwNjAub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxOTptdDc1MzBfcmVnbWFwX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjAte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjItXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTQzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NDptdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNDUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjQ2OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNDctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTY2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6Njc6bXQ3NTMwX21kaW9fcmVnbWFwX2xvY2sodm9pZCAqbWRpb19sb2NrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTcyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NzM6bXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jayh2b2lkICptZGlvX2xvY2spXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6Nzg6c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYnVzIG10NzUzMF9yZWdtYXBfYnVzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc5OlxcdC5yZWdfd3JpdGUgPSBtdDc1MzBfcmVnbWFwX3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjgwOlxcdC5yZWdfcmVhZCA9IG10NzUzMF9yZWdtYXBfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04MS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9ODM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg0Om10NzUzMV9jcmVhdGVfc2dtaWkoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwNS1cXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbWF4X3JlZ2lzdGVyID0gMHgxN2M7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTA2OlxcdFxcdG10NzUzMV9wY3NfY29uZmlnW2ldLVxcdTAwM2Vsb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX2xvY2s7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTA3OlxcdFxcdG10NzUzMV9wY3NfY29uZmlnW2ldLVxcdTAwM2V1bmxvY2sgPSBtdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwOC1cXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbG9ja19hcmcgPSBcXHUwMDI2cHJpdi1cXHUwMDNlYnVzLVxcdTAwM2VtZGlvX2xvY2s7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTA5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMDpcXHRcXHRyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0KHByaXYtXFx1MDAzZWRldiwgXFx1MDAyNm10NzUzMF9yZWdtYXBfYnVzLCBwcml2LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExMS1cXHRcXHRcXHRcXHRcXHQgIG10NzUzMV9wY3NfY29uZmlnW2ldKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzE6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXQ3NTMwX29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTMyLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWVkaWF0ZWssbXQ3NjIxXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzYyMV0sIH0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTMzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWVkaWF0ZWssbXQ3NTMwXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzUzMF0sIH0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM0LVxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWVkaWF0ZWssbXQ3NTMxXFxcIiwgLmRhdGEgPSBcXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzUzMV0sIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzYtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMzc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXQ3NTMwX29mX21hdGNoKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xNDc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0ODptdDc1MzBfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE0OS17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTUwOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTEtXFx0c3RydWN0IGRldmljZV9ub2RlICpkbjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE2My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNjQ6XFx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMDM6XFx0cHJpdi1cXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDQtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlZ21hcF9jb25maWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MjE0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE1Om10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIxNi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjE3OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTgtXFx0aW50IHJldCA9IDAsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjMzOlxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIzOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMzk6c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDAte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI0MTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjUwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1MTpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTI6XFx0LnByb2JlICA9IG10NzUzMF9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTM6XFx0LnJlbW92ZSA9IG10NzUzMF9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU0OlxcdC5zaHV0ZG93biA9IG10NzUzMF9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNTUtXFx0Lm1kaW9kcnYuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NjpcXHRcXHQubmFtZSA9IFxcXCJtdDc1MzAtbWRpb1xcXCIsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU3OlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG10NzUzMF9vZl9tYXRjaCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNTgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2MC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjE6bWRpb19tb2R1bGVfZHJpdmVyKG10NzUzMF9tZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMTAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6MTE6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzE9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzIte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjMzOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zNC1cXHR2b2lkIF9faW9tZW0gKmJhc2VfYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQ0OlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTY4PXN0YXRpYyB2b2lkIG10Nzk4OF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy02OS17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzA6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzItXFx0aWYgKHByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzM6XFx0XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9NzY9c3RhdGljIHZvaWQgbXQ3OTg4X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjc4OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9ODg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTg4X3BsYXRmb3JtX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTkyLVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6OTM6XFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1taW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTk0LVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4OF9vZl9tYXRjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMT1zdGF0aWMgc3RydWN0IG10NzUzeF9wY3MgKnBjc190b19tdDc1M3hfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM2LS8qIFN0cmluZywgb2Zmc2V0LCBhbmQgcmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyBpZiBkaWZmZXJlbnQgZnJvbSA0IGJ5dGVzICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjIG10NzUzMF9taWJbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXFx0TUlCX0RFU0MoMSwgTVQ3NTMwX1BPUlRfTUlCX1RYX0RST1AsIFxcXCJUeERyb3BcXFwiKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzptdDc1MzBfbXV0ZXhfdW5sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTYzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0OmNvcmVfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6OTY6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwMDpjb3JlX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA2OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMzg6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDE9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQyOmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDc9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ4OmNvcmVfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1NDptdDc1MzBfbWlpX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjEtXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2MjpcXHRcXHRcXHRcXFwiZmFpbGVkIHRvIHdyaXRlIG10NzUzMCByZWdpc3RlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNjc9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNjg6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNzYtXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE3NzpcXHRcXHRcXHRcXFwiZmFpbGVkIHRvIHJlYWQgbXQ3NTMwIHJlZ2lzdGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTc4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE4ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODU6bXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTg2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTg3OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xODgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4OTpcXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTkwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTE6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xOTQ9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTU6X210NzUzMF91bmxvY2tlZF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk3OlxcdHJldHVybiBtdDc1MzBfbWlpX3JlYWQocC1cXHUwMDNlcHJpdiwgcC1cXHUwMDNlcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMDA9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDE6X210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwNTpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwLVxcdTAwM2Vwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDc6XFx0dmFsID0gbXQ3NTMwX21paV9yZWFkKHAtXFx1MDAzZXByaXYsIHAtXFx1MDAzZXJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA5OlxcdG10NzUzMF9tdXRleF91bmxvY2socC1cXHUwMDNlcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMTQ9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTU6bXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTc6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjE5LVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyMDpcXHRyZXR1cm4gX210NzUzMF9yZWFkKFxcdTAwMjZwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMjM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI0Om10NzUzMF9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjUtXFx0ICAgdTMyIG1hc2ssIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyNzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjMxOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNTptdDc1MzBfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM3OlxcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzOC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQwPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MTptdDc1MzBfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDIte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDM6XFx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQ2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ3Om10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1MC1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNTE6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTQtXFx0dmFsID0gQVRDX0JVU1kgfCBBVENfTUFUKDApIHwgY21kO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNTU6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEMsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU3LVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIE1UNzUzMF9BVEMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNTg6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU5LVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjctXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2ODpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfQVRDKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY5LVxcdGlmICgoY21kID09IE1UNzUzMF9GREJfUkVBRCkgXFx1MDAyNlxcdTAwMjYgKHZhbCBcXHUwMDI2IEFUQ19JTlZBTElEKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNzg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjc5Om10NzUzMF9mZGJfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHN0cnVjdCBtdDc1MzBfZmRiICpmZGIpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjg2OlxcdFxcdHJlZ1tpXSA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9UU1JBMSArIChpICogNCkpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzA0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMwNTptdDc1MzBfZmRiX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTE2IHZpZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzA2LVxcdFxcdCB1OCBwb3J0X21hc2ssIGNvbnN0IHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzMwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzMTpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQTEgKyAoaSAqIDQpLCByZWdbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzItfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzNC0vKiBTZXQgdXAgc3dpdGNoIGNvcmUgY2xvY2sgZm9yIE1UNzUzMCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzU6c3RhdGljIHZvaWQgbXQ3NTMwX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mzc1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3NjptdDc1MzBfc2V0dXBfcG9ydDYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNzcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzg6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM3OS1cXHR1MzIgbmNwbzEsIHNzY19kZWx0YSwgeHRhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODQtXFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg1OlxcdFxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg2LVxcdFxcdFxcdCAgIFA2X0lOVEZfTU9ERSgwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTA6XFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLCBQNl9JTlRGX01PREUoMSkpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5MjpcXHR4dGFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX01UUkFQKSBcXHUwMDI2IE1UNzUzMF9YVEFMX01BU0s7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00Mjg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDI5Om10NzUzMV9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQzNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM2OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9DUkVWKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM3OlxcdHRvcF9zaWcgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfVE9QX1NJR19TUik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzODpcXHRod3N0cmFwID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX1RSQVApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzktXFx0aWYgKCh2YWwgXFx1MDAyNiBDSElQX1JFVl9NKSBcXHUwMDNlIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ2LVxcdC8qIFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ3OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0OC1cXHR2YWwgXFx1MDAyNj0gfkVOX0NPUkVQTEw7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0OTpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1MS1cXHQvKiBTdGVwIDI6IHN3aXRjaCB0byBYVEFMIG91dHB1dCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTI6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDUzLVxcdHZhbCB8PSBTV19DTEtTVztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU0OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU2OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTctXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX0VOO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTg6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1OS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYwLVxcdC8qIFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYxOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Mi1cXHR2YWwgfD0gU1dfUExMR1A7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MzpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2NS1cXHQvKiBTdGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjY6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Ny1cXHR2YWwgXFx1MDAyNj0gflJHX0NPUkVQTExfUE9TRElWX007XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2OC1cXHR2YWwgfD0gMiBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1BPU0RJVl9TO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Njk6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3MC1cXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzMtXFx0Y2FzZSBNVDc1MzFfWFRBTF9GU0VMXzI1TUhaOlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzQ6XFx0XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3NS1cXHRcXHR2YWwgXFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzYtXFx0XFx0dmFsIHw9IDB4MTQwMDAwIFxcdTAwM2NcXHUwMDNjIFJHX0NPUkVQTExfU0RNX1BDV19TO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Nzc6XFx0XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDc5LVxcdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF80ME1IWjpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDgwOlxcdFxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODEtXFx0XFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgyLVxcdFxcdHZhbCB8PSAweDE5MDAwMCBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDgzOlxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg3LVxcdC8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBoaWdoICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4ODpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg5LVxcdHZhbCB8PSBSR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTA6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5MS1cXHQvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBYVEFMIGNsb2NrcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5NC1cXHQvKiBTdGVwIDU6IHNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBsb3cgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk1OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTYtXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTc6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk5LVxcdC8qIEVuYWJsZSAzMjVNIGNsb2NrIGZvciBTR01JSSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDA6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1I1LCAweGFkMDAwMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTAyLVxcdC8qIEVuYWJsZSAyNTBTU0MgY2xvY2sgZm9yIFJHTUlJICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMzpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjIsIDB4NGY0MDAwMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA1LVxcdC8qIFN0ZXAgNjogRW5hYmxlIE1UNzUzMSBQTEwgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA2OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDctXFx0dmFsIHw9IFJHX0NPUkVQTExfRU47XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwODpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTA6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTExLVxcdHZhbCB8PSBFTl9DT1JFUExMO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTI6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEzLVxcdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUxNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTc6bXQ3NTMwX21pYl9yZXNldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxOC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxOTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTIwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjE6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0ZMVVNIKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIyOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9BQ1RJVkFURSk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMy19XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyNC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTI1OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyOS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMwOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTMxLVxcdFxcdFxcdFxcdHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MzY6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNy1cXHRcXHRcXHQgICAgICAgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0MS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQyOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDMtXFx0XFx0XFx0XFx0aW50IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01NDg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDk6bXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTAtXFx0XFx0XFx0aW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUxLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTUyOlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTMtXFx0dTMyIHJlZywgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTU4OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU2MDpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjEtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjgtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Njk6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU3MTpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzItXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzktXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODA6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU4MjpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODMtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTAtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1OTE6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTkyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU5Nj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU5NzptdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTgtXFx0XFx0XFx0IGludCByZWdudW0sIHUxNiBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01OTkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDA6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwMS1cXHR1MzIgdmFsLCByZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjA1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDY6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA4OlxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwOS1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxNi1cXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxNzpcXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYxOC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjE5OlxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyMC1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyNy1cXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCBkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2Mjg6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYzMDpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MzEtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02Mzctb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2Mzg6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY0Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0NDptdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDY6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0Ny1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1MS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjUyOlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1NDpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTUtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY2NDpcXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjY2OlxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2Ny1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY3NC1vdXQ6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY3NTpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjgwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjgxOm10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODItXFx0XFx0XFx0IHUxNiBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2ODQ6XFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4NS1cXHRpbnQgcmV0O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NjowNi44MjcxMTIyMDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDA4OTEwNDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0aCB0byBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhpcyBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAgZnVuY3Rpb24gZ2V0cyBleGVjdXRlZCwgcGFydGljdWxhcmx5IGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSXQgbG9va3MgbGlrZSB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSB0aHJvdWdoIGVpdGhlciBNRElPIG9yIE1NSU8uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBtdDc1MzAtbW1pby5jYCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkcml2ZXIgY2FsbGVkIGBtdDc5ODhfcGxhdGZvcm1fZHJpdmVyYC4gVGhlIGNydWNpYWwgc3RlcCBhcHBlYXJzIHRvIGJlIHRoYXQgdGhlIGBtdDc5ODhfcHJvYmVgIGZ1bmN0aW9uICpldmVudHVhbGx5KiBjYWxscyBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAuXG5cblRoZSBrZXkgcXVlc3Rpb24gbm93IGlzLCBjYW4gSSB0cmlnZ2VyIHRoaXMgd2l0aGluIFFFTVU/IEl0IHNlZW1zIHBsYXVzaWJsZS4gSWYgc3l6a2FsbGVyIGNyYWZ0cyBhIGRldmljZSB0cmVlIHRoYXQgaW5jbHVkZXMgdGhlIG5vZGUgcHJvcGVydHkgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYCwgdGhlIHBsYXRmb3JtIGRyaXZlciBzaG91bGQgcHJvYmUuIER1cmluZyB0aGlzIHByb2JlLCB0aGUgY29kZSBpcyBnb2luZyB0byBtYXAgdGhlIE1NSU8gcmVnaW9uIGFuZCwgY3J1Y2lhbGx5LCBjYWxsIGBtdDc1MzBfcHJvYmVfY29tbW9uYC4gVGhlbiwgdGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBkbyB0aGUgaW5pdGlhbGl6YXRpb24sIGFuZCByZWdpc3RlciBhIERTQSBzd2l0Y2guXG5cbk5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IHdoYXQgZG9lcyBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAgYWN0dWFsbHkgKmRvKj8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gdG8gc2VlIGlmIGl0J3MgcmVhY2hhYmxlIGFuZCBpZiBpdCdzIGRvaW5nIHdoYXQgSSBleHBlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MjU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjEyLjIzNjAyNDQwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTMzNTE5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBfcHJvYmVfY29tbW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTQ4PW10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY0OlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz0zMT1tdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQ0OlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zNTE5PWludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNTIwOm10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTUwLX1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzU1MTpFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzU1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaD05NDE9c3RhdGljIGlubGluZSB2b2lkIElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmg6OTQ4OmludCBtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0OS12b2lkIG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjEyLjI5NzM2NDA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ1MTk0MzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3NTMwIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzIE1UNzUzMCBkcml2ZXIgY29kZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgYG10NzUzMF9wcm9iZV9jb21tb25gIHdpdGhpbiBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBmaXJzdCBwbGFjZSBJIHN0YXJ0IHdoZW4gZGVidWdnaW5nIG9yIHVuZGVyc3RhbmRpbmcgYSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdtIGFzc3VtaW5nIHRoaXMgZnVuY3Rpb24gaXMgdGhlIGNvcmUgb2YgdGhlIGRldmljZSBwcm9iaW5nIHByb2Nlc3MsIGFuZCB0aHVzIHdoZXJlIHRoZSBpbml0aWFsIGRldmljZSBzZXR1cCBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGxpa2VseSBzdGVwcyBwZXJmb3JtZWQgdGhlcmU6IGRldGVybWluaW5nIHRoZSBkZXZpY2UncyBoYXJkd2FyZSwgcmVxdWVzdGluZyB0aGUgY29ycmVjdCBjbG9ja3MsIG1heWJlIHNldHRpbmcgdXAgdGhlIGludGVycnVwdCBsaW5lcyBhbmQgSS9PIG1lbW9yeSByZWdpb25zLiBJIGFsc28gbmVlZCB0byBzZWUgaG93IHRoZSBkc2EgZHJpdmVyIGlzIHdvcmtpbmcgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIGRldmljZS4gSSBhbnRpY2lwYXRlIGEgZmFpciBhbW91bnQgb2YgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcmVnaXN0ZXIgYWNjZXNzIGluaXRpYWxpemF0aW9uLCBhbmQgcHJvYmFibHkgc29tZSBlYXJseSBQSFkgY29uZmlndXJhdGlvbiBjYWxscyB0byBnZXQgdGhpcyBjaGlwIHVwIGFuZCBydW5uaW5nLiBMZXQncyBzZWUgaG93IHRoZXkgaGFuZGxlIGVycm9yIGNoZWNraW5nIGFuZCB3aGF0IHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBvZiB0aGlzIHByb2JlIGxvb2tzIGxpa2UuIEhvcGVmdWxseSwgaXQncyB3ZWxsLWRvY3VtZW50ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzQwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MTYuNzQ5MzExMDc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTE5LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzUxOTpcXHRpbnRcXG4zNTIwOlxcdG10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbjM1MjE6XFx0e1xcbjM1MjI6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi1cXHUwMDNlZGV2O1xcbjM1MjM6XFx0XFxuMzUyNDpcXHRcXHRwcml2LVxcdTAwM2VkcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdi1cXHUwMDNlZHMpLCBHRlBfS0VSTkVMKTtcXG4zNTI1OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlZHMpXFxuMzUyNjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zNTI3OlxcdFxcbjM1Mjg6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZWRldiA9IGRldjtcXG4zNTI5OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VudW1fcG9ydHMgPSBNVDc1MzBfTlVNX1BPUlRTO1xcbjM1MzA6XFx0XFxuMzUzMTpcXHRcXHQvKiBHZXQgdGhlIGhhcmR3YXJlIGlkZW50aWZpZXIgZnJvbSB0aGUgZGV2aWNldHJlZSBub2RlLlxcbjM1MzI6XFx0XFx0ICogV2Ugd2lsbCBuZWVkIGl0IGZvciBzb21lIG9mIHRoZSBjbG9jayBhbmQgcmVndWxhdG9yIHNldHVwLlxcbjM1MzM6XFx0XFx0ICovXFxuMzUzNDpcXHRcXHRwcml2LVxcdTAwM2VpbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuMzUzNTpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWluZm8pXFxuMzUzNjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNTM3OlxcdFxcbjM1Mzg6XFx0XFx0cHJpdi1cXHUwMDNlaWQgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VpZDtcXG4zNTM5OlxcdFxcdHByaXYtXFx1MDAzZWRldiA9IGRldjtcXG4zNTQwOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4zNTQxOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XFxuMzU0MjpcXHRcXHRwcml2LVxcdTAwM2Vkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XFxuMzU0MzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbXV0ZXgpO1xcbjM1NDQ6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX2xvY2spO1xcbjM1NDU6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcXG4zNTQ2OlxcdFxcbjM1NDc6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgcHJpdik7XFxuMzU0ODpcXHRcXG4zNTQ5OlxcdFxcdHJldHVybiAwO1xcbjM1NTA6XFx0fVxcbjM1NTE6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3Byb2JlX2NvbW1vbik7XFxuMzU1MjpcXHRcXG4zNTUzOlxcdHZvaWRcXG4zNTU0OlxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4zNTU1OlxcdHtcXG4zNTU2OlxcdFxcdGlmIChwcml2LVxcdTAwM2VpcnFfZG9tYWluKVxcbjM1NTc6XFx0XFx0XFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XFxuMzU1ODpcXHRcXG4zNTU5OlxcdFxcdGRzYV91bnJlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuMzU2MDpcXHRcXG4zNTYxOlxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuMzU2MjpcXHR9XFxuMzU2MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcmVtb3ZlX2NvbW1vbik7XFxuMzU2NDpcXHRcXG4zNTY1OlxcdE1PRFVMRV9BVVRIT1IoXFxcIlNlYW4gV2FuZyBcXHUwMDNjc2Vhbi53YW5nQG1lZGlhdGVrLmNvbVxcdTAwM2VcXFwiKTtcXG4zNTY2OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiRHJpdmVyIGZvciBNZWRpYXRlayBNVDc1MzAgU3dpdGNoXFxcIik7XFxuMzU2NzpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjE2Ljc0OTQ1OTYyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTk1NjU0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlKipcblxuT2theSwgc28gbG9va2luZyBhdCBgbXQ3NTMwX3Byb2JlX2NvbW1vbmAsIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEFsbCBpdCdzIGRvaW5nIGlzIGFsbG9jYXRpbmcgc29tZSBtZW1vcnkgYW5kIHNldHRpbmcgdXAgc29tZSBkYXRhIHN0cnVjdHVyZXMuIEl0J3Mgbm90IGFjdHVhbGx5IHRoZSBiaXQgd2hlcmUgdGhlIHN3aXRjaCBnZXRzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgRFNBIHN1YnN5c3RlbSwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBUaGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIHRoYXQgdml0YWwgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIGZ1bmN0aW9uIGNhbGxlZD8gVGltZSB0byBnbyBodW50aW5nLi4uXG5cbkxldCdzIHNlZSwgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGlzIGxvY2F0ZWQgaW4gYG10Nzk4OF9wcm9iZWAgd2l0aGluIHRoZSBgbXQ3NTMwLW1taW8uY2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGxvb2sgZm9yIHRoZSBzd2l0Y2ggcmVnaXN0cmF0aW9uIHRvIG9jY3VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQzNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MjAuNDY5MDI3NzE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMTpcXHRtdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gIDMyOlxcdHtcXG4gIDMzOlxcdFxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcXG4gIDM0OlxcdFxcdHZvaWQgX19pb21lbSAqYmFzZV9hZGRyO1xcbiAgMzU6XFx0XFx0aW50IHJldDtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0cHJpdiA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4gIDM4OlxcdFxcdGlmICghcHJpdilcXG4gIDM5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHRwcml2LVxcdTAwM2VidXMgPSBOVUxMO1xcbiAgNDI6XFx0XFx0cHJpdi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcXG4gIDQ1OlxcdFxcdGlmIChyZXQpXFxuICA0NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHRwcml2LVxcdTAwM2Vyc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBOVUxMKTtcXG4gIDQ5OlxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcnN0YykpIHtcXG4gIDUwOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkNvdWxkbid0IGdldCBvdXIgcmVzZXQgbGluZVxcXFxuXFxcIik7XFxuICA1MTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwcml2LVxcdTAwM2Vyc3RjKTtcXG4gIDUyOlxcdFxcdH1cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0YmFzZV9hZGRyID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xcbiAgNTU6XFx0XFx0aWYgKElTX0VSUihiYXNlX2FkZHIpKSB7XFxuICA1NjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJjYW5ub3QgcmVxdWVzdCBJL08gbWVtb3J5IHNwYWNlXFxcXG5cXFwiKTtcXG4gIDU3OlxcdFxcdFxcdHJldHVybiAtRU5YSU87XFxuICA1ODpcXHRcXHR9XFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBiYXNlX2FkZHIsXFxuICA2MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzd19yZWdtYXBfY29uZmlnKTtcXG4gIDYyOlxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVnbWFwKSlcXG4gIDYzOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZXJlZ21hcCk7XFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtXFx1MDAzZWRzKTtcXG4gIDY2OlxcdH1cXG4gIDY3OlxcdFxcbiAgNjg6XFx0c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiAgNjk6XFx0e1xcbiAgNzA6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuICA3MTpcXHRcXG4gIDcyOlxcdFxcdGlmIChwcml2KVxcbiAgNzM6XFx0XFx0XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuICA3NDpcXHR9XFxuICA3NTpcXHRcXG4gIDc2OlxcdHN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiAgNzc6XFx0e1xcbiAgNzg6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuICA3OTpcXHRcXG4gIDgwOlxcdFxcdGlmICghcHJpdilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MjAuNDY5MTcxODM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjYwMTA5NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5ODggU3dpdGNoIFByb2JlKipcblxuT2theSwgc28gYG10Nzk4OF9wcm9iZWAgY2FsbHMgYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIOKAkyB0aGF0J3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LiBSaWdodCwgYW5kIGBkc2FfcmVnaXN0ZXJfc3dpdGNoYCB0aGVuIHRha2VzIG92ZXIsIGluaXRpYXRpbmcgdGhlIHN3aXRjaCdzIHNldHVwIGZ1bmN0aW9ucy4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBiZWNhdXNlIHRob3NlIHNldHVwIGZ1bmN0aW9ucyBhcmUgaW5ldml0YWJseSBnb2luZyB0byBpbnZvbHZlIGhhcmR3YXJlIGFjY2Vzc2VzLCBwb2tpbmcgYXQgdGhlIE1NSU8gcmVnaW9ucy4gTm93LCB0aGUgYmlnIHF1ZXN0aW9uIGlzLCB3aGF0IGhhcHBlbnMgaWYgdGhlcmUncyAqbm8qIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PyBTcGVjaWZpY2FsbHksIGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcgbGlrZSB3ZSBkbywgd2l0aCBubyBhY3R1YWwgc3dpdGNoIHByZXNlbnQ/XG5cblN5emthbGxlciwgaW4gaXRzIGJyaWxsaWFuY2UsIHByb3ZpZGVzIHRoZXNlIGZha2UgTU1JTyByZWdpb25zLCB1c3VhbGx5IGZpbGxlZCB3aXRoIGVpdGhlciB6ZXJvZXMgb3Igb25lcy4gV2lsbCB0aGUgcHJvYmUgc3VjY2VlZCBpbiB0aGlzIHNjZW5hcmlvPyBJIG5lZWQgdG8gbG9vayBhdCBgbXQ3OTg4X3NldHVwYCDigJMgdGhhdCdzIHRoZSBzZXR1cCBmdW5jdGlvbiBzcGVjaWZpYyB0byBgSURfRU43NTI4YCwgdGhhdCB3aWxsIGdpdmUgbWUgdGhlIGFuc3dlci4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgYmVpbmcgcmVhZCBhbmQgd3JpdHRlbiBhbmQgaWYgdGhlIGVycm9yIGhhbmRsaW5nIGlzIHJvYnVzdCBlbm91Z2guIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIHRoZSBwcm9iaW5nIHdpbGwgZmFpbCBvciB3aGV0aGVyIHdlIHdpbGwgaGF2ZSBhIGZhbHNlIHBvc2l0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQxNCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjI1LjYzNTE4NTYzNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzNDcsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzNDc6XFx0LyogVGhlIEVONzUyOCBMQU4gcG9ydHMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaFxcbjMzNDg6XFx0ICogcG9ydHMgMS4uNCkgb24gdGhlIHN3aXRjaCBpbnRlcm5hbCBNRElPIGJ1cywgcmVhY2hhYmxlIG9ubHkgdGhyb3VnaCB0aGUgUEhZXFxuMzM0OTpcXHQgKiBpbmRpcmVjdCBhY2Nlc3MgcmVnaXN0ZXJzLiBUaGVyZSBpcyBubyBtZGlvZGV2IHRvIGRlcml2ZSB0aGUgYWRkcmVzc2VzIGZyb20uXFxuMzM1MDpcXHQgKi9cXG4zMzUxOlxcdCNkZWZpbmUgRU43NTI4X0dQSFlfQkFTRVxcdFxcdDlcXG4zMzUyOlxcdCNkZWZpbmUgRU43NTI4X05VTV9HUEhZU1xcdFxcdDRcXG4zMzUzOlxcdFxcbjMzNTQ6XFx0c3RhdGljIGludCBtdDc5ODhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbjMzNTU6XFx0e1xcbjMzNTY6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuMzM1NzpcXHRcXHRpbnQgaTtcXG4zMzU4OlxcdFxcbjMzNTk6XFx0XFx0LyogUmVzZXQgdGhlIHN3aXRjaCAqL1xcbjMzNjA6XFx0XFx0cmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi1cXHUwMDNlcnN0Yyk7XFxuMzM2MTpcXHRcXHR1c2xlZXBfcmFuZ2UoMjAsIDUwKTtcXG4zMzYyOlxcdFxcdHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQocHJpdi1cXHUwMDNlcnN0Yyk7XFxuMzM2MzpcXHRcXHR1c2xlZXBfcmFuZ2UoMjAsIDUwKTtcXG4zMzY0OlxcdFxcbjMzNjU6XFx0XFx0LyogQU43NTgzIHJlcXVpcmUgYWRkaXRpb25hbCB0d2VhayB0byBDT05OX0NGRyAqL1xcbjMzNjY6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlkID09IElEX0FONzU4MylcXG4zMzY3OlxcdFxcdFxcdG10NzUzMF9ybXcocHJpdiwgQU43NTgzX0dFUEhZX0NPTk5fQ0ZHLFxcbjMzNjg6XFx0XFx0XFx0XFx0ICAgQU43NTgzX0NTUl9EUEhZX0NLSU5fU0VMIHxcXG4zMzY5OlxcdFxcdFxcdFxcdCAgIEFONzU4M19DU1JfUEhZX0NPUkVfUkVHX0NMS19TRUwgfFxcbjMzNzA6XFx0XFx0XFx0XFx0ICAgQU43NTgzX0NTUl9FVEhFUl9BRkVfUFdELFxcbjMzNzE6XFx0XFx0XFx0XFx0ICAgQU43NTgzX0NTUl9EUEhZX0NLSU5fU0VMIHxcXG4zMzcyOlxcdFxcdFxcdFxcdCAgIEFONzU4M19DU1JfUEhZX0NPUkVfUkVHX0NMS19TRUwgfFxcbjMzNzM6XFx0XFx0XFx0XFx0ICAgRklFTERfUFJFUChBTjc1ODNfQ1NSX0VUSEVSX0FGRV9QV0QsIDApKTtcXG4zMzc0OlxcdFxcbjMzNzU6XFx0XFx0LyogUmVzZXQgdGhlIHN3aXRjaCBQSFlzICovXFxuMzM3NjpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1NZU19DVFJMLCBTWVNfQ1RSTF9QSFlfUlNUKTtcXG4zMzc3OlxcdFxcbjMzNzg6XFx0XFx0LyogVGhlIEVONzUyOCBMQU4gR1BIWXMgYWR2ZXJ0aXNlIEVFRSBieSBkZWZhdWx0LCBidXQgbmVnb3RpYXRpbmcgRUVFXFxuMzM3OTpcXHRcXHQgKiB3aXRoIGNvbW1vbiBsaW5rIHBhcnRuZXJzIChlLmcuIFJlYWx0ZWsgR2JFIE5JQ3MpIHJlc3VsdHMgaW4gYW5cXG4zMzgwOlxcdFxcdCAqIHVuc3RhYmxlIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gRGlzYWJsZSBFRUUgYWR2ZXJ0aXNlbWVudCBvblxcbjMzODE6XFx0XFx0ICogdGhlbS5cXG4zMzgyOlxcdFxcdCAqL1xcbjMzODM6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlkID09IElEX0VONzUyOClcXG4zMzg0OlxcdFxcdFxcdGZvciAoaSA9IEVONzUyOF9HUEhZX0JBU0U7XFxuMzM4NTpcXHRcXHRcXHQgICAgIGkgXFx1MDAzYyBFTjc1MjhfR1BIWV9CQVNFICsgRU43NTI4X05VTV9HUEhZUzsgaSsrKVxcbjMzODY6XFx0XFx0XFx0XFx0bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHByaXYsIGksIE1ESU9fTU1EX0FOLFxcbjMzODc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IE1ESU9fQU5fRUVFX0FEViwgMCk7XFxuMzM4ODpcXHRcXG4zMzg5OlxcdFxcdHJldHVybiBtdDc1MzFfc2V0dXBfY29tbW9uKGRzKTtcXG4zMzkwOlxcdH1cXG4zMzkxOlxcdFxcbjMzOTI6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBtdDc1MzBfc3dpdGNoX29wcyA9IHtcXG4zMzkzOlxcdFxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBtdGtfZ2V0X3RhZ19wcm90b2NvbCxcXG4zMzk0OlxcdFxcdC5zZXR1cFxcdFxcdFxcdD0gbXQ3NTN4X3NldHVwLFxcbjMzOTU6XFx0XFx0LnRlYXJkb3duXFx0XFx0PSBtdDc1M3hfdGVhcmRvd24sXFxuMzM5NjpcXHRcXHQucHJlZmVycmVkX2RlZmF1bHRfbG9jYWxfY3B1X3BvcnQgPSBtdDc1M3hfcHJlZmVycmVkX2RlZmF1bHRfbG9jYWxfY3B1X3BvcnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjI1LjYzNTMzODU2NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTY5OTI1NDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gdGhpcyBlbWJlZGRlZCBzeXN0ZW1zIG5ldHdvcmtpbmcgY29udGV4dDpcblxuKipBbmFseXppbmcgdGhlIE1UNzk4OCBhbmQgTVQ3NTMxIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBtdDc5ODhfc2V0dXBgIGZ1bmN0aW9uLCBhbmQgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYG10NzUzMV9zZXR1cF9jb21tb24oZHMpYC4gVGhlICdkcycgbGlrZWx5IHJlZmVycyB0byBhIGRldmljZS1zcGVjaWZpYyBkYXRhIHN0cnVjdHVyZS4gQWxyaWdodCwgdGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIOKAkyB3ZSBoYXZlIGEgc3BlY2lmaWMgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZSBNVDc5ODgsIGJ1dCBpdCBsZXZlcmFnZXMgYSBtb3JlIGdlbmVyaWMgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgdGhlIE1UNzUzMSwgd2hpY2ggaXMgcHJvYmFibHkgdGhlIHVuZGVybHlpbmcgc3dpdGNoIGNoaXAuIEl0IG1ha2VzIHNlbnNlIHRvIHNoYXJlIGNvZGUgbGlrZSB0aGlzLiBOb3csIHRvIHRydWx5IHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZywgSSBuZWVkIHRvIGRpdmUgaW50byBgbXQ3NTMxX3NldHVwX2NvbW1vbmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQncyBkb2luZyB3aXRoIHRoaXMgZGV2aWNlIHN0cnVjdHVyZSAoZHMpLiBJcyBpdCBjb25maWd1cmluZyB0aGUgUEhZcz8gU2V0dGluZyB1cCByZWdpc3RlcnM/IEluaXRpYWxpemluZyB0aGUgTUFDIGFkZHJlc3Nlcz8gSSdtIGJldHRpbmcgaXQncyBkb2luZyB0aGUgbG93LWxldmVsIHJlZ2lzdGVyIHNldHVwIGFuZCBicmluZ2luZyB0aGUgc3dpdGNoIHVwIGludG8gYSBrbm93biBzdGF0ZS4gU28sIGxldCdzIGdvIGNoZWNrIHRoYXQgcm91dGluZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBjbG9jayBjb25maWd1cmF0aW9uLCBQSFkgaW5pdGlhbGl6YXRpb24sIGFuZCBwb3NzaWJseSBzb21lIGJhc2ljIHBvcnQgY29uZmlndXJhdGlvbiBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgyMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MzMuODA1MjY1NTUzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODQwNzgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzFfc2V0dXBfY29tbW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI2MzU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjM2Om10NzUzMV9zZXR1cF9jb21tb24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNzA3PW10NzUzMV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjc5NC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjc5NTpcXHRyZXQgPSBtdDc1MzFfc2V0dXBfY29tbW9uKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjc5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMzNTQ9c3RhdGljIGludCBtdDc5ODhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzODgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzODk6XFx0cmV0dXJuIG10NzUzMV9zZXR1cF9jb21tb24oZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzkwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6MzMuODYzNjc3MjZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxNzc0NzY0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIGBtdDc1MzFfc2V0dXBfY29tbW9uYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYG10NzUzMV9zZXR1cF9jb21tb25gIGZ1bmN0aW9uLiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEknbSBleHBlY3RpbmcgdGhpcyBpcyBnb2luZyB0byBiZSBhIGNvbW1vbiBzZXR1cCByb3V0aW5lIHNwZWNpZmljYWxseSBmb3IgdGhlIE1UNzUzMSBjaGlwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBhbmQgY29uZmlndXJlcyB0aGUgY29yZSBhc3BlY3RzIG9mIHRoaXMgcGFydGljdWxhciBzd2l0Y2guIEknbSBnb2luZyB0byBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBvcmRlciBpbiB3aGljaCB0aGluZ3MgaGFwcGVuLCBhbnkgcmVnaXN0ZXIgd3JpdGVzLCBhbmQgd2hhdCBraW5kIG9mIGFzc3VtcHRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGlzIGZ1bmN0aW9uIGhhcyBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgdGhlIG92ZXJhbGwgZHJpdmVyIGNvbnRleHQuIFRoaXMgbGlrZWx5IHNldHMgdXAgdGhlIGJhc2ljIGNsb2NraW5nLCByZXNldCBzZXF1ZW5jZXMsIGFuZCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIG5lY2Vzc2FyeSBmb3IgdGhlIHN3aXRjaCB0byBmdW5jdGlvbiBjb3JyZWN0bHkgYmVmb3JlIG1vcmUgc3BlY2lmaWMgZmVhdHVyZXMgb3IgcG9ydCBzZXR0aW5ncyBhcmUgYXBwbGllZC4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgbGlrZSByYWNlIGNvbmRpdGlvbnMsIGluY29ycmVjdCByZWdpc3RlciB2YWx1ZXMsIG9yIGxhY2sgb2YgZXJyb3IgaGFuZGxpbmcuIFVsdGltYXRlbHksIEknbSBhc3Nlc3NpbmcgdGhpcyBmb3Igb3ZlcmFsbCBjb2RlIHF1YWxpdHksIGJlc3QgcHJhY3RpY2VzLCBhbmQgd2hldGhlciBJIGNhbiB0cnVzdCB0aGlzIGZ1bmN0aW9uIHRvIGJlIGEgc29saWQgZm91bmRhdGlvbiBmb3IgdGhlIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ1MDAsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NjozNy4yODE0MjY4MjhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjM1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNjM1OlxcdHN0YXRpYyBpbnRcXG4yNjM2OlxcdG10NzUzMV9zZXR1cF9jb21tb24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbjI2Mzc6XFx0e1xcbjI2Mzg6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuMjYzOTpcXHRcXHRpbnQgcmV0LCBpO1xcbjI2NDA6XFx0XFxuMjY0MTpcXHRcXHRkcy1cXHUwMDNlYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlO1xcbjI2NDI6XFx0XFx0ZHMtXFx1MDAzZXVudGFnX3ZsYW5fYXdhcmVfYnJpZGdlX3B2aWQgPSB0cnVlO1xcbjI2NDM6XFx0XFx0ZHMtXFx1MDAzZW10dV9lbmZvcmNlbWVudF9pbmdyZXNzID0gdHJ1ZTtcXG4yNjQ0OlxcdFxcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9taW4gPSAyICogMTAwMDtcXG4yNjQ1OlxcdFxcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9tYXggPSAoQUdFX0NOVF9NQVggKyAxKSAqIChBR0VfVU5JVF9NQVggKyAxKSAqIDEwMDA7XFxuMjY0NjpcXHRcXG4yNjQ3OlxcdFxcdG10NzUzeF90cmFwX2ZyYW1lcyhwcml2KTtcXG4yNjQ4OlxcdFxcbjI2NDk6XFx0XFx0LyogRW5hYmxlIGFuZCByZXNldCBNSUIgY291bnRlcnMgKi9cXG4yNjUwOlxcdFxcdG10NzUzMF9taWJfcmVzZXQoZHMpO1xcbjI2NTE6XFx0XFxuMjY1MjpcXHRcXHQvKiBEaXNhYmxlIGZsb29kaW5nIG9uIGFsbCBwb3J0cyAqL1xcbjI2NTM6XFx0XFx0bXQ3NTMwX2NsZWFyKHByaXYsIE1UNzUzWF9NRkMsIEJDX0ZGUF9NQVNLIHwgVU5NX0ZGUF9NQVNLIHxcXG4yNjU0OlxcdFxcdFxcdCAgICAgVU5VX0ZGUF9NQVNLKTtcXG4yNjU1OlxcdFxcbjI2NTY6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZWRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKykge1xcbjI2NTc6XFx0XFx0XFx0LyogQ2xlYXIgbGluayBzZXR0aW5ncyBhbmQgZW5hYmxlIGZvcmNlIG1vZGUgdG8gZm9yY2UgbGluayBkb3duXFxuMjY1ODpcXHRcXHRcXHQgKiBvbiBhbGwgcG9ydHMgdW50aWwgdGhleSdyZSBlbmFibGVkIGxhdGVyLlxcbjI2NTk6XFx0XFx0XFx0ICovXFxuMjY2MDpcXHRcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzWF9QTUNSX1AoaSksXFxuMjY2MTpcXHRcXHRcXHRcXHQgICBQTUNSX0xJTktfU0VUVElOR1NfTUFTSyB8XFxuMjY2MjpcXHRcXHRcXHRcXHQgICBNVDc1M1hfRk9SQ0VfTU9ERShwcml2LVxcdTAwM2VpZCksXFxuMjY2MzpcXHRcXHRcXHRcXHQgICBNVDc1M1hfRk9SQ0VfTU9ERShwcml2LVxcdTAwM2VpZCkpO1xcbjI2NjQ6XFx0XFxuMjY2NTpcXHRcXHRcXHQvKiBEaXNhYmxlIGZvcndhcmRpbmcgYnkgZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi9cXG4yNjY2OlxcdFxcdFxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1BDUl9QKGkpLCBQQ1JfTUFUUklYX01BU0ssXFxuMjY2NzpcXHRcXHRcXHRcXHQgICBQQ1JfTUFUUklYX0NMUik7XFxuMjY2ODpcXHRcXG4yNjY5OlxcdFxcdFxcdC8qIERpc2FibGUgbGVhcm5pbmcgYnkgZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi9cXG4yNjcwOlxcdFxcdFxcdG10NzUzMF9zZXQocHJpdiwgTVQ3NTMwX1BTQ19QKGkpLCBTQV9ESVMpO1xcbjI2NzE6XFx0XFxuMjY3MjpcXHRcXHRcXHRtdDc1MzBfc2V0KHByaXYsIE1UNzUzMV9EQkdfQ05UKGkpLCBNVDc1MzFfRElTX0NMUik7XFxuMjY3MzpcXHRcXG4yNjc0OlxcdFxcdFxcdGlmIChkc2FfaXNfY3B1X3BvcnQoZHMsIGkpKSB7XFxuMjY3NTpcXHRcXHRcXHRcXHRtdDc1M3hfY3B1X3BvcnRfZW5hYmxlKGRzLCBpKTtcXG4yNjc2OlxcdFxcdFxcdH0gZWxzZSB7XFxuMjY3NzpcXHRcXHRcXHRcXHRtdDc1MzBfcG9ydF9kaXNhYmxlKGRzLCBpKTtcXG4yNjc4OlxcdFxcbjI2Nzk6XFx0XFx0XFx0XFx0LyogU2V0IGRlZmF1bHQgUFZJRCB0byAwIG9uIGFsbCB1c2VyIHBvcnRzICovXFxuMjY4MDpcXHRcXHRcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QUEJWMV9QKGkpLCBHMF9QT1JUX1ZJRF9NQVNLLFxcbjI2ODE6XFx0XFx0XFx0XFx0XFx0ICAgRzBfUE9SVF9WSURfREVGKTtcXG4yNjgyOlxcdFxcdFxcdH1cXG4yNjgzOlxcdFxcbjI2ODQ6XFx0XFx0XFx0LyogRW5hYmxlIGNvbnNpc3RlbnQgZWdyZXNzIHRhZyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NjozNy4yODE2MjQwNThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0OTY1ODYyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIE1NSU8gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCdzIGZ1enphYmxlIHdpdGggc3l6a2FsbGVyLiBUaGUgY29kZSBpcyBpbnRlcmFjdGluZyB3aXRoIE1NSU8gcmVnaXN0ZXJzLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSWYgc3l6a2FsbGVyIG1hcHMgZHVtbXkgbWVtb3J5LCB0aGVzZSByZWFkcyBhbmQgd3JpdGVzIHdpbGwgbGlrZWx5IHN1Y2NlZWQsIGFsYmVpdCB3aXRoIGR1bW15IHZhbHVlcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCB0aGVyZSdzIGEgcG9sbGluZyBsb29wIGluIGBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGVgLiBJdCdzIHJlYWRpbmcgYSByZWdpc3RlciBhbmQgd2FpdGluZyBmb3IgYSBzcGVjaWZpYyBiaXQgdG8gY2xlYXIuIElmIHRoZSByZWFkIHJldHVybnMgMCAoZHVlIHRvIHRoZSBkdW1teSBtZW1vcnkpLCB0aGUgcG9sbGluZyBsb29wIG1pZ2h0IHN1Y2NlZWQgaW1tZWRpYXRlbHkuIElmIGl0IHJldHVybnMgYDB4ZmZmZmZmZmZgLCB3aGljaCBpcyBhbm90aGVyIGR1bW15IHZhbHVlIHRoYXQgY291bGQgYXJpc2UsIHRoZSBsb29wIG1pZ2h0IHRpbWUgb3V0IGFmdGVyIDEwMG1zLiBJbiBlaXRoZXIgb2YgdGhlc2UgY2FzZXMsIGl0IHdvbid0IGNyYXNoIHRoZSBzeXN0ZW0sIGFuZCBpdCB3aWxsIGtlZXAgZ29pbmcuIEV2ZW4gaWYgdGhlcmUncyBhbiBlcnJvciwgYG10Nzk4OF9zZXR1cGAgZG9lc24ndCBzZWVtIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZWAuIFNvLCBpdCBqdXN0IGNvbnRpbnVlcyB0byB0aGUgbmV4dCBzdGVwLiBUaGVuLCBgbXQ3NTMxX3NldHVwX2NvbW1vbihkcylgIHdvdWxkIGJlIGNhbGxlZC5cblxuVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoYXQgYG10NzUzMV9zZXR1cF9jb21tb25gIGVpdGhlciBzdWNjZWVkcyBvciBmYWlscyBncmFjZWZ1bGx5LCB0b28uIFRoZXJlZm9yZSwgdGhlIHN3aXRjaCAqd2lsbCogZ2V0IHJlZ2lzdGVyZWQhIFN5emthbGxlciBjYW4gdGhlbiB1c2UgbmV0bGluayB0byBpbnRlcmFjdCB3aXRoIHRoZSBEU0Egc3dpdGNoLCBjb25maWd1cmluZyB0aGluZ3MgbGlrZSBicmlkZ2VzLCBhbmQgc28gb24uXG5cblRoZSBiaWdnZXIgcXVlc3Rpb24gaXMgdGhpczogaXMgdGhpcyBkcml2ZXIgKmFjdHVhbGx5KiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBcIldvcnRoRnV6emluZz1mYWxzZVwiIGlmIGl0J3MgaW1wb3NzaWJsZS4gTm93LCB3aGF0J3MgaW50ZXJlc3RpbmcgaXMgdGhpcyBpcyBhIHB1cmUgTU1JTyBkcml2ZXIgdGhhdCBvbmx5IHdvcmtzIHdpdGggaGFyZHdhcmUuIFN5emthbGxlciBjYW4gZ2VuZXJhdGUgYSBkZXZpY2UgdHJlZSB0aGF0IG1hdGNoZXMgYGVjb25ldCxlbjc1Mjgtc3dpdGNoYC4gVGhlIGRyaXZlciB3aWxsIHByb2JlLCBtYXAgdGhlIGR1bW15IG1lbW9yeSwgYW5kIHJlZ2lzdGVyIGEgRFNBIHN3aXRjaC4gVGhlbiBzeXprYWxsZXIgY2FuIHN0YXJ0IGZ1enppbmcuXG5cblR5cGljYWxseSwgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlbHkgb24gc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzIG9yIGJlaGF2aW9yIHdpbGwgZmFpbCB0byBwcm9iZS4gSG93ZXZlciwgaW4gdGhpcyBjYXNlLCBgbXQ3OTg4X3NldHVwYCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBzdHJpY3QgY2hlY2tzIHRoYXQgd291bGQgY2F1c2UgYSBmYWlsdXJlIGlmIHRoZSBoYXJkd2FyZSBpc24ndCBwcmVzZW50LlxuXG5JIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBtdDc1MzBfcHJvYmVfY29tbW9uYCBhbmQgYG10Nzk4OF9wcm9iZWAgYWdhaW4gdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhleSBkb24ndCBjb250YWluIGFueSBoYXJkd2FyZSBJRCBjaGVja3MgdGhhdCB3b3VsZCBraWxsIHRoZSBwcm9iaW5nIHByb2Nlc3MuIEJ1dCBhdCB0aGlzIHBvaW50LCBpdCBsb29rcyBwcm9taXNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NzIyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6NTEuNzc4MjEyNDM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzUxOSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzUxOTpcXHRpbnRcXG4zNTIwOlxcdG10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbjM1MjE6XFx0e1xcbjM1MjI6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi1cXHUwMDNlZGV2O1xcbjM1MjM6XFx0XFxuMzUyNDpcXHRcXHRwcml2LVxcdTAwM2VkcyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdi1cXHUwMDNlZHMpLCBHRlBfS0VSTkVMKTtcXG4zNTI1OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlZHMpXFxuMzUyNjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zNTI3OlxcdFxcbjM1Mjg6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZWRldiA9IGRldjtcXG4zNTI5OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VudW1fcG9ydHMgPSBNVDc1MzBfTlVNX1BPUlRTO1xcbjM1MzA6XFx0XFxuMzUzMTpcXHRcXHQvKiBHZXQgdGhlIGhhcmR3YXJlIGlkZW50aWZpZXIgZnJvbSB0aGUgZGV2aWNldHJlZSBub2RlLlxcbjM1MzI6XFx0XFx0ICogV2Ugd2lsbCBuZWVkIGl0IGZvciBzb21lIG9mIHRoZSBjbG9jayBhbmQgcmVndWxhdG9yIHNldHVwLlxcbjM1MzM6XFx0XFx0ICovXFxuMzUzNDpcXHRcXHRwcml2LVxcdTAwM2VpbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuMzUzNTpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWluZm8pXFxuMzUzNjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNTM3OlxcdFxcbjM1Mzg6XFx0XFx0cHJpdi1cXHUwMDNlaWQgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VpZDtcXG4zNTM5OlxcdFxcdHByaXYtXFx1MDAzZWRldiA9IGRldjtcXG4zNTQwOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4zNTQxOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XFxuMzU0MjpcXHRcXHRwcml2LVxcdTAwM2Vkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XFxuMzU0MzpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbXV0ZXgpO1xcbjM1NDQ6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX2xvY2spO1xcbjM1NDU6XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcXG4zNTQ2OlxcdFxcbjM1NDc6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgcHJpdik7XFxuMzU0ODpcXHRcXG4zNTQ5OlxcdFxcdHJldHVybiAwO1xcbjM1NTA6XFx0fVxcbjM1NTE6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3Byb2JlX2NvbW1vbik7XFxuMzU1MjpcXHRcXG4zNTUzOlxcdHZvaWRcXG4zNTU0OlxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4zNTU1OlxcdHtcXG4zNTU2OlxcdFxcdGlmIChwcml2LVxcdTAwM2VpcnFfZG9tYWluKVxcbjM1NTc6XFx0XFx0XFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XFxuMzU1ODpcXHRcXG4zNTU5OlxcdFxcdGRzYV91bnJlZ2lzdGVyX3N3aXRjaChwcml2LVxcdTAwM2Vkcyk7XFxuMzU2MDpcXHRcXG4zNTYxOlxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuMzU2MjpcXHR9XFxuMzU2MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcmVtb3ZlX2NvbW1vbik7XFxuMzU2NDpcXHRcXG4zNTY1OlxcdE1PRFVMRV9BVVRIT1IoXFxcIlNlYW4gV2FuZyBcXHUwMDNjc2Vhbi53YW5nQG1lZGlhdGVrLmNvbVxcdTAwM2VcXFwiKTtcXG4zNTY2OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiRHJpdmVyIGZvciBNZWRpYXRlayBNVDc1MzAgU3dpdGNoXFxcIik7XFxuMzU2NzpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjUxLjc3ODUwMTY4NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ1NTQwNjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyB0aGUgTVQ3NTMwIERyaXZlciBQcm9iZSBGdW5jdGlvbioqXG5cbkhtbSwgc28gdGhlIGBtdDc1MzBfcHJvYmVfY29tbW9uYCBmdW5jdGlvbuKApiByaWdodCwgaXQgZG9lc24ndCBzZWVtIHRvIGJlIGNoZWNraW5nIGFueSBoYXJkd2FyZSBJRCByZWdpc3RlcnMsIHdoaWNoIGlzIGEgYml0IHVudXN1YWwuIE9rYXksIHRoYXQncyBub3RlZC4gTm93LCB3aGVyZSBhcmUgdGhvc2UgSURzIGJlaW5nIHZhbGlkYXRlZCBvciB2ZXJpZmllZD8gTGV0IG1lIHNlZeKApiB3aGF0IGFib3V0IGBkc2FfcmVnaXN0ZXJfc3dpdGNoYD8gRG9lcyAqdGhhdCogZnVuY3Rpb24gdHJpZ2dlciBhbnkgc2V0dXAgcm91dGluZXM/XG5cbkFoLCB5ZXMuIEdvdCBpdC4gYGRzYV9yZWdpc3Rlcl9zd2l0Y2hgIGNhbGxzIGBkcy1cdTAwM2VvcHMtXHUwMDNlc2V0dXBgLiBBbmQgbG9va2luZyBhdCB0aGUgTVQ3NTN4IGRyaXZlciwgdGhlIGBzZXR1cGAgb3BlcmF0aW9uIGlzIGRlZmluZWQgYXMgYG10NzUzeF9zZXR1cGAuIEdvb2QuIFNvIHRoZSBpbml0aWFsaXphdGlvbiBsaWtlbHkgb2NjdXJzIHRoZXJlLCBvciBwb3NzaWJseSBmdXJ0aGVyIGRvd24gdGhlIGNhbGwgY2hhaW4gd2l0aGluIHRoYXQgc2V0dXAgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBkaWcgaW50byBgbXQ3NTN4X3NldHVwYCB0byBzZWUgaG93IHRoYXQgZnVuY3Rpb24gcHJvY2VlZHMsIGFuZCB3aGV0aGVyIGhhcmR3YXJlIElEIGNoZWNrcyBhcmUgcGVyZm9ybWVkIHRoZXJlLiBUaGF0J3Mgd2hlcmUgSSBzaG91bGQgZm9jdXMgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NzcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ2OjU2LjQyNDA0NDI2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyODYsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyODY6XFx0XFxuMzI4NzpcXHRcXHRpZiAob3BlcmF0aW9uYWwpXFxuMzI4ODpcXHRcXHRcXHRwcml2LVxcdTAwM2VhY3RpdmVfY3B1X3BvcnRzIHw9IG1hc2s7XFxuMzI4OTpcXHRcXHRlbHNlXFxuMzI5MDpcXHRcXHRcXHRwcml2LVxcdTAwM2VhY3RpdmVfY3B1X3BvcnRzIFxcdTAwMjY9IH5tYXNrO1xcbjMyOTE6XFx0XFxuMzI5MjpcXHRcXHRpZiAocHJpdi1cXHUwMDNlYWN0aXZlX2NwdV9wb3J0cykge1xcbjMyOTM6XFx0XFx0XFx0dmFsID0gTVQ3NTMwX0NQVV9FTiB8XFxuMzI5NDpcXHRcXHRcXHQgICAgICBNVDc1MzBfQ1BVX1BPUlQoX19mZnMocHJpdi1cXHUwMDNlYWN0aXZlX2NwdV9wb3J0cykpO1xcbjMyOTU6XFx0XFx0fVxcbjMyOTY6XFx0XFxuMzI5NzpcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzWF9NRkMsIE1UNzUzMF9DUFVfRU4gfCBNVDc1MzBfQ1BVX1BPUlRfTUFTSywgdmFsKTtcXG4zMjk4OlxcdH1cXG4zMjk5OlxcdFxcbjMzMDA6XFx0c3RhdGljIGludCBtdDc1M3hfdGNfc2V0dXBfcWRpc2NfdGJmKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuMzMwMTpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCB0Y190YmZfcW9wdF9vZmZsb2FkICpxb3B0KVxcbjMzMDI6XFx0e1xcbjMzMDM6XFx0XFx0c3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWRfcmVwbGFjZV9wYXJhbXMgKnAgPSBcXHUwMDI2cW9wdC1cXHUwMDNlcmVwbGFjZV9wYXJhbXM7XFxuMzMwNDpcXHRcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4zMzA1OlxcdFxcdHUzMiByYXRlID0gMDtcXG4zMzA2OlxcdFxcbjMzMDc6XFx0XFx0c3dpdGNoIChxb3B0LVxcdTAwM2Vjb21tYW5kKSB7XFxuMzMwODpcXHRcXHRjYXNlIFRDX1RCRl9SRVBMQUNFOlxcbjMzMDk6XFx0XFx0XFx0cmF0ZSA9IGRpdl91NjQocC1cXHUwMDNlcmF0ZS5yYXRlX2J5dGVzX3BzLCAxMDAwKSBcXHUwMDNjXFx1MDAzYyAzOyAvKiBrYnBzICovXFxuMzMxMDpcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4zMzExOlxcdFxcdGNhc2UgVENfVEJGX0RFU1RST1k6IHtcXG4zMzEyOlxcdFxcdFxcdHUzMiB2YWwsIHRpY2s7XFxuMzMxMzpcXHRcXG4zMzE0OlxcdFxcdFxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTNYX0dFUkxDUiwgRUdSX0JDX01BU0ssXFxuMzMxNTpcXHRcXHRcXHRcXHQgICBFR1JfQkNfQ1JDX0lQR19QUkVBTUJMRSk7XFxuMzMxNjpcXHRcXG4zMzE3OlxcdFxcdFxcdC8qIGlmIHJhdGUgaXMgZ3JlYXRlciB0aGFuIDEwTWJwcyB0aWNrIGlzIDEvMzIgbXMsXFxuMzMxODpcXHRcXHRcXHQgKiAxbXMgb3RoZXJ3aXNlXFxuMzMxOTpcXHRcXHRcXHQgKi9cXG4zMzIwOlxcdFxcdFxcdHRpY2sgPSByYXRlIFxcdTAwM2UgMTAwMDAgPyAyIDogNztcXG4zMzIxOlxcdFxcdFxcdHZhbCA9IEZJRUxEX1BSRVAoRVJMQ1JfQ0lSX01BU0ssIChyYXRlIFxcdTAwM2VcXHUwMDNlIDUpKSB8XFxuMzMyMjpcXHRcXHRcXHQgICAgICBGSUVMRF9QUkVQKEVSTENSX0VOX01BU0ssICEhcmF0ZSkgfFxcbjMzMjM6XFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChFUkxDUl9FWFBfTUFTSywgdGljaykgfFxcbjMzMjQ6XFx0XFx0XFx0ICAgICAgRVJMQ1JfVEJGX01PREVfTUFTSyB8XFxuMzMyNTpcXHRcXHRcXHQgICAgICBGSUVMRF9QUkVQKEVSTENSX01BTlRfTUFTSywgMHhmKTtcXG4zMzI2OlxcdFxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1M1hfRVJMQ1JfUChwb3J0KSwgdmFsKTtcXG4zMzI3OlxcdFxcdFxcdGJyZWFrO1xcbjMzMjg6XFx0XFx0fVxcbjMzMjk6XFx0XFx0ZGVmYXVsdDpcXG4zMzMwOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4zMzMxOlxcdFxcdH1cXG4zMzMyOlxcdFxcbjMzMzM6XFx0XFx0cmV0dXJuIDA7XFxuMzMzNDpcXHR9XFxuMzMzNTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDY6NTYuNDI0MjcxOTIxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTUwMDAxMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipRdWljayBDaGVjazogbXQ3NTN4X3NldHVwKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbiBoZXJlLCBidXQgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBhcmVhLCBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIOKAkyAqbXQ3NTN4X3NldHVwKi4gSXQncyBhIGtleSBmdW5jdGlvbiBpbiB0aGlzIHN1YnN5c3RlbSwgYW5kIGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IG92ZXJsb29raW5nIGl0cyBpbml0aWFsIGNvbmZpZ3VyYXRpb24gY2FuIGxlYWQgdG8gc29tZSByZWFsbHkgbmFzdHkgZGVidWdnaW5nIHNlc3Npb25zIGRvd24gdGhlIHJvYWQuIEkndmUgYmVlbiBidXJuZWQgYnkgdGhhdCBiZWZvcmUuIEkga25vdyBpdCdzIHByb2JhYmx5IGJlZW4gY2hlY2tlZCByZWNlbnRseSwgYnV0IGl0IG5ldmVyIGh1cnRzIHRvIGRvdWJsZS1jaGVjayBhIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24sIGVzcGVjaWFsbHkgb25lIHRoYXQncyBmdW5kYW1lbnRhbCB0byBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgcG90ZW50aWFsIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCBuZXdlciBmZWF0dXJlcyBvciB1cHN0cmVhbSBjaGFuZ2VzLCBhbnkgb2Ygd2hpY2ggbWlnaHQgYWx0ZXIgZXhwZWN0ZWQgcmVnaXN0ZXIgc2V0dGluZ3Mgb3IgcmVxdWlyZWQgdGltaW5nLiBUaGF0IHNldHVwIGZ1bmN0aW9uIGNvdWxkIGFsc28gYmUgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIGFueSBoYXJkd2FyZSBwcmUtcmVxdWlzaXRlcyBhcmUgbWV0LiBBIHF1aWNrIHJldmlldyBvZiBpdHMgbG9naWMgd2lsbCBzYXZlIGEgdG9uIG9mIHRpbWUuIEJldHRlciBzYWZlIHRoYW4gc29ycnksIEknbGwgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCdzIHNldHRpbmcgdXAgdGhlIFBIWSBhbmQgdGhlIHJlbGV2YW50IGNsb2Nrcy4gQmFjayB0byB0aGUgcGxhbiBhZnRlciB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MDAuNzE5Mjc0NTA4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA0OTcwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NTN4X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMyMDk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMjEwOm10NzUzeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMyMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMzMDA9c3RhdGljIGludCBtdDc1M3hfdGNfc2V0dXBfcWRpc2NfdGJmKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzMzNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzMzNjpzdGF0aWMgaW50IG10NzUzeF9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzM3LVxcdFxcdFxcdCAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIG10NzUzMF9zd2l0Y2hfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzkzLVxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBtdGtfZ2V0X3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM5NDpcXHQuc2V0dXBcXHRcXHRcXHQ9IG10NzUzeF9zZXR1cCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM5NS1cXHQudGVhcmRvd25cXHRcXHQ9IG10NzUzeF90ZWFyZG93bixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDI3LVxcdC5jb25kdWl0X3N0YXRlX2NoYW5nZVxcdD0gbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDI4OlxcdC5wb3J0X3NldHVwX3RjXFx0XFx0PSBtdDc1M3hfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0MjktXFx0LnBvcnRfaHNyX2pvaW5cXHRcXHQ9IGRzYV9wb3J0X3NpbXBsZV9oc3Jfam9pbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MDAuOTA5NzgwNzE2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MDU3MDIzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIGBtdDc1M3hfc2V0dXBgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgbXQ3NTN4X3NldHVwYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyBhIG1lbnRhbCBpbnZlbnRvcnkgb2Ygd2hhdCBJIGFscmVhZHkga25vdyBhYm91dCB0aGlzIGRyaXZlciBvciB0aGUgY2hpcHNldCBpdCBwZXJ0YWlucyB0by4gSSdtIHJlY2FsbGluZyBhbnkgcGFzdCBleHBlcmllbmNlcyB3aXRoIE1USyBzd2l0Y2ggY29uZmlndXJhdGlvbnMgb3Igc2ltaWxhciBzZXR1cHMuIEFyZSB0aGVyZSBhbnkga25vd24gcXVpcmtzPyBDb21tb24gcGl0ZmFsbHM/IERvZXMgdGhpcyBhbGlnbiB3aXRoIHRoZSB0eXBpY2FsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlP1xuXG5BcyBJIHJlYWQsIEknbSBtZW50YWxseSBjaGVja2luZyBlYWNoIGxpbmUgb2YgY29kZSBhZ2FpbnN0IG15IHVuZGVyc3RhbmRpbmcgb2Ygc3dpdGNoIGhhcmR3YXJlLCByZWdpc3RlciBtYXBzLCBhbmQgbGlrZWx5IGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXMuIEFyZSB0aGV5IGFkZHJlc3NpbmcgdGhpbmdzIGluIHRoZSBjb3JyZWN0IG9yZGVyPyBBcmUgdGhlIGNsb2NrIHNldHRpbmdzIHBsYXVzaWJsZT8gSSdtIGxvb2tpbmcgZm9yIGFueSBvYnZpb3VzIHJlZCBmbGFncywgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgb3IgYW55dGhpbmcgdGhhdCBzZWVtcyBvdXQgb2YgdGhlIG9yZGluYXJ5LCBhbmQgSSBhbSBjcm9zcyBjaGVja2luZyB0aGlzIG5ldyBkYXRhIHdpdGggdGhlIGtub3dsZWRnZSBJIGFscmVhZHkgcG9zc2Vzcy5cblxuSSBhbSBxdWlja2x5IGxvb2tpbmcgZm9yIHRoZSBjb3JlIGNvbXBvbmVudHMgdGhhdCBhcmUgYmVpbmcgc2V0IHVwOiBQSFlzLCBpbnRlcm5hbCBzd2l0Y2ggZmFicmljIGNvbmZpZ3VyYXRpb24sIFZMQU4gc2V0dGluZ3MsIFFvUyBwYXJhbWV0ZXJzLi4uIEknbGwgc3RhcnQgd2l0aCB0aGUgbW9zdCBjcml0aWNhbCBwYXRocyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBBcmUgdGhlcmUgYW55IGhhcmR3YXJlLXNwZWNpZmljIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIERNQSB0cmFuc2ZlcnMsIGludGVycnVwdCBoYW5kbGluZywgb3IgbWVtb3J5IG1hbmFnZW1lbnQ/XG5cbkknbSBrZWVwaW5nIGEgY29uc3RhbnQgaW50ZXJuYWwgbG9nIG9mIHdoZXJlIEkgY2FuIGZpbmQgbW9yZSBjb250ZXh0IG9yIGluZm9ybWF0aW9uIG9uIHNwZWNpZmljIG9wZXJhdGlvbnMuIEknbSBsb29raW5nIGZvciBmdW5jdGlvbiBjYWxscyB0byByZWxhdGVkIEFQSXMgb3IgZHJpdmVyLXNwZWNpZmljIHN0cnVjdHVyZXMgdGhhdCBJIG1heSB3YW50IHRvIGV4YW1pbmUgaW4gZGVwdGguIFRoZSBvdmVyYWxsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtdDc1M3hfc2V0dXBgIGZ1bmN0aW9uIGlzIGludGVncmF0aW5nIHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHdpdGggYW55IGhpZ2hlci1sZXZlbCBhYnN0cmFjdGlvbnMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IHRoZSBPUy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4OTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzowOC41MTU0ODY2MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjA5LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMjA5OlxcdHN0YXRpYyBpbnRcXG4zMjEwOlxcdG10NzUzeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuMzIxMTpcXHR7XFxuMzIxMjpcXHRcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4zMjEzOlxcdFxcdGludCByZXQgPSBwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2Vzd19zZXR1cChkcyk7XFxuMzIxNDpcXHRcXHRpbnQgaTtcXG4zMjE1OlxcdFxcbjMyMTY6XFx0XFx0aWYgKHJldClcXG4zMjE3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzIxODpcXHRcXG4zMjE5OlxcdFxcdHJldCA9IG10NzUzMF9zZXR1cF9pcnEocHJpdik7XFxuMzIyMDpcXHRcXHRpZiAocmV0KVxcbjMyMjE6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zMjIyOlxcdFxcbjMyMjM6XFx0XFx0cmV0ID0gbXQ3NTMwX3NldHVwX21kaW8ocHJpdik7XFxuMzIyNDpcXHRcXHRpZiAocmV0KVxcbjMyMjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zMjI2OlxcdFxcbjMyMjc6XFx0XFx0LyogSW5pdGlhbGlzZSB0aGUgUENTIGRldmljZXMgKi9cXG4zMjI4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2Vkcy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspIHtcXG4zMjI5OlxcdFxcdFxcdHByaXYtXFx1MDAzZXBjc1tpXS5wY3Mub3BzID0gcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlcGNzX29wcztcXG4zMjMwOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBjc1tpXS5wcml2ID0gcHJpdjtcXG4zMjMxOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBjc1tpXS5wb3J0ID0gaTtcXG4zMjMyOlxcdFxcdH1cXG4zMjMzOlxcdFxcbjMyMzQ6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWNyZWF0ZV9zZ21paSlcXG4zMjM1OlxcdFxcdFxcdHJldCA9IHByaXYtXFx1MDAzZWNyZWF0ZV9zZ21paShwcml2KTtcXG4zMjM2OlxcdFxcbjMyMzc6XFx0XFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiBwcml2LVxcdTAwM2VpcnFfZG9tYWluKVxcbjMyMzg6XFx0XFx0XFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XFxuMzIzOTpcXHRcXG4zMjQwOlxcdFxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZWJ1cykge1xcbjMyNDE6XFx0XFx0XFx0bXQ3NTMwX3N0YXRzX3JlZnJlc2gocHJpdik7XFxuMzI0MjpcXHRcXHRcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX3dvcmssXFxuMzI0MzpcXHRcXHRcXHRcXHRcXHQgICAgICBNVDc1MzBfU1RBVFNfUE9MTF9JTlRFUlZBTCk7XFxuMzI0NDpcXHRcXHR9XFxuMzI0NTpcXHRcXG4zMjQ2OlxcdFxcdHJldHVybiByZXQ7XFxuMzI0NzpcXHR9XFxuMzI0ODpcXHRcXG4zMjQ5OlxcdHN0YXRpYyB2b2lkXFxuMzI1MDpcXHRtdDc1M3hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbjMyNTE6XFx0e1xcbjMyNTI6XFx0XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuMzI1MzpcXHRcXG4zMjU0OlxcdFxcdGlmIChwcml2LVxcdTAwM2VidXMpXFxuMzI1NTpcXHRcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX3dvcmspO1xcbjMyNTY6XFx0fVxcbjMyNTc6XFx0XFxuMzI1ODpcXHRzdGF0aWMgaW50IG10NzUzeF9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzowOC41MTU2NTk0MTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjcwNDE5NzU0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgU3dpdGNoIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIG5ldHdvcmsgc3dpdGNoIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgSURfRU43NTI4YCBjb25maWd1cmF0aW9uLiBJIHNlZSB0aGF0IGBwcml2LVx1MDAzZWluZm8tXHUwMDNlc3dfc2V0dXAoZHMpYCBpcyBzZXQgdG8gYG10Nzk4OF9zZXR1cGAsIHdoaWNoIGlzIGV4cGVjdGVkLiBXZSBrbm93IHRoYXQgYG10Nzk4OF9zZXR1cGAgaXMgYSBrZXkgZnVuY3Rpb24gaW4gdGhpcyBwcm9jZXNzLlxuXG5Ob3csIGFzIEkgcmVjYWxsIGZyb20gcHJldmlvdXMgZGVidWdnaW5nLCBgbXQ3OTg4X3NldHVwYCB0aGVuIGNhbGxzIGBtdDc1MzFfc2V0dXBfY29tbW9uYC4gVGhlIGZ1bmN0aW9uIGNhbGxzIGBtdDc1MzFfc2V0dXBfY29tbW9uYCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGludm9sdmVzIGEgZ29vZCBhbW91bnQgb2YgTU1JTyByZWdpc3RlciBhY2Nlc3Mgd2hpY2gsIGF0IHRoaXMgcG9pbnQsIGFsbCBzZWVtZWQgdG8gaGF2ZSBzdWNjZWVkZWQuIFxuXG5UaGUgbmV4dCBzdGVwcyBhZnRlciB0aGF0IGluaXRpYWwgc2V0dXAgYXJlIGBtdDc1MzBfc2V0dXBfaXJxYCBhbmQgYG10NzUzMF9zZXR1cF9tZGlvYC4gR2l2ZW4gd2hlcmUgd2UgYXJlIG5vdywgbGV0J3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBtdDc1MzBfc2V0dXBfbWRpb2AgYW5kIHNlZSB3aGF0IGl0J3MgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMDIwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MTUuMjE5ODYwODM0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg3OTA1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NTMwX3NldHVwX21kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjI2OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjcwOm10NzUzMF9zZXR1cF9tZGlvX2lycShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzNzA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzcxOm10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNC1cXHRpZiAocHJpdi1cXHUwMDNlaXJxX2RvbWFpbiBcXHUwMDI2XFx1MDAyNiAhbW5wKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDA1OlxcdFxcdG10NzUzMF9zZXR1cF9tZGlvX2lycShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMjEwPW10NzUzeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzIyMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzIyMzpcXHRyZXQgPSBtdDc1MzBfc2V0dXBfbWRpbyhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzIyNC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzoxNS4zODg2NTc1NjRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk5NzY5Njk3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzUzMF9zZXR1cF9tZGlvYCBmdW5jdGlvbi4gSSBzZWUgaXQncyBwcm9iYWJseSBwYXJ0IG9mIGEgZHJpdmVyIG9yIHNvbWUgbG93LWxldmVsIG5ldHdvcmsgaW50ZXJmYWNlIGNvZGUsIGp1ZGdpbmcgYnkgdGhlIG5hbWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgY29udGV4dC4gV2hhdCdzIHRoZSBvdmVyYWxsIGdvYWwgb2YgdGhpcyBmdW5jdGlvbj8gRnJvbSB0aGUgbmFtZSwgSSdtIGd1ZXNzaW5nIGl0J3Mgc2V0dGluZyB1cCB0aGUgTURJTyBpbnRlcmZhY2UsIHdoaWNoIGlzIGEgY29tbW9uIHNlcmlhbCBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyBQSFkgKHBoeXNpY2FsIGxheWVyKSByZWdpc3RlcnMuIEtub3dpbmcgdGhpcywgSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gSXMgaXQgaW5pdGlhbGl6aW5nIHRoZSBNRElPIGNvbnRyb2xsZXI/IENvbmZpZ3VyaW5nIHRoZSBjbG9jaz8gTWFwcGluZyB0aGUgcmVnaXN0ZXJzPyBJdCdzIGFsbCBhYm91dCBlZmZpY2llbnQgUEhZIGNvbW11bmljYXRpb24uXG5cbkkgYW50aWNpcGF0ZSB0aGUgY29kZSB3aWxsIGludm9sdmUgd3JpdGluZyB0byBzcGVjaWZpYyByZWdpc3RlcnMgdG8gY29udHJvbCB0aGUgTURJTyBjbG9jayBmcmVxdWVuY3ksIHRoZSBNRElPIG1vZGUgKGUuZy4sIGJpdC1iYW5naW5nIHZzLiBoYXJkd2FyZSBhY2NlbGVyYXRpb24pLCBhbmQgcG90ZW50aWFsbHkgZW5hYmxpbmcgdGhlIE1ESU8gY29udHJvbGxlci4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgZXJyb3IgaGFuZGxpbmcgb3IgdGltZW91dHMsIGVzcGVjaWFsbHkgd2hlbiB3YWl0aW5nIGZvciBNRElPIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4gQXJlIHRoZXkgdXNpbmcgYW55IGhhcmR3YXJlLXNwZWNpZmljIE1ESU8gY29tbWFuZHM/IEFueSBiaXQtc2hpZnRpbmcgb3IgbWFza2luZyBvcGVyYXRpb25zIHRvIGlzb2xhdGUgYW5kIG1hbmlwdWxhdGUgc3BlY2lmaWMgcmVnaXN0ZXIgYml0cz8gSSdsbCBwcm9iYWJseSBzY3J1dGluaXplIGFueSBsb29wcyBvciBkZWxheXMgdmVyeSBjbG9zZWx5LCBiZWNhdXNlIHRoZXNlIGFyZSBjbGFzc2ljIGFyZWFzIGZvciBwb3RlbnRpYWwgdGltaW5nIGlzc3VlcyBvciBsb2NrdXBzLlxuXG5J4oCZbSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IHRoZXkncmUgaGFuZGxpbmcgZGlmZmVyZW50IE1ESU8gYWRkcmVzcyBzcGFjZXMgaWYgdGhleSdyZSBzdXBwb3J0aW5nIG11bHRpcGxlIFBIWXMuIElzIHRoZXJlIGEgY2xlYXIgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBpbiB0aGUgY29kZSwgb3IgaXMgZXZlcnl0aGluZyB0aWdodGx5IGNvdXBsZWQ/IEFuZCwgb2YgY291cnNlLCBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHVuZG9jdW1lbnRlZCBvciB1bnVzdWFsIHJlZ2lzdGVyIGFjY2Vzc2VzIHRoYXQgbWlnaHQgcmVwcmVzZW50IGEgdmVuZG9yLXNwZWNpZmljIGhhY2sgb3Igb3B0aW1pemF0aW9uLiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBpbiB0aGVyZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzE4MTIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzoyMi4zODYzNTczMjJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMzcwOlxcdHN0YXRpYyBpbnRcXG4yMzcxOlxcdG10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4yMzcyOlxcdHtcXG4yMzczOlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wLCAqbnAgPSBwcml2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGU7XFxuMjM3NDpcXHRcXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBwcml2LVxcdTAwM2VkcztcXG4yMzc1OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtXFx1MDAzZWRldjtcXG4yMzc2OlxcdFxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuMjM3NzpcXHRcXHRzdGF0aWMgaW50IGlkeDtcXG4yMzc4OlxcdFxcdGludCByZXQgPSAwO1xcbjIzNzk6XFx0XFxuMjM4MDpcXHRcXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXFxcIm1kaW9cXFwiKTtcXG4yMzgxOlxcdFxcbjIzODI6XFx0XFx0aWYgKG1ucCBcXHUwMDI2XFx1MDAyNiAhb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShtbnApKVxcbjIzODM6XFx0XFx0XFx0Z290byBvdXQ7XFxuMjM4NDpcXHRcXG4yMzg1OlxcdFxcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpO1xcbjIzODY6XFx0XFx0aWYgKCFidXMpIHtcXG4yMzg3OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMjM4ODpcXHRcXHRcXHRnb3RvIG91dDtcXG4yMzg5OlxcdFxcdH1cXG4yMzkwOlxcdFxcbjIzOTE6XFx0XFx0aWYgKCFtbnApXFxuMjM5MjpcXHRcXHRcXHRkcy1cXHUwMDNldXNlcl9taWlfYnVzID0gYnVzO1xcbjIzOTM6XFx0XFxuMjM5NDpcXHRcXHRidXMtXFx1MDAzZXByaXYgPSBwcml2O1xcbjIzOTU6XFx0XFx0YnVzLVxcdTAwM2VuYW1lID0gS0JVSUxEX01PRE5BTUUgXFxcIi1taWlcXFwiO1xcbjIzOTY6XFx0XFx0c25wcmludGYoYnVzLVxcdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBLQlVJTERfTU9ETkFNRSBcXFwiLSVkXFxcIiwgaWR4KyspO1xcbjIzOTc6XFx0XFx0YnVzLVxcdTAwM2VyZWFkID0gbXQ3NTN4X3BoeV9yZWFkX2MyMjtcXG4yMzk4OlxcdFxcdGJ1cy1cXHUwMDNld3JpdGUgPSBtdDc1M3hfcGh5X3dyaXRlX2MyMjtcXG4yMzk5OlxcdFxcdGJ1cy1cXHUwMDNlcmVhZF9jNDUgPSBtdDc1M3hfcGh5X3JlYWRfYzQ1O1xcbjI0MDA6XFx0XFx0YnVzLVxcdTAwM2V3cml0ZV9jNDUgPSBtdDc1M3hfcGh5X3dyaXRlX2M0NTtcXG4yNDAxOlxcdFxcdGJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbjI0MDI6XFx0XFx0YnVzLVxcdTAwM2VwaHlfbWFzayA9IH5kcy1cXHUwMDNlcGh5c19taWlfbWFzaztcXG4yNDAzOlxcdFxcbjI0MDQ6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlycV9kb21haW4gXFx1MDAyNlxcdTAwMjYgIW1ucClcXG4yNDA1OlxcdFxcdFxcdG10NzUzMF9zZXR1cF9tZGlvX2lycShwcml2KTtcXG4yNDA2OlxcdFxcbjI0MDc6XFx0XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xcbjI0MDg6XFx0XFx0aWYgKHJldCkge1xcbjI0MDk6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgTURJTyBidXM6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjI0MTA6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlycV9kb21haW4gXFx1MDAyNlxcdTAwMjYgIW1ucClcXG4yNDExOlxcdFxcdFxcdFxcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xcbjI0MTI6XFx0XFx0fVxcbjI0MTM6XFx0XFxuMjQxNDpcXHRvdXQ6XFxuMjQxNTpcXHRcXHRvZl9ub2RlX3B1dChtbnApO1xcbjI0MTY6XFx0XFx0cmV0dXJuIHJldDtcXG4yNDE3OlxcdH1cXG4yNDE4OlxcdFxcbjI0MTk6XFx0c3RhdGljIGludFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0NzoyMi4zODY1NTE1MzFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExNTk2MTcwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZyBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGBtdDc1MzBfc2V0dXBfbWRpb2Agc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyaW5nIHRoZSBNRElPIGJ1cyBhbmQgdGhlIHN3aXRjaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoaXMgbWVhbnMgdGhlIERTQSBjb3JlIHdpbGwgZXhwb3NlIHN3aXRjaCBwb3J0cyBhcyBuZXR3b3JrIGludGVyZmFjZXMsIGFuZCB0aGF0J3MgcHJlY2lzZWx5IHdoZXJlIFN5emthbGxlciBjYW4gZ28gdG8gdG93biBmdXp6aW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgIGNhbGxlZCBieSBwaHlsaW5rLCBtb2RpZmljYXRpb25zIHRvIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIGZvciBgSURfRU43NTI4YCwgYW5kIHRoZSBFRUUgZGlzYWJsZSBpbiBgbXQ3OTg4X3NldHVwYCDigJMgdGhhdCBhbGwgc291bmRzIGxpa2UgbmV3IGhhcmR3YXJlIElEIGFuZCBuZXcgc3dpdGNoIGxvZ2ljIGFjY2Vzc2libGUgdGhyb3VnaCBEU0EuIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vaywgcmlnaHQ/XG5cbkJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdDogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uXCIuIENhbiBJIHJlYWNoIHRoaXMgaW4gR0NFIG9yIFFFTVU/IEhtbS4uLiBObywgbm90IGltcG9zc2libGUuIFN5emthbGxlciBjYW4gZ2VuZXJhdGUgYSBkZXZpY2UgdHJlZSB3aXRoIGBlY29uZXQsZW43NTI4LXN3aXRjaGAsIHRoZSBkcml2ZXIgd2lsbCBwcm9iZSwgbWFwIGR1bW15IG1lbW9yeSwgcmVnaXN0ZXIgdGhlIERTQSBzd2l0Y2gsIERTQSBjb3JlIHdpbGwgY2FsbCB0aGUgc3dpdGNoIG9wZXJhdGlvbnMuIFNvIGl0ICppcyogcmVhY2hhYmxlLlxuXG5Ob3csIGxldCdzIG1ha2Ugc3VyZSBpdCBtZWV0cyB0aGUgb3RoZXIgY3JpdGVyaWEuIFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIiBZdXAsIHRoYXQncyB3aGF0J3MgaGFwcGVuaW5nIGhlcmUuIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgZHJpdmVyIGNvZGUsIGFuZCBjb3JlIGxvZ2ljLCBzbyBJJ20gY29uY2x1ZGluZyBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuTm93LCBiZWNhdXNlIFdvcnRoRnV6emluZz10cnVlLCBJIG5lZWQgdG8gaWRlbnRpZnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCAoRm9jdXNTeW1ib2xzKSBhbmQgYW55IHJlbGV2YW50IENPTkZJRyBvcHRpb25zLiBMZXQncyBzZWUuLi4gVGhlIHJlbGV2YW50IGRyaXZlciBmaWxlcyBhcmUgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY2AuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyBpbiBgZHJpdmVycy9uZXQvZHNhL2AgYW5kIHNlZSB3aGF0IENPTkZJRyBvcHRpb25zIGFyZSBpbiBwbGF5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzAxMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA3OjQ3OjMzLjU0NjE3MTU1NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcxNTkyNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NTMwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDE3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwKVxcdCs9IG10NzUzMC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICs9IG10NzUzMC1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgKz0gbXQ3NTMwLW1taW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNjA2MCkgKz0gbXY4OGU2MDYwLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2OiNpbmNsdWRlIFxcXCJtdDc1MzAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTk6bXQ3NTMwX3JlZ21hcF93cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIyLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDQ6bXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz02Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjY3Om10NzUzMF9tZGlvX3JlZ21hcF9sb2NrKHZvaWQgKm1kaW9fbG9jaylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy02OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjczOm10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTc3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo3OTpcXHQucmVnX3dyaXRlID0gbXQ3NTMwX3JlZ21hcF93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4MDpcXHQucmVnX3JlYWQgPSBtdDc1MzBfcmVnbWFwX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTgzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NDptdDc1MzFfY3JlYXRlX3NnbWlpKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMDUtXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZW1heF9yZWdpc3RlciA9IDB4MTdjO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEwNjpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEwNzpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNldW5sb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMDgtXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZWxvY2tfYXJnID0gXFx1MDAyNnByaXYtXFx1MDAzZWJ1cy1cXHUwMDNlbWRpb19sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTA6XFx0XFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTEtXFx0XFx0XFx0XFx0XFx0ICBtdDc1MzFfcGNzX2NvbmZpZ1tpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTMxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzMi1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzYyMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEzMzpcXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzUzMFxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzBdLCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzNC1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzUzMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzFdLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM2LX07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTQ3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNDg6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE1MDpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUxLVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG47XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNjMtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTY0OlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjAzOlxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjA0LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZWdtYXBfY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIxND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxNTptdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxNzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjE4LVxcdGludCByZXQgPSAwLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIzMzpcXHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjM5OnN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDE6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1MC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTE6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjUyOlxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjUzOlxcdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NDpcXHQuc2h1dGRvd24gPSBtdDc1MzBfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjU1LVxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTY6XFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1kaW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1NzpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc1MzBfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjU4LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjYxOm1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjExOiNpbmNsdWRlIFxcXCJtdDc1MzAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTMxPW10Nzk4OF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTMyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzozMzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzQtXFx0dm9pZCBfX2lvbWVtICpiYXNlX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo0NDpcXHRyZXQgPSBtdDc1MzBfcHJvYmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQ1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz02OD1zdGF0aWMgdm9pZCBtdDc5ODhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNjkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjcwOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcyLVxcdGlmIChwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjczOlxcdFxcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTc2PXN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc3LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3ODpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTg4PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy05Mi1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjkzOlxcdFxcdC5uYW1lID0gXFxcIm10NzUzMC1tbWlvXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy05NC1cXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc5ODhfb2ZfbWF0Y2gsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2OiNpbmNsdWRlIFxcXCJtdDc1MzAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzE9c3RhdGljIHN0cnVjdCBtdDc1M3hfcGNzICpwY3NfdG9fbXQ3NTN4X3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNi0vKiBTdHJpbmcsIG9mZnNldCwgYW5kIHJlZ2lzdGVyIHNpemUgaW4gYnl0ZXMgaWYgZGlmZmVyZW50IGZyb20gNCBieXRlcyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzpzdGF0aWMgY29uc3Qgc3RydWN0IG10NzUzMF9taWJfZGVzYyBtdDc1MzBfbWliW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4LVxcdE1JQl9ERVNDKDEsIE1UNzUzMF9QT1JUX01JQl9UWF9EUk9QLCBcXFwiVHhEcm9wXFxcIiksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTA6bXQ3NTMwX211dGV4X2xvY2soc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTc6bXQ3NTMwX211dGV4X3VubG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDpjb3JlX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2OTpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjk2OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTk3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz05OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMDA6Y29yZV9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHNldClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwNjpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEzNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTM4OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEzOS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE0Mjpjb3JlX3NldChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE0My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTQ3PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE0ODpjb3JlX2NsZWFyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNTQ6bXQ3NTMwX21paV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTYxLVxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNjI6XFx0XFx0XFx0XFxcImZhaWxlZCB0byB3cml0ZSBtdDc1MzAgcmVnaXN0ZXJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTY3PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY4Om10NzUzMF9taWlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTc2LVxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzc6XFx0XFx0XFx0XFxcImZhaWxlZCB0byByZWFkIG10NzUzMCByZWdpc3RlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE3OC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xODQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTg1Om10NzUzMF93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE4Ni17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4NzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTg4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODk6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5MC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTkxOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTk0PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTk1Ol9tdDc1MzBfdW5sb2NrZWRfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Ni17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NzpcXHRyZXR1cm4gbXQ3NTMwX21paV9yZWFkKHAtXFx1MDAzZXByaXYsIHAtXFx1MDAzZXJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5OC19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjAwPXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjAxOl9tdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjA0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDU6XFx0bXQ3NTMwX211dGV4X2xvY2socC1cXHUwMDNlcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA3OlxcdHZhbCA9IG10NzUzMF9taWlfcmVhZChwLVxcdTAwM2Vwcml2LCBwLVxcdTAwM2VyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwOTpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHAtXFx1MDAzZXByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjE0PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE1Om10NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjE2LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjE3OlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMTgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOS1cXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFxcdTAwMjZwLCBwcml2LCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjA6XFx0cmV0dXJuIF9tdDc1MzBfcmVhZChcXHUwMDI2cCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyMS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjIzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyNDptdDc1MzBfcm13KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI1LVxcdCAgIHUzMiBtYXNrLCB1MzIgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjc6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzMTpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzItfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzU6bXQ3NTMwX3NldChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzpcXHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDE6bXQ3NTMwX2NsZWFyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQzOlxcdG10NzUzMF9ybXcocHJpdiwgcmVnLCB2YWwsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNDQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0Nj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0NzptdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTAtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjUxOlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU0LVxcdHZhbCA9IEFUQ19CVVNZIHwgQVRDX01BVCgwKSB8IGNtZDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU1OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ny1cXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFxcdTAwMjZwLCBwcml2LCBNVDc1MzBfQVRDKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU4OlxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1OS1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBBVENfQlVTWSksIDIwLCAyMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjY3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjg6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX0FUQyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2OS1cXHRpZiAoKGNtZCA9PSBNVDc1MzBfRkRCX1JFQUQpIFxcdTAwMjZcXHUwMDI2ICh2YWwgXFx1MDAyNiBBVENfSU5WQUxJRCkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mjc4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI3OTptdDc1MzBfZmRiX3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBzdHJ1Y3QgbXQ3NTMwX2ZkYiAqZmRiKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yODAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4NS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMzsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI4NjpcXHRcXHRyZWdbaV0gPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVFNSQTEgKyAoaSAqIDQpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMwND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMDU6bXQ3NTMwX2ZkYl93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUxNiB2aWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMwNi1cXHRcXHQgdTggcG9ydF9tYXNrLCBjb25zdCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzMC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzE6XFx0XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEExICsgKGkgKiA0KSwgcmVnW2ldKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzMyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzQtLyogU2V0IHVwIHN3aXRjaCBjb3JlIGNsb2NrIGZvciBNVDc1MzAgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM1OnN0YXRpYyB2b2lkIG10NzUzMF9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM3NT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNzY6bXQ3NTMwX3NldHVwX3BvcnQ2KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzc3LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzc4OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNzktXFx0dTMyIG5jcG8xLCBzc2NfZGVsdGEsIHh0YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzg0LVxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJKSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM4NTpcXHRcXHRtdDc1MzBfcm13KHByaXYsIE1UNzUzMF9QNkVDUiwgUDZfSU5URl9NT0RFX01BU0ssXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4Ni1cXHRcXHRcXHQgICBQNl9JTlRGX01PREUoMCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4OS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzkwOlxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSywgUDZfSU5URl9NT0RFKDEpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzkxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTI6XFx0eHRhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9NVFJBUCkgXFx1MDAyNiBNVDc1MzBfWFRBTF9NQVNLO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NDI4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQyOTptdDc1MzFfcGxsX3NldHVwKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00MzUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNjpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfQ1JFVik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQzNzpcXHR0b3Bfc2lnID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1RPUF9TSUdfU1IpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Mzg6XFx0aHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9UUkFQKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDM5LVxcdGlmICgodmFsIFxcdTAwMjYgQ0hJUF9SRVZfTSkgXFx1MDAzZSAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0Ni1cXHQvKiBTdGVwIDEgOiBEaXNhYmxlIE1UNzUzMSBDT1JFUExMICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NzpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDgtXFx0dmFsIFxcdTAwMjY9IH5FTl9DT1JFUExMO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NDk6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDUwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTEtXFx0LyogU3RlcCAyOiBzd2l0Y2ggdG8gWFRBTCBvdXRwdXQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDUyOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1My1cXHR2YWwgfD0gU1dfQ0xLU1c7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NDpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NjpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU3LVxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9FTjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU4OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2MC1cXHQvKiBTdGVwIDM6IGRpc2FibGUgUExMR1AgYW5kIGVuYWJsZSBwcm9ncmFtIFBMTEdQICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MTpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjItXFx0dmFsIHw9IFNXX1BMTEdQO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjM6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjUtXFx0LyogU3RlcCA0OiBwcm9ncmFtIENPUkVQTEwgb3V0cHV0IGZyZXF1ZW5jeSB0byA1MDBNSHogKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY2OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjctXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1BPU0RJVl9NO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjgtXFx0dmFsIHw9IDIgXFx1MDAzY1xcdTAwM2MgUkdfQ09SRVBMTF9QT1NESVZfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY5OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzAtXFx0dXNsZWVwX3JhbmdlKDI1LCAzNSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDczLVxcdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF8yNU1IWjpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc0OlxcdFxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzUtXFx0XFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDc2LVxcdFxcdHZhbCB8PSAweDE0MDAwMCBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDc3OlxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzgtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OS1cXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfNDBNSFo6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MDpcXHRcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgxLVxcdFxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX007XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Mi1cXHRcXHR2YWwgfD0gMHgxOTAwMDAgXFx1MDAzY1xcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MzpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ny1cXHQvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gaGlnaCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODg6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4OS1cXHR2YWwgfD0gUkdfQ09SRVBMTF9TRE1fUENXX0NIRztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDkwOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTEtXFx0LyogV2FpdCBmb3IgYXQgbGVhc3QgMTYgWFRBTCBjbG9ja3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTQtXFx0LyogU3RlcCA1OiBzZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5NTpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk2LVxcdHZhbCBcXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX0NIRztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDk3OlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OS1cXHQvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAwOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQU5BX1BMTEdQX0NSNSwgMHhhZDAwMDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMi1cXHQvKiBFbmFibGUgMjUwU1NDIGNsb2NrIGZvciBSR01JSSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDM6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1IyLCAweDRmNDAwMDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNS1cXHQvKiBTdGVwIDY6IEVuYWJsZSBNVDc1MzEgUExMICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwNjpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA3LVxcdHZhbCB8PSBSR19DT1JFUExMX0VOO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDg6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTEwOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMS1cXHR2YWwgfD0gRU5fQ09SRVBMTDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTEyOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMy1cXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MTY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE3Om10NzUzMF9taWJfcmVzZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTk6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTIxOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9GTFVTSCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyMjpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX01JQl9DQ1IsIENDUl9NSUJfQUNUSVZBVEUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjMtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNTpzdGF0aWMgaW50IG10NzUzMF9waHlfcmVhZF9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MjktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMDpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzMS1cXHRcXHRcXHRcXHR1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTM2OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2M0NShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzctXFx0XFx0XFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NDEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU0MjpzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQzLVxcdFxcdFxcdFxcdGludCByZWdudW0sIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTQ5Om10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUwLVxcdFxcdFxcdGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1MS17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1MjpcXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUzLVxcdHUzMiByZWcsIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU1ODpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTU5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NjA6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTYxLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTY4LVxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTY5OlxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzE6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTcyLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTc5LVxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTgwOlxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODI6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgzLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTkwLW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTkxOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01OTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1OTc6bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk4LVxcdFxcdFxcdCBpbnQgcmVnbnVtLCB1MTYgZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk5LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjAwOlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDEtXFx0dTMyIHZhbCwgcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjA2OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYwODpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDktXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTYtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MTc6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxOTpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjAtXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjctXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjI4OlxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjI5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MzA6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjMxLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM3LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjM4OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02NDM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NDQ6bXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ2OlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDctXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NTEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1MjpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjUzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NTQ6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU1LVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjYzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NjQ6XFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY2NjpcXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NjctXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzQtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NzU6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY4MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY4MTptdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgyLVxcdFxcdFxcdCB1MTYgZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgzLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njg0OlxcdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODUtXFx0aW50IHJldDtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MzMuNjIzMzM1MTZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI2NTIwNTE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzUzMCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIE1UNzUzMCBzd2l0Y2guIEl0J3MgbGlzdGluZyBgTkVUX0RTQV9NVDc1MzBgLCBgTkVUX0RTQV9NVDc1MzBfTURJT2AsIGFuZCBgTkVUX0RTQV9NVDc1MzBfTU1JT2AuIEtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGVzZSBkcml2ZXJzLCB0aGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgbXQ3NTMwLW1taW8uY2AgYW5kIGBtdDc1MzAuY2AgdGVsbHMgbWUgcmlnaHQgYXdheSB0aGF0IGBORVRfRFNBX01UNzUzMGAgKmFuZCogYE5FVF9EU0FfTVQ3NTMwX01NSU9gIGFyZSBnb2luZyB0byBiZSBlc3NlbnRpYWwgZm9yIHRoZSBjaGFuZ2VzIHRvIHRha2UgZWZmZWN0LiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgcmVsYXRlZCwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgRFNBIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIG5ldHdvcmsgc3RhY2suIFRoaXMgaXMganVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBpc3N1ZXMgZG93bnN0cmVhbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc3ODgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MzguODg4NTQyMzc5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjEwNDI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfRFNBX01UNzUzMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zNC1cXHRzZWxlY3QgUkVHTUFQX0lSUVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM1OlxcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNjpcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0NTpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDYtXFx0c2VsZWN0IE1FRElBVEVLX0dFX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01NSU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NjpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTctXFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDc6NDc6MzguOTUwNjUzMzE2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNzM5NjM3ODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1UNzUzMCBTd2l0Y2ggQ2hpcCBTdXBwb3J0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGFkZGluZyBzdXBwb3J0IGZvciBhIG5ldyBzd2l0Y2ggY2hpcCwgdGhlIEVONzUyOCwgd2l0aGluIHRoZSBNVDc1MzAgRFNBIGRyaXZlci4gIFRoZSBlc3NlbnRpYWwgY29uZmlncyBuZWVkZWQgYXJlIGBORVRfRFNBX01UNzUzMGAgYW5kIGBORVRfRFNBX01UNzUzMF9NTUlPYC4gIFRoaXMgaXMgYSBwcmV0dHkgZm9jdXNlZCBjaGFuZ2UsIHNvIGl0J3MgZ29vZC5cblxuTXkgaW1tZWRpYXRlIGZvY3VzIHNoaWZ0cyB0byB0aGUgbmV3bHkgaW50cm9kdWNlZCBhbmQgbW9kaWZpZWQgZnVuY3Rpb25zOiBgZW43NTI4X21hY19wb3J0X2dldF9jYXBzYCwgYG10Nzk4OF9zZXR1cGAgKHdpdGggaXRzIG5ldyBgSURfRU43NTI4YCBibG9jayksIGFuZCBgbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlYCAoYWxzbyBtb2RpZmllZCB0byBpbmNsdWRlIGBJRF9FTjc1MjhgKS4gIGBlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNgIGlzIGJyYW5kIG5ldywgd2hpY2ggbWVhbnMgaXQgd2lsbCBwcm9iYWJseSBuZWVkIHRob3JvdWdoIGF0dGVudGlvbiB3aGVuIGZ1enppbmcuXG5cbkFmdGVyIGEgcXVpY2sgYXNzZXNzbWVudCwgdGhlc2UgYXJlbid0IGhvdC1wYXRoIGZ1bmN0aW9ucywgc28gcG90ZW50aWFsIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGFyZSBsZXNzIG9mIGEgY29uY2Vybi4gYG10Nzk4OF9zZXR1cGAgaXMgYSBwcm9iZS10aW1lIGZ1bmN0aW9uLCBgZW43NTI4X21hY19wb3J0X2dldF9jYXBzYCBpcyBjYWxsZWQgZHVyaW5nIHBvcnQgc2V0dXAsIGFuZCBgbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlYCBpcyB0cmlnZ2VyZWQgYnkgY29uZHVpdCBzdGF0ZSBjaGFuZ2VzLlxuXG5Mb29raW5nIGNsb3NlciBhdCB0aGUgcGF0Y2gsIHRoZSBtYWluIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBtdDc1MzAtbW1pby5jYCB3aGVyZSB3ZSBzZWUgdGhlIGFkZGl0aW9uIG9mIHRoZSBFTjc1MjggY29tcGF0aWJsZSBzdHJpbmcgYW5kIGFuIGVudHJ5IGluIHRoZSBgbXQ3NTN4X3RhYmxlYC4gIGBtdDc1MzAuY2AgZ2V0cyB0aGUgYnVsayBvZiB0aGUgY2hhbmdlcy4gVGhlIHN3aXRjaCdzIFBIWXMgYXJlIGludGVncmF0ZWQgR1BIWXMgYXQgTURJTyBhZGRyZXNzZXMgOS4uMTIgKHN3aXRjaCBwb3J0cyAxLi40KSwgc28gdGhleSdyZSByZWFjaGVkIHRocm91Z2ggdGhlIFBIWSdzIGludGVybmFsIGluZGlyZWN0IGFjY2VzcyByZWdpc3RlcnMuXG5cblRoZSBrZXkgYWRkaXRpb24gaXMgYGVuNzUyOF9tYWNfcG9ydF9nZXRfY2Fwc2AsIHdoaWNoIGRlZmluZXMgdGhlIGNhcGFiaWxpdGllcyBmb3IgdGhlIEVONzUyOCBwb3J0cy4gUG9ydHMgMS00IGFyZSBpbnRlcm5hbCBhbmQgc3VwcG9ydCAxMC8xMDAvMTAwMCBNYnBzLCB3aGlsZSBwb3J0IDYgYWxzbyBzdXBwb3J0cyBpbnRlcm5hbCBtb2RlIGFuZCAxMDAwRkQuXG5cblRoZW4gdGhlcmUncyB0aGUgbW9kaWZpY2F0aW9uIHRvIGBtdDc5ODhfc2V0dXBgIHdoaWNoIGRpc2FibGVzIEVFRSAoRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCkgb24gdGhlIEVONzUyOCBMQU4gR1BIWXMuIEl0J3MgZGlzYWJsaW5nIHRoZSBhZHZlcnRpc2VtZW50IG9mIEVFRSBiZWNhdXNlIGl0IGNhdXNlcyBpc3N1ZXMgd2l0aCBsaW5rIHN0YWJpbGl0eS4gIEZpbmFsbHksIGBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2VgIGlzIG1vZGlmaWVkIHRvIGluY2x1ZGUgSURfRU43NTI4LlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHJlYWNoYWJpbGl0eSB0aHJvdWdoIHRoZSBEU0EgY29yZSwgSSdtIGNvbmZpZGVudCBpbiBtYXJraW5nIHRoaXMgYXMgXCJXb3J0aEZ1enppbmc9dHJ1ZS5cIiAgVGhlIGZvY3VzIHN5bWJvbHMgYXJlIGNsZWFyOiBgZW43NTI4X21hY19wb3J0X2dldF9jYXBzYCwgYG10Nzk4OF9zZXR1cGAsIGFuZCBgbXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlYC4gSSB3aWxsIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg2NjIsIk91dHB1dFRva2VucyI6MTczLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNzo0ODowMi42OTAyOTM0OTdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjE1NzgxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQV9NVDc1MzBcIixcbiAgICBcIk5FVF9EU0FfTVQ3NTMwX01NSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbjc1MjhfbWFjX3BvcnRfZ2V0X2NhcHNcIixcbiAgICBcIm10Nzk4OF9zZXR1cFwiLFxuICAgIFwibXQ3NTN4X2NvbmR1aXRfc3RhdGVfY2hhbmdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRWNvTmV0IEVONzUyOCBTb0MgYnVpbHQtaW4gc3dpdGNoIHRvIHRoZSBNZWRpYXRlayBNVDc1MzAgRFNBIGRyaXZlci4gVGhpcyBpbmNsdWRlcyBhIG5ldyBmdW5jdGlvbiBmb3IgZ2V0dGluZyBNQUMgcG9ydCBjYXBhYmlsaXRpZXMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gc3dpdGNoIHNldHVwIGFuZCBjb25kdWl0IHN0YXRlIGNoYW5nZSBsb2dpYy4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBkZXZpY2UgdHJlZSBhbmQgdGhlIHN3aXRjaCBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIHRoZSBEU0EgY29yZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9EU0FfTVQ3NTMwXCIsXG4gICAgXCJORVRfRFNBX01UNzUzMF9NTUlPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW43NTI4X21hY19wb3J0X2dldF9jYXBzXCIsXG4gICAgXCJtdDc5ODhfc2V0dXBcIixcbiAgICBcIm10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggU29DIGJ1aWx0LWluIHN3aXRjaCB0byB0aGUgTWVkaWF0ZWsgTVQ3NTMwIERTQSBkcml2ZXIuIFRoaXMgaW5jbHVkZXMgYSBuZXcgZnVuY3Rpb24gZm9yIGdldHRpbmcgTUFDIHBvcnQgY2FwYWJpbGl0aWVzIGFuZCBtb2RpZmljYXRpb25zIHRvIHN3aXRjaCBzZXR1cCBhbmQgY29uZHVpdCBzdGF0ZSBjaGFuZ2UgbG9naWMuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgZGV2aWNlIHRyZWUgYW5kIHRoZSBzd2l0Y2ggb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgRFNBIGNvcmUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow7tmnt[1] Phase: Succeeded StartedAt: 2026-07-11 07:48:14 +0000 UTC FinishedAt: 2026-07-11 07:48:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 07:48:14 +0000 UTC FinishedAt: 2026-07-11 07:48:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2] Phase: Succeeded StartedAt: 2026-07-11 07:48:14 +0000 UTC FinishedAt: 2026-07-11 09:51:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-11 07:48:14 +0000 UTC FinishedAt: 2026-07-11 09:51:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-11 07:48:14 +0000 UTC FinishedAt: 2026-07-11 07:48:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-11 07:48:14 +0000 UTC FinishedAt: 2026-07-11 07:48:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow7tmnt/series-workflow7tmnt-convert-artifact-3829341841/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-11 07:48:24 +0000 UTC FinishedAt: 2026-07-11 08:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-11 07:48:24 +0000 UTC FinishedAt: 2026-07-11 08:22:25 +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:*c4eb92f4-241b-47fd-a0e4-dcbf2895e93c,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-workflow7tmnt/series-workflow7tmnt-convert-artifact-3829341841/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": "32ceaf68-df00-4068-882d-23390c15f437", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-4050714687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-11 07:48:24 +0000 UTC FinishedAt: 2026-07-11 08:22:15 +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:*c4eb92f4-241b-47fd-a0e4-dcbf2895e93c,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-workflow7tmnt/series-workflow7tmnt-convert-artifact-3829341841/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": "32ceaf68-df00-4068-882d-23390c15f437", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-4050714687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-11 08:22:25 +0000 UTC FinishedAt: 2026-07-11 08:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-11 08:22:25 +0000 UTC FinishedAt: 2026-07-11 08:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-11 08:22:25 +0000 UTC FinishedAt: 2026-07-11 08:22:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-11 08:22:25 +0000 UTC FinishedAt: 2026-07-11 08:22:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow7tmnt/series-workflow7tmnt-convert-artifact-980419684/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-11 08:22:35 +0000 UTC FinishedAt: 2026-07-11 08:24:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-11 08:22:35 +0000 UTC FinishedAt: 2026-07-11 08:24:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*32ceaf68-df00-4068-882d-23390c15f437,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-4050714687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-11 08:24:40 +0000 UTC FinishedAt: 2026-07-11 08:24:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-11 08:24:40 +0000 UTC FinishedAt: 2026-07-11 08:24:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-11 08:24:40 +0000 UTC FinishedAt: 2026-07-11 08:54:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-11 08:24:40 +0000 UTC FinishedAt: 2026-07-11 08:54:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c4eb92f4-241b-47fd-a0e4-dcbf2895e93c,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-workflow7tmnt/series-workflow7tmnt-convert-artifact-980419684/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": "ae2d7763-2aad-4208-b617-c43d876f7183", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-426642928/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-11 08:24:40 +0000 UTC FinishedAt: 2026-07-11 08:52:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c4eb92f4-241b-47fd-a0e4-dcbf2895e93c,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-workflow7tmnt/series-workflow7tmnt-convert-artifact-980419684/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": "ae2d7763-2aad-4208-b617-c43d876f7183", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-426642928/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-11 08:54:33 +0000 UTC FinishedAt: 2026-07-11 08:54:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-11 08:54:33 +0000 UTC FinishedAt: 2026-07-11 08:54:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-11 08:54:33 +0000 UTC FinishedAt: 2026-07-11 08:57:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-11 08:54:33 +0000 UTC FinishedAt: 2026-07-11 08:56:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae2d7763-2aad-4208-b617-c43d876f7183,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-426642928/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-11 08:57:08 +0000 UTC FinishedAt: 2026-07-11 09:51:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-11 08:57:08 +0000 UTC FinishedAt: 2026-07-11 09:51:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*32ceaf68-df00-4068-882d-23390c15f437,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae2d7763-2aad-4208-b617-c43d876f7183,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-4050714687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-426642928/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-11 08:57:08 +0000 UTC FinishedAt: 2026-07-11 08:58:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-11 08:57:08 +0000 UTC FinishedAt: 2026-07-11 08:57:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-convert-artifact-1652069869/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-11 08:57:08 +0000 UTC FinishedAt: 2026-07-11 08:57:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-11 08:57:08 +0000 UTC FinishedAt: 2026-07-11 08:57:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-11 08:57:08 +0000 UTC FinishedAt: 2026-07-11 08:57:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-11 08:58:59 +0000 UTC FinishedAt: 2026-07-11 09:51:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7tmnt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["en7528_mac_port_get_caps","mt7988_setup","mt753x_conduit_state_change"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA_MT7530","NET_DSA_MT7530_MMIO"],"series_id":"006345a8-3446-4b6e-b5a2-0f8a799b0600","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-11 08:58:59 +0000 UTC FinishedAt: 2026-07-11 09:51:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*32ceaf68-df00-4068-882d-23390c15f437,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ae2d7763-2aad-4208-b617-c43d876f7183,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-4050714687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-build-action-426642928/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7tmnt/series-workflow7tmnt-convert-artifact-1652069869/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}