Name: series-workflow74sn7 Phase: Succeeded StartedAt: 2026-08-08 23:27:18 +0000 UTC FinishedAt: 2026-08-09 03:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[0] Phase: Succeeded StartedAt: 2026-08-08 23:27:18 +0000 UTC FinishedAt: 2026-08-08 23:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 23:27:18 +0000 UTC FinishedAt: 2026-08-08 23:31:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "MEDIA_RADIO_SUPPORT", "VIDEO_DEV", "RADIO_ADAPTERS", "RADIO_SI4713", "USB_SI4713" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "MEDIA_RADIO_SUPPORT", "VIDEO_DEV", "RADIO_ADAPTERS", "RADIO_SI4713", "USB_SI4713" ], "series_id": "5bdac209-a293-4508-91ec-abbd53a7c3a8" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "usb_si4713_probe", "usb_si4713_disconnect", "usb_si4713_video_device_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7TUVESUFfUkFESU9fU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OywKICAgICYjMzQ7UkFESU9fQURBUFRFUlMmIzM0OywKICAgICYjMzQ7UkFESU9fU0k0NzEzJiMzNDssCiAgICAmIzM0O1VTQl9TSTQ3MTMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2Jfc2k0NzEzX3Byb2JlJiMzNDssCiAgICAmIzM0O3VzYl9zaTQ3MTNfZGlzY29ubmVjdCYjMzQ7LAogICAgJiMzNDt1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgZGV2aWNlIGxpZmVjeWNsZSBpc3N1ZSBieSBtb3ZpbmcgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFuZCBgaTJjX2RlbF9hZGFwdGVyYCBmcm9tIHRoZSB2aWRlbyBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjayB0byB0aGUgVVNCIGRpc2Nvbm5lY3QgZnVuY3Rpb24sIGFuZCBmaXhpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVzZSBjaGFuZ2VzIGZpeCBhIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB0aGF0IG9jY3VycyB3aGVuIHRoZSBkZXZpY2UgaXMgZGlzY29ubmVjdGVkIG9yIGZhaWxzIHRvIHByb2JlLiBTdWNoIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBsaWZlY3ljbGUgYnVncyBhcmUgcGVyZmVjdGx5IGhhbmRsZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNjb25uZWN0IHBhdGhzIG9mIHRoZSBzaTQ3MTMgVVNCIHJhZGlvIGRyaXZlciwgbW92aW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgSTJDIGFkYXB0ZXIgZGVsZXRpb24gb3V0IG9mIHRoZSByZWxlYXNlIGNhbGxiYWNrLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBkdW1teV9oY2QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOGVmM2Y3OWZhYjExMzMzYmNmODAwYWRmOWQ1YmJiYjY2MGQ2NjliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAyMzoyOToxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbmluZGV4IDZlNjc2NDE0M2UyMWYuLmQ1ZDk3ZTMzNjBkOGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xuQEAgLTEyOCwxMCAmIzQzOzEyOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgdXNiX3NpNDcxM19mb3BzID0ge1xuIHN0YXRpYyB2b2lkIHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2Uoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldilcbiB7XG4gXHRzdHJ1Y3Qgc2k0NzEzX3VzYl9kZXZpY2UgKnJhZGlvID0gdG9fc2k0NzEzX2Rldih2NGwyX2Rldik7XG4tXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBcdTAwMjZyYWRpby1cdTAwM2VpMmNfYWRhcHRlcjtcbiBcbi1cdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcbi1cdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIFx0a2ZyZWUocmFkaW8tXHUwMDNlYnVmZmVyKTtcbiBcdGtmcmVlKHJhZGlvKTtcbiB9XG5AQCAtNDg4LDcgJiM0Mzs0ODUsOSBAQCBzdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHRyZXR1cm4gMDtcbiBcbiBkZWxfYWRhcHRlcjpcbiYjNDM7XHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcbiYjNDM7XHRnb3RvIGVycl92NGwyO1xuIGVycl9pMmNkZXY6XG4gXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBlcnJfdjRsMjpcbkBAIC01MDYsOCAmIzQzOzUwNSwxMSBAQCBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gXHRtdXRleF9sb2NrKFx1MDAyNnJhZGlvLVx1MDAzZWxvY2spO1xuIFx0dXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTtcbiBcdHZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnJhZGlvLVx1MDAzZXZkZXYpO1xuLVx0djRsMl9kZXZpY2VfZGlzY29ubmVjdChcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cmFkaW8tXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuJiM0MztcdGkyY19kZWxfYWRhcHRlcihcdTAwMjZyYWRpby1cdTAwM2VpMmNfYWRhcHRlcik7XG4mIzQzO1xuIFx0djRsMl9kZXZpY2VfcHV0KFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7TUVESUFfUkFESU9fU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OywKICAgICYjMzQ7UkFESU9fQURBUFRFUlMmIzM0OywKICAgICYjMzQ7UkFESU9fU0k0NzEzJiMzNDssCiAgICAmIzM0O1VTQl9TSTQ3MTMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2Jfc2k0NzEzX3Byb2JlJiMzNDssCiAgICAmIzM0O3VzYl9zaTQ3MTNfZGlzY29ubmVjdCYjMzQ7LAogICAgJiMzNDt1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBhbmQgZGlzY29ubmVjdCBwYXRocyBvZiB0aGUgc2k0NzEzIFVTQiByYWRpbyBkcml2ZXIsIG1vdmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIEkyQyBhZGFwdGVyIGRlbGV0aW9uIG91dCBvZiB0aGUgcmVsZWFzZSBjYWxsYmFjay4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZHVtbXlfaGNkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjhlZjNmNzlmYWIxMTMzM2JjZjgwMGFkZjlkNWJiYmI2NjBkNjY5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMjM6Mjk6MTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMKaW5kZXggNmU2NzY0MTQzZTIxZi4uZDVkOTdlMzM2MGQ4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYwpAQCAtMTI4LDEwICYjNDM7MTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7CiBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpCiB7CiAJc3RydWN0IHNpNDcxM191c2JfZGV2aWNlICpyYWRpbyA9IHRvX3NpNDcxM19kZXYodjRsMl9kZXYpOwotCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9ICZhbXA7cmFkaW8tJmd0O2kyY19hZGFwdGVyOwogCi0JaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwotCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwogCWtmcmVlKHJhZGlvLSZndDtidWZmZXIpOwogCWtmcmVlKHJhZGlvKTsKIH0KQEAgLTQ4OCw3ICYjNDM7NDg1LDkgQEAgc3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAogCXJldHVybiAwOwogCiBkZWxfYWRhcHRlcjoKJiM0MzsJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwomIzQzOwlnb3RvIGVycl92NGwyOwogZXJyX2kyY2RldjoKIAl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIGVycl92NGwyOgpAQCAtNTA2LDggJiM0Mzs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCW11dGV4X2xvY2soJmFtcDtyYWRpby0mZ3Q7bG9jayk7CiAJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTsKIAl2aWRlb191bnJlZ2lzdGVyX2RldmljZSgmYW1wO3JhZGlvLSZndDt2ZGV2KTsKLQl2NGwyX2RldmljZV9kaXNjb25uZWN0KCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIAltdXRleF91bmxvY2soJmFtcDtyYWRpby0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwomIzQzOwlpMmNfZGVsX2FkYXB0ZXIoJmFtcDtyYWRpby0mZ3Q7aTJjX2FkYXB0ZXIpOwomIzQzOwogCXY0bDJfZGV2aWNlX3B1dCgmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxMQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDY4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgVVNCIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY2AuIEl0JiMzOTtzIHRvdWNoaW5nIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgYHVzYl9zaTQ3MTNfcHJvYmVgLCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAuIFRoZSBrZXkgY2hhbmdlIGlzIG1vdmluZyBgaTJjX2RlbF9hZGFwdGVyYCBhbmQgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFyb3VuZC4gU3BlY2lmaWNhbGx5LCB0aGV5IGFyZSBiZWluZyBtb3ZlZCBmcm9tIHRoZSByZWxlYXNlIGZ1bmN0aW9uIHRvIHRoZSBkaXNjb25uZWN0IGZ1bmN0aW9uIGFuZCBwcm9iZSYjMzk7cyBlcnJvciBoYW5kbGluZyBwYXRoLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpdHMgZnV6emluZyBwb3RlbnRpYWwuIEl0JiMzOTtzIGEgVVNCIGRyaXZlciwgYW5kIFVTQiBkcml2ZXJzIGFyZSBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBjYW4gZnV6eiwgZXNwZWNpYWxseSB3aXRoIHRvb2xzIGxpa2UgdGhlIFVTQiBnYWRnZXQvZHVtbXlfaGNkIHNldHVwLiBQcm9iZSwgZGlzY29ubmVjdCwgYW5kIHJlbGVhc2UgZnVuY3Rpb25zPyBTb3VuZHMgbGlrZSBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS4KClRoZW4gSSByZS1yZWFkIHRoZSBwcm9tcHQgcmVnYXJkaW5nIHdoZXRoZXIgb3Igbm90IHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgZXhlY3V0ZWQgKm9ubHkqIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcsIGlzIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgIGEgdGVhcmRvd24gY2FsbGJhY2s/IFllcCwgaXQmIzM5O3MgdGhlIGAuZGlzY29ubmVjdGAgY2FsbGJhY2sgb2YgYHN0cnVjdCB1c2JfZHJpdmVyYC4gV2hhdCBhYm91dCB0aGUgZXJyb3IgcGF0aCBpbiBgdXNiX3NpNDcxM19wcm9iZWA/IEFsc28gYSB0ZWFyZG93biwgc2luY2UgaXQmIzM5O3MgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIHByb2JlLiBBbmQgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgPyBUaGF0JiMzOTtzIGEgcmVsZWFzZSBjYWxsYmFjaywgc28geWVzLCBhIHRlYXJkb3duLgoKSG9sZCBvbiBhIHNlY29uZC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgJiMzNDtQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kLiYjMzQ7IEZvciBVU0IsIGAuZGlzY29ubmVjdGAgaXMgZXhlY3V0ZWQgZHVyaW5nIFVTQiBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQuIE5vdywgSSYjMzk7bSBwcmV0dHkgc3VyZSBzeXprYWxsZXIgZG9lcyBhIGxvdCBvZiBmdXp6aW5nIG9mIFVTQiBwcm9iZSBhbmQgZGlzY29ubmVjdCwgdXNpbmcgdGhhdCBkdW1teV9oY2Qgc2V0dXAuIEhtbW0sIGlzIGl0IHN0aWxsIHdvcnRoIGZ1enppbmc/CgpMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY2hhbmdlcyB0aGF0IG1pZ2h0IG1ha2UgdGhpcyB3b3J0aHdoaWxlLiBOb3BlLCBpdCYjMzk7cyBqdXN0IGFib3V0IHRoZXNlIHRlYXJkb3duIGFuZCBlcnJvciBwYXRocy4gQnV0LCBpZiBpdCYjMzk7cyAqb25seSogdGVhcmRvd24gY2FsbGJhY2tzLCBpcyBpdCByZWFsbHkgd29ydGggaXQ/IFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG9ubHkgbWFyayBhcyAqbm90KiB3b3J0aCBmdXp6aW5nIGlmIHRoZXkgKm9ubHkqIGhhcHBlbiBvbiB0aGUgaG90LXVucGx1ZyBvciB1bmJpbmQgb3BlcmF0aW9ucy4KCk9rYXksIGxldCBtZSByZS1yZWFkIHRoYXQgcHJvbXB0IHNlY3Rpb24gYWdhaW4gdG8gbWFrZSBzdXJlIEkgZ2V0IGl0IHJpZ2h0LiBJdCBzYXlzICYjMzQ7UENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZC4mIzM0OyBBbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAgZXhlY3V0ZXMgb24gVVNCIGhvdC11bnBsdWcsIHdoaWNoIHN5emthbGxlciBoZWF2aWx5IGZ1enplZC4gQnV0IHRoZSBwcm9tcHQgZG9lc24mIzM5O3QgZXhwbGljaXRseSAqZXhjbHVkZSogVVNCIGhvdC11bnBsdWcuLi4gVGhpcyBpcyBhIGJpdCBvZiBhIGdyYXkgYXJlYSwgYnV0IHN5emthbGxlciB3aWxsIGZ1enogdGhlc2UgcGF0aHMsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgY29kZSBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTQwOD1zdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTQ5OC1cbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzo0OTk6c3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTUwMC17XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTUxNz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdXNiX3NpNDcxM19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTUxOS1cdC5wcm9iZVx0XHRcdD0gdXNiX3NpNDcxM19wcm9iZSxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzo1MjA6XHQuZGlzY29ubmVjdFx0XHQ9IHVzYl9zaTQ3MTNfZGlzY29ubmVjdCxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYy01MjEtXHQuaWRfdGFibGVcdFx0PSB1c2Jfc2k0NzEzX3VzYl9kZXZpY2VfdGFibGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGAuZGlzY29ubmVjdGAgY2FsbGJhY2ssIGFuZCB0aGUgcXVlc3Rpb24gaXMsIGlzIGl0IHdvcnRoIGZ1enppbmcgdGhpcz8gVGhlIHByb21wdCBpcyBwcmV0dHkgc3BlY2lmaWMsIHNheWluZyBub3QgdG8gZnV6eiBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0aGF0IGFyZSAqb25seSogZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMsIFVTQiBkaXNjb25uZWN0IGhhcHBlbnMgZHVyaW5nIFVTQiBob3QtdW5wbHVnLCBhbmQgd2UgKmtub3cqIHN5emthbGxlciBzdXBwb3J0cyBVU0IgZnV6emluZywgc28gaXQgKmNhbiogdHJpZ2dlciBob3QtdW5wbHVnLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgJiMzNDtQQ0kgaG90LXVucGx1ZywmIzM0OyBub3QgVVNCLgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gdGhlIHByb21wdCBkb2VzIHNheSAmIzM0O3RoYXQgYXJlIGV4ZWN1dGVkICpvbmx5KiBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiYjMzQ7IFN5emthbGxlciBzdXBwb3J0cyBVU0IgaG90LXVucGx1ZyB0aHJvdWdoIGBzeXpfdXNiX2Nvbm5lY3RgIGFuZCBgc3l6X3VzYl9kaXNjb25uZWN0YCwgc28gaXQgKmlzKiByZWFjaGFibGUgYW5kIGZ1enplZC4KCkhvd2V2ZXIsIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHBhdGNoIHJldmVhbHMgbW9yZSEgSXQmIzM5O3MgKmFsc28qIHRvdWNoaW5nIGB1c2Jfc2k0NzEzX3Byb2JlYC4gUmlnaHQsIGxldCBtZSBwdWxsIHVwIHRoZSBwYXRjaCBhZ2Fpbi4gKkNoZWNrcyB0aGUgcGF0Y2gqLiBBaCwgdGhpcyBpcyB0aGUgZXJyb3IgcGF0aCBpbiBgdXNiX3NpNDcxM19wcm9iZWAuIFNpbmNlIGl0IG1vZGlmaWVzICpib3RoKiBgdXNiX3NpNDcxM19wcm9iZWAgYW5kIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgLCBhbmQgZ2l2ZW4gdGhhdCBVU0IgZHJpdmVycyBpbiBnZW5lcmFsICphcmUqIGZ1enplZCBieSBzeXprYWxsZXIsIGl0IG1ha2VzIHRoaXMgcGF0Y2ggYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBPa2F5LCBub3cgbGV0JiMzOTtzIGdvIGZpbmQgdGhvc2UgY29uZmlnIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipTSTQ3MTMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWc6Mjpjb25maWcgVVNCX1NJNDcxM1xuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyBUcmFuc21pdHRlciBzdXBwb3J0IHdpdGggVVNCXCYjMzQ7XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWc6MTc6Y29uZmlnIFBMQVRGT1JNX1NJNDcxM1xuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXIgc3VwcG9ydCB3aXRoIEkyQ1wmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWctMzAtXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnOjMxOmNvbmZpZyBJMkNfU0k0NzEzXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7U2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyBUcmFuc21pdHRlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFVTQl9TSTQ3MTNgOgoKKipEaXZpbmcgaW50byB0aGUgRGVwZW5kZW5jaWVzIG9mIFVTQl9TSTQ3MTMqKgoKT2theSwgc28gYFVTQl9TSTQ3MTNgLi4uIExldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGFyY2hpdGVjdHVyYWwgdW5kZXJwaW5uaW5ncy4gRmlyc3QsIGEgcXVpY2sgZGVwZW5kZW5jeSBhdWRpdCBpcyBpbiBvcmRlci4gV2hhdCBvdGhlciBtb2R1bGVzLCBsaWJyYXJpZXMsIG9yIHN5c3RlbSBjb21wb25lbnRzIGRvZXMgaXQgaW5oZXJlbnRseSByZWx5IHVwb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5PwoKSSYjMzk7bSB0aGlua2luZywgb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZCwgd2UmIzM5O2xsIG5lZWQgYSBzb2xpZCBVU0Igc3RhY2sg4oCTIHByb2JhYmx5IHNvbWV0aGluZyB0aGF0IGNhbiBoYW5kbGUgZGV2aWNlIGVudW1lcmF0aW9uLCBlbmRwb2ludCBtYW5hZ2VtZW50LCBhbmQgZGF0YSB0cmFuc2ZlciBwcm9wZXJseS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFVTQiBwcm90b2NvbHMgdGhlIFNJNDcxMyBkZW1hbmRzLiBJcyBpdCBidWxrLCBpbnRlcnJ1cHQsIGlzb2Nocm9ub3VzPyBUaGF04oCZcyBjcml0aWNhbC4KClRoZW4gdGhlcmUmIzM5O3MgdGhlIFNJNDcxMyBpdHNlbGYuIElzIHRoZXJlIGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIsIGEgc3BlY2lmaWMgZHJpdmVyLCBvciBzb21lIGtpbmQgb2YgcmVnaXN0ZXItbGV2ZWwgYWNjZXNzIGNvZGUgaW52b2x2ZWQ/IFdoZXJl4oCZcyB0aGUgZGF0YXNoZWV0IG9uIHRoYXQgY2hpcD8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0aGF0LCBwcm9udG8uIEkmIzM5O2xsIGhhdmUgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyByZWdpc3RlcnMgdG8gYWN0dWFsbHkgKnVzZSogdGhlIHJhZGlvIGNoaXAuCgpGdXJ0aGVybW9yZSwgYXJlIHRoZXJlIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXM/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgcGFydGljdWxhciBPUyBrZXJuZWwsIGEgc3BlY2lmaWMgbWljcm9jb250cm9sbGVyLCBvciBtYXliZSBldmVuIGEgY2VydGFpbiBkZXZlbG9wbWVudCBib2FyZD8gQ3Jvc3MtcGxhdGZvcm0gcG9ydGFiaWxpdHkgaXMgb2Z0ZW4gYSBjb25jZXJuLCBzbyBJIG5lZWQgdG8gYXNzZXNzIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhpcyBtb2R1bGUgaXMgdG8gaXRzIGVudmlyb25tZW50LiBJZiB0aGlzIG5lZWRzIHRvIHJ1biBvbiBtdWx0aXBsZSBwbGF0Zm9ybXMsIEkgd2lsbCBoYXZlIHRvIHN0YXJ0IHRoaW5raW5nIG9mIGJ1aWxkaW5nIGEgc3lzdGVtIHdpdGggbW9kdWxhcml0eSBpbiBtaW5kLgoKRmluYWxseSwgSSYjMzk7bGwgbmVlZCB0byBkZXRlcm1pbmUgd2hhdCBmdW5jdGlvbmFsaXRpZXMgdGhlIG1vZHVsZSBleHBvc2VzIOKAkyBkb2VzIGl0IG9mZmVyIGFuIEFQSSBmb3IgdHVuaW5nLCBkZW1vZHVsYXRpb24sIFJEUywgb3Igd2hhdCBoYXZlIHlvdT8gVGhhdCBkZXRlcm1pbmVzICppdHMqIGRlcGVuZGVuY3kgZm9vdHByaW50IGFuZCBpdHMgQVBJLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdyB0aHJvdWdoIGFsbCB0aGUgbGV2ZWxzIG9mIGFic3RyYWN0aW9uLiBJJiMzOTtsbCBiZSBhYmxlIHRvIHdvcmsgYmFja3dhcmQgZnJvbSB3aGF0IEkgbmVlZCBpdCB0byBkbyB0byB3aGF0IEkgZXhwZWN0IGl0IHRvIG5lZWQgdG8gZG8sIGluIHRoaXMgY2FzZS4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFVTQl9TSTQ3MTNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXIgc3VwcG9ydCB3aXRoIFVTQlwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IEkyQyBcdTAwMjZcdTAwMjYgUkFESU9fU0k0NzEzXG4gICA1Olx0XHRzZWxlY3QgSTJDX1NJNDcxM1xuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBUaGlzIGlzIGEgZHJpdmVyIGZvciBVU0IgZGV2aWNlcyB3aXRoIHRoZSBTaWxpY29uIExhYnMgU0k0NzEzXG4gICA4Olx0XHQgIGNoaXAuIEN1cnJlbnRseSB0aGVzZSBkZXZpY2VzIGFyZSBrbm93biB0byB3b3JrLlxuICAgOTpcdFx0ICAtIDEwYzQ6ODI0NDogU2lsaWNvbiBMYWJzIEZNIFRyYW5zbWl0dGVyIFVTQiBkZXZpY2UuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gY29ubmVjdCB0aGlzIHR5cGUgb2YgcmFkaW8gdG8geW91clxuICAxMjpcdFx0ICBjb21wdXRlciYjMzk7cyBVU0IgcG9ydC5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE1Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByYWRpby11c2Itc2k0NzEzLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBQTEFURk9STV9TSTQ3MTNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXIgc3VwcG9ydCB3aXRoIEkyQ1wmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBJMkMgXHUwMDI2XHUwMDI2IFJBRElPX1NJNDcxM1xuICAyMDpcdFx0c2VsZWN0IEkyQ19TSTQ3MTNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDcxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6CgoqKkFzc2Vzc21lbnQgb2YgSW50ZXJmYWNpbmcgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgd2l0aCBzZXZlcmFsIGludGVyZmFjZXMsIGFuZCB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbSBoaW5nZXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY29ubmVjdGlvbnMgYW5kIHRoZWlyIGludGVyYWN0aW9ucy4gTXkgZmlyc3QgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIHdob2xlIHRoaW5nIGhhbmdzIG9uIHRocmVlIGtleSBjb21wb25lbnRzOiBgVVNCYCwgYEkyQ2AsIGFuZCBgUkFESU9fU0k0NzEzYC4gVGhhdCYjMzk7cyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaG93IHRoZSBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLiBHaXZlbiB0aGF0IHRoZSBgUkFESU9fU0k0NzEzYCBsaWtlbHkgaXMgYXQgdGhlIGhlYXJ0IG9mIHRoaXMgY2hhbGxlbmdlLCB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZmlyc3QuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJhZGlvIGlzIGNvbW11bmljYXRpbmcgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipSQURJT19TSTQ3MTMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnPTYyPWNvbmZpZyBSQURJT19TSEFSSzJcbi0tXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctNzgtXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWc6Nzk6Y29uZmlnIFJBRElPX1NJNDcxM1xuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnLTgwLVx0dHJpc3RhdGUgXCYjMzQ7U2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyB3aXRoIFJEUyBUcmFuc21pdHRlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MDkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFJBRElPX1NJNDcxMyBEZXBlbmRlbmNpZXMqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzIGBSQURJT19TSTQ3MTNgIHByb2plY3QuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgZ2V0IGEgaGFuZGxlIG9uIGl0cyBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gbWFwIG91dCBldmVyeXRoaW5nIGl0IHJlbGllcyBvbiwgZnJvbSB0aGUgb2J2aW91cyBoYXJkd2FyZSBpbnRlcmZhY2VzIGRvd24gdG8gdGhlIGxvd2VyLWxldmVsIGxpYnJhcmllcy4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBvdmVydmlldzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIGRlcGVuZGVuY3kuIEFyZSB0aGV5IG1hdHVyZT8gQWN0aXZlbHkgbWFpbnRhaW5lZD8gU3ViamVjdCB0byBmcmVxdWVudCBjaGFuZ2VzIHRoYXQgY291bGQgYnJlYWsgY29tcGF0aWJpbGl0eT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBpbiB0aGUgc3lzdGVtIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIHF1aWNrIGNvZGUgaW5zcGVjdGlvbiB0byBpZGVudGlmeSBpbmNsdWRlIGZpbGVzIGFuZCBleHRlcm5hbCBsaWJyYXJ5IGNhbGxzLCBidXQgdGhhdCYjMzk7cyBqdXN0IHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGRvY3VtZW50YXRpb24sIGNoZWNrIHZlcnNpb24gbnVtYmVycywgYW5kIG1heWJlIGV2ZW4gbG9vayBhdCB0aGUgc291cmNlIGNvZGUgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIHRoZW1zZWx2ZXMgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIGdyYXNwIG9uIHRoZSBhcmNoaXRlY3R1cmUuIFRoaXMgYW5hbHlzaXMgd2lsbCBndWlkZSBteSBhcHByb2FjaCB0byBpbnRlZ3JhdGluZyBvciB1cGRhdGluZyB0aGUgcmFkaW8gbW9kdWxlIGFuZCB3aWxsIGluZm9ybSBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlci4gQSBjbGVhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5IGxhbmRzY2FwZSB3aWxsIGJlIGNydWNpYWwgdG8gYXZvaWRpbmcgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA3OTpcdGNvbmZpZyBSQURJT19TSTQ3MTNcbiAgODA6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gd2l0aCBSRFMgVHJhbnNtaXR0ZXIgc3VwcG9ydFwmIzM0O1xuICA4MTpcdFxuICA4MjpcdGNvbmZpZyBSQURJT19TSTQ3NlhcbiAgODM6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFib3JhdG9yaWVzIFNpNDc2eCBJMkMgRk0gUmFkaW9cJiMzNDtcbiAgODQ6XHRcdGRlcGVuZHMgb24gSTJDXG4gIDg1Olx0XHRkZXBlbmRzIG9uIE1GRF9TSTQ3NlhfQ09SRVxuICA4NjpcdFx0ZGVwZW5kcyBvbiBTTkRfU09DXG4gIDg3Olx0XHRzZWxlY3QgU05EX1NPQ19TSTQ3NlhcbiAgODg6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg1NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY3kgTGFuZHNjYXBlIG9mIFJBRElPX1NJNDcxMyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYFJBRElPX1NJNDcxM2AgYW5kIHRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyBzaXR0aW5nIHRoZXJlIHdpdGggbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiBUaGF0IGZlZWxzIGEgYml04oCmdW51c3VhbCwgZXNwZWNpYWxseSBmb3IgYSBkcml2ZXIuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhbmQsIGlmIGl0JiMzOTtzIHRydWUsIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KClNvLCBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSA3OS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZXNlIHNvcnRzIG9mIHNldHRpbmdzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgZ2V0IGRlY2xhcmVkLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBjb2RlIGNvbmZpcm1zIG15IGluaXRpYWwgaHVuY2gsIGFuZCwgaWYgbm90LCB3aGF0IG90aGVyIG1vZHVsZXMgYXJlIHJlcXVpcmVkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBvciBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDcwOlx0XG4gIDcxOlx0XHQgIEluIG9yZGVyIHRvIGNvbnRyb2wgeW91ciByYWRpbyBjYXJkLCB5b3Ugd2lsbCBuZWVkIHRvIHVzZSBwcm9ncmFtc1xuICA3MjpcdFx0ICB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIFZpZGVvIEZvciBMaW51eCBBUEkuICBJbmZvcm1hdGlvbiBvblxuICA3MzpcdFx0ICB0aGlzIEFQSSBhbmQgcG9pbnRlcnMgdG8gXCYjMzQ7djRsXCYjMzQ7IHByb2dyYW1zIG1heSBiZSBmb3VuZCBhdFxuICA3NDpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS9pbmRleC5yc3RcdTAwM2UuXG4gIDc1Olx0XG4gIDc2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuICA3NzpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcmFkaW8tc2hhcmsyLlxuICA3ODpcdFxuICA3OTpcdGNvbmZpZyBSQURJT19TSTQ3MTNcbiAgODA6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gd2l0aCBSRFMgVHJhbnNtaXR0ZXIgc3VwcG9ydFwmIzM0O1xuICA4MTpcdFxuICA4MjpcdGNvbmZpZyBSQURJT19TSTQ3NlhcbiAgODM6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFib3JhdG9yaWVzIFNpNDc2eCBJMkMgRk0gUmFkaW9cJiMzNDtcbiAgODQ6XHRcdGRlcGVuZHMgb24gSTJDXG4gIDg1Olx0XHRkZXBlbmRzIG9uIE1GRF9TSTQ3NlhfQ09SRVxuICA4NjpcdFx0ZGVwZW5kcyBvbiBTTkRfU09DXG4gIDg3Olx0XHRzZWxlY3QgU05EX1NPQ19TSTQ3NlhcbiAgODg6XHRcdGhlbHBcbiAgODk6XHRcdCAgQ2hvb3NlIFkgaGVyZSBpZiB5b3UgaGF2ZSB0aGlzIEZNIHJhZGlvIGNoaXAuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MjkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgUkFESU9fU0k0NzEzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gYFJBRElPX1NJNDcxM2AuLi4gaXNuJiMzOTt0IHRoYXQganVzdCBhIHNpbXBsZSB0cmlzdGF0ZSwgd2l0aCBubyBhcHBhcmVudCBkZXBlbmRlbmNpZXMgYXQgZmlyc3QgZ2xhbmNlPyBUaGF0IHNlZW1zIGluY3JlZGlibHkgc3RyYWlnaHRmb3J3YXJkLiBCdXQgc29tZXRoaW5nIGZlZWxzIG9mZi4gV2h5IGlzIGl0IGxvY2F0ZWQgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYD8gVGhhdCBmaWxlIGlzIHN0cnVjdHVyZWQgd2l0aCBtZW51cyBhbmQgYGlmYCBzdGF0ZW1lbnRzIGFsbCBvdmVyIHRoZSBwbGFjZS4gSXQmIzM5O3MgaGlnaGx5IGxpa2VseSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGNvbmRpdGlvbmFsLCBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBmYWN0b3Igb3IgZW5hYmxpbmcgYSBicm9hZGVyIHJhZGlvIGZlYXR1cmUgc2V0LiBJIG5lZWQgdG8gYmUgc3VyZS4gQWxyaWdodCwgbGV0JiMzOTtzIGdvIGJhY2sgdG8gdGhlIHRvcCBvZiBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYCBhbmQgdHJhY2UgdGhpcyBmcm9tIHRoZSBiZWdpbm5pbmcuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBjb250ZXh0IHRoYXQgZGVmaW5lcyBpdHMgdHJ1ZSBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNdWx0aW1lZGlhIFZpZGVvIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgUkFESU9fQURBUFRFUlNcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1JhZGlvIEFkYXB0ZXJzXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuICAgOTpcdFx0ZGVwZW5kcyBvbiBNRURJQV9SQURJT19TVVBQT1JUXG4gIDEwOlx0XHRkZWZhdWx0IFZJREVPX0RFVlxuICAxMTpcdFx0aGVscFxuICAxMjpcdFx0ICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzZWxlY3RpbmcgQU0vRk0gcmFkaW8gYWRhcHRlcnMuXG4gIDEzOlx0XG4gIDE0Olx0aWYgUkFESU9fQURBUFRFUlNcbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgUkFESU9fTUFYSVJBRElPXG4gIDE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHdWlsbGVtb3QgTUFYSSBSYWRpbyBGTSAyMDAwIHJhZGlvXCYjMzQ7XG4gIDE4Olx0XHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPUE9SVFxuICAxOTpcdFx0c2VsZWN0IFJBRElPX1RFQTU3NVhcbiAgMjA6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRGVwZW5kZW5jeSBDaGFpbiBBbmFseXNpcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbnRlcm5hbCBkZXBlbmRlbmN5IGdyYXBoIGlzIHRlbGxpbmcgbWUgdGhhdCBgUkFESU9fQURBUFRFUlNgIGhpbmdlcyBvbiBib3RoIGBWSURFT19ERVZgIGFuZCBgTUVESUFfUkFESU9fU1VQUE9SVGAuIENsYXNzaWMuIE1ha2VzIHNlbnNlOyByYWRpbyBhZGFwdGVycyBtaWdodCBuZWVkIHZpZGVvLXJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUgYW5kLCBvYnZpb3VzbHksIHRoZSBjb3JlIHJhZGlvIHN1cHBvcnQuCgpHaXZlbiB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHNlY29uZCBwb2ludCAtIGBNRURJQV9SQURJT19TVVBQT1JUYC4gVGhhdCYjMzk7cyB0aGUga2V5IG5vZGUgdG8gaW52ZXN0aWdhdGUuCkxldCYjMzk7cyBmaWd1cmUgb3V0IHdoYXQgaXMgZW50YWlsZWQgd2l0aGluIGBNRURJQV9SQURJT19TVVBQT1JUYC4KSSBuZWVkIHRvIGNoZWNrICppdHMqIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGl0IHByb3ZpZGVzLiBUaGlzIGhhcyB0byBiZSBhZGRyZXNzZWQgYmVmb3JlIEkgbG9vayBhdCBgUkFESU9fQURBUFRFUlNgIGFnYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKk1FRElBX1JBRElPX1NVUFBPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTkwPWNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctOTktXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTAwOmNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTAxLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjUwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWEgU3Vic3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBtZWRpYSBzdWJzeXN0ZW0mIzM5O3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIHBsYWNlIGZvciBhbGwgdGhlIHRvcC1sZXZlbCBmZWF0dXJlIHNlbGVjdGlvbnMsIHJpZ2h0PyBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIHNvbWV0aGluZyBuZWFyIGxpbmUgMTAwLCBzbyBJJiMzOTtsbCBnbyBkaXJlY3RseSB0byB0aGF0IGxvY2F0aW9uLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBnZXQgbWUgY2xvc2UgdG8gdGhlIHNlY3Rpb24gSSYjMzk7bSBtb3N0IGN1cmlvdXMgYWJvdXQuIFRoaXMgc2hvdWxkIGdldCBtZSBzdGFydGVkIG9uIGZpZ3VyaW5nIG91dCB3aGF0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGluIHRoYXQgYXJlYS4gSSYjMzk7bSByZWFkeSB0byBkaWcgaW4gYW5kIGRlY2lwaGVyIHRob3NlIEtjb25maWcgZGlyZWN0aXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0Y29uZmlnIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFxuICA5MTpcdFx0Ym9vbFxuICA5MjpcdFx0cHJvbXB0IFwmIzM0O0RpZ2l0YWwgVFZcJiMzNDsgaWYgTUVESUFfU1VQUE9SVF9GSUxURVJcbiAgOTM6XHRcdGRlZmF1bHQgeSBpZiAhTUVESUFfU1VQUE9SVF9GSUxURVJcbiAgOTQ6XHRcdGhlbHBcbiAgOTU6XHRcdCAgRW5hYmxlIGRpZ2l0YWwgVFYgc3VwcG9ydC5cbiAgOTY6XHRcbiAgOTc6XHRcdCAgU2F5IFkgd2hlbiB5b3UgaGF2ZSBhIGJvYXJkIHdpdGggZGlnaXRhbCBzdXBwb3J0IG9yIGEgYm9hcmQgd2l0aFxuICA5ODpcdFx0ICBoeWJyaWQgZGlnaXRhbCBUViBhbmQgYW5hbG9nIFRWLlxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXG4gMTAxOlx0XHRib29sXG4gMTAyOlx0XHRwcm9tcHQgXCYjMzQ7QU0vRk0gcmFkaW8gcmVjZWl2ZXJzL3RyYW5zbWl0dGVyc1wmIzM0OyBpZiBNRURJQV9TVVBQT1JUX0ZJTFRFUlxuIDEwMzpcdFx0ZGVmYXVsdCB5IGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxuIDEwNDpcdFx0aGVscFxuIDEwNTpcdFx0ICBFbmFibGUgQU0vRk0gcmFkaW8gc3VwcG9ydC5cbiAxMDY6XHRcbiAxMDc6XHRcdCAgQWRkaXRpb25hbCBpbmZvIGFuZCBkb2NzIGFyZSBhdmFpbGFibGUgb24gdGhlIHdlYiBhdFxuIDEwODpcdFx0ICBcdTAwM2NodHRwczovL2xpbnV4dHYub3JnXHUwMDNlXG4gMTA5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIENvbmRpdGlvbmFsIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MuIGBNRURJQV9SQURJT19TVVBQT1JUYCBpcyBleHBsaWNpdGx5IGRlZmluZWQgYXMgYSBib29sZWFuIOKAkyBtYWtlcyBzZW5zZSwgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgZWl0aGVyICppcyogc3VwcG9ydGVkIG9yIGl0ICppc24mIzM5O3QqLiBDbGVhciBlbm91Z2guIE5vdywgd2hhdCBhYm91dCBgVklERU9fREVWYD8gVGhhdCYjMzk7cyB0aGUgb25lIHRoYXQmIzM5O3MgZ290IG1lIHRoaW5raW5nLiBJdCYjMzk7cyBsaWtlbHkgYWxzbyBhIGJvb2xlYW4sIGdpdmVuIHRoZSBjb250ZXh0LCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGFzc3VtcHRpb24uIElzIGl0IHRyZWF0ZWQgdGhlIHNhbWUgd2F5IGluIHRoZSByZWxldmFudCBoZWFkZXJzL3NvdXJjZSBmaWxlcz8gSXMgaXQgZXhwbGljaXRseSBkZWZpbmVkIGFzIGEgYm9vbGVhbiwgb3IgbWlnaHQgaXQgcmVwcmVzZW50IHNvbWV0aGluZyBlbHNlLCBzdWNoIGFzIGEgbnVtZXJpY2FsIHZhbHVlIHJlcHJlc2VudGluZyBhIHNwZWNpZmljIHZpZGVvIGRldmljZSBvciBhIGNhcGFiaWxpdHkgbWFzaz8gSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhhdCYjMzk7cyBiZWluZyB1c2VkLiBUaGUgZGV2aWwgaXMgaW4gdGhlIGRldGFpbHMsIGFuZCBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCBpdHMgaW1wbGljYXRpb25zIGJlZm9yZSBJIG1ha2UgYW55IGRlY2lzaW9ucyBiYXNlZCBvbiBpdC4gV2UgY2FuJiMzOTt0IGFmZm9yZCBhbnkgbGF0ZW50IGJ1Z3MgdGhhdCBhIG1pc2ludGVycHJldGF0aW9uIGNvdWxkIGNhdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKlZJREVPX0RFViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWc9MTU3PW1lbnUgXCYjMzQ7TWVkaWEgY29yZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE1OS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxNjA6Y29uZmlnIFZJREVPX0RFVlxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE2MS1cdHRyaXN0YXRlIFwmIzM0O1ZpZGVvNExpbnV4IGNvcmVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTA4NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgVjRMMjoKCioqSW52ZXN0aWdhdGluZyB0aGUgVmlkZW80TGludXggQ29yZSBpbiBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgY2x1ZSBpcyBgVklERU9fREVWYCBiZWluZyBsaW5rZWQgdG8gdGhlIFZpZGVvNExpbnV4IGNvcmUuIE1ha2VzIHNlbnNlLiBOb3csIG15IG5leHQgc3RlcCBpcyBwcmV0dHkgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IGRlZmluaXRpb24gd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGF0JiMzOTtzIGFsbCBzdHJ1Y3R1cmVkIGluIHRoZSBidWlsZCBzeXN0ZW0uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AgdG8gc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDE2MC4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHJlbGF0ZWQgZGVmaW5pdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9wdGlvbnMgb3IgZnVydGhlciBleHBsYW5hdGlvbnMgdGhlcmUuIFRoaXMgc2hvdWxkIHF1aWNrbHkgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBgVklERU9fREVWYCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTU1Olx0XG4gMTU2Olx0XG4gMTU3Olx0bWVudSBcJiMzNDtNZWRpYSBjb3JlIHN1cHBvcnRcJiMzNDtcbiAxNTg6XHRcdHZpc2libGUgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXG4gMTU5Olx0XG4gMTYwOlx0Y29uZmlnIFZJREVPX0RFVlxuIDE2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlkZW80TGludXggY29yZVwmIzM0O1xuIDE2MjpcdFx0ZGVmYXVsdCBNRURJQV9DQU1FUkFfU1VQUE9SVCB8fCBNRURJQV9BTkFMT0dfVFZfU1VQUE9SVCB8fCBNRURJQV9SQURJT19TVVBQT1JUIHx8IE1FRElBX1NEUl9TVVBQT1JUIHx8IE1FRElBX1BMQVRGT1JNX1NVUFBPUlQgfHwgTUVESUFfVEVTVF9TVVBQT1JUXG4gMTYzOlx0XHRkZXBlbmRzIG9uIChJMkMgfHwgSTJDPW4pXG4gMTY0Olx0XHRzZWxlY3QgUkFUSU9OQUxcbiAxNjU6XHRcdHNlbGVjdCBWSURFT0JVRjJfVjRMMiBpZiBWSURFT0JVRjJfQ09SRVxuIDE2NjpcdFx0aGVscFxuIDE2NzpcdFx0ICBFbmFibGVzIHRoZSBWNEwyIEFQSSwgdXNlZCBieSBjYW1lcmFzLCBhbmFsb2cgVFYsIHZpZGVvIGdyYWJiZXJzLFxuIDE2ODpcdFx0ICByYWRpbyBkZXZpY2VzIGFuZCBieSBzb21lIGlucHV0IGRldmljZXMuXG4gMTY5Olx0XG4gMTcwOlx0Y29uZmlnIE1FRElBX0NPTlRST0xMRVJcbiAxNzE6XHRcdGJvb2wgXCYjMzQ7TWVkaWEgQ29udHJvbGxlciBBUElcJiMzNDtcbiAxNzI6XHRcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUIHx8IE1FRElBX1BMQVRGT1JNX1NVUFBPUlRcbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgRW5hYmxlIHRoZSBtZWRpYSBjb250cm9sbGVyIEFQSSB1c2VkIHRvIHF1ZXJ5IG1lZGlhIGRldmljZXMgaW50ZXJuYWxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY3NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjoKCioqQ29uZGl0aW9uYWwgRGVwZW5kZW5jaWVzIGluIHRoZSBNZWRpYSBTdWJzeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUsIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgYFZJREVPX0RFVmAgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgb2J2aW91c2x5IGltcG9ydGFudCBmb3IgYW55IHZpZGVvLXJlbGF0ZWQgaGFyZHdhcmUgc3VwcG9ydCwgaXMgZGlyZWN0bHkgY29udGluZ2VudCBvbiB0aGUgYE1FRElBX1JBRElPX1NVUFBPUlRgIGZsYWcgYmVpbmcgZW5hYmxlZC4gTWFrZXMgc2Vuc2Ug4oCTIGlmIHlvdSYjMzk7cmUgbm90IHN1cHBvcnRpbmcgcmFkaW8gZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGJyb2FkZXIgbWVkaWEgZnJhbWV3b3JrLCB5b3UmIzM5O3JlIGxlc3MgbGlrZWx5IHRvIG5lZWQgc3BlY2lmaWMgdmlkZW8gZGV2aWNlIGRyaXZlcnMuCgpOb3csIHRoZSBjcnVjaWFsIHBpZWNlIGlzIHRoYXQgYE1FRElBX1NVUFBPUlRgIGlzIHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoYXQmIzM5O3MgdGhlIGdhdGV3YXkuIElmIGBNRURJQV9TVVBQT1JUYCBpcyBkaXNhYmxlZCwgZXZlcnl0aGluZyB1bmRlcm5lYXRoIGl0LCBpbmNsdWRpbmcgYE1FRElBX1JBRElPX1NVUFBPUlRgIGFuZCB0aGVyZWZvcmUgdWx0aW1hdGVseSBgVklERU9fREVWYCwgZ2V0cyBzaHV0IGRvd24uIEl04oCZcyBhIGNsZWFuLCBoaWVyYXJjaGljYWwgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUuIFRoYXTigJlzIGdvb2QsIGtlZXBzIHRoaW5ncyBtYW5hZ2VhYmxlIGFuZCBsb2dpY2FsLiBJIG5lZWQgdG8ga2VlcCB0aGlzIHJlbGF0aW9uc2hpcCBpbiBtaW5kIHdoZW4gSSBhbSB0cm91Ymxlc2hvb3RpbmcgdGhpcyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKk1FRElBX1NVUFBPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTEwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL21lZGlhL2NlYy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL21lZGlhL0tjb25maWctMTEtXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTI6bWVudWNvbmZpZyBNRURJQV9TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNdWx0aW1lZGlhIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWc9MjM9aWYgTUVESUFfU1VQUE9SVFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI0LVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjI1OmNvbmZpZyBNRURJQV9TVVBQT1JUX0ZJTFRFUlxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtGaWx0ZXIgbWVkaWEgZHJpdmVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA4MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZW5hYmxlIGBNRURJQV9TVVBQT1JUYC4gUmlnaHQsIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIGBVU0JfU0k0NzEzYCBjb25maWd1cmF0aW9uLiBJdCBhcHBlYXJzIHRoYXQgYFVTQl9TSTQ3MTNgIGlzIGNvbnRpbmdlbnQgb24gYFVTQmAsIGBJMkNgLCBhbmQgYFJBRElPX1NJNDcxM2AuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIGBSQURJT19TSTQ3MTNgIHJlbGllcyBvbiBgUkFESU9fQURBUFRFUlNgLiBOb3csIGBSQURJT19BREFQVEVSU2AgaW4gdHVybiBkZXBlbmRzIG9uIGJvdGggYFZJREVPX0RFVmAgYW5kIGBNRURJQV9SQURJT19TVVBQT1JUYC4gIEFoYSwgYW5kIGhlcmUgd2UgaGF2ZSBpdCwgYFZJREVPX0RFVmAgaXRzZWxmIGlzIGRlcGVuZGVudCBvbiBgTUVESUFfU1VQUE9SVGAuIFNvLCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgYXJlIGBNRURJQV9TVVBQT1JUYCwgYE1FRElBX1JBRElPX1NVUFBPUlRgLCBgVklERU9fREVWYCwgYFJBRElPX0FEQVBURVJTYCwgYFJBRElPX1NJNDcxM2AsIGFuZCBmaW5hbGx5LCBgVVNCX1NJNDcxM2AuCgpCdXQgd2FpdCBhIG1pbnV0ZS4uLiBMZXQmIzM5O3MgcmV2aWV3IHRoZSB0eXBlcy4gYE1FRElBX1NVUFBPUlRgIGlzIGEgdHJpc3RhdGUsIGFzIGFyZSBgVklERU9fREVWYCwgYFJBRElPX0FEQVBURVJTYCwgYFJBRElPX1NJNDcxM2AsIGFuZCBgVVNCX1NJNDcxM2AuIGBNRURJQV9SQURJT19TVVBQT1JUYCBpcyBqdXN0IGEgYm9vbC4gSXQmIzM5O3MgYSBiaXQgbW9yZSBpbnZvbHZlZCB0aGFuIGp1c3Qgc2V0dGluZyB0aGUgdmFsdWVzLgoKSSBoYWQgaG9wZWQgdGhhdCBlbmFibGluZyBgVVNCX1NJNDcxM2AgYWxvbmUgbWlnaHQgdHJpZ2dlciB0aGUgYnVpbGQgc3lzdGVtIHRvIHNlbGVjdCB0aGUgcmVzdCBhdXRvbWF0aWNhbGx5Li4uIG5vLCB0aGUgYGRlcGVuZHMgb25gIGRlY2xhcmF0aW9ucyBtZWFuIHRoYXQgSSBtdXN0IGV4cGxpY2l0bHkgZW5hYmxlIGVhY2ggb2YgdGhlIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucy4KCk9oISBJJiMzOTt2ZSBtaXNzZWQgc29tZXRoaW5nLiBgTUVESUFfUkFESU9fU1VQUE9SVGAgaXMgc2V0IHRvICYjMzk7eSYjMzk7IGJ5IGRlZmF1bHQgaWYgYCFNRURJQV9TVVBQT1JUX0ZJTFRFUmAuIEkgc2hvdWxkIGNoZWNrIGBNRURJQV9TVVBQT1JUX0ZJTFRFUmAgdG8gZW5zdXJlIEkmIzM5O20gZ2V0dGluZyB0aGUgZGVzaXJlZCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0XHQgIEFkZGl0aW9uYWwgaW5mbyBhbmQgZG9jcyBhcmUgYXZhaWxhYmxlIG9uIHRoZSB3ZWIgYXRcbiAgMjE6XHRcdCAgXHUwMDNjaHR0cHM6Ly9saW51eHR2Lm9yZ1x1MDAzZVxuICAyMjpcdFxuICAyMzpcdGlmIE1FRElBX1NVUFBPUlRcbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcbiAgMjY6XHRcdGJvb2wgXCYjMzQ7RmlsdGVyIG1lZGlhIGRyaXZlcnNcJiMzNDtcbiAgMjc6XHRcdGRlZmF1bHQgeSBpZiAhRVhQRVJUXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgICBDb25maWd1cmluZyB0aGUgbWVkaWEgc3Vic3lzdGVtIGNhbiBiZSBjb21wbGV4LCBhcyB0aGVyZSBhcmVcbiAgMzA6XHRcdCAgIGh1bmRyZWRzIG9mIGRyaXZlcnMgYW5kIG90aGVyIGNvbmZpZyBvcHRpb25zLlxuICAzMTpcdFxuICAzMjpcdFx0ICAgVGhpcyBtZW51IG9mZmVycyBvcHRpb24gdGhhdCB3aWxsIGhlbHAgdGhlIEtlcm5lbCYjMzk7cyBjb25maWdcbiAgMzM6XHRcdCAgIHN5c3RlbSB0byBoaWRlIGRyaXZlcnMgdGhhdCBhcmUgb3V0IG9mIHRoZSBzY29wZSBvZiB0aGVcbiAgMzQ6XHRcdCAgIHVzZXIgbmVlZHMsIGFuZCBkaXNhYmxpbmcgY29yZSBzdXBwb3J0IGZvciB1bnVzZWQgQVBJcy5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgIElmIG5vdCBzZWxlY3RlZCwgYWxsIG5vbi1vcHRpb25hbCBtZWRpYSBjb3JlIGZ1bmN0aW9uYWxpdHlcbiAgMzc6XHRcdCAgIG5lZWRlZCB0byBzdXBwb3J0IG1lZGlhIGRyaXZlcnMgd2lsbCBiZSBlbmFibGVkLiBBbHNvLCBhbGxcbiAgMzg6XHRcdCAgIG1lZGlhIGRldmljZSBkcml2ZXJzIHNob3VsZCBiZSBzaG93bi5cbiAgMzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwODEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCYjMzk7cyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGNvbmZpZ3VyYXRpb24gdGFzay4KCioqQ29uZmlndXJhdGlvbiBEZWNpc2lvbiBCcmVha2Rvd24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGVuYWJsZSB0aGVzZSBmZWF0dXJlcyByZWxhdGVkIHRvIHJhZGlvIHN1cHBvcnQgd2l0aGluIHRoaXMgc3lzdGVtLiBJIHRoaW5rIHdlIG5lZWQgdG8gYWN0aXZhdGUgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBSQURJT19BREFQVEVSU2AsIGBSQURJT19TSTQ3MTNgLCBhbmQgYFVTQl9TSTQ3MTNgLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHN1aXRlIG9mIG9wdGlvbnMgdG8gZ2l2ZSB1cyBhIHNvbGlkIHJhZGlvIGNhcGFiaWxpdHkuCgpXYWl0IGEgc2Vjb25kLCBJIHJlbWVtYmVyIGBSQURJT19TSTQ3MTNgIGxpdmVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ2AgZmlsZSwgc28gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBNb3JlIGltcG9ydGFudGx5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhcm91bmQgdGhpcyBzZXR0aW5nLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGBSQURJT19TSTQ3MTNgIGlzIGluZGVlZCBndWFyZGVkIGJ5IGBpZiBSQURJT19BREFQVEVSU2AuIEkgY2FuJiMzOTt0IGJlIGVuYWJsaW5nIGl0IHVubGVzcyB0aGUgYnJvYWRlciBhZGFwdGVyIHN1cHBvcnQgaXMgYWxzbyBhY3RpdmUsIG90aGVyd2lzZSwgdGhpcyB3aWxsIG5ldmVyIHdvcmsgYXMgaW50ZW5kZWQuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBkZXBlbmRlbmN5IGlzIGVzc2VudGlhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE0Olx0aWYgUkFESU9fQURBUFRFUlNcbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgUkFESU9fTUFYSVJBRElPXG4gIDE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHdWlsbGVtb3QgTUFYSSBSYWRpbyBGTSAyMDAwIHJhZGlvXCYjMzQ7XG4gIDE4Olx0XHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPUE9SVFxuICAxOTpcdFx0c2VsZWN0IFJBRElPX1RFQTU3NVhcbiAgMjA6XHRcdGhlbHBcbiAgMjE6XHRcdCAgQ2hvb3NlIFkgaGVyZSBpZiB5b3UgaGF2ZSB0aGlzIHJhZGlvIGNhcmQuICBUaGlzIGNhcmQgbWF5IGFsc28gYmVcbiAgMjI6XHRcdCAgZm91bmQgYXMgR2VtdGVrIFBDSSBGTS5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSW4gb3JkZXIgdG8gY29udHJvbCB5b3VyIHJhZGlvIGNhcmQsIHlvdSB3aWxsIG5lZWQgdG8gdXNlIHByb2dyYW1zXG4gIDI1Olx0XHQgIHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUgVmlkZW8gRm9yIExpbnV4IEFQSS4gIEluZm9ybWF0aW9uIG9uXG4gIDI2Olx0XHQgIHRoaXMgQVBJIGFuZCBwb2ludGVycyB0byBcJiMzNDt2NGxcJiMzNDsgcHJvZ3JhbXMgbWF5IGJlIGZvdW5kIGF0XG4gIDI3Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL2luZGV4LnJzdFx1MDAzZS5cbiAgMjg6XHRcbiAgMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDMwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByYWRpby1tYXhpcmFkaW8uXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFJBRElPX1NBQTc3MDZIXG4gIDMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTQUE3NzA2SCBDYXIgUmFkaW8gRFNQXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzQwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdCBpcyBkZWZpbml0ZWx5IGdhdGVkIGJ5IGBpZiBSQURJT19BREFQVEVSU2AuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBSQURJT19BREFQVEVSU2AgaXMgZGVmaW5lZC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgc3BlY2lmaWMgY29tcG9uZW50IEkgYW0gaW50ZXJlc3RlZCBpbiwgYFVTQl9TSTQ3MTNgLCBpcyBhbHNvIHByb3RlY3RlZCBieSB0aGlzLiBMZXQgbWUgY2hlY2sgaXRzIEtjb25maWcgZmlsZSwgd2hpY2ggSSBiZWxpZXZlIGlzIGluIGBkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnYC4gQWgsIHdhaXQsIGEgc21hbGwgZGV0YWlsLi4uIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoaXMgZmlsZSBpcyBzb3VyY2VkIGZyb20gYGRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ2AuIFNvLCBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgdHJhaWwgZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlLipzaTQ3MTMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnPTIwND1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnOjIwNTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnLTIwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxMTYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBGaWxlIExvY2F0aW9uIGFuZCBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uLiBUaGUgc291cmNlIGZvciB0aGlzIGlzIGRlZmluaXRlbHkgdGhlIGBkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdgIGZpbGUuIE5vIHF1ZXN0aW9uIGFib3V0IGl0LiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZSBmaWxlIGlzIHByb3Blcmx5IHN0cnVjdHVyZWQsIHBhcnRpY3VsYXJseSB0aGF0IHRoZSBgZW5kaWZgIGlzIHByZXNlbnQgZm9yIHRoZSBjb25kaXRpb25hbCBibG9jaywgYW5kIHRoYXQgdGhlIHByb3BlciBtYWNybyBpcyB1c2VkOiBgUkFESU9fQURBUFRFUlNgLiBUaGF0JiMzOTtzIGNyaXRpY2FsIGZvciB0aGUgcmFkaW8gYWRhcHRlcnMgY29uZmlndXJhdGlvbnMuIEdvdHRhIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGFsbCBidXR0b25lZCB1cCB0byBhdm9pZCBhbnkgZG93bnN0cmVhbSBidWlsZCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuZGlmLipSQURJT19BREFQVEVSUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWc9NDg2PWVuZGlmICMgVjRMX1JBRElPX0lTQV9EUklWRVJTXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctNDg3LVxuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnOjQ4ODplbmRpZiAjIFJBRElPX0FEQVBURVJTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzkxCgkJCQkJCQlvdXRwdXQ6IDU2CgkJCQkJCQl0aG91Z2h0czogNTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYFVTQl9TSTQ3MTNgIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBTeW1ib2wgRm9jdXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFVTQl9TSTQ3MTNgIGRyaXZlciBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyBuZXN0bGVkIHdpdGhpbiB0aGUgYGlmIFJBRElPX0FEQVBURVJTYCBibG9jaywgd2hpY2ggaXMgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIFRvIGVuYWJsZSBpdCwgSSBuZWVkIHRvIGVuc3VyZSBhIGZldyB0aGluZ3MgYXJlIHNldDogYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBSQURJT19BREFQVEVSU2AsIGBSQURJT19TSTQ3MTNgLCBhbmQgb2YgY291cnNlLCBgVVNCX1NJNDcxM2AgaXRzZWxmLgoKTm93LCBgVVNCX1NJNDcxM2AgcmVsaWVzIG9uIGBVU0JgIGFuZCBgSTJDYCwgd2hpY2ggYXJlIHByZXR0eSBzdGFuZGFyZCwgdGhhbmtmdWxseS4gIE5vIG90aGVyIGRlcGVuZGVuY2llcyBzZWVtIHRvIGV4aXN0LCBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZy4gIFNwZWNpZmljYWxseSwgYFVTQl9TSTQ3MTNgIGRlcGVuZHMgb24gYFVTQiAmYW1wOyZhbXA7IEkyQyAmYW1wOyZhbXA7IFJBRElPX1NJNDcxM2AsIGFuZCBgUkFESU9fU0k0NzEzYCBoYXMgbm8gZGVwZW5kZW5jaWVzIG9mIGl0cyBvd24uIGBSQURJT19BREFQVEVSU2AgcmVsaWVzIG9uIGBWSURFT19ERVZgIGFuZCBgTUVESUFfUkFESU9fU1VQUE9SVGAuICBgVklERU9fREVWYCBoYXMgc29tZSBmbGV4aWJpbGl0eSwgZGVwZW5kaW5nIG9uIGBJMkNgIG9yIHRoZSBhYnNlbmNlIG9mIGl0LCB3aGlsZSBgTUVESUFfUkFESU9fU1VQUE9SVGAgaXMgYSBzaW1wbGUgYm9vbGVhbi4gIFNvIHRoZSBjb25maWdzIEkgbmVlZCB0byB2ZXJpZnkgYXJlOiBgTUVESUFfU1VQUE9SVGAsIGBNRURJQV9SQURJT19TVVBQT1JUYCwgYFZJREVPX0RFVmAsIGBSQURJT19BREFQVEVSU2AsIGBSQURJT19TSTQ3MTNgLCBhbmQgYFVTQl9TSTQ3MTNgLgoKVGhlIHBhdGNoIG1vZGlmaWVzIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgYHVzYl9zaTQ3MTNfcHJvYmVgLCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAuIE15IHByaW1hcnkgZm9jdXMgaXMgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBzeW1ib2xzLiBMZXQmIzM5O3Mgc2VlLi4uIEFyZSB0aGVzZSBmdW5jdGlvbnMgc3RhdGljPyBZZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9scywga2VlcGluZyB0aGUgcHJvbXB0IGluc3RydWN0aW9ucyBpbiBtaW5kLgoKQWgsIGB1c2Jfc2k0NzEzX3Byb2JlYCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAgYXJlIGFzc2lnbmVkIHRvIGBzdHJ1Y3QgdXNiX2RyaXZlcmAgY2FsbGJhY2tzLiBUaGV5IGFyZSBub3QgaW5saW5lZCwgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbi4gR29vZC4gIFRoZSBwcm9tcHQgZmF2b3JzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gIFRoZXNlIGFyZSAqc3RhdGljKiwgYnV0IGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IGFyZSAqbm90KiBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gU28sIHllcywgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgc3RhdGljLCB0aGV5JiMzOTtyZSB2YWxpZCBlbnRyeXBvaW50cyBmb3IgdGhlIGRyaXZlci4gVGhlcmVmb3JlLCB0aGVzZSBjYW4gaW5kZWVkIGJlIHRyZWF0ZWQgYXMgZm9jdXMgc3ltYm9scy4gQW5kIHdoYXQgYWJvdXQgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgPyBJdCYjMzk7cyBhc3NpZ25lZCB0byBgdjRsMl9kZXYucmVsZWFzZWAuIFRoYXQmIzM5O3MgYW5vdGhlciBBUEkgZW50cnlwb2ludCwgc28gaXTigJlzIHZhbGlkIHRvby4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYz0xMjA9c3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTEyNy1cbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzoxMjg6c3RhdGljIHZvaWQgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTEyOS17XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTQwOD1zdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTQ2Mi1cdHJhZGlvLVx1MDAzZXZkZXYuY3RybF9oYW5kbGVyID0gc2QtXHUwMDNlY3RybF9oYW5kbGVyO1xuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jOjQ2MzpcdHJhZGlvLVx1MDAzZXY0bDJfZGV2LnJlbGVhc2UgPSB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlO1xuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTQ2NC1cdHN0cnNjcHkocmFkaW8tXHUwMDNldmRldi5uYW1lLCByYWRpby1cdTAwM2V2NGwyX2Rldi5uYW1lLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk4NAoJCQkJCQkJb3V0cHV0OiAxNzcKCQkJCQkJCXRob3VnaHRzOiA5NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgQ29ycmVjdG5lc3MgYW5kIEZvY3VzIFN5bWJvbHMqKgoKT2theSwgc28gdGhlIGFkZHJlc3Mgb2YgdGhlc2UgZnVuY3Rpb25zIGlzIGJlaW5nIHRha2VuLCB3aGljaCBtZWFucyB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZC4gVGhhdCYjMzk7cyBnb29kOyB0aGUgcHJvbXB0IHByZWZlcnMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMZXQmIzM5O3Mgc2VlLi4uIGB1c2Jfc2k0NzEzX3Byb2JlYCwgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAsIGFuZCBgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUuIFRoZXkmIzM5O3JlIGFsbCBzdGF0aWMsIGJ1dCBzaW5jZSB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLCB0aGUgY29tcGlsZXIgaXNuJiMzOTt0IGlubGluaW5nIHRoZW0uIFRoZXkgYXJlIGFsbCBBUEkgZW50cnlwb2ludHMsIGNhbGxiYWNrcywgc28gdGhlc2UgYXJlIGV4Y2VsbGVudCBjYW5kaWRhdGVzIHRvIGZvY3VzIG9uLiBUaGV5IGNoZWNrIG91dC4KCk5vdywgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBXZSBuZWVkIGBNRURJQV9TVVBQT1JUYCwgYE1FRElBX1JBRElPX1NVUFBPUlRgLCBgVklERU9fREVWYCwgYFJBRElPX0FEQVBURVJTYCwgYFJBRElPX1NJNDcxM2AsIGFuZCBgVVNCX1NJNDcxM2AsIHdoaWNoIHNlbGVjdHMgYEkyQ19TSTQ3MTNgIHNvIHdlIGNhbiBsZWF2ZSB0aGF0IGFzIGltcGxpZWQuIFRoYXQgc2hvdWxkIGNvdmVyIGl0LCBnb29kLiBXZSYjMzk7bGwgYmUgc2V0dGluZyB0aG9zZS4KCkxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIGl0c2VsZiBhZ2Fpbi4gSXQgbG9va3MgbGlrZSBhIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGlzc3VlLiBJdCYjMzk7cyBtb3ZpbmcgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFuZCBgaTJjX2RlbF9hZGFwdGVyYCBvdXQgb2YgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgIGFuZCBpbnRvIHRoZSBlcnJvciBwYXRocyBvZiBgdXNiX3NpNDcxM19wcm9iZWAgYW5kIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGlzc3VlIHRoYXQgdGhlIHBhdGNoIGFpbXMgdG8gcmVzb2x2ZS4KClRoaXMgaXMgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBvYmplY3QgbGlmZWN5Y2xlLCB3aGljaCBtYWtlcyBtZSB0aGluayB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhhdCBubyBuZXcgYnVncyAoZG91YmxlIGZyZWVzLCBsZWFrcywgZXRjLikgYXJlIGludHJvZHVjZWQgaW4gdGhvc2UgZXJyb3Igb3IgZGlzY29ubmVjdCBwYXRocy4KSSB3aWxsIGNhbGwgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRURJQV9TVVBQT1JUJiMzNDssCiAgICAmIzM0O01FRElBX1JBRElPX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDssCiAgICAmIzM0O1JBRElPX0FEQVBURVJTJiMzNDssCiAgICAmIzM0O1JBRElPX1NJNDcxMyYjMzQ7LAogICAgJiMzNDtVU0JfU0k0NzEzJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiX3NpNDcxM19wcm9iZSYjMzQ7LAogICAgJiMzNDt1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7dXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZXJyb3IgaGFuZGxpbmcgYW5kIGRpc2Nvbm5lY3QgcGF0aHMgb2YgdGhlIHNpNDcxMyBVU0IgcmFkaW8gZHJpdmVyLCBtb3ZpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uIGFuZCBJMkMgYWRhcHRlciBkZWxldGlvbiBvdXQgb2YgdGhlIHJlbGVhc2UgY2FsbGJhY2suIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gZGV2aWNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgVVNCIGR1bW15X2hjZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtNRURJQV9SQURJT19TVVBQT1JUJiMzNDssCiAgICAmIzM0O1ZJREVPX0RFViYjMzQ7LAogICAgJiMzNDtSQURJT19BREFQVEVSUyYjMzQ7LAogICAgJiMzNDtSQURJT19TSTQ3MTMmIzM0OywKICAgICYjMzQ7VVNCX1NJNDcxMyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYl9zaTQ3MTNfcHJvYmUmIzM0OywKICAgICYjMzQ7dXNiX3NpNDcxM19kaXNjb25uZWN0JiMzNDssCiAgICAmIzM0O3VzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNjb25uZWN0IHBhdGhzIG9mIHRoZSBzaTQ3MTMgVVNCIHJhZGlvIGRyaXZlciwgbW92aW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgSTJDIGFkYXB0ZXIgZGVsZXRpb24gb3V0IG9mIHRoZSByZWxlYXNlIGNhbGxiYWNrLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBkdW1teV9oY2QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgZGV2aWNlIGxpZmVjeWNsZSBpc3N1ZSBieSBtb3ZpbmcgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFuZCBgaTJjX2RlbF9hZGFwdGVyYCBmcm9tIHRoZSB2aWRlbyBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjayB0byB0aGUgVVNCIGRpc2Nvbm5lY3QgZnVuY3Rpb24sIGFuZCBmaXhpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVzZSBjaGFuZ2VzIGZpeCBhIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB0aGF0IG9jY3VycyB3aGVuIHRoZSBkZXZpY2UgaXMgZGlzY29ubmVjdGVkIG9yIGZhaWxzIHRvIHByb2JlLiBTdWNoIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBsaWZlY3ljbGUgYnVncyBhcmUgcGVyZmVjdGx5IGhhbmRsZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjhlZjNmNzlmYWIxMTMzM2JjZjgwMGFkZjlkNWJiYmI2NjBkNjY5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMjM6Mjk6MTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMKaW5kZXggNmU2NzY0MTQzZTIxZi4uZDVkOTdlMzM2MGQ4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYwpAQCAtMTI4LDEwICYjNDM7MTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7CiBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpCiB7CiAJc3RydWN0IHNpNDcxM191c2JfZGV2aWNlICpyYWRpbyA9IHRvX3NpNDcxM19kZXYodjRsMl9kZXYpOwotCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9ICZhbXA7cmFkaW8tJmd0O2kyY19hZGFwdGVyOwogCi0JaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwotCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwogCWtmcmVlKHJhZGlvLSZndDtidWZmZXIpOwogCWtmcmVlKHJhZGlvKTsKIH0KQEAgLTQ4OCw3ICYjNDM7NDg1LDkgQEAgc3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAogCXJldHVybiAwOwogCiBkZWxfYWRhcHRlcjoKJiM0MzsJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwomIzQzOwlnb3RvIGVycl92NGwyOwogZXJyX2kyY2RldjoKIAl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIGVycl92NGwyOgpAQCAtNTA2LDggJiM0Mzs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCW11dGV4X2xvY2soJmFtcDtyYWRpby0mZ3Q7bG9jayk7CiAJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTsKIAl2aWRlb191bnJlZ2lzdGVyX2RldmljZSgmYW1wO3JhZGlvLSZndDt2ZGV2KTsKLQl2NGwyX2RldmljZV9kaXNjb25uZWN0KCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIAltdXRleF91bmxvY2soJmFtcDtyYWRpby0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwomIzQzOwlpMmNfZGVsX2FkYXB0ZXIoJmFtcDtyYWRpby0mZ3Q7aTJjX2FkYXB0ZXIpOwomIzQzOwogCXY0bDJfZGV2aWNlX3B1dCgmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDgKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogNzk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogTGlmZWN5Y2xlIE1hbmFnZW1lbnQgaW4gdGhlIFNJNDcxMyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBzb21lIGtpbmQgb2YgbGlmZWN5Y2xlIGlzc3VlLCBwcm9iYWJseSBhIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0sIGdpdmVuIHRoZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIEkgc2VlIHRoYXQgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgIGlzIGxvc2luZyB0aGUgY2FsbHMgdG8gYGkyY19kZWxfYWRhcHRlcmAgYW5kIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCwgYW5kIHRoZXNlIGNhbGxzIGFyZSBiZWluZyBhZGRlZCB0byBgdXNiX3NpNDcxM19kaXNjb25uZWN0YC4gQWRkaXRpb25hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYHVzYl9zaTQ3MTNfcHJvYmVgIGlzIGJlaW5nIHR3ZWFrZWQuIFRoaXMgcmFpc2VzIGEgcmVkIGZsYWcuIEl0IHNtZWxscyBsaWtlIGEgZml4IGZvciBhIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgYSBtZW1vcnkgbGVhayBzaXR1YXRpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyLgoKTGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvZGUgc25pcHBldHMuIEluIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgdGhvc2UgY2FsbHMgYXJlIGdvbmUgbm93LCB3aGljaCBpcyB0aGUgY3J1eCBvZiB0aGUgY2hhbmdlLiAKCmBgYGMKIHN0YXRpYyB2b2lkIHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2Uoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldikKIHsKIAlzdHJ1Y3Qgc2k0NzEzX3VzYl9kZXZpY2UgKnJhZGlvID0gdG9fc2k0NzEzX2Rldih2NGwyX2Rldik7Ci0Jc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyID0gJmFtcDtyYWRpby0mZ3Q7aTJjX2FkYXB0ZXI7CiAKLQlpMmNfZGVsX2FkYXB0ZXIoYWRhcHRlcik7Ci0JdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJa2ZyZWUocmFkaW8tJmd0O2J1ZmZlcik7CiAJa2ZyZWUocmFkaW8pOwogfQpgYGAKCkluIGB1c2Jfc2k0NzEzX3Byb2JlYCwgSSBzZWUgdGhlIGNhbGxzIGFyZSBhZGRlZCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcuCgpgYGBjCiBkZWxfYWRhcHRlcjoKJiM0MzsJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwomIzQzOwlnb3RvIGVycl92NGwyOwogZXJyX2kyY2RldjoKIAl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIGVycl92NGwyOgpgYGAKCkFuZCBpbiBgdXNiX3NpNDcxM19kaXNjb25uZWN0YDoKCmBgYGMKIHN0YXRpYyB2b2lkIHVzYl9zaTQ3MTNfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKIHsKIAltdXRleF9sb2NrKCZhbXA7cmFkaW8tJmd0O2xvY2spOwogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CiAJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoJmFtcDtyYWRpby0mZ3Q7dmRldik7Ci0JdjRsMl9kZXZpY2VfZGlzY29ubmVjdCgmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7cmFkaW8tJmd0O2xvY2spOwomIzQzOwomIzQzOwl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKJiM0MzsJaTJjX2RlbF9hZGFwdGVyKCZhbXA7cmFkaW8tJmd0O2kyY19hZGFwdGVyKTsKJiM0MzsKIAl2NGwyX2RldmljZV9wdXQoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwogfQpgYGAKClJpZ2h0LCBpdCYjMzk7cyBjbGVhcjogdGhpcyBpcyBhIGxpZmVjeWNsZSBidWcuIExpa2VseSBhIHVzZS1hZnRlci1mcmVlIG9yIGEgY3Jhc2ggZHVyaW5nIGRldmljZSBkaXNjb25uZWN0IG9yIHJlbGVhc2UgYmVjYXVzZSB0aGUgY2xlYW51cCB3YXMgaGFwcGVuaW5nIHRvbyBsYXRlLCBvciBpbiB0aGUgd3JvbmcgcGxhY2UuIE1vdmluZyB0aGUgdW5yZWdpc3RyYXRpb24gYW5kIGFkYXB0ZXIgZGVsZXRpb24gdG8gdGhlIGRpc2Nvbm5lY3QgcGF0aCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBoZXJlLiBLQVNBTiBpcyB0aGUgcGVyZmVjdCB0b29sIGZvciBpZGVudGlmeWluZyB0aGVzZSBraW5kcyBvZiBVQUZzLiBUaGVyZSYjMzk7cyBub3RoaW5nIGluIHRoaXMgcGF0Y2ggdGhhdCBzdWdnZXN0cyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZTsgS01TQU4gaXNuJiMzOTt0IHJlbGV2YW50IGhlcmUuIEkmIzM5O20gbm90IHNlZWluZyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIG9yIHRoYXQgYWZmZWN0cyBjb250cm9sIGZsb3csIHNvIHRoZSByaXNrIGlzbiYjMzk7dCBwcmVzZW50LiBOZWVkc0tNU0FOID0gZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGRldmljZSBsaWZlY3ljbGUgaXNzdWUgYnkgbW92aW5nIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCBhbmQgYGkyY19kZWxfYWRhcHRlcmAgZnJvbSB0aGUgdmlkZW8gZGV2aWNlIHJlbGVhc2UgY2FsbGJhY2sgdG8gdGhlIFVTQiBkaXNjb25uZWN0IGZ1bmN0aW9uLCBhbmQgZml4aW5nIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlc2UgY2hhbmdlcyBmaXggYSB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBidWcgdGhhdCBvY2N1cnMgd2hlbiB0aGUgZGV2aWNlIGlzIGRpc2Nvbm5lY3RlZCBvciBmYWlscyB0byBwcm9iZS4gU3VjaCBtZW1vcnkgY29ycnVwdGlvbiBhbmQgbGlmZWN5Y2xlIGJ1Z3MgYXJlIHBlcmZlY3RseSBoYW5kbGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBkZXZpY2UgbGlmZWN5Y2xlIGlzc3VlIGJ5IG1vdmluZyBgdjRsMl9kZXZpY2VfdW5yZWdpc3RlcmAgYW5kIGBpMmNfZGVsX2FkYXB0ZXJgIGZyb20gdGhlIHZpZGVvIGRldmljZSByZWxlYXNlIGNhbGxiYWNrIHRvIHRoZSBVU0IgZGlzY29ubmVjdCBmdW5jdGlvbiwgYW5kIGZpeGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXNlIGNoYW5nZXMgZml4IGEgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgYnVnIHRoYXQgb2NjdXJzIHdoZW4gdGhlIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgb3IgZmFpbHMgdG8gcHJvYmUuIFN1Y2ggbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGxpZmVjeWNsZSBidWdzIGFyZSBwZXJmZWN0bHkgaGFuZGxlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOToxMS4zNzI5Mzc3OTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA5MzU2NzM4NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfUkFESU9fU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCIsXG4gICAgXCJSQURJT19BREFQVEVSU1wiLFxuICAgIFwiUkFESU9fU0k0NzEzXCIsXG4gICAgXCJVU0JfU0k0NzEzXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3NpNDcxM19wcm9iZVwiLFxuICAgIFwidXNiX3NpNDcxM19kaXNjb25uZWN0XCIsXG4gICAgXCJ1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBkZXZpY2UgbGlmZWN5Y2xlIGlzc3VlIGJ5IG1vdmluZyBgdjRsMl9kZXZpY2VfdW5yZWdpc3RlcmAgYW5kIGBpMmNfZGVsX2FkYXB0ZXJgIGZyb20gdGhlIHZpZGVvIGRldmljZSByZWxlYXNlIGNhbGxiYWNrIHRvIHRoZSBVU0IgZGlzY29ubmVjdCBmdW5jdGlvbiwgYW5kIGZpeGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXNlIGNoYW5nZXMgZml4IGEgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgYnVnIHRoYXQgb2NjdXJzIHdoZW4gdGhlIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgb3IgZmFpbHMgdG8gcHJvYmUuIFN1Y2ggbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGxpZmVjeWNsZSBidWdzIGFyZSBwZXJmZWN0bHkgaGFuZGxlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBhbmQgZGlzY29ubmVjdCBwYXRocyBvZiB0aGUgc2k0NzEzIFVTQiByYWRpbyBkcml2ZXIsIG1vdmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIEkyQyBhZGFwdGVyIGRlbGV0aW9uIG91dCBvZiB0aGUgcmVsZWFzZSBjYWxsYmFjay4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZHVtbXlfaGNkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOToxMS4zNzI5NDM3NzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTYxNTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4ZWYzZjc5ZmFiMTEzMzNiY2Y4MDBhZGY5ZDViYmJiNjYwZDY2OWJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgOCAyMzoyOToxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcXG5pbmRleCA2ZTY3NjQxNDNlMjFmLi5kNWQ5N2UzMzYwZDhmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xcbisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xcbkBAIC0xMjgsMTAgKzEyOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgdXNiX3NpNDcxM19mb3BzID0ge1xcbiBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXFxuIHtcXG4gXFx0c3RydWN0IHNpNDcxM191c2JfZGV2aWNlICpyYWRpbyA9IHRvX3NpNDcxM19kZXYodjRsMl9kZXYpO1xcbi1cXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBcXHUwMDI2cmFkaW8tXFx1MDAzZWkyY19hZGFwdGVyO1xcbiBcXG4tXFx0aTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpO1xcbi1cXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZyYWRpby1cXHUwMDNldjRsMl9kZXYpO1xcbiBcXHRrZnJlZShyYWRpby1cXHUwMDNlYnVmZmVyKTtcXG4gXFx0a2ZyZWUocmFkaW8pO1xcbiB9XFxuQEAgLTQ4OCw3ICs0ODUsOSBAQCBzdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZGVsX2FkYXB0ZXI6XFxuK1xcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXFx1MDAyNnJhZGlvLVxcdTAwM2V2NGwyX2Rldik7XFxuIFxcdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcXG4rXFx0Z290byBlcnJfdjRsMjtcXG4gZXJyX2kyY2RldjpcXG4gXFx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcXHUwMDI2cmFkaW8tXFx1MDAzZXY0bDJfZGV2KTtcXG4gZXJyX3Y0bDI6XFxuQEAgLTUwNiw4ICs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZyYWRpby1cXHUwMDNlbG9jayk7XFxuIFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7XFxuIFxcdHZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZyYWRpby1cXHUwMDNldmRldik7XFxuLVxcdHY0bDJfZGV2aWNlX2Rpc2Nvbm5lY3QoXFx1MDAyNnJhZGlvLVxcdTAwM2V2NGwyX2Rldik7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2cmFkaW8tXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcXHUwMDI2cmFkaW8tXFx1MDAzZXY0bDJfZGV2KTtcXG4rXFx0aTJjX2RlbF9hZGFwdGVyKFxcdTAwMjZyYWRpby1cXHUwMDNlaTJjX2FkYXB0ZXIpO1xcbitcXG4gXFx0djRsMl9kZXZpY2VfcHV0KFxcdTAwMjZyYWRpby1cXHUwMDNldjRsMl9kZXYpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOToxMS43ODUxODM0ODlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4ODM1Njc2MTgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRURJQV9TVVBQT1JUXCIsXG4gICAgXCJNRURJQV9SQURJT19TVVBQT1JUXCIsXG4gICAgXCJWSURFT19ERVZcIixcbiAgICBcIlJBRElPX0FEQVBURVJTXCIsXG4gICAgXCJSQURJT19TSTQ3MTNcIixcbiAgICBcIlVTQl9TSTQ3MTNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1c2Jfc2k0NzEzX3Byb2JlXCIsXG4gICAgXCJ1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RcIixcbiAgICBcInVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZXJyb3IgaGFuZGxpbmcgYW5kIGRpc2Nvbm5lY3QgcGF0aHMgb2YgdGhlIHNpNDcxMyBVU0IgcmFkaW8gZHJpdmVyLCBtb3ZpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uIGFuZCBJMkMgYWRhcHRlciBkZWxldGlvbiBvdXQgb2YgdGhlIHJlbGVhc2UgY2FsbGJhY2suIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gZGV2aWNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgVVNCIGR1bW15X2hjZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjhlZjNmNzlmYWIxMTMzM2JjZjgwMGFkZjlkNWJiYmI2NjBkNjY5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMjM6Mjk6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbmluZGV4IDZlNjc2NDE0M2UyMWYuLmQ1ZDk3ZTMzNjBkOGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xuQEAgLTEyOCwxMCArMTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7XG4gc3RhdGljIHZvaWQgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuIHtcbiBcdHN0cnVjdCBzaTQ3MTNfdXNiX2RldmljZSAqcmFkaW8gPSB0b19zaTQ3MTNfZGV2KHY0bDJfZGV2KTtcbi1cdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9IFx1MDAyNnJhZGlvLVx1MDAzZWkyY19hZGFwdGVyO1xuIFxuLVx0aTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpO1xuLVx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gXHRrZnJlZShyYWRpby1cdTAwM2VidWZmZXIpO1xuIFx0a2ZyZWUocmFkaW8pO1xuIH1cbkBAIC00ODgsNyArNDg1LDkgQEAgc3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIFx0cmV0dXJuIDA7XG4gXG4gZGVsX2FkYXB0ZXI6XG4rXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcbitcdGdvdG8gZXJyX3Y0bDI7XG4gZXJyX2kyY2RldjpcbiBcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIGVycl92NGwyOlxuQEAgLTUwNiw4ICs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZyYWRpby1cdTAwM2Vsb2NrKTtcbiBcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7XG4gXHR2aWRlb191bnJlZ2lzdGVyX2RldmljZShcdTAwMjZyYWRpby1cdTAwM2V2ZGV2KTtcbi1cdHY0bDJfZGV2aWNlX2Rpc2Nvbm5lY3QoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJhZGlvLVx1MDAzZWxvY2spO1xuK1xuK1x0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4rXHRpMmNfZGVsX2FkYXB0ZXIoXHUwMDI2cmFkaW8tXHUwMDNlaTJjX2FkYXB0ZXIpO1xuK1xuIFx0djRsMl9kZXZpY2VfcHV0KFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOToxMS43ODUxODQ1OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDUxOTgyMzQxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgVVNCIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNgLiBJdCdzIHRvdWNoaW5nIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgYHVzYl9zaTQ3MTNfcHJvYmVgLCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAuIFRoZSBrZXkgY2hhbmdlIGlzIG1vdmluZyBgaTJjX2RlbF9hZGFwdGVyYCBhbmQgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFyb3VuZC4gU3BlY2lmaWNhbGx5LCB0aGV5IGFyZSBiZWluZyBtb3ZlZCBmcm9tIHRoZSByZWxlYXNlIGZ1bmN0aW9uIHRvIHRoZSBkaXNjb25uZWN0IGZ1bmN0aW9uIGFuZCBwcm9iZSdzIGVycm9yIGhhbmRsaW5nIHBhdGguXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBJdCdzIGEgVVNCIGRyaXZlciwgYW5kIFVTQiBkcml2ZXJzIGFyZSBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBjYW4gZnV6eiwgZXNwZWNpYWxseSB3aXRoIHRvb2xzIGxpa2UgdGhlIFVTQiBnYWRnZXQvZHVtbXlfaGNkIHNldHVwLiBQcm9iZSwgZGlzY29ubmVjdCwgYW5kIHJlbGVhc2UgZnVuY3Rpb25zPyBTb3VuZHMgbGlrZSBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS5cblxuVGhlbiBJIHJlLXJlYWQgdGhlIHByb21wdCByZWdhcmRpbmcgd2hldGhlciBvciBub3QgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggKm9ubHkqIGNvbnRhaW5zIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBleGVjdXRlZCAqb25seSogZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gSSdtIHRoaW5raW5nLCBpcyBgdXNiX3NpNDcxM19kaXNjb25uZWN0YCBhIHRlYXJkb3duIGNhbGxiYWNrPyBZZXAsIGl0J3MgdGhlIGAuZGlzY29ubmVjdGAgY2FsbGJhY2sgb2YgYHN0cnVjdCB1c2JfZHJpdmVyYC4gV2hhdCBhYm91dCB0aGUgZXJyb3IgcGF0aCBpbiBgdXNiX3NpNDcxM19wcm9iZWA/IEFsc28gYSB0ZWFyZG93biwgc2luY2UgaXQncyBlcnJvciBoYW5kbGluZyBkdXJpbmcgcHJvYmUuIEFuZCBgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZWA/IFRoYXQncyBhIHJlbGVhc2UgY2FsbGJhY2ssIHNvIHllcywgYSB0ZWFyZG93bi5cblxuSG9sZCBvbiBhIHNlY29uZC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgXCJQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kLlwiIEZvciBVU0IsIGAuZGlzY29ubmVjdGAgaXMgZXhlY3V0ZWQgZHVyaW5nIFVTQiBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQuIE5vdywgSSdtIHByZXR0eSBzdXJlIHN5emthbGxlciBkb2VzIGEgbG90IG9mIGZ1enppbmcgb2YgVVNCIHByb2JlIGFuZCBkaXNjb25uZWN0LCB1c2luZyB0aGF0IGR1bW15X2hjZCBzZXR1cC4gSG1tbSwgaXMgaXQgc3RpbGwgd29ydGggZnV6emluZz9cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY2hhbmdlcyB0aGF0IG1pZ2h0IG1ha2UgdGhpcyB3b3J0aHdoaWxlLiBOb3BlLCBpdCdzIGp1c3QgYWJvdXQgdGhlc2UgdGVhcmRvd24gYW5kIGVycm9yIHBhdGhzLiBCdXQsIGlmIGl0J3MgKm9ubHkqIHRlYXJkb3duIGNhbGxiYWNrcywgaXMgaXQgcmVhbGx5IHdvcnRoIGl0PyBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBvbmx5IG1hcmsgYXMgKm5vdCogd29ydGggZnV6emluZyBpZiB0aGV5ICpvbmx5KiBoYXBwZW4gb24gdGhlIGhvdC11bnBsdWcgb3IgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbk9rYXksIGxldCBtZSByZS1yZWFkIHRoYXQgcHJvbXB0IHNlY3Rpb24gYWdhaW4gdG8gbWFrZSBzdXJlIEkgZ2V0IGl0IHJpZ2h0LiBJdCBzYXlzIFwiUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZC5cIiBBbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAgZXhlY3V0ZXMgb24gVVNCIGhvdC11bnBsdWcsIHdoaWNoIHN5emthbGxlciBoZWF2aWx5IGZ1enplZC4gQnV0IHRoZSBwcm9tcHQgZG9lc24ndCBleHBsaWNpdGx5ICpleGNsdWRlKiBVU0IgaG90LXVucGx1Zy4uLiBUaGlzIGlzIGEgYml0IG9mIGEgZ3JheSBhcmVhLCBidXQgc3l6a2FsbGVyIHdpbGwgZnV6eiB0aGVzZSBwYXRocywgc28gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGFnYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDExLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MjIuMzA1MDEwNzcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODY1NDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9zaTQ3MTNfZGlzY29ubmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTQwOD1zdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMtNDk4LVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzo0OTk6c3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYy01MDAte1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTUxNz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdXNiX3NpNDcxM19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMtNTE5LVxcdC5wcm9iZVxcdFxcdFxcdD0gdXNiX3NpNDcxM19wcm9iZSxcXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmM6NTIwOlxcdC5kaXNjb25uZWN0XFx0XFx0PSB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTUyMS1cXHQuaWRfdGFibGVcXHRcXHQ9IHVzYl9zaTQ3MTNfdXNiX2RldmljZV90YWJsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MjIuMzU4ODgxMTA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc1Mjk4NTM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIERlY2lzaW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgLmRpc2Nvbm5lY3RgIGNhbGxiYWNrLCBhbmQgdGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCB3b3J0aCBmdXp6aW5nIHRoaXM/IFRoZSBwcm9tcHQgaXMgcHJldHR5IHNwZWNpZmljLCBzYXlpbmcgbm90IHRvIGZ1enogaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGhhdCBhcmUgKm9ubHkqIGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBVU0IgZGlzY29ubmVjdCBoYXBwZW5zIGR1cmluZyBVU0IgaG90LXVucGx1ZywgYW5kIHdlICprbm93KiBzeXprYWxsZXIgc3VwcG9ydHMgVVNCIGZ1enppbmcsIHNvIGl0ICpjYW4qIHRyaWdnZXIgaG90LXVucGx1Zy4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IFwiUENJIGhvdC11bnBsdWcsXCIgbm90IFVTQi5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gdGhlIHByb21wdCBkb2VzIHNheSBcInRoYXQgYXJlIGV4ZWN1dGVkICpvbmx5KiBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlwiIFN5emthbGxlciBzdXBwb3J0cyBVU0IgaG90LXVucGx1ZyB0aHJvdWdoIGBzeXpfdXNiX2Nvbm5lY3RgIGFuZCBgc3l6X3VzYl9kaXNjb25uZWN0YCwgc28gaXQgKmlzKiByZWFjaGFibGUgYW5kIGZ1enplZC5cblxuSG93ZXZlciwgYSBjbG9zZXIgbG9vayBhdCB0aGUgcGF0Y2ggcmV2ZWFscyBtb3JlISBJdCdzICphbHNvKiB0b3VjaGluZyBgdXNiX3NpNDcxM19wcm9iZWAuIFJpZ2h0LCBsZXQgbWUgcHVsbCB1cCB0aGUgcGF0Y2ggYWdhaW4uICpDaGVja3MgdGhlIHBhdGNoKi4gQWgsIHRoaXMgaXMgdGhlIGVycm9yIHBhdGggaW4gYHVzYl9zaTQ3MTNfcHJvYmVgLiBTaW5jZSBpdCBtb2RpZmllcyAqYm90aCogYHVzYl9zaTQ3MTNfcHJvYmVgIGFuZCBgdXNiX3NpNDcxM19kaXNjb25uZWN0YCwgYW5kIGdpdmVuIHRoYXQgVVNCIGRyaXZlcnMgaW4gZ2VuZXJhbCAqYXJlKiBmdXp6ZWQgYnkgc3l6a2FsbGVyLCBpdCBtYWtlcyB0aGlzIHBhdGNoIGFic29sdXRlbHkgd29ydGggZnV6emluZy4gT2theSwgbm93IGxldCdzIGdvIGZpbmQgdGhvc2UgY29uZmlnIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNDQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MjkuMTExODcwMDE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMjE3NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZy4qU0k0NzEzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWc6Mjpjb25maWcgVVNCX1NJNDcxM1xcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyBUcmFuc21pdHRlciBzdXBwb3J0IHdpdGggVVNCXFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnOjE3OmNvbmZpZyBQTEFURk9STV9TSTQ3MTNcXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYnMgU2k0NzEzIEZNIFJhZGlvIFRyYW5zbWl0dGVyIHN1cHBvcnQgd2l0aCBJMkNcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWc6MzE6Y29uZmlnIEkyQ19TSTQ3MTNcXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYnMgU2k0NzEzIEZNIFJhZGlvIFRyYW5zbWl0dGVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjI5LjE2MzA5NDQzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjE2MDMyNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfU0k0NzEzYDpcblxuKipEaXZpbmcgaW50byB0aGUgRGVwZW5kZW5jaWVzIG9mIFVTQl9TSTQ3MTMqKlxuXG5Pa2F5LCBzbyBgVVNCX1NJNDcxM2AuLi4gTGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhcmNoaXRlY3R1cmFsIHVuZGVycGlubmluZ3MuIEZpcnN0LCBhIHF1aWNrIGRlcGVuZGVuY3kgYXVkaXQgaXMgaW4gb3JkZXIuIFdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBzeXN0ZW0gY29tcG9uZW50cyBkb2VzIGl0IGluaGVyZW50bHkgcmVseSB1cG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT9cblxuSSdtIHRoaW5raW5nLCBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLCB3ZSdsbCBuZWVkIGEgc29saWQgVVNCIHN0YWNrIOKAkyBwcm9iYWJseSBzb21ldGhpbmcgdGhhdCBjYW4gaGFuZGxlIGRldmljZSBlbnVtZXJhdGlvbiwgZW5kcG9pbnQgbWFuYWdlbWVudCwgYW5kIGRhdGEgdHJhbnNmZXIgcHJvcGVybHkuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFVTQiBwcm90b2NvbHMgdGhlIFNJNDcxMyBkZW1hbmRzLiBJcyBpdCBidWxrLCBpbnRlcnJ1cHQsIGlzb2Nocm9ub3VzPyBUaGF04oCZcyBjcml0aWNhbC5cblxuVGhlbiB0aGVyZSdzIHRoZSBTSTQ3MTMgaXRzZWxmLiBJcyB0aGVyZSBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhIHNwZWNpZmljIGRyaXZlciwgb3Igc29tZSBraW5kIG9mIHJlZ2lzdGVyLWxldmVsIGFjY2VzcyBjb2RlIGludm9sdmVkPyBXaGVyZeKAmXMgdGhlIGRhdGFzaGVldCBvbiB0aGF0IGNoaXA/IEknbGwgcHJvYmFibHkgbmVlZCB0aGF0LCBwcm9udG8uIEknbGwgaGF2ZSB0byBzZWUgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlJ3MgcmVnaXN0ZXJzIHRvIGFjdHVhbGx5ICp1c2UqIHRoZSByYWRpbyBjaGlwLlxuXG5GdXJ0aGVybW9yZSwgYXJlIHRoZXJlIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXM/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgcGFydGljdWxhciBPUyBrZXJuZWwsIGEgc3BlY2lmaWMgbWljcm9jb250cm9sbGVyLCBvciBtYXliZSBldmVuIGEgY2VydGFpbiBkZXZlbG9wbWVudCBib2FyZD8gQ3Jvc3MtcGxhdGZvcm0gcG9ydGFiaWxpdHkgaXMgb2Z0ZW4gYSBjb25jZXJuLCBzbyBJIG5lZWQgdG8gYXNzZXNzIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhpcyBtb2R1bGUgaXMgdG8gaXRzIGVudmlyb25tZW50LiBJZiB0aGlzIG5lZWRzIHRvIHJ1biBvbiBtdWx0aXBsZSBwbGF0Zm9ybXMsIEkgd2lsbCBoYXZlIHRvIHN0YXJ0IHRoaW5raW5nIG9mIGJ1aWxkaW5nIGEgc3lzdGVtIHdpdGggbW9kdWxhcml0eSBpbiBtaW5kLlxuXG5GaW5hbGx5LCBJJ2xsIG5lZWQgdG8gZGV0ZXJtaW5lIHdoYXQgZnVuY3Rpb25hbGl0aWVzIHRoZSBtb2R1bGUgZXhwb3NlcyDigJMgZG9lcyBpdCBvZmZlciBhbiBBUEkgZm9yIHR1bmluZywgZGVtb2R1bGF0aW9uLCBSRFMsIG9yIHdoYXQgaGF2ZSB5b3U/IFRoYXQgZGV0ZXJtaW5lcyAqaXRzKiBkZXBlbmRlbmN5IGZvb3RwcmludCBhbmQgaXRzIEFQSS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cgdGhyb3VnaCBhbGwgdGhlIGxldmVscyBvZiBhYnN0cmFjdGlvbi4gSSdsbCBiZSBhYmxlIHRvIHdvcmsgYmFja3dhcmQgZnJvbSB3aGF0IEkgbmVlZCBpdCB0byBkbyB0byB3aGF0IEkgZXhwZWN0IGl0IHRvIG5lZWQgdG8gZG8sIGluIHRoaXMgY2FzZS4gTGV0J3Mgc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NTI0NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjMzLjYyNDY5OTUzMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBVU0JfU0k0NzEzXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyBUcmFuc21pdHRlciBzdXBwb3J0IHdpdGggVVNCXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgSTJDIFxcdTAwMjZcXHUwMDI2IFJBRElPX1NJNDcxM1xcbiAgIDU6XFx0XFx0c2VsZWN0IEkyQ19TSTQ3MTNcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgVGhpcyBpcyBhIGRyaXZlciBmb3IgVVNCIGRldmljZXMgd2l0aCB0aGUgU2lsaWNvbiBMYWJzIFNJNDcxM1xcbiAgIDg6XFx0XFx0ICBjaGlwLiBDdXJyZW50bHkgdGhlc2UgZGV2aWNlcyBhcmUga25vd24gdG8gd29yay5cXG4gICA5OlxcdFxcdCAgLSAxMGM0OjgyNDQ6IFNpbGljb24gTGFicyBGTSBUcmFuc21pdHRlciBVU0IgZGV2aWNlLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gY29ubmVjdCB0aGlzIHR5cGUgb2YgcmFkaW8gdG8geW91clxcbiAgMTI6XFx0XFx0ICBjb21wdXRlcidzIFVTQiBwb3J0LlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMTU6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcmFkaW8tdXNiLXNpNDcxMy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFBMQVRGT1JNX1NJNDcxM1xcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIlNpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXIgc3VwcG9ydCB3aXRoIEkyQ1xcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gSTJDIFxcdTAwMjZcXHUwMDI2IFJBRElPX1NJNDcxM1xcbiAgMjA6XFx0XFx0c2VsZWN0IEkyQ19TSTQ3MTNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MzMuNjI0NzYyMTAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMDMwNjI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OlxuXG4qKkFzc2Vzc21lbnQgb2YgSW50ZXJmYWNpbmcgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHdpdGggc2V2ZXJhbCBpbnRlcmZhY2VzLCBhbmQgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gaGluZ2VzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbnRlcmFjdGlvbnMuIE15IGZpcnN0IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyB3aG9sZSB0aGluZyBoYW5ncyBvbiB0aHJlZSBrZXkgY29tcG9uZW50czogYFVTQmAsIGBJMkNgLCBhbmQgYFJBRElPX1NJNDcxM2AuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaG93IHRoZSBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLiBHaXZlbiB0aGF0IHRoZSBgUkFESU9fU0k0NzEzYCBsaWtlbHkgaXMgYXQgdGhlIGhlYXJ0IG9mIHRoaXMgY2hhbGxlbmdlLCB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBMZXQncyBkaWcgaW50byB0aGF0IGZpcnN0LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJhZGlvIGlzIGNvbW11bmljYXRpbmcgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA3MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MzcuNTQ1MDcwNjc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI0MjQyOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnLipSQURJT19TSTQ3MTNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZz02Mj1jb25maWcgUkFESU9fU0hBUksyXFxuLS1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctNzgtXFxuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnOjc5OmNvbmZpZyBSQURJT19TSTQ3MTNcXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctODAtXFx0dHJpc3RhdGUgXFxcIlNpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gd2l0aCBSRFMgVHJhbnNtaXR0ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MzcuNzk3NTAxMDkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzg1ODE5MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUkFESU9fU0k0NzEzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgUkFESU9fU0k0NzEzYCBwcm9qZWN0LiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGdldCBhIGhhbmRsZSBvbiBpdHMgZGVwZW5kZW5jaWVzLiBJJ20gZ29pbmcgdG8gbWFwIG91dCBldmVyeXRoaW5nIGl0IHJlbGllcyBvbiwgZnJvbSB0aGUgb2J2aW91cyBoYXJkd2FyZSBpbnRlcmZhY2VzIGRvd24gdG8gdGhlIGxvd2VyLWxldmVsIGxpYnJhcmllcy4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIG92ZXJ2aWV3OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggZGVwZW5kZW5jeS4gQXJlIHRoZXkgbWF0dXJlPyBBY3RpdmVseSBtYWludGFpbmVkPyBTdWJqZWN0IHRvIGZyZXF1ZW50IGNoYW5nZXMgdGhhdCBjb3VsZCBicmVhayBjb21wYXRpYmlsaXR5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzIGluIHRoZSBzeXN0ZW0gSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBxdWljayBjb2RlIGluc3BlY3Rpb24gdG8gaWRlbnRpZnkgaW5jbHVkZSBmaWxlcyBhbmQgZXh0ZXJuYWwgbGlicmFyeSBjYWxscywgYnV0IHRoYXQncyBqdXN0IHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGRvY3VtZW50YXRpb24sIGNoZWNrIHZlcnNpb24gbnVtYmVycywgYW5kIG1heWJlIGV2ZW4gbG9vayBhdCB0aGUgc291cmNlIGNvZGUgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIHRoZW1zZWx2ZXMgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIGdyYXNwIG9uIHRoZSBhcmNoaXRlY3R1cmUuIFRoaXMgYW5hbHlzaXMgd2lsbCBndWlkZSBteSBhcHByb2FjaCB0byBpbnRlZ3JhdGluZyBvciB1cGRhdGluZyB0aGUgcmFkaW8gbW9kdWxlIGFuZCB3aWxsIGluZm9ybSBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlci4gQSBjbGVhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5IGxhbmRzY2FwZSB3aWxsIGJlIGNydWNpYWwgdG8gYXZvaWRpbmcgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MDksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOTo0Mi45NzYwODU0NjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc5LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDc5OlxcdGNvbmZpZyBSQURJT19TSTQ3MTNcXG4gIDgwOlxcdFxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYnMgU2k0NzEzIEZNIFJhZGlvIHdpdGggUkRTIFRyYW5zbWl0dGVyIHN1cHBvcnRcXFwiXFxuICA4MTpcXHRcXG4gIDgyOlxcdGNvbmZpZyBSQURJT19TSTQ3NlhcXG4gIDgzOlxcdFxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYm9yYXRvcmllcyBTaTQ3NnggSTJDIEZNIFJhZGlvXFxcIlxcbiAgODQ6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gIDg1OlxcdFxcdGRlcGVuZHMgb24gTUZEX1NJNDc2WF9DT1JFXFxuICA4NjpcXHRcXHRkZXBlbmRzIG9uIFNORF9TT0NcXG4gIDg3OlxcdFxcdHNlbGVjdCBTTkRfU09DX1NJNDc2WFxcbiAgODg6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOTo0Mi45NzYxNTMzODZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0MzkzNjYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgUkFESU9fU0k0NzEzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFJBRElPX1NJNDcxM2AgYW5kIHRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIHNpdHRpbmcgdGhlcmUgd2l0aCBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuIFRoYXQgZmVlbHMgYSBiaXTigKZ1bnVzdWFsLCBlc3BlY2lhbGx5IGZvciBhIGRyaXZlci4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGFuZCwgaWYgaXQncyB0cnVlLCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuXG5cblNvLCBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgNzkuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZXNlIHNvcnRzIG9mIHNldHRpbmdzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgZ2V0IGRlY2xhcmVkLiBMZXQncyBzZWUgaWYgdGhlIGNvZGUgY29uZmlybXMgbXkgaW5pdGlhbCBodW5jaCwgYW5kLCBpZiBub3QsIHdoYXQgb3RoZXIgbW9kdWxlcyBhcmUgcmVxdWlyZWQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IG9idmlvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjQ2LjUyMDA5MzQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MDpcXHRcXG4gIDcxOlxcdFxcdCAgSW4gb3JkZXIgdG8gY29udHJvbCB5b3VyIHJhZGlvIGNhcmQsIHlvdSB3aWxsIG5lZWQgdG8gdXNlIHByb2dyYW1zXFxuICA3MjpcXHRcXHQgIHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUgVmlkZW8gRm9yIExpbnV4IEFQSS4gIEluZm9ybWF0aW9uIG9uXFxuICA3MzpcXHRcXHQgIHRoaXMgQVBJIGFuZCBwb2ludGVycyB0byBcXFwidjRsXFxcIiBwcm9ncmFtcyBtYXkgYmUgZm91bmQgYXRcXG4gIDc0OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL2luZGV4LnJzdFxcdTAwM2UuXFxuICA3NTpcXHRcXG4gIDc2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICA3NzpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByYWRpby1zaGFyazIuXFxuICA3ODpcXHRcXG4gIDc5OlxcdGNvbmZpZyBSQURJT19TSTQ3MTNcXG4gIDgwOlxcdFxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYnMgU2k0NzEzIEZNIFJhZGlvIHdpdGggUkRTIFRyYW5zbWl0dGVyIHN1cHBvcnRcXFwiXFxuICA4MTpcXHRcXG4gIDgyOlxcdGNvbmZpZyBSQURJT19TSTQ3NlhcXG4gIDgzOlxcdFxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYm9yYXRvcmllcyBTaTQ3NnggSTJDIEZNIFJhZGlvXFxcIlxcbiAgODQ6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gIDg1OlxcdFxcdGRlcGVuZHMgb24gTUZEX1NJNDc2WF9DT1JFXFxuICA4NjpcXHRcXHRkZXBlbmRzIG9uIFNORF9TT0NcXG4gIDg3OlxcdFxcdHNlbGVjdCBTTkRfU09DX1NJNDc2WFxcbiAgODg6XFx0XFx0aGVscFxcbiAgODk6XFx0XFx0ICBDaG9vc2UgWSBoZXJlIGlmIHlvdSBoYXZlIHRoaXMgRk0gcmFkaW8gY2hpcC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6NDYuNTIwMTgwODlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNDcxNzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgUkFESU9fU0k0NzEzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBgUkFESU9fU0k0NzEzYC4uLiBpc24ndCB0aGF0IGp1c3QgYSBzaW1wbGUgdHJpc3RhdGUsIHdpdGggbm8gYXBwYXJlbnQgZGVwZW5kZW5jaWVzIGF0IGZpcnN0IGdsYW5jZT8gVGhhdCBzZWVtcyBpbmNyZWRpYmx5IHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IHNvbWV0aGluZyBmZWVscyBvZmYuIFdoeSBpcyBpdCBsb2NhdGVkIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ2A/IFRoYXQgZmlsZSBpcyBzdHJ1Y3R1cmVkIHdpdGggbWVudXMgYW5kIGBpZmAgc3RhdGVtZW50cyBhbGwgb3ZlciB0aGUgcGxhY2UuIEl0J3MgaGlnaGx5IGxpa2VseSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGNvbmRpdGlvbmFsLCBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBmYWN0b3Igb3IgZW5hYmxpbmcgYSBicm9hZGVyIHJhZGlvIGZlYXR1cmUgc2V0LiBJIG5lZWQgdG8gYmUgc3VyZS4gQWxyaWdodCwgbGV0J3MgZ28gYmFjayB0byB0aGUgdG9wIG9mIGBkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdgIGFuZCB0cmFjZSB0aGlzIGZyb20gdGhlIGJlZ2lubmluZy4gR290dGEgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgY29udGV4dCB0aGF0IGRlZmluZXMgaXRzIHRydWUgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjQ5Ljg0NDkwMDkzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTXVsdGltZWRpYSBWaWRlbyBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFJBRElPX0FEQVBURVJTXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmFkaW8gQWRhcHRlcnNcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBNRURJQV9SQURJT19TVVBQT1JUXFxuICAxMDpcXHRcXHRkZWZhdWx0IFZJREVPX0RFVlxcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzZWxlY3RpbmcgQU0vRk0gcmFkaW8gYWRhcHRlcnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGlmIFJBRElPX0FEQVBURVJTXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBSQURJT19NQVhJUkFESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlIFxcXCJHdWlsbGVtb3QgTUFYSSBSYWRpbyBGTSAyMDAwIHJhZGlvXFxcIlxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbiAgMTk6XFx0XFx0c2VsZWN0IFJBRElPX1RFQTU3NVhcXG4gIDIwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6NDkuODQ0OTc2MTM2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjg5MjEyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGVwZW5kZW5jeSBDaGFpbiBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW50ZXJuYWwgZGVwZW5kZW5jeSBncmFwaCBpcyB0ZWxsaW5nIG1lIHRoYXQgYFJBRElPX0FEQVBURVJTYCBoaW5nZXMgb24gYm90aCBgVklERU9fREVWYCBhbmQgYE1FRElBX1JBRElPX1NVUFBPUlRgLiBDbGFzc2ljLiBNYWtlcyBzZW5zZTsgcmFkaW8gYWRhcHRlcnMgbWlnaHQgbmVlZCB2aWRlby1yZWxhdGVkIGluZnJhc3RydWN0dXJlIGFuZCwgb2J2aW91c2x5LCB0aGUgY29yZSByYWRpbyBzdXBwb3J0LlxuXG5HaXZlbiB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHNlY29uZCBwb2ludCAtIGBNRURJQV9SQURJT19TVVBQT1JUYC4gVGhhdCdzIHRoZSBrZXkgbm9kZSB0byBpbnZlc3RpZ2F0ZS5cbkxldCdzIGZpZ3VyZSBvdXQgd2hhdCBpcyBlbnRhaWxlZCB3aXRoaW4gYE1FRElBX1JBRElPX1NVUFBPUlRgLlxuSSBuZWVkIHRvIGNoZWNrICppdHMqIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGl0IHByb3ZpZGVzLiBUaGlzIGhhcyB0byBiZSBhZGRyZXNzZWQgYmVmb3JlIEkgbG9vayBhdCBgUkFESU9fQURBUFRFUlNgIGFnYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTM0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOTo1My4yMTM5MDE0MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzM3MzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZy4qTUVESUFfUkFESU9fU1VQUE9SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTkwPWNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy05OS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTAwOmNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTEwMS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjUzLjI2MjI0NDczMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUxOTgxMjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBTdWJzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgbWVkaWEgc3Vic3lzdGVtJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQncyBzZWUuLi4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL21lZGlhL0tjb25maWdgLiBUaGF0J3MgdGhlIHBsYWNlIGZvciBhbGwgdGhlIHRvcC1sZXZlbCBmZWF0dXJlIHNlbGVjdGlvbnMsIHJpZ2h0PyBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gc29tZXRoaW5nIG5lYXIgbGluZSAxMDAsIHNvIEknbGwgZ28gZGlyZWN0bHkgdG8gdGhhdCBsb2NhdGlvbi4gSG9wZWZ1bGx5LCB0aGlzIHdpbGwgZ2V0IG1lIGNsb3NlIHRvIHRoZSBzZWN0aW9uIEknbSBtb3N0IGN1cmlvdXMgYWJvdXQuIFRoaXMgc2hvdWxkIGdldCBtZSBzdGFydGVkIG9uIGZpZ3VyaW5nIG91dCB3aGF0J3MgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgaW4gdGhhdCBhcmVhLiBJJ20gcmVhZHkgdG8gZGlnIGluIGFuZCBkZWNpcGhlciB0aG9zZSBLY29uZmlnIGRpcmVjdGl2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNTAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOTo1Ni43MTQyMjkyMzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdGNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcXG4gIDkxOlxcdFxcdGJvb2xcXG4gIDkyOlxcdFxcdHByb21wdCBcXFwiRGlnaXRhbCBUVlxcXCIgaWYgTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDkzOlxcdFxcdGRlZmF1bHQgeSBpZiAhTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDk0OlxcdFxcdGhlbHBcXG4gIDk1OlxcdFxcdCAgRW5hYmxlIGRpZ2l0YWwgVFYgc3VwcG9ydC5cXG4gIDk2OlxcdFxcbiAgOTc6XFx0XFx0ICBTYXkgWSB3aGVuIHlvdSBoYXZlIGEgYm9hcmQgd2l0aCBkaWdpdGFsIHN1cHBvcnQgb3IgYSBib2FyZCB3aXRoXFxuICA5ODpcXHRcXHQgIGh5YnJpZCBkaWdpdGFsIFRWIGFuZCBhbmFsb2cgVFYuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXFxuIDEwMTpcXHRcXHRib29sXFxuIDEwMjpcXHRcXHRwcm9tcHQgXFxcIkFNL0ZNIHJhZGlvIHJlY2VpdmVycy90cmFuc21pdHRlcnNcXFwiIGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXFxuIDEwMzpcXHRcXHRkZWZhdWx0IHkgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXFxuIDEwNDpcXHRcXHRoZWxwXFxuIDEwNTpcXHRcXHQgIEVuYWJsZSBBTS9GTSByYWRpbyBzdXBwb3J0LlxcbiAxMDY6XFx0XFxuIDEwNzpcXHRcXHQgIEFkZGl0aW9uYWwgaW5mbyBhbmQgZG9jcyBhcmUgYXZhaWxhYmxlIG9uIHRoZSB3ZWIgYXRcXG4gMTA4OlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vbGludXh0di5vcmdcXHUwMDNlXFxuIDEwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6NTYuNzE0MzI0NjE1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjAzODYzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgQ29uZGl0aW9uYWwgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncy4gYE1FRElBX1JBRElPX1NVUFBPUlRgIGlzIGV4cGxpY2l0bHkgZGVmaW5lZCBhcyBhIGJvb2xlYW4g4oCTIG1ha2VzIHNlbnNlLCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBlaXRoZXIgKmlzKiBzdXBwb3J0ZWQgb3IgaXQgKmlzbid0Ki4gQ2xlYXIgZW5vdWdoLiBOb3csIHdoYXQgYWJvdXQgYFZJREVPX0RFVmA/IFRoYXQncyB0aGUgb25lIHRoYXQncyBnb3QgbWUgdGhpbmtpbmcuIEl0J3MgbGlrZWx5IGFsc28gYSBib29sZWFuLCBnaXZlbiB0aGUgY29udGV4dCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBhc3N1bXB0aW9uLiBJcyBpdCB0cmVhdGVkIHRoZSBzYW1lIHdheSBpbiB0aGUgcmVsZXZhbnQgaGVhZGVycy9zb3VyY2UgZmlsZXM/IElzIGl0IGV4cGxpY2l0bHkgZGVmaW5lZCBhcyBhIGJvb2xlYW4sIG9yIG1pZ2h0IGl0IHJlcHJlc2VudCBzb21ldGhpbmcgZWxzZSwgc3VjaCBhcyBhIG51bWVyaWNhbCB2YWx1ZSByZXByZXNlbnRpbmcgYSBzcGVjaWZpYyB2aWRlbyBkZXZpY2Ugb3IgYSBjYXBhYmlsaXR5IG1hc2s/IEknbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhhdCdzIGJlaW5nIHVzZWQuIFRoZSBkZXZpbCBpcyBpbiB0aGUgZGV0YWlscywgYW5kIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgYmVmb3JlIEkgbWFrZSBhbnkgZGVjaXNpb25zIGJhc2VkIG9uIGl0LiBXZSBjYW4ndCBhZmZvcmQgYW55IGxhdGVudCBidWdzIHRoYXQgYSBtaXNpbnRlcnByZXRhdGlvbiBjb3VsZCBjYXVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MDAuNDM0NzE0NzRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTY0NzQ3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcuKlZJREVPX0RFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTE1Nz1tZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxNjA6Y29uZmlnIFZJREVPX0RFVlxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIlZpZGVvNExpbnV4IGNvcmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjAwLjYwNDM2NzM5M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg1NjgzNDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGRldmVsb3BtZW50IGFuZCBWNEwyOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFZpZGVvNExpbnV4IENvcmUgaW4gS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBpcyBgVklERU9fREVWYCBiZWluZyBsaW5rZWQgdG8gdGhlIFZpZGVvNExpbnV4IGNvcmUuIE1ha2VzIHNlbnNlLiBOb3csIG15IG5leHQgc3RlcCBpcyBwcmV0dHkgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IGRlZmluaXRpb24gd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGF0J3MgYWxsIHN0cnVjdHVyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIHRvIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDE2MC4gVGhhdCdzIHVzdWFsbHkgYSBwcmV0dHkgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgcmVsYXRlZCBkZWZpbml0aW9ucyBvciBkZXBlbmRlbmNpZXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zIG9yIGZ1cnRoZXIgZXhwbGFuYXRpb25zIHRoZXJlLiBUaGlzIHNob3VsZCBxdWlja2x5IGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYFZJREVPX0RFVmAgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA4NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjA0LjA5MDA1MzI3MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTU1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTU1OlxcdFxcbiAxNTY6XFx0XFxuIDE1NzpcXHRtZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuIDE1ODpcXHRcXHR2aXNpYmxlIGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxcbiAxNTk6XFx0XFxuIDE2MDpcXHRjb25maWcgVklERU9fREVWXFxuIDE2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlkZW80TGludXggY29yZVxcXCJcXG4gMTYyOlxcdFxcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfUkFESU9fU1VQUE9SVCB8fCBNRURJQV9TRFJfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUIHx8IE1FRElBX1RFU1RfU1VQUE9SVFxcbiAxNjM6XFx0XFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxcbiAxNjQ6XFx0XFx0c2VsZWN0IFJBVElPTkFMXFxuIDE2NTpcXHRcXHRzZWxlY3QgVklERU9CVUYyX1Y0TDIgaWYgVklERU9CVUYyX0NPUkVcXG4gMTY2OlxcdFxcdGhlbHBcXG4gMTY3OlxcdFxcdCAgRW5hYmxlcyB0aGUgVjRMMiBBUEksIHVzZWQgYnkgY2FtZXJhcywgYW5hbG9nIFRWLCB2aWRlbyBncmFiYmVycyxcXG4gMTY4OlxcdFxcdCAgcmFkaW8gZGV2aWNlcyBhbmQgYnkgc29tZSBpbnB1dCBkZXZpY2VzLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRjb25maWcgTUVESUFfQ09OVFJPTExFUlxcbiAxNzE6XFx0XFx0Ym9vbCBcXFwiTWVkaWEgQ29udHJvbGxlciBBUElcXFwiXFxuIDE3MjpcXHRcXHRkZWZhdWx0IE1FRElBX0NBTUVSQV9TVVBQT1JUIHx8IE1FRElBX0FOQUxPR19UVl9TVVBQT1JUIHx8IE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUXFxuIDE3MzpcXHRcXHRoZWxwXFxuIDE3NDpcXHRcXHQgIEVuYWJsZSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkgdXNlZCB0byBxdWVyeSBtZWRpYSBkZXZpY2VzIGludGVybmFsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjA0LjA5MDEyNTUzMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM1MDQ3OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkNvbmRpdGlvbmFsIERlcGVuZGVuY2llcyBpbiB0aGUgTWVkaWEgU3Vic3lzdGVtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSwgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBgVklERU9fREVWYCBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyBvYnZpb3VzbHkgaW1wb3J0YW50IGZvciBhbnkgdmlkZW8tcmVsYXRlZCBoYXJkd2FyZSBzdXBwb3J0LCBpcyBkaXJlY3RseSBjb250aW5nZW50IG9uIHRoZSBgTUVESUFfUkFESU9fU1VQUE9SVGAgZmxhZyBiZWluZyBlbmFibGVkLiBNYWtlcyBzZW5zZSDigJMgaWYgeW91J3JlIG5vdCBzdXBwb3J0aW5nIHJhZGlvIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBicm9hZGVyIG1lZGlhIGZyYW1ld29yaywgeW91J3JlIGxlc3MgbGlrZWx5IHRvIG5lZWQgc3BlY2lmaWMgdmlkZW8gZGV2aWNlIGRyaXZlcnMuXG5cbk5vdywgdGhlIGNydWNpYWwgcGllY2UgaXMgdGhhdCBgTUVESUFfU1VQUE9SVGAgaXMgdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCdzIHRoZSBnYXRld2F5LiBJZiBgTUVESUFfU1VQUE9SVGAgaXMgZGlzYWJsZWQsIGV2ZXJ5dGhpbmcgdW5kZXJuZWF0aCBpdCwgaW5jbHVkaW5nIGBNRURJQV9SQURJT19TVVBQT1JUYCBhbmQgdGhlcmVmb3JlIHVsdGltYXRlbHkgYFZJREVPX0RFVmAsIGdldHMgc2h1dCBkb3duLiBJdOKAmXMgYSBjbGVhbiwgaGllcmFyY2hpY2FsIGRlcGVuZGVuY3kgc3RydWN0dXJlLiBUaGF04oCZcyBnb29kLCBrZWVwcyB0aGluZ3MgbWFuYWdlYWJsZSBhbmQgbG9naWNhbC4gSSBuZWVkIHRvIGtlZXAgdGhpcyByZWxhdGlvbnNoaXAgaW4gbWluZCB3aGVuIEkgYW0gdHJvdWJsZXNob290aW5nIHRoaXMgYXJlYS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY3NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MDcuNzI1MTc1NjE0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwNzY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcuKk1FRElBX1NVUFBPUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMD1zb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk11bHRpbWVkaWEgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoyNTpjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiRmlsdGVyIG1lZGlhIGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjA3Ljc3MDY5MDU5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDU1NzIyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZW5hYmxlIGBNRURJQV9TVVBQT1JUYC4gUmlnaHQsIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgYFVTQl9TSTQ3MTNgIGNvbmZpZ3VyYXRpb24uIEl0IGFwcGVhcnMgdGhhdCBgVVNCX1NJNDcxM2AgaXMgY29udGluZ2VudCBvbiBgVVNCYCwgYEkyQ2AsIGFuZCBgUkFESU9fU0k0NzEzYC4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgYFJBRElPX1NJNDcxM2AgcmVsaWVzIG9uIGBSQURJT19BREFQVEVSU2AuIE5vdywgYFJBRElPX0FEQVBURVJTYCBpbiB0dXJuIGRlcGVuZHMgb24gYm90aCBgVklERU9fREVWYCBhbmQgYE1FRElBX1JBRElPX1NVUFBPUlRgLiAgQWhhLCBhbmQgaGVyZSB3ZSBoYXZlIGl0LCBgVklERU9fREVWYCBpdHNlbGYgaXMgZGVwZW5kZW50IG9uIGBNRURJQV9TVVBQT1JUYC4gU28sIHB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCAqbXVzdCogYmUgZW5hYmxlZCBhcmUgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBWSURFT19ERVZgLCBgUkFESU9fQURBUFRFUlNgLCBgUkFESU9fU0k0NzEzYCwgYW5kIGZpbmFsbHksIGBVU0JfU0k0NzEzYC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gTGV0J3MgcmV2aWV3IHRoZSB0eXBlcy4gYE1FRElBX1NVUFBPUlRgIGlzIGEgdHJpc3RhdGUsIGFzIGFyZSBgVklERU9fREVWYCwgYFJBRElPX0FEQVBURVJTYCwgYFJBRElPX1NJNDcxM2AsIGFuZCBgVVNCX1NJNDcxM2AuIGBNRURJQV9SQURJT19TVVBQT1JUYCBpcyBqdXN0IGEgYm9vbC4gSXQncyBhIGJpdCBtb3JlIGludm9sdmVkIHRoYW4ganVzdCBzZXR0aW5nIHRoZSB2YWx1ZXMuXG5cbkkgaGFkIGhvcGVkIHRoYXQgZW5hYmxpbmcgYFVTQl9TSTQ3MTNgIGFsb25lIG1pZ2h0IHRyaWdnZXIgdGhlIGJ1aWxkIHN5c3RlbSB0byBzZWxlY3QgdGhlIHJlc3QgYXV0b21hdGljYWxseS4uLiBubywgdGhlIGBkZXBlbmRzIG9uYCBkZWNsYXJhdGlvbnMgbWVhbiB0aGF0IEkgbXVzdCBleHBsaWNpdGx5IGVuYWJsZSBlYWNoIG9mIHRoZSBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMuXG5cbk9oISBJJ3ZlIG1pc3NlZCBzb21ldGhpbmcuIGBNRURJQV9SQURJT19TVVBQT1JUYCBpcyBzZXQgdG8gJ3knIGJ5IGRlZmF1bHQgaWYgYCFNRURJQV9TVVBQT1JUX0ZJTFRFUmAuIEkgc2hvdWxkIGNoZWNrIGBNRURJQV9TVVBQT1JUX0ZJTFRFUmAgdG8gZW5zdXJlIEknbSBnZXR0aW5nIHRoZSBkZXNpcmVkIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA4MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDoxMi43NzYyNjU4MTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdCAgQWRkaXRpb25hbCBpbmZvIGFuZCBkb2NzIGFyZSBhdmFpbGFibGUgb24gdGhlIHdlYiBhdFxcbiAgMjE6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly9saW51eHR2Lm9yZ1xcdTAwM2VcXG4gIDIyOlxcdFxcbiAgMjM6XFx0aWYgTUVESUFfU1VQUE9SVFxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDI2OlxcdFxcdGJvb2wgXFxcIkZpbHRlciBtZWRpYSBkcml2ZXJzXFxcIlxcbiAgMjc6XFx0XFx0ZGVmYXVsdCB5IGlmICFFWFBFUlRcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgIENvbmZpZ3VyaW5nIHRoZSBtZWRpYSBzdWJzeXN0ZW0gY2FuIGJlIGNvbXBsZXgsIGFzIHRoZXJlIGFyZVxcbiAgMzA6XFx0XFx0ICAgaHVuZHJlZHMgb2YgZHJpdmVycyBhbmQgb3RoZXIgY29uZmlnIG9wdGlvbnMuXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgIFRoaXMgbWVudSBvZmZlcnMgb3B0aW9uIHRoYXQgd2lsbCBoZWxwIHRoZSBLZXJuZWwncyBjb25maWdcXG4gIDMzOlxcdFxcdCAgIHN5c3RlbSB0byBoaWRlIGRyaXZlcnMgdGhhdCBhcmUgb3V0IG9mIHRoZSBzY29wZSBvZiB0aGVcXG4gIDM0OlxcdFxcdCAgIHVzZXIgbmVlZHMsIGFuZCBkaXNhYmxpbmcgY29yZSBzdXBwb3J0IGZvciB1bnVzZWQgQVBJcy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICAgSWYgbm90IHNlbGVjdGVkLCBhbGwgbm9uLW9wdGlvbmFsIG1lZGlhIGNvcmUgZnVuY3Rpb25hbGl0eVxcbiAgMzc6XFx0XFx0ICAgbmVlZGVkIHRvIHN1cHBvcnQgbWVkaWEgZHJpdmVycyB3aWxsIGJlIGVuYWJsZWQuIEFsc28sIGFsbFxcbiAgMzg6XFx0XFx0ICAgbWVkaWEgZGV2aWNlIGRyaXZlcnMgc2hvdWxkIGJlIHNob3duLlxcbiAgMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjEyLjc3NjM0NTk4MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODM2MzUyODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGNvbmZpZ3VyYXRpb24gdGFzay5cblxuKipDb25maWd1cmF0aW9uIERlY2lzaW9uIEJyZWFrZG93bioqXG5cbkFscmlnaHQsIGxldCdzIGVuYWJsZSB0aGVzZSBmZWF0dXJlcyByZWxhdGVkIHRvIHJhZGlvIHN1cHBvcnQgd2l0aGluIHRoaXMgc3lzdGVtLiBJIHRoaW5rIHdlIG5lZWQgdG8gYWN0aXZhdGUgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBSQURJT19BREFQVEVSU2AsIGBSQURJT19TSTQ3MTNgLCBhbmQgYFVTQl9TSTQ3MTNgLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHN1aXRlIG9mIG9wdGlvbnMgdG8gZ2l2ZSB1cyBhIHNvbGlkIHJhZGlvIGNhcGFiaWxpdHkuXG5cbldhaXQgYSBzZWNvbmQsIEkgcmVtZW1iZXIgYFJBRElPX1NJNDcxM2AgbGl2ZXMgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYCBmaWxlLCBzbyBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE1vcmUgaW1wb3J0YW50bHksIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGFyb3VuZCB0aGlzIHNldHRpbmcuIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgUkFESU9fU0k0NzEzYCBpcyBpbmRlZWQgZ3VhcmRlZCBieSBgaWYgUkFESU9fQURBUFRFUlNgLiBJIGNhbid0IGJlIGVuYWJsaW5nIGl0IHVubGVzcyB0aGUgYnJvYWRlciBhZGFwdGVyIHN1cHBvcnQgaXMgYWxzbyBhY3RpdmUsIG90aGVyd2lzZSwgdGhpcyB3aWxsIG5ldmVyIHdvcmsgYXMgaW50ZW5kZWQuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBkZXBlbmRlbmN5IGlzIGVzc2VudGlhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwODEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjE2LjYxMjcwMTAzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE0OlxcdGlmIFJBRElPX0FEQVBURVJTXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBSQURJT19NQVhJUkFESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlIFxcXCJHdWlsbGVtb3QgTUFYSSBSYWRpbyBGTSAyMDAwIHJhZGlvXFxcIlxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbiAgMTk6XFx0XFx0c2VsZWN0IFJBRElPX1RFQTU3NVhcXG4gIDIwOlxcdFxcdGhlbHBcXG4gIDIxOlxcdFxcdCAgQ2hvb3NlIFkgaGVyZSBpZiB5b3UgaGF2ZSB0aGlzIHJhZGlvIGNhcmQuICBUaGlzIGNhcmQgbWF5IGFsc28gYmVcXG4gIDIyOlxcdFxcdCAgZm91bmQgYXMgR2VtdGVrIFBDSSBGTS5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBJbiBvcmRlciB0byBjb250cm9sIHlvdXIgcmFkaW8gY2FyZCwgeW91IHdpbGwgbmVlZCB0byB1c2UgcHJvZ3JhbXNcXG4gIDI1OlxcdFxcdCAgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBWaWRlbyBGb3IgTGludXggQVBJLiAgSW5mb3JtYXRpb24gb25cXG4gIDI2OlxcdFxcdCAgdGhpcyBBUEkgYW5kIHBvaW50ZXJzIHRvIFxcXCJ2NGxcXFwiIHByb2dyYW1zIG1heSBiZSBmb3VuZCBhdFxcbiAgMjc6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvaW5kZXgucnN0XFx1MDAzZS5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gIDMwOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHJhZGlvLW1heGlyYWRpby5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIFJBRElPX1NBQTc3MDZIXFxuICAzMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU0FBNzcwNkggQ2FyIFJhZGlvIERTUFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MTYuNjEyODEyMTI0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjI5NTgyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyB0aGUgY29kZSBJJ20gbG9va2luZyBhdCBpcyBkZWZpbml0ZWx5IGdhdGVkIGJ5IGBpZiBSQURJT19BREFQVEVSU2AuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYFJBRElPX0FEQVBURVJTYCBpcyBkZWZpbmVkLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBzcGVjaWZpYyBjb21wb25lbnQgSSBhbSBpbnRlcmVzdGVkIGluLCBgVVNCX1NJNDcxM2AsIGlzIGFsc28gcHJvdGVjdGVkIGJ5IHRoaXMuIExldCBtZSBjaGVjayBpdHMgS2NvbmZpZyBmaWxlLCB3aGljaCBJIGJlbGlldmUgaXMgaW4gYGRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWdgLiBBaCwgd2FpdCwgYSBzbWFsbCBkZXRhaWwuLi4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBmaWxlIGlzIHNvdXJjZWQgZnJvbSBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYC4gU28sIEknbGwgbmVlZCB0byBmb2xsb3cgdGhlIHRyYWlsIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzQwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MTkuNjc1NzcyOTA2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTcyMTMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UuKnNpNDcxM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnPTIwND1zb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzB4L0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnOjIwNTpzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnLTIwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MTkuNzI3NTAwNzAxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDg0MjIzOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIEZpbGUgTG9jYXRpb24gYW5kIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uLiBUaGUgc291cmNlIGZvciB0aGlzIGlzIGRlZmluaXRlbHkgdGhlIGBkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdgIGZpbGUuIE5vIHF1ZXN0aW9uIGFib3V0IGl0LiBJJ3ZlIGdvdCB0byBlbnN1cmUgdGhlIGZpbGUgaXMgcHJvcGVybHkgc3RydWN0dXJlZCwgcGFydGljdWxhcmx5IHRoYXQgdGhlIGBlbmRpZmAgaXMgcHJlc2VudCBmb3IgdGhlIGNvbmRpdGlvbmFsIGJsb2NrLCBhbmQgdGhhdCB0aGUgcHJvcGVyIG1hY3JvIGlzIHVzZWQ6IGBSQURJT19BREFQVEVSU2AuIFRoYXQncyBjcml0aWNhbCBmb3IgdGhlIHJhZGlvIGFkYXB0ZXJzIGNvbmZpZ3VyYXRpb25zLiBHb3R0YSBtYWtlIHN1cmUgdGhhdCdzIGFsbCBidXR0b25lZCB1cCB0byBhdm9pZCBhbnkgZG93bnN0cmVhbSBidWlsZCBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTE2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MjIuNzc1OTI1NDA2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM3Mzk3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbmRpZi4qUkFESU9fQURBUFRFUlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZz00ODY9ZW5kaWYgIyBWNExfUkFESU9fSVNBX0RSSVZFUlNcXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctNDg3LVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZzo0ODg6ZW5kaWYgIyBSQURJT19BREFQVEVSU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDoyMi44MjczMDk0MTFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzExNzIyMzU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBVU0JfU0k0NzEzYCBEcml2ZXIgQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9sIEZvY3VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVVNCX1NJNDcxM2AgZHJpdmVyIGFuZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEl0J3MgbmVzdGxlZCB3aXRoaW4gdGhlIGBpZiBSQURJT19BREFQVEVSU2AgYmxvY2ssIHdoaWNoIGlzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBUbyBlbmFibGUgaXQsIEkgbmVlZCB0byBlbnN1cmUgYSBmZXcgdGhpbmdzIGFyZSBzZXQ6IGBNRURJQV9TVVBQT1JUYCwgYE1FRElBX1JBRElPX1NVUFBPUlRgLCBgUkFESU9fQURBUFRFUlNgLCBgUkFESU9fU0k0NzEzYCwgYW5kIG9mIGNvdXJzZSwgYFVTQl9TSTQ3MTNgIGl0c2VsZi5cblxuTm93LCBgVVNCX1NJNDcxM2AgcmVsaWVzIG9uIGBVU0JgIGFuZCBgSTJDYCwgd2hpY2ggYXJlIHByZXR0eSBzdGFuZGFyZCwgdGhhbmtmdWxseS4gIE5vIG90aGVyIGRlcGVuZGVuY2llcyBzZWVtIHRvIGV4aXN0LCBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZy4gIFNwZWNpZmljYWxseSwgYFVTQl9TSTQ3MTNgIGRlcGVuZHMgb24gYFVTQiBcdTAwMjZcdTAwMjYgSTJDIFx1MDAyNlx1MDAyNiBSQURJT19TSTQ3MTNgLCBhbmQgYFJBRElPX1NJNDcxM2AgaGFzIG5vIGRlcGVuZGVuY2llcyBvZiBpdHMgb3duLiBgUkFESU9fQURBUFRFUlNgIHJlbGllcyBvbiBgVklERU9fREVWYCBhbmQgYE1FRElBX1JBRElPX1NVUFBPUlRgLiAgYFZJREVPX0RFVmAgaGFzIHNvbWUgZmxleGliaWxpdHksIGRlcGVuZGluZyBvbiBgSTJDYCBvciB0aGUgYWJzZW5jZSBvZiBpdCwgd2hpbGUgYE1FRElBX1JBRElPX1NVUFBPUlRgIGlzIGEgc2ltcGxlIGJvb2xlYW4uICBTbyB0aGUgY29uZmlncyBJIG5lZWQgdG8gdmVyaWZ5IGFyZTogYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBWSURFT19ERVZgLCBgUkFESU9fQURBUFRFUlNgLCBgUkFESU9fU0k0NzEzYCwgYW5kIGBVU0JfU0k0NzEzYC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgYHVzYl9zaTQ3MTNfcHJvYmVgLCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAuIE15IHByaW1hcnkgZm9jdXMgaXMgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBzeW1ib2xzLiBMZXQncyBzZWUuLi4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBzdGF0aWM/IFllcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgYXJlIHBvdGVudGlhbCBmb2N1cyBzeW1ib2xzLCBrZWVwaW5nIHRoZSBwcm9tcHQgaW5zdHJ1Y3Rpb25zIGluIG1pbmQuXG5cbkFoLCBgdXNiX3NpNDcxM19wcm9iZWAgYW5kIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgIGFyZSBhc3NpZ25lZCB0byBgc3RydWN0IHVzYl9kcml2ZXJgIGNhbGxiYWNrcy4gVGhleSBhcmUgbm90IGlubGluZWQsIHNpbmNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4uIEdvb2QuICBUaGUgcHJvbXB0IGZhdm9ycyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuICBUaGVzZSBhcmUgKnN0YXRpYyosIGJ1dCBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycywgdGhleSBhcmUgKm5vdCogaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIFNvLCB5ZXMsIGV2ZW4gdGhvdWdoIHRoZXkncmUgc3RhdGljLCB0aGV5J3JlIHZhbGlkIGVudHJ5cG9pbnRzIGZvciB0aGUgZHJpdmVyLiBUaGVyZWZvcmUsIHRoZXNlIGNhbiBpbmRlZWQgYmUgdHJlYXRlZCBhcyBmb2N1cyBzeW1ib2xzLiBBbmQgd2hhdCBhYm91dCBgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZWA/IEl0J3MgYXNzaWduZWQgdG8gYHY0bDJfZGV2LnJlbGVhc2VgLiBUaGF0J3MgYW5vdGhlciBBUEkgZW50cnlwb2ludCwgc28gaXTigJlzIHZhbGlkIHRvby4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM5MSwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDoyOS45NDQ1MzY3NjJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzOTE4MDYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmM9MTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgdXNiX3NpNDcxM19mb3BzID0ge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTEyNy1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmM6MTI4OnN0YXRpYyB2b2lkIHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2Uoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldilcXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMtMTI5LXtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYz00MDg9c3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTQ2Mi1cXHRyYWRpby1cXHUwMDNldmRldi5jdHJsX2hhbmRsZXIgPSBzZC1cXHUwMDNlY3RybF9oYW5kbGVyO1xcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzo0NjM6XFx0cmFkaW8tXFx1MDAzZXY0bDJfZGV2LnJlbGVhc2UgPSB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlO1xcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYy00NjQtXFx0c3Ryc2NweShyYWRpby1cXHUwMDNldmRldi5uYW1lLCByYWRpby1cXHUwMDNldjRsMl9kZXYubmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MzAuMjgzNzIyNTA3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NzkxNzIzODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgQ29ycmVjdG5lc3MgYW5kIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyB0aGUgYWRkcmVzcyBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgYmVpbmcgdGFrZW4sIHdoaWNoIG1lYW5zIHRoZXkgYXJlbid0IGlubGluZWQuIFRoYXQncyBnb29kOyB0aGUgcHJvbXB0IHByZWZlcnMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMZXQncyBzZWUuLi4gYHVzYl9zaTQ3MTNfcHJvYmVgLCBgdXNiX3NpNDcxM19kaXNjb25uZWN0YCwgYW5kIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gVGhleSdyZSBhbGwgc3RhdGljLCBidXQgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbiwgdGhlIGNvbXBpbGVyIGlzbid0IGlubGluaW5nIHRoZW0uIFRoZXkgYXJlIGFsbCBBUEkgZW50cnlwb2ludHMsIGNhbGxiYWNrcywgc28gdGhlc2UgYXJlIGV4Y2VsbGVudCBjYW5kaWRhdGVzIHRvIGZvY3VzIG9uLiBUaGV5IGNoZWNrIG91dC5cblxuTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIFdlIG5lZWQgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBWSURFT19ERVZgLCBgUkFESU9fQURBUFRFUlNgLCBgUkFESU9fU0k0NzEzYCwgYW5kIGBVU0JfU0k0NzEzYCwgd2hpY2ggc2VsZWN0cyBgSTJDX1NJNDcxM2Agc28gd2UgY2FuIGxlYXZlIHRoYXQgYXMgaW1wbGllZC4gVGhhdCBzaG91bGQgY292ZXIgaXQsIGdvb2QuIFdlJ2xsIGJlIHNldHRpbmcgdGhvc2UuXG5cbkxldCdzIHJldmlldyB0aGUgcGF0Y2ggaXRzZWxmIGFnYWluLiBJdCBsb29rcyBsaWtlIGEgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgaXNzdWUuIEl0J3MgbW92aW5nIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCBhbmQgYGkyY19kZWxfYWRhcHRlcmAgb3V0IG9mIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCBhbmQgaW50byB0aGUgZXJyb3IgcGF0aHMgb2YgYHVzYl9zaTQ3MTNfcHJvYmVgIGFuZCBgdXNiX3NpNDcxM19kaXNjb25uZWN0YC4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZSB0aGF0IHRoZSBwYXRjaCBhaW1zIHRvIHJlc29sdmUuXG5cblRoaXMgaXMgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIG9iamVjdCBsaWZlY3ljbGUsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGF0IG5vIG5ldyBidWdzIChkb3VibGUgZnJlZXMsIGxlYWtzLCBldGMuKSBhcmUgaW50cm9kdWNlZCBpbiB0aG9zZSBlcnJvciBvciBkaXNjb25uZWN0IHBhdGhzLlxuSSB3aWxsIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTg0LCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDo0MC4wNjI4OTgxMzZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTA0NDQzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfUkFESU9fU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCIsXG4gICAgXCJSQURJT19BREFQVEVSU1wiLFxuICAgIFwiUkFESU9fU0k0NzEzXCIsXG4gICAgXCJVU0JfU0k0NzEzXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3NpNDcxM19wcm9iZVwiLFxuICAgIFwidXNiX3NpNDcxM19kaXNjb25uZWN0XCIsXG4gICAgXCJ1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNjb25uZWN0IHBhdGhzIG9mIHRoZSBzaTQ3MTMgVVNCIHJhZGlvIGRyaXZlciwgbW92aW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgSTJDIGFkYXB0ZXIgZGVsZXRpb24gb3V0IG9mIHRoZSByZWxlYXNlIGNhbGxiYWNrLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBkdW1teV9oY2QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfUkFESU9fU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCIsXG4gICAgXCJSQURJT19BREFQVEVSU1wiLFxuICAgIFwiUkFESU9fU0k0NzEzXCIsXG4gICAgXCJVU0JfU0k0NzEzXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3NpNDcxM19wcm9iZVwiLFxuICAgIFwidXNiX3NpNDcxM19kaXNjb25uZWN0XCIsXG4gICAgXCJ1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNjb25uZWN0IHBhdGhzIG9mIHRoZSBzaTQ3MTMgVVNCIHJhZGlvIGRyaXZlciwgbW92aW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgSTJDIGFkYXB0ZXIgZGVsZXRpb24gb3V0IG9mIHRoZSByZWxlYXNlIGNhbGxiYWNrLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBkdW1teV9oY2QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjQwLjE0MTk0OTMwN1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNjY2NTI5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDo0MC4xNDI0OTg2MThaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIxNjYxMDAxMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGRldmljZSBsaWZlY3ljbGUgaXNzdWUgYnkgbW92aW5nIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCBhbmQgYGkyY19kZWxfYWRhcHRlcmAgZnJvbSB0aGUgdmlkZW8gZGV2aWNlIHJlbGVhc2UgY2FsbGJhY2sgdG8gdGhlIFVTQiBkaXNjb25uZWN0IGZ1bmN0aW9uLCBhbmQgZml4aW5nIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlc2UgY2hhbmdlcyBmaXggYSB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBidWcgdGhhdCBvY2N1cnMgd2hlbiB0aGUgZGV2aWNlIGlzIGRpc2Nvbm5lY3RlZCBvciBmYWlscyB0byBwcm9iZS4gU3VjaCBtZW1vcnkgY29ycnVwdGlvbiBhbmQgbGlmZWN5Y2xlIGJ1Z3MgYXJlIHBlcmZlY3RseSBoYW5kbGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjhlZjNmNzlmYWIxMTMzM2JjZjgwMGFkZjlkNWJiYmI2NjBkNjY5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMjM6Mjk6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbmluZGV4IDZlNjc2NDE0M2UyMWYuLmQ1ZDk3ZTMzNjBkOGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xuQEAgLTEyOCwxMCArMTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7XG4gc3RhdGljIHZvaWQgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuIHtcbiBcdHN0cnVjdCBzaTQ3MTNfdXNiX2RldmljZSAqcmFkaW8gPSB0b19zaTQ3MTNfZGV2KHY0bDJfZGV2KTtcbi1cdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9IFx1MDAyNnJhZGlvLVx1MDAzZWkyY19hZGFwdGVyO1xuIFxuLVx0aTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpO1xuLVx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gXHRrZnJlZShyYWRpby1cdTAwM2VidWZmZXIpO1xuIFx0a2ZyZWUocmFkaW8pO1xuIH1cbkBAIC00ODgsNyArNDg1LDkgQEAgc3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIFx0cmV0dXJuIDA7XG4gXG4gZGVsX2FkYXB0ZXI6XG4rXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcbitcdGdvdG8gZXJyX3Y0bDI7XG4gZXJyX2kyY2RldjpcbiBcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIGVycl92NGwyOlxuQEAgLTUwNiw4ICs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZyYWRpby1cdTAwM2Vsb2NrKTtcbiBcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7XG4gXHR2aWRlb191bnJlZ2lzdGVyX2RldmljZShcdTAwMjZyYWRpby1cdTAwM2V2ZGV2KTtcbi1cdHY0bDJfZGV2aWNlX2Rpc2Nvbm5lY3QoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJhZGlvLVx1MDAzZWxvY2spO1xuK1xuK1x0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4rXHRpMmNfZGVsX2FkYXB0ZXIoXHUwMDI2cmFkaW8tXHUwMDNlaTJjX2FkYXB0ZXIpO1xuK1xuIFx0djRsMl9kZXZpY2VfcHV0KFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDo0MC4xNDI0OTk5MThaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxNjYwNzU2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBMaWZlY3ljbGUgTWFuYWdlbWVudCBpbiB0aGUgU0k0NzEzIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCdzIGRlYWxpbmcgd2l0aCBzb21lIGtpbmQgb2YgbGlmZWN5Y2xlIGlzc3VlLCBwcm9iYWJseSBhIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0sIGdpdmVuIHRoZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIEkgc2VlIHRoYXQgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgIGlzIGxvc2luZyB0aGUgY2FsbHMgdG8gYGkyY19kZWxfYWRhcHRlcmAgYW5kIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCwgYW5kIHRoZXNlIGNhbGxzIGFyZSBiZWluZyBhZGRlZCB0byBgdXNiX3NpNDcxM19kaXNjb25uZWN0YC4gQWRkaXRpb25hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYHVzYl9zaTQ3MTNfcHJvYmVgIGlzIGJlaW5nIHR3ZWFrZWQuIFRoaXMgcmFpc2VzIGEgcmVkIGZsYWcuIEl0IHNtZWxscyBsaWtlIGEgZml4IGZvciBhIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgYSBtZW1vcnkgbGVhayBzaXR1YXRpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyLlxuXG5MZXQncyBsb29rIGF0IHRoZSBjb2RlIHNuaXBwZXRzLiBJbiBgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZWAsIHRob3NlIGNhbGxzIGFyZSBnb25lIG5vdywgd2hpY2ggaXMgdGhlIGNydXggb2YgdGhlIGNoYW5nZS4gXG5cbmBgYGNcbiBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXG4ge1xuIFx0c3RydWN0IHNpNDcxM191c2JfZGV2aWNlICpyYWRpbyA9IHRvX3NpNDcxM19kZXYodjRsMl9kZXYpO1xuLVx0c3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyID0gXHUwMDI2cmFkaW8tXHUwMDNlaTJjX2FkYXB0ZXI7XG4gXG4tXHRpMmNfZGVsX2FkYXB0ZXIoYWRhcHRlcik7XG4tXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdGtmcmVlKHJhZGlvLVx1MDAzZWJ1ZmZlcik7XG4gXHRrZnJlZShyYWRpbyk7XG4gfVxuYGBgXG5cbkluIGB1c2Jfc2k0NzEzX3Byb2JlYCwgSSBzZWUgdGhlIGNhbGxzIGFyZSBhZGRlZCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcuXG5cbmBgYGNcbiBkZWxfYWRhcHRlcjpcbitcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIFx0aTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpO1xuK1x0Z290byBlcnJfdjRsMjtcbiBlcnJfaTJjZGV2OlxuIFx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gZXJyX3Y0bDI6XG5gYGBcblxuQW5kIGluIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgOlxuXG5gYGBjXG4gc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIHtcbiBcdG11dGV4X2xvY2soXHUwMDI2cmFkaW8tXHUwMDNlbG9jayk7XG4gXHR1c2Jfc2V0X2ludGZkYXRhKGludGYsIE5VTEwpO1xuIFx0dmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2cmFkaW8tXHUwMDNldmRldik7XG4tXHR2NGwyX2RldmljZV9kaXNjb25uZWN0KFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZyYWRpby1cdTAwM2Vsb2NrKTtcbitcbitcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuK1x0aTJjX2RlbF9hZGFwdGVyKFx1MDAyNnJhZGlvLVx1MDAzZWkyY19hZGFwdGVyKTtcbitcbiBcdHY0bDJfZGV2aWNlX3B1dChcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gfVxuYGBgXG5cblJpZ2h0LCBpdCdzIGNsZWFyOiB0aGlzIGlzIGEgbGlmZWN5Y2xlIGJ1Zy4gTGlrZWx5IGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBjcmFzaCBkdXJpbmcgZGV2aWNlIGRpc2Nvbm5lY3Qgb3IgcmVsZWFzZSBiZWNhdXNlIHRoZSBjbGVhbnVwIHdhcyBoYXBwZW5pbmcgdG9vIGxhdGUsIG9yIGluIHRoZSB3cm9uZyBwbGFjZS4gTW92aW5nIHRoZSB1bnJlZ2lzdHJhdGlvbiBhbmQgYWRhcHRlciBkZWxldGlvbiB0byB0aGUgZGlzY29ubmVjdCBwYXRoIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUuIEtBU0FOIGlzIHRoZSBwZXJmZWN0IHRvb2wgZm9yIGlkZW50aWZ5aW5nIHRoZXNlIGtpbmRzIG9mIFVBRnMuIFRoZXJlJ3Mgbm90aGluZyBpbiB0aGlzIHBhdGNoIHRoYXQgc3VnZ2VzdHMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWU7IEtNU0FOIGlzbid0IHJlbGV2YW50IGhlcmUuIEknbSBub3Qgc2VlaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIHRvIHVzZXJzcGFjZSwgb3IgdGhhdCBhZmZlY3RzIGNvbnRyb2wgZmxvdywgc28gdGhlIHJpc2sgaXNuJ3QgcHJlc2VudC4gTmVlZHNLTVNBTiA9IGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA4LCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjUyLjMwODU3ODUwOFoiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgZGV2aWNlIGxpZmVjeWNsZSBpc3N1ZSBieSBtb3ZpbmcgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFuZCBgaTJjX2RlbF9hZGFwdGVyYCBmcm9tIHRoZSB2aWRlbyBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjayB0byB0aGUgVVNCIGRpc2Nvbm5lY3QgZnVuY3Rpb24sIGFuZCBmaXhpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVzZSBjaGFuZ2VzIGZpeCBhIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB0aGF0IG9jY3VycyB3aGVuIHRoZSBkZXZpY2UgaXMgZGlzY29ubmVjdGVkIG9yIGZhaWxzIHRvIHByb2JlLiBTdWNoIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBsaWZlY3ljbGUgYnVncyBhcmUgcGVyZmVjdGx5IGhhbmRsZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBkZXZpY2UgbGlmZWN5Y2xlIGlzc3VlIGJ5IG1vdmluZyBgdjRsMl9kZXZpY2VfdW5yZWdpc3RlcmAgYW5kIGBpMmNfZGVsX2FkYXB0ZXJgIGZyb20gdGhlIHZpZGVvIGRldmljZSByZWxlYXNlIGNhbGxiYWNrIHRvIHRoZSBVU0IgZGlzY29ubmVjdCBmdW5jdGlvbiwgYW5kIGZpeGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXNlIGNoYW5nZXMgZml4IGEgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgYnVnIHRoYXQgb2NjdXJzIHdoZW4gdGhlIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgb3IgZmFpbHMgdG8gcHJvYmUuIFN1Y2ggbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGxpZmVjeWNsZSBidWdzIGFyZSBwZXJmZWN0bHkgaGFuZGxlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow74sn7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 23:27:18 +0000 UTC FinishedAt: 2026-08-08 23:30:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "MEDIA_RADIO_SUPPORT", "VIDEO_DEV", "RADIO_ADAPTERS", "RADIO_SI4713", "USB_SI4713" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "MEDIA_RADIO_SUPPORT", "VIDEO_DEV", "RADIO_ADAPTERS", "RADIO_SI4713", "USB_SI4713" ], "series_id": "5bdac209-a293-4508-91ec-abbd53a7c3a8" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "usb_si4713_probe", "usb_si4713_disconnect", "usb_si4713_video_device_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7TUVESUFfUkFESU9fU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OywKICAgICYjMzQ7UkFESU9fQURBUFRFUlMmIzM0OywKICAgICYjMzQ7UkFESU9fU0k0NzEzJiMzNDssCiAgICAmIzM0O1VTQl9TSTQ3MTMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2Jfc2k0NzEzX3Byb2JlJiMzNDssCiAgICAmIzM0O3VzYl9zaTQ3MTNfZGlzY29ubmVjdCYjMzQ7LAogICAgJiMzNDt1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgZGV2aWNlIGxpZmVjeWNsZSBpc3N1ZSBieSBtb3ZpbmcgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFuZCBgaTJjX2RlbF9hZGFwdGVyYCBmcm9tIHRoZSB2aWRlbyBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjayB0byB0aGUgVVNCIGRpc2Nvbm5lY3QgZnVuY3Rpb24sIGFuZCBmaXhpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVzZSBjaGFuZ2VzIGZpeCBhIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB0aGF0IG9jY3VycyB3aGVuIHRoZSBkZXZpY2UgaXMgZGlzY29ubmVjdGVkIG9yIGZhaWxzIHRvIHByb2JlLiBTdWNoIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBsaWZlY3ljbGUgYnVncyBhcmUgcGVyZmVjdGx5IGhhbmRsZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNjb25uZWN0IHBhdGhzIG9mIHRoZSBzaTQ3MTMgVVNCIHJhZGlvIGRyaXZlciwgbW92aW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgSTJDIGFkYXB0ZXIgZGVsZXRpb24gb3V0IG9mIHRoZSByZWxlYXNlIGNhbGxiYWNrLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBkdW1teV9oY2QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOGVmM2Y3OWZhYjExMzMzYmNmODAwYWRmOWQ1YmJiYjY2MGQ2NjliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAyMzoyOToxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbmluZGV4IDZlNjc2NDE0M2UyMWYuLmQ1ZDk3ZTMzNjBkOGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xuQEAgLTEyOCwxMCAmIzQzOzEyOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgdXNiX3NpNDcxM19mb3BzID0ge1xuIHN0YXRpYyB2b2lkIHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2Uoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldilcbiB7XG4gXHRzdHJ1Y3Qgc2k0NzEzX3VzYl9kZXZpY2UgKnJhZGlvID0gdG9fc2k0NzEzX2Rldih2NGwyX2Rldik7XG4tXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBcdTAwMjZyYWRpby1cdTAwM2VpMmNfYWRhcHRlcjtcbiBcbi1cdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcbi1cdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIFx0a2ZyZWUocmFkaW8tXHUwMDNlYnVmZmVyKTtcbiBcdGtmcmVlKHJhZGlvKTtcbiB9XG5AQCAtNDg4LDcgJiM0Mzs0ODUsOSBAQCBzdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHRyZXR1cm4gMDtcbiBcbiBkZWxfYWRhcHRlcjpcbiYjNDM7XHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcbiYjNDM7XHRnb3RvIGVycl92NGwyO1xuIGVycl9pMmNkZXY6XG4gXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBlcnJfdjRsMjpcbkBAIC01MDYsOCAmIzQzOzUwNSwxMSBAQCBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gXHRtdXRleF9sb2NrKFx1MDAyNnJhZGlvLVx1MDAzZWxvY2spO1xuIFx0dXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTtcbiBcdHZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnJhZGlvLVx1MDAzZXZkZXYpO1xuLVx0djRsMl9kZXZpY2VfZGlzY29ubmVjdChcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2cmFkaW8tXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuJiM0MztcdGkyY19kZWxfYWRhcHRlcihcdTAwMjZyYWRpby1cdTAwM2VpMmNfYWRhcHRlcik7XG4mIzQzO1xuIFx0djRsMl9kZXZpY2VfcHV0KFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7TUVESUFfUkFESU9fU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OywKICAgICYjMzQ7UkFESU9fQURBUFRFUlMmIzM0OywKICAgICYjMzQ7UkFESU9fU0k0NzEzJiMzNDssCiAgICAmIzM0O1VTQl9TSTQ3MTMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2Jfc2k0NzEzX3Byb2JlJiMzNDssCiAgICAmIzM0O3VzYl9zaTQ3MTNfZGlzY29ubmVjdCYjMzQ7LAogICAgJiMzNDt1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBhbmQgZGlzY29ubmVjdCBwYXRocyBvZiB0aGUgc2k0NzEzIFVTQiByYWRpbyBkcml2ZXIsIG1vdmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIEkyQyBhZGFwdGVyIGRlbGV0aW9uIG91dCBvZiB0aGUgcmVsZWFzZSBjYWxsYmFjay4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZHVtbXlfaGNkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjhlZjNmNzlmYWIxMTMzM2JjZjgwMGFkZjlkNWJiYmI2NjBkNjY5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMjM6Mjk6MTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMKaW5kZXggNmU2NzY0MTQzZTIxZi4uZDVkOTdlMzM2MGQ4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYwpAQCAtMTI4LDEwICYjNDM7MTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7CiBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpCiB7CiAJc3RydWN0IHNpNDcxM191c2JfZGV2aWNlICpyYWRpbyA9IHRvX3NpNDcxM19kZXYodjRsMl9kZXYpOwotCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9ICZhbXA7cmFkaW8tJmd0O2kyY19hZGFwdGVyOwogCi0JaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwotCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwogCWtmcmVlKHJhZGlvLSZndDtidWZmZXIpOwogCWtmcmVlKHJhZGlvKTsKIH0KQEAgLTQ4OCw3ICYjNDM7NDg1LDkgQEAgc3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAogCXJldHVybiAwOwogCiBkZWxfYWRhcHRlcjoKJiM0MzsJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwomIzQzOwlnb3RvIGVycl92NGwyOwogZXJyX2kyY2RldjoKIAl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIGVycl92NGwyOgpAQCAtNTA2LDggJiM0Mzs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCW11dGV4X2xvY2soJmFtcDtyYWRpby0mZ3Q7bG9jayk7CiAJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTsKIAl2aWRlb191bnJlZ2lzdGVyX2RldmljZSgmYW1wO3JhZGlvLSZndDt2ZGV2KTsKLQl2NGwyX2RldmljZV9kaXNjb25uZWN0KCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIAltdXRleF91bmxvY2soJmFtcDtyYWRpby0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwomIzQzOwlpMmNfZGVsX2FkYXB0ZXIoJmFtcDtyYWRpby0mZ3Q7aTJjX2FkYXB0ZXIpOwomIzQzOwogCXY0bDJfZGV2aWNlX3B1dCgmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxMQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDY4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgVVNCIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY2AuIEl0JiMzOTtzIHRvdWNoaW5nIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgYHVzYl9zaTQ3MTNfcHJvYmVgLCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAuIFRoZSBrZXkgY2hhbmdlIGlzIG1vdmluZyBgaTJjX2RlbF9hZGFwdGVyYCBhbmQgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFyb3VuZC4gU3BlY2lmaWNhbGx5LCB0aGV5IGFyZSBiZWluZyBtb3ZlZCBmcm9tIHRoZSByZWxlYXNlIGZ1bmN0aW9uIHRvIHRoZSBkaXNjb25uZWN0IGZ1bmN0aW9uIGFuZCBwcm9iZSYjMzk7cyBlcnJvciBoYW5kbGluZyBwYXRoLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpdHMgZnV6emluZyBwb3RlbnRpYWwuIEl0JiMzOTtzIGEgVVNCIGRyaXZlciwgYW5kIFVTQiBkcml2ZXJzIGFyZSBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBjYW4gZnV6eiwgZXNwZWNpYWxseSB3aXRoIHRvb2xzIGxpa2UgdGhlIFVTQiBnYWRnZXQvZHVtbXlfaGNkIHNldHVwLiBQcm9iZSwgZGlzY29ubmVjdCwgYW5kIHJlbGVhc2UgZnVuY3Rpb25zPyBTb3VuZHMgbGlrZSBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS4KClRoZW4gSSByZS1yZWFkIHRoZSBwcm9tcHQgcmVnYXJkaW5nIHdoZXRoZXIgb3Igbm90IHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgZXhlY3V0ZWQgKm9ubHkqIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcsIGlzIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgIGEgdGVhcmRvd24gY2FsbGJhY2s/IFllcCwgaXQmIzM5O3MgdGhlIGAuZGlzY29ubmVjdGAgY2FsbGJhY2sgb2YgYHN0cnVjdCB1c2JfZHJpdmVyYC4gV2hhdCBhYm91dCB0aGUgZXJyb3IgcGF0aCBpbiBgdXNiX3NpNDcxM19wcm9iZWA/IEFsc28gYSB0ZWFyZG93biwgc2luY2UgaXQmIzM5O3MgZXJyb3IgaGFuZGxpbmcgZHVyaW5nIHByb2JlLiBBbmQgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgPyBUaGF0JiMzOTtzIGEgcmVsZWFzZSBjYWxsYmFjaywgc28geWVzLCBhIHRlYXJkb3duLgoKSG9sZCBvbiBhIHNlY29uZC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgJiMzNDtQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kLiYjMzQ7IEZvciBVU0IsIGAuZGlzY29ubmVjdGAgaXMgZXhlY3V0ZWQgZHVyaW5nIFVTQiBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQuIE5vdywgSSYjMzk7bSBwcmV0dHkgc3VyZSBzeXprYWxsZXIgZG9lcyBhIGxvdCBvZiBmdXp6aW5nIG9mIFVTQiBwcm9iZSBhbmQgZGlzY29ubmVjdCwgdXNpbmcgdGhhdCBkdW1teV9oY2Qgc2V0dXAuIEhtbW0sIGlzIGl0IHN0aWxsIHdvcnRoIGZ1enppbmc/CgpMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY2hhbmdlcyB0aGF0IG1pZ2h0IG1ha2UgdGhpcyB3b3J0aHdoaWxlLiBOb3BlLCBpdCYjMzk7cyBqdXN0IGFib3V0IHRoZXNlIHRlYXJkb3duIGFuZCBlcnJvciBwYXRocy4gQnV0LCBpZiBpdCYjMzk7cyAqb25seSogdGVhcmRvd24gY2FsbGJhY2tzLCBpcyBpdCByZWFsbHkgd29ydGggaXQ/IFRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG9ubHkgbWFyayBhcyAqbm90KiB3b3J0aCBmdXp6aW5nIGlmIHRoZXkgKm9ubHkqIGhhcHBlbiBvbiB0aGUgaG90LXVucGx1ZyBvciB1bmJpbmQgb3BlcmF0aW9ucy4KCk9rYXksIGxldCBtZSByZS1yZWFkIHRoYXQgcHJvbXB0IHNlY3Rpb24gYWdhaW4gdG8gbWFrZSBzdXJlIEkgZ2V0IGl0IHJpZ2h0LiBJdCBzYXlzICYjMzQ7UENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZC4mIzM0OyBBbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAgZXhlY3V0ZXMgb24gVVNCIGhvdC11bnBsdWcsIHdoaWNoIHN5emthbGxlciBoZWF2aWx5IGZ1enplZC4gQnV0IHRoZSBwcm9tcHQgZG9lc24mIzM5O3QgZXhwbGljaXRseSAqZXhjbHVkZSogVVNCIGhvdC11bnBsdWcuLi4gVGhpcyBpcyBhIGJpdCBvZiBhIGdyYXkgYXJlYSwgYnV0IHN5emthbGxlciB3aWxsIGZ1enogdGhlc2UgcGF0aHMsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgY29kZSBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTQwOD1zdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTQ5OC1cbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzo0OTk6c3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTUwMC17XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTUxNz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdXNiX3NpNDcxM19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTUxOS1cdC5wcm9iZVx0XHRcdD0gdXNiX3NpNDcxM19wcm9iZSxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzo1MjA6XHQuZGlzY29ubmVjdFx0XHQ9IHVzYl9zaTQ3MTNfZGlzY29ubmVjdCxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYy01MjEtXHQuaWRfdGFibGVcdFx0PSB1c2Jfc2k0NzEzX3VzYl9kZXZpY2VfdGFibGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGAuZGlzY29ubmVjdGAgY2FsbGJhY2ssIGFuZCB0aGUgcXVlc3Rpb24gaXMsIGlzIGl0IHdvcnRoIGZ1enppbmcgdGhpcz8gVGhlIHByb21wdCBpcyBwcmV0dHkgc3BlY2lmaWMsIHNheWluZyBub3QgdG8gZnV6eiBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0aGF0IGFyZSAqb25seSogZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMsIFVTQiBkaXNjb25uZWN0IGhhcHBlbnMgZHVyaW5nIFVTQiBob3QtdW5wbHVnLCBhbmQgd2UgKmtub3cqIHN5emthbGxlciBzdXBwb3J0cyBVU0IgZnV6emluZywgc28gaXQgKmNhbiogdHJpZ2dlciBob3QtdW5wbHVnLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgJiMzNDtQQ0kgaG90LXVucGx1ZywmIzM0OyBub3QgVVNCLgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gdGhlIHByb21wdCBkb2VzIHNheSAmIzM0O3RoYXQgYXJlIGV4ZWN1dGVkICpvbmx5KiBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiYjMzQ7IFN5emthbGxlciBzdXBwb3J0cyBVU0IgaG90LXVucGx1ZyB0aHJvdWdoIGBzeXpfdXNiX2Nvbm5lY3RgIGFuZCBgc3l6X3VzYl9kaXNjb25uZWN0YCwgc28gaXQgKmlzKiByZWFjaGFibGUgYW5kIGZ1enplZC4KCkhvd2V2ZXIsIGEgY2xvc2VyIGxvb2sgYXQgdGhlIHBhdGNoIHJldmVhbHMgbW9yZSEgSXQmIzM5O3MgKmFsc28qIHRvdWNoaW5nIGB1c2Jfc2k0NzEzX3Byb2JlYC4gUmlnaHQsIGxldCBtZSBwdWxsIHVwIHRoZSBwYXRjaCBhZ2Fpbi4gKkNoZWNrcyB0aGUgcGF0Y2gqLiBBaCwgdGhpcyBpcyB0aGUgZXJyb3IgcGF0aCBpbiBgdXNiX3NpNDcxM19wcm9iZWAuIFNpbmNlIGl0IG1vZGlmaWVzICpib3RoKiBgdXNiX3NpNDcxM19wcm9iZWAgYW5kIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgLCBhbmQgZ2l2ZW4gdGhhdCBVU0IgZHJpdmVycyBpbiBnZW5lcmFsICphcmUqIGZ1enplZCBieSBzeXprYWxsZXIsIGl0IG1ha2VzIHRoaXMgcGF0Y2ggYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBPa2F5LCBub3cgbGV0JiMzOTtzIGdvIGZpbmQgdGhvc2UgY29uZmlnIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipTSTQ3MTMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWc6Mjpjb25maWcgVVNCX1NJNDcxM1xuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyBUcmFuc21pdHRlciBzdXBwb3J0IHdpdGggVVNCXCYjMzQ7XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWc6MTc6Y29uZmlnIFBMQVRGT1JNX1NJNDcxM1xuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXIgc3VwcG9ydCB3aXRoIEkyQ1wmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWctMzAtXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnOjMxOmNvbmZpZyBJMkNfU0k0NzEzXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7U2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyBUcmFuc21pdHRlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI0NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFVTQl9TSTQ3MTNgOgoKKipEaXZpbmcgaW50byB0aGUgRGVwZW5kZW5jaWVzIG9mIFVTQl9TSTQ3MTMqKgoKT2theSwgc28gYFVTQl9TSTQ3MTNgLi4uIExldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGFyY2hpdGVjdHVyYWwgdW5kZXJwaW5uaW5ncy4gRmlyc3QsIGEgcXVpY2sgZGVwZW5kZW5jeSBhdWRpdCBpcyBpbiBvcmRlci4gV2hhdCBvdGhlciBtb2R1bGVzLCBsaWJyYXJpZXMsIG9yIHN5c3RlbSBjb21wb25lbnRzIGRvZXMgaXQgaW5oZXJlbnRseSByZWx5IHVwb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5PwoKSSYjMzk7bSB0aGlua2luZywgb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZCwgd2UmIzM5O2xsIG5lZWQgYSBzb2xpZCBVU0Igc3RhY2sg4oCTIHByb2JhYmx5IHNvbWV0aGluZyB0aGF0IGNhbiBoYW5kbGUgZGV2aWNlIGVudW1lcmF0aW9uLCBlbmRwb2ludCBtYW5hZ2VtZW50LCBhbmQgZGF0YSB0cmFuc2ZlciBwcm9wZXJseS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFVTQiBwcm90b2NvbHMgdGhlIFNJNDcxMyBkZW1hbmRzLiBJcyBpdCBidWxrLCBpbnRlcnJ1cHQsIGlzb2Nocm9ub3VzPyBUaGF04oCZcyBjcml0aWNhbC4KClRoZW4gdGhlcmUmIzM5O3MgdGhlIFNJNDcxMyBpdHNlbGYuIElzIHRoZXJlIGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIsIGEgc3BlY2lmaWMgZHJpdmVyLCBvciBzb21lIGtpbmQgb2YgcmVnaXN0ZXItbGV2ZWwgYWNjZXNzIGNvZGUgaW52b2x2ZWQ/IFdoZXJl4oCZcyB0aGUgZGF0YXNoZWV0IG9uIHRoYXQgY2hpcD8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0aGF0LCBwcm9udG8uIEkmIzM5O2xsIGhhdmUgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyByZWdpc3RlcnMgdG8gYWN0dWFsbHkgKnVzZSogdGhlIHJhZGlvIGNoaXAuCgpGdXJ0aGVybW9yZSwgYXJlIHRoZXJlIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXM/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgcGFydGljdWxhciBPUyBrZXJuZWwsIGEgc3BlY2lmaWMgbWljcm9jb250cm9sbGVyLCBvciBtYXliZSBldmVuIGEgY2VydGFpbiBkZXZlbG9wbWVudCBib2FyZD8gQ3Jvc3MtcGxhdGZvcm0gcG9ydGFiaWxpdHkgaXMgb2Z0ZW4gYSBjb25jZXJuLCBzbyBJIG5lZWQgdG8gYXNzZXNzIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhpcyBtb2R1bGUgaXMgdG8gaXRzIGVudmlyb25tZW50LiBJZiB0aGlzIG5lZWRzIHRvIHJ1biBvbiBtdWx0aXBsZSBwbGF0Zm9ybXMsIEkgd2lsbCBoYXZlIHRvIHN0YXJ0IHRoaW5raW5nIG9mIGJ1aWxkaW5nIGEgc3lzdGVtIHdpdGggbW9kdWxhcml0eSBpbiBtaW5kLgoKRmluYWxseSwgSSYjMzk7bGwgbmVlZCB0byBkZXRlcm1pbmUgd2hhdCBmdW5jdGlvbmFsaXRpZXMgdGhlIG1vZHVsZSBleHBvc2VzIOKAkyBkb2VzIGl0IG9mZmVyIGFuIEFQSSBmb3IgdHVuaW5nLCBkZW1vZHVsYXRpb24sIFJEUywgb3Igd2hhdCBoYXZlIHlvdT8gVGhhdCBkZXRlcm1pbmVzICppdHMqIGRlcGVuZGVuY3kgZm9vdHByaW50IGFuZCBpdHMgQVBJLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdyB0aHJvdWdoIGFsbCB0aGUgbGV2ZWxzIG9mIGFic3RyYWN0aW9uLiBJJiMzOTtsbCBiZSBhYmxlIHRvIHdvcmsgYmFja3dhcmQgZnJvbSB3aGF0IEkgbmVlZCBpdCB0byBkbyB0byB3aGF0IEkgZXhwZWN0IGl0IHRvIG5lZWQgdG8gZG8sIGluIHRoaXMgY2FzZS4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFVTQl9TSTQ3MTNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXIgc3VwcG9ydCB3aXRoIFVTQlwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IEkyQyBcdTAwMjZcdTAwMjYgUkFESU9fU0k0NzEzXG4gICA1Olx0XHRzZWxlY3QgSTJDX1NJNDcxM1xuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBUaGlzIGlzIGEgZHJpdmVyIGZvciBVU0IgZGV2aWNlcyB3aXRoIHRoZSBTaWxpY29uIExhYnMgU0k0NzEzXG4gICA4Olx0XHQgIGNoaXAuIEN1cnJlbnRseSB0aGVzZSBkZXZpY2VzIGFyZSBrbm93biB0byB3b3JrLlxuICAgOTpcdFx0ICAtIDEwYzQ6ODI0NDogU2lsaWNvbiBMYWJzIEZNIFRyYW5zbWl0dGVyIFVTQiBkZXZpY2UuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gY29ubmVjdCB0aGlzIHR5cGUgb2YgcmFkaW8gdG8geW91clxuICAxMjpcdFx0ICBjb21wdXRlciYjMzk7cyBVU0IgcG9ydC5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE1Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByYWRpby11c2Itc2k0NzEzLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBQTEFURk9STV9TSTQ3MTNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXIgc3VwcG9ydCB3aXRoIEkyQ1wmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBJMkMgXHUwMDI2XHUwMDI2IFJBRElPX1NJNDcxM1xuICAyMDpcdFx0c2VsZWN0IEkyQ19TSTQ3MTNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDcxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6CgoqKkFzc2Vzc21lbnQgb2YgSW50ZXJmYWNpbmcgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgd2l0aCBzZXZlcmFsIGludGVyZmFjZXMsIGFuZCB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbSBoaW5nZXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY29ubmVjdGlvbnMgYW5kIHRoZWlyIGludGVyYWN0aW9ucy4gTXkgZmlyc3QgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIHdob2xlIHRoaW5nIGhhbmdzIG9uIHRocmVlIGtleSBjb21wb25lbnRzOiBgVVNCYCwgYEkyQ2AsIGFuZCBgUkFESU9fU0k0NzEzYC4gVGhhdCYjMzk7cyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaG93IHRoZSBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLiBHaXZlbiB0aGF0IHRoZSBgUkFESU9fU0k0NzEzYCBsaWtlbHkgaXMgYXQgdGhlIGhlYXJ0IG9mIHRoaXMgY2hhbGxlbmdlLCB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZmlyc3QuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJhZGlvIGlzIGNvbW11bmljYXRpbmcgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipSQURJT19TSTQ3MTMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnPTYyPWNvbmZpZyBSQURJT19TSEFSSzJcbi0tXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctNzgtXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWc6Nzk6Y29uZmlnIFJBRElPX1NJNDcxM1xuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnLTgwLVx0dHJpc3RhdGUgXCYjMzQ7U2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyB3aXRoIFJEUyBUcmFuc21pdHRlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MDkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFJBRElPX1NJNDcxMyBEZXBlbmRlbmNpZXMqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzIGBSQURJT19TSTQ3MTNgIHByb2plY3QuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgZ2V0IGEgaGFuZGxlIG9uIGl0cyBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gbWFwIG91dCBldmVyeXRoaW5nIGl0IHJlbGllcyBvbiwgZnJvbSB0aGUgb2J2aW91cyBoYXJkd2FyZSBpbnRlcmZhY2VzIGRvd24gdG8gdGhlIGxvd2VyLWxldmVsIGxpYnJhcmllcy4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBvdmVydmlldzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIGRlcGVuZGVuY3kuIEFyZSB0aGV5IG1hdHVyZT8gQWN0aXZlbHkgbWFpbnRhaW5lZD8gU3ViamVjdCB0byBmcmVxdWVudCBjaGFuZ2VzIHRoYXQgY291bGQgYnJlYWsgY29tcGF0aWJpbGl0eT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBpbiB0aGUgc3lzdGVtIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIHF1aWNrIGNvZGUgaW5zcGVjdGlvbiB0byBpZGVudGlmeSBpbmNsdWRlIGZpbGVzIGFuZCBleHRlcm5hbCBsaWJyYXJ5IGNhbGxzLCBidXQgdGhhdCYjMzk7cyBqdXN0IHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGRvY3VtZW50YXRpb24sIGNoZWNrIHZlcnNpb24gbnVtYmVycywgYW5kIG1heWJlIGV2ZW4gbG9vayBhdCB0aGUgc291cmNlIGNvZGUgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIHRoZW1zZWx2ZXMgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIGdyYXNwIG9uIHRoZSBhcmNoaXRlY3R1cmUuIFRoaXMgYW5hbHlzaXMgd2lsbCBndWlkZSBteSBhcHByb2FjaCB0byBpbnRlZ3JhdGluZyBvciB1cGRhdGluZyB0aGUgcmFkaW8gbW9kdWxlIGFuZCB3aWxsIGluZm9ybSBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlci4gQSBjbGVhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5IGxhbmRzY2FwZSB3aWxsIGJlIGNydWNpYWwgdG8gYXZvaWRpbmcgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA3OTpcdGNvbmZpZyBSQURJT19TSTQ3MTNcbiAgODA6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gd2l0aCBSRFMgVHJhbnNtaXR0ZXIgc3VwcG9ydFwmIzM0O1xuICA4MTpcdFxuICA4MjpcdGNvbmZpZyBSQURJT19TSTQ3NlhcbiAgODM6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFib3JhdG9yaWVzIFNpNDc2eCBJMkMgRk0gUmFkaW9cJiMzNDtcbiAgODQ6XHRcdGRlcGVuZHMgb24gSTJDXG4gIDg1Olx0XHRkZXBlbmRzIG9uIE1GRF9TSTQ3NlhfQ09SRVxuICA4NjpcdFx0ZGVwZW5kcyBvbiBTTkRfU09DXG4gIDg3Olx0XHRzZWxlY3QgU05EX1NPQ19TSTQ3NlhcbiAgODg6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg1NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY3kgTGFuZHNjYXBlIG9mIFJBRElPX1NJNDcxMyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYFJBRElPX1NJNDcxM2AgYW5kIHRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyBzaXR0aW5nIHRoZXJlIHdpdGggbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiBUaGF0IGZlZWxzIGEgYml04oCmdW51c3VhbCwgZXNwZWNpYWxseSBmb3IgYSBkcml2ZXIuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhbmQsIGlmIGl0JiMzOTtzIHRydWUsIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KClNvLCBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSA3OS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZXNlIHNvcnRzIG9mIHNldHRpbmdzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgZ2V0IGRlY2xhcmVkLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBjb2RlIGNvbmZpcm1zIG15IGluaXRpYWwgaHVuY2gsIGFuZCwgaWYgbm90LCB3aGF0IG90aGVyIG1vZHVsZXMgYXJlIHJlcXVpcmVkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBvciBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDcwOlx0XG4gIDcxOlx0XHQgIEluIG9yZGVyIHRvIGNvbnRyb2wgeW91ciByYWRpbyBjYXJkLCB5b3Ugd2lsbCBuZWVkIHRvIHVzZSBwcm9ncmFtc1xuICA3MjpcdFx0ICB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIFZpZGVvIEZvciBMaW51eCBBUEkuICBJbmZvcm1hdGlvbiBvblxuICA3MzpcdFx0ICB0aGlzIEFQSSBhbmQgcG9pbnRlcnMgdG8gXCYjMzQ7djRsXCYjMzQ7IHByb2dyYW1zIG1heSBiZSBmb3VuZCBhdFxuICA3NDpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS9pbmRleC5yc3RcdTAwM2UuXG4gIDc1Olx0XG4gIDc2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuICA3NzpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcmFkaW8tc2hhcmsyLlxuICA3ODpcdFxuICA3OTpcdGNvbmZpZyBSQURJT19TSTQ3MTNcbiAgODA6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gd2l0aCBSRFMgVHJhbnNtaXR0ZXIgc3VwcG9ydFwmIzM0O1xuICA4MTpcdFxuICA4MjpcdGNvbmZpZyBSQURJT19TSTQ3NlhcbiAgODM6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbGljb24gTGFib3JhdG9yaWVzIFNpNDc2eCBJMkMgRk0gUmFkaW9cJiMzNDtcbiAgODQ6XHRcdGRlcGVuZHMgb24gSTJDXG4gIDg1Olx0XHRkZXBlbmRzIG9uIE1GRF9TSTQ3NlhfQ09SRVxuICA4NjpcdFx0ZGVwZW5kcyBvbiBTTkRfU09DXG4gIDg3Olx0XHRzZWxlY3QgU05EX1NPQ19TSTQ3NlhcbiAgODg6XHRcdGhlbHBcbiAgODk6XHRcdCAgQ2hvb3NlIFkgaGVyZSBpZiB5b3UgaGF2ZSB0aGlzIEZNIHJhZGlvIGNoaXAuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MjkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgUkFESU9fU0k0NzEzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gYFJBRElPX1NJNDcxM2AuLi4gaXNuJiMzOTt0IHRoYXQganVzdCBhIHNpbXBsZSB0cmlzdGF0ZSwgd2l0aCBubyBhcHBhcmVudCBkZXBlbmRlbmNpZXMgYXQgZmlyc3QgZ2xhbmNlPyBUaGF0IHNlZW1zIGluY3JlZGlibHkgc3RyYWlnaHRmb3J3YXJkLiBCdXQgc29tZXRoaW5nIGZlZWxzIG9mZi4gV2h5IGlzIGl0IGxvY2F0ZWQgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYD8gVGhhdCBmaWxlIGlzIHN0cnVjdHVyZWQgd2l0aCBtZW51cyBhbmQgYGlmYCBzdGF0ZW1lbnRzIGFsbCBvdmVyIHRoZSBwbGFjZS4gSXQmIzM5O3MgaGlnaGx5IGxpa2VseSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGNvbmRpdGlvbmFsLCBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBmYWN0b3Igb3IgZW5hYmxpbmcgYSBicm9hZGVyIHJhZGlvIGZlYXR1cmUgc2V0LiBJIG5lZWQgdG8gYmUgc3VyZS4gQWxyaWdodCwgbGV0JiMzOTtzIGdvIGJhY2sgdG8gdGhlIHRvcCBvZiBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYCBhbmQgdHJhY2UgdGhpcyBmcm9tIHRoZSBiZWdpbm5pbmcuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBjb250ZXh0IHRoYXQgZGVmaW5lcyBpdHMgdHJ1ZSBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNdWx0aW1lZGlhIFZpZGVvIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgUkFESU9fQURBUFRFUlNcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1JhZGlvIEFkYXB0ZXJzXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuICAgOTpcdFx0ZGVwZW5kcyBvbiBNRURJQV9SQURJT19TVVBQT1JUXG4gIDEwOlx0XHRkZWZhdWx0IFZJREVPX0RFVlxuICAxMTpcdFx0aGVscFxuICAxMjpcdFx0ICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzZWxlY3RpbmcgQU0vRk0gcmFkaW8gYWRhcHRlcnMuXG4gIDEzOlx0XG4gIDE0Olx0aWYgUkFESU9fQURBUFRFUlNcbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgUkFESU9fTUFYSVJBRElPXG4gIDE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHdWlsbGVtb3QgTUFYSSBSYWRpbyBGTSAyMDAwIHJhZGlvXCYjMzQ7XG4gIDE4Olx0XHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPUE9SVFxuICAxOTpcdFx0c2VsZWN0IFJBRElPX1RFQTU3NVhcbiAgMjA6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRGVwZW5kZW5jeSBDaGFpbiBBbmFseXNpcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbnRlcm5hbCBkZXBlbmRlbmN5IGdyYXBoIGlzIHRlbGxpbmcgbWUgdGhhdCBgUkFESU9fQURBUFRFUlNgIGhpbmdlcyBvbiBib3RoIGBWSURFT19ERVZgIGFuZCBgTUVESUFfUkFESU9fU1VQUE9SVGAuIENsYXNzaWMuIE1ha2VzIHNlbnNlOyByYWRpbyBhZGFwdGVycyBtaWdodCBuZWVkIHZpZGVvLXJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUgYW5kLCBvYnZpb3VzbHksIHRoZSBjb3JlIHJhZGlvIHN1cHBvcnQuCgpHaXZlbiB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHNlY29uZCBwb2ludCAtIGBNRURJQV9SQURJT19TVVBQT1JUYC4gVGhhdCYjMzk7cyB0aGUga2V5IG5vZGUgdG8gaW52ZXN0aWdhdGUuCkxldCYjMzk7cyBmaWd1cmUgb3V0IHdoYXQgaXMgZW50YWlsZWQgd2l0aGluIGBNRURJQV9SQURJT19TVVBQT1JUYC4KSSBuZWVkIHRvIGNoZWNrICppdHMqIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGl0IHByb3ZpZGVzLiBUaGlzIGhhcyB0byBiZSBhZGRyZXNzZWQgYmVmb3JlIEkgbG9vayBhdCBgUkFESU9fQURBUFRFUlNgIGFnYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKk1FRElBX1JBRElPX1NVUFBPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTkwPWNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctOTktXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTAwOmNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTAxLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjUwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWEgU3Vic3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBtZWRpYSBzdWJzeXN0ZW0mIzM5O3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIHBsYWNlIGZvciBhbGwgdGhlIHRvcC1sZXZlbCBmZWF0dXJlIHNlbGVjdGlvbnMsIHJpZ2h0PyBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIHNvbWV0aGluZyBuZWFyIGxpbmUgMTAwLCBzbyBJJiMzOTtsbCBnbyBkaXJlY3RseSB0byB0aGF0IGxvY2F0aW9uLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBnZXQgbWUgY2xvc2UgdG8gdGhlIHNlY3Rpb24gSSYjMzk7bSBtb3N0IGN1cmlvdXMgYWJvdXQuIFRoaXMgc2hvdWxkIGdldCBtZSBzdGFydGVkIG9uIGZpZ3VyaW5nIG91dCB3aGF0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGluIHRoYXQgYXJlYS4gSSYjMzk7bSByZWFkeSB0byBkaWcgaW4gYW5kIGRlY2lwaGVyIHRob3NlIEtjb25maWcgZGlyZWN0aXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0Y29uZmlnIE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVFxuICA5MTpcdFx0Ym9vbFxuICA5MjpcdFx0cHJvbXB0IFwmIzM0O0RpZ2l0YWwgVFZcJiMzNDsgaWYgTUVESUFfU1VQUE9SVF9GSUxURVJcbiAgOTM6XHRcdGRlZmF1bHQgeSBpZiAhTUVESUFfU1VQUE9SVF9GSUxURVJcbiAgOTQ6XHRcdGhlbHBcbiAgOTU6XHRcdCAgRW5hYmxlIGRpZ2l0YWwgVFYgc3VwcG9ydC5cbiAgOTY6XHRcbiAgOTc6XHRcdCAgU2F5IFkgd2hlbiB5b3UgaGF2ZSBhIGJvYXJkIHdpdGggZGlnaXRhbCBzdXBwb3J0IG9yIGEgYm9hcmQgd2l0aFxuICA5ODpcdFx0ICBoeWJyaWQgZGlnaXRhbCBUViBhbmQgYW5hbG9nIFRWLlxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXG4gMTAxOlx0XHRib29sXG4gMTAyOlx0XHRwcm9tcHQgXCYjMzQ7QU0vRk0gcmFkaW8gcmVjZWl2ZXJzL3RyYW5zbWl0dGVyc1wmIzM0OyBpZiBNRURJQV9TVVBQT1JUX0ZJTFRFUlxuIDEwMzpcdFx0ZGVmYXVsdCB5IGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxuIDEwNDpcdFx0aGVscFxuIDEwNTpcdFx0ICBFbmFibGUgQU0vRk0gcmFkaW8gc3VwcG9ydC5cbiAxMDY6XHRcbiAxMDc6XHRcdCAgQWRkaXRpb25hbCBpbmZvIGFuZCBkb2NzIGFyZSBhdmFpbGFibGUgb24gdGhlIHdlYiBhdFxuIDEwODpcdFx0ICBcdTAwM2NodHRwczovL2xpbnV4dHYub3JnXHUwMDNlXG4gMTA5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIENvbmRpdGlvbmFsIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MuIGBNRURJQV9SQURJT19TVVBQT1JUYCBpcyBleHBsaWNpdGx5IGRlZmluZWQgYXMgYSBib29sZWFuIOKAkyBtYWtlcyBzZW5zZSwgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgZWl0aGVyICppcyogc3VwcG9ydGVkIG9yIGl0ICppc24mIzM5O3QqLiBDbGVhciBlbm91Z2guIE5vdywgd2hhdCBhYm91dCBgVklERU9fREVWYD8gVGhhdCYjMzk7cyB0aGUgb25lIHRoYXQmIzM5O3MgZ290IG1lIHRoaW5raW5nLiBJdCYjMzk7cyBsaWtlbHkgYWxzbyBhIGJvb2xlYW4sIGdpdmVuIHRoZSBjb250ZXh0LCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGFzc3VtcHRpb24uIElzIGl0IHRyZWF0ZWQgdGhlIHNhbWUgd2F5IGluIHRoZSByZWxldmFudCBoZWFkZXJzL3NvdXJjZSBmaWxlcz8gSXMgaXQgZXhwbGljaXRseSBkZWZpbmVkIGFzIGEgYm9vbGVhbiwgb3IgbWlnaHQgaXQgcmVwcmVzZW50IHNvbWV0aGluZyBlbHNlLCBzdWNoIGFzIGEgbnVtZXJpY2FsIHZhbHVlIHJlcHJlc2VudGluZyBhIHNwZWNpZmljIHZpZGVvIGRldmljZSBvciBhIGNhcGFiaWxpdHkgbWFzaz8gSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhhdCYjMzk7cyBiZWluZyB1c2VkLiBUaGUgZGV2aWwgaXMgaW4gdGhlIGRldGFpbHMsIGFuZCBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCBpdHMgaW1wbGljYXRpb25zIGJlZm9yZSBJIG1ha2UgYW55IGRlY2lzaW9ucyBiYXNlZCBvbiBpdC4gV2UgY2FuJiMzOTt0IGFmZm9yZCBhbnkgbGF0ZW50IGJ1Z3MgdGhhdCBhIG1pc2ludGVycHJldGF0aW9uIGNvdWxkIGNhdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKlZJREVPX0RFViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWc9MTU3PW1lbnUgXCYjMzQ7TWVkaWEgY29yZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE1OS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxNjA6Y29uZmlnIFZJREVPX0RFVlxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE2MS1cdHRyaXN0YXRlIFwmIzM0O1ZpZGVvNExpbnV4IGNvcmVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTA4NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgVjRMMjoKCioqSW52ZXN0aWdhdGluZyB0aGUgVmlkZW80TGludXggQ29yZSBpbiBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgY2x1ZSBpcyBgVklERU9fREVWYCBiZWluZyBsaW5rZWQgdG8gdGhlIFZpZGVvNExpbnV4IGNvcmUuIE1ha2VzIHNlbnNlLiBOb3csIG15IG5leHQgc3RlcCBpcyBwcmV0dHkgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IGRlZmluaXRpb24gd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGF0JiMzOTtzIGFsbCBzdHJ1Y3R1cmVkIGluIHRoZSBidWlsZCBzeXN0ZW0uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AgdG8gc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDE2MC4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHJlbGF0ZWQgZGVmaW5pdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9wdGlvbnMgb3IgZnVydGhlciBleHBsYW5hdGlvbnMgdGhlcmUuIFRoaXMgc2hvdWxkIHF1aWNrbHkgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBgVklERU9fREVWYCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTU1Olx0XG4gMTU2Olx0XG4gMTU3Olx0bWVudSBcJiMzNDtNZWRpYSBjb3JlIHN1cHBvcnRcJiMzNDtcbiAxNTg6XHRcdHZpc2libGUgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXG4gMTU5Olx0XG4gMTYwOlx0Y29uZmlnIFZJREVPX0RFVlxuIDE2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlkZW80TGludXggY29yZVwmIzM0O1xuIDE2MjpcdFx0ZGVmYXVsdCBNRURJQV9DQU1FUkFfU1VQUE9SVCB8fCBNRURJQV9BTkFMT0dfVFZfU1VQUE9SVCB8fCBNRURJQV9SQURJT19TVVBQT1JUIHx8IE1FRElBX1NEUl9TVVBQT1JUIHx8IE1FRElBX1BMQVRGT1JNX1NVUFBPUlQgfHwgTUVESUFfVEVTVF9TVVBQT1JUXG4gMTYzOlx0XHRkZXBlbmRzIG9uIChJMkMgfHwgSTJDPW4pXG4gMTY0Olx0XHRzZWxlY3QgUkFUSU9OQUxcbiAxNjU6XHRcdHNlbGVjdCBWSURFT0JVRjJfVjRMMiBpZiBWSURFT0JVRjJfQ09SRVxuIDE2NjpcdFx0aGVscFxuIDE2NzpcdFx0ICBFbmFibGVzIHRoZSBWNEwyIEFQSSwgdXNlZCBieSBjYW1lcmFzLCBhbmFsb2cgVFYsIHZpZGVvIGdyYWJiZXJzLFxuIDE2ODpcdFx0ICByYWRpbyBkZXZpY2VzIGFuZCBieSBzb21lIGlucHV0IGRldmljZXMuXG4gMTY5Olx0XG4gMTcwOlx0Y29uZmlnIE1FRElBX0NPTlRST0xMRVJcbiAxNzE6XHRcdGJvb2wgXCYjMzQ7TWVkaWEgQ29udHJvbGxlciBBUElcJiMzNDtcbiAxNzI6XHRcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUIHx8IE1FRElBX1BMQVRGT1JNX1NVUFBPUlRcbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgRW5hYmxlIHRoZSBtZWRpYSBjb250cm9sbGVyIEFQSSB1c2VkIHRvIHF1ZXJ5IG1lZGlhIGRldmljZXMgaW50ZXJuYWxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY3NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjoKCioqQ29uZGl0aW9uYWwgRGVwZW5kZW5jaWVzIGluIHRoZSBNZWRpYSBTdWJzeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUsIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgYFZJREVPX0RFVmAgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgb2J2aW91c2x5IGltcG9ydGFudCBmb3IgYW55IHZpZGVvLXJlbGF0ZWQgaGFyZHdhcmUgc3VwcG9ydCwgaXMgZGlyZWN0bHkgY29udGluZ2VudCBvbiB0aGUgYE1FRElBX1JBRElPX1NVUFBPUlRgIGZsYWcgYmVpbmcgZW5hYmxlZC4gTWFrZXMgc2Vuc2Ug4oCTIGlmIHlvdSYjMzk7cmUgbm90IHN1cHBvcnRpbmcgcmFkaW8gZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGJyb2FkZXIgbWVkaWEgZnJhbWV3b3JrLCB5b3UmIzM5O3JlIGxlc3MgbGlrZWx5IHRvIG5lZWQgc3BlY2lmaWMgdmlkZW8gZGV2aWNlIGRyaXZlcnMuCgpOb3csIHRoZSBjcnVjaWFsIHBpZWNlIGlzIHRoYXQgYE1FRElBX1NVUFBPUlRgIGlzIHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoYXQmIzM5O3MgdGhlIGdhdGV3YXkuIElmIGBNRURJQV9TVVBQT1JUYCBpcyBkaXNhYmxlZCwgZXZlcnl0aGluZyB1bmRlcm5lYXRoIGl0LCBpbmNsdWRpbmcgYE1FRElBX1JBRElPX1NVUFBPUlRgIGFuZCB0aGVyZWZvcmUgdWx0aW1hdGVseSBgVklERU9fREVWYCwgZ2V0cyBzaHV0IGRvd24uIEl04oCZcyBhIGNsZWFuLCBoaWVyYXJjaGljYWwgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUuIFRoYXTigJlzIGdvb2QsIGtlZXBzIHRoaW5ncyBtYW5hZ2VhYmxlIGFuZCBsb2dpY2FsLiBJIG5lZWQgdG8ga2VlcCB0aGlzIHJlbGF0aW9uc2hpcCBpbiBtaW5kIHdoZW4gSSBhbSB0cm91Ymxlc2hvb3RpbmcgdGhpcyBhcmVhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcuKk1FRElBX1NVUFBPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTEwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL21lZGlhL2NlYy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL21lZGlhL0tjb25maWctMTEtXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTI6bWVudWNvbmZpZyBNRURJQV9TVVBQT1JUXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNdWx0aW1lZGlhIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWc9MjM9aWYgTUVESUFfU1VQUE9SVFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI0LVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjI1OmNvbmZpZyBNRURJQV9TVVBQT1JUX0ZJTFRFUlxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtGaWx0ZXIgbWVkaWEgZHJpdmVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA4MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZW5hYmxlIGBNRURJQV9TVVBQT1JUYC4gUmlnaHQsIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIGBVU0JfU0k0NzEzYCBjb25maWd1cmF0aW9uLiBJdCBhcHBlYXJzIHRoYXQgYFVTQl9TSTQ3MTNgIGlzIGNvbnRpbmdlbnQgb24gYFVTQmAsIGBJMkNgLCBhbmQgYFJBRElPX1NJNDcxM2AuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIGBSQURJT19TSTQ3MTNgIHJlbGllcyBvbiBgUkFESU9fQURBUFRFUlNgLiBOb3csIGBSQURJT19BREFQVEVSU2AgaW4gdHVybiBkZXBlbmRzIG9uIGJvdGggYFZJREVPX0RFVmAgYW5kIGBNRURJQV9SQURJT19TVVBQT1JUYC4gIEFoYSwgYW5kIGhlcmUgd2UgaGF2ZSBpdCwgYFZJREVPX0RFVmAgaXRzZWxmIGlzIGRlcGVuZGVudCBvbiBgTUVESUFfU1VQUE9SVGAuIFNvLCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgYXJlIGBNRURJQV9TVVBQT1JUYCwgYE1FRElBX1JBRElPX1NVUFBPUlRgLCBgVklERU9fREVWYCwgYFJBRElPX0FEQVBURVJTYCwgYFJBRElPX1NJNDcxM2AsIGFuZCBmaW5hbGx5LCBgVVNCX1NJNDcxM2AuCgpCdXQgd2FpdCBhIG1pbnV0ZS4uLiBMZXQmIzM5O3MgcmV2aWV3IHRoZSB0eXBlcy4gYE1FRElBX1NVUFBPUlRgIGlzIGEgdHJpc3RhdGUsIGFzIGFyZSBgVklERU9fREVWYCwgYFJBRElPX0FEQVBURVJTYCwgYFJBRElPX1NJNDcxM2AsIGFuZCBgVVNCX1NJNDcxM2AuIGBNRURJQV9SQURJT19TVVBQT1JUYCBpcyBqdXN0IGEgYm9vbC4gSXQmIzM5O3MgYSBiaXQgbW9yZSBpbnZvbHZlZCB0aGFuIGp1c3Qgc2V0dGluZyB0aGUgdmFsdWVzLgoKSSBoYWQgaG9wZWQgdGhhdCBlbmFibGluZyBgVVNCX1NJNDcxM2AgYWxvbmUgbWlnaHQgdHJpZ2dlciB0aGUgYnVpbGQgc3lzdGVtIHRvIHNlbGVjdCB0aGUgcmVzdCBhdXRvbWF0aWNhbGx5Li4uIG5vLCB0aGUgYGRlcGVuZHMgb25gIGRlY2xhcmF0aW9ucyBtZWFuIHRoYXQgSSBtdXN0IGV4cGxpY2l0bHkgZW5hYmxlIGVhY2ggb2YgdGhlIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucy4KCk9oISBJJiMzOTt2ZSBtaXNzZWQgc29tZXRoaW5nLiBgTUVESUFfUkFESU9fU1VQUE9SVGAgaXMgc2V0IHRvICYjMzk7eSYjMzk7IGJ5IGRlZmF1bHQgaWYgYCFNRURJQV9TVVBQT1JUX0ZJTFRFUmAuIEkgc2hvdWxkIGNoZWNrIGBNRURJQV9TVVBQT1JUX0ZJTFRFUmAgdG8gZW5zdXJlIEkmIzM5O20gZ2V0dGluZyB0aGUgZGVzaXJlZCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0XHQgIEFkZGl0aW9uYWwgaW5mbyBhbmQgZG9jcyBhcmUgYXZhaWxhYmxlIG9uIHRoZSB3ZWIgYXRcbiAgMjE6XHRcdCAgXHUwMDNjaHR0cHM6Ly9saW51eHR2Lm9yZ1x1MDAzZVxuICAyMjpcdFxuICAyMzpcdGlmIE1FRElBX1NVUFBPUlRcbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcbiAgMjY6XHRcdGJvb2wgXCYjMzQ7RmlsdGVyIG1lZGlhIGRyaXZlcnNcJiMzNDtcbiAgMjc6XHRcdGRlZmF1bHQgeSBpZiAhRVhQRVJUXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgICBDb25maWd1cmluZyB0aGUgbWVkaWEgc3Vic3lzdGVtIGNhbiBiZSBjb21wbGV4LCBhcyB0aGVyZSBhcmVcbiAgMzA6XHRcdCAgIGh1bmRyZWRzIG9mIGRyaXZlcnMgYW5kIG90aGVyIGNvbmZpZyBvcHRpb25zLlxuICAzMTpcdFxuICAzMjpcdFx0ICAgVGhpcyBtZW51IG9mZmVycyBvcHRpb24gdGhhdCB3aWxsIGhlbHAgdGhlIEtlcm5lbCYjMzk7cyBjb25maWdcbiAgMzM6XHRcdCAgIHN5c3RlbSB0byBoaWRlIGRyaXZlcnMgdGhhdCBhcmUgb3V0IG9mIHRoZSBzY29wZSBvZiB0aGVcbiAgMzQ6XHRcdCAgIHVzZXIgbmVlZHMsIGFuZCBkaXNhYmxpbmcgY29yZSBzdXBwb3J0IGZvciB1bnVzZWQgQVBJcy5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgIElmIG5vdCBzZWxlY3RlZCwgYWxsIG5vbi1vcHRpb25hbCBtZWRpYSBjb3JlIGZ1bmN0aW9uYWxpdHlcbiAgMzc6XHRcdCAgIG5lZWRlZCB0byBzdXBwb3J0IG1lZGlhIGRyaXZlcnMgd2lsbCBiZSBlbmFibGVkLiBBbHNvLCBhbGxcbiAgMzg6XHRcdCAgIG1lZGlhIGRldmljZSBkcml2ZXJzIHNob3VsZCBiZSBzaG93bi5cbiAgMzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwODEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCYjMzk7cyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGNvbmZpZ3VyYXRpb24gdGFzay4KCioqQ29uZmlndXJhdGlvbiBEZWNpc2lvbiBCcmVha2Rvd24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGVuYWJsZSB0aGVzZSBmZWF0dXJlcyByZWxhdGVkIHRvIHJhZGlvIHN1cHBvcnQgd2l0aGluIHRoaXMgc3lzdGVtLiBJIHRoaW5rIHdlIG5lZWQgdG8gYWN0aXZhdGUgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBSQURJT19BREFQVEVSU2AsIGBSQURJT19TSTQ3MTNgLCBhbmQgYFVTQl9TSTQ3MTNgLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHN1aXRlIG9mIG9wdGlvbnMgdG8gZ2l2ZSB1cyBhIHNvbGlkIHJhZGlvIGNhcGFiaWxpdHkuCgpXYWl0IGEgc2Vjb25kLCBJIHJlbWVtYmVyIGBSQURJT19TSTQ3MTNgIGxpdmVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ2AgZmlsZSwgc28gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBNb3JlIGltcG9ydGFudGx5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb25kaXRpb25hbCBsb2dpYyBhcm91bmQgdGhpcyBzZXR0aW5nLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGBSQURJT19TSTQ3MTNgIGlzIGluZGVlZCBndWFyZGVkIGJ5IGBpZiBSQURJT19BREFQVEVSU2AuIEkgY2FuJiMzOTt0IGJlIGVuYWJsaW5nIGl0IHVubGVzcyB0aGUgYnJvYWRlciBhZGFwdGVyIHN1cHBvcnQgaXMgYWxzbyBhY3RpdmUsIG90aGVyd2lzZSwgdGhpcyB3aWxsIG5ldmVyIHdvcmsgYXMgaW50ZW5kZWQuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBkZXBlbmRlbmN5IGlzIGVzc2VudGlhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE0Olx0aWYgUkFESU9fQURBUFRFUlNcbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgUkFESU9fTUFYSVJBRElPXG4gIDE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHdWlsbGVtb3QgTUFYSSBSYWRpbyBGTSAyMDAwIHJhZGlvXCYjMzQ7XG4gIDE4Olx0XHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPUE9SVFxuICAxOTpcdFx0c2VsZWN0IFJBRElPX1RFQTU3NVhcbiAgMjA6XHRcdGhlbHBcbiAgMjE6XHRcdCAgQ2hvb3NlIFkgaGVyZSBpZiB5b3UgaGF2ZSB0aGlzIHJhZGlvIGNhcmQuICBUaGlzIGNhcmQgbWF5IGFsc28gYmVcbiAgMjI6XHRcdCAgZm91bmQgYXMgR2VtdGVrIFBDSSBGTS5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSW4gb3JkZXIgdG8gY29udHJvbCB5b3VyIHJhZGlvIGNhcmQsIHlvdSB3aWxsIG5lZWQgdG8gdXNlIHByb2dyYW1zXG4gIDI1Olx0XHQgIHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUgVmlkZW8gRm9yIExpbnV4IEFQSS4gIEluZm9ybWF0aW9uIG9uXG4gIDI2Olx0XHQgIHRoaXMgQVBJIGFuZCBwb2ludGVycyB0byBcJiMzNDt2NGxcJiMzNDsgcHJvZ3JhbXMgbWF5IGJlIGZvdW5kIGF0XG4gIDI3Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL2luZGV4LnJzdFx1MDAzZS5cbiAgMjg6XHRcbiAgMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDMwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByYWRpby1tYXhpcmFkaW8uXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFJBRElPX1NBQTc3MDZIXG4gIDMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTQUE3NzA2SCBDYXIgUmFkaW8gRFNQXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzQwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdCBpcyBkZWZpbml0ZWx5IGdhdGVkIGJ5IGBpZiBSQURJT19BREFQVEVSU2AuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBSQURJT19BREFQVEVSU2AgaXMgZGVmaW5lZC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgc3BlY2lmaWMgY29tcG9uZW50IEkgYW0gaW50ZXJlc3RlZCBpbiwgYFVTQl9TSTQ3MTNgLCBpcyBhbHNvIHByb3RlY3RlZCBieSB0aGlzLiBMZXQgbWUgY2hlY2sgaXRzIEtjb25maWcgZmlsZSwgd2hpY2ggSSBiZWxpZXZlIGlzIGluIGBkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnYC4gQWgsIHdhaXQsIGEgc21hbGwgZGV0YWlsLi4uIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoaXMgZmlsZSBpcyBzb3VyY2VkIGZyb20gYGRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ2AuIFNvLCBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgdHJhaWwgZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlLipzaTQ3MTMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnPTIwND1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnOjIwNTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnLTIwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxMTYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBGaWxlIExvY2F0aW9uIGFuZCBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uLiBUaGUgc291cmNlIGZvciB0aGlzIGlzIGRlZmluaXRlbHkgdGhlIGBkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdgIGZpbGUuIE5vIHF1ZXN0aW9uIGFib3V0IGl0LiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZSBmaWxlIGlzIHByb3Blcmx5IHN0cnVjdHVyZWQsIHBhcnRpY3VsYXJseSB0aGF0IHRoZSBgZW5kaWZgIGlzIHByZXNlbnQgZm9yIHRoZSBjb25kaXRpb25hbCBibG9jaywgYW5kIHRoYXQgdGhlIHByb3BlciBtYWNybyBpcyB1c2VkOiBgUkFESU9fQURBUFRFUlNgLiBUaGF0JiMzOTtzIGNyaXRpY2FsIGZvciB0aGUgcmFkaW8gYWRhcHRlcnMgY29uZmlndXJhdGlvbnMuIEdvdHRhIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGFsbCBidXR0b25lZCB1cCB0byBhdm9pZCBhbnkgZG93bnN0cmVhbSBidWlsZCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuZGlmLipSQURJT19BREFQVEVSUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWc9NDg2PWVuZGlmICMgVjRMX1JBRElPX0lTQV9EUklWRVJTXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctNDg3LVxuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnOjQ4ODplbmRpZiAjIFJBRElPX0FEQVBURVJTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzkxCgkJCQkJCQlvdXRwdXQ6IDU2CgkJCQkJCQl0aG91Z2h0czogNTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYFVTQl9TSTQ3MTNgIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBTeW1ib2wgRm9jdXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFVTQl9TSTQ3MTNgIGRyaXZlciBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyBuZXN0bGVkIHdpdGhpbiB0aGUgYGlmIFJBRElPX0FEQVBURVJTYCBibG9jaywgd2hpY2ggaXMgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIFRvIGVuYWJsZSBpdCwgSSBuZWVkIHRvIGVuc3VyZSBhIGZldyB0aGluZ3MgYXJlIHNldDogYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBSQURJT19BREFQVEVSU2AsIGBSQURJT19TSTQ3MTNgLCBhbmQgb2YgY291cnNlLCBgVVNCX1NJNDcxM2AgaXRzZWxmLgoKTm93LCBgVVNCX1NJNDcxM2AgcmVsaWVzIG9uIGBVU0JgIGFuZCBgSTJDYCwgd2hpY2ggYXJlIHByZXR0eSBzdGFuZGFyZCwgdGhhbmtmdWxseS4gIE5vIG90aGVyIGRlcGVuZGVuY2llcyBzZWVtIHRvIGV4aXN0LCBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZy4gIFNwZWNpZmljYWxseSwgYFVTQl9TSTQ3MTNgIGRlcGVuZHMgb24gYFVTQiAmYW1wOyZhbXA7IEkyQyAmYW1wOyZhbXA7IFJBRElPX1NJNDcxM2AsIGFuZCBgUkFESU9fU0k0NzEzYCBoYXMgbm8gZGVwZW5kZW5jaWVzIG9mIGl0cyBvd24uIGBSQURJT19BREFQVEVSU2AgcmVsaWVzIG9uIGBWSURFT19ERVZgIGFuZCBgTUVESUFfUkFESU9fU1VQUE9SVGAuICBgVklERU9fREVWYCBoYXMgc29tZSBmbGV4aWJpbGl0eSwgZGVwZW5kaW5nIG9uIGBJMkNgIG9yIHRoZSBhYnNlbmNlIG9mIGl0LCB3aGlsZSBgTUVESUFfUkFESU9fU1VQUE9SVGAgaXMgYSBzaW1wbGUgYm9vbGVhbi4gIFNvIHRoZSBjb25maWdzIEkgbmVlZCB0byB2ZXJpZnkgYXJlOiBgTUVESUFfU1VQUE9SVGAsIGBNRURJQV9SQURJT19TVVBQT1JUYCwgYFZJREVPX0RFVmAsIGBSQURJT19BREFQVEVSU2AsIGBSQURJT19TSTQ3MTNgLCBhbmQgYFVTQl9TSTQ3MTNgLgoKVGhlIHBhdGNoIG1vZGlmaWVzIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgYHVzYl9zaTQ3MTNfcHJvYmVgLCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAuIE15IHByaW1hcnkgZm9jdXMgaXMgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBzeW1ib2xzLiBMZXQmIzM5O3Mgc2VlLi4uIEFyZSB0aGVzZSBmdW5jdGlvbnMgc3RhdGljPyBZZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9scywga2VlcGluZyB0aGUgcHJvbXB0IGluc3RydWN0aW9ucyBpbiBtaW5kLgoKQWgsIGB1c2Jfc2k0NzEzX3Byb2JlYCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAgYXJlIGFzc2lnbmVkIHRvIGBzdHJ1Y3QgdXNiX2RyaXZlcmAgY2FsbGJhY2tzLiBUaGV5IGFyZSBub3QgaW5saW5lZCwgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbi4gR29vZC4gIFRoZSBwcm9tcHQgZmF2b3JzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gIFRoZXNlIGFyZSAqc3RhdGljKiwgYnV0IGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IGFyZSAqbm90KiBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gU28sIHllcywgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgc3RhdGljLCB0aGV5JiMzOTtyZSB2YWxpZCBlbnRyeXBvaW50cyBmb3IgdGhlIGRyaXZlci4gVGhlcmVmb3JlLCB0aGVzZSBjYW4gaW5kZWVkIGJlIHRyZWF0ZWQgYXMgZm9jdXMgc3ltYm9scy4gQW5kIHdoYXQgYWJvdXQgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgPyBJdCYjMzk7cyBhc3NpZ25lZCB0byBgdjRsMl9kZXYucmVsZWFzZWAuIFRoYXQmIzM5O3MgYW5vdGhlciBBUEkgZW50cnlwb2ludCwgc28gaXTigJlzIHZhbGlkIHRvby4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYz0xMjA9c3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTEyNy1cbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzoxMjg6c3RhdGljIHZvaWQgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTEyOS17XG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTQwOD1zdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTQ2Mi1cdHJhZGlvLVx1MDAzZXZkZXYuY3RybF9oYW5kbGVyID0gc2QtXHUwMDNlY3RybF9oYW5kbGVyO1xuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jOjQ2MzpcdHJhZGlvLVx1MDAzZXY0bDJfZGV2LnJlbGVhc2UgPSB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlO1xuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTQ2NC1cdHN0cnNjcHkocmFkaW8tXHUwMDNldmRldi5uYW1lLCByYWRpby1cdTAwM2V2NGwyX2Rldi5uYW1lLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAyMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk4NAoJCQkJCQkJb3V0cHV0OiAxNzcKCQkJCQkJCXRob3VnaHRzOiA5NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgQ29ycmVjdG5lc3MgYW5kIEZvY3VzIFN5bWJvbHMqKgoKT2theSwgc28gdGhlIGFkZHJlc3Mgb2YgdGhlc2UgZnVuY3Rpb25zIGlzIGJlaW5nIHRha2VuLCB3aGljaCBtZWFucyB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZC4gVGhhdCYjMzk7cyBnb29kOyB0aGUgcHJvbXB0IHByZWZlcnMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMZXQmIzM5O3Mgc2VlLi4uIGB1c2Jfc2k0NzEzX3Byb2JlYCwgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAsIGFuZCBgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUuIFRoZXkmIzM5O3JlIGFsbCBzdGF0aWMsIGJ1dCBzaW5jZSB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLCB0aGUgY29tcGlsZXIgaXNuJiMzOTt0IGlubGluaW5nIHRoZW0uIFRoZXkgYXJlIGFsbCBBUEkgZW50cnlwb2ludHMsIGNhbGxiYWNrcywgc28gdGhlc2UgYXJlIGV4Y2VsbGVudCBjYW5kaWRhdGVzIHRvIGZvY3VzIG9uLiBUaGV5IGNoZWNrIG91dC4KCk5vdywgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBXZSBuZWVkIGBNRURJQV9TVVBQT1JUYCwgYE1FRElBX1JBRElPX1NVUFBPUlRgLCBgVklERU9fREVWYCwgYFJBRElPX0FEQVBURVJTYCwgYFJBRElPX1NJNDcxM2AsIGFuZCBgVVNCX1NJNDcxM2AsIHdoaWNoIHNlbGVjdHMgYEkyQ19TSTQ3MTNgIHNvIHdlIGNhbiBsZWF2ZSB0aGF0IGFzIGltcGxpZWQuIFRoYXQgc2hvdWxkIGNvdmVyIGl0LCBnb29kLiBXZSYjMzk7bGwgYmUgc2V0dGluZyB0aG9zZS4KCkxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIGl0c2VsZiBhZ2Fpbi4gSXQgbG9va3MgbGlrZSBhIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGlzc3VlLiBJdCYjMzk7cyBtb3ZpbmcgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFuZCBgaTJjX2RlbF9hZGFwdGVyYCBvdXQgb2YgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgIGFuZCBpbnRvIHRoZSBlcnJvciBwYXRocyBvZiBgdXNiX3NpNDcxM19wcm9iZWAgYW5kIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGlzc3VlIHRoYXQgdGhlIHBhdGNoIGFpbXMgdG8gcmVzb2x2ZS4KClRoaXMgaXMgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBvYmplY3QgbGlmZWN5Y2xlLCB3aGljaCBtYWtlcyBtZSB0aGluayB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhhdCBubyBuZXcgYnVncyAoZG91YmxlIGZyZWVzLCBsZWFrcywgZXRjLikgYXJlIGludHJvZHVjZWQgaW4gdGhvc2UgZXJyb3Igb3IgZGlzY29ubmVjdCBwYXRocy4KSSB3aWxsIGNhbGwgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRURJQV9TVVBQT1JUJiMzNDssCiAgICAmIzM0O01FRElBX1JBRElPX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDssCiAgICAmIzM0O1JBRElPX0FEQVBURVJTJiMzNDssCiAgICAmIzM0O1JBRElPX1NJNDcxMyYjMzQ7LAogICAgJiMzNDtVU0JfU0k0NzEzJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiX3NpNDcxM19wcm9iZSYjMzQ7LAogICAgJiMzNDt1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7dXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZXJyb3IgaGFuZGxpbmcgYW5kIGRpc2Nvbm5lY3QgcGF0aHMgb2YgdGhlIHNpNDcxMyBVU0IgcmFkaW8gZHJpdmVyLCBtb3ZpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uIGFuZCBJMkMgYWRhcHRlciBkZWxldGlvbiBvdXQgb2YgdGhlIHJlbGVhc2UgY2FsbGJhY2suIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gZGV2aWNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgVVNCIGR1bW15X2hjZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtNRURJQV9SQURJT19TVVBQT1JUJiMzNDssCiAgICAmIzM0O1ZJREVPX0RFViYjMzQ7LAogICAgJiMzNDtSQURJT19BREFQVEVSUyYjMzQ7LAogICAgJiMzNDtSQURJT19TSTQ3MTMmIzM0OywKICAgICYjMzQ7VVNCX1NJNDcxMyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYl9zaTQ3MTNfcHJvYmUmIzM0OywKICAgICYjMzQ7dXNiX3NpNDcxM19kaXNjb25uZWN0JiMzNDssCiAgICAmIzM0O3VzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNjb25uZWN0IHBhdGhzIG9mIHRoZSBzaTQ3MTMgVVNCIHJhZGlvIGRyaXZlciwgbW92aW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgSTJDIGFkYXB0ZXIgZGVsZXRpb24gb3V0IG9mIHRoZSByZWxlYXNlIGNhbGxiYWNrLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBkdW1teV9oY2QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMjM6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgZGV2aWNlIGxpZmVjeWNsZSBpc3N1ZSBieSBtb3ZpbmcgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFuZCBgaTJjX2RlbF9hZGFwdGVyYCBmcm9tIHRoZSB2aWRlbyBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjayB0byB0aGUgVVNCIGRpc2Nvbm5lY3QgZnVuY3Rpb24sIGFuZCBmaXhpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVzZSBjaGFuZ2VzIGZpeCBhIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB0aGF0IG9jY3VycyB3aGVuIHRoZSBkZXZpY2UgaXMgZGlzY29ubmVjdGVkIG9yIGZhaWxzIHRvIHByb2JlLiBTdWNoIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBsaWZlY3ljbGUgYnVncyBhcmUgcGVyZmVjdGx5IGhhbmRsZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjhlZjNmNzlmYWIxMTMzM2JjZjgwMGFkZjlkNWJiYmI2NjBkNjY5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMjM6Mjk6MTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMKaW5kZXggNmU2NzY0MTQzZTIxZi4uZDVkOTdlMzM2MGQ4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYwpAQCAtMTI4LDEwICYjNDM7MTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7CiBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpCiB7CiAJc3RydWN0IHNpNDcxM191c2JfZGV2aWNlICpyYWRpbyA9IHRvX3NpNDcxM19kZXYodjRsMl9kZXYpOwotCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9ICZhbXA7cmFkaW8tJmd0O2kyY19hZGFwdGVyOwogCi0JaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwotCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwogCWtmcmVlKHJhZGlvLSZndDtidWZmZXIpOwogCWtmcmVlKHJhZGlvKTsKIH0KQEAgLTQ4OCw3ICYjNDM7NDg1LDkgQEAgc3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAogCXJldHVybiAwOwogCiBkZWxfYWRhcHRlcjoKJiM0MzsJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwomIzQzOwlnb3RvIGVycl92NGwyOwogZXJyX2kyY2RldjoKIAl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIGVycl92NGwyOgpAQCAtNTA2LDggJiM0Mzs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCW11dGV4X2xvY2soJmFtcDtyYWRpby0mZ3Q7bG9jayk7CiAJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTsKIAl2aWRlb191bnJlZ2lzdGVyX2RldmljZSgmYW1wO3JhZGlvLSZndDt2ZGV2KTsKLQl2NGwyX2RldmljZV9kaXNjb25uZWN0KCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIAltdXRleF91bmxvY2soJmFtcDtyYWRpby0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwomIzQzOwlpMmNfZGVsX2FkYXB0ZXIoJmFtcDtyYWRpby0mZ3Q7aTJjX2FkYXB0ZXIpOwomIzQzOwogCXY0bDJfZGV2aWNlX3B1dCgmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDgKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogNzk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogTGlmZWN5Y2xlIE1hbmFnZW1lbnQgaW4gdGhlIFNJNDcxMyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBzb21lIGtpbmQgb2YgbGlmZWN5Y2xlIGlzc3VlLCBwcm9iYWJseSBhIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0sIGdpdmVuIHRoZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIEkgc2VlIHRoYXQgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgIGlzIGxvc2luZyB0aGUgY2FsbHMgdG8gYGkyY19kZWxfYWRhcHRlcmAgYW5kIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCwgYW5kIHRoZXNlIGNhbGxzIGFyZSBiZWluZyBhZGRlZCB0byBgdXNiX3NpNDcxM19kaXNjb25uZWN0YC4gQWRkaXRpb25hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYHVzYl9zaTQ3MTNfcHJvYmVgIGlzIGJlaW5nIHR3ZWFrZWQuIFRoaXMgcmFpc2VzIGEgcmVkIGZsYWcuIEl0IHNtZWxscyBsaWtlIGEgZml4IGZvciBhIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgYSBtZW1vcnkgbGVhayBzaXR1YXRpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyLgoKTGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvZGUgc25pcHBldHMuIEluIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgdGhvc2UgY2FsbHMgYXJlIGdvbmUgbm93LCB3aGljaCBpcyB0aGUgY3J1eCBvZiB0aGUgY2hhbmdlLiAKCmBgYGMKIHN0YXRpYyB2b2lkIHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2Uoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldikKIHsKIAlzdHJ1Y3Qgc2k0NzEzX3VzYl9kZXZpY2UgKnJhZGlvID0gdG9fc2k0NzEzX2Rldih2NGwyX2Rldik7Ci0Jc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyID0gJmFtcDtyYWRpby0mZ3Q7aTJjX2FkYXB0ZXI7CiAKLQlpMmNfZGVsX2FkYXB0ZXIoYWRhcHRlcik7Ci0JdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJa2ZyZWUocmFkaW8tJmd0O2J1ZmZlcik7CiAJa2ZyZWUocmFkaW8pOwogfQpgYGAKCkluIGB1c2Jfc2k0NzEzX3Byb2JlYCwgSSBzZWUgdGhlIGNhbGxzIGFyZSBhZGRlZCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcuCgpgYGBjCiBkZWxfYWRhcHRlcjoKJiM0MzsJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJaTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpOwomIzQzOwlnb3RvIGVycl92NGwyOwogZXJyX2kyY2RldjoKIAl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKIGVycl92NGwyOgpgYGAKCkFuZCBpbiBgdXNiX3NpNDcxM19kaXNjb25uZWN0YDoKCmBgYGMKIHN0YXRpYyB2b2lkIHVzYl9zaTQ3MTNfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKIHsKIAltdXRleF9sb2NrKCZhbXA7cmFkaW8tJmd0O2xvY2spOwogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CiAJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoJmFtcDtyYWRpby0mZ3Q7dmRldik7Ci0JdjRsMl9kZXZpY2VfZGlzY29ubmVjdCgmYW1wO3JhZGlvLSZndDt2NGwyX2Rldik7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7cmFkaW8tJmd0O2xvY2spOwomIzQzOwomIzQzOwl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZhbXA7cmFkaW8tJmd0O3Y0bDJfZGV2KTsKJiM0MzsJaTJjX2RlbF9hZGFwdGVyKCZhbXA7cmFkaW8tJmd0O2kyY19hZGFwdGVyKTsKJiM0MzsKIAl2NGwyX2RldmljZV9wdXQoJmFtcDtyYWRpby0mZ3Q7djRsMl9kZXYpOwogfQpgYGAKClJpZ2h0LCBpdCYjMzk7cyBjbGVhcjogdGhpcyBpcyBhIGxpZmVjeWNsZSBidWcuIExpa2VseSBhIHVzZS1hZnRlci1mcmVlIG9yIGEgY3Jhc2ggZHVyaW5nIGRldmljZSBkaXNjb25uZWN0IG9yIHJlbGVhc2UgYmVjYXVzZSB0aGUgY2xlYW51cCB3YXMgaGFwcGVuaW5nIHRvbyBsYXRlLCBvciBpbiB0aGUgd3JvbmcgcGxhY2UuIE1vdmluZyB0aGUgdW5yZWdpc3RyYXRpb24gYW5kIGFkYXB0ZXIgZGVsZXRpb24gdG8gdGhlIGRpc2Nvbm5lY3QgcGF0aCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBoZXJlLiBLQVNBTiBpcyB0aGUgcGVyZmVjdCB0b29sIGZvciBpZGVudGlmeWluZyB0aGVzZSBraW5kcyBvZiBVQUZzLiBUaGVyZSYjMzk7cyBub3RoaW5nIGluIHRoaXMgcGF0Y2ggdGhhdCBzdWdnZXN0cyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZTsgS01TQU4gaXNuJiMzOTt0IHJlbGV2YW50IGhlcmUuIEkmIzM5O20gbm90IHNlZWluZyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIG9yIHRoYXQgYWZmZWN0cyBjb250cm9sIGZsb3csIHNvIHRoZSByaXNrIGlzbiYjMzk7dCBwcmVzZW50LiBOZWVkc0tNU0FOID0gZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGRldmljZSBsaWZlY3ljbGUgaXNzdWUgYnkgbW92aW5nIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCBhbmQgYGkyY19kZWxfYWRhcHRlcmAgZnJvbSB0aGUgdmlkZW8gZGV2aWNlIHJlbGVhc2UgY2FsbGJhY2sgdG8gdGhlIFVTQiBkaXNjb25uZWN0IGZ1bmN0aW9uLCBhbmQgZml4aW5nIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlc2UgY2hhbmdlcyBmaXggYSB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBidWcgdGhhdCBvY2N1cnMgd2hlbiB0aGUgZGV2aWNlIGlzIGRpc2Nvbm5lY3RlZCBvciBmYWlscyB0byBwcm9iZS4gU3VjaCBtZW1vcnkgY29ycnVwdGlvbiBhbmQgbGlmZWN5Y2xlIGJ1Z3MgYXJlIHBlcmZlY3RseSBoYW5kbGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBkZXZpY2UgbGlmZWN5Y2xlIGlzc3VlIGJ5IG1vdmluZyBgdjRsMl9kZXZpY2VfdW5yZWdpc3RlcmAgYW5kIGBpMmNfZGVsX2FkYXB0ZXJgIGZyb20gdGhlIHZpZGVvIGRldmljZSByZWxlYXNlIGNhbGxiYWNrIHRvIHRoZSBVU0IgZGlzY29ubmVjdCBmdW5jdGlvbiwgYW5kIGZpeGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXNlIGNoYW5nZXMgZml4IGEgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgYnVnIHRoYXQgb2NjdXJzIHdoZW4gdGhlIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgb3IgZmFpbHMgdG8gcHJvYmUuIFN1Y2ggbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGxpZmVjeWNsZSBidWdzIGFyZSBwZXJmZWN0bHkgaGFuZGxlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOToxMS4zNzI5Mzc3OTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA5MzU2NzM4NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfUkFESU9fU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCIsXG4gICAgXCJSQURJT19BREFQVEVSU1wiLFxuICAgIFwiUkFESU9fU0k0NzEzXCIsXG4gICAgXCJVU0JfU0k0NzEzXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3NpNDcxM19wcm9iZVwiLFxuICAgIFwidXNiX3NpNDcxM19kaXNjb25uZWN0XCIsXG4gICAgXCJ1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBkZXZpY2UgbGlmZWN5Y2xlIGlzc3VlIGJ5IG1vdmluZyBgdjRsMl9kZXZpY2VfdW5yZWdpc3RlcmAgYW5kIGBpMmNfZGVsX2FkYXB0ZXJgIGZyb20gdGhlIHZpZGVvIGRldmljZSByZWxlYXNlIGNhbGxiYWNrIHRvIHRoZSBVU0IgZGlzY29ubmVjdCBmdW5jdGlvbiwgYW5kIGZpeGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXNlIGNoYW5nZXMgZml4IGEgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgYnVnIHRoYXQgb2NjdXJzIHdoZW4gdGhlIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgb3IgZmFpbHMgdG8gcHJvYmUuIFN1Y2ggbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGxpZmVjeWNsZSBidWdzIGFyZSBwZXJmZWN0bHkgaGFuZGxlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBhbmQgZGlzY29ubmVjdCBwYXRocyBvZiB0aGUgc2k0NzEzIFVTQiByYWRpbyBkcml2ZXIsIG1vdmluZyBkZXZpY2UgdW5yZWdpc3RyYXRpb24gYW5kIEkyQyBhZGFwdGVyIGRlbGV0aW9uIG91dCBvZiB0aGUgcmVsZWFzZSBjYWxsYmFjay4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZHVtbXlfaGNkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOToxMS4zNzI5NDM3NzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTYxNTE1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4ZWYzZjc5ZmFiMTEzMzNiY2Y4MDBhZGY5ZDViYmJiNjYwZDY2OWJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgOCAyMzoyOToxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcXG5pbmRleCA2ZTY3NjQxNDNlMjFmLi5kNWQ5N2UzMzYwZDhmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xcbisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xcbkBAIC0xMjgsMTAgKzEyOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgdXNiX3NpNDcxM19mb3BzID0ge1xcbiBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXFxuIHtcXG4gXFx0c3RydWN0IHNpNDcxM191c2JfZGV2aWNlICpyYWRpbyA9IHRvX3NpNDcxM19kZXYodjRsMl9kZXYpO1xcbi1cXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIgPSBcXHUwMDI2cmFkaW8tXFx1MDAzZWkyY19hZGFwdGVyO1xcbiBcXG4tXFx0aTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpO1xcbi1cXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZyYWRpby1cXHUwMDNldjRsMl9kZXYpO1xcbiBcXHRrZnJlZShyYWRpby1cXHUwMDNlYnVmZmVyKTtcXG4gXFx0a2ZyZWUocmFkaW8pO1xcbiB9XFxuQEAgLTQ4OCw3ICs0ODUsOSBAQCBzdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZGVsX2FkYXB0ZXI6XFxuK1xcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXFx1MDAyNnJhZGlvLVxcdTAwM2V2NGwyX2Rldik7XFxuIFxcdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcXG4rXFx0Z290byBlcnJfdjRsMjtcXG4gZXJyX2kyY2RldjpcXG4gXFx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcXHUwMDI2cmFkaW8tXFx1MDAzZXY0bDJfZGV2KTtcXG4gZXJyX3Y0bDI6XFxuQEAgLTUwNiw4ICs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZyYWRpby1cXHUwMDNlbG9jayk7XFxuIFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7XFxuIFxcdHZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZyYWRpby1cXHUwMDNldmRldik7XFxuLVxcdHY0bDJfZGV2aWNlX2Rpc2Nvbm5lY3QoXFx1MDAyNnJhZGlvLVxcdTAwM2V2NGwyX2Rldik7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2cmFkaW8tXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcXHUwMDI2cmFkaW8tXFx1MDAzZXY0bDJfZGV2KTtcXG4rXFx0aTJjX2RlbF9hZGFwdGVyKFxcdTAwMjZyYWRpby1cXHUwMDNlaTJjX2FkYXB0ZXIpO1xcbitcXG4gXFx0djRsMl9kZXZpY2VfcHV0KFxcdTAwMjZyYWRpby1cXHUwMDNldjRsMl9kZXYpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOToxMS43ODUxODM0ODlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4ODM1Njc2MTgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRURJQV9TVVBQT1JUXCIsXG4gICAgXCJNRURJQV9SQURJT19TVVBQT1JUXCIsXG4gICAgXCJWSURFT19ERVZcIixcbiAgICBcIlJBRElPX0FEQVBURVJTXCIsXG4gICAgXCJSQURJT19TSTQ3MTNcIixcbiAgICBcIlVTQl9TSTQ3MTNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1c2Jfc2k0NzEzX3Byb2JlXCIsXG4gICAgXCJ1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RcIixcbiAgICBcInVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZXJyb3IgaGFuZGxpbmcgYW5kIGRpc2Nvbm5lY3QgcGF0aHMgb2YgdGhlIHNpNDcxMyBVU0IgcmFkaW8gZHJpdmVyLCBtb3ZpbmcgZGV2aWNlIHVucmVnaXN0cmF0aW9uIGFuZCBJMkMgYWRhcHRlciBkZWxldGlvbiBvdXQgb2YgdGhlIHJlbGVhc2UgY2FsbGJhY2suIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gZGV2aWNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgVVNCIGR1bW15X2hjZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjhlZjNmNzlmYWIxMTMzM2JjZjgwMGFkZjlkNWJiYmI2NjBkNjY5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMjM6Mjk6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbmluZGV4IDZlNjc2NDE0M2UyMWYuLmQ1ZDk3ZTMzNjBkOGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xuQEAgLTEyOCwxMCArMTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7XG4gc3RhdGljIHZvaWQgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuIHtcbiBcdHN0cnVjdCBzaTQ3MTNfdXNiX2RldmljZSAqcmFkaW8gPSB0b19zaTQ3MTNfZGV2KHY0bDJfZGV2KTtcbi1cdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9IFx1MDAyNnJhZGlvLVx1MDAzZWkyY19hZGFwdGVyO1xuIFxuLVx0aTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpO1xuLVx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gXHRrZnJlZShyYWRpby1cdTAwM2VidWZmZXIpO1xuIFx0a2ZyZWUocmFkaW8pO1xuIH1cbkBAIC00ODgsNyArNDg1LDkgQEAgc3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIFx0cmV0dXJuIDA7XG4gXG4gZGVsX2FkYXB0ZXI6XG4rXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcbitcdGdvdG8gZXJyX3Y0bDI7XG4gZXJyX2kyY2RldjpcbiBcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIGVycl92NGwyOlxuQEAgLTUwNiw4ICs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZyYWRpby1cdTAwM2Vsb2NrKTtcbiBcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7XG4gXHR2aWRlb191bnJlZ2lzdGVyX2RldmljZShcdTAwMjZyYWRpby1cdTAwM2V2ZGV2KTtcbi1cdHY0bDJfZGV2aWNlX2Rpc2Nvbm5lY3QoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJhZGlvLVx1MDAzZWxvY2spO1xuK1xuK1x0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4rXHRpMmNfZGVsX2FkYXB0ZXIoXHUwMDI2cmFkaW8tXHUwMDNlaTJjX2FkYXB0ZXIpO1xuK1xuIFx0djRsMl9kZXZpY2VfcHV0KFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOToxMS43ODUxODQ1OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDUxOTgyMzQxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgVVNCIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNgLiBJdCdzIHRvdWNoaW5nIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgYHVzYl9zaTQ3MTNfcHJvYmVgLCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAuIFRoZSBrZXkgY2hhbmdlIGlzIG1vdmluZyBgaTJjX2RlbF9hZGFwdGVyYCBhbmQgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFyb3VuZC4gU3BlY2lmaWNhbGx5LCB0aGV5IGFyZSBiZWluZyBtb3ZlZCBmcm9tIHRoZSByZWxlYXNlIGZ1bmN0aW9uIHRvIHRoZSBkaXNjb25uZWN0IGZ1bmN0aW9uIGFuZCBwcm9iZSdzIGVycm9yIGhhbmRsaW5nIHBhdGguXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBJdCdzIGEgVVNCIGRyaXZlciwgYW5kIFVTQiBkcml2ZXJzIGFyZSBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBjYW4gZnV6eiwgZXNwZWNpYWxseSB3aXRoIHRvb2xzIGxpa2UgdGhlIFVTQiBnYWRnZXQvZHVtbXlfaGNkIHNldHVwLiBQcm9iZSwgZGlzY29ubmVjdCwgYW5kIHJlbGVhc2UgZnVuY3Rpb25zPyBTb3VuZHMgbGlrZSBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS5cblxuVGhlbiBJIHJlLXJlYWQgdGhlIHByb21wdCByZWdhcmRpbmcgd2hldGhlciBvciBub3QgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggKm9ubHkqIGNvbnRhaW5zIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBleGVjdXRlZCAqb25seSogZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gSSdtIHRoaW5raW5nLCBpcyBgdXNiX3NpNDcxM19kaXNjb25uZWN0YCBhIHRlYXJkb3duIGNhbGxiYWNrPyBZZXAsIGl0J3MgdGhlIGAuZGlzY29ubmVjdGAgY2FsbGJhY2sgb2YgYHN0cnVjdCB1c2JfZHJpdmVyYC4gV2hhdCBhYm91dCB0aGUgZXJyb3IgcGF0aCBpbiBgdXNiX3NpNDcxM19wcm9iZWA/IEFsc28gYSB0ZWFyZG93biwgc2luY2UgaXQncyBlcnJvciBoYW5kbGluZyBkdXJpbmcgcHJvYmUuIEFuZCBgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZWA/IFRoYXQncyBhIHJlbGVhc2UgY2FsbGJhY2ssIHNvIHllcywgYSB0ZWFyZG93bi5cblxuSG9sZCBvbiBhIHNlY29uZC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgXCJQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kLlwiIEZvciBVU0IsIGAuZGlzY29ubmVjdGAgaXMgZXhlY3V0ZWQgZHVyaW5nIFVTQiBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQuIE5vdywgSSdtIHByZXR0eSBzdXJlIHN5emthbGxlciBkb2VzIGEgbG90IG9mIGZ1enppbmcgb2YgVVNCIHByb2JlIGFuZCBkaXNjb25uZWN0LCB1c2luZyB0aGF0IGR1bW15X2hjZCBzZXR1cC4gSG1tbSwgaXMgaXQgc3RpbGwgd29ydGggZnV6emluZz9cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY2hhbmdlcyB0aGF0IG1pZ2h0IG1ha2UgdGhpcyB3b3J0aHdoaWxlLiBOb3BlLCBpdCdzIGp1c3QgYWJvdXQgdGhlc2UgdGVhcmRvd24gYW5kIGVycm9yIHBhdGhzLiBCdXQsIGlmIGl0J3MgKm9ubHkqIHRlYXJkb3duIGNhbGxiYWNrcywgaXMgaXQgcmVhbGx5IHdvcnRoIGl0PyBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBvbmx5IG1hcmsgYXMgKm5vdCogd29ydGggZnV6emluZyBpZiB0aGV5ICpvbmx5KiBoYXBwZW4gb24gdGhlIGhvdC11bnBsdWcgb3IgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbk9rYXksIGxldCBtZSByZS1yZWFkIHRoYXQgcHJvbXB0IHNlY3Rpb24gYWdhaW4gdG8gbWFrZSBzdXJlIEkgZ2V0IGl0IHJpZ2h0LiBJdCBzYXlzIFwiUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZC5cIiBBbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAgZXhlY3V0ZXMgb24gVVNCIGhvdC11bnBsdWcsIHdoaWNoIHN5emthbGxlciBoZWF2aWx5IGZ1enplZC4gQnV0IHRoZSBwcm9tcHQgZG9lc24ndCBleHBsaWNpdGx5ICpleGNsdWRlKiBVU0IgaG90LXVucGx1Zy4uLiBUaGlzIGlzIGEgYml0IG9mIGEgZ3JheSBhcmVhLCBidXQgc3l6a2FsbGVyIHdpbGwgZnV6eiB0aGVzZSBwYXRocywgc28gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGFnYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDExLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MjIuMzA1MDEwNzcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODY1NDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9zaTQ3MTNfZGlzY29ubmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTQwOD1zdGF0aWMgaW50IHVzYl9zaTQ3MTNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMtNDk4LVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzo0OTk6c3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYy01MDAte1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jPTUxNz1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgdXNiX3NpNDcxM19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMtNTE5LVxcdC5wcm9iZVxcdFxcdFxcdD0gdXNiX3NpNDcxM19wcm9iZSxcXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmM6NTIwOlxcdC5kaXNjb25uZWN0XFx0XFx0PSB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTUyMS1cXHQuaWRfdGFibGVcXHRcXHQ9IHVzYl9zaTQ3MTNfdXNiX2RldmljZV90YWJsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MjIuMzU4ODgxMTA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc1Mjk4NTM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIERlY2lzaW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgLmRpc2Nvbm5lY3RgIGNhbGxiYWNrLCBhbmQgdGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCB3b3J0aCBmdXp6aW5nIHRoaXM/IFRoZSBwcm9tcHQgaXMgcHJldHR5IHNwZWNpZmljLCBzYXlpbmcgbm90IHRvIGZ1enogaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGhhdCBhcmUgKm9ubHkqIGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBVU0IgZGlzY29ubmVjdCBoYXBwZW5zIGR1cmluZyBVU0IgaG90LXVucGx1ZywgYW5kIHdlICprbm93KiBzeXprYWxsZXIgc3VwcG9ydHMgVVNCIGZ1enppbmcsIHNvIGl0ICpjYW4qIHRyaWdnZXIgaG90LXVucGx1Zy4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IFwiUENJIGhvdC11bnBsdWcsXCIgbm90IFVTQi5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gdGhlIHByb21wdCBkb2VzIHNheSBcInRoYXQgYXJlIGV4ZWN1dGVkICpvbmx5KiBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlwiIFN5emthbGxlciBzdXBwb3J0cyBVU0IgaG90LXVucGx1ZyB0aHJvdWdoIGBzeXpfdXNiX2Nvbm5lY3RgIGFuZCBgc3l6X3VzYl9kaXNjb25uZWN0YCwgc28gaXQgKmlzKiByZWFjaGFibGUgYW5kIGZ1enplZC5cblxuSG93ZXZlciwgYSBjbG9zZXIgbG9vayBhdCB0aGUgcGF0Y2ggcmV2ZWFscyBtb3JlISBJdCdzICphbHNvKiB0b3VjaGluZyBgdXNiX3NpNDcxM19wcm9iZWAuIFJpZ2h0LCBsZXQgbWUgcHVsbCB1cCB0aGUgcGF0Y2ggYWdhaW4uICpDaGVja3MgdGhlIHBhdGNoKi4gQWgsIHRoaXMgaXMgdGhlIGVycm9yIHBhdGggaW4gYHVzYl9zaTQ3MTNfcHJvYmVgLiBTaW5jZSBpdCBtb2RpZmllcyAqYm90aCogYHVzYl9zaTQ3MTNfcHJvYmVgIGFuZCBgdXNiX3NpNDcxM19kaXNjb25uZWN0YCwgYW5kIGdpdmVuIHRoYXQgVVNCIGRyaXZlcnMgaW4gZ2VuZXJhbCAqYXJlKiBmdXp6ZWQgYnkgc3l6a2FsbGVyLCBpdCBtYWtlcyB0aGlzIHBhdGNoIGFic29sdXRlbHkgd29ydGggZnV6emluZy4gT2theSwgbm93IGxldCdzIGdvIGZpbmQgdGhvc2UgY29uZmlnIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNDQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MjkuMTExODcwMDE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMjE3NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZy4qU0k0NzEzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWc6Mjpjb25maWcgVVNCX1NJNDcxM1xcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyBUcmFuc21pdHRlciBzdXBwb3J0IHdpdGggVVNCXFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnOjE3OmNvbmZpZyBQTEFURk9STV9TSTQ3MTNcXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYnMgU2k0NzEzIEZNIFJhZGlvIFRyYW5zbWl0dGVyIHN1cHBvcnQgd2l0aCBJMkNcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWc6MzE6Y29uZmlnIEkyQ19TSTQ3MTNcXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYnMgU2k0NzEzIEZNIFJhZGlvIFRyYW5zbWl0dGVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjI5LjE2MzA5NDQzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjE2MDMyNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfU0k0NzEzYDpcblxuKipEaXZpbmcgaW50byB0aGUgRGVwZW5kZW5jaWVzIG9mIFVTQl9TSTQ3MTMqKlxuXG5Pa2F5LCBzbyBgVVNCX1NJNDcxM2AuLi4gTGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBhcmNoaXRlY3R1cmFsIHVuZGVycGlubmluZ3MuIEZpcnN0LCBhIHF1aWNrIGRlcGVuZGVuY3kgYXVkaXQgaXMgaW4gb3JkZXIuIFdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBzeXN0ZW0gY29tcG9uZW50cyBkb2VzIGl0IGluaGVyZW50bHkgcmVseSB1cG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT9cblxuSSdtIHRoaW5raW5nLCBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLCB3ZSdsbCBuZWVkIGEgc29saWQgVVNCIHN0YWNrIOKAkyBwcm9iYWJseSBzb21ldGhpbmcgdGhhdCBjYW4gaGFuZGxlIGRldmljZSBlbnVtZXJhdGlvbiwgZW5kcG9pbnQgbWFuYWdlbWVudCwgYW5kIGRhdGEgdHJhbnNmZXIgcHJvcGVybHkuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFVTQiBwcm90b2NvbHMgdGhlIFNJNDcxMyBkZW1hbmRzLiBJcyBpdCBidWxrLCBpbnRlcnJ1cHQsIGlzb2Nocm9ub3VzPyBUaGF04oCZcyBjcml0aWNhbC5cblxuVGhlbiB0aGVyZSdzIHRoZSBTSTQ3MTMgaXRzZWxmLiBJcyB0aGVyZSBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhIHNwZWNpZmljIGRyaXZlciwgb3Igc29tZSBraW5kIG9mIHJlZ2lzdGVyLWxldmVsIGFjY2VzcyBjb2RlIGludm9sdmVkPyBXaGVyZeKAmXMgdGhlIGRhdGFzaGVldCBvbiB0aGF0IGNoaXA/IEknbGwgcHJvYmFibHkgbmVlZCB0aGF0LCBwcm9udG8uIEknbGwgaGF2ZSB0byBzZWUgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlJ3MgcmVnaXN0ZXJzIHRvIGFjdHVhbGx5ICp1c2UqIHRoZSByYWRpbyBjaGlwLlxuXG5GdXJ0aGVybW9yZSwgYXJlIHRoZXJlIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXM/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgcGFydGljdWxhciBPUyBrZXJuZWwsIGEgc3BlY2lmaWMgbWljcm9jb250cm9sbGVyLCBvciBtYXliZSBldmVuIGEgY2VydGFpbiBkZXZlbG9wbWVudCBib2FyZD8gQ3Jvc3MtcGxhdGZvcm0gcG9ydGFiaWxpdHkgaXMgb2Z0ZW4gYSBjb25jZXJuLCBzbyBJIG5lZWQgdG8gYXNzZXNzIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhpcyBtb2R1bGUgaXMgdG8gaXRzIGVudmlyb25tZW50LiBJZiB0aGlzIG5lZWRzIHRvIHJ1biBvbiBtdWx0aXBsZSBwbGF0Zm9ybXMsIEkgd2lsbCBoYXZlIHRvIHN0YXJ0IHRoaW5raW5nIG9mIGJ1aWxkaW5nIGEgc3lzdGVtIHdpdGggbW9kdWxhcml0eSBpbiBtaW5kLlxuXG5GaW5hbGx5LCBJJ2xsIG5lZWQgdG8gZGV0ZXJtaW5lIHdoYXQgZnVuY3Rpb25hbGl0aWVzIHRoZSBtb2R1bGUgZXhwb3NlcyDigJMgZG9lcyBpdCBvZmZlciBhbiBBUEkgZm9yIHR1bmluZywgZGVtb2R1bGF0aW9uLCBSRFMsIG9yIHdoYXQgaGF2ZSB5b3U/IFRoYXQgZGV0ZXJtaW5lcyAqaXRzKiBkZXBlbmRlbmN5IGZvb3RwcmludCBhbmQgaXRzIEFQSS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cgdGhyb3VnaCBhbGwgdGhlIGxldmVscyBvZiBhYnN0cmFjdGlvbi4gSSdsbCBiZSBhYmxlIHRvIHdvcmsgYmFja3dhcmQgZnJvbSB3aGF0IEkgbmVlZCBpdCB0byBkbyB0byB3aGF0IEkgZXhwZWN0IGl0IHRvIG5lZWQgdG8gZG8sIGluIHRoaXMgY2FzZS4gTGV0J3Mgc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NTI0NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjMzLjYyNDY5OTUzMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBVU0JfU0k0NzEzXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU2lsaWNvbiBMYWJzIFNpNDcxMyBGTSBSYWRpbyBUcmFuc21pdHRlciBzdXBwb3J0IHdpdGggVVNCXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgSTJDIFxcdTAwMjZcXHUwMDI2IFJBRElPX1NJNDcxM1xcbiAgIDU6XFx0XFx0c2VsZWN0IEkyQ19TSTQ3MTNcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgVGhpcyBpcyBhIGRyaXZlciBmb3IgVVNCIGRldmljZXMgd2l0aCB0aGUgU2lsaWNvbiBMYWJzIFNJNDcxM1xcbiAgIDg6XFx0XFx0ICBjaGlwLiBDdXJyZW50bHkgdGhlc2UgZGV2aWNlcyBhcmUga25vd24gdG8gd29yay5cXG4gICA5OlxcdFxcdCAgLSAxMGM0OjgyNDQ6IFNpbGljb24gTGFicyBGTSBUcmFuc21pdHRlciBVU0IgZGV2aWNlLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gY29ubmVjdCB0aGlzIHR5cGUgb2YgcmFkaW8gdG8geW91clxcbiAgMTI6XFx0XFx0ICBjb21wdXRlcidzIFVTQiBwb3J0LlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMTU6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcmFkaW8tdXNiLXNpNDcxMy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFBMQVRGT1JNX1NJNDcxM1xcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIlNpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXIgc3VwcG9ydCB3aXRoIEkyQ1xcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gSTJDIFxcdTAwMjZcXHUwMDI2IFJBRElPX1NJNDcxM1xcbiAgMjA6XFx0XFx0c2VsZWN0IEkyQ19TSTQ3MTNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MzMuNjI0NzYyMTAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMDMwNjI5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OlxuXG4qKkFzc2Vzc21lbnQgb2YgSW50ZXJmYWNpbmcgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHdpdGggc2V2ZXJhbCBpbnRlcmZhY2VzLCBhbmQgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gaGluZ2VzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbnRlcmFjdGlvbnMuIE15IGZpcnN0IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyB3aG9sZSB0aGluZyBoYW5ncyBvbiB0aHJlZSBrZXkgY29tcG9uZW50czogYFVTQmAsIGBJMkNgLCBhbmQgYFJBRElPX1NJNDcxM2AuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaG93IHRoZSBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLiBHaXZlbiB0aGF0IHRoZSBgUkFESU9fU0k0NzEzYCBsaWtlbHkgaXMgYXQgdGhlIGhlYXJ0IG9mIHRoaXMgY2hhbGxlbmdlLCB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBMZXQncyBkaWcgaW50byB0aGF0IGZpcnN0LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJhZGlvIGlzIGNvbW11bmljYXRpbmcgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA3MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MzcuNTQ1MDcwNjc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI0MjQyOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnLipSQURJT19TSTQ3MTNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZz02Mj1jb25maWcgUkFESU9fU0hBUksyXFxuLS1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctNzgtXFxuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnOjc5OmNvbmZpZyBSQURJT19TSTQ3MTNcXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctODAtXFx0dHJpc3RhdGUgXFxcIlNpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gd2l0aCBSRFMgVHJhbnNtaXR0ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6MzcuNzk3NTAxMDkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzg1ODE5MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUkFESU9fU0k0NzEzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgUkFESU9fU0k0NzEzYCBwcm9qZWN0LiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGdldCBhIGhhbmRsZSBvbiBpdHMgZGVwZW5kZW5jaWVzLiBJJ20gZ29pbmcgdG8gbWFwIG91dCBldmVyeXRoaW5nIGl0IHJlbGllcyBvbiwgZnJvbSB0aGUgb2J2aW91cyBoYXJkd2FyZSBpbnRlcmZhY2VzIGRvd24gdG8gdGhlIGxvd2VyLWxldmVsIGxpYnJhcmllcy4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIG92ZXJ2aWV3OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggZGVwZW5kZW5jeS4gQXJlIHRoZXkgbWF0dXJlPyBBY3RpdmVseSBtYWludGFpbmVkPyBTdWJqZWN0IHRvIGZyZXF1ZW50IGNoYW5nZXMgdGhhdCBjb3VsZCBicmVhayBjb21wYXRpYmlsaXR5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzIGluIHRoZSBzeXN0ZW0gSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBxdWljayBjb2RlIGluc3BlY3Rpb24gdG8gaWRlbnRpZnkgaW5jbHVkZSBmaWxlcyBhbmQgZXh0ZXJuYWwgbGlicmFyeSBjYWxscywgYnV0IHRoYXQncyBqdXN0IHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGRvY3VtZW50YXRpb24sIGNoZWNrIHZlcnNpb24gbnVtYmVycywgYW5kIG1heWJlIGV2ZW4gbG9vayBhdCB0aGUgc291cmNlIGNvZGUgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIHRoZW1zZWx2ZXMgdG8gZ2V0IGEgcmVhbGx5IHNvbGlkIGdyYXNwIG9uIHRoZSBhcmNoaXRlY3R1cmUuIFRoaXMgYW5hbHlzaXMgd2lsbCBndWlkZSBteSBhcHByb2FjaCB0byBpbnRlZ3JhdGluZyBvciB1cGRhdGluZyB0aGUgcmFkaW8gbW9kdWxlIGFuZCB3aWxsIGluZm9ybSBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlci4gQSBjbGVhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5IGxhbmRzY2FwZSB3aWxsIGJlIGNydWNpYWwgdG8gYXZvaWRpbmcgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MDksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOTo0Mi45NzYwODU0NjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc5LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDc5OlxcdGNvbmZpZyBSQURJT19TSTQ3MTNcXG4gIDgwOlxcdFxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYnMgU2k0NzEzIEZNIFJhZGlvIHdpdGggUkRTIFRyYW5zbWl0dGVyIHN1cHBvcnRcXFwiXFxuICA4MTpcXHRcXG4gIDgyOlxcdGNvbmZpZyBSQURJT19TSTQ3NlhcXG4gIDgzOlxcdFxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYm9yYXRvcmllcyBTaTQ3NnggSTJDIEZNIFJhZGlvXFxcIlxcbiAgODQ6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gIDg1OlxcdFxcdGRlcGVuZHMgb24gTUZEX1NJNDc2WF9DT1JFXFxuICA4NjpcXHRcXHRkZXBlbmRzIG9uIFNORF9TT0NcXG4gIDg3OlxcdFxcdHNlbGVjdCBTTkRfU09DX1NJNDc2WFxcbiAgODg6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOTo0Mi45NzYxNTMzODZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0MzkzNjYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgUkFESU9fU0k0NzEzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFJBRElPX1NJNDcxM2AgYW5kIHRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIHNpdHRpbmcgdGhlcmUgd2l0aCBubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuIFRoYXQgZmVlbHMgYSBiaXTigKZ1bnVzdWFsLCBlc3BlY2lhbGx5IGZvciBhIGRyaXZlci4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGFuZCwgaWYgaXQncyB0cnVlLCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuXG5cblNvLCBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgNzkuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZXNlIHNvcnRzIG9mIHNldHRpbmdzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgZ2V0IGRlY2xhcmVkLiBMZXQncyBzZWUgaWYgdGhlIGNvZGUgY29uZmlybXMgbXkgaW5pdGlhbCBodW5jaCwgYW5kLCBpZiBub3QsIHdoYXQgb3RoZXIgbW9kdWxlcyBhcmUgcmVxdWlyZWQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IG9idmlvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjQ2LjUyMDA5MzQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MDpcXHRcXG4gIDcxOlxcdFxcdCAgSW4gb3JkZXIgdG8gY29udHJvbCB5b3VyIHJhZGlvIGNhcmQsIHlvdSB3aWxsIG5lZWQgdG8gdXNlIHByb2dyYW1zXFxuICA3MjpcXHRcXHQgIHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUgVmlkZW8gRm9yIExpbnV4IEFQSS4gIEluZm9ybWF0aW9uIG9uXFxuICA3MzpcXHRcXHQgIHRoaXMgQVBJIGFuZCBwb2ludGVycyB0byBcXFwidjRsXFxcIiBwcm9ncmFtcyBtYXkgYmUgZm91bmQgYXRcXG4gIDc0OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL2luZGV4LnJzdFxcdTAwM2UuXFxuICA3NTpcXHRcXG4gIDc2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICA3NzpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByYWRpby1zaGFyazIuXFxuICA3ODpcXHRcXG4gIDc5OlxcdGNvbmZpZyBSQURJT19TSTQ3MTNcXG4gIDgwOlxcdFxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYnMgU2k0NzEzIEZNIFJhZGlvIHdpdGggUkRTIFRyYW5zbWl0dGVyIHN1cHBvcnRcXFwiXFxuICA4MTpcXHRcXG4gIDgyOlxcdGNvbmZpZyBSQURJT19TSTQ3NlhcXG4gIDgzOlxcdFxcdHRyaXN0YXRlIFxcXCJTaWxpY29uIExhYm9yYXRvcmllcyBTaTQ3NnggSTJDIEZNIFJhZGlvXFxcIlxcbiAgODQ6XFx0XFx0ZGVwZW5kcyBvbiBJMkNcXG4gIDg1OlxcdFxcdGRlcGVuZHMgb24gTUZEX1NJNDc2WF9DT1JFXFxuICA4NjpcXHRcXHRkZXBlbmRzIG9uIFNORF9TT0NcXG4gIDg3OlxcdFxcdHNlbGVjdCBTTkRfU09DX1NJNDc2WFxcbiAgODg6XFx0XFx0aGVscFxcbiAgODk6XFx0XFx0ICBDaG9vc2UgWSBoZXJlIGlmIHlvdSBoYXZlIHRoaXMgRk0gcmFkaW8gY2hpcC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6NDYuNTIwMTgwODlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNDcxNzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgUkFESU9fU0k0NzEzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBgUkFESU9fU0k0NzEzYC4uLiBpc24ndCB0aGF0IGp1c3QgYSBzaW1wbGUgdHJpc3RhdGUsIHdpdGggbm8gYXBwYXJlbnQgZGVwZW5kZW5jaWVzIGF0IGZpcnN0IGdsYW5jZT8gVGhhdCBzZWVtcyBpbmNyZWRpYmx5IHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IHNvbWV0aGluZyBmZWVscyBvZmYuIFdoeSBpcyBpdCBsb2NhdGVkIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZ2A/IFRoYXQgZmlsZSBpcyBzdHJ1Y3R1cmVkIHdpdGggbWVudXMgYW5kIGBpZmAgc3RhdGVtZW50cyBhbGwgb3ZlciB0aGUgcGxhY2UuIEl0J3MgaGlnaGx5IGxpa2VseSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGNvbmRpdGlvbmFsLCBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBmYWN0b3Igb3IgZW5hYmxpbmcgYSBicm9hZGVyIHJhZGlvIGZlYXR1cmUgc2V0LiBJIG5lZWQgdG8gYmUgc3VyZS4gQWxyaWdodCwgbGV0J3MgZ28gYmFjayB0byB0aGUgdG9wIG9mIGBkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdgIGFuZCB0cmFjZSB0aGlzIGZyb20gdGhlIGJlZ2lubmluZy4gR290dGEgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgY29udGV4dCB0aGF0IGRlZmluZXMgaXRzIHRydWUgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjQ5Ljg0NDkwMDkzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTXVsdGltZWRpYSBWaWRlbyBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFJBRElPX0FEQVBURVJTXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmFkaW8gQWRhcHRlcnNcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBNRURJQV9SQURJT19TVVBQT1JUXFxuICAxMDpcXHRcXHRkZWZhdWx0IFZJREVPX0RFVlxcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzZWxlY3RpbmcgQU0vRk0gcmFkaW8gYWRhcHRlcnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGlmIFJBRElPX0FEQVBURVJTXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBSQURJT19NQVhJUkFESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlIFxcXCJHdWlsbGVtb3QgTUFYSSBSYWRpbyBGTSAyMDAwIHJhZGlvXFxcIlxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbiAgMTk6XFx0XFx0c2VsZWN0IFJBRElPX1RFQTU3NVhcXG4gIDIwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6NDkuODQ0OTc2MTM2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjg5MjEyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGVwZW5kZW5jeSBDaGFpbiBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW50ZXJuYWwgZGVwZW5kZW5jeSBncmFwaCBpcyB0ZWxsaW5nIG1lIHRoYXQgYFJBRElPX0FEQVBURVJTYCBoaW5nZXMgb24gYm90aCBgVklERU9fREVWYCBhbmQgYE1FRElBX1JBRElPX1NVUFBPUlRgLiBDbGFzc2ljLiBNYWtlcyBzZW5zZTsgcmFkaW8gYWRhcHRlcnMgbWlnaHQgbmVlZCB2aWRlby1yZWxhdGVkIGluZnJhc3RydWN0dXJlIGFuZCwgb2J2aW91c2x5LCB0aGUgY29yZSByYWRpbyBzdXBwb3J0LlxuXG5HaXZlbiB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHNlY29uZCBwb2ludCAtIGBNRURJQV9SQURJT19TVVBQT1JUYC4gVGhhdCdzIHRoZSBrZXkgbm9kZSB0byBpbnZlc3RpZ2F0ZS5cbkxldCdzIGZpZ3VyZSBvdXQgd2hhdCBpcyBlbnRhaWxlZCB3aXRoaW4gYE1FRElBX1JBRElPX1NVUFBPUlRgLlxuSSBuZWVkIHRvIGNoZWNrICppdHMqIGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGl0IHByb3ZpZGVzLiBUaGlzIGhhcyB0byBiZSBhZGRyZXNzZWQgYmVmb3JlIEkgbG9vayBhdCBgUkFESU9fQURBUFRFUlNgIGFnYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTM0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOTo1My4yMTM5MDE0MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzM3MzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZy4qTUVESUFfUkFESU9fU1VQUE9SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTkwPWNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy05OS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTAwOmNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTEwMS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjI5OjUzLjI2MjI0NDczMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUxOTgxMjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCBjb2RlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBTdWJzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgbWVkaWEgc3Vic3lzdGVtJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQncyBzZWUuLi4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL21lZGlhL0tjb25maWdgLiBUaGF0J3MgdGhlIHBsYWNlIGZvciBhbGwgdGhlIHRvcC1sZXZlbCBmZWF0dXJlIHNlbGVjdGlvbnMsIHJpZ2h0PyBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gc29tZXRoaW5nIG5lYXIgbGluZSAxMDAsIHNvIEknbGwgZ28gZGlyZWN0bHkgdG8gdGhhdCBsb2NhdGlvbi4gSG9wZWZ1bGx5LCB0aGlzIHdpbGwgZ2V0IG1lIGNsb3NlIHRvIHRoZSBzZWN0aW9uIEknbSBtb3N0IGN1cmlvdXMgYWJvdXQuIFRoaXMgc2hvdWxkIGdldCBtZSBzdGFydGVkIG9uIGZpZ3VyaW5nIG91dCB3aGF0J3MgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgaW4gdGhhdCBhcmVhLiBJJ20gcmVhZHkgdG8gZGlnIGluIGFuZCBkZWNpcGhlciB0aG9zZSBLY29uZmlnIGRpcmVjdGl2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNTAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzoyOTo1Ni43MTQyMjkyMzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdGNvbmZpZyBNRURJQV9ESUdJVEFMX1RWX1NVUFBPUlRcXG4gIDkxOlxcdFxcdGJvb2xcXG4gIDkyOlxcdFxcdHByb21wdCBcXFwiRGlnaXRhbCBUVlxcXCIgaWYgTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDkzOlxcdFxcdGRlZmF1bHQgeSBpZiAhTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDk0OlxcdFxcdGhlbHBcXG4gIDk1OlxcdFxcdCAgRW5hYmxlIGRpZ2l0YWwgVFYgc3VwcG9ydC5cXG4gIDk2OlxcdFxcbiAgOTc6XFx0XFx0ICBTYXkgWSB3aGVuIHlvdSBoYXZlIGEgYm9hcmQgd2l0aCBkaWdpdGFsIHN1cHBvcnQgb3IgYSBib2FyZCB3aXRoXFxuICA5ODpcXHRcXHQgIGh5YnJpZCBkaWdpdGFsIFRWIGFuZCBhbmFsb2cgVFYuXFxuICA5OTpcXHRcXG4gMTAwOlxcdGNvbmZpZyBNRURJQV9SQURJT19TVVBQT1JUXFxuIDEwMTpcXHRcXHRib29sXFxuIDEwMjpcXHRcXHRwcm9tcHQgXFxcIkFNL0ZNIHJhZGlvIHJlY2VpdmVycy90cmFuc21pdHRlcnNcXFwiIGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXFxuIDEwMzpcXHRcXHRkZWZhdWx0IHkgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXFxuIDEwNDpcXHRcXHRoZWxwXFxuIDEwNTpcXHRcXHQgIEVuYWJsZSBBTS9GTSByYWRpbyBzdXBwb3J0LlxcbiAxMDY6XFx0XFxuIDEwNzpcXHRcXHQgIEFkZGl0aW9uYWwgaW5mbyBhbmQgZG9jcyBhcmUgYXZhaWxhYmxlIG9uIHRoZSB3ZWIgYXRcXG4gMTA4OlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vbGludXh0di5vcmdcXHUwMDNlXFxuIDEwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6Mjk6NTYuNzE0MzI0NjE1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjAzODYzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgQ29uZGl0aW9uYWwgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncy4gYE1FRElBX1JBRElPX1NVUFBPUlRgIGlzIGV4cGxpY2l0bHkgZGVmaW5lZCBhcyBhIGJvb2xlYW4g4oCTIG1ha2VzIHNlbnNlLCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBlaXRoZXIgKmlzKiBzdXBwb3J0ZWQgb3IgaXQgKmlzbid0Ki4gQ2xlYXIgZW5vdWdoLiBOb3csIHdoYXQgYWJvdXQgYFZJREVPX0RFVmA/IFRoYXQncyB0aGUgb25lIHRoYXQncyBnb3QgbWUgdGhpbmtpbmcuIEl0J3MgbGlrZWx5IGFsc28gYSBib29sZWFuLCBnaXZlbiB0aGUgY29udGV4dCwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBhc3N1bXB0aW9uLiBJcyBpdCB0cmVhdGVkIHRoZSBzYW1lIHdheSBpbiB0aGUgcmVsZXZhbnQgaGVhZGVycy9zb3VyY2UgZmlsZXM/IElzIGl0IGV4cGxpY2l0bHkgZGVmaW5lZCBhcyBhIGJvb2xlYW4sIG9yIG1pZ2h0IGl0IHJlcHJlc2VudCBzb21ldGhpbmcgZWxzZSwgc3VjaCBhcyBhIG51bWVyaWNhbCB2YWx1ZSByZXByZXNlbnRpbmcgYSBzcGVjaWZpYyB2aWRlbyBkZXZpY2Ugb3IgYSBjYXBhYmlsaXR5IG1hc2s/IEknbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhhdCdzIGJlaW5nIHVzZWQuIFRoZSBkZXZpbCBpcyBpbiB0aGUgZGV0YWlscywgYW5kIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgYmVmb3JlIEkgbWFrZSBhbnkgZGVjaXNpb25zIGJhc2VkIG9uIGl0LiBXZSBjYW4ndCBhZmZvcmQgYW55IGxhdGVudCBidWdzIHRoYXQgYSBtaXNpbnRlcnByZXRhdGlvbiBjb3VsZCBjYXVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyNiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MDAuNDM0NzE0NzRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTY0NzQ3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcuKlZJREVPX0RFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTE1Nz1tZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxNjA6Y29uZmlnIFZJREVPX0RFVlxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIlZpZGVvNExpbnV4IGNvcmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjAwLjYwNDM2NzM5M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg1NjgzNDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGRldmVsb3BtZW50IGFuZCBWNEwyOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFZpZGVvNExpbnV4IENvcmUgaW4gS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBpcyBgVklERU9fREVWYCBiZWluZyBsaW5rZWQgdG8gdGhlIFZpZGVvNExpbnV4IGNvcmUuIE1ha2VzIHNlbnNlLiBOb3csIG15IG5leHQgc3RlcCBpcyBwcmV0dHkgY2xlYXI6IEkgbmVlZCB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IGRlZmluaXRpb24gd2l0aCB0aGUgS2NvbmZpZyBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGF0J3MgYWxsIHN0cnVjdHVyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIHRvIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDE2MC4gVGhhdCdzIHVzdWFsbHkgYSBwcmV0dHkgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgcmVsYXRlZCBkZWZpbml0aW9ucyBvciBkZXBlbmRlbmNpZXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zIG9yIGZ1cnRoZXIgZXhwbGFuYXRpb25zIHRoZXJlLiBUaGlzIHNob3VsZCBxdWlja2x5IGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgYFZJREVPX0RFVmAgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA4NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjA0LjA5MDA1MzI3MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTU1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTU1OlxcdFxcbiAxNTY6XFx0XFxuIDE1NzpcXHRtZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuIDE1ODpcXHRcXHR2aXNpYmxlIGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxcbiAxNTk6XFx0XFxuIDE2MDpcXHRjb25maWcgVklERU9fREVWXFxuIDE2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlkZW80TGludXggY29yZVxcXCJcXG4gMTYyOlxcdFxcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfUkFESU9fU1VQUE9SVCB8fCBNRURJQV9TRFJfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUIHx8IE1FRElBX1RFU1RfU1VQUE9SVFxcbiAxNjM6XFx0XFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxcbiAxNjQ6XFx0XFx0c2VsZWN0IFJBVElPTkFMXFxuIDE2NTpcXHRcXHRzZWxlY3QgVklERU9CVUYyX1Y0TDIgaWYgVklERU9CVUYyX0NPUkVcXG4gMTY2OlxcdFxcdGhlbHBcXG4gMTY3OlxcdFxcdCAgRW5hYmxlcyB0aGUgVjRMMiBBUEksIHVzZWQgYnkgY2FtZXJhcywgYW5hbG9nIFRWLCB2aWRlbyBncmFiYmVycyxcXG4gMTY4OlxcdFxcdCAgcmFkaW8gZGV2aWNlcyBhbmQgYnkgc29tZSBpbnB1dCBkZXZpY2VzLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRjb25maWcgTUVESUFfQ09OVFJPTExFUlxcbiAxNzE6XFx0XFx0Ym9vbCBcXFwiTWVkaWEgQ29udHJvbGxlciBBUElcXFwiXFxuIDE3MjpcXHRcXHRkZWZhdWx0IE1FRElBX0NBTUVSQV9TVVBQT1JUIHx8IE1FRElBX0FOQUxPR19UVl9TVVBQT1JUIHx8IE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUXFxuIDE3MzpcXHRcXHRoZWxwXFxuIDE3NDpcXHRcXHQgIEVuYWJsZSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkgdXNlZCB0byBxdWVyeSBtZWRpYSBkZXZpY2VzIGludGVybmFsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjA0LjA5MDEyNTUzMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM1MDQ3OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkNvbmRpdGlvbmFsIERlcGVuZGVuY2llcyBpbiB0aGUgTWVkaWEgU3Vic3lzdGVtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSwgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBgVklERU9fREVWYCBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyBvYnZpb3VzbHkgaW1wb3J0YW50IGZvciBhbnkgdmlkZW8tcmVsYXRlZCBoYXJkd2FyZSBzdXBwb3J0LCBpcyBkaXJlY3RseSBjb250aW5nZW50IG9uIHRoZSBgTUVESUFfUkFESU9fU1VQUE9SVGAgZmxhZyBiZWluZyBlbmFibGVkLiBNYWtlcyBzZW5zZSDigJMgaWYgeW91J3JlIG5vdCBzdXBwb3J0aW5nIHJhZGlvIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBicm9hZGVyIG1lZGlhIGZyYW1ld29yaywgeW91J3JlIGxlc3MgbGlrZWx5IHRvIG5lZWQgc3BlY2lmaWMgdmlkZW8gZGV2aWNlIGRyaXZlcnMuXG5cbk5vdywgdGhlIGNydWNpYWwgcGllY2UgaXMgdGhhdCBgTUVESUFfU1VQUE9SVGAgaXMgdGhlIHRvcC1sZXZlbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCdzIHRoZSBnYXRld2F5LiBJZiBgTUVESUFfU1VQUE9SVGAgaXMgZGlzYWJsZWQsIGV2ZXJ5dGhpbmcgdW5kZXJuZWF0aCBpdCwgaW5jbHVkaW5nIGBNRURJQV9SQURJT19TVVBQT1JUYCBhbmQgdGhlcmVmb3JlIHVsdGltYXRlbHkgYFZJREVPX0RFVmAsIGdldHMgc2h1dCBkb3duLiBJdOKAmXMgYSBjbGVhbiwgaGllcmFyY2hpY2FsIGRlcGVuZGVuY3kgc3RydWN0dXJlLiBUaGF04oCZcyBnb29kLCBrZWVwcyB0aGluZ3MgbWFuYWdlYWJsZSBhbmQgbG9naWNhbC4gSSBuZWVkIHRvIGtlZXAgdGhpcyByZWxhdGlvbnNoaXAgaW4gbWluZCB3aGVuIEkgYW0gdHJvdWJsZXNob290aW5nIHRoaXMgYXJlYS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY3NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MDcuNzI1MTc1NjE0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwNzY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcuKk1FRElBX1NVUFBPUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMD1zb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvY2VjL0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxMjptZW51Y29uZmlnIE1FRElBX1NVUFBPUlRcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk11bHRpbWVkaWEgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZz0yMz1pZiBNRURJQV9TVVBQT1JUXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoyNTpjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiRmlsdGVyIG1lZGlhIGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjA3Ljc3MDY5MDU5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDU1NzIyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZW5hYmxlIGBNRURJQV9TVVBQT1JUYC4gUmlnaHQsIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgYFVTQl9TSTQ3MTNgIGNvbmZpZ3VyYXRpb24uIEl0IGFwcGVhcnMgdGhhdCBgVVNCX1NJNDcxM2AgaXMgY29udGluZ2VudCBvbiBgVVNCYCwgYEkyQ2AsIGFuZCBgUkFESU9fU0k0NzEzYC4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgYFJBRElPX1NJNDcxM2AgcmVsaWVzIG9uIGBSQURJT19BREFQVEVSU2AuIE5vdywgYFJBRElPX0FEQVBURVJTYCBpbiB0dXJuIGRlcGVuZHMgb24gYm90aCBgVklERU9fREVWYCBhbmQgYE1FRElBX1JBRElPX1NVUFBPUlRgLiAgQWhhLCBhbmQgaGVyZSB3ZSBoYXZlIGl0LCBgVklERU9fREVWYCBpdHNlbGYgaXMgZGVwZW5kZW50IG9uIGBNRURJQV9TVVBQT1JUYC4gU28sIHB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCAqbXVzdCogYmUgZW5hYmxlZCBhcmUgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBWSURFT19ERVZgLCBgUkFESU9fQURBUFRFUlNgLCBgUkFESU9fU0k0NzEzYCwgYW5kIGZpbmFsbHksIGBVU0JfU0k0NzEzYC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gTGV0J3MgcmV2aWV3IHRoZSB0eXBlcy4gYE1FRElBX1NVUFBPUlRgIGlzIGEgdHJpc3RhdGUsIGFzIGFyZSBgVklERU9fREVWYCwgYFJBRElPX0FEQVBURVJTYCwgYFJBRElPX1NJNDcxM2AsIGFuZCBgVVNCX1NJNDcxM2AuIGBNRURJQV9SQURJT19TVVBQT1JUYCBpcyBqdXN0IGEgYm9vbC4gSXQncyBhIGJpdCBtb3JlIGludm9sdmVkIHRoYW4ganVzdCBzZXR0aW5nIHRoZSB2YWx1ZXMuXG5cbkkgaGFkIGhvcGVkIHRoYXQgZW5hYmxpbmcgYFVTQl9TSTQ3MTNgIGFsb25lIG1pZ2h0IHRyaWdnZXIgdGhlIGJ1aWxkIHN5c3RlbSB0byBzZWxlY3QgdGhlIHJlc3QgYXV0b21hdGljYWxseS4uLiBubywgdGhlIGBkZXBlbmRzIG9uYCBkZWNsYXJhdGlvbnMgbWVhbiB0aGF0IEkgbXVzdCBleHBsaWNpdGx5IGVuYWJsZSBlYWNoIG9mIHRoZSBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMuXG5cbk9oISBJJ3ZlIG1pc3NlZCBzb21ldGhpbmcuIGBNRURJQV9SQURJT19TVVBQT1JUYCBpcyBzZXQgdG8gJ3knIGJ5IGRlZmF1bHQgaWYgYCFNRURJQV9TVVBQT1JUX0ZJTFRFUmAuIEkgc2hvdWxkIGNoZWNrIGBNRURJQV9TVVBQT1JUX0ZJTFRFUmAgdG8gZW5zdXJlIEknbSBnZXR0aW5nIHRoZSBkZXNpcmVkIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA4MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDoxMi43NzYyNjU4MTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdCAgQWRkaXRpb25hbCBpbmZvIGFuZCBkb2NzIGFyZSBhdmFpbGFibGUgb24gdGhlIHdlYiBhdFxcbiAgMjE6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly9saW51eHR2Lm9yZ1xcdTAwM2VcXG4gIDIyOlxcdFxcbiAgMjM6XFx0aWYgTUVESUFfU1VQUE9SVFxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgTUVESUFfU1VQUE9SVF9GSUxURVJcXG4gIDI2OlxcdFxcdGJvb2wgXFxcIkZpbHRlciBtZWRpYSBkcml2ZXJzXFxcIlxcbiAgMjc6XFx0XFx0ZGVmYXVsdCB5IGlmICFFWFBFUlRcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgIENvbmZpZ3VyaW5nIHRoZSBtZWRpYSBzdWJzeXN0ZW0gY2FuIGJlIGNvbXBsZXgsIGFzIHRoZXJlIGFyZVxcbiAgMzA6XFx0XFx0ICAgaHVuZHJlZHMgb2YgZHJpdmVycyBhbmQgb3RoZXIgY29uZmlnIG9wdGlvbnMuXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgIFRoaXMgbWVudSBvZmZlcnMgb3B0aW9uIHRoYXQgd2lsbCBoZWxwIHRoZSBLZXJuZWwncyBjb25maWdcXG4gIDMzOlxcdFxcdCAgIHN5c3RlbSB0byBoaWRlIGRyaXZlcnMgdGhhdCBhcmUgb3V0IG9mIHRoZSBzY29wZSBvZiB0aGVcXG4gIDM0OlxcdFxcdCAgIHVzZXIgbmVlZHMsIGFuZCBkaXNhYmxpbmcgY29yZSBzdXBwb3J0IGZvciB1bnVzZWQgQVBJcy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICAgSWYgbm90IHNlbGVjdGVkLCBhbGwgbm9uLW9wdGlvbmFsIG1lZGlhIGNvcmUgZnVuY3Rpb25hbGl0eVxcbiAgMzc6XFx0XFx0ICAgbmVlZGVkIHRvIHN1cHBvcnQgbWVkaWEgZHJpdmVycyB3aWxsIGJlIGVuYWJsZWQuIEFsc28sIGFsbFxcbiAgMzg6XFx0XFx0ICAgbWVkaWEgZGV2aWNlIGRyaXZlcnMgc2hvdWxkIGJlIHNob3duLlxcbiAgMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjEyLjc3NjM0NTk4MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODM2MzUyODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGNvbmZpZ3VyYXRpb24gdGFzay5cblxuKipDb25maWd1cmF0aW9uIERlY2lzaW9uIEJyZWFrZG93bioqXG5cbkFscmlnaHQsIGxldCdzIGVuYWJsZSB0aGVzZSBmZWF0dXJlcyByZWxhdGVkIHRvIHJhZGlvIHN1cHBvcnQgd2l0aGluIHRoaXMgc3lzdGVtLiBJIHRoaW5rIHdlIG5lZWQgdG8gYWN0aXZhdGUgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBSQURJT19BREFQVEVSU2AsIGBSQURJT19TSTQ3MTNgLCBhbmQgYFVTQl9TSTQ3MTNgLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHN1aXRlIG9mIG9wdGlvbnMgdG8gZ2l2ZSB1cyBhIHNvbGlkIHJhZGlvIGNhcGFiaWxpdHkuXG5cbldhaXQgYSBzZWNvbmQsIEkgcmVtZW1iZXIgYFJBRElPX1NJNDcxM2AgbGl2ZXMgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYCBmaWxlLCBzbyBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE1vcmUgaW1wb3J0YW50bHksIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGFyb3VuZCB0aGlzIHNldHRpbmcuIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgUkFESU9fU0k0NzEzYCBpcyBpbmRlZWQgZ3VhcmRlZCBieSBgaWYgUkFESU9fQURBUFRFUlNgLiBJIGNhbid0IGJlIGVuYWJsaW5nIGl0IHVubGVzcyB0aGUgYnJvYWRlciBhZGFwdGVyIHN1cHBvcnQgaXMgYWxzbyBhY3RpdmUsIG90aGVyd2lzZSwgdGhpcyB3aWxsIG5ldmVyIHdvcmsgYXMgaW50ZW5kZWQuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBkZXBlbmRlbmN5IGlzIGVzc2VudGlhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwODEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjE2LjYxMjcwMTAzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE0OlxcdGlmIFJBRElPX0FEQVBURVJTXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBSQURJT19NQVhJUkFESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlIFxcXCJHdWlsbGVtb3QgTUFYSSBSYWRpbyBGTSAyMDAwIHJhZGlvXFxcIlxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbiAgMTk6XFx0XFx0c2VsZWN0IFJBRElPX1RFQTU3NVhcXG4gIDIwOlxcdFxcdGhlbHBcXG4gIDIxOlxcdFxcdCAgQ2hvb3NlIFkgaGVyZSBpZiB5b3UgaGF2ZSB0aGlzIHJhZGlvIGNhcmQuICBUaGlzIGNhcmQgbWF5IGFsc28gYmVcXG4gIDIyOlxcdFxcdCAgZm91bmQgYXMgR2VtdGVrIFBDSSBGTS5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBJbiBvcmRlciB0byBjb250cm9sIHlvdXIgcmFkaW8gY2FyZCwgeW91IHdpbGwgbmVlZCB0byB1c2UgcHJvZ3JhbXNcXG4gIDI1OlxcdFxcdCAgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBWaWRlbyBGb3IgTGludXggQVBJLiAgSW5mb3JtYXRpb24gb25cXG4gIDI2OlxcdFxcdCAgdGhpcyBBUEkgYW5kIHBvaW50ZXJzIHRvIFxcXCJ2NGxcXFwiIHByb2dyYW1zIG1heSBiZSBmb3VuZCBhdFxcbiAgMjc6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvaW5kZXgucnN0XFx1MDAzZS5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gIDMwOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHJhZGlvLW1heGlyYWRpby5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIFJBRElPX1NBQTc3MDZIXFxuICAzMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU0FBNzcwNkggQ2FyIFJhZGlvIERTUFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MTYuNjEyODEyMTI0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjI5NTgyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyB0aGUgY29kZSBJJ20gbG9va2luZyBhdCBpcyBkZWZpbml0ZWx5IGdhdGVkIGJ5IGBpZiBSQURJT19BREFQVEVSU2AuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYFJBRElPX0FEQVBURVJTYCBpcyBkZWZpbmVkLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBzcGVjaWZpYyBjb21wb25lbnQgSSBhbSBpbnRlcmVzdGVkIGluLCBgVVNCX1NJNDcxM2AsIGlzIGFsc28gcHJvdGVjdGVkIGJ5IHRoaXMuIExldCBtZSBjaGVjayBpdHMgS2NvbmZpZyBmaWxlLCB3aGljaCBJIGJlbGlldmUgaXMgaW4gYGRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWdgLiBBaCwgd2FpdCwgYSBzbWFsbCBkZXRhaWwuLi4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhpcyBmaWxlIGlzIHNvdXJjZWQgZnJvbSBgZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnYC4gU28sIEknbGwgbmVlZCB0byBmb2xsb3cgdGhlIHRyYWlsIGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzQwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MTkuNjc1NzcyOTA2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTcyMTMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UuKnNpNDcxM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnPTIwND1zb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzB4L0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnOjIwNTpzb3VyY2UgXFxcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL0tjb25maWdcXFwiXFxuZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnLTIwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MTkuNzI3NTAwNzAxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDg0MjIzOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIEZpbGUgTG9jYXRpb24gYW5kIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uLiBUaGUgc291cmNlIGZvciB0aGlzIGlzIGRlZmluaXRlbHkgdGhlIGBkcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWdgIGZpbGUuIE5vIHF1ZXN0aW9uIGFib3V0IGl0LiBJJ3ZlIGdvdCB0byBlbnN1cmUgdGhlIGZpbGUgaXMgcHJvcGVybHkgc3RydWN0dXJlZCwgcGFydGljdWxhcmx5IHRoYXQgdGhlIGBlbmRpZmAgaXMgcHJlc2VudCBmb3IgdGhlIGNvbmRpdGlvbmFsIGJsb2NrLCBhbmQgdGhhdCB0aGUgcHJvcGVyIG1hY3JvIGlzIHVzZWQ6IGBSQURJT19BREFQVEVSU2AuIFRoYXQncyBjcml0aWNhbCBmb3IgdGhlIHJhZGlvIGFkYXB0ZXJzIGNvbmZpZ3VyYXRpb25zLiBHb3R0YSBtYWtlIHN1cmUgdGhhdCdzIGFsbCBidXR0b25lZCB1cCB0byBhdm9pZCBhbnkgZG93bnN0cmVhbSBidWlsZCBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTE2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MjIuNzc1OTI1NDA2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM3Mzk3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbmRpZi4qUkFESU9fQURBUFRFUlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9yYWRpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZz00ODY9ZW5kaWYgIyBWNExfUkFESU9fSVNBX0RSSVZFUlNcXG5kcml2ZXJzL21lZGlhL3JhZGlvL0tjb25maWctNDg3LVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vS2NvbmZpZzo0ODg6ZW5kaWYgIyBSQURJT19BREFQVEVSU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDoyMi44MjczMDk0MTFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzExNzIyMzU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBVU0JfU0k0NzEzYCBEcml2ZXIgQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9sIEZvY3VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVVNCX1NJNDcxM2AgZHJpdmVyIGFuZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEl0J3MgbmVzdGxlZCB3aXRoaW4gdGhlIGBpZiBSQURJT19BREFQVEVSU2AgYmxvY2ssIHdoaWNoIGlzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBUbyBlbmFibGUgaXQsIEkgbmVlZCB0byBlbnN1cmUgYSBmZXcgdGhpbmdzIGFyZSBzZXQ6IGBNRURJQV9TVVBQT1JUYCwgYE1FRElBX1JBRElPX1NVUFBPUlRgLCBgUkFESU9fQURBUFRFUlNgLCBgUkFESU9fU0k0NzEzYCwgYW5kIG9mIGNvdXJzZSwgYFVTQl9TSTQ3MTNgIGl0c2VsZi5cblxuTm93LCBgVVNCX1NJNDcxM2AgcmVsaWVzIG9uIGBVU0JgIGFuZCBgSTJDYCwgd2hpY2ggYXJlIHByZXR0eSBzdGFuZGFyZCwgdGhhbmtmdWxseS4gIE5vIG90aGVyIGRlcGVuZGVuY2llcyBzZWVtIHRvIGV4aXN0LCBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZy4gIFNwZWNpZmljYWxseSwgYFVTQl9TSTQ3MTNgIGRlcGVuZHMgb24gYFVTQiBcdTAwMjZcdTAwMjYgSTJDIFx1MDAyNlx1MDAyNiBSQURJT19TSTQ3MTNgLCBhbmQgYFJBRElPX1NJNDcxM2AgaGFzIG5vIGRlcGVuZGVuY2llcyBvZiBpdHMgb3duLiBgUkFESU9fQURBUFRFUlNgIHJlbGllcyBvbiBgVklERU9fREVWYCBhbmQgYE1FRElBX1JBRElPX1NVUFBPUlRgLiAgYFZJREVPX0RFVmAgaGFzIHNvbWUgZmxleGliaWxpdHksIGRlcGVuZGluZyBvbiBgSTJDYCBvciB0aGUgYWJzZW5jZSBvZiBpdCwgd2hpbGUgYE1FRElBX1JBRElPX1NVUFBPUlRgIGlzIGEgc2ltcGxlIGJvb2xlYW4uICBTbyB0aGUgY29uZmlncyBJIG5lZWQgdG8gdmVyaWZ5IGFyZTogYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBWSURFT19ERVZgLCBgUkFESU9fQURBUFRFUlNgLCBgUkFESU9fU0k0NzEzYCwgYW5kIGBVU0JfU0k0NzEzYC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCwgYHVzYl9zaTQ3MTNfcHJvYmVgLCBhbmQgYHVzYl9zaTQ3MTNfZGlzY29ubmVjdGAuIE15IHByaW1hcnkgZm9jdXMgaXMgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBzeW1ib2xzLiBMZXQncyBzZWUuLi4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBzdGF0aWM/IFllcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgYXJlIHBvdGVudGlhbCBmb2N1cyBzeW1ib2xzLCBrZWVwaW5nIHRoZSBwcm9tcHQgaW5zdHJ1Y3Rpb25zIGluIG1pbmQuXG5cbkFoLCBgdXNiX3NpNDcxM19wcm9iZWAgYW5kIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgIGFyZSBhc3NpZ25lZCB0byBgc3RydWN0IHVzYl9kcml2ZXJgIGNhbGxiYWNrcy4gVGhleSBhcmUgbm90IGlubGluZWQsIHNpbmNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4uIEdvb2QuICBUaGUgcHJvbXB0IGZhdm9ycyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuICBUaGVzZSBhcmUgKnN0YXRpYyosIGJ1dCBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycywgdGhleSBhcmUgKm5vdCogaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIFNvLCB5ZXMsIGV2ZW4gdGhvdWdoIHRoZXkncmUgc3RhdGljLCB0aGV5J3JlIHZhbGlkIGVudHJ5cG9pbnRzIGZvciB0aGUgZHJpdmVyLiBUaGVyZWZvcmUsIHRoZXNlIGNhbiBpbmRlZWQgYmUgdHJlYXRlZCBhcyBmb2N1cyBzeW1ib2xzLiBBbmQgd2hhdCBhYm91dCBgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZWA/IEl0J3MgYXNzaWduZWQgdG8gYHY0bDJfZGV2LnJlbGVhc2VgLiBUaGF0J3MgYW5vdGhlciBBUEkgZW50cnlwb2ludCwgc28gaXTigJlzIHZhbGlkIHRvby4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM5MSwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDoyOS45NDQ1MzY3NjJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzOTE4MDYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmM9MTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgdXNiX3NpNDcxM19mb3BzID0ge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTEyNy1cXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmM6MTI4OnN0YXRpYyB2b2lkIHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2Uoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldilcXG5kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMtMTI5LXtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYz00MDg9c3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvcmFkaW8tdXNiLXNpNDcxMy5jLTQ2Mi1cXHRyYWRpby1cXHUwMDNldmRldi5jdHJsX2hhbmRsZXIgPSBzZC1cXHUwMDNlY3RybF9oYW5kbGVyO1xcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYzo0NjM6XFx0cmFkaW8tXFx1MDAzZXY0bDJfZGV2LnJlbGVhc2UgPSB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlO1xcbmRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYy00NjQtXFx0c3Ryc2NweShyYWRpby1cXHUwMDNldmRldi5uYW1lLCByYWRpby1cXHUwMDNldjRsMl9kZXYubmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMjM6MzA6MzAuMjgzNzIyNTA3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NzkxNzIzODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgQ29ycmVjdG5lc3MgYW5kIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyB0aGUgYWRkcmVzcyBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgYmVpbmcgdGFrZW4sIHdoaWNoIG1lYW5zIHRoZXkgYXJlbid0IGlubGluZWQuIFRoYXQncyBnb29kOyB0aGUgcHJvbXB0IHByZWZlcnMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMZXQncyBzZWUuLi4gYHVzYl9zaTQ3MTNfcHJvYmVgLCBgdXNiX3NpNDcxM19kaXNjb25uZWN0YCwgYW5kIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gVGhleSdyZSBhbGwgc3RhdGljLCBidXQgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbiwgdGhlIGNvbXBpbGVyIGlzbid0IGlubGluaW5nIHRoZW0uIFRoZXkgYXJlIGFsbCBBUEkgZW50cnlwb2ludHMsIGNhbGxiYWNrcywgc28gdGhlc2UgYXJlIGV4Y2VsbGVudCBjYW5kaWRhdGVzIHRvIGZvY3VzIG9uLiBUaGV5IGNoZWNrIG91dC5cblxuTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIFdlIG5lZWQgYE1FRElBX1NVUFBPUlRgLCBgTUVESUFfUkFESU9fU1VQUE9SVGAsIGBWSURFT19ERVZgLCBgUkFESU9fQURBUFRFUlNgLCBgUkFESU9fU0k0NzEzYCwgYW5kIGBVU0JfU0k0NzEzYCwgd2hpY2ggc2VsZWN0cyBgSTJDX1NJNDcxM2Agc28gd2UgY2FuIGxlYXZlIHRoYXQgYXMgaW1wbGllZC4gVGhhdCBzaG91bGQgY292ZXIgaXQsIGdvb2QuIFdlJ2xsIGJlIHNldHRpbmcgdGhvc2UuXG5cbkxldCdzIHJldmlldyB0aGUgcGF0Y2ggaXRzZWxmIGFnYWluLiBJdCBsb29rcyBsaWtlIGEgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgaXNzdWUuIEl0J3MgbW92aW5nIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCBhbmQgYGkyY19kZWxfYWRhcHRlcmAgb3V0IG9mIGB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlYCBhbmQgaW50byB0aGUgZXJyb3IgcGF0aHMgb2YgYHVzYl9zaTQ3MTNfcHJvYmVgIGFuZCBgdXNiX3NpNDcxM19kaXNjb25uZWN0YC4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpc3N1ZSB0aGF0IHRoZSBwYXRjaCBhaW1zIHRvIHJlc29sdmUuXG5cblRoaXMgaXMgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIG9iamVjdCBsaWZlY3ljbGUsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGF0IG5vIG5ldyBidWdzIChkb3VibGUgZnJlZXMsIGxlYWtzLCBldGMuKSBhcmUgaW50cm9kdWNlZCBpbiB0aG9zZSBlcnJvciBvciBkaXNjb25uZWN0IHBhdGhzLlxuSSB3aWxsIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTg0LCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDo0MC4wNjI4OTgxMzZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTA0NDQzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfUkFESU9fU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCIsXG4gICAgXCJSQURJT19BREFQVEVSU1wiLFxuICAgIFwiUkFESU9fU0k0NzEzXCIsXG4gICAgXCJVU0JfU0k0NzEzXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3NpNDcxM19wcm9iZVwiLFxuICAgIFwidXNiX3NpNDcxM19kaXNjb25uZWN0XCIsXG4gICAgXCJ1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNjb25uZWN0IHBhdGhzIG9mIHRoZSBzaTQ3MTMgVVNCIHJhZGlvIGRyaXZlciwgbW92aW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgSTJDIGFkYXB0ZXIgZGVsZXRpb24gb3V0IG9mIHRoZSByZWxlYXNlIGNhbGxiYWNrLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBkdW1teV9oY2QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiTUVESUFfUkFESU9fU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCIsXG4gICAgXCJSQURJT19BREFQVEVSU1wiLFxuICAgIFwiUkFESU9fU0k0NzEzXCIsXG4gICAgXCJVU0JfU0k0NzEzXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3NpNDcxM19wcm9iZVwiLFxuICAgIFwidXNiX3NpNDcxM19kaXNjb25uZWN0XCIsXG4gICAgXCJ1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNjb25uZWN0IHBhdGhzIG9mIHRoZSBzaTQ3MTMgVVNCIHJhZGlvIGRyaXZlciwgbW92aW5nIGRldmljZSB1bnJlZ2lzdHJhdGlvbiBhbmQgSTJDIGFkYXB0ZXIgZGVsZXRpb24gb3V0IG9mIHRoZSByZWxlYXNlIGNhbGxiYWNrLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBkdW1teV9oY2QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjQwLjE0MTk0OTMwN1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNjY2NTI5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDo0MC4xNDI0OTg2MThaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIxNjYxMDAxMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGRldmljZSBsaWZlY3ljbGUgaXNzdWUgYnkgbW92aW5nIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCBhbmQgYGkyY19kZWxfYWRhcHRlcmAgZnJvbSB0aGUgdmlkZW8gZGV2aWNlIHJlbGVhc2UgY2FsbGJhY2sgdG8gdGhlIFVTQiBkaXNjb25uZWN0IGZ1bmN0aW9uLCBhbmQgZml4aW5nIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlc2UgY2hhbmdlcyBmaXggYSB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBidWcgdGhhdCBvY2N1cnMgd2hlbiB0aGUgZGV2aWNlIGlzIGRpc2Nvbm5lY3RlZCBvciBmYWlscyB0byBwcm9iZS4gU3VjaCBtZW1vcnkgY29ycnVwdGlvbiBhbmQgbGlmZWN5Y2xlIGJ1Z3MgYXJlIHBlcmZlY3RseSBoYW5kbGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjhlZjNmNzlmYWIxMTMzM2JjZjgwMGFkZjlkNWJiYmI2NjBkNjY5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMjM6Mjk6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbmluZGV4IDZlNjc2NDE0M2UyMWYuLmQ1ZDk3ZTMzNjBkOGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9yYWRpby11c2Itc2k0NzEzLmNcbisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY1xuQEAgLTEyOCwxMCArMTI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1c2Jfc2k0NzEzX2ZvcHMgPSB7XG4gc3RhdGljIHZvaWQgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KVxuIHtcbiBcdHN0cnVjdCBzaTQ3MTNfdXNiX2RldmljZSAqcmFkaW8gPSB0b19zaTQ3MTNfZGV2KHY0bDJfZGV2KTtcbi1cdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9IFx1MDAyNnJhZGlvLVx1MDAzZWkyY19hZGFwdGVyO1xuIFxuLVx0aTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpO1xuLVx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gXHRrZnJlZShyYWRpby1cdTAwM2VidWZmZXIpO1xuIFx0a2ZyZWUocmFkaW8pO1xuIH1cbkBAIC00ODgsNyArNDg1LDkgQEAgc3RhdGljIGludCB1c2Jfc2k0NzEzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIFx0cmV0dXJuIDA7XG4gXG4gZGVsX2FkYXB0ZXI6XG4rXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdGkyY19kZWxfYWRhcHRlcihhZGFwdGVyKTtcbitcdGdvdG8gZXJyX3Y0bDI7XG4gZXJyX2kyY2RldjpcbiBcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIGVycl92NGwyOlxuQEAgLTUwNiw4ICs1MDUsMTEgQEAgc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZyYWRpby1cdTAwM2Vsb2NrKTtcbiBcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7XG4gXHR2aWRlb191bnJlZ2lzdGVyX2RldmljZShcdTAwMjZyYWRpby1cdTAwM2V2ZGV2KTtcbi1cdHY0bDJfZGV2aWNlX2Rpc2Nvbm5lY3QoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJhZGlvLVx1MDAzZWxvY2spO1xuK1xuK1x0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4rXHRpMmNfZGVsX2FkYXB0ZXIoXHUwMDI2cmFkaW8tXHUwMDNlaTJjX2FkYXB0ZXIpO1xuK1xuIFx0djRsMl9kZXZpY2VfcHV0KFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQyMzozMDo0MC4xNDI0OTk5MThaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxNjYwNzU2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBMaWZlY3ljbGUgTWFuYWdlbWVudCBpbiB0aGUgU0k0NzEzIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCdzIGRlYWxpbmcgd2l0aCBzb21lIGtpbmQgb2YgbGlmZWN5Y2xlIGlzc3VlLCBwcm9iYWJseSBhIG1lbW9yeSBtYW5hZ2VtZW50IHByb2JsZW0sIGdpdmVuIHRoZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIEkgc2VlIHRoYXQgYHVzYl9zaTQ3MTNfdmlkZW9fZGV2aWNlX3JlbGVhc2VgIGlzIGxvc2luZyB0aGUgY2FsbHMgdG8gYGkyY19kZWxfYWRhcHRlcmAgYW5kIGB2NGwyX2RldmljZV91bnJlZ2lzdGVyYCwgYW5kIHRoZXNlIGNhbGxzIGFyZSBiZWluZyBhZGRlZCB0byBgdXNiX3NpNDcxM19kaXNjb25uZWN0YC4gQWRkaXRpb25hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYHVzYl9zaTQ3MTNfcHJvYmVgIGlzIGJlaW5nIHR3ZWFrZWQuIFRoaXMgcmFpc2VzIGEgcmVkIGZsYWcuIEl0IHNtZWxscyBsaWtlIGEgZml4IGZvciBhIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgYSBtZW1vcnkgbGVhayBzaXR1YXRpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyLlxuXG5MZXQncyBsb29rIGF0IHRoZSBjb2RlIHNuaXBwZXRzLiBJbiBgdXNiX3NpNDcxM192aWRlb19kZXZpY2VfcmVsZWFzZWAsIHRob3NlIGNhbGxzIGFyZSBnb25lIG5vdywgd2hpY2ggaXMgdGhlIGNydXggb2YgdGhlIGNoYW5nZS4gXG5cbmBgYGNcbiBzdGF0aWMgdm9pZCB1c2Jfc2k0NzEzX3ZpZGVvX2RldmljZV9yZWxlYXNlKHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpXG4ge1xuIFx0c3RydWN0IHNpNDcxM191c2JfZGV2aWNlICpyYWRpbyA9IHRvX3NpNDcxM19kZXYodjRsMl9kZXYpO1xuLVx0c3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyID0gXHUwMDI2cmFkaW8tXHUwMDNlaTJjX2FkYXB0ZXI7XG4gXG4tXHRpMmNfZGVsX2FkYXB0ZXIoYWRhcHRlcik7XG4tXHR2NGwyX2RldmljZV91bnJlZ2lzdGVyKFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdGtmcmVlKHJhZGlvLVx1MDAzZWJ1ZmZlcik7XG4gXHRrZnJlZShyYWRpbyk7XG4gfVxuYGBgXG5cbkluIGB1c2Jfc2k0NzEzX3Byb2JlYCwgSSBzZWUgdGhlIGNhbGxzIGFyZSBhZGRlZCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcuXG5cbmBgYGNcbiBkZWxfYWRhcHRlcjpcbitcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuIFx0aTJjX2RlbF9hZGFwdGVyKGFkYXB0ZXIpO1xuK1x0Z290byBlcnJfdjRsMjtcbiBlcnJfaTJjZGV2OlxuIFx0djRsMl9kZXZpY2VfdW5yZWdpc3RlcihcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gZXJyX3Y0bDI6XG5gYGBcblxuQW5kIGluIGB1c2Jfc2k0NzEzX2Rpc2Nvbm5lY3RgOlxuXG5gYGBjXG4gc3RhdGljIHZvaWQgdXNiX3NpNDcxM19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIHtcbiBcdG11dGV4X2xvY2soXHUwMDI2cmFkaW8tXHUwMDNlbG9jayk7XG4gXHR1c2Jfc2V0X2ludGZkYXRhKGludGYsIE5VTEwpO1xuIFx0dmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2cmFkaW8tXHUwMDNldmRldik7XG4tXHR2NGwyX2RldmljZV9kaXNjb25uZWN0KFx1MDAyNnJhZGlvLVx1MDAzZXY0bDJfZGV2KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZyYWRpby1cdTAwM2Vsb2NrKTtcbitcbitcdHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoXHUwMDI2cmFkaW8tXHUwMDNldjRsMl9kZXYpO1xuK1x0aTJjX2RlbF9hZGFwdGVyKFx1MDAyNnJhZGlvLVx1MDAzZWkyY19hZGFwdGVyKTtcbitcbiBcdHY0bDJfZGV2aWNlX3B1dChcdTAwMjZyYWRpby1cdTAwM2V2NGwyX2Rldik7XG4gfVxuYGBgXG5cblJpZ2h0LCBpdCdzIGNsZWFyOiB0aGlzIGlzIGEgbGlmZWN5Y2xlIGJ1Zy4gTGlrZWx5IGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBjcmFzaCBkdXJpbmcgZGV2aWNlIGRpc2Nvbm5lY3Qgb3IgcmVsZWFzZSBiZWNhdXNlIHRoZSBjbGVhbnVwIHdhcyBoYXBwZW5pbmcgdG9vIGxhdGUsIG9yIGluIHRoZSB3cm9uZyBwbGFjZS4gTW92aW5nIHRoZSB1bnJlZ2lzdHJhdGlvbiBhbmQgYWRhcHRlciBkZWxldGlvbiB0byB0aGUgZGlzY29ubmVjdCBwYXRoIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUuIEtBU0FOIGlzIHRoZSBwZXJmZWN0IHRvb2wgZm9yIGlkZW50aWZ5aW5nIHRoZXNlIGtpbmRzIG9mIFVBRnMuIFRoZXJlJ3Mgbm90aGluZyBpbiB0aGlzIHBhdGNoIHRoYXQgc3VnZ2VzdHMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWU7IEtNU0FOIGlzbid0IHJlbGV2YW50IGhlcmUuIEknbSBub3Qgc2VlaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIHRvIHVzZXJzcGFjZSwgb3IgdGhhdCBhZmZlY3RzIGNvbnRyb2wgZmxvdywgc28gdGhlIHJpc2sgaXNuJ3QgcHJlc2VudC4gTmVlZHNLTVNBTiA9IGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA4LCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDIzOjMwOjUyLjMwODU3ODUwOFoiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgZGV2aWNlIGxpZmVjeWNsZSBpc3N1ZSBieSBtb3ZpbmcgYHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJgIGFuZCBgaTJjX2RlbF9hZGFwdGVyYCBmcm9tIHRoZSB2aWRlbyBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjayB0byB0aGUgVVNCIGRpc2Nvbm5lY3QgZnVuY3Rpb24sIGFuZCBmaXhpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVzZSBjaGFuZ2VzIGZpeCBhIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB0aGF0IG9jY3VycyB3aGVuIHRoZSBkZXZpY2UgaXMgZGlzY29ubmVjdGVkIG9yIGZhaWxzIHRvIHByb2JlLiBTdWNoIG1lbW9yeSBjb3JydXB0aW9uIGFuZCBsaWZlY3ljbGUgYnVncyBhcmUgcGVyZmVjdGx5IGhhbmRsZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBkZXZpY2UgbGlmZWN5Y2xlIGlzc3VlIGJ5IG1vdmluZyBgdjRsMl9kZXZpY2VfdW5yZWdpc3RlcmAgYW5kIGBpMmNfZGVsX2FkYXB0ZXJgIGZyb20gdGhlIHZpZGVvIGRldmljZSByZWxlYXNlIGNhbGxiYWNrIHRvIHRoZSBVU0IgZGlzY29ubmVjdCBmdW5jdGlvbiwgYW5kIGZpeGluZyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXNlIGNoYW5nZXMgZml4IGEgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgYnVnIHRoYXQgb2NjdXJzIHdoZW4gdGhlIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgb3IgZmFpbHMgdG8gcHJvYmUuIFN1Y2ggbWVtb3J5IGNvcnJ1cHRpb24gYW5kIGxpZmVjeWNsZSBidWdzIGFyZSBwZXJmZWN0bHkgaGFuZGxlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow74sn7[1] Phase: Succeeded StartedAt: 2026-08-08 23:31:03 +0000 UTC FinishedAt: 2026-08-08 23:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-08 23:31:03 +0000 UTC FinishedAt: 2026-08-08 23:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2] Phase: Succeeded StartedAt: 2026-08-08 23:31:03 +0000 UTC FinishedAt: 2026-08-09 03:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-08 23:31:03 +0000 UTC FinishedAt: 2026-08-09 03:11:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-08 23:31:03 +0000 UTC FinishedAt: 2026-08-08 23:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-08 23:31:03 +0000 UTC FinishedAt: 2026-08-08 23:31:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow74sn7/series-workflow74sn7-convert-artifact-1988177594/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-08 23:31:13 +0000 UTC FinishedAt: 2026-08-08 23:47:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-08 23:31:13 +0000 UTC FinishedAt: 2026-08-08 23:47:40 +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:*1936a45e-ddf1-43fe-93df-2b6209924010,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-workflow74sn7/series-workflow74sn7-convert-artifact-1988177594/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": "04ee4323-6f7c-4240-93cc-d48cad1946e5", "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-workflow74sn7/series-workflow74sn7-build-action-2965267560/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-08 23:31:13 +0000 UTC FinishedAt: 2026-08-08 23:47:30 +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:*1936a45e-ddf1-43fe-93df-2b6209924010,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-workflow74sn7/series-workflow74sn7-convert-artifact-1988177594/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": "04ee4323-6f7c-4240-93cc-d48cad1946e5", "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-workflow74sn7/series-workflow74sn7-build-action-2965267560/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-08 23:47:40 +0000 UTC FinishedAt: 2026-08-08 23:47:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-08 23:47:40 +0000 UTC FinishedAt: 2026-08-08 23:47:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-08 23:47:40 +0000 UTC FinishedAt: 2026-08-08 23:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-08 23:47:40 +0000 UTC FinishedAt: 2026-08-08 23:47:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow74sn7/series-workflow74sn7-convert-artifact-3349533205/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-08 23:47:50 +0000 UTC FinishedAt: 2026-08-08 23:50:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-08 23:47:50 +0000 UTC FinishedAt: 2026-08-08 23:50:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*04ee4323-6f7c-4240-93cc-d48cad1946e5,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-workflow74sn7/series-workflow74sn7-build-action-2965267560/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-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-08 23:50:18 +0000 UTC FinishedAt: 2026-08-08 23:50:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-08 23:50:18 +0000 UTC FinishedAt: 2026-08-08 23:50:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-08 23:50:18 +0000 UTC FinishedAt: 2026-08-09 00:06:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-08 23:50:18 +0000 UTC FinishedAt: 2026-08-09 00:06:44 +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:*1936a45e-ddf1-43fe-93df-2b6209924010,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-workflow74sn7/series-workflow74sn7-convert-artifact-3349533205/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": "285ff034-d229-453a-8fb8-216d7d975e3f", "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-workflow74sn7/series-workflow74sn7-build-action-3463739553/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-08 23:50:18 +0000 UTC FinishedAt: 2026-08-09 00:06:34 +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:*1936a45e-ddf1-43fe-93df-2b6209924010,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-workflow74sn7/series-workflow74sn7-convert-artifact-3349533205/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": "285ff034-d229-453a-8fb8-216d7d975e3f", "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-workflow74sn7/series-workflow74sn7-build-action-3463739553/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-09 00:06:44 +0000 UTC FinishedAt: 2026-08-09 00:06:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-09 00:06:44 +0000 UTC FinishedAt: 2026-08-09 00:06:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-09 00:06:44 +0000 UTC FinishedAt: 2026-08-09 00:08:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-09 00:06:44 +0000 UTC FinishedAt: 2026-08-09 00:08:35 +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:*285ff034-d229-453a-8fb8-216d7d975e3f,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-workflow74sn7/series-workflow74sn7-build-action-3463739553/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-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-09 00:08:41 +0000 UTC FinishedAt: 2026-08-09 03:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-09 00:08:41 +0000 UTC FinishedAt: 2026-08-09 03:11:08 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"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:*04ee4323-6f7c-4240-93cc-d48cad1946e5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*285ff034-d229-453a-8fb8-216d7d975e3f,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-workflow74sn7/series-workflow74sn7-build-action-2965267560/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-workflow74sn7/series-workflow74sn7-build-action-3463739553/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-09 00:08:41 +0000 UTC FinishedAt: 2026-08-09 00:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-09 00:08:41 +0000 UTC FinishedAt: 2026-08-09 00:08:46 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"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-workflow74sn7/series-workflow74sn7-convert-artifact-496629754/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-09 00:08:41 +0000 UTC FinishedAt: 2026-08-09 00:08:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-09 00:08:41 +0000 UTC FinishedAt: 2026-08-09 00:08:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-09 00:08:41 +0000 UTC FinishedAt: 2026-08-09 00:08:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-09 00:08:52 +0000 UTC FinishedAt: 2026-08-09 03:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74sn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usb_si4713_probe","usb_si4713_disconnect","usb_si4713_video_device_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","MEDIA_RADIO_SUPPORT","VIDEO_DEV","RADIO_ADAPTERS","RADIO_SI4713","USB_SI4713"],"series_id":"5bdac209-a293-4508-91ec-abbd53a7c3a8","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-09 00:08:52 +0000 UTC FinishedAt: 2026-08-09 03:10:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*04ee4323-6f7c-4240-93cc-d48cad1946e5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*285ff034-d229-453a-8fb8-216d7d975e3f,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-workflow74sn7/series-workflow74sn7-build-action-2965267560/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-workflow74sn7/series-workflow74sn7-build-action-3463739553/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-workflow74sn7/series-workflow74sn7-convert-artifact-496629754/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,}