Name: series-workflowc8548 Phase: Succeeded StartedAt: 2026-07-06 12:50:46 +0000 UTC FinishedAt: 2026-07-06 14:36:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[0] Phase: Succeeded StartedAt: 2026-07-06 12:50:46 +0000 UTC FinishedAt: 2026-07-06 13:10:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 12:50:46 +0000 UTC FinishedAt: 2026-07-06 13:10:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HINIC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HINIC" ], "series_id": "e20af83f-34e2-4cd3-9964-9ee94f57485d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hinic_fw_section_valid", "check_image_valid", "hinic_firmware_update", "hinic_devlink_flash_update" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hJTklDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGluaWNfZndfc2VjdGlvbl92YWxpZCYjMzQ7LAogICAgJiMzNDtjaGVja19pbWFnZV92YWxpZCYjMzQ7LAogICAgJiMzNDtoaW5pY19maXJtd2FyZV91cGRhdGUmIzM0OywKICAgICYjMzQ7aGluaWNfZGV2bGlua19mbGFzaF91cGRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgb2YgdGhlIEh1YXdlaSBJbnRlbGxpZ2VudCBOSUMgKGhpbmljKSBkcml2ZXIuIFRoZSB2dWxuZXJhYmlsaXR5IGlzIGxvY2F0ZWQgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGUgbWVjaGFuaXNtIChgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgKS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgYnkgZW11bGF0aW5nIHRoZSBQQ0kgZGV2aWNlIHVzaW5nIGl0cyB2UENJIGZ1enplciB0byBwYXNzIHRoZSBwcm9iZSBwaGFzZSwgYW5kIHRoZW4gc2VuZGluZyBhIGRldmxpbmsgbmV0bGluayBtZXNzYWdlIHdpdGggYSBmdXp6ZWQgZmlybXdhcmUgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4MmFkMDMyZDBjMjc5YWZhNmNmNWZmMDdlYzVlNTUzMjgxYTA1OGZiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAxMzowNzoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY1xuaW5kZXggYzk3N2M0M2U1ZDVhNzAuLjBjMDZmYmRhZGFkMzc4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY1xuQEAgLTIwLDE0ICYjNDM7MjAsMjUgQEBcbiAjaW5jbHVkZSBcJiMzNDtoaW5pY19kZXZsaW5rLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtoaW5pY19od19kZXYuaFwmIzM0O1xuIFxuJiM0MztzdGF0aWMgYm9vbCBoaW5pY19md19zZWN0aW9uX3ZhbGlkKHUzMiBmd19sZW4sIHUzMiBvZmZzZXQsIHUzMiBsZW4pXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gb2Zmc2V0IFx1MDAzYz0gZndfbGVuIFx1MDAyNlx1MDAyNiBsZW4gXHUwMDNjPSBmd19sZW4gLSBvZmZzZXQ7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfdmFsaWQoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiwgY29uc3QgdTggKmJ1Zixcbi1cdFx0XHQgICAgICB1MzIgaW1hZ2Vfc2l6ZSwgc3RydWN0IGhvc3RfaW1hZ2Vfc3QgKmhvc3RfaW1hZ2UpXG4mIzQzO1x0XHRcdCAgICAgIHNpemVfdCBpbWFnZV9zaXplLCBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSlcbiB7XG4tXHRzdHJ1Y3QgZndfaW1hZ2Vfc3QgKmZ3X2ltYWdlID0gTlVMTDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZndfaW1hZ2Vfc3QgKmZ3X2ltYWdlO1xuIFx0dTMyIGxlbiA9IDA7XG4gXHR1MzIgaTtcbiBcbi1cdGZ3X2ltYWdlID0gKHN0cnVjdCBmd19pbWFnZV9zdCAqKWJ1ZjtcbiYjNDM7XHRpZiAoaW1hZ2Vfc2l6ZSBcdTAwM2MgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XCYjMzQ7V3JvbmcgaW1hZ2Ugc2l6ZSByZWFkIGZyb20gZmlsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmd19pbWFnZSA9IChjb25zdCBzdHJ1Y3QgZndfaW1hZ2Vfc3QgKilidWY7XG4gXG4gXHRpZiAoZndfaW1hZ2UtXHUwMDNlZndfbWFnaWMgIT0gSElOSUNfTUFHSUNfTlVNKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDtXcm9uZyBmd19tYWdpYyByZWFkIGZyb20gZmlsZSwgZndfbWFnaWM6IDB4JXhcXG5cJiMzNDssXG5AQCAtNDEsMTQgJiM0Mzs1Miw0NCBAQCBzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLFxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbiAhPSBpbWFnZV9zaXplIC0gVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XCYjMzQ7V3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZndfaW1hZ2UtXHUwMDNlZndfaW5mby5md19zZWN0aW9uX2NudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0bGVuICYjNDM7PSBmd19pbWFnZS1cdTAwM2Vmd19zZWN0aW9uX2luZm9baV0uZndfc2VjdGlvbl9sZW47XG4tXHRcdGhvc3RfaW1hZ2UtXHUwMDNlaW1hZ2Vfc2VjdGlvbl9pbmZvW2ldID0gZndfaW1hZ2UtXHUwMDNlZndfc2VjdGlvbl9pbmZvW2ldO1xuJiM0MztcdFx0Y29uc3Qgc3RydWN0IGZ3X3NlY3Rpb25faW5mb19zdCAqc2VjdGlvbiA9XG4mIzQzO1x0XHRcdFx1MDAyNmZ3X2ltYWdlLVx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoc2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX3R5cGUgXHUwMDNlPSBGSUxFX1RZUEVfVE9UQUxfTlVNKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O1dyb25nIHNlY3Rpb24gdHlwZSByZWFkIGZyb20gZmlsZTogJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0c2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX3R5cGUpO1xuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFoaW5pY19md19zZWN0aW9uX3ZhbGlkKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbixcbiYjNDM7XHRcdFx0XHRcdCAgICBzZWN0aW9uLVx1MDAzZWZ3X3NlY3Rpb25fb2Zmc2V0LFxuJiM0MztcdFx0XHRcdFx0ICAgIHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9sZW4pKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O1dyb25nIHNlY3Rpb24gc2l6ZSByZWFkIGZyb20gZmlsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoc2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX2xlbiBcdTAwM2UgZndfaW1hZ2UtXHUwMDNlZndfbGVuIC0gbGVuKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O1dyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRsZW4gJiM0Mzs9IHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9sZW47XG4mIzQzO1x0XHRob3N0X2ltYWdlLVx1MDAzZWltYWdlX3NlY3Rpb25faW5mb1tpXSA9ICpzZWN0aW9uO1xuIFx0fVxuIFxuLVx0aWYgKGxlbiAhPSBmd19pbWFnZS1cdTAwM2Vmd19sZW4gfHxcbi1cdCAgICAoZndfaW1hZ2UtXHUwMDNlZndfbGVuICYjNDM7IFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkgIT0gaW1hZ2Vfc2l6ZSkge1xuLVx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7V3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCYjMzQ7KTtcbiYjNDM7XHRpZiAobGVuICE9IGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbikge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFwmIzM0O1dyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISU5JQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpbmljX2Z3X3NlY3Rpb25fdmFsaWQmIzM0OywKICAgICYjMzQ7Y2hlY2tfaW1hZ2VfdmFsaWQmIzM0OywKICAgICYjMzQ7aGluaWNfZmlybXdhcmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2hpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MmFkMDMyZDBjMjc5YWZhNmNmNWZmMDdlYzVlNTUzMjgxYTA1OGZiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAxMzowNzoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jCmluZGV4IGM5NzdjNDNlNWQ1YTcwLi4wYzA2ZmJkYWRhZDM3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jCkBAIC0yMCwxNCAmIzQzOzIwLDI1IEBACiAjaW5jbHVkZSAmIzM0O2hpbmljX2RldmxpbmsuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2hpbmljX2h3X2Rldi5oJiMzNDsKIAomIzQzO3N0YXRpYyBib29sIGhpbmljX2Z3X3NlY3Rpb25fdmFsaWQodTMyIGZ3X2xlbiwgdTMyIG9mZnNldCwgdTMyIGxlbikKJiM0Mzt7CiYjNDM7CXJldHVybiBvZmZzZXQgJmx0Oz0gZndfbGVuICZhbXA7JmFtcDsgbGVuICZsdDs9IGZ3X2xlbiAtIG9mZnNldDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLAotCQkJICAgICAgdTMyIGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKQomIzQzOwkJCSAgICAgIHNpemVfdCBpbWFnZV9zaXplLCBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSkKIHsKLQlzdHJ1Y3QgZndfaW1hZ2Vfc3QgKmZ3X2ltYWdlID0gTlVMTDsKJiM0MzsJY29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICpmd19pbWFnZTsKIAl1MzIgbGVuID0gMDsKIAl1MzIgaTsKIAotCWZ3X2ltYWdlID0gKHN0cnVjdCBmd19pbWFnZV9zdCAqKWJ1ZjsKJiM0MzsJaWYgKGltYWdlX3NpemUgJmx0OyBVUERBVEVGV19JTUFHRV9IRUFEX1NJWkUpIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7V3JvbmcgaW1hZ2Ugc2l6ZSByZWFkIGZyb20gZmlsZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZ3X2ltYWdlID0gKGNvbnN0IHN0cnVjdCBmd19pbWFnZV9zdCAqKWJ1ZjsKIAogCWlmIChmd19pbWFnZS0mZ3Q7ZndfbWFnaWMgIT0gSElOSUNfTUFHSUNfTlVNKSB7CiAJCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0O1dyb25nIGZ3X21hZ2ljIHJlYWQgZnJvbSBmaWxlLCBmd19tYWdpYzogMHgleFxuJiMzNDssCkBAIC00MSwxNCAmIzQzOzUyLDQ0IEBAIHN0YXRpYyBib29sIGNoZWNrX2ltYWdlX3ZhbGlkKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsIGNvbnN0IHU4ICpidWYsCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKJiM0MzsJaWYgKGZ3X2ltYWdlLSZndDtmd19sZW4gIT0gaW1hZ2Vfc2l6ZSAtIFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkgewomIzQzOwkJZGV2X2VycigmYW1wO3ByaXYtJmd0O2h3ZGV2LSZndDtod2lmLSZndDtwZGV2LSZndDtkZXYsCiYjNDM7CQkJJiMzNDtXcm9uZyBkYXRhIHNpemUgcmVhZCBmcm9tIGZpbGVcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBmd19pbWFnZS0mZ3Q7ZndfaW5mby5md19zZWN0aW9uX2NudDsgaSYjNDM7JiM0MzspIHsKLQkJbGVuICYjNDM7PSBmd19pbWFnZS0mZ3Q7Zndfc2VjdGlvbl9pbmZvW2ldLmZ3X3NlY3Rpb25fbGVuOwotCQlob3N0X2ltYWdlLSZndDtpbWFnZV9zZWN0aW9uX2luZm9baV0gPSBmd19pbWFnZS0mZ3Q7Zndfc2VjdGlvbl9pbmZvW2ldOwomIzQzOwkJY29uc3Qgc3RydWN0IGZ3X3NlY3Rpb25faW5mb19zdCAqc2VjdGlvbiA9CiYjNDM7CQkJJmFtcDtmd19pbWFnZS0mZ3Q7Zndfc2VjdGlvbl9pbmZvW2ldOwomIzQzOwomIzQzOwkJaWYgKHNlY3Rpb24tJmd0O2Z3X3NlY3Rpb25fdHlwZSAmZ3Q7PSBGSUxFX1RZUEVfVE9UQUxfTlVNKSB7CiYjNDM7CQkJZGV2X2VycigmYW1wO3ByaXYtJmd0O2h3ZGV2LSZndDtod2lmLSZndDtwZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7V3Jvbmcgc2VjdGlvbiB0eXBlIHJlYWQgZnJvbSBmaWxlOiAldVxuJiMzNDssCiYjNDM7CQkJCXNlY3Rpb24tJmd0O2Z3X3NlY3Rpb25fdHlwZSk7CiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKCFoaW5pY19md19zZWN0aW9uX3ZhbGlkKGZ3X2ltYWdlLSZndDtmd19sZW4sCiYjNDM7CQkJCQkgICAgc2VjdGlvbi0mZ3Q7Zndfc2VjdGlvbl9vZmZzZXQsCiYjNDM7CQkJCQkgICAgc2VjdGlvbi0mZ3Q7Zndfc2VjdGlvbl9sZW4pKSB7CiYjNDM7CQkJZGV2X2VycigmYW1wO3ByaXYtJmd0O2h3ZGV2LSZndDtod2lmLSZndDtwZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7V3Jvbmcgc2VjdGlvbiBzaXplIHJlYWQgZnJvbSBmaWxlXG4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKHNlY3Rpb24tJmd0O2Z3X3NlY3Rpb25fbGVuICZndDsgZndfaW1hZ2UtJmd0O2Z3X2xlbiAtIGxlbikgewomIzQzOwkJCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCQkmIzM0O1dyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxuJiMzNDspOwomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWxlbiAmIzQzOz0gc2VjdGlvbi0mZ3Q7Zndfc2VjdGlvbl9sZW47CiYjNDM7CQlob3N0X2ltYWdlLSZndDtpbWFnZV9zZWN0aW9uX2luZm9baV0gPSAqc2VjdGlvbjsKIAl9CiAKLQlpZiAobGVuICE9IGZ3X2ltYWdlLSZndDtmd19sZW4gfHwKLQkgICAgKGZ3X2ltYWdlLSZndDtmd19sZW4gJiM0MzsgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSAhPSBpbWFnZV9zaXplKSB7Ci0JCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0O1dyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxuJiMzNDspOwomIzQzOwlpZiAobGVuICE9IGZ3X2ltYWdlLSZndDtmd19sZW4pIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7V3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXG4mIzM0Oyk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBIdWF3ZWkgTklDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgY2hlY2tfaW1hZ2VfdmFsaWRgIGZ1bmN0aW9uLCB3aGljaCBtYWtlcyBzZW5zZSAtIHZhbGlkYXRpbmcgZmlybXdhcmUgaXMgYWx3YXlzIGEgZ29vZCB0aGluZy4gVGhpcyBpcyBmb3IgdGhlIEh1YXdlaSBJbnRlbGxpZ2VudCBOSUMsIG9yIGBoaW5pY2AgZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIGhvdyBleHBvc2VkIGlzIHRoaXMgZHJpdmVyPyBHaXZlbiB0aGF0IGl0JiMzOTtzIGEgaGFyZHdhcmUtc3BlY2lmaWMgRXRoZXJuZXQgZHJpdmVyLCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGhvdyBsaWtlbHkgaXMgaXQgdGhhdCB3ZSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVXN1YWxseSwgdGhlc2Ugc29ydHMgb2YgZHJpdmVycyBhcmUgc2hpZWxkZWQgdW5sZXNzIHlvdeKAmXZlIGdvdCBlaXRoZXIgZW11bGF0ZWQgaGFyZHdhcmUgb3IgaXQmIzM5O3MgYSB2aXJ0dWFsIGRyaXZlciBpdHNlbGYuCgpSaWdodCwgbGV0JiMzOTtzIGNvbmZpcm0uIElzIHRoaXMgYWN0dWFsbHkgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXI/IFllcCwgaXQgaXMuIFRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIGlzIGEgUENJZSBkZXZpY2UsIHNvIGl04oCZcyBwaHlzaWNhbCBoYXJkd2FyZS4gTm93LCBjYW4gdGhpcyB0aGluZyAqYmUqIGZ1enplZD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHN5emthbGxlciBpcyB0aGUgZ28tdG8gZm9yIGZ1enppbmcsIGFuZCBpdCAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIHZQQ0ksIGJ1dCByZWFsaXN0aWNhbGx5LCBtb3N0IGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMsIGVzcGVjaWFsbHkgb25lcyB3aXRob3V0IHJlYWRpbHkgYXZhaWxhYmxlIGVtdWxhdGlvbiwgYXJlIG5vdCBkaXJlY3RseSByZWFjaGFibGUuIEJ1dCwgd2FpdC4uLiBzeXprYWxsZXIgZG9lcyBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0eSwgYnV0IGl04oCZcyBub3QgcmVhbGx5IHRoZSAqbm9ybSogdG8gdGFyZ2V0IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgdW5sZXNzIHRoZXkgYXJlICpleHBsaWNpdGx5KiBlbXVsYXRlZCwgb3Igd2UgY2FuIHVzZSBzb21ldGhpbmcgbGlrZSBVU0IgZnV6emluZywgd2hpY2ggaXMgYSBkaWZmZXJlbnQgcm91dGUuIFNvLCBsZXQmIzM5O3MgZXhwbG9yZSBpZiB0aGVyZSYjMzk7cyBhbnkgZW11bGF0aW9uIGZvciBgaGluaWNgIGZsb2F0aW5nIGFyb3VuZC4gSeKAmWxsIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGZvciBgaGluaWNgIGFuZCBzZWUgd2hhdCBjb21lcyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaW5pYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg5MzIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0hJTklDKSAmIzQzOz0gaGluaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NDpoaW5pYy15IDo9IGhpbmljX21haW4ubyBoaW5pY190eC5vIGhpbmljX3J4Lm8gaGluaWNfcG9ydC5vIGhpbmljX2h3X2Rldi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NTpcdCAgIGhpbmljX2h3X2lvLm8gaGluaWNfaHdfcXAubyBoaW5pY19od19jbWRxLm8gaGluaWNfaHdfd3EubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlOjY6XHQgICBoaW5pY19od19tZ210Lm8gaGluaWNfaHdfYXBpX2NtZC5vIGhpbmljX2h3X2Vxcy5vIGhpbmljX2h3X2lmLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZTo3Olx0ICAgaGluaWNfY29tbW9uLm8gaGluaWNfZXRodG9vbC5vIGhpbmljX2RldmxpbmsubyBoaW5pY19od19tYm94Lm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZTo4Olx0ICAgaGluaWNfc3Jpb3YubyBoaW5pY19kZWJ1Z2ZzLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MTE6I2luY2x1ZGUgXCYjMzQ7aGluaWNfY29tbW9uLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xMy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzoxNDogKiBoaW5pY19jcHVfdG9fYmUzMiAtIGNvbnZlcnQgZGF0YSB0byBiaWcgZW5kaWFuIDMyIGJpdCBmb3JtYXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xNS0gKiBAZGF0YTogdGhlIGRhdGEgdG8gY29udmVydFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xNy0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MTg6dm9pZCBoaW5pY19jcHVfdG9fYmUzMih2b2lkICpkYXRhLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMzEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MzI6ICogaGluaWNfYmUzMl90b19jcHUgLSBjb252ZXJ0IGRhdGEgZnJvbSBiaWcgZW5kaWFuIDMyIGJpdCBmb3JtYXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0zMy0gKiBAZGF0YTogdGhlIGRhdGEgdG8gY29udmVydFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0zNS0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MzY6dm9pZCBoaW5pY19iZTMyX3RvX2NwdSh2b2lkICpkYXRhLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTM3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNDktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6NTA6ICogaGluaWNfc2V0X3NnZSAtIHNldCBkbWEgYXJlYSBpbiBzY2F0dGVyIGdhdGhlciBlbnRyeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTUxLSAqIEBzZ2U6IHNjYXR0ZXIgZ2F0aGVyIGVudHJ5XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTU0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzo1NTp2b2lkIGhpbmljX3NldF9zZ2Uoc3RydWN0IGhpbmljX3NnZSAqc2dlLCBkbWFfYWRkcl90IGFkZHIsIGludCBsZW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02Mi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzo2MzogKiBoaW5pY19zZ2VfdG9fZG1hIC0gZ2V0IGRtYSBhZGRyZXNzIGZyb20gc2NhdHRlciBnYXRoZXIgZW50cnlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02NC0gKiBAc2dlOiBzY2F0dGVyIGdhdGhlciBlbnRyeVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02Ny0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6Njg6ZG1hX2FkZHJfdCBoaW5pY19zZ2VfdG9fZG1hKHN0cnVjdCBoaW5pY19zZ2UgKnNnZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oOjE1OnN0cnVjdCBoaW5pY19zZ2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTE2LVx0dTMyICAgICAgICAgICAgIGhpX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oOjIxOnZvaWQgaGluaWNfY3B1X3RvX2JlMzIodm9pZCAqZGF0YSwgaW50IGxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmgtMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmg6MjM6dm9pZCBoaW5pY19iZTMyX3RvX2NwdSh2b2lkICpkYXRhLCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaC0yNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaDoyNTp2b2lkIGhpbmljX3NldF9zZ2Uoc3RydWN0IGhpbmljX3NnZSAqc2dlLCBkbWFfYWRkcl90IGFkZHIsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oOjI3OmRtYV9hZGRyX3QgaGluaWNfc2dlX3RvX2RtYShzdHJ1Y3QgaGluaWNfc2dlICpzZ2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6OTojaW5jbHVkZSBcJiMzNDtoaW5pY19kZWJ1Z2ZzLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjExOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoaW5pY19kYmdmc19yb290O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jPTIxPXN0YXRpYyBjaGFyICpzcV9maWVsZHNbXSA9IHtcJiMzNDtnbGJfc3FfaWRcJiMzNDssIFwmIzM0O3NxX3BpXCYjMzQ7LCBcJiMzNDtzcV9jaVwmIzM0OywgXCYjMzQ7c3FfZmlcJiMzNDssIFwmIzM0O3NxX21zaXhfZW50cnlcJiMzNDt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjM6c3RhdGljIHU2NCBoaW5pY19kYmdfZ2V0X3NxX2luZm8oc3RydWN0IGhpbmljX2RldiAqbmljX2Rldiwgc3RydWN0IGhpbmljX3NxICpzcSwgaW50IGlkeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyNTpcdHN0cnVjdCBoaW5pY193cSAqd3EgPSBzcS1cdTAwM2V3cTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYz01MT1zdGF0aWMgY2hhciAqcnFfZmllbGRzW10gPSB7XCYjMzQ7Z2xiX3JxX2lkXCYjMzQ7LCBcJiMzNDtycV9od19waVwmIzM0OywgXCYjMzQ7cnFfc3dfY2lcJiMzNDssIFwmIzM0O3JxX3N3X3BpXCYjMzQ7LCBcJiMzNDtycV9tc2l4X2VudHJ5XCYjMzQ7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjUzOnN0YXRpYyB1NjQgaGluaWNfZGJnX2dldF9ycV9pbmZvKHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYsIHN0cnVjdCBoaW5pY19ycSAqcnEsIGludCBpZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTU0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6NTU6XHRzdHJ1Y3QgaGluaWNfd3EgKndxID0gcnEtXHUwMDNld3E7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM9ODE9c3RhdGljIGNoYXIgKmZ1bmNfdGFibGVfZmllbGRzW10gPSB7XCYjMzQ7dmFsaWRcJiMzNDssIFwmIzM0O3J4X21vZGVcJiMzNDssIFwmIzM0O210dVwmIzM0OywgXCYjMzQ7cnFfZGVwdGhcJiMzNDssIFwmIzM0O2NmZ19xX251bVwmIzM0O307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzo4MzpzdGF0aWMgaW50IGhpbmljX2RiZ19nZXRfZnVuY190YWJsZShzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2LCBpbnQgaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTg1LVx0c3RydWN0IHRhZ19zbWxfZnVuY2ZnX3RibCAqZnVuY2ZnX3RhYmxlX2VsZW07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjg2Olx0c3RydWN0IGhpbmljX2NtZF9sdF9yZCAqcmVhZF9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04Ny1cdHUxNiBvdXRfc2l6ZSA9IHNpemVvZigqcmVhZF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTAxOlx0ZXJyID0gaGluaWNfcG9ydF9tc2dfY21kKG5pY19kZXYtXHUwMDNlaHdkZXYsIEhJTklDX1BPUlRfQ01EX1JEX0xJTkVfVEJMLCByZWFkX2RhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEwMi1cdFx0XHRcdCBzaXplb2YoKnJlYWRfZGF0YSksIHJlYWRfZGF0YSwgXHUwMDI2b3V0X3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxMzY6c3RhdGljIHNzaXplX3QgaGluaWNfZGJnX2NtZF9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEzNy1cdFx0XHRcdCAgbG9mZl90ICpwcG9zKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xMzgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxMzk6XHRzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiAqZGJnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNDAtXHRjaGFyIHJldF9idWZbMjBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTQ1LVx0ZGVzYyA9IGZpbHAtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNDY6XHRkYmcgPSBjb250YWluZXJfb2YoZGVzYywgc3RydWN0IGhpbmljX2RlYnVnX3ByaXYsIGZpZWxkX2lkWypkZXNjXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE0OS1cdGNhc2UgSElOSUNfREJHX1NRX0lORk86XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE1MDpcdFx0b3V0ID0gaGluaWNfZGJnX2dldF9zcV9pbmZvKGRiZy1cdTAwM2VkZXYsIGRiZy1cdTAwM2VvYmplY3QsICpkZXNjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTUxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE1My1cdGNhc2UgSElOSUNfREJHX1JRX0lORk86XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE1NDpcdFx0b3V0ID0gaGluaWNfZGJnX2dldF9ycV9pbmZvKGRiZy1cdTAwM2VkZXYsIGRiZy1cdTAwM2VvYmplY3QsICpkZXNjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTU1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE1Ny1cdGNhc2UgSElOSUNfREJHX0ZVTkNfVEFCTEU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE1ODpcdFx0b3V0ID0gaGluaWNfZGJnX2dldF9mdW5jX3RhYmxlKGRiZy1cdTAwM2VkZXYsICpkZXNjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTU5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE2MS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE2MjpcdFx0bmV0aWZfd2FybihkYmctXHUwMDNlZGV2LCBkcnYsIGRiZy1cdTAwM2VkZXYtXHUwMDNlbmV0ZGV2LCBcJiMzNDtJbnZhbGlkIGhpbmljIGRlYnVnIGNtZDogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE2My1cdFx0XHQgICBkYmctXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE3MjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoaW5pY19kYmdfY21kX2ZvcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE3My1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzQtXHQub3BlbiAgPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTc1Olx0LnJlYWQgID0gaGluaWNfZGJnX2NtZF9yZWFkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNzg6c3RhdGljIGludCBjcmVhdGVfZGJnX2ZpbGVzKHN0cnVjdCBoaW5pY19kZXYgKmRldiwgZW51bSBoaW5pY19kYmdfdHlwZSB0eXBlLCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNzk6XHRcdFx0ICAgIHN0cnVjdCBkZW50cnkgKnJvb3QsIHN0cnVjdCBoaW5pY19kZWJ1Z19wcml2ICoqZGJnLCBjaGFyICoqZmllbGQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE4MC1cdFx0XHQgICAgaW50IG5maWxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xODEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxODI6XHRzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiAqdG1wO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xODMtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE5NS1cdFx0dG1wLVx1MDAzZWZpZWxkX2lkW2ldID0gaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTk2Olx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGZpZWxkW2ldLCAwNDAwLCByb290LCBcdTAwMjZ0bXAtXHUwMDNlZmllbGRfaWRbaV0sIFx1MDAyNmhpbmljX2RiZ19jbWRfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE5Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjA0OnN0YXRpYyB2b2lkIHJlbV9kYmdfZmlsZXMoc3RydWN0IGhpbmljX2RlYnVnX3ByaXYgKmRiZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjA1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjEyOmludCBoaW5pY19zcV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2LCB1MTYgc3FfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIxMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjIxNDpcdHN0cnVjdCBoaW5pY19zcSAqc3E7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIxNS1cdHN0cnVjdCBkZW50cnkgKnJvb3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjIyODp2b2lkIGhpbmljX3NxX2RlYnVnX3JlbShzdHJ1Y3QgaGluaWNfc3EgKnNxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyMzQ6aW50IGhpbmljX3JxX2RlYnVnX2FkZChzdHJ1Y3QgaGluaWNfZGV2ICpkZXYsIHUxNiBycV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjM1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjM2Olx0c3RydWN0IGhpbmljX3JxICpycTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjM3LVx0c3RydWN0IGRlbnRyeSAqcm9vdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjUwOnZvaWQgaGluaWNfcnFfZGVidWdfcmVtKHN0cnVjdCBoaW5pY19ycSAqcnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI1NjppbnQgaGluaWNfZnVuY190YWJsZV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyNjU6dm9pZCBoaW5pY19mdW5jX3RhYmxlX2RlYnVnX3JlbShzdHJ1Y3QgaGluaWNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI2Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI3MTp2b2lkIGhpbmljX3NxX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjcyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6Mjc2OnZvaWQgaGluaWNfc3FfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI4MTp2b2lkIGhpbmljX3JxX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjgyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6Mjg2OnZvaWQgaGluaWNfcnFfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI5MTp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjkyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6Mjk3OnZvaWQgaGluaWNfZnVuY190YmxfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMwMzp2b2lkIGhpbmljX2RiZ19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwNS1cdG5pY19kZXYtXHUwMDNlZGJnZnNfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihwY2lfbmFtZShuaWNfZGV2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMwNjpcdFx0XHRcdFx0XHQgaGluaWNfZGJnZnNfcm9vdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzA5OnZvaWQgaGluaWNfZGJnX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMTU6dm9pZCBoaW5pY19kYmdfcmVnaXN0ZXJfZGVidWdmcyhjb25zdCBjaGFyICpkZWJ1Z2ZzX2Rpcl9uYW1lKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMTc6XHRoaW5pY19kYmdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGRlYnVnZnNfZGlyX25hbWUsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMyMDp2b2lkIGhpbmljX2RiZ191bnJlZ2lzdGVyX2RlYnVnZnModm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzIxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzIyOlx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGhpbmljX2RiZ2ZzX3Jvb3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMjM6XHRoaW5pY19kYmdmc19yb290ID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzI0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjk6I2luY2x1ZGUgXCYjMzQ7aGluaWNfZGV2LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtMTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6MTY6c3RydWN0IGhpbmljX2NtZF9sdF9yZCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTE3LVx0dThcdHN0YXR1cztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oPTMxPXN0cnVjdCB0YWdfc21sX2Z1bmNmZ190Ymwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjgxOmludCBoaW5pY19zcV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2LCB1MTYgc3FfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC04Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6ODM6dm9pZCBoaW5pY19zcV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX3NxICpzcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo4NTppbnQgaGluaWNfcnFfZGVidWdfYWRkKHN0cnVjdCBoaW5pY19kZXYgKmRldiwgdTE2IHJxX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjg3OnZvaWQgaGluaWNfcnFfZGVidWdfcmVtKHN0cnVjdCBoaW5pY19ycSAqcnEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC04OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6ODk6aW50IGhpbmljX2Z1bmNfdGFibGVfZGVidWdfYWRkKHN0cnVjdCBoaW5pY19kZXYgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5MTp2b2lkIGhpbmljX2Z1bmNfdGFibGVfZGVidWdfcmVtKHN0cnVjdCBoaW5pY19kZXYgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5Mzp2b2lkIGhpbmljX3NxX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5NTp2b2lkIGhpbmljX3NxX2RiZ2ZzX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjk3OnZvaWQgaGluaWNfcnFfZGJnZnNfaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjk5OnZvaWQgaGluaWNfcnFfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwMTp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTEwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6MTAzOnZvaWQgaGluaWNfZnVuY190YmxfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwNTp2b2lkIGhpbmljX2RiZ19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwNzp2b2lkIGhpbmljX2RiZ191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6MTA5OnZvaWQgaGluaWNfZGJnX3JlZ2lzdGVyX2RlYnVnZnMoY29uc3QgY2hhciAqZGVidWdmc19kaXJfbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTExMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6MTExOnZvaWQgaGluaWNfZGJnX3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtMTEyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxNjojaW5jbHVkZSBcJiMzNDtoaW5pY19od19kZXYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjE3OiNpbmNsdWRlIFwmIzM0O2hpbmljX3R4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxODojaW5jbHVkZSBcJiMzNDtoaW5pY19yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTk6I2luY2x1ZGUgXCYjMzQ7aGluaWNfc3Jpb3YuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjIxOiNkZWZpbmUgSElOSUNfRFJWX05BTUUgICAgICAgICAgXCYjMzQ7aGluaWNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0yMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6Mjk6ZW51bSBoaW5pY19mbGFncyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMzAtXHRISU5JQ19MSU5LX1VQID0gQklUKDApLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0zNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDozNzpzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0zOC1cdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgIHdvcms7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjQyOnN0cnVjdCBoaW5pY19yc3NfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNDMtXHR1OCB0Y3BfaXB2Nl9leHQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjUzOmVudW0gaGluaWNfcnNzX2hhc2hfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNTQtXHRISU5JQ19SU1NfSEFTSF9FTkdJTkVfVFlQRV9YT1IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjU5OnN0cnVjdCBoaW5pY19pbnRyX2NvYWxfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNjAtXHR1OFx0cGVuZGluZ19saW10O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC02NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo2NTplbnVtIGhpbmljX2RiZ190eXBlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC02Ni1cdEhJTklDX0RCR19TUV9JTkZPLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC03MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo3MTpzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6NzI6XHRzdHJ1Y3QgaGluaWNfZGV2XHQqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTczLVx0dm9pZFx0XHRcdCpvYmplY3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6NzQ6XHRlbnVtIGhpbmljX2RiZ190eXBlXHR0eXBlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTc1LVx0c3RydWN0IGRlbnRyeVx0XHQqcm9vdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6Nzk6c3RydWN0IGhpbmljX2RldiB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtODAtXHRzdHJ1Y3QgbmV0X2RldmljZSAgICAgICAgICAgICAgICpuZXRkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6ODE6XHRzdHJ1Y3QgaGluaWNfaHdkZXYgICAgICAgICAgICAgICpod2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC04Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6OTQ6XHRzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrICAgICAgIHJ4X21vZGVfd29yaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC05NS1cdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICAgICAgICAgKndvcmtxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjk3Olx0c3RydWN0IGhpbmljX3R4cSAgICAgICAgICAgICAgICAqdHhxcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo5ODpcdHN0cnVjdCBoaW5pY19yeHEgICAgICAgICAgICAgICAgKnJ4cXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtOTktXHR1MTZcdFx0XHRcdHNxX2RlcHRoO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMDUtXHR1MTZcdFx0XHRcdHJzc19saW1pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxMDY6XHRzdHJ1Y3QgaGluaWNfcnNzX3R5cGVcdFx0cnNzX3R5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTA3LVx0dThcdFx0XHRcdCpyc3NfaGtleV91c2VyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTEwOC1cdHMzMlx0XHRcdFx0KnJzc19pbmRpcl91c2VyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjEwOTpcdHN0cnVjdCBoaW5pY19pbnRyX2NvYWxfaW5mb1x0KnJ4X2ludHJfY29hbGVzY2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTEwOlx0c3RydWN0IGhpbmljX2ludHJfY29hbF9pbmZvXHQqdHhfaW50cl9jb2FsZXNjZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxMTE6XHRzdHJ1Y3QgaGluaWNfc3Jpb3ZfaW5mbyBzcmlvdl9pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTExMi1cdGludFx0XHRcdFx0bGJfdGVzdF9yeF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTExOS1cdHN0cnVjdCBkZW50cnlcdFx0XHQqZnVuY190YmxfZGJnZnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTIwOlx0c3RydWN0IGhpbmljX2RlYnVnX3ByaXZcdFx0KmRiZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMjEtXHRzdHJ1Y3QgZGV2bGlua1x0XHRcdCpkZXZsaW5rO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTI2OnN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjEyNzpcdHN0cnVjdCBoaW5pY19od2Rldlx0XHQqaHdkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTI4LVx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICAqaHdfZmF1bHRfcmVwb3J0ZXI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTk6I2luY2x1ZGUgXCYjMzQ7aGluaWNfcG9ydC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjIwOiNpbmNsdWRlIFwmIzM0O2hpbmljX2RldmxpbmsuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyMTojaW5jbHVkZSBcJiMzNDtoaW5pY19od19kZXYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjM6c3RhdGljIGJvb2wgaGluaWNfZndfc2VjdGlvbl92YWxpZCh1MzIgZndfbGVuLCB1MzIgb2Zmc2V0LCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6Mjg6c3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfdmFsaWQoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiwgY29uc3QgdTggKmJ1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjktXHRcdFx0ICAgICAgc2l6ZV90IGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjcyOlx0XHRpZiAoIWhpbmljX2Z3X3NlY3Rpb25fdmFsaWQoZndfaW1hZ2UtXHUwMDNlZndfbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy03My1cdFx0XHRcdFx0ICAgIHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9vZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjEwNDpzdGF0aWMgYm9vbCBjaGVja19pbWFnZV9pbnRlZ3JpdHkoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTA1LVx0XHRcdFx0ICBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTQzOnN0YXRpYyBpbnQgY2hlY2tfaW1hZ2VfZGV2aWNlX3R5cGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTQ0LVx0XHRcdFx0ICAgdTMyIGltYWdlX2RldmljZV90eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNDUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoxNDY6XHRzdHJ1Y3QgaGluaWNfY29tbV9ib2FyZF9pbmZvIGJvYXJkX2luZm8gPSB7MH07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTQ4Olx0aWYgKGhpbmljX2dldF9ib2FyZF9pbmZvKHByaXYtXHUwMDNlaHdkZXYsIFx1MDAyNmJvYXJkX2luZm8pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0OS1cdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwmIzM0O0dldCBib2FyZCBpbmZvIGZhaWxlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjE2MzpzdGF0aWMgaW50IGhpbmljX2ZsYXNoX2Z3KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjQtXHRcdFx0ICBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE2Ni1cdHUzMiBzZWN0aW9uX3JlbWFpbl9zZW5kX2xlbiwgc2VuZF9mcmFnbWVudF9sZW4sIHNlbmRfcG9zLCB1cF90b3RhbF9sZW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjE2NzpcdHN0cnVjdCBoaW5pY19jbWRfdXBkYXRlX2Z3ICpmd191cGRhdGVfbXNnID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTY4LVx0dTMyIHNlY3Rpb25fdHlwZSwgc2VjdGlvbl9jcmMsIHNlY3Rpb25fdmVyc2lvbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjU4Olx0XHRcdGVyciA9IGhpbmljX3BvcnRfbXNnX2NtZChwcml2LVx1MDAzZWh3ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yNTktXHRcdFx0XHRcdFx0IEhJTklDX1BPUlRfQ01EX1VQREFURV9GVyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjgzOnN0YXRpYyBpbnQgaGluaWNfZmlybXdhcmVfdXBkYXRlKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI4NC1cdFx0XHRcdCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMDE6XHRlcnIgPSBoaW5pY19mbGFzaF9mdyhwcml2LCBmdy1cdTAwM2VkYXRhLCBcdTAwMjZob3N0X2ltYWdlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzAyLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMjI6c3RhdGljIGludCBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzIzLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzI1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzI2Olx0c3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMjg6XHRyZXR1cm4gaGluaWNfZmlybXdhcmVfdXBkYXRlKHByaXYsIHBhcmFtcy1cdTAwM2VmdywgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzI5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzE6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBoaW5pY19kZXZsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzMyOlx0LmZsYXNoX3VwZGF0ZSA9IGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzMtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzU6c3RydWN0IGRldmxpbmsgKmhpbmljX2RldmxpbmtfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzc6XHRyZXR1cm4gZGV2bGlua19hbGxvYyhcdTAwMjZoaW5pY19kZXZsaW5rX29wcywgc2l6ZW9mKHN0cnVjdCBoaW5pY19kZXYpLCBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjM0MDp2b2lkIGhpbmljX2RldmxpbmtfZnJlZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzQxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTM0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzQ1OnZvaWQgaGluaWNfZGV2bGlua19yZWdpc3RlcihzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozNTI6dm9pZCBoaW5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTM1OT1zdGF0aWMgdm9pZCBjaGlwX2ZhdWx0X3Nob3coc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzYwOlx0XHRcdCAgICBzdHJ1Y3QgaGluaWNfZmF1bHRfZXZlbnQgKmV2ZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM9MzgwPXN0YXRpYyB2b2lkIGZhdWx0X3JlcG9ydF9zaG93KHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjM4MTpcdFx0XHQgICAgICBzdHJ1Y3QgaGluaWNfZmF1bHRfZXZlbnQgKmV2ZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zODIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0MzE6c3RhdGljIGludCBoaW5pY19od19yZXBvcnRlcl9kdW1wKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQzMi1cdFx0XHRcdCAgc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZywgdm9pZCAqcHJpdl9jdHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz00NDE9c3RhdGljIHZvaWQgbWdtdF93YXRjaGRvZ19yZXBvcnRfc2hvdyhzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0NDI6XHRcdFx0XHQgICAgICBzdHJ1Y3QgaGluaWNfbWdtdF93YXRjaGRvZ19pbmZvICp3aW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDYyOnN0YXRpYyBpbnQgaGluaWNfZndfcmVwb3J0ZXJfZHVtcChzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NjMtXHRcdFx0XHQgIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csIHZvaWQgKnByaXZfY3R4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0NzI6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgaGluaWNfaHdfZmF1bHRfcmVwb3J0ZXJfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzMtXHQubmFtZSA9IFwmIzM0O2h3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0NzQ6XHQuZHVtcCA9IGhpbmljX2h3X3JlcG9ydGVyX2R1bXAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ3NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ3NzpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX29wcyBoaW5pY19md19mYXVsdF9yZXBvcnRlcl9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ3OC1cdC5uYW1lID0gXCYjMzQ7ZndcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ3OTpcdC5kdW1wID0gaGluaWNfZndfcmVwb3J0ZXJfZHVtcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDgwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDgyOmludCBoaW5pY19oZWFsdGhfcmVwb3J0ZXJzX2NyZWF0ZShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDg3LVx0XHRkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9jcmVhdGUoZGV2bGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDg4Olx0XHRcdFx0XHQgICAgICAgXHUwMDI2aGluaWNfaHdfZmF1bHRfcmVwb3J0ZXJfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00ODktXHRcdFx0XHRcdCAgICAgICBwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ5Ny1cdFx0ZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfY3JlYXRlKGRldmxpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ5ODpcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmhpbmljX2Z3X2ZhdWx0X3JlcG9ydGVyX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDk5LVx0XHRcdFx0XHQgICAgICAgcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy01MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjUxMTp2b2lkIGhpbmljX2hlYWx0aF9yZXBvcnRlcnNfZGVzdHJveShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy01MTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmgtOS0jaW5jbHVkZSBcdTAwM2NuZXQvZGV2bGluay5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjEwOiNpbmNsdWRlIFwmIzM0O2hpbmljX2Rldi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmgtMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjI0OmVudW0gaGluaWNfZndfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTI1LVx0VVBfRldfVVBEQVRFX1VQX1RFWFRfQSA9IDB4MCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oPTEwMT1zdHJ1Y3QgaG9zdF9pbWFnZV9zdCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaC0xMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjExMTpzdHJ1Y3QgZGV2bGluayAqaGluaWNfZGV2bGlua19hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTI6dm9pZCBoaW5pY19kZXZsaW5rX2ZyZWUoc3RydWN0IGRldmxpbmsgKmRldmxpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTM6dm9pZCBoaW5pY19kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTQ6dm9pZCBoaW5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTExNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTE2OmludCBoaW5pY19oZWFsdGhfcmVwb3J0ZXJzX2NyZWF0ZShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTE3OnZvaWQgaGluaWNfaGVhbHRoX3JlcG9ydGVyc19kZXN0cm95KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaC0xMTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0yOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzA6I2luY2x1ZGUgXCYjMzQ7aGluaWNfaHdfcXAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzozMTojaW5jbHVkZSBcJiMzNDtoaW5pY19od19kZXYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzozMjojaW5jbHVkZSBcJiMzNDtoaW5pY19wb3J0LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzM6I2luY2x1ZGUgXCYjMzQ7aGluaWNfdHguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzozNDojaW5jbHVkZSBcJiMzNDtoaW5pY19yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjM1OiNpbmNsdWRlIFwmIzM0O2hpbmljX2Rldi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTM2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9NTk9c3RydWN0IGh3MmV0aHRvb2xfbGlua19tb2RlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTYxLVx0dTMyIHNwZWVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzo2MjpcdGVudW0gaGluaWNfbGlua19tb2RlIGh3X2xpbmtfbW9kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtNjMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jPTE0Nj1zdGF0aWMgdm9pZCBzZXRfbGlua19zcGVlZChzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE0NzpcdFx0XHQgICBlbnVtIGhpbmljX3NwZWVkIHNwZWVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0xNDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzoxODQ6c3RhdGljIGludCBoaW5pY19nZXRfbGlua19tb2RlX2luZGV4KGVudW0gaGluaWNfbGlua19tb2RlIGxpbmtfbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTg1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTE5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MTk2OnN0YXRpYyB2b2lkIGhpbmljX2FkZF9ldGh0b29sX2xpbmtfbW9kZShzdHJ1Y3QgY21kX2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE5NzpcdFx0XHRcdFx0ZW51bSBoaW5pY19saW5rX21vZGUgaHdfbGlua19tb2RlLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwNTAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERldmxpbmsgRmxhc2ggVXBkYXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNgLiBJdCYjMzk7cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gZGV2bGluayBmbGFzaCB1cGRhdGVzLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIG1hbmFnaW5nIGZpcm13YXJlLiBUaGUgcXVlc3Rpb24gaXMsIGhvdyBkb2VzIHRoaXMgdXBkYXRlIGdldCB0cmlnZ2VyZWQgYW5kIHdoZXJlIGRvZXMgdGhlIGRyaXZlciBjb21lIGludG8gcGxheT8KCkkga25vdyBkZXZsaW5rIGZsYXNoIHVwZGF0ZXMgYXJlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgdGhhdCYjMzk7cyB0aGUgY29tbW9uIGludGVyZmFjZS4gQnV0LCB0aGUgcmVhbCBjb25jZXJuIGlzIHRoZSAqZHJpdmVyJiMzOTtzKiBhdmFpbGFiaWxpdHkuIERvZXMgdGhlIGRyaXZlciBldmVuIGdldCBsb2FkZWQgaWYgdGhlIGhhcmR3YXJlLCB0aGUgYWN0dWFsIE5JQywgaXNuJiMzOTt0IHByZXNlbnQ/IEkgaGF2ZSB0byBjb25zaWRlciB0aGF0LgoKTGV0JiMzOTtzIHNlZeKApiBUaGUgY29kZSBpbmRpY2F0ZXMgdGhhdCB0aGUgYGhpbmljYCBkcml2ZXIgb25seSByZWdpc3RlcnMgZGV2bGluayBpZiB0aGUgaGFyZHdhcmUgaXMgYWN0dWFsbHkgZGV0ZWN0ZWQuIFRoYXQgbWFrZXMgc2Vuc2UuIEl0JiMzOTtzIGEgUENJIGRyaXZlciwgc28gaXQgc2hvdWxkIGJlIHJlbHlpbmcgb24gdGhlIHByZXNlbmNlIG9mIFBDSSBkZXZpY2VzLgoKU28sIHRoZSBrZXkgcXVlc3Rpb24gYmVjb21lczogQ2FuIEkgKnByb2JlKiB0aGUgZHJpdmVyIGV2ZW4gd2l0aG91dCB0aGUgaGFyZHdhcmU/IENhbiBJIGxvYWQgdGhlIG1vZHVsZSBhbmQgdHJpZ2dlciB0aGF0IHJlZ2lzdHJhdGlvbiBwYXRoIHdpdGhvdXQgYW4gYWN0dWFsIGBoaW5pY2AgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGUgc3lzdGVtPyBUaGF0JiMzOTtzIHdoYXQgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBwYXRjaCBjYW4gYmUgYWNjZXNzZWQvdGVzdGVkIHdpdGhvdXQgYSBzcGVjaWZpYyBoYXJkd2FyZSBlbnZpcm9ubWVudC4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBwcm9iZSB0aGUgZHJpdmVyIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCB0byBjaGVjayBpdHMgYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDgwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipMb2NhdGluZyB0aGUgRHJpdmVyIFJlZ2lzdHJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbG9jYXRlIHRoZSBkcml2ZXIgcmVnaXN0cmF0aW9uIGRhdGEuIFRoaXMgbWVhbnMgSSYjMzk7bSBwcm9iYWJseSBmYWNpbmcgYSBzcGVjaWZpYyBjaGFsbGVuZ2Ugb3IgaW52ZXN0aWdhdGlvbiB0aGF0IGhpbmdlcyBvbiBpZGVudGlmeWluZyBvciBhY2Nlc3NpbmcgdGhpcyBpbmZvcm1hdGlvbi4gRGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IOKAkyByZWd1bGF0b3J5IGNvbXBsaWFuY2UsIGluY2lkZW50IGFuYWx5c2lzLCBzeXN0ZW0gZGVidWdnaW5nLCBldGMuIOKAkyBteSBhcHByb2FjaCB3aWxsIHZhcnkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBtb3N0IGVmZmljaWVudCBwYXRoIHRvIGFjY2VzcyB0aGlzIGRhdGEuIEFtIEkgbG9va2luZyBhdCBhIGRhdGFiYXNlIHF1ZXJ5PyBBIGxvZyBmaWxlIHNlYXJjaD8gQSBzcGVjaWZpYyBBUEkgZW5kcG9pbnQ/IE9yIGlzIHRoaXMgYSBtb3JlIG1hbnVhbCBwcm9jZXNzIGludm9sdmluZyByZWdpc3RyeSBrZXlzIG9yIGNvbmZpZ3VyYXRpb24gZmlsZXM/IFRoZSBwcmVjaXNlIG1ldGhvZCBoaW5nZXMgb24gdGhlIHN5c3RlbSBpbiBxdWVzdGlvbiwgdGhlIGdyYW51bGFyaXR5IG9mIGluZm9ybWF0aW9uIEkgcmVxdWlyZSwgYW5kIHRoZSBzZWN1cml0eSBwcm90b2NvbHMgaW52b2x2ZWQuIFRpbWUgdG8gZXZhbHVhdGUgYWxsIHRoZSBhbmdsZXMgYW5kIGRlY2lkZSBvbiB0aGUgbW9zdCBhcHByb3ByaWF0ZSBtZXRob2QgdG8gZ2V0IG1lIHRoZSBkYXRhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTQ4OD1zdGF0aWMgaW50IF9faW5pdCBoaW5pY19tb2R1bGVfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM6MTQ5NDpcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aGluaWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ5NS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NTkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBQQ0kgRHJpdmVyIHdpdGggU3l6a2FsbGVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIFBDSSBkcml2ZXIgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gSXQmIzM5O3MgZ290IHRoYXQgdlBDSSBmdXp6ZXIsIHdoaWNoIGlzIHByb21pc2luZywgYmVjYXVzZSBzeXprYWxsZXIgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIEJ1dCBoYW5nIG9uLCBzeXprYWxsZXIgZG9lc24mIzM5O3QganVzdCAqZ2VuZXJhbGx5KiBlbXVsYXRlIGFyYml0cmFyeSBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhleSYjMzk7cmUgZXhwbGljaXRseSBzdXBwb3J0ZWQgd2l0aGluIHRoZSB2UENJIGZ1enplci4KCkhtbS4uLiB3YWl0IGEgbWludXRlLCBJIHJlbWVtYmVyIHNlZWluZyAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7IGluIGEgc3l6Ym90IHJlcG9ydCByZWxhdGVkIHRvIHRoaXMuIElmIHN5emJvdCBjYXVnaHQgYW4gaXNzdWUsIHRoYXQgbWVhbnMgaXQgKmlzKiByZWFjaGFibGUsIHJpZ2h0PyBBbmQgSSBzZWUgdGhlIGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLiBTbywgaXQgd2FzIHByb2JhYmx5IGZ1enplZCwgb3IgaXQmIzM5O3MgYSBwYXRjaCB1bmRlciByZXZpZXcgZm9yIHN5emJvdC4KCkJ1dCB0aGVuIEkgc2VlIHRoZSBwcm9tcHQgbWVudGlvbnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSWYgaXQmIzM5O3MgYSBwaHlzaWNhbCBQQ0kgZHJpdmVyLCB3b3VsZCBpdCBiZSByZWFjaGFibGUgaW4gUUVNVT8gUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIQoKT2theSwgbGV0JiMzOTtzIHJldmlzaXQgc3l6a2FsbGVyJiMzOTtzIHZQQ0kgZnV6emVyLiBJdCBkb2VzIGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlc2AsIG9yIHNpbWlsYXIsIHJpZ2h0PyBBbmQgaXQgY2FuIGVtdWxhdGUgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcy4gVGhhdCBtZWFucyBzeXprYWxsZXIgY2FuIHByb3ZpZGUgdGhlIFBDSSBJRHMsIGFuZCBlbXVsYXRlIHRoZSBjb25maWcgc3BhY2UgYW5kIEJBUnMsIHNvIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiBpcyBjYWxsZWQuCgpBbHJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBgaGluaWNfZHJpdmVyYCBQQ0kgSURzLiBMZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBjYW4gYWN0dWFsbHkgcmVhY2ggaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hpbmljX3BjaV90YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYz0xNDY0PXN0YXRpYyB2b2lkIGhpbmljX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM6MTQ2OTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaGluaWNfcGNpX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0NzAtXHR7IFBDSV9WREVWSUNFKEhVQVdFSSwgSElOSUNfREVWX0lEX1FVQURfUE9SVF8yNUdFKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ3Ni19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDc3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBoaW5pY19wY2lfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYz0xNDc5PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBoaW5pY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0ODAtXHQubmFtZSAgICAgICAgICAgPSBISU5JQ19EUlZfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM6MTQ4MTpcdC5pZF90YWJsZSAgICAgICA9IGhpbmljX3BjaV90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ4Mi1cdC5wcm9iZSAgICAgICAgICA9IGhpbmljX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA0MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgaGluaWNfcHJvYmVgIHdpdGggdGhlIHZQQ0kgRnV6emVyKioKCk9rYXksIHNvIHRoZSBpbW1lZGlhdGUgdGhvdWdodCBpczogaWYgc3l6a2FsbGVyJiMzOTtzIHZQQ0kgZnV6emVyIGNhbiBoaXQgaXQsIHRoZW4gd2UmIzM5O3ZlIGdvdCBhIHJlYWNoYWJsZSBjb2RlIHBhdGguIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lIGFzc3VtcHRpb24uIEJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgKnZpcnR1YWxpemVkIGVudmlyb25tZW50cyogbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBIbW0sIGlzIHN5emthbGxlciYjMzk7cyB2UENJIGZ1enplciBjb25zaWRlcmVkICYjMzQ7c29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0OyBpbiAqdGhpcyogY29udGV4dD8gSSYjMzk7ZCBzYXkgeWVzLCBpdCBkZWZpbml0ZWx5IGZpdHMgdGhhdCBkZXNjcmlwdGlvbi4KClRoZSBrZXkgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBkb2VzIHRoZSB2UENJIGZ1enplciBhY3R1YWxseSBnZXQgKnBhc3QqIHRoZSBwb3RlbnRpYWwgbWluZWZpZWxkIG9mIGNvbXBsZXggaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24sIGVzcGVjaWFsbHkgd2l0aGluIHNvbWV0aGluZyBhcyBlbGFib3JhdGUgYXMgYGhpbmljX3Byb2JlYD8gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgaW50cmljYXRlIFBDSSBkcml2ZXJzIG9mdGVuIGNob2tlIGVhcmx5IGluIHRoZWlyIGBwcm9iZWAgZnVuY3Rpb25zLiBUaGV5IGZyZXF1ZW50bHkgZGVwZW5kIG9uIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJhY3Rpb25zIOKAkyByZWFkaW5nIHBhcnRpY3VsYXIgcmVnaXN0ZXJzLCBETUEgb3BlcmF0aW9ucyB3b3JraW5nIGFzIGV4cGVjdGVkLCBjb3JyZWN0IGZpcm13YXJlIGxvYWRpbmcsIHlvdSBrbm93IHRoZSBkcmlsbC4gSXQmIzM5O3MgYSBmcmFnaWxlIGRhbmNlLgoKU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIHJpZ2h0IGludG8gYGhpbmljX3Byb2JlYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSB1cCBhZ2FpbnN0LCBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgdlBDSSBmdXp6ZXIgaXMgbGlrZWx5IHRvIHN1Y2NlZWQgb3IgZmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGluaWNfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTE2MD1zdGF0aWMgaW50IG5pY19kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTEzNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjEzNTY6c3RhdGljIGludCBoaW5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTM1Ny1cdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTE0Nzk9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGhpbmljX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0ODEtXHQuaWRfdGFibGUgICAgICAgPSBoaW5pY19wY2lfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjE0ODI6XHQucHJvYmUgICAgICAgICAgPSBoaW5pY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ4My1cdC5yZW1vdmUgICAgICAgICA9IGhpbmljX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NDQKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEaXZpbmcgaW50byBgaGluaWNfcHJvYmVgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdCB3aXRoIHRoaXMgYGhpbmljX3Byb2JlYC4gQmFzZWQgb24gdGhlIG5hbWUsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBsb3ctbGV2ZWwgdG9vbCwgcHJvYmFibHkgcmVsYXRlZCB0byBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVycywgb3IgJiMzNDtISU5JQ3MmIzM0OyBzcGVjaWZpY2FsbHkuIFRoZSBwcm9iZSBzdWZmaXggdHlwaWNhbGx5IGluZGljYXRlcyB0aGF0IGl0cyBmdW5jdGlvbiBpcyB0byB0ZXN0LCBnYXRoZXIgZGF0YSwgb3Igb3RoZXJ3aXNlIGV4YW1pbmUgdGhlIHN0YXRlIG9mIGEgaGFyZHdhcmUgY29tcG9uZW50LiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgZ28gdG8gdGhpbmdzIGxpa2UgaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIEhJTklDIG1vZGVsLCBjaGVja2luZyBpdHMgZmlybXdhcmUgdmVyc2lvbiwgdmVyaWZ5aW5nIGl0cyBvcGVyYXRpb25hbCBzdGF0dXMsIG9yIHBlcmhhcHMgZXZlbiBkaWFnbm9zaW5nIGNvbm5lY3Rpdml0eSBwcm9ibGVtcy4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyB0aGF0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBkdW1waW5nIGhhcmR3YXJlIHJlZ2lzdGVycywgb3IgZGV0ZWN0aW5nIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSBhY3R1YWxseSB0ZWxscyB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTM1NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM1NjpcdHN0YXRpYyBpbnQgaGluaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4xMzU3Olx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4xMzU4Olx0e1xuMTM1OTpcdFx0aW50IGVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuMTM2MDpcdFxuMTM2MTpcdFx0aWYgKGVycilcbjEzNjI6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGVyciwgXCYjMzQ7RmFpbGVkIHRvIGVuYWJsZSBQQ0kgZGV2aWNlXFxuXCYjMzQ7KTtcbjEzNjM6XHRcbjEzNjQ6XHRcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGRldiwgSElOSUNfRFJWX05BTUUpO1xuMTM2NTpcdFx0aWYgKGVycikge1xuMTM2NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVxdWVzdCBQQ0kgcmVnaW9uc1xcblwmIzM0Oyk7XG4xMzY3Olx0XHRcdGdvdG8gZXJyX3BjaV9yZWdpb25zO1xuMTM2ODpcdFx0fVxuMTM2OTpcdFxuMTM3MDpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4xMzcxOlx0XG4xMzcyOlx0XHRlcnIgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBETUFfQklUX01BU0soNjQpKTtcbjEzNzM6XHRcdGlmIChlcnIpIHtcbjEzNzQ6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHNldCBETUEgbWFza1xcblwmIzM0Oyk7XG4xMzc1Olx0XHRcdGdvdG8gZXJyX2RtYV9tYXNrO1xuMTM3NjpcdFx0fVxuMTM3NzpcdFxuMTM3ODpcdFx0ZXJyID0gbmljX2Rldl9pbml0KHBkZXYpO1xuMTM3OTpcdFx0aWYgKGVycikge1xuMTM4MDpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOSUMgZGV2aWNlXFxuXCYjMzQ7KTtcbjEzODE6XHRcdFx0Z290byBlcnJfbmljX2Rldl9pbml0O1xuMTM4MjpcdFx0fVxuMTM4MzpcdFxuMTM4NDpcdFx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0hpTklDIGRyaXZlciAtIHByb2JlZFxcblwmIzM0Oyk7XG4xMzg1Olx0XHRyZXR1cm4gMDtcbjEzODY6XHRcbjEzODc6XHRlcnJfbmljX2Rldl9pbml0OlxuMTM4ODpcdGVycl9kbWFfbWFzazpcbjEzODk6XHRcdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7XG4xMzkwOlx0XG4xMzkxOlx0ZXJyX3BjaV9yZWdpb25zOlxuMTM5MjpcdFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuMTM5MzpcdFx0cmV0dXJuIGVycjtcbjEzOTQ6XHR9XG4xMzk1Olx0XG4xMzk2Olx0c3RhdGljIHZvaWQgd2FpdF9zcmlvdl9jZmdfY29tcGxldGUoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcbjEzOTc6XHR7XG4xMzk4Olx0XHRzdHJ1Y3QgaGluaWNfc3Jpb3ZfaW5mbyAqc3Jpb3ZfaW5mbyA9IFx1MDAyNm5pY19kZXYtXHUwMDNlc3Jpb3ZfaW5mbztcbjEzOTk6XHRcdHUzMiBsb29wX2NudCA9IDA7XG4xNDAwOlx0XG4xNDAxOlx0XHRzZXRfYml0KEhJTklDX0ZVTkNfUkVNT1ZFLCBcdTAwMjZzcmlvdl9pbmZvLVx1MDAzZXN0YXRlKTtcbjE0MDI6XHRcdHVzbGVlcF9yYW5nZSg5OTAwLCAxMDAwMCk7XG4xNDAzOlx0XG4xNDA0Olx0XHR3aGlsZSAobG9vcF9jbnQgXHUwMDNjIEhJTklDX1dBSVRfU1JJT1ZfQ0ZHX1RJTUVPVVQpIHtcbjE0MDU6XHRcdFx0aWYgKCF0ZXN0X2JpdChISU5JQ19TUklPVl9FTkFCTEUsIFx1MDAyNnNyaW92X2luZm8tXHUwMDNlc3RhdGUpIFx1MDAyNlx1MDAyNlxuMTQwNjpcdFx0XHQgICAgIXRlc3RfYml0KEhJTklDX1NSSU9WX0RJU0FCTEUsIFx1MDAyNnNyaW92X2luZm8tXHUwMDNlc3RhdGUpKVxuMTQwNzpcdFx0XHRcdHJldHVybjtcbjE0MDg6XHRcbjE0MDk6XHRcdFx0dXNsZWVwX3JhbmdlKDk5MDAsIDEwMDAwKTtcbjE0MTA6XHRcdFx0bG9vcF9jbnQmIzQzOyYjNDM7O1xuMTQxMTpcdFx0fVxuMTQxMjpcdH1cbjE0MTM6XHRcbjE0MTQ6XHRzdGF0aWMgdm9pZCBoaW5pY19yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4xNDE1Olx0e1xuMTQxNjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbjE0MTc6XHRcdHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuMTQxODpcdFx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBuaWNfZGV2LVx1MDAzZWRldmxpbms7XG4xNDE5Olx0XHRzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrICpyeF9tb2RlX3dvcms7XG4xNDIwOlx0XG4xNDIxOlx0XHRpZiAoIUhJTklDX0lTX1ZGKG5pY19kZXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZikpIHtcbjE0MjI6XHRcdFx0d2FpdF9zcmlvdl9jZmdfY29tcGxldGUobmljX2Rldik7XG4xNDIzOlx0XHRcdGhpbmljX3BjaV9zcmlvdl9kaXNhYmxlKHBkZXYpO1xuMTQyNDpcdFx0fVxuMTQyNTpcdFxuMTQyNjpcdFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbjE0Mjc6XHRcbjE0Mjg6XHRcdGhpbmljX2Z1bmNfdGFibGVfZGVidWdfcmVtKG5pY19kZXYpO1xuMTQyOTpcdFxuMTQzMDpcdFx0aGluaWNfZnVuY190YmxfZGJnZnNfdW5pbml0KG5pY19kZXYpO1xuMTQzMTpcdFxuMTQzMjpcdFx0aGluaWNfZGJnX3VuaW5pdChuaWNfZGV2KTtcbjE0MzM6XHRcbjE0MzQ6XHRcdGhpbmljX2ZyZWVfaW50cl9jb2FsZXNjZShuaWNfZGV2KTtcbjE0MzU6XHRcbjE0MzY6XHRcdGhpbmljX3BvcnRfZGVsX21hYyhuaWNfZGV2LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIsIDApO1xuMTQzNzpcdFxuMTQzODpcdFx0aGluaWNfaHdkZXZfY2JfdW5yZWdpc3RlcihuaWNfZGV2LVx1MDAzZWh3ZGV2LFxuMTQzOTpcdFx0XHRcdFx0ICBISU5JQ19NR01UX01TR19DTURfTElOS19FUlJfRVZFTlQpO1xuMTQ0MDpcdFx0aGluaWNfaHdkZXZfY2JfdW5yZWdpc3RlcihuaWNfZGV2LVx1MDAzZWh3ZGV2LFxuMTQ0MTpcdFx0XHRcdFx0ICBISU5JQ19NR01UX01TR19DTURfQ0FCTEVfUExVR19FVkVOVCk7XG4xNDQyOlx0XHRoaW5pY19od2Rldl9jYl91bnJlZ2lzdGVyKG5pY19kZXYtXHUwMDNlaHdkZXYsXG4xNDQzOlx0XHRcdFx0XHQgIEhJTklDX01HTVRfTVNHX0NNRF9MSU5LX1NUQVRVUyk7XG4xNDQ0Olx0XG4xNDQ1Olx0XHRyeF9tb2RlX3dvcmsgPSBcdTAwMjZuaWNfZGV2LVx1MDAzZXJ4X21vZGVfd29yaztcbjE0NDY6XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cnhfbW9kZV93b3JrLVx1MDAzZXdvcmspO1xuMTQ0NzpcdFxuMTQ0ODpcdFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xuMTQ0OTpcdFxuMTQ1MDpcdFx0ZGVzdHJveV93b3JrcXVldWUobmljX2Rldi1cdTAwM2V3b3JrcSk7XG4xNDUxOlx0XG4xNDUyOlx0XHRoaW5pY19mcmVlX2h3ZGV2KG5pY19kZXYtXHUwMDNlaHdkZXYpO1xuMTQ1MzpcdFxuMTQ1NDpcdFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcbjE0NTU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI3MTQKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBuaWNcX2RldlxfaW5pdCoqCgpBbHJpZ2h0LCAqbmljXF9kZXZcX2luaXQqLi4uIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBhIG1lbnRhbCBjaGVja2xpc3QuIFRoaXMgaXMgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIGEgbmV0d29yayBpbnRlcmZhY2UgZGV2aWNlLCByaWdodD8gU28sIGZpcnN0IGFuZCBmb3JlbW9zdCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIFdoYXQga2luZCBvZiBOSUMgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IElzIHRoaXMgRXRoZXJuZXQsIEluZmluaWJhbmQsIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPyBUaGUgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gaXMgY3J1Y2lhbCBiZWNhdXNlIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIHdpbGwgYmUgaGVhdmlseSBkZXBlbmRlbnQgb24gdGhlIHJlZ2lzdGVyIHNldHMsIHRoZSBETUEgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBpbnRlcnJ1cHQgbGluZXMuCgpOZXh0LCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIHBoYXNlcy4gV2UmIzM5O2xsIGxpa2VseSBiZSBjaGVja2luZyBmb3IgZGV2aWNlIHByZXNlbmNlLCBtYXliZSBkb2luZyBhIGhhcmR3YXJlIHJlc2V0LCBhbGxvY2F0aW5nIGFuZCBjb25maWd1cmluZyBETUEgYnVmZmVycywgbG9hZGluZyBmaXJtd2FyZSAoaWYgYXBwbGljYWJsZSksIHNldHRpbmcgdXAgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgdGhlbiBmaW5hbGx5LCByZWdpc3RlcmluZyB0aGUgZGV2aWNlIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyBhY2Nlc3NlZCBpbiB0aGlzIHJvdXRpbmUuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIHZhbHVlcy4KCkkmIzM5O20gYWxzbyB3b25kZXJpbmcgYWJvdXQgdGhlIGVycm9yIGhhbmRsaW5nLiBXaGF0IGZhaWx1cmUgbW9kZXMgYXJlIGFjY291bnRlZCBmb3I/IEFyZSB0aGVyZSByZXRyaWVzIHdpdGggYmFja29mZj8gQXJlIHRoZXJlIGFueSBkaWFnbm9zdGljcyBidWlsdC1pbj8gQSByb2J1c3QgaW5pdGlhbGl6YXRpb24gcm91dGluZSBpcyBvbmUgdGhhdCBjYW4gaGFuZGxlIGEgdmFyaWV0eSBvZiBoYXJkd2FyZSBpc3N1ZXMgZ3JhY2VmdWxseSBhbmQgcHJvdmlkZSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSB1c2VyLiBJIGhvcGUgdGhlcmUmIzM5O3MgZ29vZCBsb2dnaW5nLgoKVGhpcyBpbml0aWFsaXphdGlvbiBpcyBjcml0aWNhbC4gQSBzdWJ0bGUgYnVnIGhlcmUgY2FuIGxlYWQgdG8gaW50ZXJtaXR0ZW50IG5ldHdvcmsgcHJvYmxlbXMsIHBvb3IgcGVyZm9ybWFuY2UsIG9yIGV2ZW4gY29tcGxldGUgc3lzdGVtIGhhbmdzLiBUaGUgZGVlcGVyIEkgZ28sIHRoZSBtb3JlIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG11dGV4ZXMgb3Igc3BpbmxvY2tzIHRvIGVuc3VyZSB0aHJlYWQtc2FmZXR5LCBlc3BlY2lhbGx5IGlmIHRoaXMgcm91dGluZSBpcyBydW5uaW5nIGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwga2VlcCB0aGUgT1MmIzM5O3MgZGF0YSBzdHJ1Y3R1cmVzIGluIG1pbmQ6IEFyZSB3ZSB3b3JraW5nIHdpdGggbmV0ZGV2IHN0cnVjdHVyZXMsIG9yIHNvbWUgb3RoZXIsIGRldmljZS1zcGVjaWZpYyBhYnN0cmFjdGlvbj8gQW55IGludGVyYWN0aW9uIHdpdGggbmV0bGluayBpcyBvZiBpbW1lZGlhdGUgaW50ZXJlc3QuCgpVbHRpbWF0ZWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHJvdXRpbmUmIzM5O3Mgcm9sZSBpbiBlc3RhYmxpc2hpbmcgYSBzdGFibGUsIHdlbGwtY29uZmlndXJlZCBuZXR3b3JrIGludGVyZmFjZS4gQW5kIHRoYXQgc3RhcnRzIHdpdGggdW5kZXJzdGFuZGluZyBhbGwgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkmIzM5O3JlIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExNjA6XHRzdGF0aWMgaW50IG5pY19kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbjExNjE6XHR7XG4xMTYyOlx0XHRzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrICpyeF9tb2RlX3dvcms7XG4xMTYzOlx0XHRzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2O1xuMTE2NDpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbjExNjU6XHRcdHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXY7XG4xMTY2Olx0XHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluaztcbjExNjc6XHRcdHU4IGFkZHJbRVRIX0FMRU5dO1xuMTE2ODpcdFx0aW50IGVyciwgbnVtX3FwcztcbjExNjk6XHRcbjExNzA6XHRcdGRldmxpbmsgPSBoaW5pY19kZXZsaW5rX2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbjExNzE6XHRcdGlmICghZGV2bGluaykge1xuMTE3MjpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtIaW5pYyBkZXZsaW5rIGFsbG9jIGZhaWxlZFxcblwmIzM0Oyk7XG4xMTczOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTE3NDpcdFx0fVxuMTE3NTpcdFxuMTE3NjpcdFx0aHdkZXYgPSBoaW5pY19pbml0X2h3ZGV2KHBkZXYsIGRldmxpbmspO1xuMTE3NzpcdFx0aWYgKElTX0VSUihod2RldikpIHtcbjExNzg6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgSFcgZGV2aWNlXFxuXCYjMzQ7KTtcbjExNzk6XHRcdFx0aGluaWNfZGV2bGlua19mcmVlKGRldmxpbmspO1xuMTE4MDpcdFx0XHRyZXR1cm4gUFRSX0VSUihod2Rldik7XG4xMTgxOlx0XHR9XG4xMTgyOlx0XG4xMTgzOlx0XHRudW1fcXBzID0gaGluaWNfaHdkZXZfbnVtX3Fwcyhod2Rldik7XG4xMTg0Olx0XHRpZiAobnVtX3FwcyBcdTAwM2M9IDApIHtcbjExODU6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBudW1iZXIgb2YgUVBTXFxuXCYjMzQ7KTtcbjExODY6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjExODc6XHRcdFx0Z290byBlcnJfbnVtX3FwcztcbjExODg6XHRcdH1cbjExODk6XHRcbjExOTA6XHRcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqbmljX2RldiksIG51bV9xcHMpO1xuMTE5MTpcdFx0aWYgKCFuZXRkZXYpIHtcbjExOTI6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIEV0aGVybmV0IGRldmljZVxcblwmIzM0Oyk7XG4xMTkzOlx0XHRcdGVyciA9IC1FTk9NRU07XG4xMTk0Olx0XHRcdGdvdG8gZXJyX2FsbG9jX2V0aGVyZGV2O1xuMTE5NTpcdFx0fVxuMTE5NjpcdFxuMTE5NzpcdFx0aWYgKCFISU5JQ19JU19WRihod2Rldi1cdTAwM2Vod2lmKSlcbjExOTg6XHRcdFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZoaW5pY19uZXRkZXZfb3BzO1xuMTE5OTpcdFx0ZWxzZVxuMTIwMDpcdFx0XHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmhpbmljdmZfbmV0ZGV2X29wcztcbjEyMDE6XHRcbjEyMDI6XHRcdG5ldGRldi1cdTAwM2VtYXhfbXR1ID0gSElOSUNfTUFYX01UVV9TSVpFO1xuMTIwMzpcdFx0bmV0ZGV2LVx1MDAzZW1pbl9tdHUgPSBISU5JQ19NSU5fTVRVX1NJWkU7XG4xMjA0Olx0XG4xMjA1Olx0XHRuaWNfZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbjEyMDY6XHRcdG5pY19kZXYtXHUwMDNlbmV0ZGV2ID0gbmV0ZGV2O1xuMTIwNzpcdFx0bmljX2Rldi1cdTAwM2Vod2RldiAgPSBod2RldjtcbjEyMDg6XHRcdG5pY19kZXYtXHUwMDNlbXNnX2VuYWJsZSA9IE1TR19FTkFCTEVfREVGQVVMVDtcbjEyMDk6XHRcdG5pY19kZXYtXHUwMDNlZmxhZ3MgPSAwO1xuMTIxMDpcdFx0bmljX2Rldi1cdTAwM2V0eHFzID0gTlVMTDtcbjEyMTE6XHRcdG5pY19kZXYtXHUwMDNlcnhxcyA9IE5VTEw7XG4xMjEyOlx0XHRuaWNfZGV2LVx1MDAzZXR4X3dlaWdodCA9IHR4X3dlaWdodDtcbjEyMTM6XHRcdG5pY19kZXYtXHUwMDNlcnhfd2VpZ2h0ID0gcnhfd2VpZ2h0O1xuMTIxNDpcdFx0bmljX2Rldi1cdTAwM2VzcV9kZXB0aCA9IEhJTklDX1NRX0RFUFRIO1xuMTIxNTpcdFx0bmljX2Rldi1cdTAwM2VycV9kZXB0aCA9IEhJTklDX1JRX0RFUFRIO1xuMTIxNjpcdFx0bmljX2Rldi1cdTAwM2Vzcmlvdl9pbmZvLmh3ZGV2ID0gaHdkZXY7XG4xMjE3Olx0XHRuaWNfZGV2LVx1MDAzZXNyaW92X2luZm8ucGRldiA9IHBkZXY7XG4xMjE4Olx0XHRuaWNfZGV2LVx1MDAzZW1heF9xcHMgPSBudW1fcXBzO1xuMTIxOTpcdFx0bmljX2Rldi1cdTAwM2VkZXZsaW5rID0gZGV2bGluaztcbjEyMjA6XHRcbjEyMjE6XHRcdGhpbmljX3NldF9ldGh0b29sX29wcyhuZXRkZXYpO1xuMTIyMjpcdFxuMTIyMzpcdFx0c2VtYV9pbml0KFx1MDAyNm5pY19kZXYtXHUwMDNlbWdtdF9sb2NrLCAxKTtcbjEyMjQ6XHRcbjEyMjU6XHRcdG5pY19kZXYtXHUwMDNldmxhbl9iaXRtYXAgPSBkZXZtX2JpdG1hcF96YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFZMQU5fTl9WSUQsXG4xMjI2Olx0XHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbjEyMjc6XHRcdGlmICghbmljX2Rldi1cdTAwM2V2bGFuX2JpdG1hcCkge1xuMTIyODpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMTIyOTpcdFx0XHRnb3RvIGVycl92bGFuX2JpdG1hcDtcbjEyMzA6XHRcdH1cbjEyMzE6XHRcbjEyMzI6XHRcdG5pY19kZXYtXHUwMDNld29ya3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShISU5JQ19XUV9OQU1FKTtcbjEyMzM6XHRcdGlmICghbmljX2Rldi1cdTAwM2V3b3JrcSkge1xuMTIzNDpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMTIzNTpcdFx0XHRnb3RvIGVycl93b3JrcTtcbjEyMzY6XHRcdH1cbjEyMzc6XHRcbjEyMzg6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBuZXRkZXYpO1xuMTIzOTpcdFxuMTI0MDpcdFx0ZXJyID0gaGluaWNfcG9ydF9nZXRfbWFjKG5pY19kZXYsIGFkZHIpO1xuMTI0MTpcdFx0aWYgKGVycikge1xuMTI0MjpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gZ2V0IG1hYyBhZGRyZXNzXFxuXCYjMzQ7KTtcbjEyNDM6XHRcdFx0Z290byBlcnJfZ2V0X21hYztcbjEyNDQ6XHRcdH1cbjEyNDU6XHRcdGV0aF9od19hZGRyX3NldChuZXRkZXYsIGFkZHIpO1xuMTI0NjpcdFxuMTI0NzpcdFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKG5ldGRldi1cdTAwM2VkZXZfYWRkcikpIHtcbjEyNDg6XHRcdFx0aWYgKCFISU5JQ19JU19WRihuaWNfZGV2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYpKSB7XG4xMjQ5Olx0XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBNQUMgYWRkcmVzc1xcblwmIzM0Oyk7XG4xMjUwOlx0XHRcdFx0ZXJyID0gLUVJTztcbjEyNTE6XHRcdFx0XHRnb3RvIGVycl9hZGRfbWFjO1xuMTI1MjpcdFx0XHR9XG4xMjUzOlx0XG4xMjU0Olx0XHRcdGRldl9pbmZvKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIE1BQyBhZGRyZXNzICVwTSwgdXNpbmcgcmFuZG9tXFxuXCYjMzQ7LFxuMTI1NTpcdFx0XHRcdCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIpO1xuMTI1NjpcdFx0XHRldGhfaHdfYWRkcl9yYW5kb20obmV0ZGV2KTtcbjEyNTc6XHRcdH1cbjEyNTg6XHRcbjEyNTk6XHRcdGVyciA9IGhpbmljX3BvcnRfYWRkX21hYyhuaWNfZGV2LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIsIDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg4MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBoaW5pY19pbml0X2h3ZGV2YCoqCgpPa2F5LCBgaGluaWNfaW5pdF9od2RldmAgaGFzIGJlZW4gaW52b2tlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHBvdGVudGlhbCBjb21wbGV4aXR5IGhlcmUuIEJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXQgc3VnZ2VzdHMgdGhpcyByb3V0aW5lIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlIGRldmljZSwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlcmUgd2lsbCBsaWtlbHkgYmUgbG93LWxldmVsIGhhcmR3YXJlIGludGVyYWN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byBjb25maXJtLCBidXQgSSYjMzk7bSBleHBlY3RpbmcgcmVnaXN0ZXIgYWNjZXNzZXMsIHBvdGVudGlhbGx5IERNQSBzZXR1cCwgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24sIGFuZCBwb3NzaWJseSBldmVuIGZpcm13YXJlIGxvYWRpbmcgb3IgY29tbXVuaWNhdGlvbi4gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBzY29wZSBvZiB0aGVzZSBvcGVyYXRpb25zIHRvIGRldGVybWluZSBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIGJvdHRsZW5lY2tzLCBvciByYWNlIGNvbmRpdGlvbnMuIEtub3dpbmcgd2hhdCBzcGVjaWZpYyBoYXJkd2FyZSByZXNvdXJjZXMgdGhlIGZ1bmN0aW9uIHRhcmdldHMgaXMgZ29pbmcgdG8gYmUgbXkgaW1tZWRpYXRlIHByaW9yaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaW5pY19pbml0X2h3ZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmM9ODYxPWludCBoaW5pY19zZXRfaW50ZXJydXB0X2NmZyhzdHJ1Y3QgaGluaWNfaHdkZXYgKmh3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy04OTYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmM6ODk3OiAqIGhpbmljX2luaXRfaHdkZXYgLSBJbml0aWFsaXplIHRoZSBOSUMgSFdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy04OTgtICogQHBkZXY6IHRoZSBOSUMgcGNpIGRldmljZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy05MDQtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jOjkwNTpzdHJ1Y3QgaGluaWNfaHdkZXYgKmhpbmljX2luaXRfaHdkZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jLTkwNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oPTYyOT12b2lkIGhpbmljX2h3ZGV2X2lmZG93bihzdHJ1Y3QgaGluaWNfaHdkZXYgKmh3ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaC02MzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2Lmg6NjMxOnN0cnVjdCBoaW5pY19od2RldiAqaGluaWNfaW5pdF9od2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGRldmxpbmsgKmRldmxpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oLTYzMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTExNjA9c3RhdGljIGludCBuaWNfZGV2X2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxMTc2Olx0aHdkZXYgPSBoaW5pY19pbml0X2h3ZGV2KHBkZXYsIGRldmxpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xMTc3LVx0aWYgKElTX0VSUihod2RldikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3MTEKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGFjY291bnQ6CgoqKkRpdmluZyBpbnRvIGhpbmljXF9pbml0XF9od2RldioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhpcyBgaGluaWNfaW5pdF9od2RldmAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGFzc2VzcyBpdHMgc2NvcGUuIElzIHRoaXMgYSB0b3AtbGV2ZWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBkZWVwZXIgaW4gdGhlIGRyaXZlciBzdGFjaz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSYjMzk7bSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgdGFyZ2V0IGhhcmR3YXJlIOKAkyB0aGUgc3BlY2lmaWMgTklDIG1vZGVsLCB0aGUgaW50ZW5kZWQgb3BlcmF0aW5nIGVudmlyb25tZW50LCBhbmQgd2hhdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS4gS25vd2luZyB0aGUgaGFyZHdhcmUgaXMga2V5LgoKTXkgZm9jdXMgaXMgc2hpZnRpbmcgdG8gaG93IGl0IGhhbmRsZXMgaGFyZHdhcmUgcmVzb3VyY2VzLiBEb2VzIGl0IGNhbGwgZnVuY3Rpb25zIHRvIG1hcCBtZW1vcnksIHJlcXVlc3QgaW50ZXJydXB0cywgb3IgbWFuYWdlIERNQSBjaGFubmVscz8gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgY29uZmxpY3RzIOKAkyBkb2VzIGl0IGNoZWNrIGZvciByZXNvdXJjZSBhdmFpbGFiaWxpdHkgYmVmb3JlIGF0dGVtcHRpbmcgdG8gYWxsb2NhdGUgdGhlbT8gQXJlIHRoZXJlIGFueSBlcnJvciBoYW5kbGluZyBwYXRocz8gSSYjMzk7bGwgYmUgc2NydXRpbml6aW5nIHRoZSByZXR1cm4gY29kZXMgYW5kIGVycm9yIG1lc3NhZ2VzLCBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2Ygd2Vha25lc3Mgb3Igb3Bwb3J0dW5pdGllcyBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuCgpJJiMzOTttIGFsc28gcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGl0IGFjY2VwdHMuIEFyZSB0aGVzZSBoYXJkY29kZWQsIG9yIGR5bmFtaWNhbGx5IGRlcml2ZWQgZnJvbSB0aGUgcGxhdGZvcm0/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgbGlrZSByZWdpc3RlciBhY2Nlc3MgcHJvdGVjdGlvbnMsIG9yIHBvdGVudGlhbCBmb3IgYnVmZmVyIG92ZXJmbG93cz8gSG93IGRvZXMgaXQgaW50ZWdyYXRlIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlciwgbGlrZSB0aGUgTklDJiMzOTtzIGZpcm13YXJlIGludGVyZmFjZSBvciB0aGUgbmV0d29yayBzdGFjayBpdHNlbGY/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuIExldCYjMzk7cyBzZWUgaG93IGl0IGdvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTA1Olx0c3RydWN0IGhpbmljX2h3ZGV2ICpoaW5pY19pbml0X2h3ZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluaylcbiA5MDY6XHR7XG4gOTA3Olx0XHRzdHJ1Y3QgaGluaWNfcGZod2RldiAqcGZod2RldjtcbiA5MDg6XHRcdHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXY7XG4gOTA5Olx0XHRzdHJ1Y3QgaGluaWNfaHdpZiAqaHdpZjtcbiA5MTA6XHRcdGludCBlcnIsIG51bV9hZXFzO1xuIDkxMTpcdFxuIDkxMjpcdFx0aHdpZiA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpod2lmKSwgR0ZQX0tFUk5FTCk7XG4gOTEzOlx0XHRpZiAoIWh3aWYpXG4gOTE0Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIDkxNTpcdFxuIDkxNjpcdFx0ZXJyID0gaGluaWNfaW5pdF9od2lmKGh3aWYsIHBkZXYpO1xuIDkxNzpcdFx0aWYgKGVycikge1xuIDkxODpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdCBIVyBpbnRlcmZhY2VcXG5cJiMzNDspO1xuIDkxOTpcdFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDkyMDpcdFx0fVxuIDkyMTpcdFxuIDkyMjpcdFx0cGZod2RldiA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpwZmh3ZGV2KSwgR0ZQX0tFUk5FTCk7XG4gOTIzOlx0XHRpZiAoIXBmaHdkZXYpIHtcbiA5MjQ6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA5MjU6XHRcdFx0Z290byBlcnJfcGZod2Rldl9hbGxvYztcbiA5MjY6XHRcdH1cbiA5Mjc6XHRcbiA5Mjg6XHRcdGh3ZGV2ID0gXHUwMDI2cGZod2Rldi1cdTAwM2Vod2RldjtcbiA5Mjk6XHRcdGh3ZGV2LVx1MDAzZWh3aWYgPSBod2lmO1xuIDkzMDpcdFx0aHdkZXYtXHUwMDNlZGV2bGlua19kZXYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7XG4gOTMxOlx0XHRod2Rldi1cdTAwM2VkZXZsaW5rX2Rldi1cdTAwM2Vod2RldiA9IGh3ZGV2O1xuIDkzMjpcdFxuIDkzMzpcdFx0ZXJyID0gaW5pdF9tc2l4KGh3ZGV2KTtcbiA5MzQ6XHRcdGlmIChlcnIpIHtcbiA5MzU6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgbXNpeFxcblwmIzM0Oyk7XG4gOTM2Olx0XHRcdGdvdG8gZXJyX2luaXRfbXNpeDtcbiA5Mzc6XHRcdH1cbiA5Mzg6XHRcbiA5Mzk6XHRcdGVyciA9IHdhaXRfZm9yX291dGJvdW5kX3N0YXRlKGh3ZGV2KTtcbiA5NDA6XHRcdGlmIChlcnIpIHtcbiA5NDE6XHRcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O291dGJvdW5kIC0gZGlzYWJsZWQsIHRyeSBhZ2FpblxcblwmIzM0Oyk7XG4gOTQyOlx0XHRcdGhpbmljX291dGJvdW5kX3N0YXRlX3NldChod2lmLCBISU5JQ19PVVRCT1VORF9FTkFCTEUpO1xuIDk0MzpcdFx0fVxuIDk0NDpcdFxuIDk0NTpcdFx0bnVtX2FlcXMgPSBISU5JQ19IV0lGX05VTV9BRVFTKGh3aWYpO1xuIDk0NjpcdFxuIDk0NzpcdFx0ZXJyID0gaGluaWNfYWVxc19pbml0KFx1MDAyNmh3ZGV2LVx1MDAzZWFlcXMsIGh3aWYsIG51bV9hZXFzLFxuIDk0ODpcdFx0XHRcdCAgICAgIEhJTklDX0RFRkFVTFRfQUVRX0xFTiwgSElOSUNfRVFfUEFHRV9TSVpFLFxuIDk0OTpcdFx0XHRcdCAgICAgIGh3ZGV2LVx1MDAzZW1zaXhfZW50cmllcyk7XG4gOTUwOlx0XHRpZiAoZXJyKSB7XG4gOTUxOlx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBpbml0IGFzeW5jIGV2ZW50IHF1ZXVlc1xcblwmIzM0Oyk7XG4gOTUyOlx0XHRcdGdvdG8gZXJyX2FlcXNfaW5pdDtcbiA5NTM6XHRcdH1cbiA5NTQ6XHRcbiA5NTU6XHRcdGVyciA9IGluaXRfcGZod2RldihwZmh3ZGV2KTtcbiA5NTY6XHRcdGlmIChlcnIpIHtcbiA5NTc6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgUEYgSFcgZGV2aWNlXFxuXCYjMzQ7KTtcbiA5NTg6XHRcdFx0Z290byBlcnJfaW5pdF9wZmh3ZGV2O1xuIDk1OTpcdFx0fVxuIDk2MDpcdFxuIDk2MTpcdFx0ZXJyID0gaGluaWNfbDJuaWNfcmVzZXQoaHdkZXYpO1xuIDk2MjpcdFx0aWYgKGVycilcbiA5NjM6XHRcdFx0Z290byBlcnJfbDJuaWNfcmVzZXQ7XG4gOTY0Olx0XG4gOTY1Olx0XHRlcnIgPSBnZXRfZGV2X2NhcChod2Rldik7XG4gOTY2Olx0XHRpZiAoZXJyKSB7XG4gOTY3Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBnZXQgZGV2aWNlIGNhcGFiaWxpdGllc1xcblwmIzM0Oyk7XG4gOTY4Olx0XHRcdGdvdG8gZXJyX2Rldl9jYXA7XG4gOTY5Olx0XHR9XG4gOTcwOlx0XG4gOTcxOlx0XHRtdXRleF9pbml0KFx1MDAyNmh3ZGV2LVx1MDAzZWZ1bmNfdG9faW8ubmljX2NmZy5jZmdfbXV0ZXgpO1xuIDk3MjpcdFxuIDk3MzpcdFx0ZXJyID0gaGluaWNfdmZfZnVuY19pbml0KGh3ZGV2KTtcbiA5NzQ6XHRcdGlmIChlcnIpIHtcbiA5NzU6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgbmljIG1ib3hcXG5cJiMzNDspO1xuIDk3NjpcdFx0XHRnb3RvIGVycl92Zl9mdW5jX2luaXQ7XG4gOTc3Olx0XHR9XG4gOTc4Olx0XG4gOTc5Olx0XHRlcnIgPSBpbml0X2Z3X2N0eHQoaHdkZXYpO1xuIDk4MDpcdFx0aWYgKGVycikge1xuIDk4MTpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdCBmdW5jdGlvbiB0YWJsZVxcblwmIzM0Oyk7XG4gOTgyOlx0XHRcdGdvdG8gZXJyX2luaXRfZndfY3R4dDtcbiA5ODM6XHRcdH1cbiA5ODQ6XHRcbiA5ODU6XHRcdGVyciA9IHNldF9yZXNvdXJjZXNfc3RhdGUoaHdkZXYsIEhJTklDX1JFU19BQ1RJVkUpO1xuIDk4NjpcdFx0aWYgKGVycikge1xuIDk4NzpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gc2V0IHJlc291cmNlcyBzdGF0ZVxcblwmIzM0Oyk7XG4gOTg4Olx0XHRcdGdvdG8gZXJyX3Jlc291cmNlc19zdGF0ZTtcbiA5ODk6XHRcdH1cbiA5OTA6XHRcbiA5OTE6XHRcdHJldHVybiBod2RldjtcbiA5OTI6XHRcbiA5OTM6XHRlcnJfcmVzb3VyY2VzX3N0YXRlOlxuIDk5NDpcdGVycl9pbml0X2Z3X2N0eHQ6XG4gOTk1Olx0XHRoaW5pY192Zl9mdW5jX2ZyZWUoaHdkZXYpO1xuIDk5NjpcdGVycl92Zl9mdW5jX2luaXQ6XG4gOTk3Olx0ZXJyX2wybmljX3Jlc2V0OlxuIDk5ODpcdGVycl9kZXZfY2FwOlxuIDk5OTpcdFx0ZnJlZV9wZmh3ZGV2KHBmaHdkZXYpO1xuMTAwMDpcdFxuMTAwMTpcdGVycl9pbml0X3BmaHdkZXY6XG4xMDAyOlx0XHRoaW5pY19hZXFzX2ZyZWUoXHUwMDI2aHdkZXYtXHUwMDNlYWVxcyk7XG4xMDAzOlx0XG4xMDA0Olx0ZXJyX2FlcXNfaW5pdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2NDgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgSGlOSUMgRGV2bGluayBGbGFzaCBVcGRhdGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgYXJvdW5kIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U6IGBoaW5pY19pbml0X2h3aWZgLCBgaW5pdF9tc2l4YCwgYHdhaXRfZm9yX291dGJvdW5kX3N0YXRlYCwgYGhpbmljX2FlcXNfaW5pdGAsIGBpbml0X3BmaHdkZXZgLCBgaGluaWNfbDJuaWNfcmVzZXRgLCBgZ2V0X2Rldl9jYXBgLCBgaGluaWNfdmZfZnVuY19pbml0YCwgYGluaXRfZndfY3R4dGAsIGBzZXRfcmVzb3VyY2VzX3N0YXRlYC4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIGludGVyYWN0aW5nIHdpdGggUENJIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzOyB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LgoKR2l2ZW4gdGhhdCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBTeXprYWxsZXIgYW5kIGl0cyB2UENJIGZ1enplci4gSWYgaXQmIzM5O3MgaW50ZXJjZXB0aW5nIHRob3NlIHJlYWRzIGFuZCB3cml0ZXMsIGl0IG9wZW5zIGEgaHVnZSBhdHRhY2sgc3VyZmFjZS4gQ291bGQgaXQgcHJvYmUgdGhpcyBkZXZpY2UgZWZmZWN0aXZlbHk/IEFuZCBpZiBzbywgY2FuIGl0IHRoZW4gcmVhY2ggdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlPwoKQWgsIHJpZ2h0LCB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGUgaXMgdHJpZ2dlcmVkIGJ5IG5ldGxpbmsuIFNvLCB0aGF0JiMzOTtzIHRoZSB2ZWN0b3IuIEFuZCB0aGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYGNoZWNrX2ltYWdlX3ZhbGlkYCB3aXRoaW4gYGhpbmljX2RldmxpbmsuY2AuIFRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBoaW5pY19maXJtd2FyZV91cGRhdGVgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgIOKAkyB0aGUgYC5mbGFzaF91cGRhdGVgIGNhbGxiYWNrIGZvciBkZXZsaW5rLgoKU28sIFN5emthbGxlciAqc2hvdWxkKiBiZSBhYmxlIHRvIHJlYWNoIHRoaXMgYnkgY3JhZnRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB0byB1cGRhdGUgdGhlIGZpcm13YXJlLiBBbmQgdGhlIGZpcm13YXJlIGRhdGEgaXRzZWxmLCB0aGF0JiMzOTtzIGVpdGhlciB1c2VyLXByb3ZpZGVkIChvciBsb2FkZWQgYnkgYHJlcXVlc3RfZmlybXdhcmVgKS4KCldhaXQsIHRoZSBmdW5jdGlvbiBzaWduYXR1cmU6IGBoaW5pY19maXJtd2FyZV91cGRhdGVgIHRha2VzIGBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3YC4gTm93LCB3aGVyZSBkb2VzIGBmd2AgY29tZSBmcm9tPyBSaWdodCwgYGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zYCBoYXMgYHBhcmFtcy0mZ3Q7ZndgLgoKVGhlIHVzZXIgaXMgcHJvdmlkaW5nIHRoZSBmaXJtd2FyZSBmaWxlbmFtZSwgYW5kIHRoZSBrZXJuZWwgbG9hZHMgaXQgdmlhIGByZXF1ZXN0X2Zpcm13YXJlYC4gT3IgdGhlIHVzZXIgY291bGQgYnlwYXNzIHRoYXQgYW5kIGZlZWQgdGhlIGRhdGEgZGlyZWN0bHkgdGhyb3VnaCBuZXRsaW5rOyB0aGF0JiMzOTtzIHdoYXQgdGhlIGRldmxpbmsgYWxsb3dzLiBUaGlzIGlzIHZlcnkgZ29vZCBiZWNhdXNlIHN5emthbGxlciYjMzk7cyBmaXJtd2FyZSBmdXp6ZXIgY2FuIGludGVyY2VwdCBgcmVxdWVzdF9maXJtd2FyZWAuIFRoaXMgbWFrZXMgdGhpcyBjb2RlIHBhdGggKmV4dHJlbWVseSogZnV6emFibGUsIGFzIFN5emthbGxlciBjYW4gcHJvdmlkZSB0aGUgZnV6emVkIGRhdGEuCgpHaXZlbiB0aGF0LCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCB0YXJnZXQuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY2hlY2tfaW1hZ2VfdmFsaWRgIGlzIHJlYWNoYWJsZSwgYnV0IHRoZSBwaWVjZXMgYXJlIGFsbCB0aGVyZS4gVGhpcyBpcyBhIHZlcnkgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfaW1hZ2VfdmFsaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM9MjM9c3RhdGljIGJvb2wgaGluaWNfZndfc2VjdGlvbl92YWxpZCh1MzIgZndfbGVuLCB1MzIgb2Zmc2V0LCB1MzIgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjI4OnN0YXRpYyBib29sIGNoZWNrX2ltYWdlX3ZhbGlkKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsIGNvbnN0IHU4ICpidWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI5LVx0XHRcdCAgICAgIHNpemVfdCBpbWFnZV9zaXplLCBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTI4Mz1zdGF0aWMgaW50IGhpbmljX2Zpcm13YXJlX3VwZGF0ZShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyOTI6XHRpZiAoIWNoZWNrX2ltYWdlX3ZhbGlkKHByaXYsIGZ3LVx1MDAzZWRhdGEsIGZ3LVx1MDAzZXNpemUsIFx1MDAyNmhvc3RfaW1hZ2UpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI5My1cdCAgICAhY2hlY2tfaW1hZ2VfaW50ZWdyaXR5KHByaXYsIFx1MDAyNmhvc3RfaW1hZ2UsIEZXX1VQREFURV9DT0xEKSB8fFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTAxMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaXJtd2FyZSBWdWxuZXJhYmlsaXR5IEZpeCoqCgpPa2F5LCBzbyBgY2hlY2tfaW1hZ2VfdmFsaWRgICppcyogY2FsbGVkIHdpdGhpbiBgaGluaWNfZmlybXdhcmVfdXBkYXRlYCwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBUaGlzIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBvciBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYC4gVGhlIGRpZmYgcmVhbGx5IGhpZ2hsaWdodHMgdGhlIGlzc3VlOiB0aGV5JiMzOTtyZSBjaGFuZ2luZyB0aGUgbGVuZ3RoIGNoZWNrcywgd2hpY2ggaXMgYSBjb21tb24gYXJlYSBmb3IgdGhlc2Uga2luZHMgb2YgcHJvYmxlbXMuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwcmV0dHkgc3VzcGVjdDoKCmBgYGMKLQlpZiAobGVuICE9IGZ3X2ltYWdlLSZndDtmd19sZW4gfHwKLQkgICAgKGZ3X2ltYWdlLSZndDtmd19sZW4gJiM0MzsgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSAhPSBpbWFnZV9zaXplKSB7CmBgYAoKQW5kIGl0IGxvb2tzIGxpa2UgdGhlIGZpeCBjb3JyZWN0cyBpdCB0bzoKCmBgYGMKJiM0MzsJaWYgKGZ3X2ltYWdlLSZndDtmd19sZW4gIT0gaW1hZ2Vfc2l6ZSAtIFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkgewpgYGAKClRoYXQmIzM5O3MgYSBtdWNoIG1vcmUgcm9idXN0IGNoZWNrLiBBbmQgdGhlbiB0aGVyZSYjMzk7cyBhbHNvIHRoZSBhZGRpdGlvbiBvZiB0aGlzIHNhZmV0eSBjaGVjayB3aXRoaW4gdGhlIGxvb3A6CgpgYGBjCiYjNDM7CQlpZiAoIWhpbmljX2Z3X3NlY3Rpb25fdmFsaWQoZndfaW1hZ2UtJmd0O2Z3X2xlbiwKJiM0MzsJCQkJCSAgICBzZWN0aW9uLSZndDtmd19zZWN0aW9uX29mZnNldCwKJiM0MzsJCQkJCSAgICBzZWN0aW9uLSZndDtmd19zZWN0aW9uX2xlbikpIHsKYGBgCgpZZWFoLCB0aGF0IGBoaW5pY19md19zZWN0aW9uX3ZhbGlkYCBjYWxsIGlzIGRlZmluaXRlbHkgYSBnb29kIGFkZGl0aW9uLCBoZWxwaW5nIGVuc3VyZSBzZWN0aW9uIGRhdGEgaXMgd2l0aGluIGV4cGVjdGVkIGJvdW5kcy4gQ2xhc3NpYyBmaXJtd2FyZSBwYXJzaW5nIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbi4gR2l2ZW4gdGhhdCBzeXprYWxsZXIgY2FuIGZ1enogZmlybXdhcmUgZmlsZXMgYW5kIGludGVyYWN0IHdpdGggZGV2bGluaywgdGhpcyBpcyBhYnNvbHV0ZWx5IHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gV2UgY2FuIGxpa2VseSBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgYnVncyBoZXJlLgoKUmlnaHQsIHNvIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gSSYjMzk7bGwgZm9jdXMgb24gdGhlc2U6CgoqICAgYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYAoqICAgYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWAKKiAgIGBjaGVja19pbWFnZV92YWxpZGAKKiAgIGBjaGVja19pbWFnZV9pbnRlZ3JpdHlgCiogICBgaGluaWNfZmxhc2hfZndgCgpBbmQgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgZHJpdmVyIGNvbmZpZyBpcyBpbiBwbGFjZSB0byBhbGxvdyB0aGUgZnV6emluZyB0byBiZSBlZmZlY3RpdmUuIEFoLCBpdCYjMzk7cyBgQ09ORklHX0hJTklDYCwgZ29vZCwgc28gd2UganVzdCBuZWVkIHRvIGVuc3VyZSB0aGF0JiMzOTtzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBISU5JQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjY6Y29uZmlnIEhJTklDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7SHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTg5NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkmIzM5O3ZlIGdvdCBteSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gc2V0LCBidXQgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2sgZm9yIGFueSBvdmVybG9va2VkIG9yIHNlY29uZGFyeSBjb25maWd1cmF0aW9ucywgZXh0ZXJuYWwgc291cmNlcywgb3Igb3ZlcnJpZGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7SXMgdGhlcmUgYW5vdGhlciBjb25maWcgZmlsZSwgYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQgdmFyaWFibGUsIG9yIHNvbWUgYXV0b21hdGVkIHByb2Nlc3MgSSYjMzk7dmUgZm9yZ290dGVuIGFib3V0IHRoYXQgY291bGQgYmUgYWZmZWN0aW5nIHRoZXNlIHNldHRpbmdzPyYjMzQ7IEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc2FuaXR5IGNoZWNrOiBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHRoZSBvbmx5IG9uZSBpbiBwbGF5LiBJIGRvbiYjMzk7dCB3YW50IHRvIHdhc3RlIHRpbWUgY2hhc2luZyBnaG9zdHMuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc3VycHJpc2UgcGFyYW1ldGVycyBvciBjb25mbGljdGluZyBzZXR0aW5ncyBiZWZvcmUgSSBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIEh1YXdlaSBkcml2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgSElOSUNcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O0h1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gKFBDSV9NU0kgXHUwMDI2XHUwMDI2IChYODYgfHwgQVJNNjQpKVxuICAgOTpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEhpTklDIFBDSUUgRXRoZXJuZXQgY2FyZHMuXG4gIDEyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgcGFydCBvZiB0aGUga2VybmVsLCBjaG9vc2UgWSBoZXJlLlxuICAxMzpcdFx0ICBJZiB1bnN1cmUsIGNob29zZSBOLlxuICAxNDpcdFx0ICBUaGUgZGVmYXVsdCBpcyBjb21waWxlZCBhcyBtb2R1bGUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzE1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSElOSUMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgYENPTkZJR19ISU5JQ2Agb3B0aW9uIGlzIHRoZSBjZW50cmFsIHBpZWNlIGhlcmUuIEl0JiMzOTtzIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gaXRlbSB3ZSYjMzk7cmUgY29uY2VybmVkIHdpdGgsIGFuZCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBkZXBlbmRpbmcgb24gYFBDSV9NU0lgIGFuZCBlaXRoZXIgYW4gYFg4NmAgb3IgYEFSTTY0YCBhcmNoaXRlY3R1cmUuIEl0IGFsc28gYXV0b21hdGljYWxseSBlbmFibGVzIGBORVRfREVWTElOS2AsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBtb2Rlcm4gbmV0d29yayBkZXZpY2VzLCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3MgbWVzc2luZyB3aXRoIGRldmxpbmsgb3IgZmlybXdhcmUgZnVuY3Rpb25hbGl0eS4gTm9wZSwgYENPTkZJR19ISU5JQ2AgdGFrZXMgY2FyZSBvZiBldmVyeXRoaW5nLgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUga2V5IHN5bWJvbHMgcmVsYXRlZCB0byB0aGUgZmxhc2hpbmcgYW5kIGZpcm13YXJlIHVwZGF0ZSBwcm9jZXNzZXM6IGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAsIGBoaW5pY19maXJtd2FyZV91cGRhdGVgLCBgY2hlY2tfaW1hZ2VfdmFsaWRgLCBgY2hlY2tfaW1hZ2VfaW50ZWdyaXR5YCwgYW5kIGBoaW5pY19mbGFzaF9md2AuIFRoZXNlIGFyZSB0aGUgYWN0dWFsIGZ1bmN0aW9ucyB0aGF0IHdpbGwgYmUgZG9pbmcgdGhlIGhlYXZ5IGxpZnRpbmcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAgaXMgbmFtZWQgY29ycmVjdGx5LCBhcyBkZXZsaW5rIGFuZCBmaXJtd2FyZSB1cGRhdGUgZnVuY3Rpb25hbGl0aWVzIGFyZSBub3JtYWxseSBkaXN0aW5jdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGluaWNfZGV2bGlua19mbGFzaF91cGRhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM9MjgzPXN0YXRpYyBpbnQgaGluaWNfZmlybXdhcmVfdXBkYXRlKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjMyMjpzdGF0aWMgaW50IGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz0zMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBoaW5pY19kZXZsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzMyOlx0LmZsYXNoX3VwZGF0ZSA9IGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzMtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwMjgKCQkJCQkJCW91dHB1dDogMTgxCgkJCQkJCQl0aG91Z2h0czogMzM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhpbmljIERyaXZlciBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAsIHJpZ2h0PyBMZXQgbWUgc2VlIHdoYXQgZWxzZSBoYXMgY2hhbmdlZCBvciBpcyByZWxhdGVkLiBBaCwgYGhpbmljX2Z3X3NlY3Rpb25fdmFsaWRgIGlzIG5ldy4gU28sIHdlJiMzOTt2ZSBnb3Q6CgoqICAgYGhpbmljX2Z3X3NlY3Rpb25fdmFsaWRgCiogICBgY2hlY2tfaW1hZ2VfdmFsaWRgCiogICBgaGluaWNfZmlybXdhcmVfdXBkYXRlYAoqICAgYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYAoKQW55dGhpbmcgZWxzZT8KClJpZ2h0LCB0aGUgdnVsbmVyYWJpbGl0eSB3YXMgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBhZGRzIGJvdW5kcyBjaGVja2luZyDigJMgcHJldmVudGluZyBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGl0JiMzOTtzIHBhcnNpbmcgdGhlIGZpcm13YXJlIGltYWdlLiBZZXAsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBmdW5jdGlvbmFsIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGUuCgpBbHJpZ2h0LCBsZXQgbWUgc3VtbWFyaXplIHRoaXMgZm9yIGZ1enppbmcgcHVycG9zZXMuIFdlJiMzOTt2ZSBnb3QgYSBzb2xpZCB0YXJnZXQgaGVyZS4KCiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqIC0gRGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LgoqICAgKipGb2N1c1N5bWJvbHM6KiogSSB3YW50IHRvIHRhcmdldCB0aGVzZSBzeW1ib2xzOgoKICAgICogICBgaGluaWNfZndfc2VjdGlvbl92YWxpZGAKICAgICogICBgY2hlY2tfaW1hZ2VfdmFsaWRgCiAgICAqICAgYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWAKICAgICogICBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogV2UgbmVlZCBgSElOSUNgIGVuYWJsZWQsIG9idmlvdXNseS4KCioqUmVhc29uaW5nOioqCgpUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBIaW5pYyBkcml2ZXImIzM5O3MgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4gVGhlIHZ1bG5lcmFiaWxpdHkgcmVzaWRlcyBpbiBgY2hlY2tfaW1hZ2VfdmFsaWRgLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBgZGV2bGluayBmbGFzaCB1cGRhdGVgIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAuIFN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMg4oCTIHZQQ0ksIGZ1enogdGhlIFBDSSBkZXZpY2UgcHJvYmUsIHRoZW4gdXNlIGEgZGV2bGluayBuZXRsaW5rIG1lc3NhZ2UgdG8gc2VuZCBhIGZ1enplZCBmaXJtd2FyZSBpbWFnZS4gU2ltcGxlIGVub3VnaCB0byB0cmlnZ2VyLgoKTGV0JiMzOTtzIGNhbGwgdGhlIHNldC1yZXN1bHRzIGZ1bmN0aW9uIGFuZCBnZXQgdGhpcyBtb3ZpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISU5JQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpbmljX2Z3X3NlY3Rpb25fdmFsaWQmIzM0OywKICAgICYjMzQ7Y2hlY2tfaW1hZ2VfdmFsaWQmIzM0OywKICAgICYjMzQ7aGluaWNfZmlybXdhcmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2hpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISU5JQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpbmljX2Z3X3NlY3Rpb25fdmFsaWQmIzM0OywKICAgICYjMzQ7Y2hlY2tfaW1hZ2VfdmFsaWQmIzM0OywKICAgICYjMzQ7aGluaWNfZmlybXdhcmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2hpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6MjEuNzEyNjE3Mjc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNjY0NTIwMTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJTklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGluaWNfZndfc2VjdGlvbl92YWxpZFwiLFxuICAgIFwiY2hlY2tfaW1hZ2VfdmFsaWRcIixcbiAgICBcImhpbmljX2Zpcm13YXJlX3VwZGF0ZVwiLFxuICAgIFwiaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBvZiB0aGUgSHVhd2VpIEludGVsbGlnZW50IE5JQyAoaGluaWMpIGRyaXZlci4gVGhlIHZ1bG5lcmFiaWxpdHkgaXMgbG9jYXRlZCBpbiBgY2hlY2tfaW1hZ2VfdmFsaWRgLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBkZXZsaW5rIGZsYXNoIHVwZGF0ZSBtZWNoYW5pc20gKGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWApLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBieSBlbXVsYXRpbmcgdGhlIFBDSSBkZXZpY2UgdXNpbmcgaXRzIHZQQ0kgZnV6emVyIHRvIHBhc3MgdGhlIHByb2JlIHBoYXNlLCBhbmQgdGhlbiBzZW5kaW5nIGEgZGV2bGluayBuZXRsaW5rIG1lc3NhZ2Ugd2l0aCBhIGZ1enplZCBmaXJtd2FyZSBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6MjEuNzEyNjM5NDY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzgzMzM5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MmFkMDMyZDBjMjc5YWZhNmNmNWZmMDdlYzVlNTUzMjgxYTA1OGZiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMTM6MDc6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcXG5pbmRleCBjOTc3YzQzZTVkNWE3MC4uMGMwNmZiZGFkYWQzNzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcXG5AQCAtMjAsMTQgKzIwLDI1IEBAXFxuICNpbmNsdWRlIFxcXCJoaW5pY19kZXZsaW5rLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJoaW5pY19od19kZXYuaFxcXCJcXG4gXFxuK3N0YXRpYyBib29sIGhpbmljX2Z3X3NlY3Rpb25fdmFsaWQodTMyIGZ3X2xlbiwgdTMyIG9mZnNldCwgdTMyIGxlbilcXG4re1xcbitcXHRyZXR1cm4gb2Zmc2V0IFxcdTAwM2M9IGZ3X2xlbiBcXHUwMDI2XFx1MDAyNiBsZW4gXFx1MDAzYz0gZndfbGVuIC0gb2Zmc2V0O1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLFxcbi1cXHRcXHRcXHQgICAgICB1MzIgaW1hZ2Vfc2l6ZSwgc3RydWN0IGhvc3RfaW1hZ2Vfc3QgKmhvc3RfaW1hZ2UpXFxuK1xcdFxcdFxcdCAgICAgIHNpemVfdCBpbWFnZV9zaXplLCBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSlcXG4ge1xcbi1cXHRzdHJ1Y3QgZndfaW1hZ2Vfc3QgKmZ3X2ltYWdlID0gTlVMTDtcXG4rXFx0Y29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICpmd19pbWFnZTtcXG4gXFx0dTMyIGxlbiA9IDA7XFxuIFxcdHUzMiBpO1xcbiBcXG4tXFx0ZndfaW1hZ2UgPSAoc3RydWN0IGZ3X2ltYWdlX3N0ICopYnVmO1xcbitcXHRpZiAoaW1hZ2Vfc2l6ZSBcXHUwMDNjIFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2Vod2Rldi1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXFwiV3JvbmcgaW1hZ2Ugc2l6ZSByZWFkIGZyb20gZmlsZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0ZndfaW1hZ2UgPSAoY29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICopYnVmO1xcbiBcXG4gXFx0aWYgKGZ3X2ltYWdlLVxcdTAwM2Vmd19tYWdpYyAhPSBISU5JQ19NQUdJQ19OVU0pIHtcXG4gXFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlaHdkZXYtXFx1MDAzZWh3aWYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcIldyb25nIGZ3X21hZ2ljIHJlYWQgZnJvbSBmaWxlLCBmd19tYWdpYzogMHgleFxcXFxuXFxcIixcXG5AQCAtNDEsMTQgKzUyLDQ0IEBAIHN0YXRpYyBib29sIGNoZWNrX2ltYWdlX3ZhbGlkKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsIGNvbnN0IHU4ICpidWYsXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKGZ3X2ltYWdlLVxcdTAwM2Vmd19sZW4gIT0gaW1hZ2Vfc2l6ZSAtIFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2Vod2Rldi1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXFwiV3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZndfaW1hZ2UtXFx1MDAzZWZ3X2luZm8uZndfc2VjdGlvbl9jbnQ7IGkrKykge1xcbi1cXHRcXHRsZW4gKz0gZndfaW1hZ2UtXFx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXS5md19zZWN0aW9uX2xlbjtcXG4tXFx0XFx0aG9zdF9pbWFnZS1cXHUwMDNlaW1hZ2Vfc2VjdGlvbl9pbmZvW2ldID0gZndfaW1hZ2UtXFx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXTtcXG4rXFx0XFx0Y29uc3Qgc3RydWN0IGZ3X3NlY3Rpb25faW5mb19zdCAqc2VjdGlvbiA9XFxuK1xcdFxcdFxcdFxcdTAwMjZmd19pbWFnZS1cXHUwMDNlZndfc2VjdGlvbl9pbmZvW2ldO1xcbitcXG4rXFx0XFx0aWYgKHNlY3Rpb24tXFx1MDAzZWZ3X3NlY3Rpb25fdHlwZSBcXHUwMDNlPSBGSUxFX1RZUEVfVE9UQUxfTlVNKSB7XFxuK1xcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdFxcXCJXcm9uZyBzZWN0aW9uIHR5cGUgcmVhZCBmcm9tIGZpbGU6ICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRzZWN0aW9uLVxcdTAwM2Vmd19zZWN0aW9uX3R5cGUpO1xcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmICghaGluaWNfZndfc2VjdGlvbl92YWxpZChmd19pbWFnZS1cXHUwMDNlZndfbGVuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgc2VjdGlvbi1cXHUwMDNlZndfc2VjdGlvbl9vZmZzZXQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBzZWN0aW9uLVxcdTAwM2Vmd19zZWN0aW9uX2xlbikpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlaHdkZXYtXFx1MDAzZWh3aWYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFxcIldyb25nIHNlY3Rpb24gc2l6ZSByZWFkIGZyb20gZmlsZVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0aWYgKHNlY3Rpb24tXFx1MDAzZWZ3X3NlY3Rpb25fbGVuIFxcdTAwM2UgZndfaW1hZ2UtXFx1MDAzZWZ3X2xlbiAtIGxlbikge1xcbitcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2Vod2Rldi1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXFwiV3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRsZW4gKz0gc2VjdGlvbi1cXHUwMDNlZndfc2VjdGlvbl9sZW47XFxuK1xcdFxcdGhvc3RfaW1hZ2UtXFx1MDAzZWltYWdlX3NlY3Rpb25faW5mb1tpXSA9ICpzZWN0aW9uO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAobGVuICE9IGZ3X2ltYWdlLVxcdTAwM2Vmd19sZW4gfHxcXG4tXFx0ICAgIChmd19pbWFnZS1cXHUwMDNlZndfbGVuICsgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSAhPSBpbWFnZV9zaXplKSB7XFxuLVxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJXcm9uZyBkYXRhIHNpemUgcmVhZCBmcm9tIGZpbGVcXFxcblxcXCIpO1xcbitcXHRpZiAobGVuICE9IGZ3X2ltYWdlLVxcdTAwM2Vmd19sZW4pIHtcXG4rXFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlaHdkZXYtXFx1MDAzZWh3aWYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcIldyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6MjIuMTkxOTI4MDI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODMxODUxOTUwNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElOSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaW5pY19md19zZWN0aW9uX3ZhbGlkXCIsXG4gICAgXCJjaGVja19pbWFnZV92YWxpZFwiLFxuICAgIFwiaGluaWNfZmlybXdhcmVfdXBkYXRlXCIsXG4gICAgXCJoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDgyYWQwMzJkMGMyNzlhZmE2Y2Y1ZmYwN2VjNWU1NTMyODFhMDU4ZmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDEzOjA3OjIwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcbmluZGV4IGM5NzdjNDNlNWQ1YTcwLi4wYzA2ZmJkYWRhZDM3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcbkBAIC0yMCwxNCArMjAsMjUgQEBcbiAjaW5jbHVkZSBcImhpbmljX2RldmxpbmsuaFwiXG4gI2luY2x1ZGUgXCJoaW5pY19od19kZXYuaFwiXG4gXG4rc3RhdGljIGJvb2wgaGluaWNfZndfc2VjdGlvbl92YWxpZCh1MzIgZndfbGVuLCB1MzIgb2Zmc2V0LCB1MzIgbGVuKVxuK3tcbitcdHJldHVybiBvZmZzZXQgXHUwMDNjPSBmd19sZW4gXHUwMDI2XHUwMDI2IGxlbiBcdTAwM2M9IGZ3X2xlbiAtIG9mZnNldDtcbit9XG4rXG4gc3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfdmFsaWQoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiwgY29uc3QgdTggKmJ1Zixcbi1cdFx0XHQgICAgICB1MzIgaW1hZ2Vfc2l6ZSwgc3RydWN0IGhvc3RfaW1hZ2Vfc3QgKmhvc3RfaW1hZ2UpXG4rXHRcdFx0ICAgICAgc2l6ZV90IGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxuIHtcbi1cdHN0cnVjdCBmd19pbWFnZV9zdCAqZndfaW1hZ2UgPSBOVUxMO1xuK1x0Y29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICpmd19pbWFnZTtcbiBcdHUzMiBsZW4gPSAwO1xuIFx0dTMyIGk7XG4gXG4tXHRmd19pbWFnZSA9IChzdHJ1Y3QgZndfaW1hZ2Vfc3QgKilidWY7XG4rXHRpZiAoaW1hZ2Vfc2l6ZSBcdTAwM2MgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFwiV3JvbmcgaW1hZ2Ugc2l6ZSByZWFkIGZyb20gZmlsZVxcblwiKTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuK1x0ZndfaW1hZ2UgPSAoY29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICopYnVmO1xuIFxuIFx0aWYgKGZ3X2ltYWdlLVx1MDAzZWZ3X21hZ2ljICE9IEhJTklDX01BR0lDX05VTSkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCJXcm9uZyBmd19tYWdpYyByZWFkIGZyb20gZmlsZSwgZndfbWFnaWM6IDB4JXhcXG5cIixcbkBAIC00MSwxNCArNTIsNDQgQEAgc3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfdmFsaWQoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiwgY29uc3QgdTggKmJ1ZixcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuK1x0aWYgKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbiAhPSBpbWFnZV9zaXplIC0gVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFwiV3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCIpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBmd19pbWFnZS1cdTAwM2Vmd19pbmZvLmZ3X3NlY3Rpb25fY250OyBpKyspIHtcbi1cdFx0bGVuICs9IGZ3X2ltYWdlLVx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXS5md19zZWN0aW9uX2xlbjtcbi1cdFx0aG9zdF9pbWFnZS1cdTAwM2VpbWFnZV9zZWN0aW9uX2luZm9baV0gPSBmd19pbWFnZS1cdTAwM2Vmd19zZWN0aW9uX2luZm9baV07XG4rXHRcdGNvbnN0IHN0cnVjdCBmd19zZWN0aW9uX2luZm9fc3QgKnNlY3Rpb24gPVxuK1x0XHRcdFx1MDAyNmZ3X2ltYWdlLVx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXTtcbitcbitcdFx0aWYgKHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl90eXBlIFx1MDAzZT0gRklMRV9UWVBFX1RPVEFMX05VTSkge1xuK1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFx0XCJXcm9uZyBzZWN0aW9uIHR5cGUgcmVhZCBmcm9tIGZpbGU6ICV1XFxuXCIsXG4rXHRcdFx0XHRzZWN0aW9uLVx1MDAzZWZ3X3NlY3Rpb25fdHlwZSk7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4rXG4rXHRcdGlmICghaGluaWNfZndfc2VjdGlvbl92YWxpZChmd19pbWFnZS1cdTAwM2Vmd19sZW4sXG4rXHRcdFx0XHRcdCAgICBzZWN0aW9uLVx1MDAzZWZ3X3NlY3Rpb25fb2Zmc2V0LFxuK1x0XHRcdFx0XHQgICAgc2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX2xlbikpIHtcbitcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdFwiV3Jvbmcgc2VjdGlvbiBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCIpO1xuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0fVxuK1xuK1x0XHRpZiAoc2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX2xlbiBcdTAwM2UgZndfaW1hZ2UtXHUwMDNlZndfbGVuIC0gbGVuKSB7XG4rXHRcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHRcIldyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxcblwiKTtcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdH1cbitcbitcdFx0bGVuICs9IHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9sZW47XG4rXHRcdGhvc3RfaW1hZ2UtXHUwMDNlaW1hZ2Vfc2VjdGlvbl9pbmZvW2ldID0gKnNlY3Rpb247XG4gXHR9XG4gXG4tXHRpZiAobGVuICE9IGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbiB8fFxuLVx0ICAgIChmd19pbWFnZS1cdTAwM2Vmd19sZW4gKyBVUERBVEVGV19JTUFHRV9IRUFEX1NJWkUpICE9IGltYWdlX3NpemUpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwiV3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCIpO1xuK1x0aWYgKGxlbiAhPSBmd19pbWFnZS1cdTAwM2Vmd19sZW4pIHtcbitcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XCJXcm9uZyBkYXRhIHNpemUgcmVhZCBmcm9tIGZpbGVcXG5cIik7XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA3OjIyLjE5MTkzMDMwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MDk5OTA5NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEh1YXdlaSBOSUMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc29tZSBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBjaGVja19pbWFnZV92YWxpZGAgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIHNlbnNlIC0gdmFsaWRhdGluZyBmaXJtd2FyZSBpcyBhbHdheXMgYSBnb29kIHRoaW5nLiBUaGlzIGlzIGZvciB0aGUgSHVhd2VpIEludGVsbGlnZW50IE5JQywgb3IgYGhpbmljYCBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgaG93IGV4cG9zZWQgaXMgdGhpcyBkcml2ZXI/IEdpdmVuIHRoYXQgaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlciwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgbGlrZWx5IGlzIGl0IHRoYXQgd2UgY2FuIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFVzdWFsbHksIHRoZXNlIHNvcnRzIG9mIGRyaXZlcnMgYXJlIHNoaWVsZGVkIHVubGVzcyB5b3XigJl2ZSBnb3QgZWl0aGVyIGVtdWxhdGVkIGhhcmR3YXJlIG9yIGl0J3MgYSB2aXJ0dWFsIGRyaXZlciBpdHNlbGYuXG5cblJpZ2h0LCBsZXQncyBjb25maXJtLiBJcyB0aGlzIGFjdHVhbGx5IGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyPyBZZXAsIGl0IGlzLiBUaGUgSHVhd2VpIEludGVsbGlnZW50IE5JQyBpcyBhIFBDSWUgZGV2aWNlLCBzbyBpdOKAmXMgcGh5c2ljYWwgaGFyZHdhcmUuIE5vdywgY2FuIHRoaXMgdGhpbmcgKmJlKiBmdXp6ZWQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIgaXMgdGhlIGdvLXRvIGZvciBmdXp6aW5nLCBhbmQgaXQgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcyB1c2luZyB2UENJLCBidXQgcmVhbGlzdGljYWxseSwgbW9zdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzLCBlc3BlY2lhbGx5IG9uZXMgd2l0aG91dCByZWFkaWx5IGF2YWlsYWJsZSBlbXVsYXRpb24sIGFyZSBub3QgZGlyZWN0bHkgcmVhY2hhYmxlLiBCdXQsIHdhaXQuLi4gc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIFBDSSBmdXp6aW5nIGNhcGFiaWxpdHksIGJ1dCBpdOKAmXMgbm90IHJlYWxseSB0aGUgKm5vcm0qIHRvIHRhcmdldCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHVubGVzcyB0aGV5IGFyZSAqZXhwbGljaXRseSogZW11bGF0ZWQsIG9yIHdlIGNhbiB1c2Ugc29tZXRoaW5nIGxpa2UgVVNCIGZ1enppbmcsIHdoaWNoIGlzIGEgZGlmZmVyZW50IHJvdXRlLiBTbywgbGV0J3MgZXhwbG9yZSBpZiB0aGVyZSdzIGFueSBlbXVsYXRpb24gZm9yIGBoaW5pY2AgZmxvYXRpbmcgYXJvdW5kLiBJ4oCZbGwgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGBoaW5pY2AgYW5kIHNlZSB3aGF0IGNvbWVzIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6NDAuMjkxODQyMzUzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNTg3ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpbmljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4OTMyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfSElOSUMpICs9IGhpbmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGUtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NDpoaW5pYy15IDo9IGhpbmljX21haW4ubyBoaW5pY190eC5vIGhpbmljX3J4Lm8gaGluaWNfcG9ydC5vIGhpbmljX2h3X2Rldi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NTpcXHQgICBoaW5pY19od19pby5vIGhpbmljX2h3X3FwLm8gaGluaWNfaHdfY21kcS5vIGhpbmljX2h3X3dxLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZTo2OlxcdCAgIGhpbmljX2h3X21nbXQubyBoaW5pY19od19hcGlfY21kLm8gaGluaWNfaHdfZXFzLm8gaGluaWNfaHdfaWYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlOjc6XFx0ICAgaGluaWNfY29tbW9uLm8gaGluaWNfZXRodG9vbC5vIGhpbmljX2RldmxpbmsubyBoaW5pY19od19tYm94Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZTo4OlxcdCAgIGhpbmljX3NyaW92Lm8gaGluaWNfZGVidWdmcy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjExOiNpbmNsdWRlIFxcXCJoaW5pY19jb21tb24uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTEzLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzoxNDogKiBoaW5pY19jcHVfdG9fYmUzMiAtIGNvbnZlcnQgZGF0YSB0byBiaWcgZW5kaWFuIDMyIGJpdCBmb3JtYXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTUtICogQGRhdGE6IHRoZSBkYXRhIHRvIGNvbnZlcnRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xNy0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjE4OnZvaWQgaGluaWNfY3B1X3RvX2JlMzIodm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTMxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzozMjogKiBoaW5pY19iZTMyX3RvX2NwdSAtIGNvbnZlcnQgZGF0YSBmcm9tIGJpZyBlbmRpYW4gMzIgYml0IGZvcm1hdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0zMy0gKiBAZGF0YTogdGhlIGRhdGEgdG8gY29udmVydFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTM1LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MzY6dm9pZCBoaW5pY19iZTMyX3RvX2NwdSh2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0zNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNDktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjUwOiAqIGhpbmljX3NldF9zZ2UgLSBzZXQgZG1hIGFyZWEgaW4gc2NhdHRlciBnYXRoZXIgZW50cnlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNTEtICogQHNnZTogc2NhdHRlciBnYXRoZXIgZW50cnlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy01NC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjU1OnZvaWQgaGluaWNfc2V0X3NnZShzdHJ1Y3QgaGluaWNfc2dlICpzZ2UsIGRtYV9hZGRyX3QgYWRkciwgaW50IGxlbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTYyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzo2MzogKiBoaW5pY19zZ2VfdG9fZG1hIC0gZ2V0IGRtYSBhZGRyZXNzIGZyb20gc2NhdHRlciBnYXRoZXIgZW50cnlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNjQtICogQHNnZTogc2NhdHRlciBnYXRoZXIgZW50cnlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02Ny0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjY4OmRtYV9hZGRyX3QgaGluaWNfc2dlX3RvX2RtYShzdHJ1Y3QgaGluaWNfc2dlICpzZ2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaC0xNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmg6MTU6c3RydWN0IGhpbmljX3NnZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTE2LVxcdHUzMiAgICAgICAgICAgICBoaV9hZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaDoyMTp2b2lkIGhpbmljX2NwdV90b19iZTMyKHZvaWQgKmRhdGEsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaC0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmg6MjM6dm9pZCBoaW5pY19iZTMyX3RvX2NwdSh2b2lkICpkYXRhLCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmgtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oOjI1OnZvaWQgaGluaWNfc2V0X3NnZShzdHJ1Y3QgaGluaWNfc2dlICpzZ2UsIGRtYV9hZGRyX3QgYWRkciwgaW50IGxlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaDoyNzpkbWFfYWRkcl90IGhpbmljX3NnZV90b19kbWEoc3RydWN0IGhpbmljX3NnZSAqc2dlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmgtMjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzo5OiNpbmNsdWRlIFxcXCJoaW5pY19kZWJ1Z2ZzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjExOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoaW5pY19kYmdmc19yb290O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jPTIxPXN0YXRpYyBjaGFyICpzcV9maWVsZHNbXSA9IHtcXFwiZ2xiX3NxX2lkXFxcIiwgXFxcInNxX3BpXFxcIiwgXFxcInNxX2NpXFxcIiwgXFxcInNxX2ZpXFxcIiwgXFxcInNxX21zaXhfZW50cnlcXFwifTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjM6c3RhdGljIHU2NCBoaW5pY19kYmdfZ2V0X3NxX2luZm8oc3RydWN0IGhpbmljX2RldiAqbmljX2Rldiwgc3RydWN0IGhpbmljX3NxICpzcSwgaW50IGlkeClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI1OlxcdHN0cnVjdCBoaW5pY193cSAqd3EgPSBzcS1cXHUwMDNld3E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM9NTE9c3RhdGljIGNoYXIgKnJxX2ZpZWxkc1tdID0ge1xcXCJnbGJfcnFfaWRcXFwiLCBcXFwicnFfaHdfcGlcXFwiLCBcXFwicnFfc3dfY2lcXFwiLCBcXFwicnFfc3dfcGlcXFwiLCBcXFwicnFfbXNpeF9lbnRyeVxcXCJ9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzo1MzpzdGF0aWMgdTY0IGhpbmljX2RiZ19nZXRfcnFfaW5mbyhzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2LCBzdHJ1Y3QgaGluaWNfcnEgKnJxLCBpbnQgaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtNTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6NTU6XFx0c3RydWN0IGhpbmljX3dxICp3cSA9IHJxLVxcdTAwM2V3cTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYz04MT1zdGF0aWMgY2hhciAqZnVuY190YWJsZV9maWVsZHNbXSA9IHtcXFwidmFsaWRcXFwiLCBcXFwicnhfbW9kZVxcXCIsIFxcXCJtdHVcXFwiLCBcXFwicnFfZGVwdGhcXFwiLCBcXFwiY2ZnX3FfbnVtXFxcIn07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjgzOnN0YXRpYyBpbnQgaGluaWNfZGJnX2dldF9mdW5jX3RhYmxlKHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYsIGludCBpZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04NS1cXHRzdHJ1Y3QgdGFnX3NtbF9mdW5jZmdfdGJsICpmdW5jZmdfdGFibGVfZWxlbTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjg2OlxcdHN0cnVjdCBoaW5pY19jbWRfbHRfcmQgKnJlYWRfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTg3LVxcdHUxNiBvdXRfc2l6ZSA9IHNpemVvZigqcmVhZF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTAxOlxcdGVyciA9IGhpbmljX3BvcnRfbXNnX2NtZChuaWNfZGV2LVxcdTAwM2Vod2RldiwgSElOSUNfUE9SVF9DTURfUkRfTElORV9UQkwsIHJlYWRfZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEwMi1cXHRcXHRcXHRcXHQgc2l6ZW9mKCpyZWFkX2RhdGEpLCByZWFkX2RhdGEsIFxcdTAwMjZvdXRfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjEzNjpzdGF0aWMgc3NpemVfdCBoaW5pY19kYmdfY21kX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEzNy1cXHRcXHRcXHRcXHQgIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEzOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxMzk6XFx0c3RydWN0IGhpbmljX2RlYnVnX3ByaXYgKmRiZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE0MC1cXHRjaGFyIHJldF9idWZbMjBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNDUtXFx0ZGVzYyA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE0NjpcXHRkYmcgPSBjb250YWluZXJfb2YoZGVzYywgc3RydWN0IGhpbmljX2RlYnVnX3ByaXYsIGZpZWxkX2lkWypkZXNjXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE0OS1cXHRjYXNlIEhJTklDX0RCR19TUV9JTkZPOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTUwOlxcdFxcdG91dCA9IGhpbmljX2RiZ19nZXRfc3FfaW5mbyhkYmctXFx1MDAzZWRldiwgZGJnLVxcdTAwM2VvYmplY3QsICpkZXNjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE1MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTUzLVxcdGNhc2UgSElOSUNfREJHX1JRX0lORk86XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNTQ6XFx0XFx0b3V0ID0gaGluaWNfZGJnX2dldF9ycV9pbmZvKGRiZy1cXHUwMDNlZGV2LCBkYmctXFx1MDAzZW9iamVjdCwgKmRlc2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTU1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNTctXFx0Y2FzZSBISU5JQ19EQkdfRlVOQ19UQUJMRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE1ODpcXHRcXHRvdXQgPSBoaW5pY19kYmdfZ2V0X2Z1bmNfdGFibGUoZGJnLVxcdTAwM2VkZXYsICpkZXNjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE1OS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTYxLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNjI6XFx0XFx0bmV0aWZfd2FybihkYmctXFx1MDAzZWRldiwgZHJ2LCBkYmctXFx1MDAzZWRldi1cXHUwMDNlbmV0ZGV2LCBcXFwiSW52YWxpZCBoaW5pYyBkZWJ1ZyBjbWQ6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTYzLVxcdFxcdFxcdCAgIGRiZy1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE3MjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoaW5pY19kYmdfY21kX2ZvcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzMtXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzQtXFx0Lm9wZW4gID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNzU6XFx0LnJlYWQgID0gaGluaWNfZGJnX2NtZF9yZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTc2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNzg6c3RhdGljIGludCBjcmVhdGVfZGJnX2ZpbGVzKHN0cnVjdCBoaW5pY19kZXYgKmRldiwgZW51bSBoaW5pY19kYmdfdHlwZSB0eXBlLCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTc5OlxcdFxcdFxcdCAgICBzdHJ1Y3QgZGVudHJ5ICpyb290LCBzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiAqKmRiZywgY2hhciAqKmZpZWxkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTgwLVxcdFxcdFxcdCAgICBpbnQgbmZpbGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xODEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTgyOlxcdHN0cnVjdCBoaW5pY19kZWJ1Z19wcml2ICp0bXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xODMtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE5NS1cXHRcXHR0bXAtXFx1MDAzZWZpZWxkX2lkW2ldID0gaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE5NjpcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGZpZWxkW2ldLCAwNDAwLCByb290LCBcXHUwMDI2dG1wLVxcdTAwM2VmaWVsZF9pZFtpXSwgXFx1MDAyNmhpbmljX2RiZ19jbWRfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xOTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyMDQ6c3RhdGljIHZvaWQgcmVtX2RiZ19maWxlcyhzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiAqZGJnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjEyOmludCBoaW5pY19zcV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2LCB1MTYgc3FfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjE0OlxcdHN0cnVjdCBoaW5pY19zcSAqc3E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMTUtXFx0c3RydWN0IGRlbnRyeSAqcm9vdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjI4OnZvaWQgaGluaWNfc3FfZGVidWdfcmVtKHN0cnVjdCBoaW5pY19zcSAqc3EpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyMzQ6aW50IGhpbmljX3JxX2RlYnVnX2FkZChzdHJ1Y3QgaGluaWNfZGV2ICpkZXYsIHUxNiBycV9pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIzNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyMzY6XFx0c3RydWN0IGhpbmljX3JxICpycTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIzNy1cXHRzdHJ1Y3QgZGVudHJ5ICpyb290O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyNTA6dm9pZCBoaW5pY19ycV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX3JxICpycSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI1NjppbnQgaGluaWNfZnVuY190YWJsZV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjY1OnZvaWQgaGluaWNfZnVuY190YWJsZV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjcxOnZvaWQgaGluaWNfc3FfZGJnZnNfaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6Mjc2OnZvaWQgaGluaWNfc3FfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyODE6dm9pZCBoaW5pY19ycV9kYmdmc19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyODY6dm9pZCBoaW5pY19ycV9kYmdmc191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI5MTp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI5Nzp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzAzOnZvaWQgaGluaWNfZGJnX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMDUtXFx0bmljX2Rldi1cXHUwMDNlZGJnZnNfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihwY2lfbmFtZShuaWNfZGV2LVxcdTAwM2Vod2Rldi1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMDY6XFx0XFx0XFx0XFx0XFx0XFx0IGhpbmljX2RiZ2ZzX3Jvb3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzA3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMwOTp2b2lkIGhpbmljX2RiZ191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMxMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMxNTp2b2lkIGhpbmljX2RiZ19yZWdpc3Rlcl9kZWJ1Z2ZzKGNvbnN0IGNoYXIgKmRlYnVnZnNfZGlyX25hbWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzE3OlxcdGhpbmljX2RiZ2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGVidWdmc19kaXJfbmFtZSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzIwOnZvaWQgaGluaWNfZGJnX3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzIxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMyMjpcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoaGluaWNfZGJnZnNfcm9vdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMjM6XFx0aGluaWNfZGJnZnNfcm9vdCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6OTojaW5jbHVkZSBcXFwiaGluaWNfZGV2LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDoxNjpzdHJ1Y3QgaGluaWNfY21kX2x0X3JkIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTE3LVxcdHU4XFx0c3RhdHVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaD0zMT1zdHJ1Y3QgdGFnX3NtbF9mdW5jZmdfdGJsIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo4MTppbnQgaGluaWNfc3FfZGVidWdfYWRkKHN0cnVjdCBoaW5pY19kZXYgKmRldiwgdTE2IHNxX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6ODM6dm9pZCBoaW5pY19zcV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX3NxICpzcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC04NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjg1OmludCBoaW5pY19ycV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2LCB1MTYgcnFfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo4Nzp2b2lkIGhpbmljX3JxX2RlYnVnX3JlbShzdHJ1Y3QgaGluaWNfcnEgKnJxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6ODk6aW50IGhpbmljX2Z1bmNfdGFibGVfZGVidWdfYWRkKHN0cnVjdCBoaW5pY19kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC05MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjkxOnZvaWQgaGluaWNfZnVuY190YWJsZV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6OTM6dm9pZCBoaW5pY19zcV9kYmdmc19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5NTp2b2lkIGhpbmljX3NxX2RiZ2ZzX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6OTc6dm9pZCBoaW5pY19ycV9kYmdmc19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5OTp2b2lkIGhpbmljX3JxX2RiZ2ZzX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTEwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwMTp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDoxMDM6dm9pZCBoaW5pY19mdW5jX3RibF9kYmdmc191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDoxMDU6dm9pZCBoaW5pY19kYmdfaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTEwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwNzp2b2lkIGhpbmljX2RiZ191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDoxMDk6dm9pZCBoaW5pY19kYmdfcmVnaXN0ZXJfZGVidWdmcyhjb25zdCBjaGFyICpkZWJ1Z2ZzX2Rpcl9uYW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjExMTp2b2lkIGhpbmljX2RiZ191bnJlZ2lzdGVyX2RlYnVnZnModm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjE2OiNpbmNsdWRlIFxcXCJoaW5pY19od19kZXYuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTc6I2luY2x1ZGUgXFxcImhpbmljX3R4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjE4OiNpbmNsdWRlIFxcXCJoaW5pY19yeC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxOTojaW5jbHVkZSBcXFwiaGluaWNfc3Jpb3YuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjIxOiNkZWZpbmUgSElOSUNfRFJWX05BTUUgICAgICAgICAgXFxcImhpbmljXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0yMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6Mjk6ZW51bSBoaW5pY19mbGFncyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTMwLVxcdEhJTklDX0xJTktfVVAgPSBCSVQoMCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjM3OnN0cnVjdCBoaW5pY19yeF9tb2RlX3dvcmsge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0zOC1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICB3b3JrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo0MjpzdHJ1Y3QgaGluaWNfcnNzX3R5cGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC00My1cXHR1OCB0Y3BfaXB2Nl9leHQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjUzOmVudW0gaGluaWNfcnNzX2hhc2hfdHlwZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTU0LVxcdEhJTklDX1JTU19IQVNIX0VOR0lORV9UWVBFX1hPUixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC01OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6NTk6c3RydWN0IGhpbmljX2ludHJfY29hbF9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNjAtXFx0dThcXHRwZW5kaW5nX2xpbXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjY1OmVudW0gaGluaWNfZGJnX3R5cGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC02Ni1cXHRISU5JQ19EQkdfU1FfSU5GTyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC03MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6NzE6c3RydWN0IGhpbmljX2RlYnVnX3ByaXYge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo3MjpcXHRzdHJ1Y3QgaGluaWNfZGV2XFx0KmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNzMtXFx0dm9pZFxcdFxcdFxcdCpvYmplY3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjc0OlxcdGVudW0gaGluaWNfZGJnX3R5cGVcXHR0eXBlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC03NS1cXHRzdHJ1Y3QgZGVudHJ5XFx0XFx0KnJvb3Q7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjc5OnN0cnVjdCBoaW5pY19kZXYge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC04MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAgICAgICAgICAgICAgICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjgxOlxcdHN0cnVjdCBoaW5pY19od2RldiAgICAgICAgICAgICAgKmh3ZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC04Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC05My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6OTQ6XFx0c3RydWN0IGhpbmljX3J4X21vZGVfd29yayAgICAgICByeF9tb2RlX3dvcms7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTk1LVxcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICAgICAgICAgKndvcmtxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC05Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6OTc6XFx0c3RydWN0IGhpbmljX3R4cSAgICAgICAgICAgICAgICAqdHhxcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6OTg6XFx0c3RydWN0IGhpbmljX3J4cSAgICAgICAgICAgICAgICAqcnhxcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtOTktXFx0dTE2XFx0XFx0XFx0XFx0c3FfZGVwdGg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTA1LVxcdHUxNlxcdFxcdFxcdFxcdHJzc19saW1pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTA2OlxcdHN0cnVjdCBoaW5pY19yc3NfdHlwZVxcdFxcdHJzc190eXBlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMDctXFx0dThcXHRcXHRcXHRcXHQqcnNzX2hrZXlfdXNlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTA4LVxcdHMzMlxcdFxcdFxcdFxcdCpyc3NfaW5kaXJfdXNlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTA5OlxcdHN0cnVjdCBoaW5pY19pbnRyX2NvYWxfaW5mb1xcdCpyeF9pbnRyX2NvYWxlc2NlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxMTA6XFx0c3RydWN0IGhpbmljX2ludHJfY29hbF9pbmZvXFx0KnR4X2ludHJfY29hbGVzY2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjExMTpcXHRzdHJ1Y3QgaGluaWNfc3Jpb3ZfaW5mbyBzcmlvdl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMTItXFx0aW50XFx0XFx0XFx0XFx0bGJfdGVzdF9yeF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTE5LVxcdHN0cnVjdCBkZW50cnlcXHRcXHRcXHQqZnVuY190YmxfZGJnZnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjEyMDpcXHRzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdlxcdFxcdCpkYmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTEyMS1cXHRzdHJ1Y3QgZGV2bGlua1xcdFxcdFxcdCpkZXZsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTEyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTI2OnN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxMjc6XFx0c3RydWN0IGhpbmljX2h3ZGV2XFx0XFx0Kmh3ZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMjgtXFx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICAqaHdfZmF1bHRfcmVwb3J0ZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTk6I2luY2x1ZGUgXFxcImhpbmljX3BvcnQuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjIwOiNpbmNsdWRlIFxcXCJoaW5pY19kZXZsaW5rLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyMTojaW5jbHVkZSBcXFwiaGluaWNfaHdfZGV2LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjIzOnN0YXRpYyBib29sIGhpbmljX2Z3X3NlY3Rpb25fdmFsaWQodTMyIGZ3X2xlbiwgdTMyIG9mZnNldCwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyODpzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjktXFx0XFx0XFx0ICAgICAgc2l6ZV90IGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy03MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjcyOlxcdFxcdGlmICghaGluaWNfZndfc2VjdGlvbl92YWxpZChmd19pbWFnZS1cXHUwMDNlZndfbGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNzMtXFx0XFx0XFx0XFx0XFx0ICAgIHNlY3Rpb24tXFx1MDAzZWZ3X3NlY3Rpb25fb2Zmc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoxMDQ6c3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfaW50ZWdyaXR5KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xMDUtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTQzOnN0YXRpYyBpbnQgY2hlY2tfaW1hZ2VfZGV2aWNlX3R5cGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0NC1cXHRcXHRcXHRcXHQgICB1MzIgaW1hZ2VfZGV2aWNlX3R5cGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTQ2OlxcdHN0cnVjdCBoaW5pY19jb21tX2JvYXJkX2luZm8gYm9hcmRfaW5mbyA9IHswfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjE0ODpcXHRpZiAoaGluaWNfZ2V0X2JvYXJkX2luZm8ocHJpdi1cXHUwMDNlaHdkZXYsIFxcdTAwMjZib2FyZF9pbmZvKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTQ5LVxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJHZXQgYm9hcmQgaW5mbyBmYWlsZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoxNjM6c3RhdGljIGludCBoaW5pY19mbGFzaF9mdyhzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE2NC1cXHRcXHRcXHQgIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjYtXFx0dTMyIHNlY3Rpb25fcmVtYWluX3NlbmRfbGVuLCBzZW5kX2ZyYWdtZW50X2xlbiwgc2VuZF9wb3MsIHVwX3RvdGFsX2xlbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjE2NzpcXHRzdHJ1Y3QgaGluaWNfY21kX3VwZGF0ZV9mdyAqZndfdXBkYXRlX21zZyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjgtXFx0dTMyIHNlY3Rpb25fdHlwZSwgc2VjdGlvbl9jcmMsIHNlY3Rpb25fdmVyc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjU4OlxcdFxcdFxcdGVyciA9IGhpbmljX3BvcnRfbXNnX2NtZChwcml2LVxcdTAwM2Vod2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI1OS1cXHRcXHRcXHRcXHRcXHRcXHQgSElOSUNfUE9SVF9DTURfVVBEQVRFX0ZXLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyODM6c3RhdGljIGludCBoaW5pY19maXJtd2FyZV91cGRhdGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI4NC1cXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzAxOlxcdGVyciA9IGhpbmljX2ZsYXNoX2Z3KHByaXYsIGZ3LVxcdTAwM2VkYXRhLCBcXHUwMDI2aG9zdF9pbWFnZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMDItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMjI6c3RhdGljIGludCBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTMyMy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTMyNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMjY6XFx0c3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTMyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjMyODpcXHRyZXR1cm4gaGluaWNfZmlybXdhcmVfdXBkYXRlKHByaXYsIHBhcmFtcy1cXHUwMDNlZncsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzMxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgaGluaWNfZGV2bGlua19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzI6XFx0LmZsYXNoX3VwZGF0ZSA9IGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzMzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzU6c3RydWN0IGRldmxpbmsgKmhpbmljX2RldmxpbmtfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzM2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjMzNzpcXHRyZXR1cm4gZGV2bGlua19hbGxvYyhcXHUwMDI2aGluaWNfZGV2bGlua19vcHMsIHNpemVvZihzdHJ1Y3QgaGluaWNfZGV2KSwgZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTMzOC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozNDA6dm9pZCBoaW5pY19kZXZsaW5rX2ZyZWUoc3RydWN0IGRldmxpbmsgKmRldmxpbmspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozNDU6dm9pZCBoaW5pY19kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozNTI6dm9pZCBoaW5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTM1My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTM1OT1zdGF0aWMgdm9pZCBjaGlwX2ZhdWx0X3Nob3coc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjM2MDpcXHRcXHRcXHQgICAgc3RydWN0IGhpbmljX2ZhdWx0X2V2ZW50ICpldmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTM2MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTM4MD1zdGF0aWMgdm9pZCBmYXVsdF9yZXBvcnRfc2hvdyhzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzgxOlxcdFxcdFxcdCAgICAgIHN0cnVjdCBoaW5pY19mYXVsdF9ldmVudCAqZXZlbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0MzE6c3RhdGljIGludCBoaW5pY19od19yZXBvcnRlcl9kdW1wKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00MzItXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLCB2b2lkICpwcml2X2N0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM9NDQxPXN0YXRpYyB2b2lkIG1nbXRfd2F0Y2hkb2dfcmVwb3J0X3Nob3coc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ0MjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaGluaWNfbWdtdF93YXRjaGRvZ19pbmZvICp3aW5mbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ2MjpzdGF0aWMgaW50IGhpbmljX2Z3X3JlcG9ydGVyX2R1bXAoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ2My1cXHRcXHRcXHRcXHQgIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csIHZvaWQgKnByaXZfY3R4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0NzI6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgaGluaWNfaHdfZmF1bHRfcmVwb3J0ZXJfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDczLVxcdC5uYW1lID0gXFxcImh3XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ3NDpcXHQuZHVtcCA9IGhpbmljX2h3X3JlcG9ydGVyX2R1bXAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ3NzpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX29wcyBoaW5pY19md19mYXVsdF9yZXBvcnRlcl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzgtXFx0Lm5hbWUgPSBcXFwiZndcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDc5OlxcdC5kdW1wID0gaGluaWNfZndfcmVwb3J0ZXJfZHVtcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ4MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDgyOmludCBoaW5pY19oZWFsdGhfcmVwb3J0ZXJzX2NyZWF0ZShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDg3LVxcdFxcdGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShkZXZsaW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDg4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2aGluaWNfaHdfZmF1bHRfcmVwb3J0ZXJfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDk3LVxcdFxcdGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShkZXZsaW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDk4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2aGluaWNfZndfZmF1bHRfcmVwb3J0ZXJfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDk5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NTExOnZvaWQgaGluaWNfaGVhbHRoX3JlcG9ydGVyc19kZXN0cm95KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy01MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaC05LSNpbmNsdWRlIFxcdTAwM2NuZXQvZGV2bGluay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTA6I2luY2x1ZGUgXFxcImhpbmljX2Rldi5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MjQ6ZW51bSBoaW5pY19md190eXBlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTI1LVxcdFVQX0ZXX1VQREFURV9VUF9URVhUX0EgPSAweDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oPTEwMT1zdHJ1Y3QgaG9zdF9pbWFnZV9zdCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjExMTpzdHJ1Y3QgZGV2bGluayAqaGluaWNfZGV2bGlua19hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTEyOnZvaWQgaGluaWNfZGV2bGlua19mcmVlKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjExMzp2b2lkIGhpbmljX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTQ6dm9pZCBoaW5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaC0xMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTY6aW50IGhpbmljX2hlYWx0aF9yZXBvcnRlcnNfY3JlYXRlKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTE3OnZvaWQgaGluaWNfaGVhbHRoX3JlcG9ydGVyc19kZXN0cm95KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmgtMTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0yOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjMwOiNpbmNsdWRlIFxcXCJoaW5pY19od19xcC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzE6I2luY2x1ZGUgXFxcImhpbmljX2h3X2Rldi5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzI6I2luY2x1ZGUgXFxcImhpbmljX3BvcnQuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjMzOiNpbmNsdWRlIFxcXCJoaW5pY190eC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzQ6I2luY2x1ZGUgXFxcImhpbmljX3J4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzozNTojaW5jbHVkZSBcXFwiaGluaWNfZGV2LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9NTk9c3RydWN0IGh3MmV0aHRvb2xfbGlua19tb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtNjEtXFx0dTMyIHNwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6NjI6XFx0ZW51bSBoaW5pY19saW5rX21vZGUgaHdfbGlua19tb2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtNjMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9MTQ2PXN0YXRpYyB2b2lkIHNldF9saW5rX3NwZWVkKHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpsaW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE0NzpcXHRcXHRcXHQgICBlbnVtIGhpbmljX3NwZWVkIHNwZWVkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MTg0OnN0YXRpYyBpbnQgaGluaWNfZ2V0X2xpbmtfbW9kZV9pbmRleChlbnVtIGhpbmljX2xpbmtfbW9kZSBsaW5rX21vZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0xODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0xOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzoxOTY6c3RhdGljIHZvaWQgaGluaWNfYWRkX2V0aHRvb2xfbGlua19tb2RlKHN0cnVjdCBjbWRfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE5NzpcXHRcXHRcXHRcXHRcXHRlbnVtIGhpbmljX2xpbmtfbW9kZSBod19saW5rX21vZGUsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA3OjQwLjM2MjQzODU3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzUyOTU5MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIEZsYXNoIFVwZGF0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY2AuIEl0J3MgYSBjYWxsYmFjayBmdW5jdGlvbiByZWxhdGVkIHRvIGRldmxpbmsgZmxhc2ggdXBkYXRlcywgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBtYW5hZ2luZyBmaXJtd2FyZS4gVGhlIHF1ZXN0aW9uIGlzLCBob3cgZG9lcyB0aGlzIHVwZGF0ZSBnZXQgdHJpZ2dlcmVkIGFuZCB3aGVyZSBkb2VzIHRoZSBkcml2ZXIgY29tZSBpbnRvIHBsYXk/XG5cbkkga25vdyBkZXZsaW5rIGZsYXNoIHVwZGF0ZXMgYXJlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgdGhhdCdzIHRoZSBjb21tb24gaW50ZXJmYWNlLiBCdXQsIHRoZSByZWFsIGNvbmNlcm4gaXMgdGhlICpkcml2ZXIncyogYXZhaWxhYmlsaXR5LiBEb2VzIHRoZSBkcml2ZXIgZXZlbiBnZXQgbG9hZGVkIGlmIHRoZSBoYXJkd2FyZSwgdGhlIGFjdHVhbCBOSUMsIGlzbid0IHByZXNlbnQ/IEkgaGF2ZSB0byBjb25zaWRlciB0aGF0LlxuXG5MZXQncyBzZWXigKYgVGhlIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIGBoaW5pY2AgZHJpdmVyIG9ubHkgcmVnaXN0ZXJzIGRldmxpbmsgaWYgdGhlIGhhcmR3YXJlIGlzIGFjdHVhbGx5IGRldGVjdGVkLiBUaGF0IG1ha2VzIHNlbnNlLiBJdCdzIGEgUENJIGRyaXZlciwgc28gaXQgc2hvdWxkIGJlIHJlbHlpbmcgb24gdGhlIHByZXNlbmNlIG9mIFBDSSBkZXZpY2VzLlxuXG5TbywgdGhlIGtleSBxdWVzdGlvbiBiZWNvbWVzOiBDYW4gSSAqcHJvYmUqIHRoZSBkcml2ZXIgZXZlbiB3aXRob3V0IHRoZSBoYXJkd2FyZT8gQ2FuIEkgbG9hZCB0aGUgbW9kdWxlIGFuZCB0cmlnZ2VyIHRoYXQgcmVnaXN0cmF0aW9uIHBhdGggd2l0aG91dCBhbiBhY3R1YWwgYGhpbmljYCBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBzeXN0ZW0/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0byB1bmRlcnN0YW5kIGlmIHRoaXMgcGF0Y2ggY2FuIGJlIGFjY2Vzc2VkL3Rlc3RlZCB3aXRob3V0IGEgc3BlY2lmaWMgaGFyZHdhcmUgZW52aXJvbm1lbnQuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBwcm9iZSB0aGUgZHJpdmVyIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCB0byBjaGVjayBpdHMgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDUwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6NDQuNzk3NzM2NTcxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDczMDc1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowNzo0NC44NTc4MTk1OTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzE5MjE1MDUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTG9jYXRpbmcgdGhlIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBsb2NhdGUgdGhlIGRyaXZlciByZWdpc3RyYXRpb24gZGF0YS4gVGhpcyBtZWFucyBJJ20gcHJvYmFibHkgZmFjaW5nIGEgc3BlY2lmaWMgY2hhbGxlbmdlIG9yIGludmVzdGlnYXRpb24gdGhhdCBoaW5nZXMgb24gaWRlbnRpZnlpbmcgb3IgYWNjZXNzaW5nIHRoaXMgaW5mb3JtYXRpb24uIERlcGVuZGluZyBvbiB0aGUgY29udGV4dCDigJMgcmVndWxhdG9yeSBjb21wbGlhbmNlLCBpbmNpZGVudCBhbmFseXNpcywgc3lzdGVtIGRlYnVnZ2luZywgZXRjLiDigJMgbXkgYXBwcm9hY2ggd2lsbCB2YXJ5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbW9zdCBlZmZpY2llbnQgcGF0aCB0byBhY2Nlc3MgdGhpcyBkYXRhLiBBbSBJIGxvb2tpbmcgYXQgYSBkYXRhYmFzZSBxdWVyeT8gQSBsb2cgZmlsZSBzZWFyY2g/IEEgc3BlY2lmaWMgQVBJIGVuZHBvaW50PyBPciBpcyB0aGlzIGEgbW9yZSBtYW51YWwgcHJvY2VzcyBpbnZvbHZpbmcgcmVnaXN0cnkga2V5cyBvciBjb25maWd1cmF0aW9uIGZpbGVzPyBUaGUgcHJlY2lzZSBtZXRob2QgaGluZ2VzIG9uIHRoZSBzeXN0ZW0gaW4gcXVlc3Rpb24sIHRoZSBncmFudWxhcml0eSBvZiBpbmZvcm1hdGlvbiBJIHJlcXVpcmUsIGFuZCB0aGUgc2VjdXJpdHkgcHJvdG9jb2xzIGludm9sdmVkLiBUaW1lIHRvIGV2YWx1YXRlIGFsbCB0aGUgYW5nbGVzIGFuZCBkZWNpZGUgb24gdGhlIG1vc3QgYXBwcm9wcmlhdGUgbWV0aG9kIHRvIGdldCBtZSB0aGUgZGF0YS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0ODAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA4OjAyLjA0OTk3NTM4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzk1NjEwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTQ4OD1zdGF0aWMgaW50IF9faW5pdCBoaW5pY19tb2R1bGVfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM6MTQ5NDpcXHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZoaW5pY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ5NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowODowMi4zMjk1NDM3NzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODU4MDE1NTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgUENJIERyaXZlciB3aXRoIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgUENJIGRyaXZlciBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBJdCdzIGdvdCB0aGF0IHZQQ0kgZnV6emVyLCB3aGljaCBpcyBwcm9taXNpbmcsIGJlY2F1c2Ugc3l6a2FsbGVyIGNhbiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBCdXQgaGFuZyBvbiwgc3l6a2FsbGVyIGRvZXNuJ3QganVzdCAqZ2VuZXJhbGx5KiBlbXVsYXRlIGFyYml0cmFyeSBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhleSdyZSBleHBsaWNpdGx5IHN1cHBvcnRlZCB3aXRoaW4gdGhlIHZQQ0kgZnV6emVyLlxuXG5IbW0uLi4gd2FpdCBhIG1pbnV0ZSwgSSByZW1lbWJlciBzZWVpbmcgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiBpbiBhIHN5emJvdCByZXBvcnQgcmVsYXRlZCB0byB0aGlzLiBJZiBzeXpib3QgY2F1Z2h0IGFuIGlzc3VlLCB0aGF0IG1lYW5zIGl0ICppcyogcmVhY2hhYmxlLCByaWdodD8gQW5kIEkgc2VlIHRoZSBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAuIFNvLCBpdCB3YXMgcHJvYmFibHkgZnV6emVkLCBvciBpdCdzIGEgcGF0Y2ggdW5kZXIgcmV2aWV3IGZvciBzeXpib3QuXG5cbkJ1dCB0aGVuIEkgc2VlIHRoZSBwcm9tcHQgbWVudGlvbnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSWYgaXQncyBhIHBoeXNpY2FsIFBDSSBkcml2ZXIsIHdvdWxkIGl0IGJlIHJlYWNoYWJsZSBpbiBRRU1VPyBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgSHVhd2VpIEludGVsbGlnZW50IE5JQyFcblxuT2theSwgbGV0J3MgcmV2aXNpdCBzeXprYWxsZXIncyB2UENJIGZ1enplci4gSXQgZG9lcyBoYXZlIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZXNgLCBvciBzaW1pbGFyLCByaWdodD8gQW5kIGl0IGNhbiBlbXVsYXRlIGFyYml0cmFyeSBQQ0kgZGV2aWNlcywgbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRHMuIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGNhbiBwcm92aWRlIHRoZSBQQ0kgSURzLCBhbmQgZW11bGF0ZSB0aGUgY29uZmlnIHNwYWNlIGFuZCBCQVJzLCBzbyB0aGUgZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cbkFscmlnaHQsIHRpbWUgdG8gY2hlY2sgdGhlIGBoaW5pY19kcml2ZXJgIFBDSSBJRHMuIExldCdzIHNlZSBpZiBzeXprYWxsZXIgY2FuIGFjdHVhbGx5IHJlYWNoIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg1OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowODowOS4xODc1NjI1MDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4Njk1NTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpbmljX3BjaV90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTQ2ND1zdGF0aWMgdm9pZCBoaW5pY19zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjE0Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhpbmljX3BjaV90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ3MC1cXHR7IFBDSV9WREVWSUNFKEhVQVdFSSwgSElOSUNfREVWX0lEX1FVQURfUE9SVF8yNUdFKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xNDc2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDc3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBoaW5pY19wY2lfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTE0Nzk9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGhpbmljX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0ODAtXFx0Lm5hbWUgICAgICAgICAgID0gSElOSUNfRFJWX05BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDgxOlxcdC5pZF90YWJsZSAgICAgICA9IGhpbmljX3BjaV90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0ODItXFx0LnByb2JlICAgICAgICAgID0gaGluaWNfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA4OjA5LjI3NjI2ODE2OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI3NjgyODg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBoaW5pY19wcm9iZWAgd2l0aCB0aGUgdlBDSSBGdXp6ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgaW1tZWRpYXRlIHRob3VnaHQgaXM6IGlmIHN5emthbGxlcidzIHZQQ0kgZnV6emVyIGNhbiBoaXQgaXQsIHRoZW4gd2UndmUgZ290IGEgcmVhY2hhYmxlIGNvZGUgcGF0aC4gVGhhdCdzIHRoZSBiYXNlbGluZSBhc3N1bXB0aW9uLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0ICp2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMqIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSG1tLCBpcyBzeXprYWxsZXIncyB2UENJIGZ1enplciBjb25zaWRlcmVkIFwic29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIiBpbiAqdGhpcyogY29udGV4dD8gSSdkIHNheSB5ZXMsIGl0IGRlZmluaXRlbHkgZml0cyB0aGF0IGRlc2NyaXB0aW9uLlxuXG5UaGUga2V5IHF1ZXN0aW9uIHRoZW4gYmVjb21lczogZG9lcyB0aGUgdlBDSSBmdXp6ZXIgYWN0dWFsbHkgZ2V0ICpwYXN0KiB0aGUgcG90ZW50aWFsIG1pbmVmaWVsZCBvZiBjb21wbGV4IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBlc3BlY2lhbGx5IHdpdGhpbiBzb21ldGhpbmcgYXMgZWxhYm9yYXRlIGFzIGBoaW5pY19wcm9iZWA/IFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGludHJpY2F0ZSBQQ0kgZHJpdmVycyBvZnRlbiBjaG9rZSBlYXJseSBpbiB0aGVpciBgcHJvYmVgIGZ1bmN0aW9ucy4gVGhleSBmcmVxdWVudGx5IGRlcGVuZCBvbiB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucyDigJMgcmVhZGluZyBwYXJ0aWN1bGFyIHJlZ2lzdGVycywgRE1BIG9wZXJhdGlvbnMgd29ya2luZyBhcyBleHBlY3RlZCwgY29ycmVjdCBmaXJtd2FyZSBsb2FkaW5nLCB5b3Uga25vdyB0aGUgZHJpbGwuIEl0J3MgYSBmcmFnaWxlIGRhbmNlLlxuXG5TbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byBgaGluaWNfcHJvYmVgLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB1cCBhZ2FpbnN0LCBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgdlBDSSBmdXp6ZXIgaXMgbGlrZWx5IHRvIHN1Y2NlZWQgb3IgZmFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNDAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDg6MTMuOTAzOTU2OTU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM1ODU0ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGluaWNfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTExNjA9c3RhdGljIGludCBuaWNfZGV2X2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTEzNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxMzU2OnN0YXRpYyBpbnQgaGluaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xMzU3LVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTE0Nzk9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGhpbmljX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ4MS1cXHQuaWRfdGFibGUgICAgICAgPSBoaW5pY19wY2lfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDgyOlxcdC5wcm9iZSAgICAgICAgICA9IGhpbmljX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ4My1cXHQucmVtb3ZlICAgICAgICAgPSBoaW5pY19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA4OjE0LjAwNzU0OTI3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MjE1ODIzODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRGl2aW5nIGludG8gYGhpbmljX3Byb2JlYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIGl0LiBMZXQncyBzZWUgd2hhdCdzIHdoYXQgd2l0aCB0aGlzIGBoaW5pY19wcm9iZWAuIEJhc2VkIG9uIHRoZSBuYW1lLCBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBsb3ctbGV2ZWwgdG9vbCwgcHJvYmFibHkgcmVsYXRlZCB0byBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVycywgb3IgXCJISU5JQ3NcIiBzcGVjaWZpY2FsbHkuIFRoZSBwcm9iZSBzdWZmaXggdHlwaWNhbGx5IGluZGljYXRlcyB0aGF0IGl0cyBmdW5jdGlvbiBpcyB0byB0ZXN0LCBnYXRoZXIgZGF0YSwgb3Igb3RoZXJ3aXNlIGV4YW1pbmUgdGhlIHN0YXRlIG9mIGEgaGFyZHdhcmUgY29tcG9uZW50LiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgZ28gdG8gdGhpbmdzIGxpa2UgaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIEhJTklDIG1vZGVsLCBjaGVja2luZyBpdHMgZmlybXdhcmUgdmVyc2lvbiwgdmVyaWZ5aW5nIGl0cyBvcGVyYXRpb25hbCBzdGF0dXMsIG9yIHBlcmhhcHMgZXZlbiBkaWFnbm9zaW5nIGNvbm5lY3Rpdml0eSBwcm9ibGVtcy4gSSdtIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgaXQgY291bGQgYmUgdXNlZCBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIGR1bXBpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLCBvciBkZXRlY3RpbmcgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMuIE5vdywgbGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgYWN0dWFsbHkgdGVsbHMgdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODQ0LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDk6MjkuMjIzMzc1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzU2LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM1NjpcXHRzdGF0aWMgaW50IGhpbmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbjEzNTc6XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4xMzU4OlxcdHtcXG4xMzU5OlxcdFxcdGludCBlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTtcXG4xMzYwOlxcdFxcbjEzNjE6XFx0XFx0aWYgKGVycilcXG4xMzYyOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGVyciwgXFxcIkZhaWxlZCB0byBlbmFibGUgUENJIGRldmljZVxcXFxuXFxcIik7XFxuMTM2MzpcXHRcXG4xMzY0OlxcdFxcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGRldiwgSElOSUNfRFJWX05BTUUpO1xcbjEzNjU6XFx0XFx0aWYgKGVycikge1xcbjEzNjY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlcXVlc3QgUENJIHJlZ2lvbnNcXFxcblxcXCIpO1xcbjEzNjc6XFx0XFx0XFx0Z290byBlcnJfcGNpX3JlZ2lvbnM7XFxuMTM2ODpcXHRcXHR9XFxuMTM2OTpcXHRcXG4xMzcwOlxcdFxcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xcbjEzNzE6XFx0XFxuMTM3MjpcXHRcXHRlcnIgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSyg2NCkpO1xcbjEzNzM6XFx0XFx0aWYgKGVycikge1xcbjEzNzQ6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHNldCBETUEgbWFza1xcXFxuXFxcIik7XFxuMTM3NTpcXHRcXHRcXHRnb3RvIGVycl9kbWFfbWFzaztcXG4xMzc2OlxcdFxcdH1cXG4xMzc3OlxcdFxcbjEzNzg6XFx0XFx0ZXJyID0gbmljX2Rldl9pbml0KHBkZXYpO1xcbjEzNzk6XFx0XFx0aWYgKGVycikge1xcbjEzODA6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgTklDIGRldmljZVxcXFxuXFxcIik7XFxuMTM4MTpcXHRcXHRcXHRnb3RvIGVycl9uaWNfZGV2X2luaXQ7XFxuMTM4MjpcXHRcXHR9XFxuMTM4MzpcXHRcXG4xMzg0OlxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJIaU5JQyBkcml2ZXIgLSBwcm9iZWRcXFxcblxcXCIpO1xcbjEzODU6XFx0XFx0cmV0dXJuIDA7XFxuMTM4NjpcXHRcXG4xMzg3OlxcdGVycl9uaWNfZGV2X2luaXQ6XFxuMTM4ODpcXHRlcnJfZG1hX21hc2s6XFxuMTM4OTpcXHRcXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpO1xcbjEzOTA6XFx0XFxuMTM5MTpcXHRlcnJfcGNpX3JlZ2lvbnM6XFxuMTM5MjpcXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XFxuMTM5MzpcXHRcXHRyZXR1cm4gZXJyO1xcbjEzOTQ6XFx0fVxcbjEzOTU6XFx0XFxuMTM5NjpcXHRzdGF0aWMgdm9pZCB3YWl0X3NyaW92X2NmZ19jb21wbGV0ZShzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KVxcbjEzOTc6XFx0e1xcbjEzOTg6XFx0XFx0c3RydWN0IGhpbmljX3NyaW92X2luZm8gKnNyaW92X2luZm8gPSBcXHUwMDI2bmljX2Rldi1cXHUwMDNlc3Jpb3ZfaW5mbztcXG4xMzk5OlxcdFxcdHUzMiBsb29wX2NudCA9IDA7XFxuMTQwMDpcXHRcXG4xNDAxOlxcdFxcdHNldF9iaXQoSElOSUNfRlVOQ19SRU1PVkUsIFxcdTAwMjZzcmlvdl9pbmZvLVxcdTAwM2VzdGF0ZSk7XFxuMTQwMjpcXHRcXHR1c2xlZXBfcmFuZ2UoOTkwMCwgMTAwMDApO1xcbjE0MDM6XFx0XFxuMTQwNDpcXHRcXHR3aGlsZSAobG9vcF9jbnQgXFx1MDAzYyBISU5JQ19XQUlUX1NSSU9WX0NGR19USU1FT1VUKSB7XFxuMTQwNTpcXHRcXHRcXHRpZiAoIXRlc3RfYml0KEhJTklDX1NSSU9WX0VOQUJMRSwgXFx1MDAyNnNyaW92X2luZm8tXFx1MDAzZXN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbjE0MDY6XFx0XFx0XFx0ICAgICF0ZXN0X2JpdChISU5JQ19TUklPVl9ESVNBQkxFLCBcXHUwMDI2c3Jpb3ZfaW5mby1cXHUwMDNlc3RhdGUpKVxcbjE0MDc6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbjE0MDg6XFx0XFxuMTQwOTpcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoOTkwMCwgMTAwMDApO1xcbjE0MTA6XFx0XFx0XFx0bG9vcF9jbnQrKztcXG4xNDExOlxcdFxcdH1cXG4xNDEyOlxcdH1cXG4xNDEzOlxcdFxcbjE0MTQ6XFx0c3RhdGljIHZvaWQgaGluaWNfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbjE0MTU6XFx0e1xcbjE0MTY6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4xNDE3OlxcdFxcdHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbjE0MTg6XFx0XFx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBuaWNfZGV2LVxcdTAwM2VkZXZsaW5rO1xcbjE0MTk6XFx0XFx0c3RydWN0IGhpbmljX3J4X21vZGVfd29yayAqcnhfbW9kZV93b3JrO1xcbjE0MjA6XFx0XFxuMTQyMTpcXHRcXHRpZiAoIUhJTklDX0lTX1ZGKG5pY19kZXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmKSkge1xcbjE0MjI6XFx0XFx0XFx0d2FpdF9zcmlvdl9jZmdfY29tcGxldGUobmljX2Rldik7XFxuMTQyMzpcXHRcXHRcXHRoaW5pY19wY2lfc3Jpb3ZfZGlzYWJsZShwZGV2KTtcXG4xNDI0OlxcdFxcdH1cXG4xNDI1OlxcdFxcbjE0MjY6XFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcXG4xNDI3OlxcdFxcbjE0Mjg6XFx0XFx0aGluaWNfZnVuY190YWJsZV9kZWJ1Z19yZW0obmljX2Rldik7XFxuMTQyOTpcXHRcXG4xNDMwOlxcdFxcdGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX3VuaW5pdChuaWNfZGV2KTtcXG4xNDMxOlxcdFxcbjE0MzI6XFx0XFx0aGluaWNfZGJnX3VuaW5pdChuaWNfZGV2KTtcXG4xNDMzOlxcdFxcbjE0MzQ6XFx0XFx0aGluaWNfZnJlZV9pbnRyX2NvYWxlc2NlKG5pY19kZXYpO1xcbjE0MzU6XFx0XFxuMTQzNjpcXHRcXHRoaW5pY19wb3J0X2RlbF9tYWMobmljX2RldiwgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkciwgMCk7XFxuMTQzNzpcXHRcXG4xNDM4OlxcdFxcdGhpbmljX2h3ZGV2X2NiX3VucmVnaXN0ZXIobmljX2Rldi1cXHUwMDNlaHdkZXYsXFxuMTQzOTpcXHRcXHRcXHRcXHRcXHQgIEhJTklDX01HTVRfTVNHX0NNRF9MSU5LX0VSUl9FVkVOVCk7XFxuMTQ0MDpcXHRcXHRoaW5pY19od2Rldl9jYl91bnJlZ2lzdGVyKG5pY19kZXYtXFx1MDAzZWh3ZGV2LFxcbjE0NDE6XFx0XFx0XFx0XFx0XFx0ICBISU5JQ19NR01UX01TR19DTURfQ0FCTEVfUExVR19FVkVOVCk7XFxuMTQ0MjpcXHRcXHRoaW5pY19od2Rldl9jYl91bnJlZ2lzdGVyKG5pY19kZXYtXFx1MDAzZWh3ZGV2LFxcbjE0NDM6XFx0XFx0XFx0XFx0XFx0ICBISU5JQ19NR01UX01TR19DTURfTElOS19TVEFUVVMpO1xcbjE0NDQ6XFx0XFxuMTQ0NTpcXHRcXHRyeF9tb2RlX3dvcmsgPSBcXHUwMDI2bmljX2Rldi1cXHUwMDNlcnhfbW9kZV93b3JrO1xcbjE0NDY6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cnhfbW9kZV93b3JrLVxcdTAwM2V3b3JrKTtcXG4xNDQ3OlxcdFxcbjE0NDg6XFx0XFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xcbjE0NDk6XFx0XFxuMTQ1MDpcXHRcXHRkZXN0cm95X3dvcmtxdWV1ZShuaWNfZGV2LVxcdTAwM2V3b3JrcSk7XFxuMTQ1MTpcXHRcXG4xNDUyOlxcdFxcdGhpbmljX2ZyZWVfaHdkZXYobmljX2Rldi1cXHUwMDNlaHdkZXYpO1xcbjE0NTM6XFx0XFxuMTQ1NDpcXHRcXHRmcmVlX25ldGRldihuZXRkZXYpO1xcbjE0NTU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA5OjI5LjIyMzUyODg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNzcyNTY0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBuaWNcXF9kZXZcXF9pbml0KipcblxuQWxyaWdodCwgKm5pY1xcX2RldlxcX2luaXQqLi4uIGxldCdzIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggYSBtZW50YWwgY2hlY2tsaXN0LiBUaGlzIGlzIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlIGRldmljZSwgcmlnaHQ/IFNvLCBmaXJzdCBhbmQgZm9yZW1vc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIFdoYXQga2luZCBvZiBOSUMgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IElzIHRoaXMgRXRoZXJuZXQsIEluZmluaWJhbmQsIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPyBUaGUgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gaXMgY3J1Y2lhbCBiZWNhdXNlIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIHdpbGwgYmUgaGVhdmlseSBkZXBlbmRlbnQgb24gdGhlIHJlZ2lzdGVyIHNldHMsIHRoZSBETUEgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBpbnRlcnJ1cHQgbGluZXMuXG5cbk5leHQsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBwaGFzZXMuIFdlJ2xsIGxpa2VseSBiZSBjaGVja2luZyBmb3IgZGV2aWNlIHByZXNlbmNlLCBtYXliZSBkb2luZyBhIGhhcmR3YXJlIHJlc2V0LCBhbGxvY2F0aW5nIGFuZCBjb25maWd1cmluZyBETUEgYnVmZmVycywgbG9hZGluZyBmaXJtd2FyZSAoaWYgYXBwbGljYWJsZSksIHNldHRpbmcgdXAgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgdGhlbiBmaW5hbGx5LCByZWdpc3RlcmluZyB0aGUgZGV2aWNlIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEknbSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBoYXJkd2FyZSByZWdpc3RlcnMgYXJlIGJlaW5nIGFjY2Vzc2VkIGluIHRoaXMgcm91dGluZS4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB2YWx1ZXMuXG5cbkknbSBhbHNvIHdvbmRlcmluZyBhYm91dCB0aGUgZXJyb3IgaGFuZGxpbmcuIFdoYXQgZmFpbHVyZSBtb2RlcyBhcmUgYWNjb3VudGVkIGZvcj8gQXJlIHRoZXJlIHJldHJpZXMgd2l0aCBiYWNrb2ZmPyBBcmUgdGhlcmUgYW55IGRpYWdub3N0aWNzIGJ1aWx0LWluPyBBIHJvYnVzdCBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIG9uZSB0aGF0IGNhbiBoYW5kbGUgYSB2YXJpZXR5IG9mIGhhcmR3YXJlIGlzc3VlcyBncmFjZWZ1bGx5IGFuZCBwcm92aWRlIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHVzZXIuIEkgaG9wZSB0aGVyZSdzIGdvb2QgbG9nZ2luZy5cblxuVGhpcyBpbml0aWFsaXphdGlvbiBpcyBjcml0aWNhbC4gQSBzdWJ0bGUgYnVnIGhlcmUgY2FuIGxlYWQgdG8gaW50ZXJtaXR0ZW50IG5ldHdvcmsgcHJvYmxlbXMsIHBvb3IgcGVyZm9ybWFuY2UsIG9yIGV2ZW4gY29tcGxldGUgc3lzdGVtIGhhbmdzLiBUaGUgZGVlcGVyIEkgZ28sIHRoZSBtb3JlIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgbXV0ZXhlcyBvciBzcGlubG9ja3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHksIGVzcGVjaWFsbHkgaWYgdGhpcyByb3V0aW5lIGlzIHJ1bm5pbmcgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0LiBBbmQgb2YgY291cnNlLCBJJ2xsIGtlZXAgdGhlIE9TJ3MgZGF0YSBzdHJ1Y3R1cmVzIGluIG1pbmQ6IEFyZSB3ZSB3b3JraW5nIHdpdGggbmV0ZGV2IHN0cnVjdHVyZXMsIG9yIHNvbWUgb3RoZXIsIGRldmljZS1zcGVjaWZpYyBhYnN0cmFjdGlvbj8gQW55IGludGVyYWN0aW9uIHdpdGggbmV0bGluayBpcyBvZiBpbW1lZGlhdGUgaW50ZXJlc3QuXG5cblVsdGltYXRlbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcm91dGluZSdzIHJvbGUgaW4gZXN0YWJsaXNoaW5nIGEgc3RhYmxlLCB3ZWxsLWNvbmZpZ3VyZWQgbmV0d29yayBpbnRlcmZhY2UuIEFuZCB0aGF0IHN0YXJ0cyB3aXRoIHVuZGVyc3RhbmRpbmcgYWxsIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5J3JlIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNzE0LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTozNi4zMDA3ODkwOTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExNjA6XFx0c3RhdGljIGludCBuaWNfZGV2X2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuMTE2MTpcXHR7XFxuMTE2MjpcXHRcXHRzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrICpyeF9tb2RlX3dvcms7XFxuMTE2MzpcXHRcXHRzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2O1xcbjExNjQ6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4xMTY1OlxcdFxcdHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXY7XFxuMTE2NjpcXHRcXHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluaztcXG4xMTY3OlxcdFxcdHU4IGFkZHJbRVRIX0FMRU5dO1xcbjExNjg6XFx0XFx0aW50IGVyciwgbnVtX3FwcztcXG4xMTY5OlxcdFxcbjExNzA6XFx0XFx0ZGV2bGluayA9IGhpbmljX2RldmxpbmtfYWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuMTE3MTpcXHRcXHRpZiAoIWRldmxpbmspIHtcXG4xMTcyOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkhpbmljIGRldmxpbmsgYWxsb2MgZmFpbGVkXFxcXG5cXFwiKTtcXG4xMTczOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjExNzQ6XFx0XFx0fVxcbjExNzU6XFx0XFxuMTE3NjpcXHRcXHRod2RldiA9IGhpbmljX2luaXRfaHdkZXYocGRldiwgZGV2bGluayk7XFxuMTE3NzpcXHRcXHRpZiAoSVNfRVJSKGh3ZGV2KSkge1xcbjExNzg6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgSFcgZGV2aWNlXFxcXG5cXFwiKTtcXG4xMTc5OlxcdFxcdFxcdGhpbmljX2RldmxpbmtfZnJlZShkZXZsaW5rKTtcXG4xMTgwOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGh3ZGV2KTtcXG4xMTgxOlxcdFxcdH1cXG4xMTgyOlxcdFxcbjExODM6XFx0XFx0bnVtX3FwcyA9IGhpbmljX2h3ZGV2X251bV9xcHMoaHdkZXYpO1xcbjExODQ6XFx0XFx0aWYgKG51bV9xcHMgXFx1MDAzYz0gMCkge1xcbjExODU6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBudW1iZXIgb2YgUVBTXFxcXG5cXFwiKTtcXG4xMTg2OlxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuMTE4NzpcXHRcXHRcXHRnb3RvIGVycl9udW1fcXBzO1xcbjExODg6XFx0XFx0fVxcbjExODk6XFx0XFxuMTE5MDpcXHRcXHRuZXRkZXYgPSBhbGxvY19ldGhlcmRldl9tcShzaXplb2YoKm5pY19kZXYpLCBudW1fcXBzKTtcXG4xMTkxOlxcdFxcdGlmICghbmV0ZGV2KSB7XFxuMTE5MjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgRXRoZXJuZXQgZGV2aWNlXFxcXG5cXFwiKTtcXG4xMTkzOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuMTE5NDpcXHRcXHRcXHRnb3RvIGVycl9hbGxvY19ldGhlcmRldjtcXG4xMTk1OlxcdFxcdH1cXG4xMTk2OlxcdFxcbjExOTc6XFx0XFx0aWYgKCFISU5JQ19JU19WRihod2Rldi1cXHUwMDNlaHdpZikpXFxuMTE5ODpcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2aGluaWNfbmV0ZGV2X29wcztcXG4xMTk5OlxcdFxcdGVsc2VcXG4xMjAwOlxcdFxcdFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZoaW5pY3ZmX25ldGRldl9vcHM7XFxuMTIwMTpcXHRcXG4xMjAyOlxcdFxcdG5ldGRldi1cXHUwMDNlbWF4X210dSA9IEhJTklDX01BWF9NVFVfU0laRTtcXG4xMjAzOlxcdFxcdG5ldGRldi1cXHUwMDNlbWluX210dSA9IEhJTklDX01JTl9NVFVfU0laRTtcXG4xMjA0OlxcdFxcbjEyMDU6XFx0XFx0bmljX2RldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuMTIwNjpcXHRcXHRuaWNfZGV2LVxcdTAwM2VuZXRkZXYgPSBuZXRkZXY7XFxuMTIwNzpcXHRcXHRuaWNfZGV2LVxcdTAwM2Vod2RldiAgPSBod2RldjtcXG4xMjA4OlxcdFxcdG5pY19kZXYtXFx1MDAzZW1zZ19lbmFibGUgPSBNU0dfRU5BQkxFX0RFRkFVTFQ7XFxuMTIwOTpcXHRcXHRuaWNfZGV2LVxcdTAwM2VmbGFncyA9IDA7XFxuMTIxMDpcXHRcXHRuaWNfZGV2LVxcdTAwM2V0eHFzID0gTlVMTDtcXG4xMjExOlxcdFxcdG5pY19kZXYtXFx1MDAzZXJ4cXMgPSBOVUxMO1xcbjEyMTI6XFx0XFx0bmljX2Rldi1cXHUwMDNldHhfd2VpZ2h0ID0gdHhfd2VpZ2h0O1xcbjEyMTM6XFx0XFx0bmljX2Rldi1cXHUwMDNlcnhfd2VpZ2h0ID0gcnhfd2VpZ2h0O1xcbjEyMTQ6XFx0XFx0bmljX2Rldi1cXHUwMDNlc3FfZGVwdGggPSBISU5JQ19TUV9ERVBUSDtcXG4xMjE1OlxcdFxcdG5pY19kZXYtXFx1MDAzZXJxX2RlcHRoID0gSElOSUNfUlFfREVQVEg7XFxuMTIxNjpcXHRcXHRuaWNfZGV2LVxcdTAwM2Vzcmlvdl9pbmZvLmh3ZGV2ID0gaHdkZXY7XFxuMTIxNzpcXHRcXHRuaWNfZGV2LVxcdTAwM2Vzcmlvdl9pbmZvLnBkZXYgPSBwZGV2O1xcbjEyMTg6XFx0XFx0bmljX2Rldi1cXHUwMDNlbWF4X3FwcyA9IG51bV9xcHM7XFxuMTIxOTpcXHRcXHRuaWNfZGV2LVxcdTAwM2VkZXZsaW5rID0gZGV2bGluaztcXG4xMjIwOlxcdFxcbjEyMjE6XFx0XFx0aGluaWNfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XFxuMTIyMjpcXHRcXG4xMjIzOlxcdFxcdHNlbWFfaW5pdChcXHUwMDI2bmljX2Rldi1cXHUwMDNlbWdtdF9sb2NrLCAxKTtcXG4xMjI0OlxcdFxcbjEyMjU6XFx0XFx0bmljX2Rldi1cXHUwMDNldmxhbl9iaXRtYXAgPSBkZXZtX2JpdG1hcF96YWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgVkxBTl9OX1ZJRCxcXG4xMjI2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuMTIyNzpcXHRcXHRpZiAoIW5pY19kZXYtXFx1MDAzZXZsYW5fYml0bWFwKSB7XFxuMTIyODpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjEyMjk6XFx0XFx0XFx0Z290byBlcnJfdmxhbl9iaXRtYXA7XFxuMTIzMDpcXHRcXHR9XFxuMTIzMTpcXHRcXG4xMjMyOlxcdFxcdG5pY19kZXYtXFx1MDAzZXdvcmtxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoSElOSUNfV1FfTkFNRSk7XFxuMTIzMzpcXHRcXHRpZiAoIW5pY19kZXYtXFx1MDAzZXdvcmtxKSB7XFxuMTIzNDpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjEyMzU6XFx0XFx0XFx0Z290byBlcnJfd29ya3E7XFxuMTIzNjpcXHRcXHR9XFxuMTIzNzpcXHRcXG4xMjM4OlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBuZXRkZXYpO1xcbjEyMzk6XFx0XFxuMTI0MDpcXHRcXHRlcnIgPSBoaW5pY19wb3J0X2dldF9tYWMobmljX2RldiwgYWRkcik7XFxuMTI0MTpcXHRcXHRpZiAoZXJyKSB7XFxuMTI0MjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gZ2V0IG1hYyBhZGRyZXNzXFxcXG5cXFwiKTtcXG4xMjQzOlxcdFxcdFxcdGdvdG8gZXJyX2dldF9tYWM7XFxuMTI0NDpcXHRcXHR9XFxuMTI0NTpcXHRcXHRldGhfaHdfYWRkcl9zZXQobmV0ZGV2LCBhZGRyKTtcXG4xMjQ2OlxcdFxcbjEyNDc6XFx0XFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKG5ldGRldi1cXHUwMDNlZGV2X2FkZHIpKSB7XFxuMTI0ODpcXHRcXHRcXHRpZiAoIUhJTklDX0lTX1ZGKG5pY19kZXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmKSkge1xcbjEyNDk6XFx0XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBNQUMgYWRkcmVzc1xcXFxuXFxcIik7XFxuMTI1MDpcXHRcXHRcXHRcXHRlcnIgPSAtRUlPO1xcbjEyNTE6XFx0XFx0XFx0XFx0Z290byBlcnJfYWRkX21hYztcXG4xMjUyOlxcdFxcdFxcdH1cXG4xMjUzOlxcdFxcbjEyNTQ6XFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgTUFDIGFkZHJlc3MgJXBNLCB1c2luZyByYW5kb21cXFxcblxcXCIsXFxuMTI1NTpcXHRcXHRcXHRcXHQgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuMTI1NjpcXHRcXHRcXHRldGhfaHdfYWRkcl9yYW5kb20obmV0ZGV2KTtcXG4xMjU3OlxcdFxcdH1cXG4xMjU4OlxcdFxcbjEyNTk6XFx0XFx0ZXJyID0gaGluaWNfcG9ydF9hZGRfbWFjKG5pY19kZXYsIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIsIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTozNi4zMDEwMDk0MTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NDg3ODQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgaGluaWNfaW5pdF9od2RldmAqKlxuXG5Pa2F5LCBgaGluaWNfaW5pdF9od2RldmAgaGFzIGJlZW4gaW52b2tlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHBvdGVudGlhbCBjb21wbGV4aXR5IGhlcmUuIEJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXQgc3VnZ2VzdHMgdGhpcyByb3V0aW5lIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlIGRldmljZSwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlcmUgd2lsbCBsaWtlbHkgYmUgbG93LWxldmVsIGhhcmR3YXJlIGludGVyYWN0aW9ucy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIHRvIGNvbmZpcm0sIGJ1dCBJJ20gZXhwZWN0aW5nIHJlZ2lzdGVyIGFjY2Vzc2VzLCBwb3RlbnRpYWxseSBETUEgc2V0dXAsIGludGVycnVwdCBjb25maWd1cmF0aW9uLCBhbmQgcG9zc2libHkgZXZlbiBmaXJtd2FyZSBsb2FkaW5nIG9yIGNvbW11bmljYXRpb24uIEknbGwgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBzY29wZSBvZiB0aGVzZSBvcGVyYXRpb25zIHRvIGRldGVybWluZSBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIGJvdHRsZW5lY2tzLCBvciByYWNlIGNvbmRpdGlvbnMuIEtub3dpbmcgd2hhdCBzcGVjaWZpYyBoYXJkd2FyZSByZXNvdXJjZXMgdGhlIGZ1bmN0aW9uIHRhcmdldHMgaXMgZ29pbmcgdG8gYmUgbXkgaW1tZWRpYXRlIHByaW9yaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg4MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDk6MzkuNTY1ODkwNDk0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ0NzUyODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGluaWNfaW5pdF9od2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYz04NjE9aW50IGhpbmljX3NldF9pbnRlcnJ1cHRfY2ZnKHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmMtODk2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYzo4OTc6ICogaGluaWNfaW5pdF9od2RldiAtIEluaXRpYWxpemUgdGhlIE5JQyBIV1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy04OTgtICogQHBkZXY6IHRoZSBOSUMgcGNpIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jLTkwNC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jOjkwNTpzdHJ1Y3QgaGluaWNfaHdkZXYgKmhpbmljX2luaXRfaHdkZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy05MDYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oPTYyOT12b2lkIGhpbmljX2h3ZGV2X2lmZG93bihzdHJ1Y3QgaGluaWNfaHdkZXYgKmh3ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmgtNjMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaDo2MzE6c3RydWN0IGhpbmljX2h3ZGV2ICpoaW5pY19pbml0X2h3ZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oLTYzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTE2MD1zdGF0aWMgaW50IG5pY19kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjExNzY6XFx0aHdkZXYgPSBoaW5pY19pbml0X2h3ZGV2KHBkZXYsIGRldmxpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTE3Ny1cXHRpZiAoSVNfRVJSKGh3ZGV2KSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTo0MC4wMzAzNzMwMDhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MzE1NjI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudDpcblxuKipEaXZpbmcgaW50byBoaW5pY1xcX2luaXRcXF9od2RldioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoaXMgYGhpbmljX2luaXRfaHdkZXZgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIHNjb3BlLiBJcyB0aGlzIGEgdG9wLWxldmVsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBvciBzb21ldGhpbmcgZGVlcGVyIGluIHRoZSBkcml2ZXIgc3RhY2s/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgdGFyZ2V0IGhhcmR3YXJlIOKAkyB0aGUgc3BlY2lmaWMgTklDIG1vZGVsLCB0aGUgaW50ZW5kZWQgb3BlcmF0aW5nIGVudmlyb25tZW50LCBhbmQgd2hhdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS4gS25vd2luZyB0aGUgaGFyZHdhcmUgaXMga2V5LlxuXG5NeSBmb2N1cyBpcyBzaGlmdGluZyB0byBob3cgaXQgaGFuZGxlcyBoYXJkd2FyZSByZXNvdXJjZXMuIERvZXMgaXQgY2FsbCBmdW5jdGlvbnMgdG8gbWFwIG1lbW9yeSwgcmVxdWVzdCBpbnRlcnJ1cHRzLCBvciBtYW5hZ2UgRE1BIGNoYW5uZWxzPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGRlYWxzIHdpdGggcG90ZW50aWFsIGNvbmZsaWN0cyDigJMgZG9lcyBpdCBjaGVjayBmb3IgcmVzb3VyY2UgYXZhaWxhYmlsaXR5IGJlZm9yZSBhdHRlbXB0aW5nIHRvIGFsbG9jYXRlIHRoZW0/IEFyZSB0aGVyZSBhbnkgZXJyb3IgaGFuZGxpbmcgcGF0aHM/IEknbGwgYmUgc2NydXRpbml6aW5nIHRoZSByZXR1cm4gY29kZXMgYW5kIGVycm9yIG1lc3NhZ2VzLCBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2Ygd2Vha25lc3Mgb3Igb3Bwb3J0dW5pdGllcyBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuXG5cbkknbSBhbHNvIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBpdCBhY2NlcHRzLiBBcmUgdGhlc2UgaGFyZGNvZGVkLCBvciBkeW5hbWljYWxseSBkZXJpdmVkIGZyb20gdGhlIHBsYXRmb3JtPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMsIGxpa2UgcmVnaXN0ZXIgYWNjZXNzIHByb3RlY3Rpb25zLCBvciBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3M/IEhvdyBkb2VzIGl0IGludGVncmF0ZSB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIGxpa2UgdGhlIE5JQydzIGZpcm13YXJlIGludGVyZmFjZSBvciB0aGUgbmV0d29yayBzdGFjayBpdHNlbGY/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuIExldCdzIHNlZSBob3cgaXQgZ29lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3MTEsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTo0My45MTM1MzEzMDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MDUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTA1OlxcdHN0cnVjdCBoaW5pY19od2RldiAqaGluaWNfaW5pdF9od2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGRldmxpbmsgKmRldmxpbmspXFxuIDkwNjpcXHR7XFxuIDkwNzpcXHRcXHRzdHJ1Y3QgaGluaWNfcGZod2RldiAqcGZod2RldjtcXG4gOTA4OlxcdFxcdHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXY7XFxuIDkwOTpcXHRcXHRzdHJ1Y3QgaGluaWNfaHdpZiAqaHdpZjtcXG4gOTEwOlxcdFxcdGludCBlcnIsIG51bV9hZXFzO1xcbiA5MTE6XFx0XFxuIDkxMjpcXHRcXHRod2lmID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqaHdpZiksIEdGUF9LRVJORUwpO1xcbiA5MTM6XFx0XFx0aWYgKCFod2lmKVxcbiA5MTQ6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDkxNTpcXHRcXG4gOTE2OlxcdFxcdGVyciA9IGhpbmljX2luaXRfaHdpZihod2lmLCBwZGV2KTtcXG4gOTE3OlxcdFxcdGlmIChlcnIpIHtcXG4gOTE4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBpbml0IEhXIGludGVyZmFjZVxcXFxuXFxcIik7XFxuIDkxOTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiA5MjA6XFx0XFx0fVxcbiA5MjE6XFx0XFxuIDkyMjpcXHRcXHRwZmh3ZGV2ID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcGZod2RldiksIEdGUF9LRVJORUwpO1xcbiA5MjM6XFx0XFx0aWYgKCFwZmh3ZGV2KSB7XFxuIDkyNDpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiA5MjU6XFx0XFx0XFx0Z290byBlcnJfcGZod2Rldl9hbGxvYztcXG4gOTI2OlxcdFxcdH1cXG4gOTI3OlxcdFxcbiA5Mjg6XFx0XFx0aHdkZXYgPSBcXHUwMDI2cGZod2Rldi1cXHUwMDNlaHdkZXY7XFxuIDkyOTpcXHRcXHRod2Rldi1cXHUwMDNlaHdpZiA9IGh3aWY7XFxuIDkzMDpcXHRcXHRod2Rldi1cXHUwMDNlZGV2bGlua19kZXYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7XFxuIDkzMTpcXHRcXHRod2Rldi1cXHUwMDNlZGV2bGlua19kZXYtXFx1MDAzZWh3ZGV2ID0gaHdkZXY7XFxuIDkzMjpcXHRcXG4gOTMzOlxcdFxcdGVyciA9IGluaXRfbXNpeChod2Rldik7XFxuIDkzNDpcXHRcXHRpZiAoZXJyKSB7XFxuIDkzNTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBtc2l4XFxcXG5cXFwiKTtcXG4gOTM2OlxcdFxcdFxcdGdvdG8gZXJyX2luaXRfbXNpeDtcXG4gOTM3OlxcdFxcdH1cXG4gOTM4OlxcdFxcbiA5Mzk6XFx0XFx0ZXJyID0gd2FpdF9mb3Jfb3V0Ym91bmRfc3RhdGUoaHdkZXYpO1xcbiA5NDA6XFx0XFx0aWYgKGVycikge1xcbiA5NDE6XFx0XFx0XFx0ZGV2X3dhcm4oXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIm91dGJvdW5kIC0gZGlzYWJsZWQsIHRyeSBhZ2FpblxcXFxuXFxcIik7XFxuIDk0MjpcXHRcXHRcXHRoaW5pY19vdXRib3VuZF9zdGF0ZV9zZXQoaHdpZiwgSElOSUNfT1VUQk9VTkRfRU5BQkxFKTtcXG4gOTQzOlxcdFxcdH1cXG4gOTQ0OlxcdFxcbiA5NDU6XFx0XFx0bnVtX2FlcXMgPSBISU5JQ19IV0lGX05VTV9BRVFTKGh3aWYpO1xcbiA5NDY6XFx0XFxuIDk0NzpcXHRcXHRlcnIgPSBoaW5pY19hZXFzX2luaXQoXFx1MDAyNmh3ZGV2LVxcdTAwM2VhZXFzLCBod2lmLCBudW1fYWVxcyxcXG4gOTQ4OlxcdFxcdFxcdFxcdCAgICAgIEhJTklDX0RFRkFVTFRfQUVRX0xFTiwgSElOSUNfRVFfUEFHRV9TSVpFLFxcbiA5NDk6XFx0XFx0XFx0XFx0ICAgICAgaHdkZXYtXFx1MDAzZW1zaXhfZW50cmllcyk7XFxuIDk1MDpcXHRcXHRpZiAoZXJyKSB7XFxuIDk1MTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBhc3luYyBldmVudCBxdWV1ZXNcXFxcblxcXCIpO1xcbiA5NTI6XFx0XFx0XFx0Z290byBlcnJfYWVxc19pbml0O1xcbiA5NTM6XFx0XFx0fVxcbiA5NTQ6XFx0XFxuIDk1NTpcXHRcXHRlcnIgPSBpbml0X3BmaHdkZXYocGZod2Rldik7XFxuIDk1NjpcXHRcXHRpZiAoZXJyKSB7XFxuIDk1NzpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBQRiBIVyBkZXZpY2VcXFxcblxcXCIpO1xcbiA5NTg6XFx0XFx0XFx0Z290byBlcnJfaW5pdF9wZmh3ZGV2O1xcbiA5NTk6XFx0XFx0fVxcbiA5NjA6XFx0XFxuIDk2MTpcXHRcXHRlcnIgPSBoaW5pY19sMm5pY19yZXNldChod2Rldik7XFxuIDk2MjpcXHRcXHRpZiAoZXJyKVxcbiA5NjM6XFx0XFx0XFx0Z290byBlcnJfbDJuaWNfcmVzZXQ7XFxuIDk2NDpcXHRcXG4gOTY1OlxcdFxcdGVyciA9IGdldF9kZXZfY2FwKGh3ZGV2KTtcXG4gOTY2OlxcdFxcdGlmIChlcnIpIHtcXG4gOTY3OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBnZXQgZGV2aWNlIGNhcGFiaWxpdGllc1xcXFxuXFxcIik7XFxuIDk2ODpcXHRcXHRcXHRnb3RvIGVycl9kZXZfY2FwO1xcbiA5Njk6XFx0XFx0fVxcbiA5NzA6XFx0XFxuIDk3MTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZod2Rldi1cXHUwMDNlZnVuY190b19pby5uaWNfY2ZnLmNmZ19tdXRleCk7XFxuIDk3MjpcXHRcXG4gOTczOlxcdFxcdGVyciA9IGhpbmljX3ZmX2Z1bmNfaW5pdChod2Rldik7XFxuIDk3NDpcXHRcXHRpZiAoZXJyKSB7XFxuIDk3NTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBuaWMgbWJveFxcXFxuXFxcIik7XFxuIDk3NjpcXHRcXHRcXHRnb3RvIGVycl92Zl9mdW5jX2luaXQ7XFxuIDk3NzpcXHRcXHR9XFxuIDk3ODpcXHRcXG4gOTc5OlxcdFxcdGVyciA9IGluaXRfZndfY3R4dChod2Rldik7XFxuIDk4MDpcXHRcXHRpZiAoZXJyKSB7XFxuIDk4MTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBmdW5jdGlvbiB0YWJsZVxcXFxuXFxcIik7XFxuIDk4MjpcXHRcXHRcXHRnb3RvIGVycl9pbml0X2Z3X2N0eHQ7XFxuIDk4MzpcXHRcXHR9XFxuIDk4NDpcXHRcXG4gOTg1OlxcdFxcdGVyciA9IHNldF9yZXNvdXJjZXNfc3RhdGUoaHdkZXYsIEhJTklDX1JFU19BQ1RJVkUpO1xcbiA5ODY6XFx0XFx0aWYgKGVycikge1xcbiA5ODc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHNldCByZXNvdXJjZXMgc3RhdGVcXFxcblxcXCIpO1xcbiA5ODg6XFx0XFx0XFx0Z290byBlcnJfcmVzb3VyY2VzX3N0YXRlO1xcbiA5ODk6XFx0XFx0fVxcbiA5OTA6XFx0XFxuIDk5MTpcXHRcXHRyZXR1cm4gaHdkZXY7XFxuIDk5MjpcXHRcXG4gOTkzOlxcdGVycl9yZXNvdXJjZXNfc3RhdGU6XFxuIDk5NDpcXHRlcnJfaW5pdF9md19jdHh0OlxcbiA5OTU6XFx0XFx0aGluaWNfdmZfZnVuY19mcmVlKGh3ZGV2KTtcXG4gOTk2OlxcdGVycl92Zl9mdW5jX2luaXQ6XFxuIDk5NzpcXHRlcnJfbDJuaWNfcmVzZXQ6XFxuIDk5ODpcXHRlcnJfZGV2X2NhcDpcXG4gOTk5OlxcdFxcdGZyZWVfcGZod2RldihwZmh3ZGV2KTtcXG4xMDAwOlxcdFxcbjEwMDE6XFx0ZXJyX2luaXRfcGZod2RldjpcXG4xMDAyOlxcdFxcdGhpbmljX2FlcXNfZnJlZShcXHUwMDI2aHdkZXYtXFx1MDAzZWFlcXMpO1xcbjEwMDM6XFx0XFxuMTAwNDpcXHRlcnJfYWVxc19pbml0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTo0My45MTM2Mzk1MTNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5MjIyNDc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBIaU5JQyBEZXZsaW5rIEZsYXNoIFVwZGF0ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgYXJvdW5kIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U6IGBoaW5pY19pbml0X2h3aWZgLCBgaW5pdF9tc2l4YCwgYHdhaXRfZm9yX291dGJvdW5kX3N0YXRlYCwgYGhpbmljX2FlcXNfaW5pdGAsIGBpbml0X3BmaHdkZXZgLCBgaGluaWNfbDJuaWNfcmVzZXRgLCBgZ2V0X2Rldl9jYXBgLCBgaGluaWNfdmZfZnVuY19pbml0YCwgYGluaXRfZndfY3R4dGAsIGBzZXRfcmVzb3VyY2VzX3N0YXRlYC4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIGludGVyYWN0aW5nIHdpdGggUENJIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzOyB0aGF0J3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuXG5cbkdpdmVuIHRoYXQsIEknbSB0aGlua2luZyBhYm91dCBTeXprYWxsZXIgYW5kIGl0cyB2UENJIGZ1enplci4gSWYgaXQncyBpbnRlcmNlcHRpbmcgdGhvc2UgcmVhZHMgYW5kIHdyaXRlcywgaXQgb3BlbnMgYSBodWdlIGF0dGFjayBzdXJmYWNlLiBDb3VsZCBpdCBwcm9iZSB0aGlzIGRldmljZSBlZmZlY3RpdmVseT8gQW5kIGlmIHNvLCBjYW4gaXQgdGhlbiByZWFjaCB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGU/XG5cbkFoLCByaWdodCwgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIGlzIHRyaWdnZXJlZCBieSBuZXRsaW5rLiBTbywgdGhhdCdzIHRoZSB2ZWN0b3IuIEFuZCB0aGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYGNoZWNrX2ltYWdlX3ZhbGlkYCB3aXRoaW4gYGhpbmljX2RldmxpbmsuY2AuIFRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBoaW5pY19maXJtd2FyZV91cGRhdGVgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgIOKAkyB0aGUgYC5mbGFzaF91cGRhdGVgIGNhbGxiYWNrIGZvciBkZXZsaW5rLlxuXG5TbywgU3l6a2FsbGVyICpzaG91bGQqIGJlIGFibGUgdG8gcmVhY2ggdGhpcyBieSBjcmFmdGluZyBhIGRldmxpbmsgbmV0bGluayBtZXNzYWdlIHRvIHVwZGF0ZSB0aGUgZmlybXdhcmUuIEFuZCB0aGUgZmlybXdhcmUgZGF0YSBpdHNlbGYsIHRoYXQncyBlaXRoZXIgdXNlci1wcm92aWRlZCAob3IgbG9hZGVkIGJ5IGByZXF1ZXN0X2Zpcm13YXJlYCkuXG5cbldhaXQsIHRoZSBmdW5jdGlvbiBzaWduYXR1cmU6IGBoaW5pY19maXJtd2FyZV91cGRhdGVgIHRha2VzIGBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3YC4gTm93LCB3aGVyZSBkb2VzIGBmd2AgY29tZSBmcm9tPyBSaWdodCwgYGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zYCBoYXMgYHBhcmFtcy1cdTAwM2Vmd2AuXG5cblRoZSB1c2VyIGlzIHByb3ZpZGluZyB0aGUgZmlybXdhcmUgZmlsZW5hbWUsIGFuZCB0aGUga2VybmVsIGxvYWRzIGl0IHZpYSBgcmVxdWVzdF9maXJtd2FyZWAuIE9yIHRoZSB1c2VyIGNvdWxkIGJ5cGFzcyB0aGF0IGFuZCBmZWVkIHRoZSBkYXRhIGRpcmVjdGx5IHRocm91Z2ggbmV0bGluazsgdGhhdCdzIHdoYXQgdGhlIGRldmxpbmsgYWxsb3dzLiBUaGlzIGlzIHZlcnkgZ29vZCBiZWNhdXNlIHN5emthbGxlcidzIGZpcm13YXJlIGZ1enplciBjYW4gaW50ZXJjZXB0IGByZXF1ZXN0X2Zpcm13YXJlYC4gVGhpcyBtYWtlcyB0aGlzIGNvZGUgcGF0aCAqZXh0cmVtZWx5KiBmdXp6YWJsZSwgYXMgU3l6a2FsbGVyIGNhbiBwcm92aWRlIHRoZSBmdXp6ZWQgZGF0YS5cblxuR2l2ZW4gdGhhdCwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgdGFyZ2V0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGNoZWNrX2ltYWdlX3ZhbGlkYCBpcyByZWFjaGFibGUsIGJ1dCB0aGUgcGllY2VzIGFyZSBhbGwgdGhlcmUuIFRoaXMgaXMgYSB2ZXJ5IHByb21pc2luZyBhdmVudWUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjQ4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDk6NTIuMDA1ODY3NzY4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ2OTQ5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hlY2tfaW1hZ2VfdmFsaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTIzPXN0YXRpYyBib29sIGhpbmljX2Z3X3NlY3Rpb25fdmFsaWQodTMyIGZ3X2xlbiwgdTMyIG9mZnNldCwgdTMyIGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyODpzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjktXFx0XFx0XFx0ICAgICAgc2l6ZV90IGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz0yODM9c3RhdGljIGludCBoaW5pY19maXJtd2FyZV91cGRhdGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjkyOlxcdGlmICghY2hlY2tfaW1hZ2VfdmFsaWQocHJpdiwgZnctXFx1MDAzZWRhdGEsIGZ3LVxcdTAwM2VzaXplLCBcXHUwMDI2aG9zdF9pbWFnZSkgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI5My1cXHQgICAgIWNoZWNrX2ltYWdlX2ludGVncml0eShwcml2LCBcXHUwMDI2aG9zdF9pbWFnZSwgRldfVVBEQVRFX0NPTEQpIHx8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA5OjUyLjEzMDU5MDQ1OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDc0ODI5MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIFZ1bG5lcmFiaWxpdHkgRml4KipcblxuT2theSwgc28gYGNoZWNrX2ltYWdlX3ZhbGlkYCAqaXMqIGNhbGxlZCB3aXRoaW4gYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWAsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gVGhpcyBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIGBjaGVja19pbWFnZV92YWxpZGAuIFRoZSBkaWZmIHJlYWxseSBoaWdobGlnaHRzIHRoZSBpc3N1ZTogdGhleSdyZSBjaGFuZ2luZyB0aGUgbGVuZ3RoIGNoZWNrcywgd2hpY2ggaXMgYSBjb21tb24gYXJlYSBmb3IgdGhlc2Uga2luZHMgb2YgcHJvYmxlbXMuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwcmV0dHkgc3VzcGVjdDpcblxuYGBgY1xuLVx0aWYgKGxlbiAhPSBmd19pbWFnZS1cdTAwM2Vmd19sZW4gfHxcbi1cdCAgICAoZndfaW1hZ2UtXHUwMDNlZndfbGVuICsgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSAhPSBpbWFnZV9zaXplKSB7XG5gYGBcblxuQW5kIGl0IGxvb2tzIGxpa2UgdGhlIGZpeCBjb3JyZWN0cyBpdCB0bzpcblxuYGBgY1xuK1x0aWYgKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbiAhPSBpbWFnZV9zaXplIC0gVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG5gYGBcblxuVGhhdCdzIGEgbXVjaCBtb3JlIHJvYnVzdCBjaGVjay4gQW5kIHRoZW4gdGhlcmUncyBhbHNvIHRoZSBhZGRpdGlvbiBvZiB0aGlzIHNhZmV0eSBjaGVjayB3aXRoaW4gdGhlIGxvb3A6XG5cbmBgYGNcbitcdFx0aWYgKCFoaW5pY19md19zZWN0aW9uX3ZhbGlkKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbixcbitcdFx0XHRcdFx0ICAgIHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9vZmZzZXQsXG4rXHRcdFx0XHRcdCAgICBzZWN0aW9uLVx1MDAzZWZ3X3NlY3Rpb25fbGVuKSkge1xuYGBgXG5cblllYWgsIHRoYXQgYGhpbmljX2Z3X3NlY3Rpb25fdmFsaWRgIGNhbGwgaXMgZGVmaW5pdGVseSBhIGdvb2QgYWRkaXRpb24sIGhlbHBpbmcgZW5zdXJlIHNlY3Rpb24gZGF0YSBpcyB3aXRoaW4gZXhwZWN0ZWQgYm91bmRzLiBDbGFzc2ljIGZpcm13YXJlIHBhcnNpbmcgdnVsbmVyYWJpbGl0eSBtaXRpZ2F0aW9uLiBHaXZlbiB0aGF0IHN5emthbGxlciBjYW4gZnV6eiBmaXJtd2FyZSBmaWxlcyBhbmQgaW50ZXJhY3Qgd2l0aCBkZXZsaW5rLCB0aGlzIGlzIGFic29sdXRlbHkgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBjYW4gbGlrZWx5IGZpbmQgc29tZSBpbnRlcmVzdGluZyBidWdzIGhlcmUuXG5cblJpZ2h0LCBzbyBsZXQncyBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gSSdsbCBmb2N1cyBvbiB0aGVzZTpcblxuKiAgIGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWBcbiogICBgaGluaWNfZmlybXdhcmVfdXBkYXRlYFxuKiAgIGBjaGVja19pbWFnZV92YWxpZGBcbiogICBgY2hlY2tfaW1hZ2VfaW50ZWdyaXR5YFxuKiAgIGBoaW5pY19mbGFzaF9md2BcblxuQW5kIGxldCdzIG1ha2Ugc3VyZSB0aGUgZHJpdmVyIGNvbmZpZyBpcyBpbiBwbGFjZSB0byBhbGxvdyB0aGUgZnV6emluZyB0byBiZSBlZmZlY3RpdmUuIEFoLCBpdCdzIGBDT05GSUdfSElOSUNgLCBnb29kLCBzbyB3ZSBqdXN0IG5lZWQgdG8gZW5zdXJlIHRoYXQncyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAxMiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTo1OC42MDU0MjIxNzZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDM2Mjg0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSElOSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjY6Y29uZmlnIEhJTklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiSHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDk6NTguNzE1NzkxNzY3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNzEyNzU1MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJ3ZlIGdvdCBteSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gc2V0LCBidXQgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2sgZm9yIGFueSBvdmVybG9va2VkIG9yIHNlY29uZGFyeSBjb25maWd1cmF0aW9ucywgZXh0ZXJuYWwgc291cmNlcywgb3Igb3ZlcnJpZGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIEknbSB0aGlua2luZywgXCJJcyB0aGVyZSBhbm90aGVyIGNvbmZpZyBmaWxlLCBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3Igc29tZSBhdXRvbWF0ZWQgcHJvY2VzcyBJJ3ZlIGZvcmdvdHRlbiBhYm91dCB0aGF0IGNvdWxkIGJlIGFmZmVjdGluZyB0aGVzZSBzZXR0aW5ncz9cIiBJdCdzIGEgZnVuZGFtZW50YWwgc2FuaXR5IGNoZWNrOiBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHRoZSBvbmx5IG9uZSBpbiBwbGF5LiBJIGRvbid0IHdhbnQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGdob3N0cy4gTGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgc3VycHJpc2UgcGFyYW1ldGVycyBvciBjb25mbGljdGluZyBzZXR0aW5ncyBiZWZvcmUgSSBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4OTYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzoxMDowMy4wODcwNzA3MTVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEh1YXdlaSBkcml2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgSElOSUNcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJIdWF3ZWkgSW50ZWxsaWdlbnQgUENJRSBOZXR3b3JrIEludGVyZmFjZSBDYXJkXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAoUENJX01TSSBcXHUwMDI2XFx1MDAyNiAoWDg2IHx8IEFSTTY0KSlcXG4gICA5OlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBIaU5JQyBQQ0lFIEV0aGVybmV0IGNhcmRzLlxcbiAgMTI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIHBhcnQgb2YgdGhlIGtlcm5lbCwgY2hvb3NlIFkgaGVyZS5cXG4gIDEzOlxcdFxcdCAgSWYgdW5zdXJlLCBjaG9vc2UgTi5cXG4gIDE0OlxcdFxcdCAgVGhlIGRlZmF1bHQgaXMgY29tcGlsZWQgYXMgbW9kdWxlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzoxMDowMy4wODcyMDM2NzVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4NDA5MTUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhJTklDIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYENPTkZJR19ISU5JQ2Agb3B0aW9uIGlzIHRoZSBjZW50cmFsIHBpZWNlIGhlcmUuIEl0J3MgdGhlIG1haW4gY29uZmlndXJhdGlvbiBpdGVtIHdlJ3JlIGNvbmNlcm5lZCB3aXRoLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBkZXBlbmRpbmcgb24gYFBDSV9NU0lgIGFuZCBlaXRoZXIgYW4gYFg4NmAgb3IgYEFSTTY0YCBhcmNoaXRlY3R1cmUuIEl0IGFsc28gYXV0b21hdGljYWxseSBlbmFibGVzIGBORVRfREVWTElOS2AsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBtb2Rlcm4gbmV0d29yayBkZXZpY2VzLCBidXQgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWdzIG1lc3Npbmcgd2l0aCBkZXZsaW5rIG9yIGZpcm13YXJlIGZ1bmN0aW9uYWxpdHkuIE5vcGUsIGBDT05GSUdfSElOSUNgIHRha2VzIGNhcmUgb2YgZXZlcnl0aGluZy5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBmbGFzaGluZyBhbmQgZmlybXdhcmUgdXBkYXRlIHByb2Nlc3NlczogYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCwgYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWAsIGBjaGVja19pbWFnZV92YWxpZGAsIGBjaGVja19pbWFnZV9pbnRlZ3JpdHlgLCBhbmQgYGhpbmljX2ZsYXNoX2Z3YC4gVGhlc2UgYXJlIHRoZSBhY3R1YWwgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBkb2luZyB0aGUgaGVhdnkgbGlmdGluZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCBpcyBuYW1lZCBjb3JyZWN0bHksIGFzIGRldmxpbmsgYW5kIGZpcm13YXJlIHVwZGF0ZSBmdW5jdGlvbmFsaXRpZXMgYXJlIG5vcm1hbGx5IGRpc3RpbmN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMxNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjEwOjA3LjI3MTMwMDY4N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMDQzNTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz0yODM9c3RhdGljIGludCBoaW5pY19maXJtd2FyZV91cGRhdGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzIyOnN0YXRpYyBpbnQgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGUoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz0zMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBoaW5pY19kZXZsaW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjMzMjpcXHQuZmxhc2hfdXBkYXRlID0gaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzMtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MTA6MDcuMzgxMzU0MDQ4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3ODI4NjE5Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhpbmljIERyaXZlciBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgLCByaWdodD8gTGV0IG1lIHNlZSB3aGF0IGVsc2UgaGFzIGNoYW5nZWQgb3IgaXMgcmVsYXRlZC4gQWgsIGBoaW5pY19md19zZWN0aW9uX3ZhbGlkYCBpcyBuZXcuIFNvLCB3ZSd2ZSBnb3Q6XG5cbiogICBgaGluaWNfZndfc2VjdGlvbl92YWxpZGBcbiogICBgY2hlY2tfaW1hZ2VfdmFsaWRgXG4qICAgYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWBcbiogICBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgXG5cbkFueXRoaW5nIGVsc2U/XG5cblJpZ2h0LCB0aGUgdnVsbmVyYWJpbGl0eSB3YXMgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBhZGRzIGJvdW5kcyBjaGVja2luZyDigJMgcHJldmVudGluZyBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGl0J3MgcGFyc2luZyB0aGUgZmlybXdhcmUgaW1hZ2UuIFllcCwgdGhhdCdzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGUuXG5cbkFscmlnaHQsIGxldCBtZSBzdW1tYXJpemUgdGhpcyBmb3IgZnV6emluZyBwdXJwb3Nlcy4gV2UndmUgZ290IGEgc29saWQgdGFyZ2V0IGhlcmUuXG5cbiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqIC0gRGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIEkgd2FudCB0byB0YXJnZXQgdGhlc2Ugc3ltYm9sczpcblxuICAgICogICBgaGluaWNfZndfc2VjdGlvbl92YWxpZGBcbiAgICAqICAgYGNoZWNrX2ltYWdlX3ZhbGlkYFxuICAgICogICBgaGluaWNfZmlybXdhcmVfdXBkYXRlYFxuICAgICogICBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgXG4qICAgKipFbmFibGVDb25maWdzOioqIFdlIG5lZWQgYEhJTklDYCBlbmFibGVkLCBvYnZpb3VzbHkuXG5cbioqUmVhc29uaW5nOioqXG5cblRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIEhpbmljIGRyaXZlcidzIGZpcm13YXJlIHBhcnNpbmcgbG9naWMuIFRoZSB2dWxuZXJhYmlsaXR5IHJlc2lkZXMgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB0aGUgYGRldmxpbmsgZmxhc2ggdXBkYXRlYCBtZWNoYW5pc20sIHNwZWNpZmljYWxseSBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgLiBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIOKAkyB2UENJLCBmdXp6IHRoZSBQQ0kgZGV2aWNlIHByb2JlLCB0aGVuIHVzZSBhIGRldmxpbmsgbmV0bGluayBtZXNzYWdlIHRvIHNlbmQgYSBmdXp6ZWQgZmlybXdhcmUgaW1hZ2UuIFNpbXBsZSBlbm91Z2ggdG8gdHJpZ2dlci5cblxuTGV0J3MgY2FsbCB0aGUgc2V0LXJlc3VsdHMgZnVuY3Rpb24gYW5kIGdldCB0aGlzIG1vdmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEwMjgsIk91dHB1dFRva2VucyI6MTgxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjEwOjI1LjIwOTk3NzE4MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzEzNzA5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElOSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaW5pY19md19zZWN0aW9uX3ZhbGlkXCIsXG4gICAgXCJjaGVja19pbWFnZV92YWxpZFwiLFxuICAgIFwiaGluaWNfZmlybXdhcmVfdXBkYXRlXCIsXG4gICAgXCJoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJTklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGluaWNfZndfc2VjdGlvbl92YWxpZFwiLFxuICAgIFwiY2hlY2tfaW1hZ2VfdmFsaWRcIixcbiAgICBcImhpbmljX2Zpcm13YXJlX3VwZGF0ZVwiLFxuICAgIFwiaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBvZiB0aGUgSHVhd2VpIEludGVsbGlnZW50IE5JQyAoaGluaWMpIGRyaXZlci4gVGhlIHZ1bG5lcmFiaWxpdHkgaXMgbG9jYXRlZCBpbiBgY2hlY2tfaW1hZ2VfdmFsaWRgLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBkZXZsaW5rIGZsYXNoIHVwZGF0ZSBtZWNoYW5pc20gKGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWApLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBieSBlbXVsYXRpbmcgdGhlIFBDSSBkZXZpY2UgdXNpbmcgaXRzIHZQQ0kgZnV6emVyIHRvIHBhc3MgdGhlIHByb2JlIHBoYXNlLCBhbmQgdGhlbiBzZW5kaW5nIGEgZGV2bGluayBuZXRsaW5rIG1lc3NhZ2Ugd2l0aCBhIGZ1enplZCBmaXJtd2FyZSBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowc8548[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 12:50:46 +0000 UTC FinishedAt: 2026-07-06 13:10:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HINIC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HINIC" ], "series_id": "e20af83f-34e2-4cd3-9964-9ee94f57485d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hinic_fw_section_valid", "check_image_valid", "hinic_firmware_update", "hinic_devlink_flash_update" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hJTklDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGluaWNfZndfc2VjdGlvbl92YWxpZCYjMzQ7LAogICAgJiMzNDtjaGVja19pbWFnZV92YWxpZCYjMzQ7LAogICAgJiMzNDtoaW5pY19maXJtd2FyZV91cGRhdGUmIzM0OywKICAgICYjMzQ7aGluaWNfZGV2bGlua19mbGFzaF91cGRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgb2YgdGhlIEh1YXdlaSBJbnRlbGxpZ2VudCBOSUMgKGhpbmljKSBkcml2ZXIuIFRoZSB2dWxuZXJhYmlsaXR5IGlzIGxvY2F0ZWQgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGUgbWVjaGFuaXNtIChgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgKS4gU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIHRoaXMgYnkgZW11bGF0aW5nIHRoZSBQQ0kgZGV2aWNlIHVzaW5nIGl0cyB2UENJIGZ1enplciB0byBwYXNzIHRoZSBwcm9iZSBwaGFzZSwgYW5kIHRoZW4gc2VuZGluZyBhIGRldmxpbmsgbmV0bGluayBtZXNzYWdlIHdpdGggYSBmdXp6ZWQgZmlybXdhcmUgaW1hZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4MmFkMDMyZDBjMjc5YWZhNmNmNWZmMDdlYzVlNTUzMjgxYTA1OGZiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAxMzowNzoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY1xuaW5kZXggYzk3N2M0M2U1ZDVhNzAuLjBjMDZmYmRhZGFkMzc4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY1xuQEAgLTIwLDE0ICYjNDM7MjAsMjUgQEBcbiAjaW5jbHVkZSBcJiMzNDtoaW5pY19kZXZsaW5rLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtoaW5pY19od19kZXYuaFwmIzM0O1xuIFxuJiM0MztzdGF0aWMgYm9vbCBoaW5pY19md19zZWN0aW9uX3ZhbGlkKHUzMiBmd19sZW4sIHUzMiBvZmZzZXQsIHUzMiBsZW4pXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gb2Zmc2V0IFx1MDAzYz0gZndfbGVuIFx1MDAyNlx1MDAyNiBsZW4gXHUwMDNjPSBmd19sZW4gLSBvZmZzZXQ7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfdmFsaWQoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiwgY29uc3QgdTggKmJ1Zixcbi1cdFx0XHQgICAgICB1MzIgaW1hZ2Vfc2l6ZSwgc3RydWN0IGhvc3RfaW1hZ2Vfc3QgKmhvc3RfaW1hZ2UpXG4mIzQzO1x0XHRcdCAgICAgIHNpemVfdCBpbWFnZV9zaXplLCBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSlcbiB7XG4tXHRzdHJ1Y3QgZndfaW1hZ2Vfc3QgKmZ3X2ltYWdlID0gTlVMTDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZndfaW1hZ2Vfc3QgKmZ3X2ltYWdlO1xuIFx0dTMyIGxlbiA9IDA7XG4gXHR1MzIgaTtcbiBcbi1cdGZ3X2ltYWdlID0gKHN0cnVjdCBmd19pbWFnZV9zdCAqKWJ1ZjtcbiYjNDM7XHRpZiAoaW1hZ2Vfc2l6ZSBcdTAwM2MgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XCYjMzQ7V3JvbmcgaW1hZ2Ugc2l6ZSByZWFkIGZyb20gZmlsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmd19pbWFnZSA9IChjb25zdCBzdHJ1Y3QgZndfaW1hZ2Vfc3QgKilidWY7XG4gXG4gXHRpZiAoZndfaW1hZ2UtXHUwMDNlZndfbWFnaWMgIT0gSElOSUNfTUFHSUNfTlVNKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDtXcm9uZyBmd19tYWdpYyByZWFkIGZyb20gZmlsZSwgZndfbWFnaWM6IDB4JXhcXG5cJiMzNDssXG5AQCAtNDEsMTQgJiM0Mzs1Miw0NCBAQCBzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLFxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbiAhPSBpbWFnZV9zaXplIC0gVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XCYjMzQ7V3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZndfaW1hZ2UtXHUwMDNlZndfaW5mby5md19zZWN0aW9uX2NudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0bGVuICYjNDM7PSBmd19pbWFnZS1cdTAwM2Vmd19zZWN0aW9uX2luZm9baV0uZndfc2VjdGlvbl9sZW47XG4tXHRcdGhvc3RfaW1hZ2UtXHUwMDNlaW1hZ2Vfc2VjdGlvbl9pbmZvW2ldID0gZndfaW1hZ2UtXHUwMDNlZndfc2VjdGlvbl9pbmZvW2ldO1xuJiM0MztcdFx0Y29uc3Qgc3RydWN0IGZ3X3NlY3Rpb25faW5mb19zdCAqc2VjdGlvbiA9XG4mIzQzO1x0XHRcdFx1MDAyNmZ3X2ltYWdlLVx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoc2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX3R5cGUgXHUwMDNlPSBGSUxFX1RZUEVfVE9UQUxfTlVNKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O1dyb25nIHNlY3Rpb24gdHlwZSByZWFkIGZyb20gZmlsZTogJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0c2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX3R5cGUpO1xuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFoaW5pY19md19zZWN0aW9uX3ZhbGlkKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbixcbiYjNDM7XHRcdFx0XHRcdCAgICBzZWN0aW9uLVx1MDAzZWZ3X3NlY3Rpb25fb2Zmc2V0LFxuJiM0MztcdFx0XHRcdFx0ICAgIHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9sZW4pKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O1dyb25nIHNlY3Rpb24gc2l6ZSByZWFkIGZyb20gZmlsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoc2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX2xlbiBcdTAwM2UgZndfaW1hZ2UtXHUwMDNlZndfbGVuIC0gbGVuKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O1dyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRsZW4gJiM0Mzs9IHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9sZW47XG4mIzQzO1x0XHRob3N0X2ltYWdlLVx1MDAzZWltYWdlX3NlY3Rpb25faW5mb1tpXSA9ICpzZWN0aW9uO1xuIFx0fVxuIFxuLVx0aWYgKGxlbiAhPSBmd19pbWFnZS1cdTAwM2Vmd19sZW4gfHxcbi1cdCAgICAoZndfaW1hZ2UtXHUwMDNlZndfbGVuICYjNDM7IFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkgIT0gaW1hZ2Vfc2l6ZSkge1xuLVx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7V3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCYjMzQ7KTtcbiYjNDM7XHRpZiAobGVuICE9IGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbikge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFwmIzM0O1dyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISU5JQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpbmljX2Z3X3NlY3Rpb25fdmFsaWQmIzM0OywKICAgICYjMzQ7Y2hlY2tfaW1hZ2VfdmFsaWQmIzM0OywKICAgICYjMzQ7aGluaWNfZmlybXdhcmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2hpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MmFkMDMyZDBjMjc5YWZhNmNmNWZmMDdlYzVlNTUzMjgxYTA1OGZiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAxMzowNzoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jCmluZGV4IGM5NzdjNDNlNWQ1YTcwLi4wYzA2ZmJkYWRhZDM3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jCkBAIC0yMCwxNCAmIzQzOzIwLDI1IEBACiAjaW5jbHVkZSAmIzM0O2hpbmljX2RldmxpbmsuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2hpbmljX2h3X2Rldi5oJiMzNDsKIAomIzQzO3N0YXRpYyBib29sIGhpbmljX2Z3X3NlY3Rpb25fdmFsaWQodTMyIGZ3X2xlbiwgdTMyIG9mZnNldCwgdTMyIGxlbikKJiM0Mzt7CiYjNDM7CXJldHVybiBvZmZzZXQgJmx0Oz0gZndfbGVuICZhbXA7JmFtcDsgbGVuICZsdDs9IGZ3X2xlbiAtIG9mZnNldDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLAotCQkJICAgICAgdTMyIGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKQomIzQzOwkJCSAgICAgIHNpemVfdCBpbWFnZV9zaXplLCBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSkKIHsKLQlzdHJ1Y3QgZndfaW1hZ2Vfc3QgKmZ3X2ltYWdlID0gTlVMTDsKJiM0MzsJY29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICpmd19pbWFnZTsKIAl1MzIgbGVuID0gMDsKIAl1MzIgaTsKIAotCWZ3X2ltYWdlID0gKHN0cnVjdCBmd19pbWFnZV9zdCAqKWJ1ZjsKJiM0MzsJaWYgKGltYWdlX3NpemUgJmx0OyBVUERBVEVGV19JTUFHRV9IRUFEX1NJWkUpIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7V3JvbmcgaW1hZ2Ugc2l6ZSByZWFkIGZyb20gZmlsZVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZ3X2ltYWdlID0gKGNvbnN0IHN0cnVjdCBmd19pbWFnZV9zdCAqKWJ1ZjsKIAogCWlmIChmd19pbWFnZS0mZ3Q7ZndfbWFnaWMgIT0gSElOSUNfTUFHSUNfTlVNKSB7CiAJCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0O1dyb25nIGZ3X21hZ2ljIHJlYWQgZnJvbSBmaWxlLCBmd19tYWdpYzogMHgleFxuJiMzNDssCkBAIC00MSwxNCAmIzQzOzUyLDQ0IEBAIHN0YXRpYyBib29sIGNoZWNrX2ltYWdlX3ZhbGlkKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsIGNvbnN0IHU4ICpidWYsCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKJiM0MzsJaWYgKGZ3X2ltYWdlLSZndDtmd19sZW4gIT0gaW1hZ2Vfc2l6ZSAtIFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkgewomIzQzOwkJZGV2X2VycigmYW1wO3ByaXYtJmd0O2h3ZGV2LSZndDtod2lmLSZndDtwZGV2LSZndDtkZXYsCiYjNDM7CQkJJiMzNDtXcm9uZyBkYXRhIHNpemUgcmVhZCBmcm9tIGZpbGVcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBmd19pbWFnZS0mZ3Q7ZndfaW5mby5md19zZWN0aW9uX2NudDsgaSYjNDM7JiM0MzspIHsKLQkJbGVuICYjNDM7PSBmd19pbWFnZS0mZ3Q7Zndfc2VjdGlvbl9pbmZvW2ldLmZ3X3NlY3Rpb25fbGVuOwotCQlob3N0X2ltYWdlLSZndDtpbWFnZV9zZWN0aW9uX2luZm9baV0gPSBmd19pbWFnZS0mZ3Q7Zndfc2VjdGlvbl9pbmZvW2ldOwomIzQzOwkJY29uc3Qgc3RydWN0IGZ3X3NlY3Rpb25faW5mb19zdCAqc2VjdGlvbiA9CiYjNDM7CQkJJmFtcDtmd19pbWFnZS0mZ3Q7Zndfc2VjdGlvbl9pbmZvW2ldOwomIzQzOwomIzQzOwkJaWYgKHNlY3Rpb24tJmd0O2Z3X3NlY3Rpb25fdHlwZSAmZ3Q7PSBGSUxFX1RZUEVfVE9UQUxfTlVNKSB7CiYjNDM7CQkJZGV2X2VycigmYW1wO3ByaXYtJmd0O2h3ZGV2LSZndDtod2lmLSZndDtwZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7V3Jvbmcgc2VjdGlvbiB0eXBlIHJlYWQgZnJvbSBmaWxlOiAldVxuJiMzNDssCiYjNDM7CQkJCXNlY3Rpb24tJmd0O2Z3X3NlY3Rpb25fdHlwZSk7CiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKCFoaW5pY19md19zZWN0aW9uX3ZhbGlkKGZ3X2ltYWdlLSZndDtmd19sZW4sCiYjNDM7CQkJCQkgICAgc2VjdGlvbi0mZ3Q7Zndfc2VjdGlvbl9vZmZzZXQsCiYjNDM7CQkJCQkgICAgc2VjdGlvbi0mZ3Q7Zndfc2VjdGlvbl9sZW4pKSB7CiYjNDM7CQkJZGV2X2VycigmYW1wO3ByaXYtJmd0O2h3ZGV2LSZndDtod2lmLSZndDtwZGV2LSZndDtkZXYsCiYjNDM7CQkJCSYjMzQ7V3Jvbmcgc2VjdGlvbiBzaXplIHJlYWQgZnJvbSBmaWxlXG4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKHNlY3Rpb24tJmd0O2Z3X3NlY3Rpb25fbGVuICZndDsgZndfaW1hZ2UtJmd0O2Z3X2xlbiAtIGxlbikgewomIzQzOwkJCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCQkmIzM0O1dyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxuJiMzNDspOwomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWxlbiAmIzQzOz0gc2VjdGlvbi0mZ3Q7Zndfc2VjdGlvbl9sZW47CiYjNDM7CQlob3N0X2ltYWdlLSZndDtpbWFnZV9zZWN0aW9uX2luZm9baV0gPSAqc2VjdGlvbjsKIAl9CiAKLQlpZiAobGVuICE9IGZ3X2ltYWdlLSZndDtmd19sZW4gfHwKLQkgICAgKGZ3X2ltYWdlLSZndDtmd19sZW4gJiM0MzsgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSAhPSBpbWFnZV9zaXplKSB7Ci0JCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0O1dyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxuJiMzNDspOwomIzQzOwlpZiAobGVuICE9IGZ3X2ltYWdlLSZndDtmd19sZW4pIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwcml2LSZndDtod2Rldi0mZ3Q7aHdpZi0mZ3Q7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCSYjMzQ7V3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXG4mIzM0Oyk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBIdWF3ZWkgTklDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgY2hlY2tfaW1hZ2VfdmFsaWRgIGZ1bmN0aW9uLCB3aGljaCBtYWtlcyBzZW5zZSAtIHZhbGlkYXRpbmcgZmlybXdhcmUgaXMgYWx3YXlzIGEgZ29vZCB0aGluZy4gVGhpcyBpcyBmb3IgdGhlIEh1YXdlaSBJbnRlbGxpZ2VudCBOSUMsIG9yIGBoaW5pY2AgZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIGhvdyBleHBvc2VkIGlzIHRoaXMgZHJpdmVyPyBHaXZlbiB0aGF0IGl0JiMzOTtzIGEgaGFyZHdhcmUtc3BlY2lmaWMgRXRoZXJuZXQgZHJpdmVyLCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGhvdyBsaWtlbHkgaXMgaXQgdGhhdCB3ZSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gVXN1YWxseSwgdGhlc2Ugc29ydHMgb2YgZHJpdmVycyBhcmUgc2hpZWxkZWQgdW5sZXNzIHlvdeKAmXZlIGdvdCBlaXRoZXIgZW11bGF0ZWQgaGFyZHdhcmUgb3IgaXQmIzM5O3MgYSB2aXJ0dWFsIGRyaXZlciBpdHNlbGYuCgpSaWdodCwgbGV0JiMzOTtzIGNvbmZpcm0uIElzIHRoaXMgYWN0dWFsbHkgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXI/IFllcCwgaXQgaXMuIFRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIGlzIGEgUENJZSBkZXZpY2UsIHNvIGl04oCZcyBwaHlzaWNhbCBoYXJkd2FyZS4gTm93LCBjYW4gdGhpcyB0aGluZyAqYmUqIGZ1enplZD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHN5emthbGxlciBpcyB0aGUgZ28tdG8gZm9yIGZ1enppbmcsIGFuZCBpdCAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIHZQQ0ksIGJ1dCByZWFsaXN0aWNhbGx5LCBtb3N0IGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMsIGVzcGVjaWFsbHkgb25lcyB3aXRob3V0IHJlYWRpbHkgYXZhaWxhYmxlIGVtdWxhdGlvbiwgYXJlIG5vdCBkaXJlY3RseSByZWFjaGFibGUuIEJ1dCwgd2FpdC4uLiBzeXprYWxsZXIgZG9lcyBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0eSwgYnV0IGl04oCZcyBub3QgcmVhbGx5IHRoZSAqbm9ybSogdG8gdGFyZ2V0IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgdW5sZXNzIHRoZXkgYXJlICpleHBsaWNpdGx5KiBlbXVsYXRlZCwgb3Igd2UgY2FuIHVzZSBzb21ldGhpbmcgbGlrZSBVU0IgZnV6emluZywgd2hpY2ggaXMgYSBkaWZmZXJlbnQgcm91dGUuIFNvLCBsZXQmIzM5O3MgZXhwbG9yZSBpZiB0aGVyZSYjMzk7cyBhbnkgZW11bGF0aW9uIGZvciBgaGluaWNgIGZsb2F0aW5nIGFyb3VuZC4gSeKAmWxsIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGZvciBgaGluaWNgIGFuZCBzZWUgd2hhdCBjb21lcyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaW5pYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg5MzIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0hJTklDKSAmIzQzOz0gaGluaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NDpoaW5pYy15IDo9IGhpbmljX21haW4ubyBoaW5pY190eC5vIGhpbmljX3J4Lm8gaGluaWNfcG9ydC5vIGhpbmljX2h3X2Rldi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NTpcdCAgIGhpbmljX2h3X2lvLm8gaGluaWNfaHdfcXAubyBoaW5pY19od19jbWRxLm8gaGluaWNfaHdfd3EubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlOjY6XHQgICBoaW5pY19od19tZ210Lm8gaGluaWNfaHdfYXBpX2NtZC5vIGhpbmljX2h3X2Vxcy5vIGhpbmljX2h3X2lmLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZTo3Olx0ICAgaGluaWNfY29tbW9uLm8gaGluaWNfZXRodG9vbC5vIGhpbmljX2RldmxpbmsubyBoaW5pY19od19tYm94Lm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZTo4Olx0ICAgaGluaWNfc3Jpb3YubyBoaW5pY19kZWJ1Z2ZzLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MTE6I2luY2x1ZGUgXCYjMzQ7aGluaWNfY29tbW9uLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xMy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzoxNDogKiBoaW5pY19jcHVfdG9fYmUzMiAtIGNvbnZlcnQgZGF0YSB0byBiaWcgZW5kaWFuIDMyIGJpdCBmb3JtYXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xNS0gKiBAZGF0YTogdGhlIGRhdGEgdG8gY29udmVydFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xNy0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MTg6dm9pZCBoaW5pY19jcHVfdG9fYmUzMih2b2lkICpkYXRhLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMzEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MzI6ICogaGluaWNfYmUzMl90b19jcHUgLSBjb252ZXJ0IGRhdGEgZnJvbSBiaWcgZW5kaWFuIDMyIGJpdCBmb3JtYXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0zMy0gKiBAZGF0YTogdGhlIGRhdGEgdG8gY29udmVydFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0zNS0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MzY6dm9pZCBoaW5pY19iZTMyX3RvX2NwdSh2b2lkICpkYXRhLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTM3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNDktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6NTA6ICogaGluaWNfc2V0X3NnZSAtIHNldCBkbWEgYXJlYSBpbiBzY2F0dGVyIGdhdGhlciBlbnRyeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTUxLSAqIEBzZ2U6IHNjYXR0ZXIgZ2F0aGVyIGVudHJ5XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTU0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzo1NTp2b2lkIGhpbmljX3NldF9zZ2Uoc3RydWN0IGhpbmljX3NnZSAqc2dlLCBkbWFfYWRkcl90IGFkZHIsIGludCBsZW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02Mi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzo2MzogKiBoaW5pY19zZ2VfdG9fZG1hIC0gZ2V0IGRtYSBhZGRyZXNzIGZyb20gc2NhdHRlciBnYXRoZXIgZW50cnlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02NC0gKiBAc2dlOiBzY2F0dGVyIGdhdGhlciBlbnRyeVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02Ny0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6Njg6ZG1hX2FkZHJfdCBoaW5pY19zZ2VfdG9fZG1hKHN0cnVjdCBoaW5pY19zZ2UgKnNnZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oOjE1OnN0cnVjdCBoaW5pY19zZ2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTE2LVx0dTMyICAgICAgICAgICAgIGhpX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oOjIxOnZvaWQgaGluaWNfY3B1X3RvX2JlMzIodm9pZCAqZGF0YSwgaW50IGxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmgtMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmg6MjM6dm9pZCBoaW5pY19iZTMyX3RvX2NwdSh2b2lkICpkYXRhLCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaC0yNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaDoyNTp2b2lkIGhpbmljX3NldF9zZ2Uoc3RydWN0IGhpbmljX3NnZSAqc2dlLCBkbWFfYWRkcl90IGFkZHIsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oOjI3OmRtYV9hZGRyX3QgaGluaWNfc2dlX3RvX2RtYShzdHJ1Y3QgaGluaWNfc2dlICpzZ2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6OTojaW5jbHVkZSBcJiMzNDtoaW5pY19kZWJ1Z2ZzLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjExOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoaW5pY19kYmdmc19yb290O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jPTIxPXN0YXRpYyBjaGFyICpzcV9maWVsZHNbXSA9IHtcJiMzNDtnbGJfc3FfaWRcJiMzNDssIFwmIzM0O3NxX3BpXCYjMzQ7LCBcJiMzNDtzcV9jaVwmIzM0OywgXCYjMzQ7c3FfZmlcJiMzNDssIFwmIzM0O3NxX21zaXhfZW50cnlcJiMzNDt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjM6c3RhdGljIHU2NCBoaW5pY19kYmdfZ2V0X3NxX2luZm8oc3RydWN0IGhpbmljX2RldiAqbmljX2Rldiwgc3RydWN0IGhpbmljX3NxICpzcSwgaW50IGlkeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyNTpcdHN0cnVjdCBoaW5pY193cSAqd3EgPSBzcS1cdTAwM2V3cTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYz01MT1zdGF0aWMgY2hhciAqcnFfZmllbGRzW10gPSB7XCYjMzQ7Z2xiX3JxX2lkXCYjMzQ7LCBcJiMzNDtycV9od19waVwmIzM0OywgXCYjMzQ7cnFfc3dfY2lcJiMzNDssIFwmIzM0O3JxX3N3X3BpXCYjMzQ7LCBcJiMzNDtycV9tc2l4X2VudHJ5XCYjMzQ7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjUzOnN0YXRpYyB1NjQgaGluaWNfZGJnX2dldF9ycV9pbmZvKHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYsIHN0cnVjdCBoaW5pY19ycSAqcnEsIGludCBpZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTU0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6NTU6XHRzdHJ1Y3QgaGluaWNfd3EgKndxID0gcnEtXHUwMDNld3E7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM9ODE9c3RhdGljIGNoYXIgKmZ1bmNfdGFibGVfZmllbGRzW10gPSB7XCYjMzQ7dmFsaWRcJiMzNDssIFwmIzM0O3J4X21vZGVcJiMzNDssIFwmIzM0O210dVwmIzM0OywgXCYjMzQ7cnFfZGVwdGhcJiMzNDssIFwmIzM0O2NmZ19xX251bVwmIzM0O307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzo4MzpzdGF0aWMgaW50IGhpbmljX2RiZ19nZXRfZnVuY190YWJsZShzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2LCBpbnQgaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTg1LVx0c3RydWN0IHRhZ19zbWxfZnVuY2ZnX3RibCAqZnVuY2ZnX3RhYmxlX2VsZW07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjg2Olx0c3RydWN0IGhpbmljX2NtZF9sdF9yZCAqcmVhZF9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04Ny1cdHUxNiBvdXRfc2l6ZSA9IHNpemVvZigqcmVhZF9kYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTAxOlx0ZXJyID0gaGluaWNfcG9ydF9tc2dfY21kKG5pY19kZXYtXHUwMDNlaHdkZXYsIEhJTklDX1BPUlRfQ01EX1JEX0xJTkVfVEJMLCByZWFkX2RhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEwMi1cdFx0XHRcdCBzaXplb2YoKnJlYWRfZGF0YSksIHJlYWRfZGF0YSwgXHUwMDI2b3V0X3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxMzY6c3RhdGljIHNzaXplX3QgaGluaWNfZGJnX2NtZF9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEzNy1cdFx0XHRcdCAgbG9mZl90ICpwcG9zKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xMzgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxMzk6XHRzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiAqZGJnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNDAtXHRjaGFyIHJldF9idWZbMjBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTQ1LVx0ZGVzYyA9IGZpbHAtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNDY6XHRkYmcgPSBjb250YWluZXJfb2YoZGVzYywgc3RydWN0IGhpbmljX2RlYnVnX3ByaXYsIGZpZWxkX2lkWypkZXNjXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE0OS1cdGNhc2UgSElOSUNfREJHX1NRX0lORk86XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE1MDpcdFx0b3V0ID0gaGluaWNfZGJnX2dldF9zcV9pbmZvKGRiZy1cdTAwM2VkZXYsIGRiZy1cdTAwM2VvYmplY3QsICpkZXNjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTUxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE1My1cdGNhc2UgSElOSUNfREJHX1JRX0lORk86XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE1NDpcdFx0b3V0ID0gaGluaWNfZGJnX2dldF9ycV9pbmZvKGRiZy1cdTAwM2VkZXYsIGRiZy1cdTAwM2VvYmplY3QsICpkZXNjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTU1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE1Ny1cdGNhc2UgSElOSUNfREJHX0ZVTkNfVEFCTEU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE1ODpcdFx0b3V0ID0gaGluaWNfZGJnX2dldF9mdW5jX3RhYmxlKGRiZy1cdTAwM2VkZXYsICpkZXNjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTU5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE2MS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE2MjpcdFx0bmV0aWZfd2FybihkYmctXHUwMDNlZGV2LCBkcnYsIGRiZy1cdTAwM2VkZXYtXHUwMDNlbmV0ZGV2LCBcJiMzNDtJbnZhbGlkIGhpbmljIGRlYnVnIGNtZDogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE2My1cdFx0XHQgICBkYmctXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE3MjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoaW5pY19kYmdfY21kX2ZvcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE3My1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzQtXHQub3BlbiAgPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTc1Olx0LnJlYWQgID0gaGluaWNfZGJnX2NtZF9yZWFkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNzg6c3RhdGljIGludCBjcmVhdGVfZGJnX2ZpbGVzKHN0cnVjdCBoaW5pY19kZXYgKmRldiwgZW51bSBoaW5pY19kYmdfdHlwZSB0eXBlLCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNzk6XHRcdFx0ICAgIHN0cnVjdCBkZW50cnkgKnJvb3QsIHN0cnVjdCBoaW5pY19kZWJ1Z19wcml2ICoqZGJnLCBjaGFyICoqZmllbGQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE4MC1cdFx0XHQgICAgaW50IG5maWxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xODEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxODI6XHRzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiAqdG1wO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xODMtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE5NS1cdFx0dG1wLVx1MDAzZWZpZWxkX2lkW2ldID0gaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTk2Olx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGZpZWxkW2ldLCAwNDAwLCByb290LCBcdTAwMjZ0bXAtXHUwMDNlZmllbGRfaWRbaV0sIFx1MDAyNmhpbmljX2RiZ19jbWRfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE5Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjA0OnN0YXRpYyB2b2lkIHJlbV9kYmdfZmlsZXMoc3RydWN0IGhpbmljX2RlYnVnX3ByaXYgKmRiZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjA1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjEyOmludCBoaW5pY19zcV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2LCB1MTYgc3FfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIxMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjIxNDpcdHN0cnVjdCBoaW5pY19zcSAqc3E7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIxNS1cdHN0cnVjdCBkZW50cnkgKnJvb3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjIyODp2b2lkIGhpbmljX3NxX2RlYnVnX3JlbShzdHJ1Y3QgaGluaWNfc3EgKnNxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyMzQ6aW50IGhpbmljX3JxX2RlYnVnX2FkZChzdHJ1Y3QgaGluaWNfZGV2ICpkZXYsIHUxNiBycV9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjM1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjM2Olx0c3RydWN0IGhpbmljX3JxICpycTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjM3LVx0c3RydWN0IGRlbnRyeSAqcm9vdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjUwOnZvaWQgaGluaWNfcnFfZGVidWdfcmVtKHN0cnVjdCBoaW5pY19ycSAqcnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI1NjppbnQgaGluaWNfZnVuY190YWJsZV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyNjU6dm9pZCBoaW5pY19mdW5jX3RhYmxlX2RlYnVnX3JlbShzdHJ1Y3QgaGluaWNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI2Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI3MTp2b2lkIGhpbmljX3NxX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjcyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6Mjc2OnZvaWQgaGluaWNfc3FfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI4MTp2b2lkIGhpbmljX3JxX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjgyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6Mjg2OnZvaWQgaGluaWNfcnFfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI5MTp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjkyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6Mjk3OnZvaWQgaGluaWNfZnVuY190YmxfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMwMzp2b2lkIGhpbmljX2RiZ19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwNS1cdG5pY19kZXYtXHUwMDNlZGJnZnNfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihwY2lfbmFtZShuaWNfZGV2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMwNjpcdFx0XHRcdFx0XHQgaGluaWNfZGJnZnNfcm9vdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzA5OnZvaWQgaGluaWNfZGJnX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMTU6dm9pZCBoaW5pY19kYmdfcmVnaXN0ZXJfZGVidWdmcyhjb25zdCBjaGFyICpkZWJ1Z2ZzX2Rpcl9uYW1lKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMTc6XHRoaW5pY19kYmdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGRlYnVnZnNfZGlyX25hbWUsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMyMDp2b2lkIGhpbmljX2RiZ191bnJlZ2lzdGVyX2RlYnVnZnModm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzIxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzIyOlx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGhpbmljX2RiZ2ZzX3Jvb3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMjM6XHRoaW5pY19kYmdmc19yb290ID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzI0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjk6I2luY2x1ZGUgXCYjMzQ7aGluaWNfZGV2LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtMTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6MTY6c3RydWN0IGhpbmljX2NtZF9sdF9yZCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTE3LVx0dThcdHN0YXR1cztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oPTMxPXN0cnVjdCB0YWdfc21sX2Z1bmNmZ190Ymwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjgxOmludCBoaW5pY19zcV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2LCB1MTYgc3FfaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC04Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6ODM6dm9pZCBoaW5pY19zcV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX3NxICpzcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo4NTppbnQgaGluaWNfcnFfZGVidWdfYWRkKHN0cnVjdCBoaW5pY19kZXYgKmRldiwgdTE2IHJxX2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjg3OnZvaWQgaGluaWNfcnFfZGVidWdfcmVtKHN0cnVjdCBoaW5pY19ycSAqcnEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC04OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6ODk6aW50IGhpbmljX2Z1bmNfdGFibGVfZGVidWdfYWRkKHN0cnVjdCBoaW5pY19kZXYgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5MTp2b2lkIGhpbmljX2Z1bmNfdGFibGVfZGVidWdfcmVtKHN0cnVjdCBoaW5pY19kZXYgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5Mzp2b2lkIGhpbmljX3NxX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5NTp2b2lkIGhpbmljX3NxX2RiZ2ZzX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjk3OnZvaWQgaGluaWNfcnFfZGJnZnNfaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjk5OnZvaWQgaGluaWNfcnFfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwMTp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTEwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6MTAzOnZvaWQgaGluaWNfZnVuY190YmxfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwNTp2b2lkIGhpbmljX2RiZ19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwNzp2b2lkIGhpbmljX2RiZ191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6MTA5OnZvaWQgaGluaWNfZGJnX3JlZ2lzdGVyX2RlYnVnZnMoY29uc3QgY2hhciAqZGVidWdmc19kaXJfbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTExMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6MTExOnZvaWQgaGluaWNfZGJnX3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtMTEyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxNjojaW5jbHVkZSBcJiMzNDtoaW5pY19od19kZXYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjE3OiNpbmNsdWRlIFwmIzM0O2hpbmljX3R4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxODojaW5jbHVkZSBcJiMzNDtoaW5pY19yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTk6I2luY2x1ZGUgXCYjMzQ7aGluaWNfc3Jpb3YuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjIxOiNkZWZpbmUgSElOSUNfRFJWX05BTUUgICAgICAgICAgXCYjMzQ7aGluaWNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0yMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6Mjk6ZW51bSBoaW5pY19mbGFncyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMzAtXHRISU5JQ19MSU5LX1VQID0gQklUKDApLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0zNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDozNzpzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0zOC1cdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgIHdvcms7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjQyOnN0cnVjdCBoaW5pY19yc3NfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNDMtXHR1OCB0Y3BfaXB2Nl9leHQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjUzOmVudW0gaGluaWNfcnNzX2hhc2hfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNTQtXHRISU5JQ19SU1NfSEFTSF9FTkdJTkVfVFlQRV9YT1IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjU5OnN0cnVjdCBoaW5pY19pbnRyX2NvYWxfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNjAtXHR1OFx0cGVuZGluZ19saW10O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC02NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo2NTplbnVtIGhpbmljX2RiZ190eXBlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC02Ni1cdEhJTklDX0RCR19TUV9JTkZPLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC03MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo3MTpzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6NzI6XHRzdHJ1Y3QgaGluaWNfZGV2XHQqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTczLVx0dm9pZFx0XHRcdCpvYmplY3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6NzQ6XHRlbnVtIGhpbmljX2RiZ190eXBlXHR0eXBlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTc1LVx0c3RydWN0IGRlbnRyeVx0XHQqcm9vdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6Nzk6c3RydWN0IGhpbmljX2RldiB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtODAtXHRzdHJ1Y3QgbmV0X2RldmljZSAgICAgICAgICAgICAgICpuZXRkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6ODE6XHRzdHJ1Y3QgaGluaWNfaHdkZXYgICAgICAgICAgICAgICpod2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC04Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6OTQ6XHRzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrICAgICAgIHJ4X21vZGVfd29yaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC05NS1cdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICAgICAgICAgKndvcmtxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjk3Olx0c3RydWN0IGhpbmljX3R4cSAgICAgICAgICAgICAgICAqdHhxcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo5ODpcdHN0cnVjdCBoaW5pY19yeHEgICAgICAgICAgICAgICAgKnJ4cXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtOTktXHR1MTZcdFx0XHRcdHNxX2RlcHRoO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMDUtXHR1MTZcdFx0XHRcdHJzc19saW1pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxMDY6XHRzdHJ1Y3QgaGluaWNfcnNzX3R5cGVcdFx0cnNzX3R5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTA3LVx0dThcdFx0XHRcdCpyc3NfaGtleV91c2VyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTEwOC1cdHMzMlx0XHRcdFx0KnJzc19pbmRpcl91c2VyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjEwOTpcdHN0cnVjdCBoaW5pY19pbnRyX2NvYWxfaW5mb1x0KnJ4X2ludHJfY29hbGVzY2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTEwOlx0c3RydWN0IGhpbmljX2ludHJfY29hbF9pbmZvXHQqdHhfaW50cl9jb2FsZXNjZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxMTE6XHRzdHJ1Y3QgaGluaWNfc3Jpb3ZfaW5mbyBzcmlvdl9pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTExMi1cdGludFx0XHRcdFx0bGJfdGVzdF9yeF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTExOS1cdHN0cnVjdCBkZW50cnlcdFx0XHQqZnVuY190YmxfZGJnZnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTIwOlx0c3RydWN0IGhpbmljX2RlYnVnX3ByaXZcdFx0KmRiZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMjEtXHRzdHJ1Y3QgZGV2bGlua1x0XHRcdCpkZXZsaW5rO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTI2OnN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjEyNzpcdHN0cnVjdCBoaW5pY19od2Rldlx0XHQqaHdkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTI4LVx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICAqaHdfZmF1bHRfcmVwb3J0ZXI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTk6I2luY2x1ZGUgXCYjMzQ7aGluaWNfcG9ydC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjIwOiNpbmNsdWRlIFwmIzM0O2hpbmljX2RldmxpbmsuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyMTojaW5jbHVkZSBcJiMzNDtoaW5pY19od19kZXYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjM6c3RhdGljIGJvb2wgaGluaWNfZndfc2VjdGlvbl92YWxpZCh1MzIgZndfbGVuLCB1MzIgb2Zmc2V0LCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6Mjg6c3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfdmFsaWQoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiwgY29uc3QgdTggKmJ1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjktXHRcdFx0ICAgICAgc2l6ZV90IGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjcyOlx0XHRpZiAoIWhpbmljX2Z3X3NlY3Rpb25fdmFsaWQoZndfaW1hZ2UtXHUwMDNlZndfbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy03My1cdFx0XHRcdFx0ICAgIHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9vZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjEwNDpzdGF0aWMgYm9vbCBjaGVja19pbWFnZV9pbnRlZ3JpdHkoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTA1LVx0XHRcdFx0ICBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTQzOnN0YXRpYyBpbnQgY2hlY2tfaW1hZ2VfZGV2aWNlX3R5cGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTQ0LVx0XHRcdFx0ICAgdTMyIGltYWdlX2RldmljZV90eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNDUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoxNDY6XHRzdHJ1Y3QgaGluaWNfY29tbV9ib2FyZF9pbmZvIGJvYXJkX2luZm8gPSB7MH07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTQ4Olx0aWYgKGhpbmljX2dldF9ib2FyZF9pbmZvKHByaXYtXHUwMDNlaHdkZXYsIFx1MDAyNmJvYXJkX2luZm8pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0OS1cdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwmIzM0O0dldCBib2FyZCBpbmZvIGZhaWxlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjE2MzpzdGF0aWMgaW50IGhpbmljX2ZsYXNoX2Z3KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjQtXHRcdFx0ICBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE2Ni1cdHUzMiBzZWN0aW9uX3JlbWFpbl9zZW5kX2xlbiwgc2VuZF9mcmFnbWVudF9sZW4sIHNlbmRfcG9zLCB1cF90b3RhbF9sZW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjE2NzpcdHN0cnVjdCBoaW5pY19jbWRfdXBkYXRlX2Z3ICpmd191cGRhdGVfbXNnID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTY4LVx0dTMyIHNlY3Rpb25fdHlwZSwgc2VjdGlvbl9jcmMsIHNlY3Rpb25fdmVyc2lvbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjU4Olx0XHRcdGVyciA9IGhpbmljX3BvcnRfbXNnX2NtZChwcml2LVx1MDAzZWh3ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yNTktXHRcdFx0XHRcdFx0IEhJTklDX1BPUlRfQ01EX1VQREFURV9GVyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjgzOnN0YXRpYyBpbnQgaGluaWNfZmlybXdhcmVfdXBkYXRlKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI4NC1cdFx0XHRcdCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMDE6XHRlcnIgPSBoaW5pY19mbGFzaF9mdyhwcml2LCBmdy1cdTAwM2VkYXRhLCBcdTAwMjZob3N0X2ltYWdlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzAyLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMjI6c3RhdGljIGludCBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzIzLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzI1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzI2Olx0c3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMjg6XHRyZXR1cm4gaGluaWNfZmlybXdhcmVfdXBkYXRlKHByaXYsIHBhcmFtcy1cdTAwM2VmdywgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzI5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzE6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBoaW5pY19kZXZsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzMyOlx0LmZsYXNoX3VwZGF0ZSA9IGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzMtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzU6c3RydWN0IGRldmxpbmsgKmhpbmljX2RldmxpbmtfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzc6XHRyZXR1cm4gZGV2bGlua19hbGxvYyhcdTAwMjZoaW5pY19kZXZsaW5rX29wcywgc2l6ZW9mKHN0cnVjdCBoaW5pY19kZXYpLCBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjM0MDp2b2lkIGhpbmljX2RldmxpbmtfZnJlZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzQxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTM0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzQ1OnZvaWQgaGluaWNfZGV2bGlua19yZWdpc3RlcihzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozNTI6dm9pZCBoaW5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTM1OT1zdGF0aWMgdm9pZCBjaGlwX2ZhdWx0X3Nob3coc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzYwOlx0XHRcdCAgICBzdHJ1Y3QgaGluaWNfZmF1bHRfZXZlbnQgKmV2ZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM9MzgwPXN0YXRpYyB2b2lkIGZhdWx0X3JlcG9ydF9zaG93KHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjM4MTpcdFx0XHQgICAgICBzdHJ1Y3QgaGluaWNfZmF1bHRfZXZlbnQgKmV2ZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zODIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0MzE6c3RhdGljIGludCBoaW5pY19od19yZXBvcnRlcl9kdW1wKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQzMi1cdFx0XHRcdCAgc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZywgdm9pZCAqcHJpdl9jdHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz00NDE9c3RhdGljIHZvaWQgbWdtdF93YXRjaGRvZ19yZXBvcnRfc2hvdyhzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0NDI6XHRcdFx0XHQgICAgICBzdHJ1Y3QgaGluaWNfbWdtdF93YXRjaGRvZ19pbmZvICp3aW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDYyOnN0YXRpYyBpbnQgaGluaWNfZndfcmVwb3J0ZXJfZHVtcChzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NjMtXHRcdFx0XHQgIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csIHZvaWQgKnByaXZfY3R4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0NzI6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgaGluaWNfaHdfZmF1bHRfcmVwb3J0ZXJfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzMtXHQubmFtZSA9IFwmIzM0O2h3XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0NzQ6XHQuZHVtcCA9IGhpbmljX2h3X3JlcG9ydGVyX2R1bXAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ3NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ3NzpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX29wcyBoaW5pY19md19mYXVsdF9yZXBvcnRlcl9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ3OC1cdC5uYW1lID0gXCYjMzQ7ZndcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ3OTpcdC5kdW1wID0gaGluaWNfZndfcmVwb3J0ZXJfZHVtcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDgwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDgyOmludCBoaW5pY19oZWFsdGhfcmVwb3J0ZXJzX2NyZWF0ZShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDg3LVx0XHRkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9jcmVhdGUoZGV2bGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDg4Olx0XHRcdFx0XHQgICAgICAgXHUwMDI2aGluaWNfaHdfZmF1bHRfcmVwb3J0ZXJfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00ODktXHRcdFx0XHRcdCAgICAgICBwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ5Ny1cdFx0ZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfY3JlYXRlKGRldmxpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ5ODpcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmhpbmljX2Z3X2ZhdWx0X3JlcG9ydGVyX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDk5LVx0XHRcdFx0XHQgICAgICAgcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy01MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjUxMTp2b2lkIGhpbmljX2hlYWx0aF9yZXBvcnRlcnNfZGVzdHJveShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy01MTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmgtOS0jaW5jbHVkZSBcdTAwM2NuZXQvZGV2bGluay5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjEwOiNpbmNsdWRlIFwmIzM0O2hpbmljX2Rldi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmgtMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjI0OmVudW0gaGluaWNfZndfdHlwZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTI1LVx0VVBfRldfVVBEQVRFX1VQX1RFWFRfQSA9IDB4MCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oPTEwMT1zdHJ1Y3QgaG9zdF9pbWFnZV9zdCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaC0xMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjExMTpzdHJ1Y3QgZGV2bGluayAqaGluaWNfZGV2bGlua19hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTI6dm9pZCBoaW5pY19kZXZsaW5rX2ZyZWUoc3RydWN0IGRldmxpbmsgKmRldmxpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTM6dm9pZCBoaW5pY19kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTQ6dm9pZCBoaW5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTExNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTE2OmludCBoaW5pY19oZWFsdGhfcmVwb3J0ZXJzX2NyZWF0ZShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTE3OnZvaWQgaGluaWNfaGVhbHRoX3JlcG9ydGVyc19kZXN0cm95KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaC0xMTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0yOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzA6I2luY2x1ZGUgXCYjMzQ7aGluaWNfaHdfcXAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzozMTojaW5jbHVkZSBcJiMzNDtoaW5pY19od19kZXYuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzozMjojaW5jbHVkZSBcJiMzNDtoaW5pY19wb3J0LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzM6I2luY2x1ZGUgXCYjMzQ7aGluaWNfdHguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzozNDojaW5jbHVkZSBcJiMzNDtoaW5pY19yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjM1OiNpbmNsdWRlIFwmIzM0O2hpbmljX2Rldi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTM2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9NTk9c3RydWN0IGh3MmV0aHRvb2xfbGlua19tb2RlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTYxLVx0dTMyIHNwZWVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzo2MjpcdGVudW0gaGluaWNfbGlua19tb2RlIGh3X2xpbmtfbW9kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtNjMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jPTE0Nj1zdGF0aWMgdm9pZCBzZXRfbGlua19zcGVlZChzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE0NzpcdFx0XHQgICBlbnVtIGhpbmljX3NwZWVkIHNwZWVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0xNDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzoxODQ6c3RhdGljIGludCBoaW5pY19nZXRfbGlua19tb2RlX2luZGV4KGVudW0gaGluaWNfbGlua19tb2RlIGxpbmtfbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTg1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTE5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MTk2OnN0YXRpYyB2b2lkIGhpbmljX2FkZF9ldGh0b29sX2xpbmtfbW9kZShzdHJ1Y3QgY21kX2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE5NzpcdFx0XHRcdFx0ZW51bSBoaW5pY19saW5rX21vZGUgaHdfbGlua19tb2RlLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwNTAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERldmxpbmsgRmxhc2ggVXBkYXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNgLiBJdCYjMzk7cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gZGV2bGluayBmbGFzaCB1cGRhdGVzLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIG1hbmFnaW5nIGZpcm13YXJlLiBUaGUgcXVlc3Rpb24gaXMsIGhvdyBkb2VzIHRoaXMgdXBkYXRlIGdldCB0cmlnZ2VyZWQgYW5kIHdoZXJlIGRvZXMgdGhlIGRyaXZlciBjb21lIGludG8gcGxheT8KCkkga25vdyBkZXZsaW5rIGZsYXNoIHVwZGF0ZXMgYXJlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgdGhhdCYjMzk7cyB0aGUgY29tbW9uIGludGVyZmFjZS4gQnV0LCB0aGUgcmVhbCBjb25jZXJuIGlzIHRoZSAqZHJpdmVyJiMzOTtzKiBhdmFpbGFiaWxpdHkuIERvZXMgdGhlIGRyaXZlciBldmVuIGdldCBsb2FkZWQgaWYgdGhlIGhhcmR3YXJlLCB0aGUgYWN0dWFsIE5JQywgaXNuJiMzOTt0IHByZXNlbnQ/IEkgaGF2ZSB0byBjb25zaWRlciB0aGF0LgoKTGV0JiMzOTtzIHNlZeKApiBUaGUgY29kZSBpbmRpY2F0ZXMgdGhhdCB0aGUgYGhpbmljYCBkcml2ZXIgb25seSByZWdpc3RlcnMgZGV2bGluayBpZiB0aGUgaGFyZHdhcmUgaXMgYWN0dWFsbHkgZGV0ZWN0ZWQuIFRoYXQgbWFrZXMgc2Vuc2UuIEl0JiMzOTtzIGEgUENJIGRyaXZlciwgc28gaXQgc2hvdWxkIGJlIHJlbHlpbmcgb24gdGhlIHByZXNlbmNlIG9mIFBDSSBkZXZpY2VzLgoKU28sIHRoZSBrZXkgcXVlc3Rpb24gYmVjb21lczogQ2FuIEkgKnByb2JlKiB0aGUgZHJpdmVyIGV2ZW4gd2l0aG91dCB0aGUgaGFyZHdhcmU/IENhbiBJIGxvYWQgdGhlIG1vZHVsZSBhbmQgdHJpZ2dlciB0aGF0IHJlZ2lzdHJhdGlvbiBwYXRoIHdpdGhvdXQgYW4gYWN0dWFsIGBoaW5pY2AgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGUgc3lzdGVtPyBUaGF0JiMzOTtzIHdoYXQgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBwYXRjaCBjYW4gYmUgYWNjZXNzZWQvdGVzdGVkIHdpdGhvdXQgYSBzcGVjaWZpYyBoYXJkd2FyZSBlbnZpcm9ubWVudC4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBwcm9iZSB0aGUgZHJpdmVyIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCB0byBjaGVjayBpdHMgYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDgwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipMb2NhdGluZyB0aGUgRHJpdmVyIFJlZ2lzdHJhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbG9jYXRlIHRoZSBkcml2ZXIgcmVnaXN0cmF0aW9uIGRhdGEuIFRoaXMgbWVhbnMgSSYjMzk7bSBwcm9iYWJseSBmYWNpbmcgYSBzcGVjaWZpYyBjaGFsbGVuZ2Ugb3IgaW52ZXN0aWdhdGlvbiB0aGF0IGhpbmdlcyBvbiBpZGVudGlmeWluZyBvciBhY2Nlc3NpbmcgdGhpcyBpbmZvcm1hdGlvbi4gRGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IOKAkyByZWd1bGF0b3J5IGNvbXBsaWFuY2UsIGluY2lkZW50IGFuYWx5c2lzLCBzeXN0ZW0gZGVidWdnaW5nLCBldGMuIOKAkyBteSBhcHByb2FjaCB3aWxsIHZhcnkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBtb3N0IGVmZmljaWVudCBwYXRoIHRvIGFjY2VzcyB0aGlzIGRhdGEuIEFtIEkgbG9va2luZyBhdCBhIGRhdGFiYXNlIHF1ZXJ5PyBBIGxvZyBmaWxlIHNlYXJjaD8gQSBzcGVjaWZpYyBBUEkgZW5kcG9pbnQ/IE9yIGlzIHRoaXMgYSBtb3JlIG1hbnVhbCBwcm9jZXNzIGludm9sdmluZyByZWdpc3RyeSBrZXlzIG9yIGNvbmZpZ3VyYXRpb24gZmlsZXM/IFRoZSBwcmVjaXNlIG1ldGhvZCBoaW5nZXMgb24gdGhlIHN5c3RlbSBpbiBxdWVzdGlvbiwgdGhlIGdyYW51bGFyaXR5IG9mIGluZm9ybWF0aW9uIEkgcmVxdWlyZSwgYW5kIHRoZSBzZWN1cml0eSBwcm90b2NvbHMgaW52b2x2ZWQuIFRpbWUgdG8gZXZhbHVhdGUgYWxsIHRoZSBhbmdsZXMgYW5kIGRlY2lkZSBvbiB0aGUgbW9zdCBhcHByb3ByaWF0ZSBtZXRob2QgdG8gZ2V0IG1lIHRoZSBkYXRhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTQ4OD1zdGF0aWMgaW50IF9faW5pdCBoaW5pY19tb2R1bGVfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM6MTQ5NDpcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aGluaWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ5NS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NTkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBQQ0kgRHJpdmVyIHdpdGggU3l6a2FsbGVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIFBDSSBkcml2ZXIgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gSXQmIzM5O3MgZ290IHRoYXQgdlBDSSBmdXp6ZXIsIHdoaWNoIGlzIHByb21pc2luZywgYmVjYXVzZSBzeXprYWxsZXIgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIEJ1dCBoYW5nIG9uLCBzeXprYWxsZXIgZG9lc24mIzM5O3QganVzdCAqZ2VuZXJhbGx5KiBlbXVsYXRlIGFyYml0cmFyeSBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhleSYjMzk7cmUgZXhwbGljaXRseSBzdXBwb3J0ZWQgd2l0aGluIHRoZSB2UENJIGZ1enplci4KCkhtbS4uLiB3YWl0IGEgbWludXRlLCBJIHJlbWVtYmVyIHNlZWluZyAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7IGluIGEgc3l6Ym90IHJlcG9ydCByZWxhdGVkIHRvIHRoaXMuIElmIHN5emJvdCBjYXVnaHQgYW4gaXNzdWUsIHRoYXQgbWVhbnMgaXQgKmlzKiByZWFjaGFibGUsIHJpZ2h0PyBBbmQgSSBzZWUgdGhlIGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLiBTbywgaXQgd2FzIHByb2JhYmx5IGZ1enplZCwgb3IgaXQmIzM5O3MgYSBwYXRjaCB1bmRlciByZXZpZXcgZm9yIHN5emJvdC4KCkJ1dCB0aGVuIEkgc2VlIHRoZSBwcm9tcHQgbWVudGlvbnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSWYgaXQmIzM5O3MgYSBwaHlzaWNhbCBQQ0kgZHJpdmVyLCB3b3VsZCBpdCBiZSByZWFjaGFibGUgaW4gUUVNVT8gUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIQoKT2theSwgbGV0JiMzOTtzIHJldmlzaXQgc3l6a2FsbGVyJiMzOTtzIHZQQ0kgZnV6emVyLiBJdCBkb2VzIGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlc2AsIG9yIHNpbWlsYXIsIHJpZ2h0PyBBbmQgaXQgY2FuIGVtdWxhdGUgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLCBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcy4gVGhhdCBtZWFucyBzeXprYWxsZXIgY2FuIHByb3ZpZGUgdGhlIFBDSSBJRHMsIGFuZCBlbXVsYXRlIHRoZSBjb25maWcgc3BhY2UgYW5kIEJBUnMsIHNvIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiBpcyBjYWxsZWQuCgpBbHJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBgaGluaWNfZHJpdmVyYCBQQ0kgSURzLiBMZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBjYW4gYWN0dWFsbHkgcmVhY2ggaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hpbmljX3BjaV90YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYz0xNDY0PXN0YXRpYyB2b2lkIGhpbmljX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM6MTQ2OTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaGluaWNfcGNpX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0NzAtXHR7IFBDSV9WREVWSUNFKEhVQVdFSSwgSElOSUNfREVWX0lEX1FVQURfUE9SVF8yNUdFKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ3Ni19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDc3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBoaW5pY19wY2lfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYz0xNDc5PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBoaW5pY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0ODAtXHQubmFtZSAgICAgICAgICAgPSBISU5JQ19EUlZfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM6MTQ4MTpcdC5pZF90YWJsZSAgICAgICA9IGhpbmljX3BjaV90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ4Mi1cdC5wcm9iZSAgICAgICAgICA9IGhpbmljX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDA0MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgaGluaWNfcHJvYmVgIHdpdGggdGhlIHZQQ0kgRnV6emVyKioKCk9rYXksIHNvIHRoZSBpbW1lZGlhdGUgdGhvdWdodCBpczogaWYgc3l6a2FsbGVyJiMzOTtzIHZQQ0kgZnV6emVyIGNhbiBoaXQgaXQsIHRoZW4gd2UmIzM5O3ZlIGdvdCBhIHJlYWNoYWJsZSBjb2RlIHBhdGguIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lIGFzc3VtcHRpb24uIEJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgKnZpcnR1YWxpemVkIGVudmlyb25tZW50cyogbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBIbW0sIGlzIHN5emthbGxlciYjMzk7cyB2UENJIGZ1enplciBjb25zaWRlcmVkICYjMzQ7c29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0OyBpbiAqdGhpcyogY29udGV4dD8gSSYjMzk7ZCBzYXkgeWVzLCBpdCBkZWZpbml0ZWx5IGZpdHMgdGhhdCBkZXNjcmlwdGlvbi4KClRoZSBrZXkgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBkb2VzIHRoZSB2UENJIGZ1enplciBhY3R1YWxseSBnZXQgKnBhc3QqIHRoZSBwb3RlbnRpYWwgbWluZWZpZWxkIG9mIGNvbXBsZXggaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24sIGVzcGVjaWFsbHkgd2l0aGluIHNvbWV0aGluZyBhcyBlbGFib3JhdGUgYXMgYGhpbmljX3Byb2JlYD8gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgaW50cmljYXRlIFBDSSBkcml2ZXJzIG9mdGVuIGNob2tlIGVhcmx5IGluIHRoZWlyIGBwcm9iZWAgZnVuY3Rpb25zLiBUaGV5IGZyZXF1ZW50bHkgZGVwZW5kIG9uIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJhY3Rpb25zIOKAkyByZWFkaW5nIHBhcnRpY3VsYXIgcmVnaXN0ZXJzLCBETUEgb3BlcmF0aW9ucyB3b3JraW5nIGFzIGV4cGVjdGVkLCBjb3JyZWN0IGZpcm13YXJlIGxvYWRpbmcsIHlvdSBrbm93IHRoZSBkcmlsbC4gSXQmIzM5O3MgYSBmcmFnaWxlIGRhbmNlLgoKU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIHJpZ2h0IGludG8gYGhpbmljX3Byb2JlYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSB1cCBhZ2FpbnN0LCBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgdlBDSSBmdXp6ZXIgaXMgbGlrZWx5IHRvIHN1Y2NlZWQgb3IgZmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGluaWNfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTE2MD1zdGF0aWMgaW50IG5pY19kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTEzNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjEzNTY6c3RhdGljIGludCBoaW5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTM1Ny1cdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTE0Nzk9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGhpbmljX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0ODEtXHQuaWRfdGFibGUgICAgICAgPSBoaW5pY19wY2lfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjE0ODI6XHQucHJvYmUgICAgICAgICAgPSBoaW5pY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ4My1cdC5yZW1vdmUgICAgICAgICA9IGhpbmljX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NDQKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEaXZpbmcgaW50byBgaGluaWNfcHJvYmVgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdCB3aXRoIHRoaXMgYGhpbmljX3Byb2JlYC4gQmFzZWQgb24gdGhlIG5hbWUsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBsb3ctbGV2ZWwgdG9vbCwgcHJvYmFibHkgcmVsYXRlZCB0byBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVycywgb3IgJiMzNDtISU5JQ3MmIzM0OyBzcGVjaWZpY2FsbHkuIFRoZSBwcm9iZSBzdWZmaXggdHlwaWNhbGx5IGluZGljYXRlcyB0aGF0IGl0cyBmdW5jdGlvbiBpcyB0byB0ZXN0LCBnYXRoZXIgZGF0YSwgb3Igb3RoZXJ3aXNlIGV4YW1pbmUgdGhlIHN0YXRlIG9mIGEgaGFyZHdhcmUgY29tcG9uZW50LiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgZ28gdG8gdGhpbmdzIGxpa2UgaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIEhJTklDIG1vZGVsLCBjaGVja2luZyBpdHMgZmlybXdhcmUgdmVyc2lvbiwgdmVyaWZ5aW5nIGl0cyBvcGVyYXRpb25hbCBzdGF0dXMsIG9yIHBlcmhhcHMgZXZlbiBkaWFnbm9zaW5nIGNvbm5lY3Rpdml0eSBwcm9ibGVtcy4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyB0aGF0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBkdW1waW5nIGhhcmR3YXJlIHJlZ2lzdGVycywgb3IgZGV0ZWN0aW5nIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSBhY3R1YWxseSB0ZWxscyB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTM1NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM1NjpcdHN0YXRpYyBpbnQgaGluaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4xMzU3Olx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4xMzU4Olx0e1xuMTM1OTpcdFx0aW50IGVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuMTM2MDpcdFxuMTM2MTpcdFx0aWYgKGVycilcbjEzNjI6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGVyciwgXCYjMzQ7RmFpbGVkIHRvIGVuYWJsZSBQQ0kgZGV2aWNlXFxuXCYjMzQ7KTtcbjEzNjM6XHRcbjEzNjQ6XHRcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGRldiwgSElOSUNfRFJWX05BTUUpO1xuMTM2NTpcdFx0aWYgKGVycikge1xuMTM2NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVxdWVzdCBQQ0kgcmVnaW9uc1xcblwmIzM0Oyk7XG4xMzY3Olx0XHRcdGdvdG8gZXJyX3BjaV9yZWdpb25zO1xuMTM2ODpcdFx0fVxuMTM2OTpcdFxuMTM3MDpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4xMzcxOlx0XG4xMzcyOlx0XHRlcnIgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBETUFfQklUX01BU0soNjQpKTtcbjEzNzM6XHRcdGlmIChlcnIpIHtcbjEzNzQ6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHNldCBETUEgbWFza1xcblwmIzM0Oyk7XG4xMzc1Olx0XHRcdGdvdG8gZXJyX2RtYV9tYXNrO1xuMTM3NjpcdFx0fVxuMTM3NzpcdFxuMTM3ODpcdFx0ZXJyID0gbmljX2Rldl9pbml0KHBkZXYpO1xuMTM3OTpcdFx0aWYgKGVycikge1xuMTM4MDpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOSUMgZGV2aWNlXFxuXCYjMzQ7KTtcbjEzODE6XHRcdFx0Z290byBlcnJfbmljX2Rldl9pbml0O1xuMTM4MjpcdFx0fVxuMTM4MzpcdFxuMTM4NDpcdFx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0hpTklDIGRyaXZlciAtIHByb2JlZFxcblwmIzM0Oyk7XG4xMzg1Olx0XHRyZXR1cm4gMDtcbjEzODY6XHRcbjEzODc6XHRlcnJfbmljX2Rldl9pbml0OlxuMTM4ODpcdGVycl9kbWFfbWFzazpcbjEzODk6XHRcdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7XG4xMzkwOlx0XG4xMzkxOlx0ZXJyX3BjaV9yZWdpb25zOlxuMTM5MjpcdFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuMTM5MzpcdFx0cmV0dXJuIGVycjtcbjEzOTQ6XHR9XG4xMzk1Olx0XG4xMzk2Olx0c3RhdGljIHZvaWQgd2FpdF9zcmlvdl9jZmdfY29tcGxldGUoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcbjEzOTc6XHR7XG4xMzk4Olx0XHRzdHJ1Y3QgaGluaWNfc3Jpb3ZfaW5mbyAqc3Jpb3ZfaW5mbyA9IFx1MDAyNm5pY19kZXYtXHUwMDNlc3Jpb3ZfaW5mbztcbjEzOTk6XHRcdHUzMiBsb29wX2NudCA9IDA7XG4xNDAwOlx0XG4xNDAxOlx0XHRzZXRfYml0KEhJTklDX0ZVTkNfUkVNT1ZFLCBcdTAwMjZzcmlvdl9pbmZvLVx1MDAzZXN0YXRlKTtcbjE0MDI6XHRcdHVzbGVlcF9yYW5nZSg5OTAwLCAxMDAwMCk7XG4xNDAzOlx0XG4xNDA0Olx0XHR3aGlsZSAobG9vcF9jbnQgXHUwMDNjIEhJTklDX1dBSVRfU1JJT1ZfQ0ZHX1RJTUVPVVQpIHtcbjE0MDU6XHRcdFx0aWYgKCF0ZXN0X2JpdChISU5JQ19TUklPVl9FTkFCTEUsIFx1MDAyNnNyaW92X2luZm8tXHUwMDNlc3RhdGUpIFx1MDAyNlx1MDAyNlxuMTQwNjpcdFx0XHQgICAgIXRlc3RfYml0KEhJTklDX1NSSU9WX0RJU0FCTEUsIFx1MDAyNnNyaW92X2luZm8tXHUwMDNlc3RhdGUpKVxuMTQwNzpcdFx0XHRcdHJldHVybjtcbjE0MDg6XHRcbjE0MDk6XHRcdFx0dXNsZWVwX3JhbmdlKDk5MDAsIDEwMDAwKTtcbjE0MTA6XHRcdFx0bG9vcF9jbnQmIzQzOyYjNDM7O1xuMTQxMTpcdFx0fVxuMTQxMjpcdH1cbjE0MTM6XHRcbjE0MTQ6XHRzdGF0aWMgdm9pZCBoaW5pY19yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4xNDE1Olx0e1xuMTQxNjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbjE0MTc6XHRcdHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuMTQxODpcdFx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBuaWNfZGV2LVx1MDAzZWRldmxpbms7XG4xNDE5Olx0XHRzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrICpyeF9tb2RlX3dvcms7XG4xNDIwOlx0XG4xNDIxOlx0XHRpZiAoIUhJTklDX0lTX1ZGKG5pY19kZXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZikpIHtcbjE0MjI6XHRcdFx0d2FpdF9zcmlvdl9jZmdfY29tcGxldGUobmljX2Rldik7XG4xNDIzOlx0XHRcdGhpbmljX3BjaV9zcmlvdl9kaXNhYmxlKHBkZXYpO1xuMTQyNDpcdFx0fVxuMTQyNTpcdFxuMTQyNjpcdFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbjE0Mjc6XHRcbjE0Mjg6XHRcdGhpbmljX2Z1bmNfdGFibGVfZGVidWdfcmVtKG5pY19kZXYpO1xuMTQyOTpcdFxuMTQzMDpcdFx0aGluaWNfZnVuY190YmxfZGJnZnNfdW5pbml0KG5pY19kZXYpO1xuMTQzMTpcdFxuMTQzMjpcdFx0aGluaWNfZGJnX3VuaW5pdChuaWNfZGV2KTtcbjE0MzM6XHRcbjE0MzQ6XHRcdGhpbmljX2ZyZWVfaW50cl9jb2FsZXNjZShuaWNfZGV2KTtcbjE0MzU6XHRcbjE0MzY6XHRcdGhpbmljX3BvcnRfZGVsX21hYyhuaWNfZGV2LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIsIDApO1xuMTQzNzpcdFxuMTQzODpcdFx0aGluaWNfaHdkZXZfY2JfdW5yZWdpc3RlcihuaWNfZGV2LVx1MDAzZWh3ZGV2LFxuMTQzOTpcdFx0XHRcdFx0ICBISU5JQ19NR01UX01TR19DTURfTElOS19FUlJfRVZFTlQpO1xuMTQ0MDpcdFx0aGluaWNfaHdkZXZfY2JfdW5yZWdpc3RlcihuaWNfZGV2LVx1MDAzZWh3ZGV2LFxuMTQ0MTpcdFx0XHRcdFx0ICBISU5JQ19NR01UX01TR19DTURfQ0FCTEVfUExVR19FVkVOVCk7XG4xNDQyOlx0XHRoaW5pY19od2Rldl9jYl91bnJlZ2lzdGVyKG5pY19kZXYtXHUwMDNlaHdkZXYsXG4xNDQzOlx0XHRcdFx0XHQgIEhJTklDX01HTVRfTVNHX0NNRF9MSU5LX1NUQVRVUyk7XG4xNDQ0Olx0XG4xNDQ1Olx0XHRyeF9tb2RlX3dvcmsgPSBcdTAwMjZuaWNfZGV2LVx1MDAzZXJ4X21vZGVfd29yaztcbjE0NDY6XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cnhfbW9kZV93b3JrLVx1MDAzZXdvcmspO1xuMTQ0NzpcdFxuMTQ0ODpcdFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xuMTQ0OTpcdFxuMTQ1MDpcdFx0ZGVzdHJveV93b3JrcXVldWUobmljX2Rldi1cdTAwM2V3b3JrcSk7XG4xNDUxOlx0XG4xNDUyOlx0XHRoaW5pY19mcmVlX2h3ZGV2KG5pY19kZXYtXHUwMDNlaHdkZXYpO1xuMTQ1MzpcdFxuMTQ1NDpcdFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcbjE0NTU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI3MTQKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBuaWNcX2RldlxfaW5pdCoqCgpBbHJpZ2h0LCAqbmljXF9kZXZcX2luaXQqLi4uIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBhIG1lbnRhbCBjaGVja2xpc3QuIFRoaXMgaXMgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIGEgbmV0d29yayBpbnRlcmZhY2UgZGV2aWNlLCByaWdodD8gU28sIGZpcnN0IGFuZCBmb3JlbW9zdCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIFdoYXQga2luZCBvZiBOSUMgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IElzIHRoaXMgRXRoZXJuZXQsIEluZmluaWJhbmQsIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPyBUaGUgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gaXMgY3J1Y2lhbCBiZWNhdXNlIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIHdpbGwgYmUgaGVhdmlseSBkZXBlbmRlbnQgb24gdGhlIHJlZ2lzdGVyIHNldHMsIHRoZSBETUEgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBpbnRlcnJ1cHQgbGluZXMuCgpOZXh0LCBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIHBoYXNlcy4gV2UmIzM5O2xsIGxpa2VseSBiZSBjaGVja2luZyBmb3IgZGV2aWNlIHByZXNlbmNlLCBtYXliZSBkb2luZyBhIGhhcmR3YXJlIHJlc2V0LCBhbGxvY2F0aW5nIGFuZCBjb25maWd1cmluZyBETUEgYnVmZmVycywgbG9hZGluZyBmaXJtd2FyZSAoaWYgYXBwbGljYWJsZSksIHNldHRpbmcgdXAgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgdGhlbiBmaW5hbGx5LCByZWdpc3RlcmluZyB0aGUgZGV2aWNlIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBiZWluZyBhY2Nlc3NlZCBpbiB0aGlzIHJvdXRpbmUuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIHZhbHVlcy4KCkkmIzM5O20gYWxzbyB3b25kZXJpbmcgYWJvdXQgdGhlIGVycm9yIGhhbmRsaW5nLiBXaGF0IGZhaWx1cmUgbW9kZXMgYXJlIGFjY291bnRlZCBmb3I/IEFyZSB0aGVyZSByZXRyaWVzIHdpdGggYmFja29mZj8gQXJlIHRoZXJlIGFueSBkaWFnbm9zdGljcyBidWlsdC1pbj8gQSByb2J1c3QgaW5pdGlhbGl6YXRpb24gcm91dGluZSBpcyBvbmUgdGhhdCBjYW4gaGFuZGxlIGEgdmFyaWV0eSBvZiBoYXJkd2FyZSBpc3N1ZXMgZ3JhY2VmdWxseSBhbmQgcHJvdmlkZSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSB1c2VyLiBJIGhvcGUgdGhlcmUmIzM5O3MgZ29vZCBsb2dnaW5nLgoKVGhpcyBpbml0aWFsaXphdGlvbiBpcyBjcml0aWNhbC4gQSBzdWJ0bGUgYnVnIGhlcmUgY2FuIGxlYWQgdG8gaW50ZXJtaXR0ZW50IG5ldHdvcmsgcHJvYmxlbXMsIHBvb3IgcGVyZm9ybWFuY2UsIG9yIGV2ZW4gY29tcGxldGUgc3lzdGVtIGhhbmdzLiBUaGUgZGVlcGVyIEkgZ28sIHRoZSBtb3JlIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIG11dGV4ZXMgb3Igc3BpbmxvY2tzIHRvIGVuc3VyZSB0aHJlYWQtc2FmZXR5LCBlc3BlY2lhbGx5IGlmIHRoaXMgcm91dGluZSBpcyBydW5uaW5nIGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwga2VlcCB0aGUgT1MmIzM5O3MgZGF0YSBzdHJ1Y3R1cmVzIGluIG1pbmQ6IEFyZSB3ZSB3b3JraW5nIHdpdGggbmV0ZGV2IHN0cnVjdHVyZXMsIG9yIHNvbWUgb3RoZXIsIGRldmljZS1zcGVjaWZpYyBhYnN0cmFjdGlvbj8gQW55IGludGVyYWN0aW9uIHdpdGggbmV0bGluayBpcyBvZiBpbW1lZGlhdGUgaW50ZXJlc3QuCgpVbHRpbWF0ZWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHJvdXRpbmUmIzM5O3Mgcm9sZSBpbiBlc3RhYmxpc2hpbmcgYSBzdGFibGUsIHdlbGwtY29uZmlndXJlZCBuZXR3b3JrIGludGVyZmFjZS4gQW5kIHRoYXQgc3RhcnRzIHdpdGggdW5kZXJzdGFuZGluZyBhbGwgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkmIzM5O3JlIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExNjA6XHRzdGF0aWMgaW50IG5pY19kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbjExNjE6XHR7XG4xMTYyOlx0XHRzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrICpyeF9tb2RlX3dvcms7XG4xMTYzOlx0XHRzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2O1xuMTE2NDpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbjExNjU6XHRcdHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXY7XG4xMTY2Olx0XHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluaztcbjExNjc6XHRcdHU4IGFkZHJbRVRIX0FMRU5dO1xuMTE2ODpcdFx0aW50IGVyciwgbnVtX3FwcztcbjExNjk6XHRcbjExNzA6XHRcdGRldmxpbmsgPSBoaW5pY19kZXZsaW5rX2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbjExNzE6XHRcdGlmICghZGV2bGluaykge1xuMTE3MjpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtIaW5pYyBkZXZsaW5rIGFsbG9jIGZhaWxlZFxcblwmIzM0Oyk7XG4xMTczOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTE3NDpcdFx0fVxuMTE3NTpcdFxuMTE3NjpcdFx0aHdkZXYgPSBoaW5pY19pbml0X2h3ZGV2KHBkZXYsIGRldmxpbmspO1xuMTE3NzpcdFx0aWYgKElTX0VSUihod2RldikpIHtcbjExNzg6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgSFcgZGV2aWNlXFxuXCYjMzQ7KTtcbjExNzk6XHRcdFx0aGluaWNfZGV2bGlua19mcmVlKGRldmxpbmspO1xuMTE4MDpcdFx0XHRyZXR1cm4gUFRSX0VSUihod2Rldik7XG4xMTgxOlx0XHR9XG4xMTgyOlx0XG4xMTgzOlx0XHRudW1fcXBzID0gaGluaWNfaHdkZXZfbnVtX3Fwcyhod2Rldik7XG4xMTg0Olx0XHRpZiAobnVtX3FwcyBcdTAwM2M9IDApIHtcbjExODU6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBudW1iZXIgb2YgUVBTXFxuXCYjMzQ7KTtcbjExODY6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjExODc6XHRcdFx0Z290byBlcnJfbnVtX3FwcztcbjExODg6XHRcdH1cbjExODk6XHRcbjExOTA6XHRcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqbmljX2RldiksIG51bV9xcHMpO1xuMTE5MTpcdFx0aWYgKCFuZXRkZXYpIHtcbjExOTI6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIEV0aGVybmV0IGRldmljZVxcblwmIzM0Oyk7XG4xMTkzOlx0XHRcdGVyciA9IC1FTk9NRU07XG4xMTk0Olx0XHRcdGdvdG8gZXJyX2FsbG9jX2V0aGVyZGV2O1xuMTE5NTpcdFx0fVxuMTE5NjpcdFxuMTE5NzpcdFx0aWYgKCFISU5JQ19JU19WRihod2Rldi1cdTAwM2Vod2lmKSlcbjExOTg6XHRcdFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZoaW5pY19uZXRkZXZfb3BzO1xuMTE5OTpcdFx0ZWxzZVxuMTIwMDpcdFx0XHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmhpbmljdmZfbmV0ZGV2X29wcztcbjEyMDE6XHRcbjEyMDI6XHRcdG5ldGRldi1cdTAwM2VtYXhfbXR1ID0gSElOSUNfTUFYX01UVV9TSVpFO1xuMTIwMzpcdFx0bmV0ZGV2LVx1MDAzZW1pbl9tdHUgPSBISU5JQ19NSU5fTVRVX1NJWkU7XG4xMjA0Olx0XG4xMjA1Olx0XHRuaWNfZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbjEyMDY6XHRcdG5pY19kZXYtXHUwMDNlbmV0ZGV2ID0gbmV0ZGV2O1xuMTIwNzpcdFx0bmljX2Rldi1cdTAwM2Vod2RldiAgPSBod2RldjtcbjEyMDg6XHRcdG5pY19kZXYtXHUwMDNlbXNnX2VuYWJsZSA9IE1TR19FTkFCTEVfREVGQVVMVDtcbjEyMDk6XHRcdG5pY19kZXYtXHUwMDNlZmxhZ3MgPSAwO1xuMTIxMDpcdFx0bmljX2Rldi1cdTAwM2V0eHFzID0gTlVMTDtcbjEyMTE6XHRcdG5pY19kZXYtXHUwMDNlcnhxcyA9IE5VTEw7XG4xMjEyOlx0XHRuaWNfZGV2LVx1MDAzZXR4X3dlaWdodCA9IHR4X3dlaWdodDtcbjEyMTM6XHRcdG5pY19kZXYtXHUwMDNlcnhfd2VpZ2h0ID0gcnhfd2VpZ2h0O1xuMTIxNDpcdFx0bmljX2Rldi1cdTAwM2VzcV9kZXB0aCA9IEhJTklDX1NRX0RFUFRIO1xuMTIxNTpcdFx0bmljX2Rldi1cdTAwM2VycV9kZXB0aCA9IEhJTklDX1JRX0RFUFRIO1xuMTIxNjpcdFx0bmljX2Rldi1cdTAwM2Vzcmlvdl9pbmZvLmh3ZGV2ID0gaHdkZXY7XG4xMjE3Olx0XHRuaWNfZGV2LVx1MDAzZXNyaW92X2luZm8ucGRldiA9IHBkZXY7XG4xMjE4Olx0XHRuaWNfZGV2LVx1MDAzZW1heF9xcHMgPSBudW1fcXBzO1xuMTIxOTpcdFx0bmljX2Rldi1cdTAwM2VkZXZsaW5rID0gZGV2bGluaztcbjEyMjA6XHRcbjEyMjE6XHRcdGhpbmljX3NldF9ldGh0b29sX29wcyhuZXRkZXYpO1xuMTIyMjpcdFxuMTIyMzpcdFx0c2VtYV9pbml0KFx1MDAyNm5pY19kZXYtXHUwMDNlbWdtdF9sb2NrLCAxKTtcbjEyMjQ6XHRcbjEyMjU6XHRcdG5pY19kZXYtXHUwMDNldmxhbl9iaXRtYXAgPSBkZXZtX2JpdG1hcF96YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFZMQU5fTl9WSUQsXG4xMjI2Olx0XHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbjEyMjc6XHRcdGlmICghbmljX2Rldi1cdTAwM2V2bGFuX2JpdG1hcCkge1xuMTIyODpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMTIyOTpcdFx0XHRnb3RvIGVycl92bGFuX2JpdG1hcDtcbjEyMzA6XHRcdH1cbjEyMzE6XHRcbjEyMzI6XHRcdG5pY19kZXYtXHUwMDNld29ya3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShISU5JQ19XUV9OQU1FKTtcbjEyMzM6XHRcdGlmICghbmljX2Rldi1cdTAwM2V3b3JrcSkge1xuMTIzNDpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMTIzNTpcdFx0XHRnb3RvIGVycl93b3JrcTtcbjEyMzY6XHRcdH1cbjEyMzc6XHRcbjEyMzg6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBuZXRkZXYpO1xuMTIzOTpcdFxuMTI0MDpcdFx0ZXJyID0gaGluaWNfcG9ydF9nZXRfbWFjKG5pY19kZXYsIGFkZHIpO1xuMTI0MTpcdFx0aWYgKGVycikge1xuMTI0MjpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gZ2V0IG1hYyBhZGRyZXNzXFxuXCYjMzQ7KTtcbjEyNDM6XHRcdFx0Z290byBlcnJfZ2V0X21hYztcbjEyNDQ6XHRcdH1cbjEyNDU6XHRcdGV0aF9od19hZGRyX3NldChuZXRkZXYsIGFkZHIpO1xuMTI0NjpcdFxuMTI0NzpcdFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKG5ldGRldi1cdTAwM2VkZXZfYWRkcikpIHtcbjEyNDg6XHRcdFx0aWYgKCFISU5JQ19JU19WRihuaWNfZGV2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYpKSB7XG4xMjQ5Olx0XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBNQUMgYWRkcmVzc1xcblwmIzM0Oyk7XG4xMjUwOlx0XHRcdFx0ZXJyID0gLUVJTztcbjEyNTE6XHRcdFx0XHRnb3RvIGVycl9hZGRfbWFjO1xuMTI1MjpcdFx0XHR9XG4xMjUzOlx0XG4xMjU0Olx0XHRcdGRldl9pbmZvKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIE1BQyBhZGRyZXNzICVwTSwgdXNpbmcgcmFuZG9tXFxuXCYjMzQ7LFxuMTI1NTpcdFx0XHRcdCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIpO1xuMTI1NjpcdFx0XHRldGhfaHdfYWRkcl9yYW5kb20obmV0ZGV2KTtcbjEyNTc6XHRcdH1cbjEyNTg6XHRcbjEyNTk6XHRcdGVyciA9IGhpbmljX3BvcnRfYWRkX21hYyhuaWNfZGV2LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIsIDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg4MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBoaW5pY19pbml0X2h3ZGV2YCoqCgpPa2F5LCBgaGluaWNfaW5pdF9od2RldmAgaGFzIGJlZW4gaW52b2tlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHBvdGVudGlhbCBjb21wbGV4aXR5IGhlcmUuIEJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXQgc3VnZ2VzdHMgdGhpcyByb3V0aW5lIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlIGRldmljZSwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlcmUgd2lsbCBsaWtlbHkgYmUgbG93LWxldmVsIGhhcmR3YXJlIGludGVyYWN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byBjb25maXJtLCBidXQgSSYjMzk7bSBleHBlY3RpbmcgcmVnaXN0ZXIgYWNjZXNzZXMsIHBvdGVudGlhbGx5IERNQSBzZXR1cCwgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24sIGFuZCBwb3NzaWJseSBldmVuIGZpcm13YXJlIGxvYWRpbmcgb3IgY29tbXVuaWNhdGlvbi4gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBzY29wZSBvZiB0aGVzZSBvcGVyYXRpb25zIHRvIGRldGVybWluZSBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIGJvdHRsZW5lY2tzLCBvciByYWNlIGNvbmRpdGlvbnMuIEtub3dpbmcgd2hhdCBzcGVjaWZpYyBoYXJkd2FyZSByZXNvdXJjZXMgdGhlIGZ1bmN0aW9uIHRhcmdldHMgaXMgZ29pbmcgdG8gYmUgbXkgaW1tZWRpYXRlIHByaW9yaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaW5pY19pbml0X2h3ZGV2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmM9ODYxPWludCBoaW5pY19zZXRfaW50ZXJydXB0X2NmZyhzdHJ1Y3QgaGluaWNfaHdkZXYgKmh3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy04OTYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmM6ODk3OiAqIGhpbmljX2luaXRfaHdkZXYgLSBJbml0aWFsaXplIHRoZSBOSUMgSFdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy04OTgtICogQHBkZXY6IHRoZSBOSUMgcGNpIGRldmljZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy05MDQtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jOjkwNTpzdHJ1Y3QgaGluaWNfaHdkZXYgKmhpbmljX2luaXRfaHdkZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jLTkwNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oPTYyOT12b2lkIGhpbmljX2h3ZGV2X2lmZG93bihzdHJ1Y3QgaGluaWNfaHdkZXYgKmh3ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaC02MzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2Lmg6NjMxOnN0cnVjdCBoaW5pY19od2RldiAqaGluaWNfaW5pdF9od2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGRldmxpbmsgKmRldmxpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oLTYzMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTExNjA9c3RhdGljIGludCBuaWNfZGV2X2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxMTc2Olx0aHdkZXYgPSBoaW5pY19pbml0X2h3ZGV2KHBkZXYsIGRldmxpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xMTc3LVx0aWYgKElTX0VSUihod2RldikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3MTEKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGFjY291bnQ6CgoqKkRpdmluZyBpbnRvIGhpbmljXF9pbml0XF9od2RldioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhpcyBgaGluaWNfaW5pdF9od2RldmAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGFzc2VzcyBpdHMgc2NvcGUuIElzIHRoaXMgYSB0b3AtbGV2ZWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBkZWVwZXIgaW4gdGhlIGRyaXZlciBzdGFjaz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSYjMzk7bSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgdGFyZ2V0IGhhcmR3YXJlIOKAkyB0aGUgc3BlY2lmaWMgTklDIG1vZGVsLCB0aGUgaW50ZW5kZWQgb3BlcmF0aW5nIGVudmlyb25tZW50LCBhbmQgd2hhdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS4gS25vd2luZyB0aGUgaGFyZHdhcmUgaXMga2V5LgoKTXkgZm9jdXMgaXMgc2hpZnRpbmcgdG8gaG93IGl0IGhhbmRsZXMgaGFyZHdhcmUgcmVzb3VyY2VzLiBEb2VzIGl0IGNhbGwgZnVuY3Rpb25zIHRvIG1hcCBtZW1vcnksIHJlcXVlc3QgaW50ZXJydXB0cywgb3IgbWFuYWdlIERNQSBjaGFubmVscz8gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgY29uZmxpY3RzIOKAkyBkb2VzIGl0IGNoZWNrIGZvciByZXNvdXJjZSBhdmFpbGFiaWxpdHkgYmVmb3JlIGF0dGVtcHRpbmcgdG8gYWxsb2NhdGUgdGhlbT8gQXJlIHRoZXJlIGFueSBlcnJvciBoYW5kbGluZyBwYXRocz8gSSYjMzk7bGwgYmUgc2NydXRpbml6aW5nIHRoZSByZXR1cm4gY29kZXMgYW5kIGVycm9yIG1lc3NhZ2VzLCBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2Ygd2Vha25lc3Mgb3Igb3Bwb3J0dW5pdGllcyBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuCgpJJiMzOTttIGFsc28gcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGl0IGFjY2VwdHMuIEFyZSB0aGVzZSBoYXJkY29kZWQsIG9yIGR5bmFtaWNhbGx5IGRlcml2ZWQgZnJvbSB0aGUgcGxhdGZvcm0/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgbGlrZSByZWdpc3RlciBhY2Nlc3MgcHJvdGVjdGlvbnMsIG9yIHBvdGVudGlhbCBmb3IgYnVmZmVyIG92ZXJmbG93cz8gSG93IGRvZXMgaXQgaW50ZWdyYXRlIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlciwgbGlrZSB0aGUgTklDJiMzOTtzIGZpcm13YXJlIGludGVyZmFjZSBvciB0aGUgbmV0d29yayBzdGFjayBpdHNlbGY/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuIExldCYjMzk7cyBzZWUgaG93IGl0IGdvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTA1Olx0c3RydWN0IGhpbmljX2h3ZGV2ICpoaW5pY19pbml0X2h3ZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluaylcbiA5MDY6XHR7XG4gOTA3Olx0XHRzdHJ1Y3QgaGluaWNfcGZod2RldiAqcGZod2RldjtcbiA5MDg6XHRcdHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXY7XG4gOTA5Olx0XHRzdHJ1Y3QgaGluaWNfaHdpZiAqaHdpZjtcbiA5MTA6XHRcdGludCBlcnIsIG51bV9hZXFzO1xuIDkxMTpcdFxuIDkxMjpcdFx0aHdpZiA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpod2lmKSwgR0ZQX0tFUk5FTCk7XG4gOTEzOlx0XHRpZiAoIWh3aWYpXG4gOTE0Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIDkxNTpcdFxuIDkxNjpcdFx0ZXJyID0gaGluaWNfaW5pdF9od2lmKGh3aWYsIHBkZXYpO1xuIDkxNzpcdFx0aWYgKGVycikge1xuIDkxODpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdCBIVyBpbnRlcmZhY2VcXG5cJiMzNDspO1xuIDkxOTpcdFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDkyMDpcdFx0fVxuIDkyMTpcdFxuIDkyMjpcdFx0cGZod2RldiA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpwZmh3ZGV2KSwgR0ZQX0tFUk5FTCk7XG4gOTIzOlx0XHRpZiAoIXBmaHdkZXYpIHtcbiA5MjQ6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA5MjU6XHRcdFx0Z290byBlcnJfcGZod2Rldl9hbGxvYztcbiA5MjY6XHRcdH1cbiA5Mjc6XHRcbiA5Mjg6XHRcdGh3ZGV2ID0gXHUwMDI2cGZod2Rldi1cdTAwM2Vod2RldjtcbiA5Mjk6XHRcdGh3ZGV2LVx1MDAzZWh3aWYgPSBod2lmO1xuIDkzMDpcdFx0aHdkZXYtXHUwMDNlZGV2bGlua19kZXYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7XG4gOTMxOlx0XHRod2Rldi1cdTAwM2VkZXZsaW5rX2Rldi1cdTAwM2Vod2RldiA9IGh3ZGV2O1xuIDkzMjpcdFxuIDkzMzpcdFx0ZXJyID0gaW5pdF9tc2l4KGh3ZGV2KTtcbiA5MzQ6XHRcdGlmIChlcnIpIHtcbiA5MzU6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgbXNpeFxcblwmIzM0Oyk7XG4gOTM2Olx0XHRcdGdvdG8gZXJyX2luaXRfbXNpeDtcbiA5Mzc6XHRcdH1cbiA5Mzg6XHRcbiA5Mzk6XHRcdGVyciA9IHdhaXRfZm9yX291dGJvdW5kX3N0YXRlKGh3ZGV2KTtcbiA5NDA6XHRcdGlmIChlcnIpIHtcbiA5NDE6XHRcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O291dGJvdW5kIC0gZGlzYWJsZWQsIHRyeSBhZ2FpblxcblwmIzM0Oyk7XG4gOTQyOlx0XHRcdGhpbmljX291dGJvdW5kX3N0YXRlX3NldChod2lmLCBISU5JQ19PVVRCT1VORF9FTkFCTEUpO1xuIDk0MzpcdFx0fVxuIDk0NDpcdFxuIDk0NTpcdFx0bnVtX2FlcXMgPSBISU5JQ19IV0lGX05VTV9BRVFTKGh3aWYpO1xuIDk0NjpcdFxuIDk0NzpcdFx0ZXJyID0gaGluaWNfYWVxc19pbml0KFx1MDAyNmh3ZGV2LVx1MDAzZWFlcXMsIGh3aWYsIG51bV9hZXFzLFxuIDk0ODpcdFx0XHRcdCAgICAgIEhJTklDX0RFRkFVTFRfQUVRX0xFTiwgSElOSUNfRVFfUEFHRV9TSVpFLFxuIDk0OTpcdFx0XHRcdCAgICAgIGh3ZGV2LVx1MDAzZW1zaXhfZW50cmllcyk7XG4gOTUwOlx0XHRpZiAoZXJyKSB7XG4gOTUxOlx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBpbml0IGFzeW5jIGV2ZW50IHF1ZXVlc1xcblwmIzM0Oyk7XG4gOTUyOlx0XHRcdGdvdG8gZXJyX2FlcXNfaW5pdDtcbiA5NTM6XHRcdH1cbiA5NTQ6XHRcbiA5NTU6XHRcdGVyciA9IGluaXRfcGZod2RldihwZmh3ZGV2KTtcbiA5NTY6XHRcdGlmIChlcnIpIHtcbiA5NTc6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgUEYgSFcgZGV2aWNlXFxuXCYjMzQ7KTtcbiA5NTg6XHRcdFx0Z290byBlcnJfaW5pdF9wZmh3ZGV2O1xuIDk1OTpcdFx0fVxuIDk2MDpcdFxuIDk2MTpcdFx0ZXJyID0gaGluaWNfbDJuaWNfcmVzZXQoaHdkZXYpO1xuIDk2MjpcdFx0aWYgKGVycilcbiA5NjM6XHRcdFx0Z290byBlcnJfbDJuaWNfcmVzZXQ7XG4gOTY0Olx0XG4gOTY1Olx0XHRlcnIgPSBnZXRfZGV2X2NhcChod2Rldik7XG4gOTY2Olx0XHRpZiAoZXJyKSB7XG4gOTY3Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBnZXQgZGV2aWNlIGNhcGFiaWxpdGllc1xcblwmIzM0Oyk7XG4gOTY4Olx0XHRcdGdvdG8gZXJyX2Rldl9jYXA7XG4gOTY5Olx0XHR9XG4gOTcwOlx0XG4gOTcxOlx0XHRtdXRleF9pbml0KFx1MDAyNmh3ZGV2LVx1MDAzZWZ1bmNfdG9faW8ubmljX2NmZy5jZmdfbXV0ZXgpO1xuIDk3MjpcdFxuIDk3MzpcdFx0ZXJyID0gaGluaWNfdmZfZnVuY19pbml0KGh3ZGV2KTtcbiA5NzQ6XHRcdGlmIChlcnIpIHtcbiA5NzU6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGluaXQgbmljIG1ib3hcXG5cJiMzNDspO1xuIDk3NjpcdFx0XHRnb3RvIGVycl92Zl9mdW5jX2luaXQ7XG4gOTc3Olx0XHR9XG4gOTc4Olx0XG4gOTc5Olx0XHRlcnIgPSBpbml0X2Z3X2N0eHQoaHdkZXYpO1xuIDk4MDpcdFx0aWYgKGVycikge1xuIDk4MTpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gaW5pdCBmdW5jdGlvbiB0YWJsZVxcblwmIzM0Oyk7XG4gOTgyOlx0XHRcdGdvdG8gZXJyX2luaXRfZndfY3R4dDtcbiA5ODM6XHRcdH1cbiA5ODQ6XHRcbiA5ODU6XHRcdGVyciA9IHNldF9yZXNvdXJjZXNfc3RhdGUoaHdkZXYsIEhJTklDX1JFU19BQ1RJVkUpO1xuIDk4NjpcdFx0aWYgKGVycikge1xuIDk4NzpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gc2V0IHJlc291cmNlcyBzdGF0ZVxcblwmIzM0Oyk7XG4gOTg4Olx0XHRcdGdvdG8gZXJyX3Jlc291cmNlc19zdGF0ZTtcbiA5ODk6XHRcdH1cbiA5OTA6XHRcbiA5OTE6XHRcdHJldHVybiBod2RldjtcbiA5OTI6XHRcbiA5OTM6XHRlcnJfcmVzb3VyY2VzX3N0YXRlOlxuIDk5NDpcdGVycl9pbml0X2Z3X2N0eHQ6XG4gOTk1Olx0XHRoaW5pY192Zl9mdW5jX2ZyZWUoaHdkZXYpO1xuIDk5NjpcdGVycl92Zl9mdW5jX2luaXQ6XG4gOTk3Olx0ZXJyX2wybmljX3Jlc2V0OlxuIDk5ODpcdGVycl9kZXZfY2FwOlxuIDk5OTpcdFx0ZnJlZV9wZmh3ZGV2KHBmaHdkZXYpO1xuMTAwMDpcdFxuMTAwMTpcdGVycl9pbml0X3BmaHdkZXY6XG4xMDAyOlx0XHRoaW5pY19hZXFzX2ZyZWUoXHUwMDI2aHdkZXYtXHUwMDNlYWVxcyk7XG4xMDAzOlx0XG4xMDA0Olx0ZXJyX2FlcXNfaW5pdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2NDgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgSGlOSUMgRGV2bGluayBGbGFzaCBVcGRhdGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgYXJvdW5kIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U6IGBoaW5pY19pbml0X2h3aWZgLCBgaW5pdF9tc2l4YCwgYHdhaXRfZm9yX291dGJvdW5kX3N0YXRlYCwgYGhpbmljX2FlcXNfaW5pdGAsIGBpbml0X3BmaHdkZXZgLCBgaGluaWNfbDJuaWNfcmVzZXRgLCBgZ2V0X2Rldl9jYXBgLCBgaGluaWNfdmZfZnVuY19pbml0YCwgYGluaXRfZndfY3R4dGAsIGBzZXRfcmVzb3VyY2VzX3N0YXRlYC4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIGludGVyYWN0aW5nIHdpdGggUENJIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzOyB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LgoKR2l2ZW4gdGhhdCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBTeXprYWxsZXIgYW5kIGl0cyB2UENJIGZ1enplci4gSWYgaXQmIzM5O3MgaW50ZXJjZXB0aW5nIHRob3NlIHJlYWRzIGFuZCB3cml0ZXMsIGl0IG9wZW5zIGEgaHVnZSBhdHRhY2sgc3VyZmFjZS4gQ291bGQgaXQgcHJvYmUgdGhpcyBkZXZpY2UgZWZmZWN0aXZlbHk/IEFuZCBpZiBzbywgY2FuIGl0IHRoZW4gcmVhY2ggdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlPwoKQWgsIHJpZ2h0LCB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGUgaXMgdHJpZ2dlcmVkIGJ5IG5ldGxpbmsuIFNvLCB0aGF0JiMzOTtzIHRoZSB2ZWN0b3IuIEFuZCB0aGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYGNoZWNrX2ltYWdlX3ZhbGlkYCB3aXRoaW4gYGhpbmljX2RldmxpbmsuY2AuIFRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBoaW5pY19maXJtd2FyZV91cGRhdGVgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgIOKAkyB0aGUgYC5mbGFzaF91cGRhdGVgIGNhbGxiYWNrIGZvciBkZXZsaW5rLgoKU28sIFN5emthbGxlciAqc2hvdWxkKiBiZSBhYmxlIHRvIHJlYWNoIHRoaXMgYnkgY3JhZnRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB0byB1cGRhdGUgdGhlIGZpcm13YXJlLiBBbmQgdGhlIGZpcm13YXJlIGRhdGEgaXRzZWxmLCB0aGF0JiMzOTtzIGVpdGhlciB1c2VyLXByb3ZpZGVkIChvciBsb2FkZWQgYnkgYHJlcXVlc3RfZmlybXdhcmVgKS4KCldhaXQsIHRoZSBmdW5jdGlvbiBzaWduYXR1cmU6IGBoaW5pY19maXJtd2FyZV91cGRhdGVgIHRha2VzIGBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3YC4gTm93LCB3aGVyZSBkb2VzIGBmd2AgY29tZSBmcm9tPyBSaWdodCwgYGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zYCBoYXMgYHBhcmFtcy0mZ3Q7ZndgLgoKVGhlIHVzZXIgaXMgcHJvdmlkaW5nIHRoZSBmaXJtd2FyZSBmaWxlbmFtZSwgYW5kIHRoZSBrZXJuZWwgbG9hZHMgaXQgdmlhIGByZXF1ZXN0X2Zpcm13YXJlYC4gT3IgdGhlIHVzZXIgY291bGQgYnlwYXNzIHRoYXQgYW5kIGZlZWQgdGhlIGRhdGEgZGlyZWN0bHkgdGhyb3VnaCBuZXRsaW5rOyB0aGF0JiMzOTtzIHdoYXQgdGhlIGRldmxpbmsgYWxsb3dzLiBUaGlzIGlzIHZlcnkgZ29vZCBiZWNhdXNlIHN5emthbGxlciYjMzk7cyBmaXJtd2FyZSBmdXp6ZXIgY2FuIGludGVyY2VwdCBgcmVxdWVzdF9maXJtd2FyZWAuIFRoaXMgbWFrZXMgdGhpcyBjb2RlIHBhdGggKmV4dHJlbWVseSogZnV6emFibGUsIGFzIFN5emthbGxlciBjYW4gcHJvdmlkZSB0aGUgZnV6emVkIGRhdGEuCgpHaXZlbiB0aGF0LCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCB0YXJnZXQuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY2hlY2tfaW1hZ2VfdmFsaWRgIGlzIHJlYWNoYWJsZSwgYnV0IHRoZSBwaWVjZXMgYXJlIGFsbCB0aGVyZS4gVGhpcyBpcyBhIHZlcnkgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfaW1hZ2VfdmFsaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM9MjM9c3RhdGljIGJvb2wgaGluaWNfZndfc2VjdGlvbl92YWxpZCh1MzIgZndfbGVuLCB1MzIgb2Zmc2V0LCB1MzIgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjI4OnN0YXRpYyBib29sIGNoZWNrX2ltYWdlX3ZhbGlkKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsIGNvbnN0IHU4ICpidWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI5LVx0XHRcdCAgICAgIHNpemVfdCBpbWFnZV9zaXplLCBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTI4Mz1zdGF0aWMgaW50IGhpbmljX2Zpcm13YXJlX3VwZGF0ZShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyOTI6XHRpZiAoIWNoZWNrX2ltYWdlX3ZhbGlkKHByaXYsIGZ3LVx1MDAzZWRhdGEsIGZ3LVx1MDAzZXNpemUsIFx1MDAyNmhvc3RfaW1hZ2UpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI5My1cdCAgICAhY2hlY2tfaW1hZ2VfaW50ZWdyaXR5KHByaXYsIFx1MDAyNmhvc3RfaW1hZ2UsIEZXX1VQREFURV9DT0xEKSB8fFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTAxMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaXJtd2FyZSBWdWxuZXJhYmlsaXR5IEZpeCoqCgpPa2F5LCBzbyBgY2hlY2tfaW1hZ2VfdmFsaWRgICppcyogY2FsbGVkIHdpdGhpbiBgaGluaWNfZmlybXdhcmVfdXBkYXRlYCwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBUaGlzIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBvciBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYC4gVGhlIGRpZmYgcmVhbGx5IGhpZ2hsaWdodHMgdGhlIGlzc3VlOiB0aGV5JiMzOTtyZSBjaGFuZ2luZyB0aGUgbGVuZ3RoIGNoZWNrcywgd2hpY2ggaXMgYSBjb21tb24gYXJlYSBmb3IgdGhlc2Uga2luZHMgb2YgcHJvYmxlbXMuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwcmV0dHkgc3VzcGVjdDoKCmBgYGMKLQlpZiAobGVuICE9IGZ3X2ltYWdlLSZndDtmd19sZW4gfHwKLQkgICAgKGZ3X2ltYWdlLSZndDtmd19sZW4gJiM0MzsgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSAhPSBpbWFnZV9zaXplKSB7CmBgYAoKQW5kIGl0IGxvb2tzIGxpa2UgdGhlIGZpeCBjb3JyZWN0cyBpdCB0bzoKCmBgYGMKJiM0MzsJaWYgKGZ3X2ltYWdlLSZndDtmd19sZW4gIT0gaW1hZ2Vfc2l6ZSAtIFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkgewpgYGAKClRoYXQmIzM5O3MgYSBtdWNoIG1vcmUgcm9idXN0IGNoZWNrLiBBbmQgdGhlbiB0aGVyZSYjMzk7cyBhbHNvIHRoZSBhZGRpdGlvbiBvZiB0aGlzIHNhZmV0eSBjaGVjayB3aXRoaW4gdGhlIGxvb3A6CgpgYGBjCiYjNDM7CQlpZiAoIWhpbmljX2Z3X3NlY3Rpb25fdmFsaWQoZndfaW1hZ2UtJmd0O2Z3X2xlbiwKJiM0MzsJCQkJCSAgICBzZWN0aW9uLSZndDtmd19zZWN0aW9uX29mZnNldCwKJiM0MzsJCQkJCSAgICBzZWN0aW9uLSZndDtmd19zZWN0aW9uX2xlbikpIHsKYGBgCgpZZWFoLCB0aGF0IGBoaW5pY19md19zZWN0aW9uX3ZhbGlkYCBjYWxsIGlzIGRlZmluaXRlbHkgYSBnb29kIGFkZGl0aW9uLCBoZWxwaW5nIGVuc3VyZSBzZWN0aW9uIGRhdGEgaXMgd2l0aGluIGV4cGVjdGVkIGJvdW5kcy4gQ2xhc3NpYyBmaXJtd2FyZSBwYXJzaW5nIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbi4gR2l2ZW4gdGhhdCBzeXprYWxsZXIgY2FuIGZ1enogZmlybXdhcmUgZmlsZXMgYW5kIGludGVyYWN0IHdpdGggZGV2bGluaywgdGhpcyBpcyBhYnNvbHV0ZWx5IHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gV2UgY2FuIGxpa2VseSBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgYnVncyBoZXJlLgoKUmlnaHQsIHNvIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gSSYjMzk7bGwgZm9jdXMgb24gdGhlc2U6CgoqICAgYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYAoqICAgYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWAKKiAgIGBjaGVja19pbWFnZV92YWxpZGAKKiAgIGBjaGVja19pbWFnZV9pbnRlZ3JpdHlgCiogICBgaGluaWNfZmxhc2hfZndgCgpBbmQgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgZHJpdmVyIGNvbmZpZyBpcyBpbiBwbGFjZSB0byBhbGxvdyB0aGUgZnV6emluZyB0byBiZSBlZmZlY3RpdmUuIEFoLCBpdCYjMzk7cyBgQ09ORklHX0hJTklDYCwgZ29vZCwgc28gd2UganVzdCBuZWVkIHRvIGVuc3VyZSB0aGF0JiMzOTtzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBISU5JQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjY6Y29uZmlnIEhJTklDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7SHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAxMzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTg5NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkmIzM5O3ZlIGdvdCBteSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gc2V0LCBidXQgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2sgZm9yIGFueSBvdmVybG9va2VkIG9yIHNlY29uZGFyeSBjb25maWd1cmF0aW9ucywgZXh0ZXJuYWwgc291cmNlcywgb3Igb3ZlcnJpZGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7SXMgdGhlcmUgYW5vdGhlciBjb25maWcgZmlsZSwgYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQgdmFyaWFibGUsIG9yIHNvbWUgYXV0b21hdGVkIHByb2Nlc3MgSSYjMzk7dmUgZm9yZ290dGVuIGFib3V0IHRoYXQgY291bGQgYmUgYWZmZWN0aW5nIHRoZXNlIHNldHRpbmdzPyYjMzQ7IEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc2FuaXR5IGNoZWNrOiBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHRoZSBvbmx5IG9uZSBpbiBwbGF5LiBJIGRvbiYjMzk7dCB3YW50IHRvIHdhc3RlIHRpbWUgY2hhc2luZyBnaG9zdHMuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc3VycHJpc2UgcGFyYW1ldGVycyBvciBjb25mbGljdGluZyBzZXR0aW5ncyBiZWZvcmUgSSBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIEh1YXdlaSBkcml2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgSElOSUNcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O0h1YXdlaSBJbnRlbGxpZ2VudCBQQ0lFIE5ldHdvcmsgSW50ZXJmYWNlIENhcmRcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gKFBDSV9NU0kgXHUwMDI2XHUwMDI2IChYODYgfHwgQVJNNjQpKVxuICAgOTpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEhpTklDIFBDSUUgRXRoZXJuZXQgY2FyZHMuXG4gIDEyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgcGFydCBvZiB0aGUga2VybmVsLCBjaG9vc2UgWSBoZXJlLlxuICAxMzpcdFx0ICBJZiB1bnN1cmUsIGNob29zZSBOLlxuICAxNDpcdFx0ICBUaGUgZGVmYXVsdCBpcyBjb21waWxlZCBhcyBtb2R1bGUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzE1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSElOSUMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgYENPTkZJR19ISU5JQ2Agb3B0aW9uIGlzIHRoZSBjZW50cmFsIHBpZWNlIGhlcmUuIEl0JiMzOTtzIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gaXRlbSB3ZSYjMzk7cmUgY29uY2VybmVkIHdpdGgsIGFuZCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBkZXBlbmRpbmcgb24gYFBDSV9NU0lgIGFuZCBlaXRoZXIgYW4gYFg4NmAgb3IgYEFSTTY0YCBhcmNoaXRlY3R1cmUuIEl0IGFsc28gYXV0b21hdGljYWxseSBlbmFibGVzIGBORVRfREVWTElOS2AsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBtb2Rlcm4gbmV0d29yayBkZXZpY2VzLCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3MgbWVzc2luZyB3aXRoIGRldmxpbmsgb3IgZmlybXdhcmUgZnVuY3Rpb25hbGl0eS4gTm9wZSwgYENPTkZJR19ISU5JQ2AgdGFrZXMgY2FyZSBvZiBldmVyeXRoaW5nLgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUga2V5IHN5bWJvbHMgcmVsYXRlZCB0byB0aGUgZmxhc2hpbmcgYW5kIGZpcm13YXJlIHVwZGF0ZSBwcm9jZXNzZXM6IGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAsIGBoaW5pY19maXJtd2FyZV91cGRhdGVgLCBgY2hlY2tfaW1hZ2VfdmFsaWRgLCBgY2hlY2tfaW1hZ2VfaW50ZWdyaXR5YCwgYW5kIGBoaW5pY19mbGFzaF9md2AuIFRoZXNlIGFyZSB0aGUgYWN0dWFsIGZ1bmN0aW9ucyB0aGF0IHdpbGwgYmUgZG9pbmcgdGhlIGhlYXZ5IGxpZnRpbmcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAgaXMgbmFtZWQgY29ycmVjdGx5LCBhcyBkZXZsaW5rIGFuZCBmaXJtd2FyZSB1cGRhdGUgZnVuY3Rpb25hbGl0aWVzIGFyZSBub3JtYWxseSBkaXN0aW5jdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGluaWNfZGV2bGlua19mbGFzaF91cGRhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM9MjgzPXN0YXRpYyBpbnQgaGluaWNfZmlybXdhcmVfdXBkYXRlKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjMyMjpzdGF0aWMgaW50IGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz0zMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBoaW5pY19kZXZsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzMyOlx0LmZsYXNoX3VwZGF0ZSA9IGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzMtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMTM6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwMjgKCQkJCQkJCW91dHB1dDogMTgxCgkJCQkJCQl0aG91Z2h0czogMzM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhpbmljIERyaXZlciBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAsIHJpZ2h0PyBMZXQgbWUgc2VlIHdoYXQgZWxzZSBoYXMgY2hhbmdlZCBvciBpcyByZWxhdGVkLiBBaCwgYGhpbmljX2Z3X3NlY3Rpb25fdmFsaWRgIGlzIG5ldy4gU28sIHdlJiMzOTt2ZSBnb3Q6CgoqICAgYGhpbmljX2Z3X3NlY3Rpb25fdmFsaWRgCiogICBgY2hlY2tfaW1hZ2VfdmFsaWRgCiogICBgaGluaWNfZmlybXdhcmVfdXBkYXRlYAoqICAgYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYAoKQW55dGhpbmcgZWxzZT8KClJpZ2h0LCB0aGUgdnVsbmVyYWJpbGl0eSB3YXMgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBhZGRzIGJvdW5kcyBjaGVja2luZyDigJMgcHJldmVudGluZyBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGl0JiMzOTtzIHBhcnNpbmcgdGhlIGZpcm13YXJlIGltYWdlLiBZZXAsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBmdW5jdGlvbmFsIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGUuCgpBbHJpZ2h0LCBsZXQgbWUgc3VtbWFyaXplIHRoaXMgZm9yIGZ1enppbmcgcHVycG9zZXMuIFdlJiMzOTt2ZSBnb3QgYSBzb2xpZCB0YXJnZXQgaGVyZS4KCiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqIC0gRGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LgoqICAgKipGb2N1c1N5bWJvbHM6KiogSSB3YW50IHRvIHRhcmdldCB0aGVzZSBzeW1ib2xzOgoKICAgICogICBgaGluaWNfZndfc2VjdGlvbl92YWxpZGAKICAgICogICBgY2hlY2tfaW1hZ2VfdmFsaWRgCiAgICAqICAgYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWAKICAgICogICBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogV2UgbmVlZCBgSElOSUNgIGVuYWJsZWQsIG9idmlvdXNseS4KCioqUmVhc29uaW5nOioqCgpUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBIaW5pYyBkcml2ZXImIzM5O3MgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4gVGhlIHZ1bG5lcmFiaWxpdHkgcmVzaWRlcyBpbiBgY2hlY2tfaW1hZ2VfdmFsaWRgLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBgZGV2bGluayBmbGFzaCB1cGRhdGVgIG1lY2hhbmlzbSwgc3BlY2lmaWNhbGx5IGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWAuIFN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMg4oCTIHZQQ0ksIGZ1enogdGhlIFBDSSBkZXZpY2UgcHJvYmUsIHRoZW4gdXNlIGEgZGV2bGluayBuZXRsaW5rIG1lc3NhZ2UgdG8gc2VuZCBhIGZ1enplZCBmaXJtd2FyZSBpbWFnZS4gU2ltcGxlIGVub3VnaCB0byB0cmlnZ2VyLgoKTGV0JiMzOTtzIGNhbGwgdGhlIHNldC1yZXN1bHRzIGZ1bmN0aW9uIGFuZCBnZXQgdGhpcyBtb3ZpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDEzOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISU5JQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpbmljX2Z3X3NlY3Rpb25fdmFsaWQmIzM0OywKICAgICYjMzQ7Y2hlY2tfaW1hZ2VfdmFsaWQmIzM0OywKICAgICYjMzQ7aGluaWNfZmlybXdhcmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2hpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISU5JQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpbmljX2Z3X3NlY3Rpb25fdmFsaWQmIzM0OywKICAgICYjMzQ7Y2hlY2tfaW1hZ2VfdmFsaWQmIzM0OywKICAgICYjMzQ7aGluaWNfZmlybXdhcmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2hpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6MjEuNzEyNjE3Mjc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNjY0NTIwMTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJTklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGluaWNfZndfc2VjdGlvbl92YWxpZFwiLFxuICAgIFwiY2hlY2tfaW1hZ2VfdmFsaWRcIixcbiAgICBcImhpbmljX2Zpcm13YXJlX3VwZGF0ZVwiLFxuICAgIFwiaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBvZiB0aGUgSHVhd2VpIEludGVsbGlnZW50IE5JQyAoaGluaWMpIGRyaXZlci4gVGhlIHZ1bG5lcmFiaWxpdHkgaXMgbG9jYXRlZCBpbiBgY2hlY2tfaW1hZ2VfdmFsaWRgLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBkZXZsaW5rIGZsYXNoIHVwZGF0ZSBtZWNoYW5pc20gKGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWApLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBieSBlbXVsYXRpbmcgdGhlIFBDSSBkZXZpY2UgdXNpbmcgaXRzIHZQQ0kgZnV6emVyIHRvIHBhc3MgdGhlIHByb2JlIHBoYXNlLCBhbmQgdGhlbiBzZW5kaW5nIGEgZGV2bGluayBuZXRsaW5rIG1lc3NhZ2Ugd2l0aCBhIGZ1enplZCBmaXJtd2FyZSBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6MjEuNzEyNjM5NDY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzgzMzM5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MmFkMDMyZDBjMjc5YWZhNmNmNWZmMDdlYzVlNTUzMjgxYTA1OGZiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMTM6MDc6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcXG5pbmRleCBjOTc3YzQzZTVkNWE3MC4uMGMwNmZiZGFkYWQzNzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcXG5AQCAtMjAsMTQgKzIwLDI1IEBAXFxuICNpbmNsdWRlIFxcXCJoaW5pY19kZXZsaW5rLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJoaW5pY19od19kZXYuaFxcXCJcXG4gXFxuK3N0YXRpYyBib29sIGhpbmljX2Z3X3NlY3Rpb25fdmFsaWQodTMyIGZ3X2xlbiwgdTMyIG9mZnNldCwgdTMyIGxlbilcXG4re1xcbitcXHRyZXR1cm4gb2Zmc2V0IFxcdTAwM2M9IGZ3X2xlbiBcXHUwMDI2XFx1MDAyNiBsZW4gXFx1MDAzYz0gZndfbGVuIC0gb2Zmc2V0O1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLFxcbi1cXHRcXHRcXHQgICAgICB1MzIgaW1hZ2Vfc2l6ZSwgc3RydWN0IGhvc3RfaW1hZ2Vfc3QgKmhvc3RfaW1hZ2UpXFxuK1xcdFxcdFxcdCAgICAgIHNpemVfdCBpbWFnZV9zaXplLCBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSlcXG4ge1xcbi1cXHRzdHJ1Y3QgZndfaW1hZ2Vfc3QgKmZ3X2ltYWdlID0gTlVMTDtcXG4rXFx0Y29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICpmd19pbWFnZTtcXG4gXFx0dTMyIGxlbiA9IDA7XFxuIFxcdHUzMiBpO1xcbiBcXG4tXFx0ZndfaW1hZ2UgPSAoc3RydWN0IGZ3X2ltYWdlX3N0ICopYnVmO1xcbitcXHRpZiAoaW1hZ2Vfc2l6ZSBcXHUwMDNjIFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2Vod2Rldi1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXFwiV3JvbmcgaW1hZ2Ugc2l6ZSByZWFkIGZyb20gZmlsZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0ZndfaW1hZ2UgPSAoY29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICopYnVmO1xcbiBcXG4gXFx0aWYgKGZ3X2ltYWdlLVxcdTAwM2Vmd19tYWdpYyAhPSBISU5JQ19NQUdJQ19OVU0pIHtcXG4gXFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlaHdkZXYtXFx1MDAzZWh3aWYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcIldyb25nIGZ3X21hZ2ljIHJlYWQgZnJvbSBmaWxlLCBmd19tYWdpYzogMHgleFxcXFxuXFxcIixcXG5AQCAtNDEsMTQgKzUyLDQ0IEBAIHN0YXRpYyBib29sIGNoZWNrX2ltYWdlX3ZhbGlkKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsIGNvbnN0IHU4ICpidWYsXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKGZ3X2ltYWdlLVxcdTAwM2Vmd19sZW4gIT0gaW1hZ2Vfc2l6ZSAtIFVQREFURUZXX0lNQUdFX0hFQURfU0laRSkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2Vod2Rldi1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXFwiV3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZndfaW1hZ2UtXFx1MDAzZWZ3X2luZm8uZndfc2VjdGlvbl9jbnQ7IGkrKykge1xcbi1cXHRcXHRsZW4gKz0gZndfaW1hZ2UtXFx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXS5md19zZWN0aW9uX2xlbjtcXG4tXFx0XFx0aG9zdF9pbWFnZS1cXHUwMDNlaW1hZ2Vfc2VjdGlvbl9pbmZvW2ldID0gZndfaW1hZ2UtXFx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXTtcXG4rXFx0XFx0Y29uc3Qgc3RydWN0IGZ3X3NlY3Rpb25faW5mb19zdCAqc2VjdGlvbiA9XFxuK1xcdFxcdFxcdFxcdTAwMjZmd19pbWFnZS1cXHUwMDNlZndfc2VjdGlvbl9pbmZvW2ldO1xcbitcXG4rXFx0XFx0aWYgKHNlY3Rpb24tXFx1MDAzZWZ3X3NlY3Rpb25fdHlwZSBcXHUwMDNlPSBGSUxFX1RZUEVfVE9UQUxfTlVNKSB7XFxuK1xcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdFxcXCJXcm9uZyBzZWN0aW9uIHR5cGUgcmVhZCBmcm9tIGZpbGU6ICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRzZWN0aW9uLVxcdTAwM2Vmd19zZWN0aW9uX3R5cGUpO1xcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmICghaGluaWNfZndfc2VjdGlvbl92YWxpZChmd19pbWFnZS1cXHUwMDNlZndfbGVuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgc2VjdGlvbi1cXHUwMDNlZndfc2VjdGlvbl9vZmZzZXQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBzZWN0aW9uLVxcdTAwM2Vmd19zZWN0aW9uX2xlbikpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlaHdkZXYtXFx1MDAzZWh3aWYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFxcIldyb25nIHNlY3Rpb24gc2l6ZSByZWFkIGZyb20gZmlsZVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0aWYgKHNlY3Rpb24tXFx1MDAzZWZ3X3NlY3Rpb25fbGVuIFxcdTAwM2UgZndfaW1hZ2UtXFx1MDAzZWZ3X2xlbiAtIGxlbikge1xcbitcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2Vod2Rldi1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LFxcbitcXHRcXHRcXHRcXHRcXFwiV3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRsZW4gKz0gc2VjdGlvbi1cXHUwMDNlZndfc2VjdGlvbl9sZW47XFxuK1xcdFxcdGhvc3RfaW1hZ2UtXFx1MDAzZWltYWdlX3NlY3Rpb25faW5mb1tpXSA9ICpzZWN0aW9uO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAobGVuICE9IGZ3X2ltYWdlLVxcdTAwM2Vmd19sZW4gfHxcXG4tXFx0ICAgIChmd19pbWFnZS1cXHUwMDNlZndfbGVuICsgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSAhPSBpbWFnZV9zaXplKSB7XFxuLVxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJXcm9uZyBkYXRhIHNpemUgcmVhZCBmcm9tIGZpbGVcXFxcblxcXCIpO1xcbitcXHRpZiAobGVuICE9IGZ3X2ltYWdlLVxcdTAwM2Vmd19sZW4pIHtcXG4rXFx0XFx0ZGV2X2VycihcXHUwMDI2cHJpdi1cXHUwMDNlaHdkZXYtXFx1MDAzZWh3aWYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFxcIldyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6MjIuMTkxOTI4MDI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODMxODUxOTUwNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElOSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaW5pY19md19zZWN0aW9uX3ZhbGlkXCIsXG4gICAgXCJjaGVja19pbWFnZV92YWxpZFwiLFxuICAgIFwiaGluaWNfZmlybXdhcmVfdXBkYXRlXCIsXG4gICAgXCJoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDgyYWQwMzJkMGMyNzlhZmE2Y2Y1ZmYwN2VjNWU1NTMyODFhMDU4ZmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDEzOjA3OjIwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcbmluZGV4IGM5NzdjNDNlNWQ1YTcwLi4wYzA2ZmJkYWRhZDM3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmNcbkBAIC0yMCwxNCArMjAsMjUgQEBcbiAjaW5jbHVkZSBcImhpbmljX2RldmxpbmsuaFwiXG4gI2luY2x1ZGUgXCJoaW5pY19od19kZXYuaFwiXG4gXG4rc3RhdGljIGJvb2wgaGluaWNfZndfc2VjdGlvbl92YWxpZCh1MzIgZndfbGVuLCB1MzIgb2Zmc2V0LCB1MzIgbGVuKVxuK3tcbitcdHJldHVybiBvZmZzZXQgXHUwMDNjPSBmd19sZW4gXHUwMDI2XHUwMDI2IGxlbiBcdTAwM2M9IGZ3X2xlbiAtIG9mZnNldDtcbit9XG4rXG4gc3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfdmFsaWQoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiwgY29uc3QgdTggKmJ1Zixcbi1cdFx0XHQgICAgICB1MzIgaW1hZ2Vfc2l6ZSwgc3RydWN0IGhvc3RfaW1hZ2Vfc3QgKmhvc3RfaW1hZ2UpXG4rXHRcdFx0ICAgICAgc2l6ZV90IGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxuIHtcbi1cdHN0cnVjdCBmd19pbWFnZV9zdCAqZndfaW1hZ2UgPSBOVUxMO1xuK1x0Y29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICpmd19pbWFnZTtcbiBcdHUzMiBsZW4gPSAwO1xuIFx0dTMyIGk7XG4gXG4tXHRmd19pbWFnZSA9IChzdHJ1Y3QgZndfaW1hZ2Vfc3QgKilidWY7XG4rXHRpZiAoaW1hZ2Vfc2l6ZSBcdTAwM2MgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFwiV3JvbmcgaW1hZ2Ugc2l6ZSByZWFkIGZyb20gZmlsZVxcblwiKTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuK1x0ZndfaW1hZ2UgPSAoY29uc3Qgc3RydWN0IGZ3X2ltYWdlX3N0ICopYnVmO1xuIFxuIFx0aWYgKGZ3X2ltYWdlLVx1MDAzZWZ3X21hZ2ljICE9IEhJTklDX01BR0lDX05VTSkge1xuIFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCJXcm9uZyBmd19tYWdpYyByZWFkIGZyb20gZmlsZSwgZndfbWFnaWM6IDB4JXhcXG5cIixcbkBAIC00MSwxNCArNTIsNDQgQEAgc3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfdmFsaWQoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiwgY29uc3QgdTggKmJ1ZixcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuK1x0aWYgKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbiAhPSBpbWFnZV9zaXplIC0gVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFwiV3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCIpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBmd19pbWFnZS1cdTAwM2Vmd19pbmZvLmZ3X3NlY3Rpb25fY250OyBpKyspIHtcbi1cdFx0bGVuICs9IGZ3X2ltYWdlLVx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXS5md19zZWN0aW9uX2xlbjtcbi1cdFx0aG9zdF9pbWFnZS1cdTAwM2VpbWFnZV9zZWN0aW9uX2luZm9baV0gPSBmd19pbWFnZS1cdTAwM2Vmd19zZWN0aW9uX2luZm9baV07XG4rXHRcdGNvbnN0IHN0cnVjdCBmd19zZWN0aW9uX2luZm9fc3QgKnNlY3Rpb24gPVxuK1x0XHRcdFx1MDAyNmZ3X2ltYWdlLVx1MDAzZWZ3X3NlY3Rpb25faW5mb1tpXTtcbitcbitcdFx0aWYgKHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl90eXBlIFx1MDAzZT0gRklMRV9UWVBFX1RPVEFMX05VTSkge1xuK1x0XHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2Vod2Rldi1cdTAwM2Vod2lmLVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFx0XCJXcm9uZyBzZWN0aW9uIHR5cGUgcmVhZCBmcm9tIGZpbGU6ICV1XFxuXCIsXG4rXHRcdFx0XHRzZWN0aW9uLVx1MDAzZWZ3X3NlY3Rpb25fdHlwZSk7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4rXG4rXHRcdGlmICghaGluaWNfZndfc2VjdGlvbl92YWxpZChmd19pbWFnZS1cdTAwM2Vmd19sZW4sXG4rXHRcdFx0XHRcdCAgICBzZWN0aW9uLVx1MDAzZWZ3X3NlY3Rpb25fb2Zmc2V0LFxuK1x0XHRcdFx0XHQgICAgc2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX2xlbikpIHtcbitcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNlaHdkZXYtXHUwMDNlaHdpZi1cdTAwM2VwZGV2LVx1MDAzZWRldixcbitcdFx0XHRcdFwiV3Jvbmcgc2VjdGlvbiBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCIpO1xuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0fVxuK1xuK1x0XHRpZiAoc2VjdGlvbi1cdTAwM2Vmd19zZWN0aW9uX2xlbiBcdTAwM2UgZndfaW1hZ2UtXHUwMDNlZndfbGVuIC0gbGVuKSB7XG4rXHRcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHRcIldyb25nIGRhdGEgc2l6ZSByZWFkIGZyb20gZmlsZVxcblwiKTtcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdH1cbitcbitcdFx0bGVuICs9IHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9sZW47XG4rXHRcdGhvc3RfaW1hZ2UtXHUwMDNlaW1hZ2Vfc2VjdGlvbl9pbmZvW2ldID0gKnNlY3Rpb247XG4gXHR9XG4gXG4tXHRpZiAobGVuICE9IGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbiB8fFxuLVx0ICAgIChmd19pbWFnZS1cdTAwM2Vmd19sZW4gKyBVUERBVEVGV19JTUFHRV9IRUFEX1NJWkUpICE9IGltYWdlX3NpemUpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwiV3JvbmcgZGF0YSBzaXplIHJlYWQgZnJvbSBmaWxlXFxuXCIpO1xuK1x0aWYgKGxlbiAhPSBmd19pbWFnZS1cdTAwM2Vmd19sZW4pIHtcbitcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZWh3ZGV2LVx1MDAzZWh3aWYtXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XCJXcm9uZyBkYXRhIHNpemUgcmVhZCBmcm9tIGZpbGVcXG5cIik7XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA3OjIyLjE5MTkzMDMwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MDk5OTA5NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEh1YXdlaSBOSUMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc29tZSBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBjaGVja19pbWFnZV92YWxpZGAgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIHNlbnNlIC0gdmFsaWRhdGluZyBmaXJtd2FyZSBpcyBhbHdheXMgYSBnb29kIHRoaW5nLiBUaGlzIGlzIGZvciB0aGUgSHVhd2VpIEludGVsbGlnZW50IE5JQywgb3IgYGhpbmljYCBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgaG93IGV4cG9zZWQgaXMgdGhpcyBkcml2ZXI/IEdpdmVuIHRoYXQgaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlciwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgbGlrZWx5IGlzIGl0IHRoYXQgd2UgY2FuIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFVzdWFsbHksIHRoZXNlIHNvcnRzIG9mIGRyaXZlcnMgYXJlIHNoaWVsZGVkIHVubGVzcyB5b3XigJl2ZSBnb3QgZWl0aGVyIGVtdWxhdGVkIGhhcmR3YXJlIG9yIGl0J3MgYSB2aXJ0dWFsIGRyaXZlciBpdHNlbGYuXG5cblJpZ2h0LCBsZXQncyBjb25maXJtLiBJcyB0aGlzIGFjdHVhbGx5IGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyPyBZZXAsIGl0IGlzLiBUaGUgSHVhd2VpIEludGVsbGlnZW50IE5JQyBpcyBhIFBDSWUgZGV2aWNlLCBzbyBpdOKAmXMgcGh5c2ljYWwgaGFyZHdhcmUuIE5vdywgY2FuIHRoaXMgdGhpbmcgKmJlKiBmdXp6ZWQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyBzeXprYWxsZXIgaXMgdGhlIGdvLXRvIGZvciBmdXp6aW5nLCBhbmQgaXQgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcyB1c2luZyB2UENJLCBidXQgcmVhbGlzdGljYWxseSwgbW9zdCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzLCBlc3BlY2lhbGx5IG9uZXMgd2l0aG91dCByZWFkaWx5IGF2YWlsYWJsZSBlbXVsYXRpb24sIGFyZSBub3QgZGlyZWN0bHkgcmVhY2hhYmxlLiBCdXQsIHdhaXQuLi4gc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIFBDSSBmdXp6aW5nIGNhcGFiaWxpdHksIGJ1dCBpdOKAmXMgbm90IHJlYWxseSB0aGUgKm5vcm0qIHRvIHRhcmdldCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHVubGVzcyB0aGV5IGFyZSAqZXhwbGljaXRseSogZW11bGF0ZWQsIG9yIHdlIGNhbiB1c2Ugc29tZXRoaW5nIGxpa2UgVVNCIGZ1enppbmcsIHdoaWNoIGlzIGEgZGlmZmVyZW50IHJvdXRlLiBTbywgbGV0J3MgZXhwbG9yZSBpZiB0aGVyZSdzIGFueSBlbXVsYXRpb24gZm9yIGBoaW5pY2AgZmxvYXRpbmcgYXJvdW5kLiBJ4oCZbGwgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGBoaW5pY2AgYW5kIHNlZSB3aGF0IGNvbWVzIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6NDAuMjkxODQyMzUzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNTg3ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpbmljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4OTMyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfSElOSUMpICs9IGhpbmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGUtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NDpoaW5pYy15IDo9IGhpbmljX21haW4ubyBoaW5pY190eC5vIGhpbmljX3J4Lm8gaGluaWNfcG9ydC5vIGhpbmljX2h3X2Rldi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvTWFrZWZpbGU6NTpcXHQgICBoaW5pY19od19pby5vIGhpbmljX2h3X3FwLm8gaGluaWNfaHdfY21kcS5vIGhpbmljX2h3X3dxLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZTo2OlxcdCAgIGhpbmljX2h3X21nbXQubyBoaW5pY19od19hcGlfY21kLm8gaGluaWNfaHdfZXFzLm8gaGluaWNfaHdfaWYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL01ha2VmaWxlOjc6XFx0ICAgaGluaWNfY29tbW9uLm8gaGluaWNfZXRodG9vbC5vIGhpbmljX2RldmxpbmsubyBoaW5pY19od19tYm94Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9NYWtlZmlsZTo4OlxcdCAgIGhpbmljX3NyaW92Lm8gaGluaWNfZGVidWdmcy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjExOiNpbmNsdWRlIFxcXCJoaW5pY19jb21tb24uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTEzLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzoxNDogKiBoaW5pY19jcHVfdG9fYmUzMiAtIGNvbnZlcnQgZGF0YSB0byBiaWcgZW5kaWFuIDMyIGJpdCBmb3JtYXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTUtICogQGRhdGE6IHRoZSBkYXRhIHRvIGNvbnZlcnRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0xNy0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjE4OnZvaWQgaGluaWNfY3B1X3RvX2JlMzIodm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTMxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzozMjogKiBoaW5pY19iZTMyX3RvX2NwdSAtIGNvbnZlcnQgZGF0YSBmcm9tIGJpZyBlbmRpYW4gMzIgYml0IGZvcm1hdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0zMy0gKiBAZGF0YTogdGhlIGRhdGEgdG8gY29udmVydFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTM1LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmM6MzY6dm9pZCBoaW5pY19iZTMyX3RvX2NwdSh2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy0zNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNDktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjUwOiAqIGhpbmljX3NldF9zZ2UgLSBzZXQgZG1hIGFyZWEgaW4gc2NhdHRlciBnYXRoZXIgZW50cnlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNTEtICogQHNnZTogc2NhdHRlciBnYXRoZXIgZW50cnlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy01NC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjU1OnZvaWQgaGluaWNfc2V0X3NnZShzdHJ1Y3QgaGluaWNfc2dlICpzZ2UsIGRtYV9hZGRyX3QgYWRkciwgaW50IGxlbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTYyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYzo2MzogKiBoaW5pY19zZ2VfdG9fZG1hIC0gZ2V0IGRtYSBhZGRyZXNzIGZyb20gc2NhdHRlciBnYXRoZXIgZW50cnlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmMtNjQtICogQHNnZTogc2NhdHRlciBnYXRoZXIgZW50cnlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uYy02Ny0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jOjY4OmRtYV9hZGRyX3QgaGluaWNfc2dlX3RvX2RtYShzdHJ1Y3QgaGluaWNfc2dlICpzZ2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5jLTY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaC0xNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmg6MTU6c3RydWN0IGhpbmljX3NnZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTE2LVxcdHUzMiAgICAgICAgICAgICBoaV9hZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaDoyMTp2b2lkIGhpbmljX2NwdV90b19iZTMyKHZvaWQgKmRhdGEsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaC0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmg6MjM6dm9pZCBoaW5pY19iZTMyX3RvX2NwdSh2b2lkICpkYXRhLCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmgtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oOjI1OnZvaWQgaGluaWNfc2V0X3NnZShzdHJ1Y3QgaGluaWNfc2dlICpzZ2UsIGRtYV9hZGRyX3QgYWRkciwgaW50IGxlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2NvbW1vbi5oLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19jb21tb24uaDoyNzpkbWFfYWRkcl90IGhpbmljX3NnZV90b19kbWEoc3RydWN0IGhpbmljX3NnZSAqc2dlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfY29tbW9uLmgtMjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzo5OiNpbmNsdWRlIFxcXCJoaW5pY19kZWJ1Z2ZzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjExOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoaW5pY19kYmdmc19yb290O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jPTIxPXN0YXRpYyBjaGFyICpzcV9maWVsZHNbXSA9IHtcXFwiZ2xiX3NxX2lkXFxcIiwgXFxcInNxX3BpXFxcIiwgXFxcInNxX2NpXFxcIiwgXFxcInNxX2ZpXFxcIiwgXFxcInNxX21zaXhfZW50cnlcXFwifTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjM6c3RhdGljIHU2NCBoaW5pY19kYmdfZ2V0X3NxX2luZm8oc3RydWN0IGhpbmljX2RldiAqbmljX2Rldiwgc3RydWN0IGhpbmljX3NxICpzcSwgaW50IGlkeClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI1OlxcdHN0cnVjdCBoaW5pY193cSAqd3EgPSBzcS1cXHUwMDNld3E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM9NTE9c3RhdGljIGNoYXIgKnJxX2ZpZWxkc1tdID0ge1xcXCJnbGJfcnFfaWRcXFwiLCBcXFwicnFfaHdfcGlcXFwiLCBcXFwicnFfc3dfY2lcXFwiLCBcXFwicnFfc3dfcGlcXFwiLCBcXFwicnFfbXNpeF9lbnRyeVxcXCJ9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzo1MzpzdGF0aWMgdTY0IGhpbmljX2RiZ19nZXRfcnFfaW5mbyhzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2LCBzdHJ1Y3QgaGluaWNfcnEgKnJxLCBpbnQgaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtNTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6NTU6XFx0c3RydWN0IGhpbmljX3dxICp3cSA9IHJxLVxcdTAwM2V3cTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYz04MT1zdGF0aWMgY2hhciAqZnVuY190YWJsZV9maWVsZHNbXSA9IHtcXFwidmFsaWRcXFwiLCBcXFwicnhfbW9kZVxcXCIsIFxcXCJtdHVcXFwiLCBcXFwicnFfZGVwdGhcXFwiLCBcXFwiY2ZnX3FfbnVtXFxcIn07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjgzOnN0YXRpYyBpbnQgaGluaWNfZGJnX2dldF9mdW5jX3RhYmxlKHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYsIGludCBpZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy04NS1cXHRzdHJ1Y3QgdGFnX3NtbF9mdW5jZmdfdGJsICpmdW5jZmdfdGFibGVfZWxlbTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjg2OlxcdHN0cnVjdCBoaW5pY19jbWRfbHRfcmQgKnJlYWRfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTg3LVxcdHUxNiBvdXRfc2l6ZSA9IHNpemVvZigqcmVhZF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTAxOlxcdGVyciA9IGhpbmljX3BvcnRfbXNnX2NtZChuaWNfZGV2LVxcdTAwM2Vod2RldiwgSElOSUNfUE9SVF9DTURfUkRfTElORV9UQkwsIHJlYWRfZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEwMi1cXHRcXHRcXHRcXHQgc2l6ZW9mKCpyZWFkX2RhdGEpLCByZWFkX2RhdGEsIFxcdTAwMjZvdXRfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjEzNjpzdGF0aWMgc3NpemVfdCBoaW5pY19kYmdfY21kX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEzNy1cXHRcXHRcXHRcXHQgIGxvZmZfdCAqcHBvcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTEzOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxMzk6XFx0c3RydWN0IGhpbmljX2RlYnVnX3ByaXYgKmRiZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE0MC1cXHRjaGFyIHJldF9idWZbMjBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNDUtXFx0ZGVzYyA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE0NjpcXHRkYmcgPSBjb250YWluZXJfb2YoZGVzYywgc3RydWN0IGhpbmljX2RlYnVnX3ByaXYsIGZpZWxkX2lkWypkZXNjXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE0OS1cXHRjYXNlIEhJTklDX0RCR19TUV9JTkZPOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTUwOlxcdFxcdG91dCA9IGhpbmljX2RiZ19nZXRfc3FfaW5mbyhkYmctXFx1MDAzZWRldiwgZGJnLVxcdTAwM2VvYmplY3QsICpkZXNjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE1MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTUzLVxcdGNhc2UgSElOSUNfREJHX1JRX0lORk86XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNTQ6XFx0XFx0b3V0ID0gaGluaWNfZGJnX2dldF9ycV9pbmZvKGRiZy1cXHUwMDNlZGV2LCBkYmctXFx1MDAzZW9iamVjdCwgKmRlc2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTU1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNTctXFx0Y2FzZSBISU5JQ19EQkdfRlVOQ19UQUJMRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE1ODpcXHRcXHRvdXQgPSBoaW5pY19kYmdfZ2V0X2Z1bmNfdGFibGUoZGJnLVxcdTAwM2VkZXYsICpkZXNjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE1OS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTYxLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNjI6XFx0XFx0bmV0aWZfd2FybihkYmctXFx1MDAzZWRldiwgZHJ2LCBkYmctXFx1MDAzZWRldi1cXHUwMDNlbmV0ZGV2LCBcXFwiSW52YWxpZCBoaW5pYyBkZWJ1ZyBjbWQ6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTYzLVxcdFxcdFxcdCAgIGRiZy1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE3MjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBoaW5pY19kYmdfY21kX2ZvcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzMtXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzQtXFx0Lm9wZW4gID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNzU6XFx0LnJlYWQgID0gaGluaWNfZGJnX2NtZF9yZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTc2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoxNzg6c3RhdGljIGludCBjcmVhdGVfZGJnX2ZpbGVzKHN0cnVjdCBoaW5pY19kZXYgKmRldiwgZW51bSBoaW5pY19kYmdfdHlwZSB0eXBlLCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTc5OlxcdFxcdFxcdCAgICBzdHJ1Y3QgZGVudHJ5ICpyb290LCBzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiAqKmRiZywgY2hhciAqKmZpZWxkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMTgwLVxcdFxcdFxcdCAgICBpbnQgbmZpbGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xODEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MTgyOlxcdHN0cnVjdCBoaW5pY19kZWJ1Z19wcml2ICp0bXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xODMtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTE5NS1cXHRcXHR0bXAtXFx1MDAzZWZpZWxkX2lkW2ldID0gaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjE5NjpcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGZpZWxkW2ldLCAwNDAwLCByb290LCBcXHUwMDI2dG1wLVxcdTAwM2VmaWVsZF9pZFtpXSwgXFx1MDAyNmhpbmljX2RiZ19jbWRfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0xOTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyMDQ6c3RhdGljIHZvaWQgcmVtX2RiZ19maWxlcyhzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdiAqZGJnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjEyOmludCBoaW5pY19zcV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2LCB1MTYgc3FfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjE0OlxcdHN0cnVjdCBoaW5pY19zcSAqc3E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMTUtXFx0c3RydWN0IGRlbnRyeSAqcm9vdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjI4OnZvaWQgaGluaWNfc3FfZGVidWdfcmVtKHN0cnVjdCBoaW5pY19zcSAqc3EpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyMzQ6aW50IGhpbmljX3JxX2RlYnVnX2FkZChzdHJ1Y3QgaGluaWNfZGV2ICpkZXYsIHUxNiBycV9pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIzNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyMzY6XFx0c3RydWN0IGhpbmljX3JxICpycTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTIzNy1cXHRzdHJ1Y3QgZGVudHJ5ICpyb290O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyNTA6dm9pZCBoaW5pY19ycV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX3JxICpycSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI1NjppbnQgaGluaWNfZnVuY190YWJsZV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjY1OnZvaWQgaGluaWNfZnVuY190YWJsZV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MjcxOnZvaWQgaGluaWNfc3FfZGJnZnNfaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6Mjc2OnZvaWQgaGluaWNfc3FfZGJnZnNfdW5pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyODE6dm9pZCBoaW5pY19ycV9kYmdmc19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0yODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzoyODY6dm9pZCBoaW5pY19ycV9kYmdmc191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI5MTp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjI5Nzp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMjk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzAzOnZvaWQgaGluaWNfZGJnX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMDUtXFx0bmljX2Rldi1cXHUwMDNlZGJnZnNfcm9vdCA9IGRlYnVnZnNfY3JlYXRlX2RpcihwY2lfbmFtZShuaWNfZGV2LVxcdTAwM2Vod2Rldi1cXHUwMDNlaHdpZi1cXHUwMDNlcGRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMDY6XFx0XFx0XFx0XFx0XFx0XFx0IGhpbmljX2RiZ2ZzX3Jvb3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzA3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMwOTp2b2lkIGhpbmljX2RiZ191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2RldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMxMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jLTMxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMxNTp2b2lkIGhpbmljX2RiZ19yZWdpc3Rlcl9kZWJ1Z2ZzKGNvbnN0IGNoYXIgKmRlYnVnZnNfZGlyX25hbWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzE3OlxcdGhpbmljX2RiZ2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGVidWdmc19kaXJfbmFtZSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMTgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmM6MzIwOnZvaWQgaGluaWNfZGJnX3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmMtMzIxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5jOjMyMjpcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoaGluaWNfZGJnZnNfcm9vdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYzozMjM6XFx0aGluaWNfZGJnZnNfcm9vdCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuYy0zMjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6OTojaW5jbHVkZSBcXFwiaGluaWNfZGV2LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDoxNjpzdHJ1Y3QgaGluaWNfY21kX2x0X3JkIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTE3LVxcdHU4XFx0c3RhdHVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaD0zMT1zdHJ1Y3QgdGFnX3NtbF9mdW5jZmdfdGJsIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo4MTppbnQgaGluaWNfc3FfZGVidWdfYWRkKHN0cnVjdCBoaW5pY19kZXYgKmRldiwgdTE2IHNxX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6ODM6dm9pZCBoaW5pY19zcV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX3NxICpzcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC04NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjg1OmludCBoaW5pY19ycV9kZWJ1Z19hZGQoc3RydWN0IGhpbmljX2RldiAqZGV2LCB1MTYgcnFfaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo4Nzp2b2lkIGhpbmljX3JxX2RlYnVnX3JlbShzdHJ1Y3QgaGluaWNfcnEgKnJxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6ODk6aW50IGhpbmljX2Z1bmNfdGFibGVfZGVidWdfYWRkKHN0cnVjdCBoaW5pY19kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC05MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjkxOnZvaWQgaGluaWNfZnVuY190YWJsZV9kZWJ1Z19yZW0oc3RydWN0IGhpbmljX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6OTM6dm9pZCBoaW5pY19zcV9kYmdmc19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5NTp2b2lkIGhpbmljX3NxX2RiZ2ZzX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmg6OTc6dm9pZCBoaW5pY19ycV9kYmdmc19pbml0KHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZWJ1Z2ZzLmgtOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDo5OTp2b2lkIGhpbmljX3JxX2RiZ2ZzX3VuaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTEwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwMTp2b2lkIGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX2luaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDoxMDM6dm9pZCBoaW5pY19mdW5jX3RibF9kYmdmc191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDoxMDU6dm9pZCBoaW5pY19kYmdfaW5pdChzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTEwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjEwNzp2b2lkIGhpbmljX2RiZ191bmluaXQoc3RydWN0IGhpbmljX2RldiAqbmljX2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaDoxMDk6dm9pZCBoaW5pY19kYmdfcmVnaXN0ZXJfZGVidWdmcyhjb25zdCBjaGFyICpkZWJ1Z2ZzX2Rpcl9uYW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGVidWdmcy5oOjExMTp2b2lkIGhpbmljX2RiZ191bnJlZ2lzdGVyX2RlYnVnZnModm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RlYnVnZnMuaC0xMTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjE2OiNpbmNsdWRlIFxcXCJoaW5pY19od19kZXYuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTc6I2luY2x1ZGUgXFxcImhpbmljX3R4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjE4OiNpbmNsdWRlIFxcXCJoaW5pY19yeC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxOTojaW5jbHVkZSBcXFwiaGluaWNfc3Jpb3YuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjIxOiNkZWZpbmUgSElOSUNfRFJWX05BTUUgICAgICAgICAgXFxcImhpbmljXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0yMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6Mjk6ZW51bSBoaW5pY19mbGFncyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTMwLVxcdEhJTklDX0xJTktfVVAgPSBCSVQoMCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjM3OnN0cnVjdCBoaW5pY19yeF9tb2RlX3dvcmsge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0zOC1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICB3b3JrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo0MjpzdHJ1Y3QgaGluaWNfcnNzX3R5cGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC00My1cXHR1OCB0Y3BfaXB2Nl9leHQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjUzOmVudW0gaGluaWNfcnNzX2hhc2hfdHlwZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTU0LVxcdEhJTklDX1JTU19IQVNIX0VOR0lORV9UWVBFX1hPUixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC01OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6NTk6c3RydWN0IGhpbmljX2ludHJfY29hbF9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNjAtXFx0dThcXHRwZW5kaW5nX2xpbXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjY1OmVudW0gaGluaWNfZGJnX3R5cGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC02Ni1cXHRISU5JQ19EQkdfU1FfSU5GTyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC03MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6NzE6c3RydWN0IGhpbmljX2RlYnVnX3ByaXYge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDo3MjpcXHRzdHJ1Y3QgaGluaWNfZGV2XFx0KmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNzMtXFx0dm9pZFxcdFxcdFxcdCpvYmplY3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjc0OlxcdGVudW0gaGluaWNfZGJnX3R5cGVcXHR0eXBlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC03NS1cXHRzdHJ1Y3QgZGVudHJ5XFx0XFx0KnJvb3Q7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjc5OnN0cnVjdCBoaW5pY19kZXYge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC04MC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAgICAgICAgICAgICAgICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjgxOlxcdHN0cnVjdCBoaW5pY19od2RldiAgICAgICAgICAgICAgKmh3ZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC04Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC05My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6OTQ6XFx0c3RydWN0IGhpbmljX3J4X21vZGVfd29yayAgICAgICByeF9tb2RlX3dvcms7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTk1LVxcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICAgICAgICAgKndvcmtxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC05Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6OTc6XFx0c3RydWN0IGhpbmljX3R4cSAgICAgICAgICAgICAgICAqdHhxcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6OTg6XFx0c3RydWN0IGhpbmljX3J4cSAgICAgICAgICAgICAgICAqcnhxcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtOTktXFx0dTE2XFx0XFx0XFx0XFx0c3FfZGVwdGg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTA1LVxcdHUxNlxcdFxcdFxcdFxcdHJzc19saW1pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTA2OlxcdHN0cnVjdCBoaW5pY19yc3NfdHlwZVxcdFxcdHJzc190eXBlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMDctXFx0dThcXHRcXHRcXHRcXHQqcnNzX2hrZXlfdXNlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTA4LVxcdHMzMlxcdFxcdFxcdFxcdCpyc3NfaW5kaXJfdXNlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTA5OlxcdHN0cnVjdCBoaW5pY19pbnRyX2NvYWxfaW5mb1xcdCpyeF9pbnRyX2NvYWxlc2NlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxMTA6XFx0c3RydWN0IGhpbmljX2ludHJfY29hbF9pbmZvXFx0KnR4X2ludHJfY29hbGVzY2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjExMTpcXHRzdHJ1Y3QgaGluaWNfc3Jpb3ZfaW5mbyBzcmlvdl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMTItXFx0aW50XFx0XFx0XFx0XFx0bGJfdGVzdF9yeF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2LmgtMTE5LVxcdHN0cnVjdCBkZW50cnlcXHRcXHRcXHQqZnVuY190YmxfZGJnZnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oOjEyMDpcXHRzdHJ1Y3QgaGluaWNfZGVidWdfcHJpdlxcdFxcdCpkYmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTEyMS1cXHRzdHJ1Y3QgZGV2bGlua1xcdFxcdFxcdCpkZXZsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2Rldi5oLTEyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2Lmg6MTI2OnN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaDoxMjc6XFx0c3RydWN0IGhpbmljX2h3ZGV2XFx0XFx0Kmh3ZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXYuaC0xMjgtXFx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICAqaHdfZmF1bHRfcmVwb3J0ZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTk6I2luY2x1ZGUgXFxcImhpbmljX3BvcnQuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjIwOiNpbmNsdWRlIFxcXCJoaW5pY19kZXZsaW5rLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyMTojaW5jbHVkZSBcXFwiaGluaWNfaHdfZGV2LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjIzOnN0YXRpYyBib29sIGhpbmljX2Z3X3NlY3Rpb25fdmFsaWQodTMyIGZ3X2xlbiwgdTMyIG9mZnNldCwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyODpzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjktXFx0XFx0XFx0ICAgICAgc2l6ZV90IGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy03MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjcyOlxcdFxcdGlmICghaGluaWNfZndfc2VjdGlvbl92YWxpZChmd19pbWFnZS1cXHUwMDNlZndfbGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNzMtXFx0XFx0XFx0XFx0XFx0ICAgIHNlY3Rpb24tXFx1MDAzZWZ3X3NlY3Rpb25fb2Zmc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoxMDQ6c3RhdGljIGJvb2wgY2hlY2tfaW1hZ2VfaW50ZWdyaXR5KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xMDUtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaG9zdF9pbWFnZV9zdCAqaG9zdF9pbWFnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTQzOnN0YXRpYyBpbnQgY2hlY2tfaW1hZ2VfZGV2aWNlX3R5cGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0NC1cXHRcXHRcXHRcXHQgICB1MzIgaW1hZ2VfZGV2aWNlX3R5cGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MTQ2OlxcdHN0cnVjdCBoaW5pY19jb21tX2JvYXJkX2luZm8gYm9hcmRfaW5mbyA9IHswfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjE0ODpcXHRpZiAoaGluaWNfZ2V0X2JvYXJkX2luZm8ocHJpdi1cXHUwMDNlaHdkZXYsIFxcdTAwMjZib2FyZF9pbmZvKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMTQ5LVxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJHZXQgYm9hcmQgaW5mbyBmYWlsZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoxNjM6c3RhdGljIGludCBoaW5pY19mbGFzaF9mdyhzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTE2NC1cXHRcXHRcXHQgIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjYtXFx0dTMyIHNlY3Rpb25fcmVtYWluX3NlbmRfbGVuLCBzZW5kX2ZyYWdtZW50X2xlbiwgc2VuZF9wb3MsIHVwX3RvdGFsX2xlbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjE2NzpcXHRzdHJ1Y3QgaGluaWNfY21kX3VwZGF0ZV9mdyAqZndfdXBkYXRlX21zZyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0xNjgtXFx0dTMyIHNlY3Rpb25fdHlwZSwgc2VjdGlvbl9jcmMsIHNlY3Rpb25fdmVyc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjU4OlxcdFxcdFxcdGVyciA9IGhpbmljX3BvcnRfbXNnX2NtZChwcml2LVxcdTAwM2Vod2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI1OS1cXHRcXHRcXHRcXHRcXHRcXHQgSElOSUNfUE9SVF9DTURfVVBEQVRFX0ZXLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0yODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyODM6c3RhdGljIGludCBoaW5pY19maXJtd2FyZV91cGRhdGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI4NC1cXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzAxOlxcdGVyciA9IGhpbmljX2ZsYXNoX2Z3KHByaXYsIGZ3LVxcdTAwM2VkYXRhLCBcXHUwMDI2aG9zdF9pbWFnZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMDItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMjI6c3RhdGljIGludCBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTMyMy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2bGlua19mbGFzaF91cGRhdGVfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTMyNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMjY6XFx0c3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTMyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjMyODpcXHRyZXR1cm4gaGluaWNfZmlybXdhcmVfdXBkYXRlKHByaXYsIHBhcmFtcy1cXHUwMDNlZncsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzMxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgaGluaWNfZGV2bGlua19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzI6XFx0LmZsYXNoX3VwZGF0ZSA9IGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzMzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozMzU6c3RydWN0IGRldmxpbmsgKmhpbmljX2RldmxpbmtfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzM2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjMzNzpcXHRyZXR1cm4gZGV2bGlua19hbGxvYyhcXHUwMDI2aGluaWNfZGV2bGlua19vcHMsIHNpemVvZihzdHJ1Y3QgaGluaWNfZGV2KSwgZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTMzOC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozNDA6dm9pZCBoaW5pY19kZXZsaW5rX2ZyZWUoc3RydWN0IGRldmxpbmsgKmRldmxpbmspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozNDU6dm9pZCBoaW5pY19kZXZsaW5rX3JlZ2lzdGVyKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzozNTI6dm9pZCBoaW5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTM1My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTM1OT1zdGF0aWMgdm9pZCBjaGlwX2ZhdWx0X3Nob3coc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjM2MDpcXHRcXHRcXHQgICAgc3RydWN0IGhpbmljX2ZhdWx0X2V2ZW50ICpldmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTM2MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTM4MD1zdGF0aWMgdm9pZCBmYXVsdF9yZXBvcnRfc2hvdyhzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzgxOlxcdFxcdFxcdCAgICAgIHN0cnVjdCBoaW5pY19mYXVsdF9ldmVudCAqZXZlbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0MzE6c3RhdGljIGludCBoaW5pY19od19yZXBvcnRlcl9kdW1wKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00MzItXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLCB2b2lkICpwcml2X2N0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM9NDQxPXN0YXRpYyB2b2lkIG1nbXRfd2F0Y2hkb2dfcmVwb3J0X3Nob3coc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ0MjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaGluaWNfbWdtdF93YXRjaGRvZ19pbmZvICp3aW5mbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ2MjpzdGF0aWMgaW50IGhpbmljX2Z3X3JlcG9ydGVyX2R1bXAoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ2My1cXHRcXHRcXHRcXHQgIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csIHZvaWQgKnByaXZfY3R4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzo0NzI6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgaGluaWNfaHdfZmF1bHRfcmVwb3J0ZXJfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDczLVxcdC5uYW1lID0gXFxcImh3XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ3NDpcXHQuZHVtcCA9IGhpbmljX2h3X3JlcG9ydGVyX2R1bXAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjQ3NzpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX29wcyBoaW5pY19md19mYXVsdF9yZXBvcnRlcl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy00NzgtXFx0Lm5hbWUgPSBcXFwiZndcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDc5OlxcdC5kdW1wID0gaGluaWNfZndfcmVwb3J0ZXJfZHVtcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTQ4MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDgyOmludCBoaW5pY19oZWFsdGhfcmVwb3J0ZXJzX2NyZWF0ZShzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDg3LVxcdFxcdGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShkZXZsaW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDg4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2aGluaWNfaHdfZmF1bHRfcmVwb3J0ZXJfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDk3LVxcdFxcdGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShkZXZsaW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NDk4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2aGluaWNfZndfZmF1bHRfcmVwb3J0ZXJfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNDk5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6NTExOnZvaWQgaGluaWNfaGVhbHRoX3JlcG9ydGVyc19kZXN0cm95KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy01MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaC05LSNpbmNsdWRlIFxcdTAwM2NuZXQvZGV2bGluay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTA6I2luY2x1ZGUgXFxcImhpbmljX2Rldi5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MjQ6ZW51bSBoaW5pY19md190eXBlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTI1LVxcdFVQX0ZXX1VQREFURV9VUF9URVhUX0EgPSAweDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oPTEwMT1zdHJ1Y3QgaG9zdF9pbWFnZV9zdCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjExMTpzdHJ1Y3QgZGV2bGluayAqaGluaWNfZGV2bGlua19hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTEyOnZvaWQgaGluaWNfZGV2bGlua19mcmVlKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5oOjExMzp2b2lkIGhpbmljX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTQ6dm9pZCBoaW5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaC0xMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuaDoxMTY6aW50IGhpbmljX2hlYWx0aF9yZXBvcnRlcnNfY3JlYXRlKHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmg6MTE3OnZvaWQgaGluaWNfaGVhbHRoX3JlcG9ydGVyc19kZXN0cm95KHN0cnVjdCBoaW5pY19kZXZsaW5rX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmgtMTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0yOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjMwOiNpbmNsdWRlIFxcXCJoaW5pY19od19xcC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzE6I2luY2x1ZGUgXFxcImhpbmljX2h3X2Rldi5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzI6I2luY2x1ZGUgXFxcImhpbmljX3BvcnQuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjMzOiNpbmNsdWRlIFxcXCJoaW5pY190eC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MzQ6I2luY2x1ZGUgXFxcImhpbmljX3J4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzozNTojaW5jbHVkZSBcXFwiaGluaWNfZGV2LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9NTk9c3RydWN0IGh3MmV0aHRvb2xfbGlua19tb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtNjEtXFx0dTMyIHNwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6NjI6XFx0ZW51bSBoaW5pY19saW5rX21vZGUgaHdfbGlua19tb2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtNjMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9MTQ2PXN0YXRpYyB2b2lkIHNldF9saW5rX3NwZWVkKHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpsaW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE0NzpcXHRcXHRcXHQgICBlbnVtIGhpbmljX3NwZWVkIHNwZWVkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MTg0OnN0YXRpYyBpbnQgaGluaWNfZ2V0X2xpbmtfbW9kZV9pbmRleChlbnVtIGhpbmljX2xpbmtfbW9kZSBsaW5rX21vZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0xODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0xOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzoxOTY6c3RhdGljIHZvaWQgaGluaWNfYWRkX2V0aHRvb2xfbGlua19tb2RlKHN0cnVjdCBjbWRfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE5NzpcXHRcXHRcXHRcXHRcXHRlbnVtIGhpbmljX2xpbmtfbW9kZSBod19saW5rX21vZGUsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA3OjQwLjM2MjQzODU3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzUyOTU5MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIEZsYXNoIFVwZGF0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuY2AuIEl0J3MgYSBjYWxsYmFjayBmdW5jdGlvbiByZWxhdGVkIHRvIGRldmxpbmsgZmxhc2ggdXBkYXRlcywgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBtYW5hZ2luZyBmaXJtd2FyZS4gVGhlIHF1ZXN0aW9uIGlzLCBob3cgZG9lcyB0aGlzIHVwZGF0ZSBnZXQgdHJpZ2dlcmVkIGFuZCB3aGVyZSBkb2VzIHRoZSBkcml2ZXIgY29tZSBpbnRvIHBsYXk/XG5cbkkga25vdyBkZXZsaW5rIGZsYXNoIHVwZGF0ZXMgYXJlIHJlYWNoYWJsZSB2aWEgbmV0bGluaywgdGhhdCdzIHRoZSBjb21tb24gaW50ZXJmYWNlLiBCdXQsIHRoZSByZWFsIGNvbmNlcm4gaXMgdGhlICpkcml2ZXIncyogYXZhaWxhYmlsaXR5LiBEb2VzIHRoZSBkcml2ZXIgZXZlbiBnZXQgbG9hZGVkIGlmIHRoZSBoYXJkd2FyZSwgdGhlIGFjdHVhbCBOSUMsIGlzbid0IHByZXNlbnQ/IEkgaGF2ZSB0byBjb25zaWRlciB0aGF0LlxuXG5MZXQncyBzZWXigKYgVGhlIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIGBoaW5pY2AgZHJpdmVyIG9ubHkgcmVnaXN0ZXJzIGRldmxpbmsgaWYgdGhlIGhhcmR3YXJlIGlzIGFjdHVhbGx5IGRldGVjdGVkLiBUaGF0IG1ha2VzIHNlbnNlLiBJdCdzIGEgUENJIGRyaXZlciwgc28gaXQgc2hvdWxkIGJlIHJlbHlpbmcgb24gdGhlIHByZXNlbmNlIG9mIFBDSSBkZXZpY2VzLlxuXG5TbywgdGhlIGtleSBxdWVzdGlvbiBiZWNvbWVzOiBDYW4gSSAqcHJvYmUqIHRoZSBkcml2ZXIgZXZlbiB3aXRob3V0IHRoZSBoYXJkd2FyZT8gQ2FuIEkgbG9hZCB0aGUgbW9kdWxlIGFuZCB0cmlnZ2VyIHRoYXQgcmVnaXN0cmF0aW9uIHBhdGggd2l0aG91dCBhbiBhY3R1YWwgYGhpbmljYCBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBzeXN0ZW0/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0byB1bmRlcnN0YW5kIGlmIHRoaXMgcGF0Y2ggY2FuIGJlIGFjY2Vzc2VkL3Rlc3RlZCB3aXRob3V0IGEgc3BlY2lmaWMgaGFyZHdhcmUgZW52aXJvbm1lbnQuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBwcm9iZSB0aGUgZHJpdmVyIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCB0byBjaGVjayBpdHMgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDUwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDc6NDQuNzk3NzM2NTcxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDczMDc1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowNzo0NC44NTc4MTk1OTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzE5MjE1MDUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTG9jYXRpbmcgdGhlIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBsb2NhdGUgdGhlIGRyaXZlciByZWdpc3RyYXRpb24gZGF0YS4gVGhpcyBtZWFucyBJJ20gcHJvYmFibHkgZmFjaW5nIGEgc3BlY2lmaWMgY2hhbGxlbmdlIG9yIGludmVzdGlnYXRpb24gdGhhdCBoaW5nZXMgb24gaWRlbnRpZnlpbmcgb3IgYWNjZXNzaW5nIHRoaXMgaW5mb3JtYXRpb24uIERlcGVuZGluZyBvbiB0aGUgY29udGV4dCDigJMgcmVndWxhdG9yeSBjb21wbGlhbmNlLCBpbmNpZGVudCBhbmFseXNpcywgc3lzdGVtIGRlYnVnZ2luZywgZXRjLiDigJMgbXkgYXBwcm9hY2ggd2lsbCB2YXJ5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbW9zdCBlZmZpY2llbnQgcGF0aCB0byBhY2Nlc3MgdGhpcyBkYXRhLiBBbSBJIGxvb2tpbmcgYXQgYSBkYXRhYmFzZSBxdWVyeT8gQSBsb2cgZmlsZSBzZWFyY2g/IEEgc3BlY2lmaWMgQVBJIGVuZHBvaW50PyBPciBpcyB0aGlzIGEgbW9yZSBtYW51YWwgcHJvY2VzcyBpbnZvbHZpbmcgcmVnaXN0cnkga2V5cyBvciBjb25maWd1cmF0aW9uIGZpbGVzPyBUaGUgcHJlY2lzZSBtZXRob2QgaGluZ2VzIG9uIHRoZSBzeXN0ZW0gaW4gcXVlc3Rpb24sIHRoZSBncmFudWxhcml0eSBvZiBpbmZvcm1hdGlvbiBJIHJlcXVpcmUsIGFuZCB0aGUgc2VjdXJpdHkgcHJvdG9jb2xzIGludm9sdmVkLiBUaW1lIHRvIGV2YWx1YXRlIGFsbCB0aGUgYW5nbGVzIGFuZCBkZWNpZGUgb24gdGhlIG1vc3QgYXBwcm9wcmlhdGUgbWV0aG9kIHRvIGdldCBtZSB0aGUgZGF0YS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0ODAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA4OjAyLjA0OTk3NTM4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzk1NjEwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTQ4OD1zdGF0aWMgaW50IF9faW5pdCBoaW5pY19tb2R1bGVfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM6MTQ5NDpcXHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZoaW5pY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ5NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowODowMi4zMjk1NDM3NzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODU4MDE1NTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgUENJIERyaXZlciB3aXRoIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgUENJIGRyaXZlciBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBJdCdzIGdvdCB0aGF0IHZQQ0kgZnV6emVyLCB3aGljaCBpcyBwcm9taXNpbmcsIGJlY2F1c2Ugc3l6a2FsbGVyIGNhbiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBCdXQgaGFuZyBvbiwgc3l6a2FsbGVyIGRvZXNuJ3QganVzdCAqZ2VuZXJhbGx5KiBlbXVsYXRlIGFyYml0cmFyeSBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhleSdyZSBleHBsaWNpdGx5IHN1cHBvcnRlZCB3aXRoaW4gdGhlIHZQQ0kgZnV6emVyLlxuXG5IbW0uLi4gd2FpdCBhIG1pbnV0ZSwgSSByZW1lbWJlciBzZWVpbmcgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiBpbiBhIHN5emJvdCByZXBvcnQgcmVsYXRlZCB0byB0aGlzLiBJZiBzeXpib3QgY2F1Z2h0IGFuIGlzc3VlLCB0aGF0IG1lYW5zIGl0ICppcyogcmVhY2hhYmxlLCByaWdodD8gQW5kIEkgc2VlIHRoZSBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAuIFNvLCBpdCB3YXMgcHJvYmFibHkgZnV6emVkLCBvciBpdCdzIGEgcGF0Y2ggdW5kZXIgcmV2aWV3IGZvciBzeXpib3QuXG5cbkJ1dCB0aGVuIEkgc2VlIHRoZSBwcm9tcHQgbWVudGlvbnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSWYgaXQncyBhIHBoeXNpY2FsIFBDSSBkcml2ZXIsIHdvdWxkIGl0IGJlIHJlYWNoYWJsZSBpbiBRRU1VPyBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgSHVhd2VpIEludGVsbGlnZW50IE5JQyFcblxuT2theSwgbGV0J3MgcmV2aXNpdCBzeXprYWxsZXIncyB2UENJIGZ1enplci4gSXQgZG9lcyBoYXZlIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZXNgLCBvciBzaW1pbGFyLCByaWdodD8gQW5kIGl0IGNhbiBlbXVsYXRlIGFyYml0cmFyeSBQQ0kgZGV2aWNlcywgbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRHMuIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGNhbiBwcm92aWRlIHRoZSBQQ0kgSURzLCBhbmQgZW11bGF0ZSB0aGUgY29uZmlnIHNwYWNlIGFuZCBCQVJzLCBzbyB0aGUgZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cbkFscmlnaHQsIHRpbWUgdG8gY2hlY2sgdGhlIGBoaW5pY19kcml2ZXJgIFBDSSBJRHMuIExldCdzIHNlZSBpZiBzeXprYWxsZXIgY2FuIGFjdHVhbGx5IHJlYWNoIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg1OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowODowOS4xODc1NjI1MDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4Njk1NTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpbmljX3BjaV90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTQ2ND1zdGF0aWMgdm9pZCBoaW5pY19zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjE0Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhpbmljX3BjaV90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ3MC1cXHR7IFBDSV9WREVWSUNFKEhVQVdFSSwgSElOSUNfREVWX0lEX1FVQURfUE9SVF8yNUdFKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xNDc2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDc3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBoaW5pY19wY2lfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTE0Nzk9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGhpbmljX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0ODAtXFx0Lm5hbWUgICAgICAgICAgID0gSElOSUNfRFJWX05BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDgxOlxcdC5pZF90YWJsZSAgICAgICA9IGhpbmljX3BjaV90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTE0ODItXFx0LnByb2JlICAgICAgICAgID0gaGluaWNfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA4OjA5LjI3NjI2ODE2OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI3NjgyODg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBoaW5pY19wcm9iZWAgd2l0aCB0aGUgdlBDSSBGdXp6ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgaW1tZWRpYXRlIHRob3VnaHQgaXM6IGlmIHN5emthbGxlcidzIHZQQ0kgZnV6emVyIGNhbiBoaXQgaXQsIHRoZW4gd2UndmUgZ290IGEgcmVhY2hhYmxlIGNvZGUgcGF0aC4gVGhhdCdzIHRoZSBiYXNlbGluZSBhc3N1bXB0aW9uLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0ICp2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMqIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSG1tLCBpcyBzeXprYWxsZXIncyB2UENJIGZ1enplciBjb25zaWRlcmVkIFwic29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIiBpbiAqdGhpcyogY29udGV4dD8gSSdkIHNheSB5ZXMsIGl0IGRlZmluaXRlbHkgZml0cyB0aGF0IGRlc2NyaXB0aW9uLlxuXG5UaGUga2V5IHF1ZXN0aW9uIHRoZW4gYmVjb21lczogZG9lcyB0aGUgdlBDSSBmdXp6ZXIgYWN0dWFsbHkgZ2V0ICpwYXN0KiB0aGUgcG90ZW50aWFsIG1pbmVmaWVsZCBvZiBjb21wbGV4IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBlc3BlY2lhbGx5IHdpdGhpbiBzb21ldGhpbmcgYXMgZWxhYm9yYXRlIGFzIGBoaW5pY19wcm9iZWA/IFRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGludHJpY2F0ZSBQQ0kgZHJpdmVycyBvZnRlbiBjaG9rZSBlYXJseSBpbiB0aGVpciBgcHJvYmVgIGZ1bmN0aW9ucy4gVGhleSBmcmVxdWVudGx5IGRlcGVuZCBvbiB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucyDigJMgcmVhZGluZyBwYXJ0aWN1bGFyIHJlZ2lzdGVycywgRE1BIG9wZXJhdGlvbnMgd29ya2luZyBhcyBleHBlY3RlZCwgY29ycmVjdCBmaXJtd2FyZSBsb2FkaW5nLCB5b3Uga25vdyB0aGUgZHJpbGwuIEl0J3MgYSBmcmFnaWxlIGRhbmNlLlxuXG5TbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byBgaGluaWNfcHJvYmVgLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSB1cCBhZ2FpbnN0LCBhbmQgZmlndXJlIG91dCB3aGVyZSB0aGUgdlBDSSBmdXp6ZXIgaXMgbGlrZWx5IHRvIHN1Y2NlZWQgb3IgZmFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNDAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDg6MTMuOTAzOTU2OTU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM1ODU0ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGluaWNfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTExNjA9c3RhdGljIGludCBuaWNfZGV2X2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jLTEzNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxMzU2OnN0YXRpYyBpbnQgaGluaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYy0xMzU3LVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jPTE0Nzk9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGhpbmljX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ4MS1cXHQuaWRfdGFibGUgICAgICAgPSBoaW5pY19wY2lfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uYzoxNDgyOlxcdC5wcm9iZSAgICAgICAgICA9IGhpbmljX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTQ4My1cXHQucmVtb3ZlICAgICAgICAgPSBoaW5pY19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA4OjE0LjAwNzU0OTI3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MjE1ODIzODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRGl2aW5nIGludG8gYGhpbmljX3Byb2JlYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIGl0LiBMZXQncyBzZWUgd2hhdCdzIHdoYXQgd2l0aCB0aGlzIGBoaW5pY19wcm9iZWAuIEJhc2VkIG9uIHRoZSBuYW1lLCBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBsb3ctbGV2ZWwgdG9vbCwgcHJvYmFibHkgcmVsYXRlZCB0byBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVycywgb3IgXCJISU5JQ3NcIiBzcGVjaWZpY2FsbHkuIFRoZSBwcm9iZSBzdWZmaXggdHlwaWNhbGx5IGluZGljYXRlcyB0aGF0IGl0cyBmdW5jdGlvbiBpcyB0byB0ZXN0LCBnYXRoZXIgZGF0YSwgb3Igb3RoZXJ3aXNlIGV4YW1pbmUgdGhlIHN0YXRlIG9mIGEgaGFyZHdhcmUgY29tcG9uZW50LiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgZ28gdG8gdGhpbmdzIGxpa2UgaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIEhJTklDIG1vZGVsLCBjaGVja2luZyBpdHMgZmlybXdhcmUgdmVyc2lvbiwgdmVyaWZ5aW5nIGl0cyBvcGVyYXRpb25hbCBzdGF0dXMsIG9yIHBlcmhhcHMgZXZlbiBkaWFnbm9zaW5nIGNvbm5lY3Rpdml0eSBwcm9ibGVtcy4gSSdtIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgaXQgY291bGQgYmUgdXNlZCBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIGR1bXBpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLCBvciBkZXRlY3RpbmcgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMuIE5vdywgbGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgYWN0dWFsbHkgdGVsbHMgdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODQ0LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDk6MjkuMjIzMzc1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzU2LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM1NjpcXHRzdGF0aWMgaW50IGhpbmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbjEzNTc6XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4xMzU4OlxcdHtcXG4xMzU5OlxcdFxcdGludCBlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTtcXG4xMzYwOlxcdFxcbjEzNjE6XFx0XFx0aWYgKGVycilcXG4xMzYyOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGVyciwgXFxcIkZhaWxlZCB0byBlbmFibGUgUENJIGRldmljZVxcXFxuXFxcIik7XFxuMTM2MzpcXHRcXG4xMzY0OlxcdFxcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGRldiwgSElOSUNfRFJWX05BTUUpO1xcbjEzNjU6XFx0XFx0aWYgKGVycikge1xcbjEzNjY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlcXVlc3QgUENJIHJlZ2lvbnNcXFxcblxcXCIpO1xcbjEzNjc6XFx0XFx0XFx0Z290byBlcnJfcGNpX3JlZ2lvbnM7XFxuMTM2ODpcXHRcXHR9XFxuMTM2OTpcXHRcXG4xMzcwOlxcdFxcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xcbjEzNzE6XFx0XFxuMTM3MjpcXHRcXHRlcnIgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSyg2NCkpO1xcbjEzNzM6XFx0XFx0aWYgKGVycikge1xcbjEzNzQ6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHNldCBETUEgbWFza1xcXFxuXFxcIik7XFxuMTM3NTpcXHRcXHRcXHRnb3RvIGVycl9kbWFfbWFzaztcXG4xMzc2OlxcdFxcdH1cXG4xMzc3OlxcdFxcbjEzNzg6XFx0XFx0ZXJyID0gbmljX2Rldl9pbml0KHBkZXYpO1xcbjEzNzk6XFx0XFx0aWYgKGVycikge1xcbjEzODA6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgTklDIGRldmljZVxcXFxuXFxcIik7XFxuMTM4MTpcXHRcXHRcXHRnb3RvIGVycl9uaWNfZGV2X2luaXQ7XFxuMTM4MjpcXHRcXHR9XFxuMTM4MzpcXHRcXG4xMzg0OlxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJIaU5JQyBkcml2ZXIgLSBwcm9iZWRcXFxcblxcXCIpO1xcbjEzODU6XFx0XFx0cmV0dXJuIDA7XFxuMTM4NjpcXHRcXG4xMzg3OlxcdGVycl9uaWNfZGV2X2luaXQ6XFxuMTM4ODpcXHRlcnJfZG1hX21hc2s6XFxuMTM4OTpcXHRcXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpO1xcbjEzOTA6XFx0XFxuMTM5MTpcXHRlcnJfcGNpX3JlZ2lvbnM6XFxuMTM5MjpcXHRcXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XFxuMTM5MzpcXHRcXHRyZXR1cm4gZXJyO1xcbjEzOTQ6XFx0fVxcbjEzOTU6XFx0XFxuMTM5NjpcXHRzdGF0aWMgdm9pZCB3YWl0X3NyaW92X2NmZ19jb21wbGV0ZShzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2KVxcbjEzOTc6XFx0e1xcbjEzOTg6XFx0XFx0c3RydWN0IGhpbmljX3NyaW92X2luZm8gKnNyaW92X2luZm8gPSBcXHUwMDI2bmljX2Rldi1cXHUwMDNlc3Jpb3ZfaW5mbztcXG4xMzk5OlxcdFxcdHUzMiBsb29wX2NudCA9IDA7XFxuMTQwMDpcXHRcXG4xNDAxOlxcdFxcdHNldF9iaXQoSElOSUNfRlVOQ19SRU1PVkUsIFxcdTAwMjZzcmlvdl9pbmZvLVxcdTAwM2VzdGF0ZSk7XFxuMTQwMjpcXHRcXHR1c2xlZXBfcmFuZ2UoOTkwMCwgMTAwMDApO1xcbjE0MDM6XFx0XFxuMTQwNDpcXHRcXHR3aGlsZSAobG9vcF9jbnQgXFx1MDAzYyBISU5JQ19XQUlUX1NSSU9WX0NGR19USU1FT1VUKSB7XFxuMTQwNTpcXHRcXHRcXHRpZiAoIXRlc3RfYml0KEhJTklDX1NSSU9WX0VOQUJMRSwgXFx1MDAyNnNyaW92X2luZm8tXFx1MDAzZXN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbjE0MDY6XFx0XFx0XFx0ICAgICF0ZXN0X2JpdChISU5JQ19TUklPVl9ESVNBQkxFLCBcXHUwMDI2c3Jpb3ZfaW5mby1cXHUwMDNlc3RhdGUpKVxcbjE0MDc6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbjE0MDg6XFx0XFxuMTQwOTpcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoOTkwMCwgMTAwMDApO1xcbjE0MTA6XFx0XFx0XFx0bG9vcF9jbnQrKztcXG4xNDExOlxcdFxcdH1cXG4xNDEyOlxcdH1cXG4xNDEzOlxcdFxcbjE0MTQ6XFx0c3RhdGljIHZvaWQgaGluaWNfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbjE0MTU6XFx0e1xcbjE0MTY6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4xNDE3OlxcdFxcdHN0cnVjdCBoaW5pY19kZXYgKm5pY19kZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbjE0MTg6XFx0XFx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBuaWNfZGV2LVxcdTAwM2VkZXZsaW5rO1xcbjE0MTk6XFx0XFx0c3RydWN0IGhpbmljX3J4X21vZGVfd29yayAqcnhfbW9kZV93b3JrO1xcbjE0MjA6XFx0XFxuMTQyMTpcXHRcXHRpZiAoIUhJTklDX0lTX1ZGKG5pY19kZXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmKSkge1xcbjE0MjI6XFx0XFx0XFx0d2FpdF9zcmlvdl9jZmdfY29tcGxldGUobmljX2Rldik7XFxuMTQyMzpcXHRcXHRcXHRoaW5pY19wY2lfc3Jpb3ZfZGlzYWJsZShwZGV2KTtcXG4xNDI0OlxcdFxcdH1cXG4xNDI1OlxcdFxcbjE0MjY6XFx0XFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcXG4xNDI3OlxcdFxcbjE0Mjg6XFx0XFx0aGluaWNfZnVuY190YWJsZV9kZWJ1Z19yZW0obmljX2Rldik7XFxuMTQyOTpcXHRcXG4xNDMwOlxcdFxcdGhpbmljX2Z1bmNfdGJsX2RiZ2ZzX3VuaW5pdChuaWNfZGV2KTtcXG4xNDMxOlxcdFxcbjE0MzI6XFx0XFx0aGluaWNfZGJnX3VuaW5pdChuaWNfZGV2KTtcXG4xNDMzOlxcdFxcbjE0MzQ6XFx0XFx0aGluaWNfZnJlZV9pbnRyX2NvYWxlc2NlKG5pY19kZXYpO1xcbjE0MzU6XFx0XFxuMTQzNjpcXHRcXHRoaW5pY19wb3J0X2RlbF9tYWMobmljX2RldiwgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkciwgMCk7XFxuMTQzNzpcXHRcXG4xNDM4OlxcdFxcdGhpbmljX2h3ZGV2X2NiX3VucmVnaXN0ZXIobmljX2Rldi1cXHUwMDNlaHdkZXYsXFxuMTQzOTpcXHRcXHRcXHRcXHRcXHQgIEhJTklDX01HTVRfTVNHX0NNRF9MSU5LX0VSUl9FVkVOVCk7XFxuMTQ0MDpcXHRcXHRoaW5pY19od2Rldl9jYl91bnJlZ2lzdGVyKG5pY19kZXYtXFx1MDAzZWh3ZGV2LFxcbjE0NDE6XFx0XFx0XFx0XFx0XFx0ICBISU5JQ19NR01UX01TR19DTURfQ0FCTEVfUExVR19FVkVOVCk7XFxuMTQ0MjpcXHRcXHRoaW5pY19od2Rldl9jYl91bnJlZ2lzdGVyKG5pY19kZXYtXFx1MDAzZWh3ZGV2LFxcbjE0NDM6XFx0XFx0XFx0XFx0XFx0ICBISU5JQ19NR01UX01TR19DTURfTElOS19TVEFUVVMpO1xcbjE0NDQ6XFx0XFxuMTQ0NTpcXHRcXHRyeF9tb2RlX3dvcmsgPSBcXHUwMDI2bmljX2Rldi1cXHUwMDNlcnhfbW9kZV93b3JrO1xcbjE0NDY6XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cnhfbW9kZV93b3JrLVxcdTAwM2V3b3JrKTtcXG4xNDQ3OlxcdFxcbjE0NDg6XFx0XFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpO1xcbjE0NDk6XFx0XFxuMTQ1MDpcXHRcXHRkZXN0cm95X3dvcmtxdWV1ZShuaWNfZGV2LVxcdTAwM2V3b3JrcSk7XFxuMTQ1MTpcXHRcXG4xNDUyOlxcdFxcdGhpbmljX2ZyZWVfaHdkZXYobmljX2Rldi1cXHUwMDNlaHdkZXYpO1xcbjE0NTM6XFx0XFxuMTQ1NDpcXHRcXHRmcmVlX25ldGRldihuZXRkZXYpO1xcbjE0NTU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA5OjI5LjIyMzUyODg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNzcyNTY0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBuaWNcXF9kZXZcXF9pbml0KipcblxuQWxyaWdodCwgKm5pY1xcX2RldlxcX2luaXQqLi4uIGxldCdzIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggYSBtZW50YWwgY2hlY2tsaXN0LiBUaGlzIGlzIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlIGRldmljZSwgcmlnaHQ/IFNvLCBmaXJzdCBhbmQgZm9yZW1vc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIFdoYXQga2luZCBvZiBOSUMgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IElzIHRoaXMgRXRoZXJuZXQsIEluZmluaWJhbmQsIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPyBUaGUgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gaXMgY3J1Y2lhbCBiZWNhdXNlIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIHdpbGwgYmUgaGVhdmlseSBkZXBlbmRlbnQgb24gdGhlIHJlZ2lzdGVyIHNldHMsIHRoZSBETUEgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBpbnRlcnJ1cHQgbGluZXMuXG5cbk5leHQsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBwaGFzZXMuIFdlJ2xsIGxpa2VseSBiZSBjaGVja2luZyBmb3IgZGV2aWNlIHByZXNlbmNlLCBtYXliZSBkb2luZyBhIGhhcmR3YXJlIHJlc2V0LCBhbGxvY2F0aW5nIGFuZCBjb25maWd1cmluZyBETUEgYnVmZmVycywgbG9hZGluZyBmaXJtd2FyZSAoaWYgYXBwbGljYWJsZSksIHNldHRpbmcgdXAgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgdGhlbiBmaW5hbGx5LCByZWdpc3RlcmluZyB0aGUgZGV2aWNlIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEknbSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBoYXJkd2FyZSByZWdpc3RlcnMgYXJlIGJlaW5nIGFjY2Vzc2VkIGluIHRoaXMgcm91dGluZS4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB2YWx1ZXMuXG5cbkknbSBhbHNvIHdvbmRlcmluZyBhYm91dCB0aGUgZXJyb3IgaGFuZGxpbmcuIFdoYXQgZmFpbHVyZSBtb2RlcyBhcmUgYWNjb3VudGVkIGZvcj8gQXJlIHRoZXJlIHJldHJpZXMgd2l0aCBiYWNrb2ZmPyBBcmUgdGhlcmUgYW55IGRpYWdub3N0aWNzIGJ1aWx0LWluPyBBIHJvYnVzdCBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIG9uZSB0aGF0IGNhbiBoYW5kbGUgYSB2YXJpZXR5IG9mIGhhcmR3YXJlIGlzc3VlcyBncmFjZWZ1bGx5IGFuZCBwcm92aWRlIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHVzZXIuIEkgaG9wZSB0aGVyZSdzIGdvb2QgbG9nZ2luZy5cblxuVGhpcyBpbml0aWFsaXphdGlvbiBpcyBjcml0aWNhbC4gQSBzdWJ0bGUgYnVnIGhlcmUgY2FuIGxlYWQgdG8gaW50ZXJtaXR0ZW50IG5ldHdvcmsgcHJvYmxlbXMsIHBvb3IgcGVyZm9ybWFuY2UsIG9yIGV2ZW4gY29tcGxldGUgc3lzdGVtIGhhbmdzLiBUaGUgZGVlcGVyIEkgZ28sIHRoZSBtb3JlIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgbXV0ZXhlcyBvciBzcGlubG9ja3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHksIGVzcGVjaWFsbHkgaWYgdGhpcyByb3V0aW5lIGlzIHJ1bm5pbmcgaW4gYSBtdWx0aS10aHJlYWRlZCBjb250ZXh0LiBBbmQgb2YgY291cnNlLCBJJ2xsIGtlZXAgdGhlIE9TJ3MgZGF0YSBzdHJ1Y3R1cmVzIGluIG1pbmQ6IEFyZSB3ZSB3b3JraW5nIHdpdGggbmV0ZGV2IHN0cnVjdHVyZXMsIG9yIHNvbWUgb3RoZXIsIGRldmljZS1zcGVjaWZpYyBhYnN0cmFjdGlvbj8gQW55IGludGVyYWN0aW9uIHdpdGggbmV0bGluayBpcyBvZiBpbW1lZGlhdGUgaW50ZXJlc3QuXG5cblVsdGltYXRlbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcm91dGluZSdzIHJvbGUgaW4gZXN0YWJsaXNoaW5nIGEgc3RhYmxlLCB3ZWxsLWNvbmZpZ3VyZWQgbmV0d29yayBpbnRlcmZhY2UuIEFuZCB0aGF0IHN0YXJ0cyB3aXRoIHVuZGVyc3RhbmRpbmcgYWxsIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5J3JlIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNzE0LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTozNi4zMDA3ODkwOTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExNjA6XFx0c3RhdGljIGludCBuaWNfZGV2X2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuMTE2MTpcXHR7XFxuMTE2MjpcXHRcXHRzdHJ1Y3QgaGluaWNfcnhfbW9kZV93b3JrICpyeF9tb2RlX3dvcms7XFxuMTE2MzpcXHRcXHRzdHJ1Y3QgaGluaWNfZGV2ICpuaWNfZGV2O1xcbjExNjQ6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4xMTY1OlxcdFxcdHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXY7XFxuMTE2NjpcXHRcXHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluaztcXG4xMTY3OlxcdFxcdHU4IGFkZHJbRVRIX0FMRU5dO1xcbjExNjg6XFx0XFx0aW50IGVyciwgbnVtX3FwcztcXG4xMTY5OlxcdFxcbjExNzA6XFx0XFx0ZGV2bGluayA9IGhpbmljX2RldmxpbmtfYWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuMTE3MTpcXHRcXHRpZiAoIWRldmxpbmspIHtcXG4xMTcyOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkhpbmljIGRldmxpbmsgYWxsb2MgZmFpbGVkXFxcXG5cXFwiKTtcXG4xMTczOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjExNzQ6XFx0XFx0fVxcbjExNzU6XFx0XFxuMTE3NjpcXHRcXHRod2RldiA9IGhpbmljX2luaXRfaHdkZXYocGRldiwgZGV2bGluayk7XFxuMTE3NzpcXHRcXHRpZiAoSVNfRVJSKGh3ZGV2KSkge1xcbjExNzg6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgSFcgZGV2aWNlXFxcXG5cXFwiKTtcXG4xMTc5OlxcdFxcdFxcdGhpbmljX2RldmxpbmtfZnJlZShkZXZsaW5rKTtcXG4xMTgwOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGh3ZGV2KTtcXG4xMTgxOlxcdFxcdH1cXG4xMTgyOlxcdFxcbjExODM6XFx0XFx0bnVtX3FwcyA9IGhpbmljX2h3ZGV2X251bV9xcHMoaHdkZXYpO1xcbjExODQ6XFx0XFx0aWYgKG51bV9xcHMgXFx1MDAzYz0gMCkge1xcbjExODU6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBudW1iZXIgb2YgUVBTXFxcXG5cXFwiKTtcXG4xMTg2OlxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuMTE4NzpcXHRcXHRcXHRnb3RvIGVycl9udW1fcXBzO1xcbjExODg6XFx0XFx0fVxcbjExODk6XFx0XFxuMTE5MDpcXHRcXHRuZXRkZXYgPSBhbGxvY19ldGhlcmRldl9tcShzaXplb2YoKm5pY19kZXYpLCBudW1fcXBzKTtcXG4xMTkxOlxcdFxcdGlmICghbmV0ZGV2KSB7XFxuMTE5MjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgRXRoZXJuZXQgZGV2aWNlXFxcXG5cXFwiKTtcXG4xMTkzOlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuMTE5NDpcXHRcXHRcXHRnb3RvIGVycl9hbGxvY19ldGhlcmRldjtcXG4xMTk1OlxcdFxcdH1cXG4xMTk2OlxcdFxcbjExOTc6XFx0XFx0aWYgKCFISU5JQ19JU19WRihod2Rldi1cXHUwMDNlaHdpZikpXFxuMTE5ODpcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2aGluaWNfbmV0ZGV2X29wcztcXG4xMTk5OlxcdFxcdGVsc2VcXG4xMjAwOlxcdFxcdFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZoaW5pY3ZmX25ldGRldl9vcHM7XFxuMTIwMTpcXHRcXG4xMjAyOlxcdFxcdG5ldGRldi1cXHUwMDNlbWF4X210dSA9IEhJTklDX01BWF9NVFVfU0laRTtcXG4xMjAzOlxcdFxcdG5ldGRldi1cXHUwMDNlbWluX210dSA9IEhJTklDX01JTl9NVFVfU0laRTtcXG4xMjA0OlxcdFxcbjEyMDU6XFx0XFx0bmljX2RldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuMTIwNjpcXHRcXHRuaWNfZGV2LVxcdTAwM2VuZXRkZXYgPSBuZXRkZXY7XFxuMTIwNzpcXHRcXHRuaWNfZGV2LVxcdTAwM2Vod2RldiAgPSBod2RldjtcXG4xMjA4OlxcdFxcdG5pY19kZXYtXFx1MDAzZW1zZ19lbmFibGUgPSBNU0dfRU5BQkxFX0RFRkFVTFQ7XFxuMTIwOTpcXHRcXHRuaWNfZGV2LVxcdTAwM2VmbGFncyA9IDA7XFxuMTIxMDpcXHRcXHRuaWNfZGV2LVxcdTAwM2V0eHFzID0gTlVMTDtcXG4xMjExOlxcdFxcdG5pY19kZXYtXFx1MDAzZXJ4cXMgPSBOVUxMO1xcbjEyMTI6XFx0XFx0bmljX2Rldi1cXHUwMDNldHhfd2VpZ2h0ID0gdHhfd2VpZ2h0O1xcbjEyMTM6XFx0XFx0bmljX2Rldi1cXHUwMDNlcnhfd2VpZ2h0ID0gcnhfd2VpZ2h0O1xcbjEyMTQ6XFx0XFx0bmljX2Rldi1cXHUwMDNlc3FfZGVwdGggPSBISU5JQ19TUV9ERVBUSDtcXG4xMjE1OlxcdFxcdG5pY19kZXYtXFx1MDAzZXJxX2RlcHRoID0gSElOSUNfUlFfREVQVEg7XFxuMTIxNjpcXHRcXHRuaWNfZGV2LVxcdTAwM2Vzcmlvdl9pbmZvLmh3ZGV2ID0gaHdkZXY7XFxuMTIxNzpcXHRcXHRuaWNfZGV2LVxcdTAwM2Vzcmlvdl9pbmZvLnBkZXYgPSBwZGV2O1xcbjEyMTg6XFx0XFx0bmljX2Rldi1cXHUwMDNlbWF4X3FwcyA9IG51bV9xcHM7XFxuMTIxOTpcXHRcXHRuaWNfZGV2LVxcdTAwM2VkZXZsaW5rID0gZGV2bGluaztcXG4xMjIwOlxcdFxcbjEyMjE6XFx0XFx0aGluaWNfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XFxuMTIyMjpcXHRcXG4xMjIzOlxcdFxcdHNlbWFfaW5pdChcXHUwMDI2bmljX2Rldi1cXHUwMDNlbWdtdF9sb2NrLCAxKTtcXG4xMjI0OlxcdFxcbjEyMjU6XFx0XFx0bmljX2Rldi1cXHUwMDNldmxhbl9iaXRtYXAgPSBkZXZtX2JpdG1hcF96YWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgVkxBTl9OX1ZJRCxcXG4xMjI2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuMTIyNzpcXHRcXHRpZiAoIW5pY19kZXYtXFx1MDAzZXZsYW5fYml0bWFwKSB7XFxuMTIyODpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjEyMjk6XFx0XFx0XFx0Z290byBlcnJfdmxhbl9iaXRtYXA7XFxuMTIzMDpcXHRcXHR9XFxuMTIzMTpcXHRcXG4xMjMyOlxcdFxcdG5pY19kZXYtXFx1MDAzZXdvcmtxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoSElOSUNfV1FfTkFNRSk7XFxuMTIzMzpcXHRcXHRpZiAoIW5pY19kZXYtXFx1MDAzZXdvcmtxKSB7XFxuMTIzNDpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjEyMzU6XFx0XFx0XFx0Z290byBlcnJfd29ya3E7XFxuMTIzNjpcXHRcXHR9XFxuMTIzNzpcXHRcXG4xMjM4OlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBuZXRkZXYpO1xcbjEyMzk6XFx0XFxuMTI0MDpcXHRcXHRlcnIgPSBoaW5pY19wb3J0X2dldF9tYWMobmljX2RldiwgYWRkcik7XFxuMTI0MTpcXHRcXHRpZiAoZXJyKSB7XFxuMTI0MjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gZ2V0IG1hYyBhZGRyZXNzXFxcXG5cXFwiKTtcXG4xMjQzOlxcdFxcdFxcdGdvdG8gZXJyX2dldF9tYWM7XFxuMTI0NDpcXHRcXHR9XFxuMTI0NTpcXHRcXHRldGhfaHdfYWRkcl9zZXQobmV0ZGV2LCBhZGRyKTtcXG4xMjQ2OlxcdFxcbjEyNDc6XFx0XFx0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKG5ldGRldi1cXHUwMDNlZGV2X2FkZHIpKSB7XFxuMTI0ODpcXHRcXHRcXHRpZiAoIUhJTklDX0lTX1ZGKG5pY19kZXYtXFx1MDAzZWh3ZGV2LVxcdTAwM2Vod2lmKSkge1xcbjEyNDk6XFx0XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBNQUMgYWRkcmVzc1xcXFxuXFxcIik7XFxuMTI1MDpcXHRcXHRcXHRcXHRlcnIgPSAtRUlPO1xcbjEyNTE6XFx0XFx0XFx0XFx0Z290byBlcnJfYWRkX21hYztcXG4xMjUyOlxcdFxcdFxcdH1cXG4xMjUzOlxcdFxcbjEyNTQ6XFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgTUFDIGFkZHJlc3MgJXBNLCB1c2luZyByYW5kb21cXFxcblxcXCIsXFxuMTI1NTpcXHRcXHRcXHRcXHQgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuMTI1NjpcXHRcXHRcXHRldGhfaHdfYWRkcl9yYW5kb20obmV0ZGV2KTtcXG4xMjU3OlxcdFxcdH1cXG4xMjU4OlxcdFxcbjEyNTk6XFx0XFx0ZXJyID0gaGluaWNfcG9ydF9hZGRfbWFjKG5pY19kZXYsIG5ldGRldi1cXHUwMDNlZGV2X2FkZHIsIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTozNi4zMDEwMDk0MTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NDg3ODQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgaGluaWNfaW5pdF9od2RldmAqKlxuXG5Pa2F5LCBgaGluaWNfaW5pdF9od2RldmAgaGFzIGJlZW4gaW52b2tlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHBvdGVudGlhbCBjb21wbGV4aXR5IGhlcmUuIEJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXQgc3VnZ2VzdHMgdGhpcyByb3V0aW5lIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlIGRldmljZSwgYW5kIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlcmUgd2lsbCBsaWtlbHkgYmUgbG93LWxldmVsIGhhcmR3YXJlIGludGVyYWN0aW9ucy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIHRvIGNvbmZpcm0sIGJ1dCBJJ20gZXhwZWN0aW5nIHJlZ2lzdGVyIGFjY2Vzc2VzLCBwb3RlbnRpYWxseSBETUEgc2V0dXAsIGludGVycnVwdCBjb25maWd1cmF0aW9uLCBhbmQgcG9zc2libHkgZXZlbiBmaXJtd2FyZSBsb2FkaW5nIG9yIGNvbW11bmljYXRpb24uIEknbGwgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBzY29wZSBvZiB0aGVzZSBvcGVyYXRpb25zIHRvIGRldGVybWluZSBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIGJvdHRsZW5lY2tzLCBvciByYWNlIGNvbmRpdGlvbnMuIEtub3dpbmcgd2hhdCBzcGVjaWZpYyBoYXJkd2FyZSByZXNvdXJjZXMgdGhlIGZ1bmN0aW9uIHRhcmdldHMgaXMgZ29pbmcgdG8gYmUgbXkgaW1tZWRpYXRlIHByaW9yaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg4MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDk6MzkuNTY1ODkwNDk0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ0NzUyODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGluaWNfaW5pdF9od2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYz04NjE9aW50IGhpbmljX3NldF9pbnRlcnJ1cHRfY2ZnKHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmMtODk2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYzo4OTc6ICogaGluaWNfaW5pdF9od2RldiAtIEluaXRpYWxpemUgdGhlIE5JQyBIV1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy04OTgtICogQHBkZXY6IHRoZSBOSUMgcGNpIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jLTkwNC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5jOjkwNTpzdHJ1Y3QgaGluaWNfaHdkZXYgKmhpbmljX2luaXRfaHdkZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuYy05MDYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oPTYyOT12b2lkIGhpbmljX2h3ZGV2X2lmZG93bihzdHJ1Y3QgaGluaWNfaHdkZXYgKmh3ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfaHdfZGV2LmgtNjMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuaDo2MzE6c3RydWN0IGhpbmljX2h3ZGV2ICpoaW5pY19pbml0X2h3ZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2h3X2Rldi5oLTYzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmM9MTE2MD1zdGF0aWMgaW50IG5pY19kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfbWFpbi5jOjExNzY6XFx0aHdkZXYgPSBoaW5pY19pbml0X2h3ZGV2KHBkZXYsIGRldmxpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19tYWluLmMtMTE3Ny1cXHRpZiAoSVNfRVJSKGh3ZGV2KSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTo0MC4wMzAzNzMwMDhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MzE1NjI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudDpcblxuKipEaXZpbmcgaW50byBoaW5pY1xcX2luaXRcXF9od2RldioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoaXMgYGhpbmljX2luaXRfaHdkZXZgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIHNjb3BlLiBJcyB0aGlzIGEgdG9wLWxldmVsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBvciBzb21ldGhpbmcgZGVlcGVyIGluIHRoZSBkcml2ZXIgc3RhY2s/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgdGFyZ2V0IGhhcmR3YXJlIOKAkyB0aGUgc3BlY2lmaWMgTklDIG1vZGVsLCB0aGUgaW50ZW5kZWQgb3BlcmF0aW5nIGVudmlyb25tZW50LCBhbmQgd2hhdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS4gS25vd2luZyB0aGUgaGFyZHdhcmUgaXMga2V5LlxuXG5NeSBmb2N1cyBpcyBzaGlmdGluZyB0byBob3cgaXQgaGFuZGxlcyBoYXJkd2FyZSByZXNvdXJjZXMuIERvZXMgaXQgY2FsbCBmdW5jdGlvbnMgdG8gbWFwIG1lbW9yeSwgcmVxdWVzdCBpbnRlcnJ1cHRzLCBvciBtYW5hZ2UgRE1BIGNoYW5uZWxzPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGRlYWxzIHdpdGggcG90ZW50aWFsIGNvbmZsaWN0cyDigJMgZG9lcyBpdCBjaGVjayBmb3IgcmVzb3VyY2UgYXZhaWxhYmlsaXR5IGJlZm9yZSBhdHRlbXB0aW5nIHRvIGFsbG9jYXRlIHRoZW0/IEFyZSB0aGVyZSBhbnkgZXJyb3IgaGFuZGxpbmcgcGF0aHM/IEknbGwgYmUgc2NydXRpbml6aW5nIHRoZSByZXR1cm4gY29kZXMgYW5kIGVycm9yIG1lc3NhZ2VzLCBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2Ygd2Vha25lc3Mgb3Igb3Bwb3J0dW5pdGllcyBmb3IgaW1wcm92ZWQgZGlhZ25vc3RpY3MuXG5cbkknbSBhbHNvIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBpdCBhY2NlcHRzLiBBcmUgdGhlc2UgaGFyZGNvZGVkLCBvciBkeW5hbWljYWxseSBkZXJpdmVkIGZyb20gdGhlIHBsYXRmb3JtPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMsIGxpa2UgcmVnaXN0ZXIgYWNjZXNzIHByb3RlY3Rpb25zLCBvciBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3M/IEhvdyBkb2VzIGl0IGludGVncmF0ZSB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIGxpa2UgdGhlIE5JQydzIGZpcm13YXJlIGludGVyZmFjZSBvciB0aGUgbmV0d29yayBzdGFjayBpdHNlbGY/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuIExldCdzIHNlZSBob3cgaXQgZ29lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3MTEsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTo0My45MTM1MzEzMDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19kZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MDUsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTA1OlxcdHN0cnVjdCBoaW5pY19od2RldiAqaGluaWNfaW5pdF9od2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGRldmxpbmsgKmRldmxpbmspXFxuIDkwNjpcXHR7XFxuIDkwNzpcXHRcXHRzdHJ1Y3QgaGluaWNfcGZod2RldiAqcGZod2RldjtcXG4gOTA4OlxcdFxcdHN0cnVjdCBoaW5pY19od2RldiAqaHdkZXY7XFxuIDkwOTpcXHRcXHRzdHJ1Y3QgaGluaWNfaHdpZiAqaHdpZjtcXG4gOTEwOlxcdFxcdGludCBlcnIsIG51bV9hZXFzO1xcbiA5MTE6XFx0XFxuIDkxMjpcXHRcXHRod2lmID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqaHdpZiksIEdGUF9LRVJORUwpO1xcbiA5MTM6XFx0XFx0aWYgKCFod2lmKVxcbiA5MTQ6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDkxNTpcXHRcXG4gOTE2OlxcdFxcdGVyciA9IGhpbmljX2luaXRfaHdpZihod2lmLCBwZGV2KTtcXG4gOTE3OlxcdFxcdGlmIChlcnIpIHtcXG4gOTE4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBpbml0IEhXIGludGVyZmFjZVxcXFxuXFxcIik7XFxuIDkxOTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiA5MjA6XFx0XFx0fVxcbiA5MjE6XFx0XFxuIDkyMjpcXHRcXHRwZmh3ZGV2ID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcGZod2RldiksIEdGUF9LRVJORUwpO1xcbiA5MjM6XFx0XFx0aWYgKCFwZmh3ZGV2KSB7XFxuIDkyNDpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiA5MjU6XFx0XFx0XFx0Z290byBlcnJfcGZod2Rldl9hbGxvYztcXG4gOTI2OlxcdFxcdH1cXG4gOTI3OlxcdFxcbiA5Mjg6XFx0XFx0aHdkZXYgPSBcXHUwMDI2cGZod2Rldi1cXHUwMDNlaHdkZXY7XFxuIDkyOTpcXHRcXHRod2Rldi1cXHUwMDNlaHdpZiA9IGh3aWY7XFxuIDkzMDpcXHRcXHRod2Rldi1cXHUwMDNlZGV2bGlua19kZXYgPSBkZXZsaW5rX3ByaXYoZGV2bGluayk7XFxuIDkzMTpcXHRcXHRod2Rldi1cXHUwMDNlZGV2bGlua19kZXYtXFx1MDAzZWh3ZGV2ID0gaHdkZXY7XFxuIDkzMjpcXHRcXG4gOTMzOlxcdFxcdGVyciA9IGluaXRfbXNpeChod2Rldik7XFxuIDkzNDpcXHRcXHRpZiAoZXJyKSB7XFxuIDkzNTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBtc2l4XFxcXG5cXFwiKTtcXG4gOTM2OlxcdFxcdFxcdGdvdG8gZXJyX2luaXRfbXNpeDtcXG4gOTM3OlxcdFxcdH1cXG4gOTM4OlxcdFxcbiA5Mzk6XFx0XFx0ZXJyID0gd2FpdF9mb3Jfb3V0Ym91bmRfc3RhdGUoaHdkZXYpO1xcbiA5NDA6XFx0XFx0aWYgKGVycikge1xcbiA5NDE6XFx0XFx0XFx0ZGV2X3dhcm4oXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIm91dGJvdW5kIC0gZGlzYWJsZWQsIHRyeSBhZ2FpblxcXFxuXFxcIik7XFxuIDk0MjpcXHRcXHRcXHRoaW5pY19vdXRib3VuZF9zdGF0ZV9zZXQoaHdpZiwgSElOSUNfT1VUQk9VTkRfRU5BQkxFKTtcXG4gOTQzOlxcdFxcdH1cXG4gOTQ0OlxcdFxcbiA5NDU6XFx0XFx0bnVtX2FlcXMgPSBISU5JQ19IV0lGX05VTV9BRVFTKGh3aWYpO1xcbiA5NDY6XFx0XFxuIDk0NzpcXHRcXHRlcnIgPSBoaW5pY19hZXFzX2luaXQoXFx1MDAyNmh3ZGV2LVxcdTAwM2VhZXFzLCBod2lmLCBudW1fYWVxcyxcXG4gOTQ4OlxcdFxcdFxcdFxcdCAgICAgIEhJTklDX0RFRkFVTFRfQUVRX0xFTiwgSElOSUNfRVFfUEFHRV9TSVpFLFxcbiA5NDk6XFx0XFx0XFx0XFx0ICAgICAgaHdkZXYtXFx1MDAzZW1zaXhfZW50cmllcyk7XFxuIDk1MDpcXHRcXHRpZiAoZXJyKSB7XFxuIDk1MTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBhc3luYyBldmVudCBxdWV1ZXNcXFxcblxcXCIpO1xcbiA5NTI6XFx0XFx0XFx0Z290byBlcnJfYWVxc19pbml0O1xcbiA5NTM6XFx0XFx0fVxcbiA5NTQ6XFx0XFxuIDk1NTpcXHRcXHRlcnIgPSBpbml0X3BmaHdkZXYocGZod2Rldik7XFxuIDk1NjpcXHRcXHRpZiAoZXJyKSB7XFxuIDk1NzpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBQRiBIVyBkZXZpY2VcXFxcblxcXCIpO1xcbiA5NTg6XFx0XFx0XFx0Z290byBlcnJfaW5pdF9wZmh3ZGV2O1xcbiA5NTk6XFx0XFx0fVxcbiA5NjA6XFx0XFxuIDk2MTpcXHRcXHRlcnIgPSBoaW5pY19sMm5pY19yZXNldChod2Rldik7XFxuIDk2MjpcXHRcXHRpZiAoZXJyKVxcbiA5NjM6XFx0XFx0XFx0Z290byBlcnJfbDJuaWNfcmVzZXQ7XFxuIDk2NDpcXHRcXG4gOTY1OlxcdFxcdGVyciA9IGdldF9kZXZfY2FwKGh3ZGV2KTtcXG4gOTY2OlxcdFxcdGlmIChlcnIpIHtcXG4gOTY3OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBnZXQgZGV2aWNlIGNhcGFiaWxpdGllc1xcXFxuXFxcIik7XFxuIDk2ODpcXHRcXHRcXHRnb3RvIGVycl9kZXZfY2FwO1xcbiA5Njk6XFx0XFx0fVxcbiA5NzA6XFx0XFxuIDk3MTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZod2Rldi1cXHUwMDNlZnVuY190b19pby5uaWNfY2ZnLmNmZ19tdXRleCk7XFxuIDk3MjpcXHRcXG4gOTczOlxcdFxcdGVyciA9IGhpbmljX3ZmX2Z1bmNfaW5pdChod2Rldik7XFxuIDk3NDpcXHRcXHRpZiAoZXJyKSB7XFxuIDk3NTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBuaWMgbWJveFxcXFxuXFxcIik7XFxuIDk3NjpcXHRcXHRcXHRnb3RvIGVycl92Zl9mdW5jX2luaXQ7XFxuIDk3NzpcXHRcXHR9XFxuIDk3ODpcXHRcXG4gOTc5OlxcdFxcdGVyciA9IGluaXRfZndfY3R4dChod2Rldik7XFxuIDk4MDpcXHRcXHRpZiAoZXJyKSB7XFxuIDk4MTpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gaW5pdCBmdW5jdGlvbiB0YWJsZVxcXFxuXFxcIik7XFxuIDk4MjpcXHRcXHRcXHRnb3RvIGVycl9pbml0X2Z3X2N0eHQ7XFxuIDk4MzpcXHRcXHR9XFxuIDk4NDpcXHRcXG4gOTg1OlxcdFxcdGVyciA9IHNldF9yZXNvdXJjZXNfc3RhdGUoaHdkZXYsIEhJTklDX1JFU19BQ1RJVkUpO1xcbiA5ODY6XFx0XFx0aWYgKGVycikge1xcbiA5ODc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHNldCByZXNvdXJjZXMgc3RhdGVcXFxcblxcXCIpO1xcbiA5ODg6XFx0XFx0XFx0Z290byBlcnJfcmVzb3VyY2VzX3N0YXRlO1xcbiA5ODk6XFx0XFx0fVxcbiA5OTA6XFx0XFxuIDk5MTpcXHRcXHRyZXR1cm4gaHdkZXY7XFxuIDk5MjpcXHRcXG4gOTkzOlxcdGVycl9yZXNvdXJjZXNfc3RhdGU6XFxuIDk5NDpcXHRlcnJfaW5pdF9md19jdHh0OlxcbiA5OTU6XFx0XFx0aGluaWNfdmZfZnVuY19mcmVlKGh3ZGV2KTtcXG4gOTk2OlxcdGVycl92Zl9mdW5jX2luaXQ6XFxuIDk5NzpcXHRlcnJfbDJuaWNfcmVzZXQ6XFxuIDk5ODpcXHRlcnJfZGV2X2NhcDpcXG4gOTk5OlxcdFxcdGZyZWVfcGZod2RldihwZmh3ZGV2KTtcXG4xMDAwOlxcdFxcbjEwMDE6XFx0ZXJyX2luaXRfcGZod2RldjpcXG4xMDAyOlxcdFxcdGhpbmljX2FlcXNfZnJlZShcXHUwMDI2aHdkZXYtXFx1MDAzZWFlcXMpO1xcbjEwMDM6XFx0XFxuMTAwNDpcXHRlcnJfYWVxc19pbml0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTo0My45MTM2Mzk1MTNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5MjIyNDc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBIaU5JQyBEZXZsaW5rIEZsYXNoIFVwZGF0ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgYXJvdW5kIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U6IGBoaW5pY19pbml0X2h3aWZgLCBgaW5pdF9tc2l4YCwgYHdhaXRfZm9yX291dGJvdW5kX3N0YXRlYCwgYGhpbmljX2FlcXNfaW5pdGAsIGBpbml0X3BmaHdkZXZgLCBgaGluaWNfbDJuaWNfcmVzZXRgLCBgZ2V0X2Rldl9jYXBgLCBgaGluaWNfdmZfZnVuY19pbml0YCwgYGluaXRfZndfY3R4dGAsIGBzZXRfcmVzb3VyY2VzX3N0YXRlYC4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIGludGVyYWN0aW5nIHdpdGggUENJIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzOyB0aGF0J3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuXG5cbkdpdmVuIHRoYXQsIEknbSB0aGlua2luZyBhYm91dCBTeXprYWxsZXIgYW5kIGl0cyB2UENJIGZ1enplci4gSWYgaXQncyBpbnRlcmNlcHRpbmcgdGhvc2UgcmVhZHMgYW5kIHdyaXRlcywgaXQgb3BlbnMgYSBodWdlIGF0dGFjayBzdXJmYWNlLiBDb3VsZCBpdCBwcm9iZSB0aGlzIGRldmljZSBlZmZlY3RpdmVseT8gQW5kIGlmIHNvLCBjYW4gaXQgdGhlbiByZWFjaCB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGU/XG5cbkFoLCByaWdodCwgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIGlzIHRyaWdnZXJlZCBieSBuZXRsaW5rLiBTbywgdGhhdCdzIHRoZSB2ZWN0b3IuIEFuZCB0aGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYGNoZWNrX2ltYWdlX3ZhbGlkYCB3aXRoaW4gYGhpbmljX2RldmxpbmsuY2AuIFRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBoaW5pY19maXJtd2FyZV91cGRhdGVgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgIOKAkyB0aGUgYC5mbGFzaF91cGRhdGVgIGNhbGxiYWNrIGZvciBkZXZsaW5rLlxuXG5TbywgU3l6a2FsbGVyICpzaG91bGQqIGJlIGFibGUgdG8gcmVhY2ggdGhpcyBieSBjcmFmdGluZyBhIGRldmxpbmsgbmV0bGluayBtZXNzYWdlIHRvIHVwZGF0ZSB0aGUgZmlybXdhcmUuIEFuZCB0aGUgZmlybXdhcmUgZGF0YSBpdHNlbGYsIHRoYXQncyBlaXRoZXIgdXNlci1wcm92aWRlZCAob3IgbG9hZGVkIGJ5IGByZXF1ZXN0X2Zpcm13YXJlYCkuXG5cbldhaXQsIHRoZSBmdW5jdGlvbiBzaWduYXR1cmU6IGBoaW5pY19maXJtd2FyZV91cGRhdGVgIHRha2VzIGBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3YC4gTm93LCB3aGVyZSBkb2VzIGBmd2AgY29tZSBmcm9tPyBSaWdodCwgYGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zYCBoYXMgYHBhcmFtcy1cdTAwM2Vmd2AuXG5cblRoZSB1c2VyIGlzIHByb3ZpZGluZyB0aGUgZmlybXdhcmUgZmlsZW5hbWUsIGFuZCB0aGUga2VybmVsIGxvYWRzIGl0IHZpYSBgcmVxdWVzdF9maXJtd2FyZWAuIE9yIHRoZSB1c2VyIGNvdWxkIGJ5cGFzcyB0aGF0IGFuZCBmZWVkIHRoZSBkYXRhIGRpcmVjdGx5IHRocm91Z2ggbmV0bGluazsgdGhhdCdzIHdoYXQgdGhlIGRldmxpbmsgYWxsb3dzLiBUaGlzIGlzIHZlcnkgZ29vZCBiZWNhdXNlIHN5emthbGxlcidzIGZpcm13YXJlIGZ1enplciBjYW4gaW50ZXJjZXB0IGByZXF1ZXN0X2Zpcm13YXJlYC4gVGhpcyBtYWtlcyB0aGlzIGNvZGUgcGF0aCAqZXh0cmVtZWx5KiBmdXp6YWJsZSwgYXMgU3l6a2FsbGVyIGNhbiBwcm92aWRlIHRoZSBmdXp6ZWQgZGF0YS5cblxuR2l2ZW4gdGhhdCwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgdGFyZ2V0LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGNoZWNrX2ltYWdlX3ZhbGlkYCBpcyByZWFjaGFibGUsIGJ1dCB0aGUgcGllY2VzIGFyZSBhbGwgdGhlcmUuIFRoaXMgaXMgYSB2ZXJ5IHByb21pc2luZyBhdmVudWUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjQ4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDk6NTIuMDA1ODY3NzY4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ2OTQ5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hlY2tfaW1hZ2VfdmFsaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jPTIzPXN0YXRpYyBib29sIGhpbmljX2Z3X3NlY3Rpb25fdmFsaWQodTMyIGZ3X2xlbiwgdTMyIG9mZnNldCwgdTMyIGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYzoyODpzdGF0aWMgYm9vbCBjaGVja19pbWFnZV92YWxpZChzdHJ1Y3QgaGluaWNfZGV2bGlua19wcml2ICpwcml2LCBjb25zdCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjktXFx0XFx0XFx0ICAgICAgc2l6ZV90IGltYWdlX3NpemUsIHN0cnVjdCBob3N0X2ltYWdlX3N0ICpob3N0X2ltYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz0yODM9c3RhdGljIGludCBoaW5pY19maXJtd2FyZV91cGRhdGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMjkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MjkyOlxcdGlmICghY2hlY2tfaW1hZ2VfdmFsaWQocHJpdiwgZnctXFx1MDAzZWRhdGEsIGZ3LVxcdTAwM2VzaXplLCBcXHUwMDI2aG9zdF9pbWFnZSkgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jLTI5My1cXHQgICAgIWNoZWNrX2ltYWdlX2ludGVncml0eShwcml2LCBcXHUwMDI2aG9zdF9pbWFnZSwgRldfVVBEQVRFX0NPTEQpIHx8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjA5OjUyLjEzMDU5MDQ1OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDc0ODI5MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIFZ1bG5lcmFiaWxpdHkgRml4KipcblxuT2theSwgc28gYGNoZWNrX2ltYWdlX3ZhbGlkYCAqaXMqIGNhbGxlZCB3aXRoaW4gYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWAsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gVGhpcyBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIGBjaGVja19pbWFnZV92YWxpZGAuIFRoZSBkaWZmIHJlYWxseSBoaWdobGlnaHRzIHRoZSBpc3N1ZTogdGhleSdyZSBjaGFuZ2luZyB0aGUgbGVuZ3RoIGNoZWNrcywgd2hpY2ggaXMgYSBjb21tb24gYXJlYSBmb3IgdGhlc2Uga2luZHMgb2YgcHJvYmxlbXMuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwcmV0dHkgc3VzcGVjdDpcblxuYGBgY1xuLVx0aWYgKGxlbiAhPSBmd19pbWFnZS1cdTAwM2Vmd19sZW4gfHxcbi1cdCAgICAoZndfaW1hZ2UtXHUwMDNlZndfbGVuICsgVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSAhPSBpbWFnZV9zaXplKSB7XG5gYGBcblxuQW5kIGl0IGxvb2tzIGxpa2UgdGhlIGZpeCBjb3JyZWN0cyBpdCB0bzpcblxuYGBgY1xuK1x0aWYgKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbiAhPSBpbWFnZV9zaXplIC0gVVBEQVRFRldfSU1BR0VfSEVBRF9TSVpFKSB7XG5gYGBcblxuVGhhdCdzIGEgbXVjaCBtb3JlIHJvYnVzdCBjaGVjay4gQW5kIHRoZW4gdGhlcmUncyBhbHNvIHRoZSBhZGRpdGlvbiBvZiB0aGlzIHNhZmV0eSBjaGVjayB3aXRoaW4gdGhlIGxvb3A6XG5cbmBgYGNcbitcdFx0aWYgKCFoaW5pY19md19zZWN0aW9uX3ZhbGlkKGZ3X2ltYWdlLVx1MDAzZWZ3X2xlbixcbitcdFx0XHRcdFx0ICAgIHNlY3Rpb24tXHUwMDNlZndfc2VjdGlvbl9vZmZzZXQsXG4rXHRcdFx0XHRcdCAgICBzZWN0aW9uLVx1MDAzZWZ3X3NlY3Rpb25fbGVuKSkge1xuYGBgXG5cblllYWgsIHRoYXQgYGhpbmljX2Z3X3NlY3Rpb25fdmFsaWRgIGNhbGwgaXMgZGVmaW5pdGVseSBhIGdvb2QgYWRkaXRpb24sIGhlbHBpbmcgZW5zdXJlIHNlY3Rpb24gZGF0YSBpcyB3aXRoaW4gZXhwZWN0ZWQgYm91bmRzLiBDbGFzc2ljIGZpcm13YXJlIHBhcnNpbmcgdnVsbmVyYWJpbGl0eSBtaXRpZ2F0aW9uLiBHaXZlbiB0aGF0IHN5emthbGxlciBjYW4gZnV6eiBmaXJtd2FyZSBmaWxlcyBhbmQgaW50ZXJhY3Qgd2l0aCBkZXZsaW5rLCB0aGlzIGlzIGFic29sdXRlbHkgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBXZSBjYW4gbGlrZWx5IGZpbmQgc29tZSBpbnRlcmVzdGluZyBidWdzIGhlcmUuXG5cblJpZ2h0LCBzbyBsZXQncyBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gSSdsbCBmb2N1cyBvbiB0aGVzZTpcblxuKiAgIGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWBcbiogICBgaGluaWNfZmlybXdhcmVfdXBkYXRlYFxuKiAgIGBjaGVja19pbWFnZV92YWxpZGBcbiogICBgY2hlY2tfaW1hZ2VfaW50ZWdyaXR5YFxuKiAgIGBoaW5pY19mbGFzaF9md2BcblxuQW5kIGxldCdzIG1ha2Ugc3VyZSB0aGUgZHJpdmVyIGNvbmZpZyBpcyBpbiBwbGFjZSB0byBhbGxvdyB0aGUgZnV6emluZyB0byBiZSBlZmZlY3RpdmUuIEFoLCBpdCdzIGBDT05GSUdfSElOSUNgLCBnb29kLCBzbyB3ZSBqdXN0IG5lZWQgdG8gZW5zdXJlIHRoYXQncyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAxMiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzowOTo1OC42MDU0MjIxNzZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDM2Mjg0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSElOSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnOjY6Y29uZmlnIEhJTklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiSHVhd2VpIEludGVsbGlnZW50IFBDSUUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MDk6NTguNzE1NzkxNzY3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNzEyNzU1MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJ3ZlIGdvdCBteSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gc2V0LCBidXQgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2sgZm9yIGFueSBvdmVybG9va2VkIG9yIHNlY29uZGFyeSBjb25maWd1cmF0aW9ucywgZXh0ZXJuYWwgc291cmNlcywgb3Igb3ZlcnJpZGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIEknbSB0aGlua2luZywgXCJJcyB0aGVyZSBhbm90aGVyIGNvbmZpZyBmaWxlLCBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3Igc29tZSBhdXRvbWF0ZWQgcHJvY2VzcyBJJ3ZlIGZvcmdvdHRlbiBhYm91dCB0aGF0IGNvdWxkIGJlIGFmZmVjdGluZyB0aGVzZSBzZXR0aW5ncz9cIiBJdCdzIGEgZnVuZGFtZW50YWwgc2FuaXR5IGNoZWNrOiBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHRoZSBvbmx5IG9uZSBpbiBwbGF5LiBJIGRvbid0IHdhbnQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGdob3N0cy4gTGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgc3VycHJpc2UgcGFyYW1ldGVycyBvciBjb25mbGljdGluZyBzZXR0aW5ncyBiZWZvcmUgSSBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4OTYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzoxMDowMy4wODcwNzA3MTVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEh1YXdlaSBkcml2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgSElOSUNcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJIdWF3ZWkgSW50ZWxsaWdlbnQgUENJRSBOZXR3b3JrIEludGVyZmFjZSBDYXJkXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAoUENJX01TSSBcXHUwMDI2XFx1MDAyNiAoWDg2IHx8IEFSTTY0KSlcXG4gICA5OlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBIaU5JQyBQQ0lFIEV0aGVybmV0IGNhcmRzLlxcbiAgMTI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIHBhcnQgb2YgdGhlIGtlcm5lbCwgY2hvb3NlIFkgaGVyZS5cXG4gIDEzOlxcdFxcdCAgSWYgdW5zdXJlLCBjaG9vc2UgTi5cXG4gIDE0OlxcdFxcdCAgVGhlIGRlZmF1bHQgaXMgY29tcGlsZWQgYXMgbW9kdWxlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQxMzoxMDowMy4wODcyMDM2NzVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4NDA5MTUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhJTklDIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYENPTkZJR19ISU5JQ2Agb3B0aW9uIGlzIHRoZSBjZW50cmFsIHBpZWNlIGhlcmUuIEl0J3MgdGhlIG1haW4gY29uZmlndXJhdGlvbiBpdGVtIHdlJ3JlIGNvbmNlcm5lZCB3aXRoLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBkZXBlbmRpbmcgb24gYFBDSV9NU0lgIGFuZCBlaXRoZXIgYW4gYFg4NmAgb3IgYEFSTTY0YCBhcmNoaXRlY3R1cmUuIEl0IGFsc28gYXV0b21hdGljYWxseSBlbmFibGVzIGBORVRfREVWTElOS2AsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBtb2Rlcm4gbmV0d29yayBkZXZpY2VzLCBidXQgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWdzIG1lc3Npbmcgd2l0aCBkZXZsaW5rIG9yIGZpcm13YXJlIGZ1bmN0aW9uYWxpdHkuIE5vcGUsIGBDT05GSUdfSElOSUNgIHRha2VzIGNhcmUgb2YgZXZlcnl0aGluZy5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBmbGFzaGluZyBhbmQgZmlybXdhcmUgdXBkYXRlIHByb2Nlc3NlczogYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCwgYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWAsIGBjaGVja19pbWFnZV92YWxpZGAsIGBjaGVja19pbWFnZV9pbnRlZ3JpdHlgLCBhbmQgYGhpbmljX2ZsYXNoX2Z3YC4gVGhlc2UgYXJlIHRoZSBhY3R1YWwgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBkb2luZyB0aGUgaGVhdnkgbGlmdGluZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCBpcyBuYW1lZCBjb3JyZWN0bHksIGFzIGRldmxpbmsgYW5kIGZpcm13YXJlIHVwZGF0ZSBmdW5jdGlvbmFsaXRpZXMgYXJlIG5vcm1hbGx5IGRpc3RpbmN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDMxNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjEwOjA3LjI3MTMwMDY4N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMDQzNTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz0yODM9c3RhdGljIGludCBoaW5pY19maXJtd2FyZV91cGRhdGUoc3RydWN0IGhpbmljX2RldmxpbmtfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmMtMzIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19kZXZsaW5rLmM6MzIyOnN0YXRpYyBpbnQgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGUoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMjMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmxpbmtfZmxhc2hfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYz0zMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBoaW5pY19kZXZsaW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZGV2bGluay5jOjMzMjpcXHQuZmxhc2hfdXBkYXRlID0gaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2RldmxpbmsuYy0zMzMtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMTM6MTA6MDcuMzgxMzU0MDQ4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3ODI4NjE5Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhpbmljIERyaXZlciBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgLCByaWdodD8gTGV0IG1lIHNlZSB3aGF0IGVsc2UgaGFzIGNoYW5nZWQgb3IgaXMgcmVsYXRlZC4gQWgsIGBoaW5pY19md19zZWN0aW9uX3ZhbGlkYCBpcyBuZXcuIFNvLCB3ZSd2ZSBnb3Q6XG5cbiogICBgaGluaWNfZndfc2VjdGlvbl92YWxpZGBcbiogICBgY2hlY2tfaW1hZ2VfdmFsaWRgXG4qICAgYGhpbmljX2Zpcm13YXJlX3VwZGF0ZWBcbiogICBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgXG5cbkFueXRoaW5nIGVsc2U/XG5cblJpZ2h0LCB0aGUgdnVsbmVyYWJpbGl0eSB3YXMgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBhZGRzIGJvdW5kcyBjaGVja2luZyDigJMgcHJldmVudGluZyBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIGl0J3MgcGFyc2luZyB0aGUgZmlybXdhcmUgaW1hZ2UuIFllcCwgdGhhdCdzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCB0aGUgZGV2bGluayBmbGFzaCB1cGRhdGUuXG5cbkFscmlnaHQsIGxldCBtZSBzdW1tYXJpemUgdGhpcyBmb3IgZnV6emluZyBwdXJwb3Nlcy4gV2UndmUgZ290IGEgc29saWQgdGFyZ2V0IGhlcmUuXG5cbiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqIC0gRGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIEkgd2FudCB0byB0YXJnZXQgdGhlc2Ugc3ltYm9sczpcblxuICAgICogICBgaGluaWNfZndfc2VjdGlvbl92YWxpZGBcbiAgICAqICAgYGNoZWNrX2ltYWdlX3ZhbGlkYFxuICAgICogICBgaGluaWNfZmlybXdhcmVfdXBkYXRlYFxuICAgICogICBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgXG4qICAgKipFbmFibGVDb25maWdzOioqIFdlIG5lZWQgYEhJTklDYCBlbmFibGVkLCBvYnZpb3VzbHkuXG5cbioqUmVhc29uaW5nOioqXG5cblRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIEhpbmljIGRyaXZlcidzIGZpcm13YXJlIHBhcnNpbmcgbG9naWMuIFRoZSB2dWxuZXJhYmlsaXR5IHJlc2lkZXMgaW4gYGNoZWNrX2ltYWdlX3ZhbGlkYCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB0aGUgYGRldmxpbmsgZmxhc2ggdXBkYXRlYCBtZWNoYW5pc20sIHNwZWNpZmljYWxseSBgaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVgLiBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIOKAkyB2UENJLCBmdXp6IHRoZSBQQ0kgZGV2aWNlIHByb2JlLCB0aGVuIHVzZSBhIGRldmxpbmsgbmV0bGluayBtZXNzYWdlIHRvIHNlbmQgYSBmdXp6ZWQgZmlybXdhcmUgaW1hZ2UuIFNpbXBsZSBlbm91Z2ggdG8gdHJpZ2dlci5cblxuTGV0J3MgY2FsbCB0aGUgc2V0LXJlc3VsdHMgZnVuY3Rpb24gYW5kIGdldCB0aGlzIG1vdmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEwMjgsIk91dHB1dFRva2VucyI6MTgxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDEzOjEwOjI1LjIwOTk3NzE4MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzEzNzA5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElOSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaW5pY19md19zZWN0aW9uX3ZhbGlkXCIsXG4gICAgXCJjaGVja19pbWFnZV92YWxpZFwiLFxuICAgIFwiaGluaWNfZmlybXdhcmVfdXBkYXRlXCIsXG4gICAgXCJoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIG9mIHRoZSBIdWF3ZWkgSW50ZWxsaWdlbnQgTklDIChoaW5pYykgZHJpdmVyLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyBsb2NhdGVkIGluIGBjaGVja19pbWFnZV92YWxpZGAsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGRldmxpbmsgZmxhc2ggdXBkYXRlIG1lY2hhbmlzbSAoYGhpbmljX2RldmxpbmtfZmxhc2hfdXBkYXRlYCkuIFN5emthbGxlciBjYW4gdHJpZ2dlciB0aGlzIGJ5IGVtdWxhdGluZyB0aGUgUENJIGRldmljZSB1c2luZyBpdHMgdlBDSSBmdXp6ZXIgdG8gcGFzcyB0aGUgcHJvYmUgcGhhc2UsIGFuZCB0aGVuIHNlbmRpbmcgYSBkZXZsaW5rIG5ldGxpbmsgbWVzc2FnZSB3aXRoIGEgZnV6emVkIGZpcm13YXJlIGltYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJTklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGluaWNfZndfc2VjdGlvbl92YWxpZFwiLFxuICAgIFwiY2hlY2tfaW1hZ2VfdmFsaWRcIixcbiAgICBcImhpbmljX2Zpcm13YXJlX3VwZGF0ZVwiLFxuICAgIFwiaGluaWNfZGV2bGlua19mbGFzaF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBvZiB0aGUgSHVhd2VpIEludGVsbGlnZW50IE5JQyAoaGluaWMpIGRyaXZlci4gVGhlIHZ1bG5lcmFiaWxpdHkgaXMgbG9jYXRlZCBpbiBgY2hlY2tfaW1hZ2VfdmFsaWRgLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHRoZSBkZXZsaW5rIGZsYXNoIHVwZGF0ZSBtZWNoYW5pc20gKGBoaW5pY19kZXZsaW5rX2ZsYXNoX3VwZGF0ZWApLiBTeXprYWxsZXIgY2FuIHRyaWdnZXIgdGhpcyBieSBlbXVsYXRpbmcgdGhlIFBDSSBkZXZpY2UgdXNpbmcgaXRzIHZQQ0kgZnV6emVyIHRvIHBhc3MgdGhlIHByb2JlIHBoYXNlLCBhbmQgdGhlbiBzZW5kaW5nIGEgZGV2bGluayBuZXRsaW5rIG1lc3NhZ2Ugd2l0aCBhIGZ1enplZCBmaXJtd2FyZSBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowc8548[1] Phase: Succeeded StartedAt: 2026-07-06 13:10:37 +0000 UTC FinishedAt: 2026-07-06 13:10:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 13:10:37 +0000 UTC FinishedAt: 2026-07-06 13:10:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2] Phase: Succeeded StartedAt: 2026-07-06 13:10:37 +0000 UTC FinishedAt: 2026-07-06 14:36:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 13:10:37 +0000 UTC FinishedAt: 2026-07-06 14:36:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 13:10:37 +0000 UTC FinishedAt: 2026-07-06 13:10:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 13:10:37 +0000 UTC FinishedAt: 2026-07-06 13:10:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc8548/series-workflowc8548-convert-artifact-3866526025/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 13:10:57 +0000 UTC FinishedAt: 2026-07-06 13:54:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 13:10:57 +0000 UTC FinishedAt: 2026-07-06 13:54: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:*face79da-f14d-4e90-af82-83d5b3abaef4,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-workflowc8548/series-workflowc8548-convert-artifact-3866526025/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": "b95b1a22-1f62-4e84-b1e0-14d9a5e15530", "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-workflowc8548/series-workflowc8548-build-action-1165492263/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 13:10:57 +0000 UTC FinishedAt: 2026-07-06 13:53:55 +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:*face79da-f14d-4e90-af82-83d5b3abaef4,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-workflowc8548/series-workflowc8548-convert-artifact-3866526025/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": "b95b1a22-1f62-4e84-b1e0-14d9a5e15530", "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-workflowc8548/series-workflowc8548-build-action-1165492263/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 13:54:15 +0000 UTC FinishedAt: 2026-07-06 13:54:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 13:54:15 +0000 UTC FinishedAt: 2026-07-06 13:54:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 13:54:15 +0000 UTC FinishedAt: 2026-07-06 13:54:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 13:54:15 +0000 UTC FinishedAt: 2026-07-06 13:54:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc8548/series-workflowc8548-convert-artifact-2398283612/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 13:54:37 +0000 UTC FinishedAt: 2026-07-06 13:56:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 13:54:37 +0000 UTC FinishedAt: 2026-07-06 13:56:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b95b1a22-1f62-4e84-b1e0-14d9a5e15530,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-workflowc8548/series-workflowc8548-build-action-1165492263/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-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 13:56:40 +0000 UTC FinishedAt: 2026-07-06 13:56:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 13:56:40 +0000 UTC FinishedAt: 2026-07-06 13:56:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 13:56:40 +0000 UTC FinishedAt: 2026-07-06 14:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 13:56:40 +0000 UTC FinishedAt: 2026-07-06 14:32:43 +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:*face79da-f14d-4e90-af82-83d5b3abaef4,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-workflowc8548/series-workflowc8548-convert-artifact-2398283612/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": "bbfb09a5-b895-424d-88a8-7249d33b22b2", "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-workflowc8548/series-workflowc8548-build-action-2711202744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 13:56:40 +0000 UTC FinishedAt: 2026-07-06 14:32: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:*face79da-f14d-4e90-af82-83d5b3abaef4,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-workflowc8548/series-workflowc8548-convert-artifact-2398283612/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": "bbfb09a5-b895-424d-88a8-7249d33b22b2", "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-workflowc8548/series-workflowc8548-build-action-2711202744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 14:32:43 +0000 UTC FinishedAt: 2026-07-06 14:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 14:32:43 +0000 UTC FinishedAt: 2026-07-06 14:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 14:32:43 +0000 UTC FinishedAt: 2026-07-06 14:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 14:32:43 +0000 UTC FinishedAt: 2026-07-06 14:34:47 +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:*bbfb09a5-b895-424d-88a8-7249d33b22b2,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-workflowc8548/series-workflowc8548-build-action-2711202744/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-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 14:34:57 +0000 UTC FinishedAt: 2026-07-06 14:36:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 14:34:57 +0000 UTC FinishedAt: 2026-07-06 14:36:55 +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":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"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:*b95b1a22-1f62-4e84-b1e0-14d9a5e15530,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bbfb09a5-b895-424d-88a8-7249d33b22b2,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-workflowc8548/series-workflowc8548-build-action-1165492263/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-workflowc8548/series-workflowc8548-build-action-2711202744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 14:34:57 +0000 UTC FinishedAt: 2026-07-06 14:35:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 14:34:57 +0000 UTC FinishedAt: 2026-07-06 14:35:38 +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":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"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-workflowc8548/series-workflowc8548-convert-artifact-2150803493/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 14:34:57 +0000 UTC FinishedAt: 2026-07-06 14:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 14:34:57 +0000 UTC FinishedAt: 2026-07-06 14:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 14:34:57 +0000 UTC FinishedAt: 2026-07-06 14:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 14:35:46 +0000 UTC FinishedAt: 2026-07-06 14:36:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8548[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hinic_fw_section_valid","check_image_valid","hinic_firmware_update","hinic_devlink_flash_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b73bc9ca3686b78b642fb35dcc1fdf874ecb74a1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HINIC"],"series_id":"e20af83f-34e2-4cd3-9964-9ee94f57485d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 14:35:46 +0000 UTC FinishedAt: 2026-07-06 14:36:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b95b1a22-1f62-4e84-b1e0-14d9a5e15530,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bbfb09a5-b895-424d-88a8-7249d33b22b2,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-workflowc8548/series-workflowc8548-build-action-1165492263/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-workflowc8548/series-workflowc8548-build-action-2711202744/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-workflowc8548/series-workflowc8548-convert-artifact-2150803493/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,}