Name: series-workflowp8p6l Phase: Failed StartedAt: 2026-09-10 22:50:03 +0000 UTC FinishedAt: 2026-09-10 22:53:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8p6l[0] Phase: Succeeded StartedAt: 2026-09-10 22:50:03 +0000 UTC FinishedAt: 2026-09-10 22:52:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8p6l[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 22:50:03 +0000 UTC FinishedAt: 2026-09-10 22:52:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG1vZGlmaWVzIGRvY3VtZW50YXRpb24gKFlBTUwgc3BlY3MgaW4gRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzLyksIHVzZXItc3BhY2UgdG9vbGluZy9saW50ZXJzICh0b29scy9uZXQveW5sLyksIGFuZCBhbiBpbmNsdWRlIGd1YXJkIGluIGluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmguIE5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZDEwYmUyZjAwMzlkZTE5NThiMmI1NWJiMDJhNDVhMTIyNWFhMWZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NTI6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sXG5pbmRleCBiMWViMTAyYWI4NDMyLi41NDNkY2RkYjA0NjQ3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcbkBAIC0yLDYgJiM0MzsyLDcgQEBcbiAtLS1cbiBuYW1lOiBjb25udHJhY2tcbiBwcm90b2NvbDogbmV0bGluay1yYXdcbiYjNDM7dWFwaS1oZWFkZXI6IGxpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcbiBwcm90b251bTogMTJcbiBcbiBkb2M6IFx1MDAzZS1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXG5pbmRleCAyMWVkZjNkMjVmMzRiLi43NmY2OWVkODJhMjRkIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXG5AQCAtMiw2ICYjNDM7Miw3IEBAXG4gLS0tXG4gbmFtZTogbmZ0YWJsZXNcbiBwcm90b2NvbDogbmV0bGluay1yYXdcbiYjNDM7dWFwaS1oZWFkZXI6IGxpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFxuIHByb3RvbnVtOiAxMlxuIFxuIGRvYzogXHUwMDNlLVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sXG5pbmRleCA2MWViYjlhMmJhZDUxLi5mZTUyZDUwOGQ2MDc1IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxuQEAgLTI1LDE3ICYjNDM7MjUsMTcgQEAgZGVmaW5pdGlvbnM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogbG9vcGJhY2tcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBwb2ludC10by1wb2ludFxuJiM0MzsgICAgICAgIG5hbWU6IHBvaW50b3BvaW50XG4gICAgICAgLVxuLSAgICAgICAgbmFtZTogbm8tdHJhaWxlcnNcbiYjNDM7ICAgICAgICBuYW1lOiBub3RyYWlsZXJzXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcnVubmluZ1xuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IG5vLWFycFxuJiM0MzsgICAgICAgIG5hbWU6IG5vYXJwXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcHJvbWlzY1xuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IGFsbC1tdWx0aVxuJiM0MzsgICAgICAgIG5hbWU6IGFsbG11bHRpXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogbWFzdGVyXG4gICAgICAgLVxuQEAgLTQ1LDcgJiM0Mzs0NSw3IEBAIGRlZmluaXRpb25zOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHBvcnRzZWxcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBhdXRvLW1lZGlhXG4mIzQzOyAgICAgICAgbmFtZTogYXV0b21lZGlhXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHluYW1pY1xuICAgICAgIC1cbkBAIC01OCw2ICYjNDM7NTgsNyBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogdmxhbi1wcm90b2NvbHNcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogZXRoLXAtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogODAyMXFcbkBAIC0zMDUsMTAgJiM0MzszMDYsMTMgQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IGlwdjQtZGV2Y29uZlxuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogaXB2NC1kZXZjb25mLVxuJiM0MzsgICAgaGVhZGVyOiBsaW51eC9pcC5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBmb3J3YXJkaW5nXG4mIzQzOyAgICAgICAgdmFsdWU6IDFcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBtYy1mb3J3YXJkaW5nXG4gICAgICAgLVxuQEAgLTM3Niw2ICYjNDM7MzgwLDggQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IGlwdjYtZGV2Y29uZlxuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogZGV2Y29uZi1cbiYjNDM7ICAgIGhlYWRlcjogbGludXgvaXB2Ni5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG5AQCAtNTAxLDYgJiM0Mzs1MDcsOCBAQCBkZWZpbml0aW9uczpcbiAgIC1cbiAgICAgbmFtZTogaWZsYS1pY21wNi1zdGF0c1xuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogaWNtcDYtbWliLVxuJiM0MzsgICAgaGVhZGVyOiBsaW51eC9zbm1wLmhcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnRyaWVzOlxuICAgICAgIC1cbkBAIC01MjAsNiAmIzQzOzUyOCw4IEBAIGRlZmluaXRpb25zOlxuICAgLVxuICAgICBuYW1lOiBpZmxhLWluZXQ2LXN0YXRzXG4gICAgIGVudW0tbmFtZTpcbiYjNDM7ICAgIG5hbWUtcHJlZml4OiBpcHN0YXRzLW1pYi1cbiYjNDM7ICAgIGhlYWRlcjogbGludXgvc25tcC5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG5AQCAtNTMxLDExICYjNDM7NTQxLDIxIEBAIGRlZmluaXRpb25zOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGluZGVsaXZlcnNcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBvdXRmb3J3ZGF0YWdyYW1zXG4mIzQzOyAgICAgICAgbmFtZTogbm9lY3Rwa3RzXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBlY3QxcGt0c1xuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZWN0MHBrdHNcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IGNlcGt0c1xuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogb3V0cmVxdWVzdHNcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBvdXRwa3RzXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogb3V0b2N0ZXRzXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBvdXRmb3J3ZGF0YWdyYW1zXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaW5oZHJlcnJvcnNcbiAgICAgICAtXG5AQCAtNTg2LDE0ICYjNDM7NjA2LDYgQEAgZGVmaW5pdGlvbnM6XG4gICAgICAgICBuYW1lOiBvdXRiY2FzdG9jdGV0c1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGNzdW1lcnJvcnNcbi0gICAgICAtXG4tICAgICAgICBuYW1lOiBub2VjdHBrdHNcbi0gICAgICAtXG4tICAgICAgICBuYW1lOiBlY3QxLXBrdHNcbi0gICAgICAtXG4tICAgICAgICBuYW1lOiBlY3QwLXBrdHNcbi0gICAgICAtXG4tICAgICAgICBuYW1lOiBjZXBrdHNcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWFzbS1vdmVybGFwc1xuICAgLSBuYW1lOiBici1ib29sb3B0LW11bHRpXG5AQCAtNjQwLDYgJiM0Mzs2NTIsOCBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogdmxhbi1mbGFnc1xuICAgICB0eXBlOiBmbGFnc1xuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogdmxhbi1mbGFnLVxuJiM0MzsgICAgaGVhZGVyOiBsaW51eC9pZl92bGFuLmhcbiAgICAgZW50cmllczpcbiAgICAgICAtIHJlb3JkZXItaGRyXG4gICAgICAgLSBndnJwXG5AQCAtNzI3LDYgJiM0Mzs3NDEsOCBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogaWZsYS12Zi1saW5rLXN0YXRlLWVudW1cbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogaWZsYS12Zi1saW5rLXN0YXRlLVxuJiM0MzsgICAgaGVhZGVyOiBsaW51eC9pZl9saW5rLmhcbiAgICAgZW50cmllczpcbiAgICAgICAtIGF1dG9cbiAgICAgICAtIGVuYWJsZVxuQEAgLTc5NCw2ICYjNDM7ODEwLDcgQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IHJ0ZXh0LWZpbHRlclxuICAgICB0eXBlOiBmbGFnc1xuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogcnRleHQtZmlsdGVyLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gdmZcbiAgICAgICAtIGJydmxhblxuQEAgLTgwNiwxOCAmIzQzOzgyMywyMCBAQCBkZWZpbml0aW9uczpcbiAgIC1cbiAgICAgbmFtZTogbmV0a2l0LXBvbGljeVxuICAgICB0eXBlOiBlbnVtXG4tICAgIGVudW0tbmFtZTpcbiYjNDM7ICAgIGVudW0tbmFtZTogbmV0a2l0LWFjdGlvblxuJiM0MzsgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBmb3J3YXJkXG4mIzQzOyAgICAgICAgbmFtZTogcGFzc1xuICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBibGFja2hvbGVcbiYjNDM7ICAgICAgICBuYW1lOiBkcm9wXG4gICAgICAgICB2YWx1ZTogMlxuICAgLVxuICAgICBuYW1lOiBuZXRraXQtbW9kZVxuICAgICB0eXBlOiBlbnVtXG4gICAgIGVudW0tbmFtZTogbmV0a2l0LW1vZGVcbiYjNDM7ICAgIG5hbWUtcHJlZml4OiBuZXRraXQtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLSBuYW1lOiBsMlxuICAgICAgIC0gbmFtZTogbDNcbkBAIC04MjUsNyAmIzQzOzg0NCw4IEBAIGRlZmluaXRpb25zOlxuICAgLVxuICAgICBuYW1lOiBuZXRraXQtc2NydWJcbiAgICAgdHlwZTogZW51bVxuLSAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBlbnVtLW5hbWU6IG5ldGtpdC1zY3J1YlxuJiM0MzsgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1zY3J1Yi1cbiAgICAgZW50cmllczpcbiAgICAgICAtIG5hbWU6IG5vbmVcbiAgICAgICAtIG5hbWU6IGRlZmF1bHRcbkBAIC04MzMsMTMgJiM0Mzs4NTMsMTQgQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IG5ldGtpdC1wYWlyaW5nXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW51bS1uYW1lOiBuZXRraXQtcGFpcmluZ1xuJiM0MzsgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1kZXZpY2UtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLSBuYW1lOiBwYWlyXG4gICAgICAgLSBuYW1lOiBzaW5nbGVcbiAgIC1cbiAgICAgbmFtZTogb3Zwbi1tb2RlXG4gICAgIGVudW0tbmFtZTogb3Zwbi1tb2RlXG4tICAgIG5hbWUtcHJlZml4OiBvdnBuLW1vZGVcbiYjNDM7ICAgIG5hbWUtcHJlZml4OiBvdnBuLW1vZGUtXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtIHAycFxuQEAgLTg0OCw2ICYjNDM7ODY5LDcgQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IGJyLXN0cC1tb2RlXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW51bS1uYW1lOiBici1zdHAtbW9kZVxuJiM0MzsgICAgbmFtZS1wcmVmaXg6IGJyLXN0cC1tb2RlLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gYXV0b1xuICAgICAgIC0gdXNlclxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oXG5pbmRleCA0OWY1NjQwMDkyYTBkLi4yNmJkYWJjNTAyZmVhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaFxuQEAgLTUsOCAmIzQzOzUsOCBAQFxuICAqIEF1dGhvcjogSGlkZWFraSBZT1NISUZVSkkgXHUwMDNjeW9zaGZ1amlAbGludXgtaXB2Ni5vcmdcdTAwM2VcbiAgKi9cbiBcbi0jaWZuZGVmIF9MSU5VWF9TTk1QX0hcbi0jZGVmaW5lIF9MSU5VWF9TTk1QX0hcbiYjNDM7I2lmbmRlZiBfVUFQSV9MSU5VWF9TTk1QX0hcbiYjNDM7I2RlZmluZSBfVUFQSV9MSU5VWF9TTk1QX0hcbiBcbiAvKiBpcHN0YXRzIG1pYiBkZWZpbml0aW9ucyAqL1xuIC8qXG5AQCAtMzcyLDQgJiM0MzszNzIsNCBAQCBlbnVtXG4gXHRfX0xJTlVYX01JQl9UTFNNQVhcbiB9O1xuIFxuLSNlbmRpZlx0LyogX0xJTlVYX1NOTVBfSCAqL1xuJiM0MzsjZW5kaWZcdC8qIF9VQVBJX0xJTlVYX1NOTVBfSCAqL1xuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcyBiL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwc1xuaW5kZXggMjc3MTM3NTMzOWQ5Yy4uOGUxMzZhNWRmODk5MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwc1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXG5AQCAtNDAsOCAmIzQzOzQwLDE1IEBAIENGTEFHU19vdnNfdnBvcnQ6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX09QRU5WU1dJVENIX0gsb3BlbnZzd2l0Y2guaClcbiBDRkxBR1NfcHNwOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX1BTUF9ILHBzcC5oKVxuIENGTEFHU19ydC1hZGRyOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXFxcbiBcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX0lGX0FERFJfSCxpZl9hZGRyLmgpXG4tQ0ZMQUdTX3J0LWxpbms6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxuLVx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9MSU5LX0gsaWZfbGluay5oKVxuJiM0MztDRkxBR1NfcnQtbGluazo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9MSU5LX0gsaWZfbGluay5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSVBfSCxpcC5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfSVBWNl9ILGlwdjYuaCkgXFxcbiYjNDM7XHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0JSSURHRV9ILGlmX2JyaWRnZS5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfSUZfVFVOTkVMX0hfLGlmX3R1bm5lbC5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfVkxBTl9IXyxpZl92bGFuLmgpIFxcXG4mIzQzO1x0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9TTk1QX0gsc25tcC5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfRFBMTF9ILGRwbGwuaClcbiBDRkxBR1NfcnQtbmVpZ2g6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxuIFx0JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfTkVJR0hCT1VSX0gsbmVpZ2hib3VyLmgpXG4gQ0ZMQUdTX3J0LXJvdXRlOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaClcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZVxuaW5kZXggODU5YTZmYjQ0NmUxNC4uMjBkZDcwY2Q3MDllZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmVcbkBAIC0xLDMgJiM0MzsxLDYgQEBcbiAqLXVzZXIuY1xuICotdXNlci5oXG4mIzQzOyotbGludGVyLmNcbiYjNDM7Ki1saW50ZXIuaFxuJiM0MzsqLWxpbnRlclxuICoucnN0XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZVxuaW5kZXggNWExODYzNDliNWE4Ni4uYmNmN2Y0NTU2MzEzMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZVxuQEAgLTMzLDggJiM0MzszMyw5IEBAIE9CSlM9JChwYXRzdWJzdCAlLCUtdXNlci5vLCR7R0VOU30pXG4gU1BFQ1NfUEFUSFM9JCh3aWxkY2FyZCAkKFNQRUNTX0RJUikvKi55YW1sKVxuIFNQRUNTPSQocGF0c3Vic3QgJChTUEVDU19ESVIpLyUueWFtbCwlLCR7U1BFQ1NfUEFUSFN9KVxuIFJTVFM9JChwYXRzdWJzdCAlLCUucnN0LCR7U1BFQ1N9KVxuJiM0MztMSU5UUz0kKHBhdHN1YnN0ICUsJS1saW50LCR7U1BFQ1N9KVxuIFxuLWFsbDogcHJvdG9zLmEgJChIRFJTKSAkKFNSQ1MpICQoS0hEUlMpICQoS1NSQ1MpICQoVUFQSSkgJChSU1RTKVxuJiM0MzthbGw6IHByb3Rvcy5hICQoSERSUykgJChTUkNTKSAkKEtIRFJTKSAkKEtTUkNTKSAkKFVBUEkpICQoUlNUUykgJChMSU5UUylcbiBcbiBwcm90b3MuYTogJChPQkpTKVxuIFx0QGVjaG8gLWUgXCYjMzQ7XFx0QVIgJEBcJiMzNDtcbkBAIC01NiwxMSAmIzQzOzU3LDI5IEBAIHByb3Rvcy5hOiAkKE9CSlMpXG4gXHRAZWNobyAtZSBcJiMzNDtcXHRHRU5fUlNUICRAXCYjMzQ7XG4gXHRAJChUT09MX1JTVCkgLW8gJEAgLWkgJFx1MDAzY1xuIFxuJiM0MzslLWxpbnRlci5jOiAkKFNQRUNTX0RJUikvJS55YW1sICQoVE9PTCkgLi4vbGludGVyL2xpbnRlci5oXG4mIzQzO1x0QGVjaG8gLWUgXCYjMzQ7XFx0R0VOICRAXCYjMzQ7XG4mIzQzO1x0QCQoVE9PTCkgLS1tb2RlIHVzZXIgLS1saW50ZXIgLS1zcGVjICRcdTAwM2MgLW8gJEAgJChZTkxfR0VOX0FSR18kKilcbiYjNDM7XG4mIzQzOyUtbGludGVyLmg6ICUtbGludGVyLmMgLi4vbGludGVyL2dlbi1oLnNoXG4mIzQzO1x0QGVjaG8gLWUgXCYjMzQ7XFx0R0VOICRAXCYjMzQ7XG4mIzQzO1x0QC4uL2xpbnRlci9nZW4taC5zaCAkKENGTEFHUykgJChDRkxBR1NfJCopIFx1MDAzYyAkXHUwMDNjIFx1MDAzZSAkQFxuJiM0MztcbiYjNDM7JS1saW50ZXI6ICUtbGludGVyLmMgJS1saW50ZXIuaCAuLi9saW50ZXIvbGludGVyLmhcbiYjNDM7XHRAZWNobyAtZSBcJiMzNDtcXHRDQyAkQFwmIzM0O1xuJiM0MztcdEAkKENDKSAkKENGTEFHUykgJChDRkxBR1NfJCopIC1pbmNsdWRlICQqLWxpbnRlci5oIC1vICRAICRcdTAwM2NcbiYjNDM7XG4mIzQzOyUtbGludDogJS1saW50ZXJcbiYjNDM7XHRAZWNobyAtZSBcJiMzNDtcXHRMSU5UICRAXCYjMzQ7XG4mIzQzO1x0QC4vJFx1MDAzYyAkKlxuJiM0MztcbiYjNDM7bGludDogJChMSU5UUylcbiYjNDM7XG4gY2xlYW46XG4gXHRybSAtZiAqLm9cbiBcbiBkaXN0Y2xlYW46IGNsZWFuXG4tXHRybSAtZiAqLmMgKi5oICouYSAqLnJzdFxuJiM0MztcdHJtIC1mICouYyAqLmggKi5hICoucnN0ICotbGludGVyXG4gXG4gcmVnZW46XG4gXHRALi4veW5sLXJlZ2VuLnNoXG5AQCAtNjgsNyAmIzQzOzg3LDcgQEAgcmVnZW46XG4gaW5zdGFsbC1oZWFkZXJzOiAkKEhEUlMpXG4gXHRAZWNobyAtZSBcJiMzNDtcXHRJTlNUQUxMIGdlbmVyYXRlZCBoZWFkZXJzXCYjMzQ7XG4gXHRAJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS95bmxcbi1cdEAkKElOU1RBTEwpIC1tIDA2NDQgKi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC9cbiYjNDM7XHRAJChJTlNUQUxMKSAtbSAwNjQ0ICQoS0hEUlMpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC9cbiBcbiBpbnN0YWxsLXJzdHM6ICQoUlNUUylcbiBcdEBlY2hvIC1lIFwmIzM0O1xcdElOU1RBTEwgZ2VuZXJhdGVkIGRvY3NcJiMzNDtcbkBAIC04NCw1ICYjNDM7MTAzLDUgQEAgaW5zdGFsbC1zcGVjczpcbiBcbiBpbnN0YWxsOiBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcbiBcbi0uUEhPTlk6IGFsbCBjbGVhbiBkaXN0Y2xlYW4gcmVnZW4gaW5zdGFsbCBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcbiYjNDM7LlBIT05ZOiBhbGwgY2xlYW4gZGlzdGNsZWFuIHJlZ2VuIGluc3RhbGwgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzIGxpbnRcbiAuREVGQVVMVF9HT0FMOiBhbGxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2xpbnRlci9nZW4taC5zaCBiL3Rvb2xzL25ldC95bmwvbGludGVyL2dlbi1oLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMjQ3NDkzNjAwMDM0ZFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2hcbkBAIC0wLDAgJiM0MzsxLDIzIEBAXG4mIzQzOyMhL2Jpbi9zaFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO1xuJiM0MzsjIFVzYWdlOiAuL2dlbi1oLnNoICRDRkxBR1MgXHUwMDNjIGluLmMgXHUwMDNlIG91dC5oXG4mIzQzOyNcbiYjNDM7IyBFeHRyYWN0IHZhbGlkIHN5bWJvbHMsIGFuZCBkZWZpbmUgdGhhdCB0aGV5IGFyZSBhdmFpbGFibGUuIFRoaXMgaXMgYVxuJiM0MzsjIHdvcmthcm91bmQsIHRvIGF2b2lkIGNvbXBpbGUgZmFpbHVyZXMgZHVlIHRvIG5vbi1leGlzdGVudCBlbnVtIG1lbWJlcnMuXG4mIzQzOyNcbiYjNDM7IyBDYXBpdGFsaXplZCBrZXl3b3JkcyBmb3VuZCBpbiB0aGUgcHJlcHJvY2Vzc29yIG91dHB1dCwgYXJlIG1vc3RseSBlbnVtXG4mIzQzOyMgbWVtYmVycy5cbiYjNDM7I1xuJiM0MzsjIEFzIGFuIGV4YW1wbGUsIGV4aXN0ZW5jZSBvZiBGT08gY2FuIGJlIGNoZWNrZWQgd2l0aDpcbiYjNDM7IyAgICNpZiBkZWZpbmVkKEZPTykgfHwgZGVmaW5lZChMSU5URVJfSEFTX0ZPTylcbiYjNDM7IyB0aHVzIGNoZWNraW5nIGZvciBGT08gZWl0aGVyIGFzIGEgbWFjcm8gb3IgYXMgYW4gZW51bSBtZW1iZXJzLlxuJiM0MztcbiYjNDM7c2V0IC1lXG4mIzQzO1xuJiM0MztlY2hvICYjMzk7LyogVGhpcyBpcyBhbiBhdXRvLWdlbmVyYXRlZCBmaWxlICovJiMzOTtcbiYjNDM7Z3JlcCAmIzM5O14jaW5jbHVkZSBcdTAwM2NsaW51eC8mIzM5OyB8XG4mIzQzO1x0Y3BwIC14IGMgXCYjMzQ7JEBcJiMzNDsgLSB8XG4mIzQzO1x0Z3JlcCAtd28gJiMzOTtbQS1aXVtBLVowLTlfXVxcJiM0MzsmIzM5OyB8XG4mIzQzO1x0c29ydCB8IHVuaXEgfFxuJiM0MztcdHNlZCAtZSAmIzM5O3MvXi8jZGVmaW5lIExJTlRFUl9IQVNfL2cmIzM5O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2xpbnRlci5oIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvbGludGVyLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4wZDFjMjhjOWYyMTQwXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaFxuQEAgLTAsMCAmIzQzOzEsMTUyIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGJvb2wuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IGVudW1fa3Yge1xuJiM0MztcdGNvbnN0IGNoYXIgKm5hbWU7XG4mIzQzO1x0Y29uc3QgbG9uZyBsb25nIHZhbDtcbiYjNDM7XHRjb25zdCBib29sIGlzX3VuZGVmOjE7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZW51bV9lbnRyeSB7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGVudW1fa3YgeW5sO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBlbnVtX2t2IGM7XG4mIzQzO1x0Y29uc3QgYm9vbCBpc19zZW50aW5hbDoxO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7I2RlZmluZSBZTkxfRU5VTV9FTlRSWShZTkxfTkFNRSwgQ19OQU1FLCBZTkxfVkFMVUUpIFxcXG4mIzQzO1x0eyBcXFxuJiM0MztcdFx0LnlubCA9IHsgLm5hbWUgPSBZTkxfTkFNRSwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxuJiM0MztcdFx0LmMgPSB7IC5uYW1lID0gI0NfTkFNRSwgLnZhbCA9IENfTkFNRSB9LCBcXFxuJiM0MztcdH1cbiYjNDM7XG4mIzQzOyNkZWZpbmUgWU5MX0VOVU1fQkFEX0VOVFJZKFlOTF9OQU1FLCBDX05BTUUsIFlOTF9WQUxVRSkgXFxcbiYjNDM7XHR7IFxcXG4mIzQzO1x0XHQueW5sID0geyAubmFtZSA9IFlOTF9OQU1FLCAudmFsID0gWU5MX1ZBTFVFIH0sIFxcXG4mIzQzO1x0XHQuYyA9IHsgLm5hbWUgPSAjQ19OQU1FLCAuaXNfdW5kZWYgPSB0cnVlIH0sIFxcXG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7I2RlZmluZSBZTkxfRU5VTV9TRU5USU5BTChDX05BTUUsIFlOTF9WQUxVRSkgXFxcbiYjNDM7XHR7IFxcXG4mIzQzO1x0XHQueW5sID0geyAubmFtZSA9IFwmIzM0O01BWFwmIzM0OywgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxuJiM0MztcdFx0LmMgPSB7IC5uYW1lID0gI0NfTkFNRSwgLnZhbCA9IENfTkFNRSB9LCBcXFxuJiM0MztcdFx0LmlzX3NlbnRpbmFsID0gdHJ1ZSwgXFxcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztlbnVtIHlubF9lbnVtX3R5cGUge1xuJiM0MztcdFlOTF9FTlVNLFxuJiM0MztcdFlOTF9GTEFHUyxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBlbnVtX3NldCB7XG4mIzQzO1x0Y29uc3QgY2hhciAqbmFtZTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnk7XG4mIzQzO1x0ZW51bSB5bmxfZW51bV90eXBlIHR5cGU7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3QgbGludGVyX2N0eCB7XG4mIzQzO1x0aW50IGVycm9ycztcbiYjNDM7XHRpbnQgd2FybmluZ3M7XG4mIzQzO1x0Y29uc3QgY2hhciAqbmFtZTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgZXJyZihmbXQsIC4uLikgXFxcbiYjNDM7XHRkbyB7IFxcXG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JXM6IEVSUk9SOiBcJiMzNDsgZm10LCBjdHgtXHUwMDNlbmFtZSwgX19WQV9BUkdTX18pOyBcXFxuJiM0MztcdFx0Y3R4LVx1MDAzZWVycm9ycyYjNDM7JiM0Mzs7IFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzOyNkZWZpbmUgd2FybmYoZm10LCAuLi4pIFxcXG4mIzQzO1x0ZG8geyBcXFxuJiM0MztcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OyVzOiBXQVJOOiBcJiMzNDsgZm10LCBjdHgtXHUwMDNlbmFtZSwgX19WQV9BUkdTX18pOyBcXFxuJiM0MztcdFx0Y3R4LVx1MDAzZXdhcm5pbmdzJiM0MzsmIzQzOzsgXFxcbiYjNDM7XHR9IHdoaWxlICgwKVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBsb25nIGxvbmcgZmluZF9uZXh0X3ZhbHVlKGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXG4mIzQzO1x0XHRcdFx0XHRjb25zdCBsb25nIGxvbmcgbGFzdF92YWwpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGVzLVx1MDAzZXR5cGUpIHtcbiYjNDM7XHRjYXNlIFlOTF9FTlVNOlxuJiM0MztcdFx0cmV0dXJuIGxhc3RfdmFsICYjNDM7IDE7XG4mIzQzO1x0Y2FzZSBZTkxfRkxBR1M6XG4mIzQzO1x0XHRyZXR1cm4gbGFzdF92YWwgXHUwMDNjXHUwMDNjIDE7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdC8qIHVucmVhY2hhYmxlICovXG4mIzQzO1x0XHRhYm9ydCgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGxpbnRfZW51bV9lbnRyeShzdHJ1Y3QgbGludGVyX2N0eCAqY3R4LFxuJiM0MztcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXG4mIzQzO1x0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5LFxuJiM0MztcdFx0XHRcdCAgIGxvbmcgbG9uZyAqbGFzdF92YWwsIGNvbnN0IGludCBpLFxuJiM0MztcdFx0XHRcdCAgIGNvbnN0IGludCBjbnQpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBsb25nIGxvbmcgdmFsID0gZW50cnktXHUwMDNlYy52YWw7XG4mIzQzO1xuJiM0MztcdGlmIChpIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiB2YWwgIT0gKmxhc3RfdmFsIFx1MDAyNlx1MDAyNiB2YWwgIT0gZmluZF9uZXh0X3ZhbHVlKGVzLCAqbGFzdF92YWwpKVxuJiM0MztcdFx0d2FybmYoXCYjMzQ7JXM6IFBvc3NpYmxlIG1pc3NpbmcgbWVtYmVyIGJlZm9yZSAlcyAoJWxsZCAtXHUwMDNlICVsbGQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgICAgZXMtXHUwMDNlbmFtZSwgZW50cnktXHUwMDNlYy5uYW1lLCAqbGFzdF92YWwsIHZhbCk7XG4mIzQzO1x0Kmxhc3RfdmFsID0gZW50cnktXHUwMDNlYy52YWw7XG4mIzQzO1xuJiM0MztcdGlmIChpID09IGNudCAtIDEgXHUwMDI2XHUwMDI2IHN0cmNtcChlbnRyeS1cdTAwM2V5bmwubmFtZSwgXCYjMzQ7bWF4XCYjMzQ7KSA9PSAwKVxuJiM0MztcdFx0ZXJyZihcJiMzNDslczogU2VudGluYWwgdXNlZCBpbiBZTkwgc3BlY1xcblwmIzM0OywgZXMtXHUwMDNlbmFtZSk7XG4mIzQzO1xuJiM0MztcdGlmIChlbnRyeS1cdTAwM2VjLmlzX3VuZGVmKSB7XG4mIzQzO1x0XHRlcnJmKFwmIzM0OyVzOiAlczogJXMgbm90IGZvdW5kXFxuXCYjMzQ7LCBlcy1cdTAwM2VuYW1lLCBlbnRyeS1cdTAwM2V5bmwubmFtZSxcbiYjNDM7XHRcdCAgICAgZW50cnktXHUwMDNlYy5uYW1lKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChlbnRyeS1cdTAwM2V5bmwudmFsID09IGVudHJ5LVx1MDAzZWMudmFsKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAoZW50cnktXHUwMDNlaXNfc2VudGluYWwpIHtcbiYjNDM7XHRcdGlmIChlcy1cdTAwM2V0eXBlID09IFlOTF9FTlVNIFx1MDAyNlx1MDAyNiBlbnRyeS1cdTAwM2V5bmwudmFsICYjNDM7IDEgPT0gZW50cnktXHUwMDNlYy52YWwpXG4mIzQzO1x0XHRcdHJldHVybjsgLyogZWcuIERFVkNPTkZfTUFYIGlzIHRoZSBzdG9yYWdlIHNpemUgKi9cbiYjNDM7XHRcdHdhcm5mKFwmIzM0OyVzOiBTZW50aW5hbCBtaXNtYXRjaDogJWxsZCAhPSAlbGxkIChMYXN0IFlOTCAhPSAlcylcXG5cJiMzNDssXG4mIzQzO1x0XHQgICAgICBlcy1cdTAwM2VuYW1lLCBlbnRyeS1cdTAwM2V5bmwudmFsLCBlbnRyeS1cdTAwM2VjLnZhbCwgZW50cnktXHUwMDNlYy5uYW1lKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZXJyZihcJiMzNDslczogVmFsdWUgbWlzbWF0Y2g6ICVsbGQgIT0gJWxsZCAoJXMgIT0gJXMpXFxuXCYjMzQ7LCBlcy1cdTAwM2VuYW1lLFxuJiM0MztcdFx0ICAgICBlbnRyeS1cdTAwM2V5bmwudmFsLCBlbnRyeS1cdTAwM2VjLnZhbCwgZW50cnktXHUwMDNleW5sLm5hbWUsXG4mIzQzO1x0XHQgICAgIGVudHJ5LVx1MDAzZWMubmFtZSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgbGludF9lbnVtKHN0cnVjdCBsaW50ZXJfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnkgPSBlcy1cdTAwM2VlbnRyeTtcbiYjNDM7XHRsb25nIGxvbmcgbGFzdF92YWw7XG4mIzQzO1x0aW50IGNudCA9IDA7XG4mIzQzO1x0aW50IGkgPSAwO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAoZW50cnktXHUwMDNleW5sLm5hbWUpIHtcbiYjNDM7XHRcdGlmICghZW50cnktXHUwMDNlaXNfc2VudGluYWwpXG4mIzQzO1x0XHRcdGNudCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRlbnRyeSYjNDM7JiM0Mzs7XG4mIzQzO1x0fVxuJiM0MztcdGVudHJ5ID0gZXMtXHUwMDNlZW50cnk7XG4mIzQzO1xuJiM0MztcdHdoaWxlIChlbnRyeS1cdTAwM2V5bmwubmFtZSlcbiYjNDM7XHRcdGxpbnRfZW51bV9lbnRyeShjdHgsIGVzLCBlbnRyeSYjNDM7JiM0MzssIFx1MDAyNmxhc3RfdmFsLCBpJiM0MzsmIzQzOywgY250KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgbGludGVyX3J1bihjb25zdCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsXG4mIzQzO1x0XHRcdCAgICAgY29uc3Qgc3RydWN0IGVudW1fc2V0ICplcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBsaW50ZXJfY3R4IGN0eCA9IHtcbiYjNDM7XHRcdC5uYW1lID0gYXJndlthcmdjIFx1MDAzZSAxID8gMSA6IDBdLFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdHdoaWxlIChlcy1cdTAwM2VuYW1lKSB7XG4mIzQzO1x0XHRsaW50X2VudW0oXHUwMDI2Y3R4LCBlcyk7XG4mIzQzO1x0XHRlcyYjNDM7JiM0Mzs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoY3R4LmVycm9ycyB8fCBjdHgud2FybmluZ3MpXG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JXM6IExpbnRlciBzdW1tYXJ5OiAlZCBlcnJvcnMsICVkIHdhcm5pbmdzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRjdHgubmFtZSwgY3R4LmVycm9ycywgY3R4Lndhcm5pbmdzKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIEVYSVRfU1VDQ0VTUztcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbmluZGV4IDJiMzQ4M2RiMWI2MGMuLjViYmUzY2JhOGY3NTkgMTAwNzU1XG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbkBAIC0xNjg4LDYgJiM0MzsxNjg4LDggQEAgY2xhc3MgQ29kZVdyaXRlcjpcbiAgICAgICAgIHNlbGYuY2xvc2Vfb3V0X2ZpbGUoKVxuIFxuICAgICBkZWYgY2xvc2Vfb3V0X2ZpbGUoc2VsZik6XG4mIzQzOyAgICAgICAgaWYgc2VsZi5fYmxvY2tfZW5kOlxuJiM0MzsgICAgICAgICAgICBzZWxmLl9vdXQud3JpdGUoJiMzOTtcXHQmIzM5OyAqIHNlbGYuX2luZCAmIzQzOyAmIzM5O31cXG4mIzM5OylcbiAgICAgICAgIGlmIHNlbGYuX291dCA9PSBvcy5zeXMuc3Rkb3V0OlxuICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIyBBdm9pZCBtb2RpZnlpbmcgdGhlIGZpbGUgaWYgY29udGVudHMgZGlkbiYjMzk7dCBjaGFuZ2VcbkBAIC0yMDg0LDYgJiM0MzsyMDg2LDMwIEBAIGRlZiBwdXRfZW51bV90b19zdHIoX2ZhbWlseSwgY3csIGVudW0pOlxuICAgICBfcHV0X2VudW1fdG9fc3RyX2hlbHBlcihjdywgZW51bS5yZW5kZXJfbmFtZSwgbWFwX25hbWUsICYjMzk7dmFsdWUmIzM5OywgZW51bT1lbnVtKVxuIFxuIFxuJiM0MztkZWYgcHV0X2VudW1fdG9fbGludGVyKGZhbWlseSwgY3csIGVudW0pOlxuJiM0MzsgICAgbmFtZV9wZnggPSBlbnVtLmdldCgmIzM5O25hbWUtcHJlZml4JiMzOTssIGZcJiMzNDt7ZmFtaWx5LmlkZW50X25hbWV9LXtlbnVtWyYjMzk7bmFtZSYjMzk7XX0tXCYjMzQ7KVxuJiM0MzsgICAgbWF4X25hbWUgPSBjX3VwcGVyKG5hbWVfcGZ4ICYjNDM7ICYjMzk7bWF4JiMzOTspXG4mIzQzOyAgICBtYXBfbmFtZSA9IGYmIzM5O3tlbnVtLnJlbmRlcl9uYW1lfV9lbnRyaWVzJiMzOTtcbiYjNDM7ICAgIGN3LmJsb2NrX3N0YXJ0KGxpbmU9ZlwmIzM0O3N0YXRpYyBjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSB7bWFwX25hbWV9W10gPVwmIzM0OylcbiYjNDM7ICAgIHZhbCA9IDBcbiYjNDM7ICAgIGZvciBlbnRyeSBpbiBlbnVtLmVudHJpZXMudmFsdWVzKCk6XG4mIzQzOyAgICAgICAgdmFsID0gZW50cnkudXNlcl92YWx1ZSgpXG4mIzQzOyAgICAgICAgY19uYW1lID0gZW50cnkuY19uYW1lXG4mIzQzOyAgICAgICAgY3cucChmJiMzOTsjaWYgZGVmaW5lZCh7Y19uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3tjX25hbWV9KSYjMzk7KVxuJiM0MzsgICAgICAgIGN3LnAoZiYjMzk7WU5MX0VOVU1fRU5UUlkoXCYjMzQ7e2VudHJ5Lm5hbWV9XCYjMzQ7LCB7Y19uYW1lfSwge3ZhbH0pLCYjMzk7KVxuJiM0MzsgICAgICAgIGN3LnAoJiMzOTsjZWxzZSYjMzk7KVxuJiM0MzsgICAgICAgIGN3LnAoZiYjMzk7WU5MX0VOVU1fQkFEX0VOVFJZKFwmIzM0O3tlbnRyeS5uYW1lfVwmIzM0Oywge2NfbmFtZX0sIHt2YWx9KSwmIzM5OylcbiYjNDM7ICAgICAgICBjdy5wKCYjMzk7I2VuZGlmJiMzOTspXG4mIzQzOyAgICBjdy5wKGYmIzM5OyNpZiBkZWZpbmVkKHttYXhfbmFtZX0pIHx8IGRlZmluZWQoTElOVEVSX0hBU197bWF4X25hbWV9KSYjMzk7KVxuJiM0MzsgICAgY3cucChmJiMzOTtZTkxfRU5VTV9TRU5USU5BTCh7bWF4X25hbWV9LCB7dmFsfSksJiMzOTspXG4mIzQzOyAgICBjdy5wKCYjMzk7I2VuZGlmJiMzOTspXG4mIzQzOyAgICBjdy5wKCYjMzk7e30sJiMzOTspXG4mIzQzOyAgICBjdy5ibG9ja19lbmQobGluZT0mIzM5OzsmIzM5OylcbiYjNDM7ICAgIGN3Lm5sKClcbiYjNDM7ICAgIGVudW1fdHlwZSA9IGVudW1bJiMzOTt0eXBlJiMzOTtdLnVwcGVyKClcbiYjNDM7ICAgIHJldHVybiBmJiMzOTt7e1wmIzM0O3tlbnVtLm5hbWV9XCYjMzQ7LCBcdTAwMjZ7bWFwX25hbWV9WzBdLCBZTkxfe2VudW1fdHlwZX19fSwmIzM5O1xuJiM0MztcbiYjNDM7XG4gZGVmIHB1dF9sb2NhbF92YXJzKHN0cnVjdCk6XG4gICAgIGxvY2FsX3ZhcnMgPSBbXVxuICAgICBoYXNfYXJyYXkgPSBGYWxzZVxuQEAgLTM0NjIsNiAmIzQzOzM0ODgsNyBAQCBkZWYgbWFpbigpOlxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1zcGVjJiMzOTssIGRlc3Q9JiMzOTtzcGVjJiMzOTssIHR5cGU9c3RyLCByZXF1aXJlZD1UcnVlKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1oZWFkZXImIzM5OywgZGVzdD0mIzM5O2hlYWRlciYjMzk7LCBhY3Rpb249JiMzOTtzdG9yZV90cnVlJiMzOTssIGRlZmF1bHQ9Tm9uZSlcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tc291cmNlJiMzOTssIGRlc3Q9JiMzOTtoZWFkZXImIzM5OywgYWN0aW9uPSYjMzk7c3RvcmVfZmFsc2UmIzM5OylcbiYjNDM7ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJiMzOTstLWxpbnRlciYjMzk7LCBkZXN0PSYjMzk7bGludGVyJiMzOTssIGFjdGlvbj0mIzM5O3N0b3JlX3RydWUmIzM5OylcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tdXNlci1oZWFkZXImIzM5OywgbmFyZ3M9JiMzOTsmIzQzOyYjMzk7LCBkZWZhdWx0PVtdKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1jbXAtb3V0JiMzOTssIGFjdGlvbj0mIzM5O3N0b3JlX3RydWUmIzM5OywgZGVmYXVsdD1Ob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9JiMzOTtEbyBub3Qgb3ZlcndyaXRlIHRoZSBvdXRwdXQgZmlsZSBpZiB0aGUgbmV3IG91dHB1dCBpcyBpZGVudGljYWwgdG8gdGhlIG9sZCYjMzk7KVxuQEAgLTM0NzAsOCAmIzQzOzM0OTcsMTAgQEAgZGVmIG1haW4oKTpcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tZnVuY3Rpb24tcHJlZml4JiMzOTssIGRlc3Q9JiMzOTtmbl9wcmVmaXgmIzM5OywgdHlwZT1zdHIpXG4gICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4gXG4mIzQzOyAgICBpZiBhcmdzLmxpbnRlcjpcbiYjNDM7ICAgICAgICBhcmdzLmhlYWRlciA9IEZhbHNlXG4gICAgIGlmIGFyZ3MuaGVhZGVyIGlzIE5vbmU6XG4tICAgICAgICBwYXJzZXIuZXJyb3IoXCYjMzQ7LS1oZWFkZXIgb3IgLS1zb3VyY2UgaXMgcmVxdWlyZWRcJiMzNDspXG4mIzQzOyAgICAgICAgcGFyc2VyLmVycm9yKFwmIzM0Oy0taGVhZGVyLCAtLXNvdXJjZSBvciAtLWxpbnRlciBpcyByZXF1aXJlZFwmIzM0OylcbiBcbiAgICAgZXhjbHVkZV9vcHMgPSBbcmUuY29tcGlsZShleHByKSBmb3IgZXhwciBpbiBhcmdzLmV4Y2x1ZGVfb3BdXG4gXG5AQCAtMzQ5NCwxNyAmIzQzOzM1MjMsMTkgQEAgZGVmIG1haW4oKTpcbiAgICAgICAgIGN3LnAoZiYjMzk7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IHtwYXJzZWQubGljZW5zZX0mIzM5OylcbiAgICAgY3cucChcJiMzNDsvKiBEbyBub3QgZWRpdCBkaXJlY3RseSwgYXV0by1nZW5lcmF0ZWQgZnJvbTogKi9cJiMzNDspXG4gICAgIGN3LnAoZlwmIzM0Oy8qXFx0e3NwZWNfa2VybmVsfSAqL1wmIzM0Oylcbi0gICAgY3cucChmXCYjMzQ7LyogWU5MLUdFTiB7YXJncy5tb2RlfSB7JiMzOTtoZWFkZXImIzM5OyBpZiBhcmdzLmhlYWRlciBlbHNlICYjMzk7c291cmNlJiMzOTt9ICovXCYjMzQ7KVxuLSAgICBpZiBhcmdzLmV4Y2x1ZGVfb3Agb3IgYXJncy51c2VyX2hlYWRlciBvciBhcmdzLmZuX3ByZWZpeDpcbi0gICAgICAgIGxpbmUgPSAmIzM5OyYjMzk7XG4tICAgICAgICBpZiBhcmdzLnVzZXJfaGVhZGVyOlxuLSAgICAgICAgICAgIGxpbmUgJiM0Mzs9ICYjMzk7IC0tdXNlci1oZWFkZXIgJiMzOTsuam9pbihbJiMzOTsmIzM5O10gJiM0MzsgYXJncy51c2VyX2hlYWRlcilcbi0gICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDpcbi0gICAgICAgICAgICBsaW5lICYjNDM7PSAmIzM5OyAtLWV4Y2x1ZGUtb3AgJiMzOTsuam9pbihbJiMzOTsmIzM5O10gJiM0MzsgYXJncy5leGNsdWRlX29wKVxuLSAgICAgICAgaWYgYXJncy5mbl9wcmVmaXg6XG4tICAgICAgICAgICAgbGluZSAmIzQzOz0gZiYjMzk7IC0tZnVuY3Rpb24tcHJlZml4IHthcmdzLmZuX3ByZWZpeH0mIzM5O1xuLSAgICAgICAgY3cucChmJiMzOTsvKiBZTkwtQVJHe2xpbmV9ICovJiMzOTspXG4tICAgIGN3LnAoJiMzOTsvKiBUbyByZWdlbmVyYXRlIHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8mIzM5OylcbiYjNDM7ICAgIGlmIG5vdCBhcmdzLmxpbnRlcjpcbiYjNDM7ICAgICAgICB5bmxfYXJnID0gJiMzOTtoZWFkZXImIzM5OyBpZiBhcmdzLmhlYWRlciBlbHNlICYjMzk7c291cmNlJiMzOTtcbiYjNDM7ICAgICAgICBjdy5wKGZcJiMzNDsvKiBZTkwtR0VOIHthcmdzLm1vZGV9IHt5bmxfYXJnfSAqL1wmIzM0OylcbiYjNDM7ICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfb3Agb3IgYXJncy51c2VyX2hlYWRlciBvciBhcmdzLmZuX3ByZWZpeDpcbiYjNDM7ICAgICAgICAgICAgbGluZSA9ICYjMzk7JiMzOTtcbiYjNDM7ICAgICAgICAgICAgaWYgYXJncy51c2VyX2hlYWRlcjpcbiYjNDM7ICAgICAgICAgICAgICAgIGxpbmUgJiM0Mzs9ICYjMzk7IC0tdXNlci1oZWFkZXIgJiMzOTsuam9pbihbJiMzOTsmIzM5O10gJiM0MzsgYXJncy51c2VyX2hlYWRlcilcbiYjNDM7ICAgICAgICAgICAgaWYgYXJncy5leGNsdWRlX29wOlxuJiM0MzsgICAgICAgICAgICAgICAgbGluZSAmIzQzOz0gJiMzOTsgLS1leGNsdWRlLW9wICYjMzk7LmpvaW4oWyYjMzk7JiMzOTtdICYjNDM7IGFyZ3MuZXhjbHVkZV9vcClcbiYjNDM7ICAgICAgICAgICAgaWYgYXJncy5mbl9wcmVmaXg6XG4mIzQzOyAgICAgICAgICAgICAgICBsaW5lICYjNDM7PSBmJiMzOTsgLS1mdW5jdGlvbi1wcmVmaXgge2FyZ3MuZm5fcHJlZml4fSYjMzk7XG4mIzQzOyAgICAgICAgICAgIGN3LnAoZiYjMzk7LyogWU5MLUFSR3tsaW5lfSAqLyYjMzk7KVxuJiM0MzsgICAgICAgIGN3LnAoJiMzOTsvKiBUbyByZWdlbmVyYXRlIHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8mIzM5OylcbiAgICAgY3cubmwoKVxuIFxuICAgICBpZiBhcmdzLm1vZGUgPT0gJiMzOTt1YXBpJiMzOTs6XG5AQCAtMzUzOSw2ICYjNDM7MzU3MCw4IEBAIGRlZiBtYWluKCk6XG4gICAgICAgICAgICAgY3cucCgmIzM5OyNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2UmIzM5OylcbiAgICAgICAgICAgICBpZiBmYW1pbHlfY29udGFpbnNfYml0ZmllbGQzMihwYXJzZWQpOlxuICAgICAgICAgICAgICAgICBjdy5wKCYjMzk7I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0bGluay5oXHUwMDNlJiMzOTspXG4mIzQzOyAgICAgICAgZWxpZiBhcmdzLmxpbnRlcjpcbiYjNDM7ICAgICAgICAgICAgY3cucCgmIzM5OyNpbmNsdWRlIFwmIzM0Oy4uL2xpbnRlci9saW50ZXIuaFwmIzM0OyYjMzk7KVxuICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICBjdy5wKGYmIzM5OyNpbmNsdWRlIFwmIzM0O3toZHJfZmlsZX1cJiMzNDsmIzM5OylcbiAgICAgICAgICAgICBjdy5wKCYjMzk7I2luY2x1ZGUgXCYjMzQ7eW5sLmhcJiMzNDsmIzM5OylcbkBAIC0zNjkwLDYgJiM0MzszNzIzLDIxIEBAIGRlZiBtYWluKCk6XG4gICAgICAgICAgICAgICAgICAgICBjdy5ubCgpXG4gICAgICAgICAgICAgICAgICAgICBwcmludF93cmFwcGVkX3R5cGUocmkpXG4gICAgICAgICAgICAgY3cubmwoKVxuJiM0MzsgICAgICAgIGVsaWYgYXJncy5saW50ZXI6XG4mIzQzOyAgICAgICAgICAgIGVudW1fc2V0cyA9IFtdXG4mIzQzOyAgICAgICAgICAgIGZvciBuYW1lLCBjb25zdCBpbiBwYXJzZWQuY29uc3RzLml0ZW1zKCk6XG4mIzQzOyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbnN0LCBFbnVtU2V0KTpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBlbnVtX3NldHMuYXBwZW5kKHB1dF9lbnVtX3RvX2xpbnRlcihwYXJzZWQsIGN3LCBjb25zdCkpXG4mIzQzOyAgICAgICAgICAgIGN3Lm5sKClcbiYjNDM7ICAgICAgICAgICAgY3cuYmxvY2tfc3RhcnQobGluZT1cJiMzNDtzdGF0aWMgY29uc3Qgc3RydWN0IGVudW1fc2V0IGVudW1zW10gPVwmIzM0OylcbiYjNDM7ICAgICAgICAgICAgZm9yIGVudW1fc2V0IGluIGVudW1fc2V0czpcbiYjNDM7ICAgICAgICAgICAgICAgIGN3LnAoZW51bV9zZXQpXG4mIzQzOyAgICAgICAgICAgIGN3LnAoJiMzOTt7fSwmIzM5OylcbiYjNDM7ICAgICAgICAgICAgY3cuYmxvY2tfZW5kKGxpbmU9JiMzOTs7JiMzOTspXG4mIzQzOyAgICAgICAgICAgIGN3Lm5sKClcbiYjNDM7ICAgICAgICAgICAgY3cud3JpdGVfZnVuYygmIzM5O2ludCYjMzk7LCAmIzM5O21haW4mIzM5OyxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPVsmIzM5O2NvbnN0IGludCBhcmdjJiMzOTssICYjMzk7Y29uc3QgY2hhciAqKmFyZ3YmIzM5O10sXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keT1bJiMzOTtyZXR1cm4gbGludGVyX3J1bihhcmdjLCBhcmd2LCBcdTAwMjZlbnVtc1swXSk7JiMzOTtdKVxuICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICBjdy5wKCYjMzk7LyogRW51bXMgKi8mIzM5OylcbiAgICAgICAgICAgICBwdXRfb3BfbmFtZShwYXJzZWQsIGN3KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBtb2RpZmllcyBkb2N1bWVudGF0aW9uIChZQU1MIHNwZWNzIGluIERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy8pLCB1c2VyLXNwYWNlIHRvb2xpbmcvbGludGVycyAodG9vbHMvbmV0L3lubC8pLCBhbmQgYW4gaW5jbHVkZSBndWFyZCBpbiBpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLiBObyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmQxMGJlMmYwMDM5ZGUxOTU4YjJiNTViYjAyYTQ1YTEyMjVhYTFmYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIyOjUyOjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sCmluZGV4IGIxZWIxMDJhYjg0MzIuLjU0M2RjZGRiMDQ2NDcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9jb25udHJhY2sueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWwKQEAgLTIsNiAmIzQzOzIsNyBAQAogLS0tCiBuYW1lOiBjb25udHJhY2sKIHByb3RvY29sOiBuZXRsaW5rLXJhdwomIzQzO3VhcGktaGVhZGVyOiBsaW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oCiBwcm90b251bTogMTIKIAogZG9jOiAmZ3Q7LQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbAppbmRleCAyMWVkZjNkMjVmMzRiLi43NmY2OWVkODJhMjRkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbApAQCAtMiw2ICYjNDM7Miw3IEBACiAtLS0KIG5hbWU6IG5mdGFibGVzCiBwcm90b2NvbDogbmV0bGluay1yYXcKJiM0Mzt1YXBpLWhlYWRlcjogbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oCiBwcm90b251bTogMTIKIAogZG9jOiAmZ3Q7LQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWwKaW5kZXggNjFlYmI5YTJiYWQ1MS4uZmU1MmQ1MDhkNjA3NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sCkBAIC0yNSwxNyAmIzQzOzI1LDE3IEBAIGRlZmluaXRpb25zOgogICAgICAgLQogICAgICAgICBuYW1lOiBsb29wYmFjawogICAgICAgLQotICAgICAgICBuYW1lOiBwb2ludC10by1wb2ludAomIzQzOyAgICAgICAgbmFtZTogcG9pbnRvcG9pbnQKICAgICAgIC0KLSAgICAgICAgbmFtZTogbm8tdHJhaWxlcnMKJiM0MzsgICAgICAgIG5hbWU6IG5vdHJhaWxlcnMKICAgICAgIC0KICAgICAgICAgbmFtZTogcnVubmluZwogICAgICAgLQotICAgICAgICBuYW1lOiBuby1hcnAKJiM0MzsgICAgICAgIG5hbWU6IG5vYXJwCiAgICAgICAtCiAgICAgICAgIG5hbWU6IHByb21pc2MKICAgICAgIC0KLSAgICAgICAgbmFtZTogYWxsLW11bHRpCiYjNDM7ICAgICAgICBuYW1lOiBhbGxtdWx0aQogICAgICAgLQogICAgICAgICBuYW1lOiBtYXN0ZXIKICAgICAgIC0KQEAgLTQ1LDcgJiM0Mzs0NSw3IEBAIGRlZmluaXRpb25zOgogICAgICAgLQogICAgICAgICBuYW1lOiBwb3J0c2VsCiAgICAgICAtCi0gICAgICAgIG5hbWU6IGF1dG8tbWVkaWEKJiM0MzsgICAgICAgIG5hbWU6IGF1dG9tZWRpYQogICAgICAgLQogICAgICAgICBuYW1lOiBkeW5hbWljCiAgICAgICAtCkBAIC01OCw2ICYjNDM7NTgsNyBAQCBkZWZpbml0aW9uczoKICAgICBuYW1lOiB2bGFuLXByb3RvY29scwogICAgIHR5cGU6IGVudW0KICAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIG5hbWUtcHJlZml4OiBldGgtcC0KICAgICBlbnRyaWVzOgogICAgICAgLQogICAgICAgICBuYW1lOiA4MDIxcQpAQCAtMzA1LDEwICYjNDM7MzA2LDEzIEBAIGRlZmluaXRpb25zOgogICAtCiAgICAgbmFtZTogaXB2NC1kZXZjb25mCiAgICAgZW51bS1uYW1lOgomIzQzOyAgICBuYW1lLXByZWZpeDogaXB2NC1kZXZjb25mLQomIzQzOyAgICBoZWFkZXI6IGxpbnV4L2lwLmgKICAgICB0eXBlOiBlbnVtCiAgICAgZW50cmllczoKICAgICAgIC0KICAgICAgICAgbmFtZTogZm9yd2FyZGluZwomIzQzOyAgICAgICAgdmFsdWU6IDEKICAgICAgIC0KICAgICAgICAgbmFtZTogbWMtZm9yd2FyZGluZwogICAgICAgLQpAQCAtMzc2LDYgJiM0MzszODAsOCBAQCBkZWZpbml0aW9uczoKICAgLQogICAgIG5hbWU6IGlwdjYtZGV2Y29uZgogICAgIGVudW0tbmFtZToKJiM0MzsgICAgbmFtZS1wcmVmaXg6IGRldmNvbmYtCiYjNDM7ICAgIGhlYWRlcjogbGludXgvaXB2Ni5oCiAgICAgdHlwZTogZW51bQogICAgIGVudHJpZXM6CiAgICAgICAtCkBAIC01MDEsNiAmIzQzOzUwNyw4IEBAIGRlZmluaXRpb25zOgogICAtCiAgICAgbmFtZTogaWZsYS1pY21wNi1zdGF0cwogICAgIGVudW0tbmFtZToKJiM0MzsgICAgbmFtZS1wcmVmaXg6IGljbXA2LW1pYi0KJiM0MzsgICAgaGVhZGVyOiBsaW51eC9zbm1wLmgKICAgICB0eXBlOiBlbnVtCiAgICAgZW50cmllczoKICAgICAgIC0KQEAgLTUyMCw2ICYjNDM7NTI4LDggQEAgZGVmaW5pdGlvbnM6CiAgIC0KICAgICBuYW1lOiBpZmxhLWluZXQ2LXN0YXRzCiAgICAgZW51bS1uYW1lOgomIzQzOyAgICBuYW1lLXByZWZpeDogaXBzdGF0cy1taWItCiYjNDM7ICAgIGhlYWRlcjogbGludXgvc25tcC5oCiAgICAgdHlwZTogZW51bQogICAgIGVudHJpZXM6CiAgICAgICAtCkBAIC01MzEsMTEgJiM0Mzs1NDEsMjEgQEAgZGVmaW5pdGlvbnM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IGluZGVsaXZlcnMKICAgICAgIC0KLSAgICAgICAgbmFtZTogb3V0Zm9yd2RhdGFncmFtcwomIzQzOyAgICAgICAgbmFtZTogbm9lY3Rwa3RzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZWN0MXBrdHMKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBlY3QwcGt0cwomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGNlcGt0cwomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IG91dHJlcXVlc3RzCiAgICAgICAtCiAgICAgICAgIG5hbWU6IG91dHBrdHMKICAgICAgIC0KICAgICAgICAgbmFtZTogb3V0b2N0ZXRzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogb3V0Zm9yd2RhdGFncmFtcwogICAgICAgLQogICAgICAgICBuYW1lOiBpbmhkcmVycm9ycwogICAgICAgLQpAQCAtNTg2LDE0ICYjNDM7NjA2LDYgQEAgZGVmaW5pdGlvbnM6CiAgICAgICAgIG5hbWU6IG91dGJjYXN0b2N0ZXRzCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGNzdW1lcnJvcnMKLSAgICAgIC0KLSAgICAgICAgbmFtZTogbm9lY3Rwa3RzCi0gICAgICAtCi0gICAgICAgIG5hbWU6IGVjdDEtcGt0cwotICAgICAgLQotICAgICAgICBuYW1lOiBlY3QwLXBrdHMKLSAgICAgIC0KLSAgICAgICAgbmFtZTogY2Vwa3RzCiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlYXNtLW92ZXJsYXBzCiAgIC0gbmFtZTogYnItYm9vbG9wdC1tdWx0aQpAQCAtNjQwLDYgJiM0Mzs2NTIsOCBAQCBkZWZpbml0aW9uczoKICAgICBuYW1lOiB2bGFuLWZsYWdzCiAgICAgdHlwZTogZmxhZ3MKICAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIG5hbWUtcHJlZml4OiB2bGFuLWZsYWctCiYjNDM7ICAgIGhlYWRlcjogbGludXgvaWZfdmxhbi5oCiAgICAgZW50cmllczoKICAgICAgIC0gcmVvcmRlci1oZHIKICAgICAgIC0gZ3ZycApAQCAtNzI3LDYgJiM0Mzs3NDEsOCBAQCBkZWZpbml0aW9uczoKICAgICBuYW1lOiBpZmxhLXZmLWxpbmstc3RhdGUtZW51bQogICAgIHR5cGU6IGVudW0KICAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIG5hbWUtcHJlZml4OiBpZmxhLXZmLWxpbmstc3RhdGUtCiYjNDM7ICAgIGhlYWRlcjogbGludXgvaWZfbGluay5oCiAgICAgZW50cmllczoKICAgICAgIC0gYXV0bwogICAgICAgLSBlbmFibGUKQEAgLTc5NCw2ICYjNDM7ODEwLDcgQEAgZGVmaW5pdGlvbnM6CiAgICAgbmFtZTogcnRleHQtZmlsdGVyCiAgICAgdHlwZTogZmxhZ3MKICAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIG5hbWUtcHJlZml4OiBydGV4dC1maWx0ZXItCiAgICAgZW50cmllczoKICAgICAgIC0gdmYKICAgICAgIC0gYnJ2bGFuCkBAIC04MDYsMTggJiM0Mzs4MjMsMjAgQEAgZGVmaW5pdGlvbnM6CiAgIC0KICAgICBuYW1lOiBuZXRraXQtcG9saWN5CiAgICAgdHlwZTogZW51bQotICAgIGVudW0tbmFtZToKJiM0MzsgICAgZW51bS1uYW1lOiBuZXRraXQtYWN0aW9uCiYjNDM7ICAgIG5hbWUtcHJlZml4OiBuZXRraXQtCiAgICAgZW50cmllczoKICAgICAgIC0KLSAgICAgICAgbmFtZTogZm9yd2FyZAomIzQzOyAgICAgICAgbmFtZTogcGFzcwogICAgICAgICB2YWx1ZTogMAogICAgICAgLQotICAgICAgICBuYW1lOiBibGFja2hvbGUKJiM0MzsgICAgICAgIG5hbWU6IGRyb3AKICAgICAgICAgdmFsdWU6IDIKICAgLQogICAgIG5hbWU6IG5ldGtpdC1tb2RlCiAgICAgdHlwZTogZW51bQogICAgIGVudW0tbmFtZTogbmV0a2l0LW1vZGUKJiM0MzsgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC0KICAgICBlbnRyaWVzOgogICAgICAgLSBuYW1lOiBsMgogICAgICAgLSBuYW1lOiBsMwpAQCAtODI1LDcgJiM0Mzs4NDQsOCBAQCBkZWZpbml0aW9uczoKICAgLQogICAgIG5hbWU6IG5ldGtpdC1zY3J1YgogICAgIHR5cGU6IGVudW0KLSAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIGVudW0tbmFtZTogbmV0a2l0LXNjcnViCiYjNDM7ICAgIG5hbWUtcHJlZml4OiBuZXRraXQtc2NydWItCiAgICAgZW50cmllczoKICAgICAgIC0gbmFtZTogbm9uZQogICAgICAgLSBuYW1lOiBkZWZhdWx0CkBAIC04MzMsMTMgJiM0Mzs4NTMsMTQgQEAgZGVmaW5pdGlvbnM6CiAgICAgbmFtZTogbmV0a2l0LXBhaXJpbmcKICAgICB0eXBlOiBlbnVtCiAgICAgZW51bS1uYW1lOiBuZXRraXQtcGFpcmluZwomIzQzOyAgICBuYW1lLXByZWZpeDogbmV0a2l0LWRldmljZS0KICAgICBlbnRyaWVzOgogICAgICAgLSBuYW1lOiBwYWlyCiAgICAgICAtIG5hbWU6IHNpbmdsZQogICAtCiAgICAgbmFtZTogb3Zwbi1tb2RlCiAgICAgZW51bS1uYW1lOiBvdnBuLW1vZGUKLSAgICBuYW1lLXByZWZpeDogb3Zwbi1tb2RlCiYjNDM7ICAgIG5hbWUtcHJlZml4OiBvdnBuLW1vZGUtCiAgICAgdHlwZTogZW51bQogICAgIGVudHJpZXM6CiAgICAgICAtIHAycApAQCAtODQ4LDYgJiM0Mzs4NjksNyBAQCBkZWZpbml0aW9uczoKICAgICBuYW1lOiBici1zdHAtbW9kZQogICAgIHR5cGU6IGVudW0KICAgICBlbnVtLW5hbWU6IGJyLXN0cC1tb2RlCiYjNDM7ICAgIG5hbWUtcHJlZml4OiBici1zdHAtbW9kZS0KICAgICBlbnRyaWVzOgogICAgICAgLSBhdXRvCiAgICAgICAtIHVzZXIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oCmluZGV4IDQ5ZjU2NDAwOTJhMGQuLjI2YmRhYmM1MDJmZWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaApAQCAtNSw4ICYjNDM7NSw4IEBACiAgKiBBdXRob3I6IEhpZGVha2kgWU9TSElGVUpJICZsdDt5b3NoZnVqaUBsaW51eC1pcHY2Lm9yZyZndDsKICAqLwogCi0jaWZuZGVmIF9MSU5VWF9TTk1QX0gKLSNkZWZpbmUgX0xJTlVYX1NOTVBfSAomIzQzOyNpZm5kZWYgX1VBUElfTElOVVhfU05NUF9ICiYjNDM7I2RlZmluZSBfVUFQSV9MSU5VWF9TTk1QX0gKIAogLyogaXBzdGF0cyBtaWIgZGVmaW5pdGlvbnMgKi8KIC8qCkBAIC0zNzIsNCAmIzQzOzM3Miw0IEBAIGVudW0KIAlfX0xJTlVYX01JQl9UTFNNQVgKIH07CiAKLSNlbmRpZgkvKiBfTElOVVhfU05NUF9IICovCiYjNDM7I2VuZGlmCS8qIF9VQVBJX0xJTlVYX1NOTVBfSCAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzIGIvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzCmluZGV4IDI3NzEzNzUzMzlkOWMuLjhlMTM2YTVkZjg5OTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL01ha2VmaWxlLmRlcHMKQEAgLTQwLDggJiM0Mzs0MCwxNSBAQCBDRkxBR1Nfb3ZzX3Zwb3J0Oj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9PUEVOVlNXSVRDSF9ILG9wZW52c3dpdGNoLmgpCiBDRkxBR1NfcHNwOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX1BTUF9ILHBzcC5oKQogQ0ZMQUdTX3J0LWFkZHI6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcCiAJJChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfSUZfQUREUl9ILGlmX2FkZHIuaCkKLUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXAotCSQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfTElOS19ILGlmX2xpbmsuaCkKJiM0MztDRkxBR1NfcnQtbGluazo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9MSU5LX0gsaWZfbGluay5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSVBfSCxpcC5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfSVBWNl9ILGlwdjYuaCkgXAomIzQzOwkkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0JSSURHRV9ILGlmX2JyaWRnZS5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfSUZfVFVOTkVMX0hfLGlmX3R1bm5lbC5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfVkxBTl9IXyxpZl92bGFuLmgpIFwKJiM0MzsJJChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9TTk1QX0gsc25tcC5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfRFBMTF9ILGRwbGwuaCkKIENGTEFHU19ydC1uZWlnaDo9JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpIFwKIAkkKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9ORUlHSEJPVVJfSCxuZWlnaGJvdXIuaCkKIENGTEFHU19ydC1yb3V0ZTo9JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpCmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZQppbmRleCA4NTlhNmZiNDQ2ZTE0Li4yMGRkNzBjZDcwOWVlIDEwMDY0NAotLS0gYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmUKQEAgLTEsMyAmIzQzOzEsNiBAQAogKi11c2VyLmMKICotdXNlci5oCiYjNDM7Ki1saW50ZXIuYwomIzQzOyotbGludGVyLmgKJiM0MzsqLWxpbnRlcgogKi5yc3QKZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUKaW5kZXggNWExODYzNDliNWE4Ni4uYmNmN2Y0NTU2MzEzMCAxMDA2NDQKLS0tIGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUKQEAgLTMzLDggJiM0MzszMyw5IEBAIE9CSlM9JChwYXRzdWJzdCAlLCUtdXNlci5vLCR7R0VOU30pCiBTUEVDU19QQVRIUz0kKHdpbGRjYXJkICQoU1BFQ1NfRElSKS8qLnlhbWwpCiBTUEVDUz0kKHBhdHN1YnN0ICQoU1BFQ1NfRElSKS8lLnlhbWwsJSwke1NQRUNTX1BBVEhTfSkKIFJTVFM9JChwYXRzdWJzdCAlLCUucnN0LCR7U1BFQ1N9KQomIzQzO0xJTlRTPSQocGF0c3Vic3QgJSwlLWxpbnQsJHtTUEVDU30pCiAKLWFsbDogcHJvdG9zLmEgJChIRFJTKSAkKFNSQ1MpICQoS0hEUlMpICQoS1NSQ1MpICQoVUFQSSkgJChSU1RTKQomIzQzO2FsbDogcHJvdG9zLmEgJChIRFJTKSAkKFNSQ1MpICQoS0hEUlMpICQoS1NSQ1MpICQoVUFQSSkgJChSU1RTKSAkKExJTlRTKQogCiBwcm90b3MuYTogJChPQkpTKQogCUBlY2hvIC1lICYjMzQ7XHRBUiAkQCYjMzQ7CkBAIC01NiwxMSAmIzQzOzU3LDI5IEBAIHByb3Rvcy5hOiAkKE9CSlMpCiAJQGVjaG8gLWUgJiMzNDtcdEdFTl9SU1QgJEAmIzM0OwogCUAkKFRPT0xfUlNUKSAtbyAkQCAtaSAkJmx0OwogCiYjNDM7JS1saW50ZXIuYzogJChTUEVDU19ESVIpLyUueWFtbCAkKFRPT0wpIC4uL2xpbnRlci9saW50ZXIuaAomIzQzOwlAZWNobyAtZSAmIzM0O1x0R0VOICRAJiMzNDsKJiM0MzsJQCQoVE9PTCkgLS1tb2RlIHVzZXIgLS1saW50ZXIgLS1zcGVjICQmbHQ7IC1vICRAICQoWU5MX0dFTl9BUkdfJCopCiYjNDM7CiYjNDM7JS1saW50ZXIuaDogJS1saW50ZXIuYyAuLi9saW50ZXIvZ2VuLWguc2gKJiM0MzsJQGVjaG8gLWUgJiMzNDtcdEdFTiAkQCYjMzQ7CiYjNDM7CUAuLi9saW50ZXIvZ2VuLWguc2ggJChDRkxBR1MpICQoQ0ZMQUdTXyQqKSAmbHQ7ICQmbHQ7ICZndDsgJEAKJiM0MzsKJiM0MzslLWxpbnRlcjogJS1saW50ZXIuYyAlLWxpbnRlci5oIC4uL2xpbnRlci9saW50ZXIuaAomIzQzOwlAZWNobyAtZSAmIzM0O1x0Q0MgJEAmIzM0OwomIzQzOwlAJChDQykgJChDRkxBR1MpICQoQ0ZMQUdTXyQqKSAtaW5jbHVkZSAkKi1saW50ZXIuaCAtbyAkQCAkJmx0OwomIzQzOwomIzQzOyUtbGludDogJS1saW50ZXIKJiM0MzsJQGVjaG8gLWUgJiMzNDtcdExJTlQgJEAmIzM0OwomIzQzOwlALi8kJmx0OyAkKgomIzQzOwomIzQzO2xpbnQ6ICQoTElOVFMpCiYjNDM7CiBjbGVhbjoKIAlybSAtZiAqLm8KIAogZGlzdGNsZWFuOiBjbGVhbgotCXJtIC1mICouYyAqLmggKi5hICoucnN0CiYjNDM7CXJtIC1mICouYyAqLmggKi5hICoucnN0ICotbGludGVyCiAKIHJlZ2VuOgogCUAuLi95bmwtcmVnZW4uc2gKQEAgLTY4LDcgJiM0Mzs4Nyw3IEBAIHJlZ2VuOgogaW5zdGFsbC1oZWFkZXJzOiAkKEhEUlMpCiAJQGVjaG8gLWUgJiMzNDtcdElOU1RBTEwgZ2VuZXJhdGVkIGhlYWRlcnMmIzM0OwogCUAkKElOU1RBTEwpIC1kICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubAotCUAkKElOU1RBTEwpIC1tIDA2NDQgKi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC8KJiM0MzsJQCQoSU5TVEFMTCkgLW0gMDY0NCAkKEtIRFJTKSAkKERFU1RESVIpJChpbmNsdWRlZGlyKS95bmwvCiAKIGluc3RhbGwtcnN0czogJChSU1RTKQogCUBlY2hvIC1lICYjMzQ7XHRJTlNUQUxMIGdlbmVyYXRlZCBkb2NzJiMzNDsKQEAgLTg0LDUgJiM0MzsxMDMsNSBAQCBpbnN0YWxsLXNwZWNzOgogCiBpbnN0YWxsOiBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3MKIAotLlBIT05ZOiBhbGwgY2xlYW4gZGlzdGNsZWFuIHJlZ2VuIGluc3RhbGwgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzCiYjNDM7LlBIT05ZOiBhbGwgY2xlYW4gZGlzdGNsZWFuIHJlZ2VuIGluc3RhbGwgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzIGxpbnQKIC5ERUZBVUxUX0dPQUw6IGFsbApkaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2ggYi90b29scy9uZXQveW5sL2xpbnRlci9nZW4taC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwLi4yNDc0OTM2MDAwMzRkCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2gKQEAgLTAsMCAmIzQzOzEsMjMgQEAKJiM0MzsjIS9iaW4vc2gKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7IyBVc2FnZTogLi9nZW4taC5zaCAkQ0ZMQUdTICZsdDsgaW4uYyAmZ3Q7IG91dC5oCiYjNDM7IwomIzQzOyMgRXh0cmFjdCB2YWxpZCBzeW1ib2xzLCBhbmQgZGVmaW5lIHRoYXQgdGhleSBhcmUgYXZhaWxhYmxlLiBUaGlzIGlzIGEKJiM0MzsjIHdvcmthcm91bmQsIHRvIGF2b2lkIGNvbXBpbGUgZmFpbHVyZXMgZHVlIHRvIG5vbi1leGlzdGVudCBlbnVtIG1lbWJlcnMuCiYjNDM7IwomIzQzOyMgQ2FwaXRhbGl6ZWQga2V5d29yZHMgZm91bmQgaW4gdGhlIHByZXByb2Nlc3NvciBvdXRwdXQsIGFyZSBtb3N0bHkgZW51bQomIzQzOyMgbWVtYmVycy4KJiM0MzsjCiYjNDM7IyBBcyBhbiBleGFtcGxlLCBleGlzdGVuY2Ugb2YgRk9PIGNhbiBiZSBjaGVja2VkIHdpdGg6CiYjNDM7IyAgICNpZiBkZWZpbmVkKEZPTykgfHwgZGVmaW5lZChMSU5URVJfSEFTX0ZPTykKJiM0MzsjIHRodXMgY2hlY2tpbmcgZm9yIEZPTyBlaXRoZXIgYXMgYSBtYWNybyBvciBhcyBhbiBlbnVtIG1lbWJlcnMuCiYjNDM7CiYjNDM7c2V0IC1lCiYjNDM7CiYjNDM7ZWNobyAmIzM5Oy8qIFRoaXMgaXMgYW4gYXV0by1nZW5lcmF0ZWQgZmlsZSAqLyYjMzk7CiYjNDM7Z3JlcCAmIzM5O14jaW5jbHVkZSAmbHQ7bGludXgvJiMzOTsgfAomIzQzOwljcHAgLXggYyAmIzM0OyRAJiMzNDsgLSB8CiYjNDM7CWdyZXAgLXdvICYjMzk7W0EtWl1bQS1aMC05X11cJiM0MzsmIzM5OyB8CiYjNDM7CXNvcnQgfCB1bmlxIHwKJiM0MzsJc2VkIC1lICYjMzk7cy9eLyNkZWZpbmUgTElOVEVSX0hBU18vZyYjMzk7CmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaCBiL3Rvb2xzL25ldC95bmwvbGludGVyL2xpbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjBkMWMyOGM5ZjIxNDAKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaApAQCAtMCwwICYjNDM7MSwxNTIgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtzdGRpby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdGRib29sLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGVudW1fa3YgewomIzQzOwljb25zdCBjaGFyICpuYW1lOwomIzQzOwljb25zdCBsb25nIGxvbmcgdmFsOwomIzQzOwljb25zdCBib29sIGlzX3VuZGVmOjE7CiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3QgZW51bV9lbnRyeSB7CiYjNDM7CWNvbnN0IHN0cnVjdCBlbnVtX2t2IHlubDsKJiM0MzsJY29uc3Qgc3RydWN0IGVudW1fa3YgYzsKJiM0MzsJY29uc3QgYm9vbCBpc19zZW50aW5hbDoxOwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBZTkxfRU5VTV9FTlRSWShZTkxfTkFNRSwgQ19OQU1FLCBZTkxfVkFMVUUpIFwKJiM0MzsJeyBcCiYjNDM7CQkueW5sID0geyAubmFtZSA9IFlOTF9OQU1FLCAudmFsID0gWU5MX1ZBTFVFIH0sIFwKJiM0MzsJCS5jID0geyAubmFtZSA9ICNDX05BTUUsIC52YWwgPSBDX05BTUUgfSwgXAomIzQzOwl9CiYjNDM7CiYjNDM7I2RlZmluZSBZTkxfRU5VTV9CQURfRU5UUlkoWU5MX05BTUUsIENfTkFNRSwgWU5MX1ZBTFVFKSBcCiYjNDM7CXsgXAomIzQzOwkJLnlubCA9IHsgLm5hbWUgPSBZTkxfTkFNRSwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcCiYjNDM7CQkuYyA9IHsgLm5hbWUgPSAjQ19OQU1FLCAuaXNfdW5kZWYgPSB0cnVlIH0sIFwKJiM0MzsJfQomIzQzOwomIzQzOyNkZWZpbmUgWU5MX0VOVU1fU0VOVElOQUwoQ19OQU1FLCBZTkxfVkFMVUUpIFwKJiM0MzsJeyBcCiYjNDM7CQkueW5sID0geyAubmFtZSA9ICYjMzQ7TUFYJiMzNDssIC52YWwgPSBZTkxfVkFMVUUgfSwgXAomIzQzOwkJLmMgPSB7IC5uYW1lID0gI0NfTkFNRSwgLnZhbCA9IENfTkFNRSB9LCBcCiYjNDM7CQkuaXNfc2VudGluYWwgPSB0cnVlLCBcCiYjNDM7CX0KJiM0MzsKJiM0MztlbnVtIHlubF9lbnVtX3R5cGUgewomIzQzOwlZTkxfRU5VTSwKJiM0MzsJWU5MX0ZMQUdTLAomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IGVudW1fc2V0IHsKJiM0MzsJY29uc3QgY2hhciAqbmFtZTsKJiM0MzsJY29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5OwomIzQzOwllbnVtIHlubF9lbnVtX3R5cGUgdHlwZTsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBsaW50ZXJfY3R4IHsKJiM0MzsJaW50IGVycm9yczsKJiM0MzsJaW50IHdhcm5pbmdzOwomIzQzOwljb25zdCBjaGFyICpuYW1lOwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBlcnJmKGZtdCwgLi4uKSBcCiYjNDM7CWRvIHsgXAomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7JXM6IEVSUk9SOiAmIzM0OyBmbXQsIGN0eC0mZ3Q7bmFtZSwgX19WQV9BUkdTX18pOyBcCiYjNDM7CQljdHgtJmd0O2Vycm9ycyYjNDM7JiM0Mzs7IFwKJiM0MzsJfSB3aGlsZSAoMCkKJiM0MzsKJiM0MzsjZGVmaW5lIHdhcm5mKGZtdCwgLi4uKSBcCiYjNDM7CWRvIHsgXAomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7JXM6IFdBUk46ICYjMzQ7IGZtdCwgY3R4LSZndDtuYW1lLCBfX1ZBX0FSR1NfXyk7IFwKJiM0MzsJCWN0eC0mZ3Q7d2FybmluZ3MmIzQzOyYjNDM7OyBcCiYjNDM7CX0gd2hpbGUgKDApCiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBsb25nIGxvbmcgZmluZF9uZXh0X3ZhbHVlKGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsCiYjNDM7CQkJCQljb25zdCBsb25nIGxvbmcgbGFzdF92YWwpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGVzLSZndDt0eXBlKSB7CiYjNDM7CWNhc2UgWU5MX0VOVU06CiYjNDM7CQlyZXR1cm4gbGFzdF92YWwgJiM0MzsgMTsKJiM0MzsJY2FzZSBZTkxfRkxBR1M6CiYjNDM7CQlyZXR1cm4gbGFzdF92YWwgJmx0OyZsdDsgMTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCS8qIHVucmVhY2hhYmxlICovCiYjNDM7CQlhYm9ydCgpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBsaW50X2VudW1fZW50cnkoc3RydWN0IGxpbnRlcl9jdHggKmN0eCwKJiM0MzsJCQkJICAgY29uc3Qgc3RydWN0IGVudW1fc2V0ICplcywKJiM0MzsJCQkJICAgY29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5LAomIzQzOwkJCQkgICBsb25nIGxvbmcgKmxhc3RfdmFsLCBjb25zdCBpbnQgaSwKJiM0MzsJCQkJICAgY29uc3QgaW50IGNudCkKJiM0Mzt7CiYjNDM7CWNvbnN0IGxvbmcgbG9uZyB2YWwgPSBlbnRyeS0mZ3Q7Yy52YWw7CiYjNDM7CiYjNDM7CWlmIChpICZndDsgMCAmYW1wOyZhbXA7IHZhbCAhPSAqbGFzdF92YWwgJmFtcDsmYW1wOyB2YWwgIT0gZmluZF9uZXh0X3ZhbHVlKGVzLCAqbGFzdF92YWwpKQomIzQzOwkJd2FybmYoJiMzNDslczogUG9zc2libGUgbWlzc2luZyBtZW1iZXIgYmVmb3JlICVzICglbGxkIC0mZ3Q7ICVsbGQpXG4mIzM0OywKJiM0MzsJCSAgICAgIGVzLSZndDtuYW1lLCBlbnRyeS0mZ3Q7Yy5uYW1lLCAqbGFzdF92YWwsIHZhbCk7CiYjNDM7CSpsYXN0X3ZhbCA9IGVudHJ5LSZndDtjLnZhbDsKJiM0MzsKJiM0MzsJaWYgKGkgPT0gY250IC0gMSAmYW1wOyZhbXA7IHN0cmNtcChlbnRyeS0mZ3Q7eW5sLm5hbWUsICYjMzQ7bWF4JiMzNDspID09IDApCiYjNDM7CQllcnJmKCYjMzQ7JXM6IFNlbnRpbmFsIHVzZWQgaW4gWU5MIHNwZWNcbiYjMzQ7LCBlcy0mZ3Q7bmFtZSk7CiYjNDM7CiYjNDM7CWlmIChlbnRyeS0mZ3Q7Yy5pc191bmRlZikgewomIzQzOwkJZXJyZigmIzM0OyVzOiAlczogJXMgbm90IGZvdW5kXG4mIzM0OywgZXMtJmd0O25hbWUsIGVudHJ5LSZndDt5bmwubmFtZSwKJiM0MzsJCSAgICAgZW50cnktJmd0O2MubmFtZSk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGVudHJ5LSZndDt5bmwudmFsID09IGVudHJ5LSZndDtjLnZhbCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKGVudHJ5LSZndDtpc19zZW50aW5hbCkgewomIzQzOwkJaWYgKGVzLSZndDt0eXBlID09IFlOTF9FTlVNICZhbXA7JmFtcDsgZW50cnktJmd0O3lubC52YWwgJiM0MzsgMSA9PSBlbnRyeS0mZ3Q7Yy52YWwpCiYjNDM7CQkJcmV0dXJuOyAvKiBlZy4gREVWQ09ORl9NQVggaXMgdGhlIHN0b3JhZ2Ugc2l6ZSAqLwomIzQzOwkJd2FybmYoJiMzNDslczogU2VudGluYWwgbWlzbWF0Y2g6ICVsbGQgIT0gJWxsZCAoTGFzdCBZTkwgIT0gJXMpXG4mIzM0OywKJiM0MzsJCSAgICAgIGVzLSZndDtuYW1lLCBlbnRyeS0mZ3Q7eW5sLnZhbCwgZW50cnktJmd0O2MudmFsLCBlbnRyeS0mZ3Q7Yy5uYW1lKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWVycmYoJiMzNDslczogVmFsdWUgbWlzbWF0Y2g6ICVsbGQgIT0gJWxsZCAoJXMgIT0gJXMpXG4mIzM0OywgZXMtJmd0O25hbWUsCiYjNDM7CQkgICAgIGVudHJ5LSZndDt5bmwudmFsLCBlbnRyeS0mZ3Q7Yy52YWwsIGVudHJ5LSZndDt5bmwubmFtZSwKJiM0MzsJCSAgICAgZW50cnktJmd0O2MubmFtZSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGxpbnRfZW51bShzdHJ1Y3QgbGludGVyX2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5ID0gZXMtJmd0O2VudHJ5OwomIzQzOwlsb25nIGxvbmcgbGFzdF92YWw7CiYjNDM7CWludCBjbnQgPSAwOwomIzQzOwlpbnQgaSA9IDA7CiYjNDM7CiYjNDM7CXdoaWxlIChlbnRyeS0mZ3Q7eW5sLm5hbWUpIHsKJiM0MzsJCWlmICghZW50cnktJmd0O2lzX3NlbnRpbmFsKQomIzQzOwkJCWNudCYjNDM7JiM0Mzs7CiYjNDM7CQllbnRyeSYjNDM7JiM0Mzs7CiYjNDM7CX0KJiM0MzsJZW50cnkgPSBlcy0mZ3Q7ZW50cnk7CiYjNDM7CiYjNDM7CXdoaWxlIChlbnRyeS0mZ3Q7eW5sLm5hbWUpCiYjNDM7CQlsaW50X2VudW1fZW50cnkoY3R4LCBlcywgZW50cnkmIzQzOyYjNDM7LCAmYW1wO2xhc3RfdmFsLCBpJiM0MzsmIzQzOywgY250KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBpbnQgbGludGVyX3J1bihjb25zdCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsCiYjNDM7CQkJICAgICBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzKQomIzQzO3sKJiM0MzsJc3RydWN0IGxpbnRlcl9jdHggY3R4ID0gewomIzQzOwkJLm5hbWUgPSBhcmd2W2FyZ2MgJmd0OyAxID8gMSA6IDBdLAomIzQzOwl9OwomIzQzOwomIzQzOwl3aGlsZSAoZXMtJmd0O25hbWUpIHsKJiM0MzsJCWxpbnRfZW51bSgmYW1wO2N0eCwgZXMpOwomIzQzOwkJZXMmIzQzOyYjNDM7OwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChjdHguZXJyb3JzIHx8IGN0eC53YXJuaW5ncykKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0OyVzOiBMaW50ZXIgc3VtbWFyeTogJWQgZXJyb3JzLCAlZCB3YXJuaW5nc1xuJiMzNDssCiYjNDM7CQkJY3R4Lm5hbWUsIGN0eC5lcnJvcnMsIGN0eC53YXJuaW5ncyk7CiYjNDM7CiYjNDM7CXJldHVybiBFWElUX1NVQ0NFU1M7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkgYi90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weQppbmRleCAyYjM0ODNkYjFiNjBjLi41YmJlM2NiYThmNzU5IDEwMDc1NQotLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weQomIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weQpAQCAtMTY4OCw2ICYjNDM7MTY4OCw4IEBAIGNsYXNzIENvZGVXcml0ZXI6CiAgICAgICAgIHNlbGYuY2xvc2Vfb3V0X2ZpbGUoKQogCiAgICAgZGVmIGNsb3NlX291dF9maWxlKHNlbGYpOgomIzQzOyAgICAgICAgaWYgc2VsZi5fYmxvY2tfZW5kOgomIzQzOyAgICAgICAgICAgIHNlbGYuX291dC53cml0ZSgmIzM5O1x0JiMzOTsgKiBzZWxmLl9pbmQgJiM0MzsgJiMzOTt9XG4mIzM5OykKICAgICAgICAgaWYgc2VsZi5fb3V0ID09IG9zLnN5cy5zdGRvdXQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBBdm9pZCBtb2RpZnlpbmcgdGhlIGZpbGUgaWYgY29udGVudHMgZGlkbiYjMzk7dCBjaGFuZ2UKQEAgLTIwODQsNiAmIzQzOzIwODYsMzAgQEAgZGVmIHB1dF9lbnVtX3RvX3N0cihfZmFtaWx5LCBjdywgZW51bSk6CiAgICAgX3B1dF9lbnVtX3RvX3N0cl9oZWxwZXIoY3csIGVudW0ucmVuZGVyX25hbWUsIG1hcF9uYW1lLCAmIzM5O3ZhbHVlJiMzOTssIGVudW09ZW51bSkKIAogCiYjNDM7ZGVmIHB1dF9lbnVtX3RvX2xpbnRlcihmYW1pbHksIGN3LCBlbnVtKToKJiM0MzsgICAgbmFtZV9wZnggPSBlbnVtLmdldCgmIzM5O25hbWUtcHJlZml4JiMzOTssIGYmIzM0O3tmYW1pbHkuaWRlbnRfbmFtZX0te2VudW1bJiMzOTtuYW1lJiMzOTtdfS0mIzM0OykKJiM0MzsgICAgbWF4X25hbWUgPSBjX3VwcGVyKG5hbWVfcGZ4ICYjNDM7ICYjMzk7bWF4JiMzOTspCiYjNDM7ICAgIG1hcF9uYW1lID0gZiYjMzk7e2VudW0ucmVuZGVyX25hbWV9X2VudHJpZXMmIzM5OwomIzQzOyAgICBjdy5ibG9ja19zdGFydChsaW5lPWYmIzM0O3N0YXRpYyBjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSB7bWFwX25hbWV9W10gPSYjMzQ7KQomIzQzOyAgICB2YWwgPSAwCiYjNDM7ICAgIGZvciBlbnRyeSBpbiBlbnVtLmVudHJpZXMudmFsdWVzKCk6CiYjNDM7ICAgICAgICB2YWwgPSBlbnRyeS51c2VyX3ZhbHVlKCkKJiM0MzsgICAgICAgIGNfbmFtZSA9IGVudHJ5LmNfbmFtZQomIzQzOyAgICAgICAgY3cucChmJiMzOTsjaWYgZGVmaW5lZCh7Y19uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3tjX25hbWV9KSYjMzk7KQomIzQzOyAgICAgICAgY3cucChmJiMzOTtZTkxfRU5VTV9FTlRSWSgmIzM0O3tlbnRyeS5uYW1lfSYjMzQ7LCB7Y19uYW1lfSwge3ZhbH0pLCYjMzk7KQomIzQzOyAgICAgICAgY3cucCgmIzM5OyNlbHNlJiMzOTspCiYjNDM7ICAgICAgICBjdy5wKGYmIzM5O1lOTF9FTlVNX0JBRF9FTlRSWSgmIzM0O3tlbnRyeS5uYW1lfSYjMzQ7LCB7Y19uYW1lfSwge3ZhbH0pLCYjMzk7KQomIzQzOyAgICAgICAgY3cucCgmIzM5OyNlbmRpZiYjMzk7KQomIzQzOyAgICBjdy5wKGYmIzM5OyNpZiBkZWZpbmVkKHttYXhfbmFtZX0pIHx8IGRlZmluZWQoTElOVEVSX0hBU197bWF4X25hbWV9KSYjMzk7KQomIzQzOyAgICBjdy5wKGYmIzM5O1lOTF9FTlVNX1NFTlRJTkFMKHttYXhfbmFtZX0sIHt2YWx9KSwmIzM5OykKJiM0MzsgICAgY3cucCgmIzM5OyNlbmRpZiYjMzk7KQomIzQzOyAgICBjdy5wKCYjMzk7e30sJiMzOTspCiYjNDM7ICAgIGN3LmJsb2NrX2VuZChsaW5lPSYjMzk7OyYjMzk7KQomIzQzOyAgICBjdy5ubCgpCiYjNDM7ICAgIGVudW1fdHlwZSA9IGVudW1bJiMzOTt0eXBlJiMzOTtdLnVwcGVyKCkKJiM0MzsgICAgcmV0dXJuIGYmIzM5O3t7JiMzNDt7ZW51bS5uYW1lfSYjMzQ7LCAmYW1wO3ttYXBfbmFtZX1bMF0sIFlOTF97ZW51bV90eXBlfX19LCYjMzk7CiYjNDM7CiYjNDM7CiBkZWYgcHV0X2xvY2FsX3ZhcnMoc3RydWN0KToKICAgICBsb2NhbF92YXJzID0gW10KICAgICBoYXNfYXJyYXkgPSBGYWxzZQpAQCAtMzQ2Miw2ICYjNDM7MzQ4OCw3IEBAIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tc3BlYyYjMzk7LCBkZXN0PSYjMzk7c3BlYyYjMzk7LCB0eXBlPXN0ciwgcmVxdWlyZWQ9VHJ1ZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1oZWFkZXImIzM5OywgZGVzdD0mIzM5O2hlYWRlciYjMzk7LCBhY3Rpb249JiMzOTtzdG9yZV90cnVlJiMzOTssIGRlZmF1bHQ9Tm9uZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1zb3VyY2UmIzM5OywgZGVzdD0mIzM5O2hlYWRlciYjMzk7LCBhY3Rpb249JiMzOTtzdG9yZV9mYWxzZSYjMzk7KQomIzQzOyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1saW50ZXImIzM5OywgZGVzdD0mIzM5O2xpbnRlciYjMzk7LCBhY3Rpb249JiMzOTtzdG9yZV90cnVlJiMzOTspCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tdXNlci1oZWFkZXImIzM5OywgbmFyZ3M9JiMzOTsmIzQzOyYjMzk7LCBkZWZhdWx0PVtdKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJiMzOTstLWNtcC1vdXQmIzM5OywgYWN0aW9uPSYjMzk7c3RvcmVfdHJ1ZSYjMzk7LCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSYjMzk7RG8gbm90IG92ZXJ3cml0ZSB0aGUgb3V0cHV0IGZpbGUgaWYgdGhlIG5ldyBvdXRwdXQgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbGQmIzM5OykKQEAgLTM0NzAsOCAmIzQzOzM0OTcsMTAgQEAgZGVmIG1haW4oKToKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1mdW5jdGlvbi1wcmVmaXgmIzM5OywgZGVzdD0mIzM5O2ZuX3ByZWZpeCYjMzk7LCB0eXBlPXN0cikKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiYjNDM7ICAgIGlmIGFyZ3MubGludGVyOgomIzQzOyAgICAgICAgYXJncy5oZWFkZXIgPSBGYWxzZQogICAgIGlmIGFyZ3MuaGVhZGVyIGlzIE5vbmU6Ci0gICAgICAgIHBhcnNlci5lcnJvcigmIzM0Oy0taGVhZGVyIG9yIC0tc291cmNlIGlzIHJlcXVpcmVkJiMzNDspCiYjNDM7ICAgICAgICBwYXJzZXIuZXJyb3IoJiMzNDstLWhlYWRlciwgLS1zb3VyY2Ugb3IgLS1saW50ZXIgaXMgcmVxdWlyZWQmIzM0OykKIAogICAgIGV4Y2x1ZGVfb3BzID0gW3JlLmNvbXBpbGUoZXhwcikgZm9yIGV4cHIgaW4gYXJncy5leGNsdWRlX29wXQogCkBAIC0zNDk0LDE3ICYjNDM7MzUyMywxOSBAQCBkZWYgbWFpbigpOgogICAgICAgICBjdy5wKGYmIzM5Oy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiB7cGFyc2VkLmxpY2Vuc2V9JiMzOTspCiAgICAgY3cucCgmIzM0Oy8qIERvIG5vdCBlZGl0IGRpcmVjdGx5LCBhdXRvLWdlbmVyYXRlZCBmcm9tOiAqLyYjMzQ7KQogICAgIGN3LnAoZiYjMzQ7LypcdHtzcGVjX2tlcm5lbH0gKi8mIzM0OykKLSAgICBjdy5wKGYmIzM0Oy8qIFlOTC1HRU4ge2FyZ3MubW9kZX0geyYjMzk7aGVhZGVyJiMzOTsgaWYgYXJncy5oZWFkZXIgZWxzZSAmIzM5O3NvdXJjZSYjMzk7fSAqLyYjMzQ7KQotICAgIGlmIGFyZ3MuZXhjbHVkZV9vcCBvciBhcmdzLnVzZXJfaGVhZGVyIG9yIGFyZ3MuZm5fcHJlZml4OgotICAgICAgICBsaW5lID0gJiMzOTsmIzM5OwotICAgICAgICBpZiBhcmdzLnVzZXJfaGVhZGVyOgotICAgICAgICAgICAgbGluZSAmIzQzOz0gJiMzOTsgLS11c2VyLWhlYWRlciAmIzM5Oy5qb2luKFsmIzM5OyYjMzk7XSAmIzQzOyBhcmdzLnVzZXJfaGVhZGVyKQotICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfb3A6Ci0gICAgICAgICAgICBsaW5lICYjNDM7PSAmIzM5OyAtLWV4Y2x1ZGUtb3AgJiMzOTsuam9pbihbJiMzOTsmIzM5O10gJiM0MzsgYXJncy5leGNsdWRlX29wKQotICAgICAgICBpZiBhcmdzLmZuX3ByZWZpeDoKLSAgICAgICAgICAgIGxpbmUgJiM0Mzs9IGYmIzM5OyAtLWZ1bmN0aW9uLXByZWZpeCB7YXJncy5mbl9wcmVmaXh9JiMzOTsKLSAgICAgICAgY3cucChmJiMzOTsvKiBZTkwtQVJHe2xpbmV9ICovJiMzOTspCi0gICAgY3cucCgmIzM5Oy8qIFRvIHJlZ2VuZXJhdGUgcnVuOiB0b29scy9uZXQveW5sL3lubC1yZWdlbi5zaCAqLyYjMzk7KQomIzQzOyAgICBpZiBub3QgYXJncy5saW50ZXI6CiYjNDM7ICAgICAgICB5bmxfYXJnID0gJiMzOTtoZWFkZXImIzM5OyBpZiBhcmdzLmhlYWRlciBlbHNlICYjMzk7c291cmNlJiMzOTsKJiM0MzsgICAgICAgIGN3LnAoZiYjMzQ7LyogWU5MLUdFTiB7YXJncy5tb2RlfSB7eW5sX2FyZ30gKi8mIzM0OykKJiM0MzsgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcCBvciBhcmdzLnVzZXJfaGVhZGVyIG9yIGFyZ3MuZm5fcHJlZml4OgomIzQzOyAgICAgICAgICAgIGxpbmUgPSAmIzM5OyYjMzk7CiYjNDM7ICAgICAgICAgICAgaWYgYXJncy51c2VyX2hlYWRlcjoKJiM0MzsgICAgICAgICAgICAgICAgbGluZSAmIzQzOz0gJiMzOTsgLS11c2VyLWhlYWRlciAmIzM5Oy5qb2luKFsmIzM5OyYjMzk7XSAmIzQzOyBhcmdzLnVzZXJfaGVhZGVyKQomIzQzOyAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDoKJiM0MzsgICAgICAgICAgICAgICAgbGluZSAmIzQzOz0gJiMzOTsgLS1leGNsdWRlLW9wICYjMzk7LmpvaW4oWyYjMzk7JiMzOTtdICYjNDM7IGFyZ3MuZXhjbHVkZV9vcCkKJiM0MzsgICAgICAgICAgICBpZiBhcmdzLmZuX3ByZWZpeDoKJiM0MzsgICAgICAgICAgICAgICAgbGluZSAmIzQzOz0gZiYjMzk7IC0tZnVuY3Rpb24tcHJlZml4IHthcmdzLmZuX3ByZWZpeH0mIzM5OwomIzQzOyAgICAgICAgICAgIGN3LnAoZiYjMzk7LyogWU5MLUFSR3tsaW5lfSAqLyYjMzk7KQomIzQzOyAgICAgICAgY3cucCgmIzM5Oy8qIFRvIHJlZ2VuZXJhdGUgcnVuOiB0b29scy9uZXQveW5sL3lubC1yZWdlbi5zaCAqLyYjMzk7KQogICAgIGN3Lm5sKCkKIAogICAgIGlmIGFyZ3MubW9kZSA9PSAmIzM5O3VhcGkmIzM5OzoKQEAgLTM1MzksNiAmIzQzOzM1NzAsOCBAQCBkZWYgbWFpbigpOgogICAgICAgICAgICAgY3cucCgmIzM5OyNpbmNsdWRlICZsdDtsaW51eC90eXBlcy5oJmd0OyYjMzk7KQogICAgICAgICAgICAgaWYgZmFtaWx5X2NvbnRhaW5zX2JpdGZpZWxkMzIocGFyc2VkKToKICAgICAgICAgICAgICAgICBjdy5wKCYjMzk7I2luY2x1ZGUgJmx0O2xpbnV4L25ldGxpbmsuaCZndDsmIzM5OykKJiM0MzsgICAgICAgIGVsaWYgYXJncy5saW50ZXI6CiYjNDM7ICAgICAgICAgICAgY3cucCgmIzM5OyNpbmNsdWRlICYjMzQ7Li4vbGludGVyL2xpbnRlci5oJiMzNDsmIzM5OykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGN3LnAoZiYjMzk7I2luY2x1ZGUgJiMzNDt7aGRyX2ZpbGV9JiMzNDsmIzM5OykKICAgICAgICAgICAgIGN3LnAoJiMzOTsjaW5jbHVkZSAmIzM0O3lubC5oJiMzNDsmIzM5OykKQEAgLTM2OTAsNiAmIzQzOzM3MjMsMjEgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgY3cubmwoKQogICAgICAgICAgICAgICAgICAgICBwcmludF93cmFwcGVkX3R5cGUocmkpCiAgICAgICAgICAgICBjdy5ubCgpCiYjNDM7ICAgICAgICBlbGlmIGFyZ3MubGludGVyOgomIzQzOyAgICAgICAgICAgIGVudW1fc2V0cyA9IFtdCiYjNDM7ICAgICAgICAgICAgZm9yIG5hbWUsIGNvbnN0IGluIHBhcnNlZC5jb25zdHMuaXRlbXMoKToKJiM0MzsgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25zdCwgRW51bVNldCk6CiYjNDM7ICAgICAgICAgICAgICAgICAgICBlbnVtX3NldHMuYXBwZW5kKHB1dF9lbnVtX3RvX2xpbnRlcihwYXJzZWQsIGN3LCBjb25zdCkpCiYjNDM7ICAgICAgICAgICAgY3cubmwoKQomIzQzOyAgICAgICAgICAgIGN3LmJsb2NrX3N0YXJ0KGxpbmU9JiMzNDtzdGF0aWMgY29uc3Qgc3RydWN0IGVudW1fc2V0IGVudW1zW10gPSYjMzQ7KQomIzQzOyAgICAgICAgICAgIGZvciBlbnVtX3NldCBpbiBlbnVtX3NldHM6CiYjNDM7ICAgICAgICAgICAgICAgIGN3LnAoZW51bV9zZXQpCiYjNDM7ICAgICAgICAgICAgY3cucCgmIzM5O3t9LCYjMzk7KQomIzQzOyAgICAgICAgICAgIGN3LmJsb2NrX2VuZChsaW5lPSYjMzk7OyYjMzk7KQomIzQzOyAgICAgICAgICAgIGN3Lm5sKCkKJiM0MzsgICAgICAgICAgICBjdy53cml0ZV9mdW5jKCYjMzk7aW50JiMzOTssICYjMzk7bWFpbiYjMzk7LAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1bJiMzOTtjb25zdCBpbnQgYXJnYyYjMzk7LCAmIzM5O2NvbnN0IGNoYXIgKiphcmd2JiMzOTtdLAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keT1bJiMzOTtyZXR1cm4gbGludGVyX3J1bihhcmdjLCBhcmd2LCAmYW1wO2VudW1zWzBdKTsmIzM5O10pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjdy5wKCYjMzk7LyogRW51bXMgKi8mIzM5OykKICAgICAgICAgICAgIHB1dF9vcF9uYW1lKHBhcnNlZCwgY3cpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzUzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IEZvY3VzIG9uIE5ldGxpbmsgU3BlY3MgYW5kIFVBUEkgSGVhZGVycyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIHByaW1hcmlseSBmb2N1c2VkIG9uIHVwZGF0aW5nIHRoZSB1c2VyLXNwYWNlIEFQSSAoVUFQSSkgZGVmaW5pdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIE5ldGxpbmsgYW5kIHRoZSB1bmRlcmx5aW5nIGhlYWRlciBmaWxlcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9gIGRpcmVjdG9yeSwgd2hpY2ggaXMgd2hlcmUgdGhlIGhlYXJ0IG9mIE5ldGxpbmsmIzM5O3Mgc3BlY2lmaWNhdGlvbiBsaWVzLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byB0aGUgWUFNTCBmaWxlcy4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIG9yIG1vZGlmeWluZyBzcGVjaWZpY2F0aW9ucyBmb3IgYGNvbm50cmFja2AsIGBuZnRhYmxlc2AsIGFuZCBgcnQtbGlua2Agd2l0aGluIHRoZSBOZXRsaW5rIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aG9zZSBZQU1MIGNoYW5nZXMg4oCTIGZpZWxkIG5hbWVzLCBwcmVmaXhlcywgaG93IHRoZXkgbWFwIHRvIGtlcm5lbCBzdHJ1Y3R1cmVzLCBhbmQgc28gb24uCgpUaGUgYHJ0LWxpbmtgIHVwZGF0ZXMgYXJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIHRoZXkgbGlrZWx5IHNpZ25hbCBpbXByb3ZlbWVudHMgdG8gdGhlIHJvdXRpbmcgdGFibGUgYW5kIGxpbmsgbWFuYWdlbWVudCBBUElzLCB3aGljaCBhcmUgYWx3YXlzIGNyaXRpY2FsLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXNlIHNwZWMgbW9kaWZpY2F0aW9ucyByZWZsZWN0IG5ldyBmZWF0dXJlcywgYnVnIGZpeGVzLCBvciBzaW1wbHkgY2xhcmlmaWNhdGlvbnMgYW5kIGJldHRlciBvcmdhbml6YXRpb24uCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSBgaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaGAgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGluY2x1ZGUgZ3VhcmQgdXBkYXRlLCBjaGFuZ2luZyB0aGUgZGVmaW5lIG5hbWUgZnJvbSBgX0xJTlVYX1NOTVBfSGAgdG8gYF9VQVBJX0xJTlVYX1NOTVBfSGAuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBlbnN1cmluZyB0aGVzZSB1c2VyLXNwYWNlIGhlYWRlcnMgZG9uJiMzOTt0IGNvbGxpZGUgd2l0aCBpbnRlcm5hbCBrZXJuZWwgZGVmaW5pdGlvbnMgb3Igb3RoZXIgVUFQSSBjb21wb25lbnRzLiBJIHdhbnQgdG8gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgYGluY2x1ZGUvbGludXgvc25tcC5oYCBleGlzdHMgdG8gYmUgc3VyZSB3ZSBhcmUgbm90IGRlcHJlY2F0aW5nIGl0LgoKRmluYWxseSwgdGhlIGB0b29scy9uZXQveW5sL2AgZGlyZWN0b3J5IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gc29tZSBzb3J0IG9mIGNvZGUgZ2VuZXJhdGlvbiBhbmQgbGludGluZyBwcm9jZXNzLCBlc3BlY2lhbGx5IGFyb3VuZCB0aGUgTmV0bGluayBkZWZpbml0aW9ucy4gSSBzZWUgYWRkaXRpb25zIGZvciBsaW50ZXIgaWdub3JlcywgdGFyZ2V0cywgYSBuZXcgc2hlbGwgc2NyaXB0IChgZ2VuLWguc2hgKSwgYSBoZWFkZXIgKGBsaW50ZXIuaGApLCBhbmQgUHl0aG9uIGNvZGUgdXBkYXRlcy4gVGhpcyBsaWtlbHkgYXV0b21hdGVzIHZhbGlkYXRpb24gb2YgTmV0bGluayBzcGVjaWZpY2F0aW9ucyBhbmQvb3IgZ2VuZXJhdGVzIEMgY29kZSBiYXNlZCBvbiB0aG9zZSBzcGVjaWZpY2F0aW9ucy4gSXQmIzM5O3MgYSBuaWNlIGltcHJvdmVtZW50IGZvciBtYWludGFpbmFiaWxpdHkuIEkgd2FudCB0byBsb29rIG1vcmUgaW50byB0aGlzLCBwYXJ0aWN1bGFybHkgdGhlIFB5dGhvbiBjb2RlLCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBsaW50ZXIgZnVuY3Rpb25zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBydC1saW5rLnlhbWxgIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIG5hdHVyZSBvZiB0aGUgdXBkYXRlcywgZm9sbG93ZWQgYnkgdGhlIGxpbnRlciBjb2RlIHRvIHNlZSBob3cgaXQgd29ya3MuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIHRvb2xzIHRvIHZlcmlmeSBhbmQgdW5kZXJzdGFuZCB0aGVzZSBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfTElOVVhfU05NUF9IJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmgtNy1cbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg6ODojaWZuZGVmIF9VQVBJX0xJTlVYX1NOTVBfSFxuaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaDo5OiNkZWZpbmUgX1VBUElfTElOVVhfU05NUF9IXG5pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLTEwLVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg9MzUyPWVudW1cbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLTM3NC1cbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg6Mzc1OiNlbmRpZlx0LyogX1VBUElfTElOVVhfU05NUF9IICovXG4tLVxudG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzPTQzPUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0xJTktfSCxpZl9saW5rLmgpIFxcXG4tLVxudG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzLTQ5LVx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9WTEFOX0hfLGlmX3ZsYW4uaCkgXFxcbnRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwczo1MDpcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfU05NUF9ILHNubXAuaCkgXFxcbnRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcy01MS1cdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfRFBMTF9ILGRwbGwuaClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTcwNgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFNOTVAgSGVhZGVyKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHN5c3RlbSBoYW5kbGVzIFNOTVAuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoZSBleGlzdGVuY2UgYW5kIGNvbnRlbnRzIG9mIHRoZSBjb3JlIGhlYWRlciBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIGZvciBgaW5jbHVkZS9saW51eC9zbm1wLmhgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGZ1bmRhbWVudGFsIGRlZmluaXRpb25zLCBzdHJ1Y3R1cmVzLCBhbmQgcG9zc2libHkgZXZlbiBzb21lIGJhc2ljIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyByZWxhdGVkIHRvIHRoZSBMaW51eCBrZXJuZWwmIzM5O3MgU05NUCBpbXBsZW1lbnRhdGlvbi4gS25vd2luZyBpdHMgcHJlc2VuY2UgKG9yIGFic2VuY2UpIHByb3ZpZGVzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgZXhpc3RpbmcgY29kZSBoYXMgaXRzIG93biBjdXN0b20gZXh0ZW5zaW9ucywgb3IgbGV2ZXJhZ2VzIHRoZSBzdGFuZGFyZCBTTk1QIGludGVyZmFjZS4gVGhhdCBoZWFkZXIgZmlsZSBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c25tcFxcLmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkxOAoJCQkJCQkJb3V0cHV0OiA4OQoJCQkJCQkJdGhvdWdodHM6IDU2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbnN1bHQgU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMg4oCTIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBmb3IgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVsZXZhbnQgY2F0ZWdvcmllcyBhcmUgdGhvc2UgdGhhdCBkb24mIzM5O3QgaW52b2x2ZSBrZXJuZWwgZXhlY3V0YWJsZSBsb2dpYyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBjaGFuZ2VzIHRvIHVzZXItc3BhY2UgdG9vbHMsIGFuZCBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nLgoKTm93LCBJJiMzOTtsbCBnbyB0aHJvdWdoIHRoZSBkaWZmIGZpbGUgYnkgZmlsZS4gSSBzZWU6CgoxLiAgYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9jb25udHJhY2sueWFtbGAg4oCTICoqRG9jdW1lbnRhdGlvbioqCjIuICBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxgIOKAkyAqKkRvY3VtZW50YXRpb24qKgozLiAgYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWxgIOKAkyAqKkRvY3VtZW50YXRpb24qKgo0LiAgYGluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmhgIOKAkyBUaGlzIGlzIGEgaGVhZGVyIGZpbGUsIGJ1dCBpdCYjMzk7cyBhIHNpbXBsZSBgI2lmbmRlZmAgZ3VhcmQgY2hhbmdlLiBObyBhY3R1YWwgZXhlY3V0YWJsZSBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGRlZmluaXRpb25zIGFyZSBiZWluZyBtb2RpZmllZC4gKipIZWFkZXIgR3VhcmQgQ2hhbmdlKioKNS4gIGB0b29scy9uZXQveW5sL01ha2VmaWxlLmRlcHNgIOKAkyAqKnRvb2xzLyoqCjYuICBgdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZWAg4oCTICoqdG9vbHMvKioKNy4gIGB0b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZWAg4oCTICoqdG9vbHMvKioKOC4gIGB0b29scy9uZXQveW5sL2xpbnRlci9nZW4taC5zaGAg4oCTICoqdG9vbHMvKioKOS4gIGB0b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaGAg4oCTICoqdG9vbHMvKioKMTAuIGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWAg4oCTICoqdG9vbHMvKioKCkFuYWx5emluZyB0aGUgZGlmZiwgSSBjYW4gY29uZmlybSB0aGF0IGFsbCB0aGUgY2hhbmdlcyBmYWxsIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3JpZXMgSSYjMzk7bSBzdXBwb3NlZCB0byBpZ25vcmUuIEl0JiMzOTtzIGRvY3VtZW50YXRpb24sIHRvb2xzIChZTkwgbmV0bGluayB0b29sL2xpbnRlciBzdXBwb3J0KSwgYW5kIGEgdHJpdmlhbCBoZWFkZXIgZ3VhcmQgcmVuYW1lLiBObyBtb2RpZmljYXRpb25zIGFmZmVjdCB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGFibGUgbG9naWMsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBvdmVyYWxsIGJlaGF2aW9yLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBjcml0ZXJpYSBkZWZpbmVkLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIHNldCB0byBgZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZSAtICoqQ2hlY2tlZCoqCiogICBgRm9jdXNTeW1ib2xzYDogXFsgXSAtICoqSW1wbGljaXRseSBFbXB0eSoqCiogICBgRW5hYmxlQ29uZmlnc2A6IFxbIF0gLSAqKkltcGxpY2l0bHkgRW1wdHkqKgoqICAgYFJlYXNvbmluZ2A6IENvbmNpc2UgZXhwbGFuYXRpb24sIHdoaWNoIEkmIzM5O3ZlIGZvcm11bGF0ZWQuIC0gKipDaGVja2VkKioKCldpdGggdGhhdCwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudCBhbmQgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG1vZGlmaWVzIGRvY3VtZW50YXRpb24gKFlBTUwgc3BlY3MgaW4gRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzLyksIHVzZXItc3BhY2UgdG9vbGluZy9saW50ZXJzICh0b29scy9uZXQveW5sLyksIGFuZCBhbiBpbmNsdWRlIGd1YXJkIGluIGluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmguIE5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBtb2RpZmllcyBkb2N1bWVudGF0aW9uIChZQU1MIHNwZWNzIGluIERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy8pLCB1c2VyLXNwYWNlIHRvb2xpbmcvbGludGVycyAodG9vbHMvbmV0L3lubC8pLCBhbmQgYW4gaW5jbHVkZSBndWFyZCBpbiBpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLiBObyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo1MjoyNi45NzA4NTM4NDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDc2Mzk0MjQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBtb2RpZmllcyBkb2N1bWVudGF0aW9uIChZQU1MIHNwZWNzIGluIERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy8pLCB1c2VyLXNwYWNlIHRvb2xpbmcvbGludGVycyAodG9vbHMvbmV0L3lubC8pLCBhbmQgYW4gaW5jbHVkZSBndWFyZCBpbiBpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLiBObyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo1MjoyNi45NzA4NTk3OTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTA1OTgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJkMTBiZTJmMDAzOWRlMTk1OGIyYjU1YmIwMmE0NWExMjI1YWExZmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NTI6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sXFxuaW5kZXggYjFlYjEwMmFiODQzMi4uNTQzZGNkZGIwNDY0NyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcXG5AQCAtMiw2ICsyLDcgQEBcXG4gLS0tXFxuIG5hbWU6IGNvbm50cmFja1xcbiBwcm90b2NvbDogbmV0bGluay1yYXdcXG4rdWFwaS1oZWFkZXI6IGxpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcXG4gcHJvdG9udW06IDEyXFxuIFxcbiBkb2M6IFxcdTAwM2UtXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxcXG5pbmRleCAyMWVkZjNkMjVmMzRiLi43NmY2OWVkODJhMjRkIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxcXG5AQCAtMiw2ICsyLDcgQEBcXG4gLS0tXFxuIG5hbWU6IG5mdGFibGVzXFxuIHByb3RvY29sOiBuZXRsaW5rLXJhd1xcbit1YXBpLWhlYWRlcjogbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFxuIHByb3RvbnVtOiAxMlxcbiBcXG4gZG9jOiBcXHUwMDNlLVxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxcbmluZGV4IDYxZWJiOWEyYmFkNTEuLmZlNTJkNTA4ZDYwNzUgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWxcXG5AQCAtMjUsMTcgKzI1LDE3IEBAIGRlZmluaXRpb25zOlxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogbG9vcGJhY2tcXG4gICAgICAgLVxcbi0gICAgICAgIG5hbWU6IHBvaW50LXRvLXBvaW50XFxuKyAgICAgICAgbmFtZTogcG9pbnRvcG9pbnRcXG4gICAgICAgLVxcbi0gICAgICAgIG5hbWU6IG5vLXRyYWlsZXJzXFxuKyAgICAgICAgbmFtZTogbm90cmFpbGVyc1xcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcnVubmluZ1xcbiAgICAgICAtXFxuLSAgICAgICAgbmFtZTogbm8tYXJwXFxuKyAgICAgICAgbmFtZTogbm9hcnBcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IHByb21pc2NcXG4gICAgICAgLVxcbi0gICAgICAgIG5hbWU6IGFsbC1tdWx0aVxcbisgICAgICAgIG5hbWU6IGFsbG11bHRpXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBtYXN0ZXJcXG4gICAgICAgLVxcbkBAIC00NSw3ICs0NSw3IEBAIGRlZmluaXRpb25zOlxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcG9ydHNlbFxcbiAgICAgICAtXFxuLSAgICAgICAgbmFtZTogYXV0by1tZWRpYVxcbisgICAgICAgIG5hbWU6IGF1dG9tZWRpYVxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogZHluYW1pY1xcbiAgICAgICAtXFxuQEAgLTU4LDYgKzU4LDcgQEAgZGVmaW5pdGlvbnM6XFxuICAgICBuYW1lOiB2bGFuLXByb3RvY29sc1xcbiAgICAgdHlwZTogZW51bVxcbiAgICAgZW51bS1uYW1lOlxcbisgICAgbmFtZS1wcmVmaXg6IGV0aC1wLVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IDgwMjFxXFxuQEAgLTMwNSwxMCArMzA2LDEzIEBAIGRlZmluaXRpb25zOlxcbiAgIC1cXG4gICAgIG5hbWU6IGlwdjQtZGV2Y29uZlxcbiAgICAgZW51bS1uYW1lOlxcbisgICAgbmFtZS1wcmVmaXg6IGlwdjQtZGV2Y29uZi1cXG4rICAgIGhlYWRlcjogbGludXgvaXAuaFxcbiAgICAgdHlwZTogZW51bVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IGZvcndhcmRpbmdcXG4rICAgICAgICB2YWx1ZTogMVxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogbWMtZm9yd2FyZGluZ1xcbiAgICAgICAtXFxuQEAgLTM3Niw2ICszODAsOCBAQCBkZWZpbml0aW9uczpcXG4gICAtXFxuICAgICBuYW1lOiBpcHY2LWRldmNvbmZcXG4gICAgIGVudW0tbmFtZTpcXG4rICAgIG5hbWUtcHJlZml4OiBkZXZjb25mLVxcbisgICAgaGVhZGVyOiBsaW51eC9pcHY2LmhcXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC1cXG5AQCAtNTAxLDYgKzUwNyw4IEBAIGRlZmluaXRpb25zOlxcbiAgIC1cXG4gICAgIG5hbWU6IGlmbGEtaWNtcDYtc3RhdHNcXG4gICAgIGVudW0tbmFtZTpcXG4rICAgIG5hbWUtcHJlZml4OiBpY21wNi1taWItXFxuKyAgICBoZWFkZXI6IGxpbnV4L3NubXAuaFxcbiAgICAgdHlwZTogZW51bVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLVxcbkBAIC01MjAsNiArNTI4LDggQEAgZGVmaW5pdGlvbnM6XFxuICAgLVxcbiAgICAgbmFtZTogaWZsYS1pbmV0Ni1zdGF0c1xcbiAgICAgZW51bS1uYW1lOlxcbisgICAgbmFtZS1wcmVmaXg6IGlwc3RhdHMtbWliLVxcbisgICAgaGVhZGVyOiBsaW51eC9zbm1wLmhcXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC1cXG5AQCAtNTMxLDExICs1NDEsMjEgQEAgZGVmaW5pdGlvbnM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBpbmRlbGl2ZXJzXFxuICAgICAgIC1cXG4tICAgICAgICBuYW1lOiBvdXRmb3J3ZGF0YWdyYW1zXFxuKyAgICAgICAgbmFtZTogbm9lY3Rwa3RzXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBlY3QxcGt0c1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogZWN0MHBrdHNcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IGNlcGt0c1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogb3V0cmVxdWVzdHNcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IG91dHBrdHNcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IG91dG9jdGV0c1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogb3V0Zm9yd2RhdGFncmFtc1xcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogaW5oZHJlcnJvcnNcXG4gICAgICAgLVxcbkBAIC01ODYsMTQgKzYwNiw2IEBAIGRlZmluaXRpb25zOlxcbiAgICAgICAgIG5hbWU6IG91dGJjYXN0b2N0ZXRzXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBjc3VtZXJyb3JzXFxuLSAgICAgIC1cXG4tICAgICAgICBuYW1lOiBub2VjdHBrdHNcXG4tICAgICAgLVxcbi0gICAgICAgIG5hbWU6IGVjdDEtcGt0c1xcbi0gICAgICAtXFxuLSAgICAgICAgbmFtZTogZWN0MC1wa3RzXFxuLSAgICAgIC1cXG4tICAgICAgICBuYW1lOiBjZXBrdHNcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IHJlYXNtLW92ZXJsYXBzXFxuICAgLSBuYW1lOiBici1ib29sb3B0LW11bHRpXFxuQEAgLTY0MCw2ICs2NTIsOCBAQCBkZWZpbml0aW9uczpcXG4gICAgIG5hbWU6IHZsYW4tZmxhZ3NcXG4gICAgIHR5cGU6IGZsYWdzXFxuICAgICBlbnVtLW5hbWU6XFxuKyAgICBuYW1lLXByZWZpeDogdmxhbi1mbGFnLVxcbisgICAgaGVhZGVyOiBsaW51eC9pZl92bGFuLmhcXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC0gcmVvcmRlci1oZHJcXG4gICAgICAgLSBndnJwXFxuQEAgLTcyNyw2ICs3NDEsOCBAQCBkZWZpbml0aW9uczpcXG4gICAgIG5hbWU6IGlmbGEtdmYtbGluay1zdGF0ZS1lbnVtXFxuICAgICB0eXBlOiBlbnVtXFxuICAgICBlbnVtLW5hbWU6XFxuKyAgICBuYW1lLXByZWZpeDogaWZsYS12Zi1saW5rLXN0YXRlLVxcbisgICAgaGVhZGVyOiBsaW51eC9pZl9saW5rLmhcXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC0gYXV0b1xcbiAgICAgICAtIGVuYWJsZVxcbkBAIC03OTQsNiArODEwLDcgQEAgZGVmaW5pdGlvbnM6XFxuICAgICBuYW1lOiBydGV4dC1maWx0ZXJcXG4gICAgIHR5cGU6IGZsYWdzXFxuICAgICBlbnVtLW5hbWU6XFxuKyAgICBuYW1lLXByZWZpeDogcnRleHQtZmlsdGVyLVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLSB2ZlxcbiAgICAgICAtIGJydmxhblxcbkBAIC04MDYsMTggKzgyMywyMCBAQCBkZWZpbml0aW9uczpcXG4gICAtXFxuICAgICBuYW1lOiBuZXRraXQtcG9saWN5XFxuICAgICB0eXBlOiBlbnVtXFxuLSAgICBlbnVtLW5hbWU6XFxuKyAgICBlbnVtLW5hbWU6IG5ldGtpdC1hY3Rpb25cXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtXFxuICAgICBlbnRyaWVzOlxcbiAgICAgICAtXFxuLSAgICAgICAgbmFtZTogZm9yd2FyZFxcbisgICAgICAgIG5hbWU6IHBhc3NcXG4gICAgICAgICB2YWx1ZTogMFxcbiAgICAgICAtXFxuLSAgICAgICAgbmFtZTogYmxhY2tob2xlXFxuKyAgICAgICAgbmFtZTogZHJvcFxcbiAgICAgICAgIHZhbHVlOiAyXFxuICAgLVxcbiAgICAgbmFtZTogbmV0a2l0LW1vZGVcXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudW0tbmFtZTogbmV0a2l0LW1vZGVcXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtXFxuICAgICBlbnRyaWVzOlxcbiAgICAgICAtIG5hbWU6IGwyXFxuICAgICAgIC0gbmFtZTogbDNcXG5AQCAtODI1LDcgKzg0NCw4IEBAIGRlZmluaXRpb25zOlxcbiAgIC1cXG4gICAgIG5hbWU6IG5ldGtpdC1zY3J1YlxcbiAgICAgdHlwZTogZW51bVxcbi0gICAgZW51bS1uYW1lOlxcbisgICAgZW51bS1uYW1lOiBuZXRraXQtc2NydWJcXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtc2NydWItXFxuICAgICBlbnRyaWVzOlxcbiAgICAgICAtIG5hbWU6IG5vbmVcXG4gICAgICAgLSBuYW1lOiBkZWZhdWx0XFxuQEAgLTgzMywxMyArODUzLDE0IEBAIGRlZmluaXRpb25zOlxcbiAgICAgbmFtZTogbmV0a2l0LXBhaXJpbmdcXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudW0tbmFtZTogbmV0a2l0LXBhaXJpbmdcXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtZGV2aWNlLVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLSBuYW1lOiBwYWlyXFxuICAgICAgIC0gbmFtZTogc2luZ2xlXFxuICAgLVxcbiAgICAgbmFtZTogb3Zwbi1tb2RlXFxuICAgICBlbnVtLW5hbWU6IG92cG4tbW9kZVxcbi0gICAgbmFtZS1wcmVmaXg6IG92cG4tbW9kZVxcbisgICAgbmFtZS1wcmVmaXg6IG92cG4tbW9kZS1cXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC0gcDJwXFxuQEAgLTg0OCw2ICs4NjksNyBAQCBkZWZpbml0aW9uczpcXG4gICAgIG5hbWU6IGJyLXN0cC1tb2RlXFxuICAgICB0eXBlOiBlbnVtXFxuICAgICBlbnVtLW5hbWU6IGJyLXN0cC1tb2RlXFxuKyAgICBuYW1lLXByZWZpeDogYnItc3RwLW1vZGUtXFxuICAgICBlbnRyaWVzOlxcbiAgICAgICAtIGF1dG9cXG4gICAgICAgLSB1c2VyXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oXFxuaW5kZXggNDlmNTY0MDA5MmEwZC4uMjZiZGFiYzUwMmZlYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaFxcbkBAIC01LDggKzUsOCBAQFxcbiAgKiBBdXRob3I6IEhpZGVha2kgWU9TSElGVUpJIFxcdTAwM2N5b3NoZnVqaUBsaW51eC1pcHY2Lm9yZ1xcdTAwM2VcXG4gICovXFxuIFxcbi0jaWZuZGVmIF9MSU5VWF9TTk1QX0hcXG4tI2RlZmluZSBfTElOVVhfU05NUF9IXFxuKyNpZm5kZWYgX1VBUElfTElOVVhfU05NUF9IXFxuKyNkZWZpbmUgX1VBUElfTElOVVhfU05NUF9IXFxuIFxcbiAvKiBpcHN0YXRzIG1pYiBkZWZpbml0aW9ucyAqL1xcbiAvKlxcbkBAIC0zNzIsNCArMzcyLDQgQEAgZW51bVxcbiBcXHRfX0xJTlVYX01JQl9UTFNNQVhcXG4gfTtcXG4gXFxuLSNlbmRpZlxcdC8qIF9MSU5VWF9TTk1QX0ggKi9cXG4rI2VuZGlmXFx0LyogX1VBUElfTElOVVhfU05NUF9IICovXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcyBiL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwc1xcbmluZGV4IDI3NzEzNzUzMzlkOWMuLjhlMTM2YTVkZjg5OTEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXFxuKysrIGIvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXFxuQEAgLTQwLDggKzQwLDE1IEBAIENGTEFHU19vdnNfdnBvcnQ6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX09QRU5WU1dJVENIX0gsb3BlbnZzd2l0Y2guaClcXG4gQ0ZMQUdTX3BzcDo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9QU1BfSCxwc3AuaClcXG4gQ0ZMQUdTX3J0LWFkZHI6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxcXFxuIFxcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX0lGX0FERFJfSCxpZl9hZGRyLmgpXFxuLUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXFxcXFxcbi1cXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0xJTktfSCxpZl9saW5rLmgpXFxuK0NGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0xJTktfSCxpZl9saW5rLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JUF9ILGlwLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9JUFY2X0gsaXB2Ni5oKSBcXFxcXFxuK1xcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfQlJJREdFX0gsaWZfYnJpZGdlLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9JRl9UVU5ORUxfSF8saWZfdHVubmVsLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9WTEFOX0hfLGlmX3ZsYW4uaCkgXFxcXFxcbitcXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX1NOTVBfSCxzbm1wLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9EUExMX0gsZHBsbC5oKVxcbiBDRkxBR1NfcnQtbmVpZ2g6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxcXFxuIFxcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX05FSUdIQk9VUl9ILG5laWdoYm91ci5oKVxcbiBDRkxBR1NfcnQtcm91dGU6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKVxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZVxcbmluZGV4IDg1OWE2ZmI0NDZlMTQuLjIwZGQ3MGNkNzA5ZWUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZVxcbisrKyBiL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmVcXG5AQCAtMSwzICsxLDYgQEBcXG4gKi11c2VyLmNcXG4gKi11c2VyLmhcXG4rKi1saW50ZXIuY1xcbisqLWxpbnRlci5oXFxuKyotbGludGVyXFxuICoucnN0XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGVcXG5pbmRleCA1YTE4NjM0OWI1YTg2Li5iY2Y3ZjQ1NTYzMTMwIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGVcXG5AQCAtMzMsOCArMzMsOSBAQCBPQkpTPSQocGF0c3Vic3QgJSwlLXVzZXIubywke0dFTlN9KVxcbiBTUEVDU19QQVRIUz0kKHdpbGRjYXJkICQoU1BFQ1NfRElSKS8qLnlhbWwpXFxuIFNQRUNTPSQocGF0c3Vic3QgJChTUEVDU19ESVIpLyUueWFtbCwlLCR7U1BFQ1NfUEFUSFN9KVxcbiBSU1RTPSQocGF0c3Vic3QgJSwlLnJzdCwke1NQRUNTfSlcXG4rTElOVFM9JChwYXRzdWJzdCAlLCUtbGludCwke1NQRUNTfSlcXG4gXFxuLWFsbDogcHJvdG9zLmEgJChIRFJTKSAkKFNSQ1MpICQoS0hEUlMpICQoS1NSQ1MpICQoVUFQSSkgJChSU1RTKVxcbithbGw6IHByb3Rvcy5hICQoSERSUykgJChTUkNTKSAkKEtIRFJTKSAkKEtTUkNTKSAkKFVBUEkpICQoUlNUUykgJChMSU5UUylcXG4gXFxuIHByb3Rvcy5hOiAkKE9CSlMpXFxuIFxcdEBlY2hvIC1lIFxcXCJcXFxcdEFSICRAXFxcIlxcbkBAIC01NiwxMSArNTcsMjkgQEAgcHJvdG9zLmE6ICQoT0JKUylcXG4gXFx0QGVjaG8gLWUgXFxcIlxcXFx0R0VOX1JTVCAkQFxcXCJcXG4gXFx0QCQoVE9PTF9SU1QpIC1vICRAIC1pICRcXHUwMDNjXFxuIFxcbislLWxpbnRlci5jOiAkKFNQRUNTX0RJUikvJS55YW1sICQoVE9PTCkgLi4vbGludGVyL2xpbnRlci5oXFxuK1xcdEBlY2hvIC1lIFxcXCJcXFxcdEdFTiAkQFxcXCJcXG4rXFx0QCQoVE9PTCkgLS1tb2RlIHVzZXIgLS1saW50ZXIgLS1zcGVjICRcXHUwMDNjIC1vICRAICQoWU5MX0dFTl9BUkdfJCopXFxuK1xcbislLWxpbnRlci5oOiAlLWxpbnRlci5jIC4uL2xpbnRlci9nZW4taC5zaFxcbitcXHRAZWNobyAtZSBcXFwiXFxcXHRHRU4gJEBcXFwiXFxuK1xcdEAuLi9saW50ZXIvZ2VuLWguc2ggJChDRkxBR1MpICQoQ0ZMQUdTXyQqKSBcXHUwMDNjICRcXHUwMDNjIFxcdTAwM2UgJEBcXG4rXFxuKyUtbGludGVyOiAlLWxpbnRlci5jICUtbGludGVyLmggLi4vbGludGVyL2xpbnRlci5oXFxuK1xcdEBlY2hvIC1lIFxcXCJcXFxcdENDICRAXFxcIlxcbitcXHRAJChDQykgJChDRkxBR1MpICQoQ0ZMQUdTXyQqKSAtaW5jbHVkZSAkKi1saW50ZXIuaCAtbyAkQCAkXFx1MDAzY1xcbitcXG4rJS1saW50OiAlLWxpbnRlclxcbitcXHRAZWNobyAtZSBcXFwiXFxcXHRMSU5UICRAXFxcIlxcbitcXHRALi8kXFx1MDAzYyAkKlxcbitcXG4rbGludDogJChMSU5UUylcXG4rXFxuIGNsZWFuOlxcbiBcXHRybSAtZiAqLm9cXG4gXFxuIGRpc3RjbGVhbjogY2xlYW5cXG4tXFx0cm0gLWYgKi5jICouaCAqLmEgKi5yc3RcXG4rXFx0cm0gLWYgKi5jICouaCAqLmEgKi5yc3QgKi1saW50ZXJcXG4gXFxuIHJlZ2VuOlxcbiBcXHRALi4veW5sLXJlZ2VuLnNoXFxuQEAgLTY4LDcgKzg3LDcgQEAgcmVnZW46XFxuIGluc3RhbGwtaGVhZGVyczogJChIRFJTKVxcbiBcXHRAZWNobyAtZSBcXFwiXFxcXHRJTlNUQUxMIGdlbmVyYXRlZCBoZWFkZXJzXFxcIlxcbiBcXHRAJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS95bmxcXG4tXFx0QCQoSU5TVEFMTCkgLW0gMDY0NCAqLmggJChERVNURElSKSQoaW5jbHVkZWRpcikveW5sL1xcbitcXHRAJChJTlNUQUxMKSAtbSAwNjQ0ICQoS0hEUlMpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC9cXG4gXFxuIGluc3RhbGwtcnN0czogJChSU1RTKVxcbiBcXHRAZWNobyAtZSBcXFwiXFxcXHRJTlNUQUxMIGdlbmVyYXRlZCBkb2NzXFxcIlxcbkBAIC04NCw1ICsxMDMsNSBAQCBpbnN0YWxsLXNwZWNzOlxcbiBcXG4gaW5zdGFsbDogaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzXFxuIFxcbi0uUEhPTlk6IGFsbCBjbGVhbiBkaXN0Y2xlYW4gcmVnZW4gaW5zdGFsbCBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcXG4rLlBIT05ZOiBhbGwgY2xlYW4gZGlzdGNsZWFuIHJlZ2VuIGluc3RhbGwgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzIGxpbnRcXG4gLkRFRkFVTFRfR09BTDogYWxsXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2dlbi1oLnNoIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI0NzQ5MzYwMDAzNGRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2hcXG5AQCAtMCwwICsxLDIzIEBAXFxuKyMhL2Jpbi9zaFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK1xcbisjIFVzYWdlOiAuL2dlbi1oLnNoICRDRkxBR1MgXFx1MDAzYyBpbi5jIFxcdTAwM2Ugb3V0LmhcXG4rI1xcbisjIEV4dHJhY3QgdmFsaWQgc3ltYm9scywgYW5kIGRlZmluZSB0aGF0IHRoZXkgYXJlIGF2YWlsYWJsZS4gVGhpcyBpcyBhXFxuKyMgd29ya2Fyb3VuZCwgdG8gYXZvaWQgY29tcGlsZSBmYWlsdXJlcyBkdWUgdG8gbm9uLWV4aXN0ZW50IGVudW0gbWVtYmVycy5cXG4rI1xcbisjIENhcGl0YWxpemVkIGtleXdvcmRzIGZvdW5kIGluIHRoZSBwcmVwcm9jZXNzb3Igb3V0cHV0LCBhcmUgbW9zdGx5IGVudW1cXG4rIyBtZW1iZXJzLlxcbisjXFxuKyMgQXMgYW4gZXhhbXBsZSwgZXhpc3RlbmNlIG9mIEZPTyBjYW4gYmUgY2hlY2tlZCB3aXRoOlxcbisjICAgI2lmIGRlZmluZWQoRk9PKSB8fCBkZWZpbmVkKExJTlRFUl9IQVNfRk9PKVxcbisjIHRodXMgY2hlY2tpbmcgZm9yIEZPTyBlaXRoZXIgYXMgYSBtYWNybyBvciBhcyBhbiBlbnVtIG1lbWJlcnMuXFxuK1xcbitzZXQgLWVcXG4rXFxuK2VjaG8gJy8qIFRoaXMgaXMgYW4gYXV0by1nZW5lcmF0ZWQgZmlsZSAqLydcXG4rZ3JlcCAnXiNpbmNsdWRlIFxcdTAwM2NsaW51eC8nIHxcXG4rXFx0Y3BwIC14IGMgXFxcIiRAXFxcIiAtIHxcXG4rXFx0Z3JlcCAtd28gJ1tBLVpdW0EtWjAtOV9dXFxcXCsnIHxcXG4rXFx0c29ydCB8IHVuaXEgfFxcbitcXHRzZWQgLWUgJ3MvXi8jZGVmaW5lIExJTlRFUl9IQVNfL2cnXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2xpbnRlci5oIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvbGludGVyLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjBkMWMyOGM5ZjIxNDBcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvbGludGVyLmhcXG5AQCAtMCwwICsxLDE1MiBAQFxcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRib29sLmhcXHUwMDNlXFxuK1xcbitzdHJ1Y3QgZW51bV9rdiB7XFxuK1xcdGNvbnN0IGNoYXIgKm5hbWU7XFxuK1xcdGNvbnN0IGxvbmcgbG9uZyB2YWw7XFxuK1xcdGNvbnN0IGJvb2wgaXNfdW5kZWY6MTtcXG4rfTtcXG4rXFxuK3N0cnVjdCBlbnVtX2VudHJ5IHtcXG4rXFx0Y29uc3Qgc3RydWN0IGVudW1fa3YgeW5sO1xcbitcXHRjb25zdCBzdHJ1Y3QgZW51bV9rdiBjO1xcbitcXHRjb25zdCBib29sIGlzX3NlbnRpbmFsOjE7XFxuK307XFxuK1xcbisjZGVmaW5lIFlOTF9FTlVNX0VOVFJZKFlOTF9OQU1FLCBDX05BTUUsIFlOTF9WQUxVRSkgXFxcXFxcbitcXHR7IFxcXFxcXG4rXFx0XFx0LnlubCA9IHsgLm5hbWUgPSBZTkxfTkFNRSwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxcXFxuK1xcdFxcdC5jID0geyAubmFtZSA9ICNDX05BTUUsIC52YWwgPSBDX05BTUUgfSwgXFxcXFxcbitcXHR9XFxuK1xcbisjZGVmaW5lIFlOTF9FTlVNX0JBRF9FTlRSWShZTkxfTkFNRSwgQ19OQU1FLCBZTkxfVkFMVUUpIFxcXFxcXG4rXFx0eyBcXFxcXFxuK1xcdFxcdC55bmwgPSB7IC5uYW1lID0gWU5MX05BTUUsIC52YWwgPSBZTkxfVkFMVUUgfSwgXFxcXFxcbitcXHRcXHQuYyA9IHsgLm5hbWUgPSAjQ19OQU1FLCAuaXNfdW5kZWYgPSB0cnVlIH0sIFxcXFxcXG4rXFx0fVxcbitcXG4rI2RlZmluZSBZTkxfRU5VTV9TRU5USU5BTChDX05BTUUsIFlOTF9WQUxVRSkgXFxcXFxcbitcXHR7IFxcXFxcXG4rXFx0XFx0LnlubCA9IHsgLm5hbWUgPSBcXFwiTUFYXFxcIiwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxcXFxuK1xcdFxcdC5jID0geyAubmFtZSA9ICNDX05BTUUsIC52YWwgPSBDX05BTUUgfSwgXFxcXFxcbitcXHRcXHQuaXNfc2VudGluYWwgPSB0cnVlLCBcXFxcXFxuK1xcdH1cXG4rXFxuK2VudW0geW5sX2VudW1fdHlwZSB7XFxuK1xcdFlOTF9FTlVNLFxcbitcXHRZTkxfRkxBR1MsXFxuK307XFxuK1xcbitzdHJ1Y3QgZW51bV9zZXQge1xcbitcXHRjb25zdCBjaGFyICpuYW1lO1xcbitcXHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnk7XFxuK1xcdGVudW0geW5sX2VudW1fdHlwZSB0eXBlO1xcbit9O1xcbitcXG4rc3RydWN0IGxpbnRlcl9jdHgge1xcbitcXHRpbnQgZXJyb3JzO1xcbitcXHRpbnQgd2FybmluZ3M7XFxuK1xcdGNvbnN0IGNoYXIgKm5hbWU7XFxuK307XFxuK1xcbisjZGVmaW5lIGVycmYoZm10LCAuLi4pIFxcXFxcXG4rXFx0ZG8geyBcXFxcXFxuK1xcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiJXM6IEVSUk9SOiBcXFwiIGZtdCwgY3R4LVxcdTAwM2VuYW1lLCBfX1ZBX0FSR1NfXyk7IFxcXFxcXG4rXFx0XFx0Y3R4LVxcdTAwM2VlcnJvcnMrKzsgXFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rI2RlZmluZSB3YXJuZihmbXQsIC4uLikgXFxcXFxcbitcXHRkbyB7IFxcXFxcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlczogV0FSTjogXFxcIiBmbXQsIGN0eC1cXHUwMDNlbmFtZSwgX19WQV9BUkdTX18pOyBcXFxcXFxuK1xcdFxcdGN0eC1cXHUwMDNld2FybmluZ3MrKzsgXFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rc3RhdGljIGlubGluZSBsb25nIGxvbmcgZmluZF9uZXh0X3ZhbHVlKGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXFxuK1xcdFxcdFxcdFxcdFxcdGNvbnN0IGxvbmcgbG9uZyBsYXN0X3ZhbClcXG4re1xcbitcXHRzd2l0Y2ggKGVzLVxcdTAwM2V0eXBlKSB7XFxuK1xcdGNhc2UgWU5MX0VOVU06XFxuK1xcdFxcdHJldHVybiBsYXN0X3ZhbCArIDE7XFxuK1xcdGNhc2UgWU5MX0ZMQUdTOlxcbitcXHRcXHRyZXR1cm4gbGFzdF92YWwgXFx1MDAzY1xcdTAwM2MgMTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0LyogdW5yZWFjaGFibGUgKi9cXG4rXFx0XFx0YWJvcnQoKTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIHZvaWQgbGludF9lbnVtX2VudHJ5KHN0cnVjdCBsaW50ZXJfY3R4ICpjdHgsXFxuK1xcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXFxuK1xcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBlbnVtX2VudHJ5ICplbnRyeSxcXG4rXFx0XFx0XFx0XFx0ICAgbG9uZyBsb25nICpsYXN0X3ZhbCwgY29uc3QgaW50IGksXFxuK1xcdFxcdFxcdFxcdCAgIGNvbnN0IGludCBjbnQpXFxuK3tcXG4rXFx0Y29uc3QgbG9uZyBsb25nIHZhbCA9IGVudHJ5LVxcdTAwM2VjLnZhbDtcXG4rXFxuK1xcdGlmIChpIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiB2YWwgIT0gKmxhc3RfdmFsIFxcdTAwMjZcXHUwMDI2IHZhbCAhPSBmaW5kX25leHRfdmFsdWUoZXMsICpsYXN0X3ZhbCkpXFxuK1xcdFxcdHdhcm5mKFxcXCIlczogUG9zc2libGUgbWlzc2luZyBtZW1iZXIgYmVmb3JlICVzICglbGxkIC1cXHUwMDNlICVsbGQpXFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICBlcy1cXHUwMDNlbmFtZSwgZW50cnktXFx1MDAzZWMubmFtZSwgKmxhc3RfdmFsLCB2YWwpO1xcbitcXHQqbGFzdF92YWwgPSBlbnRyeS1cXHUwMDNlYy52YWw7XFxuK1xcbitcXHRpZiAoaSA9PSBjbnQgLSAxIFxcdTAwMjZcXHUwMDI2IHN0cmNtcChlbnRyeS1cXHUwMDNleW5sLm5hbWUsIFxcXCJtYXhcXFwiKSA9PSAwKVxcbitcXHRcXHRlcnJmKFxcXCIlczogU2VudGluYWwgdXNlZCBpbiBZTkwgc3BlY1xcXFxuXFxcIiwgZXMtXFx1MDAzZW5hbWUpO1xcbitcXG4rXFx0aWYgKGVudHJ5LVxcdTAwM2VjLmlzX3VuZGVmKSB7XFxuK1xcdFxcdGVycmYoXFxcIiVzOiAlczogJXMgbm90IGZvdW5kXFxcXG5cXFwiLCBlcy1cXHUwMDNlbmFtZSwgZW50cnktXFx1MDAzZXlubC5uYW1lLFxcbitcXHRcXHQgICAgIGVudHJ5LVxcdTAwM2VjLm5hbWUpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChlbnRyeS1cXHUwMDNleW5sLnZhbCA9PSBlbnRyeS1cXHUwMDNlYy52YWwpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChlbnRyeS1cXHUwMDNlaXNfc2VudGluYWwpIHtcXG4rXFx0XFx0aWYgKGVzLVxcdTAwM2V0eXBlID09IFlOTF9FTlVNIFxcdTAwMjZcXHUwMDI2IGVudHJ5LVxcdTAwM2V5bmwudmFsICsgMSA9PSBlbnRyeS1cXHUwMDNlYy52YWwpXFxuK1xcdFxcdFxcdHJldHVybjsgLyogZWcuIERFVkNPTkZfTUFYIGlzIHRoZSBzdG9yYWdlIHNpemUgKi9cXG4rXFx0XFx0d2FybmYoXFxcIiVzOiBTZW50aW5hbCBtaXNtYXRjaDogJWxsZCAhPSAlbGxkIChMYXN0IFlOTCAhPSAlcylcXFxcblxcXCIsXFxuK1xcdFxcdCAgICAgIGVzLVxcdTAwM2VuYW1lLCBlbnRyeS1cXHUwMDNleW5sLnZhbCwgZW50cnktXFx1MDAzZWMudmFsLCBlbnRyeS1cXHUwMDNlYy5uYW1lKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0ZXJyZihcXFwiJXM6IFZhbHVlIG1pc21hdGNoOiAlbGxkICE9ICVsbGQgKCVzICE9ICVzKVxcXFxuXFxcIiwgZXMtXFx1MDAzZW5hbWUsXFxuK1xcdFxcdCAgICAgZW50cnktXFx1MDAzZXlubC52YWwsIGVudHJ5LVxcdTAwM2VjLnZhbCwgZW50cnktXFx1MDAzZXlubC5uYW1lLFxcbitcXHRcXHQgICAgIGVudHJ5LVxcdTAwM2VjLm5hbWUpO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW50X2VudW0oc3RydWN0IGxpbnRlcl9jdHggKmN0eCwgY29uc3Qgc3RydWN0IGVudW1fc2V0ICplcylcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnkgPSBlcy1cXHUwMDNlZW50cnk7XFxuK1xcdGxvbmcgbG9uZyBsYXN0X3ZhbDtcXG4rXFx0aW50IGNudCA9IDA7XFxuK1xcdGludCBpID0gMDtcXG4rXFxuK1xcdHdoaWxlIChlbnRyeS1cXHUwMDNleW5sLm5hbWUpIHtcXG4rXFx0XFx0aWYgKCFlbnRyeS1cXHUwMDNlaXNfc2VudGluYWwpXFxuK1xcdFxcdFxcdGNudCsrO1xcbitcXHRcXHRlbnRyeSsrO1xcbitcXHR9XFxuK1xcdGVudHJ5ID0gZXMtXFx1MDAzZWVudHJ5O1xcbitcXG4rXFx0d2hpbGUgKGVudHJ5LVxcdTAwM2V5bmwubmFtZSlcXG4rXFx0XFx0bGludF9lbnVtX2VudHJ5KGN0eCwgZXMsIGVudHJ5KyssIFxcdTAwMjZsYXN0X3ZhbCwgaSsrLCBjbnQpO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIGludCBsaW50ZXJfcnVuKGNvbnN0IGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndixcXG4rXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzKVxcbit7XFxuK1xcdHN0cnVjdCBsaW50ZXJfY3R4IGN0eCA9IHtcXG4rXFx0XFx0Lm5hbWUgPSBhcmd2W2FyZ2MgXFx1MDAzZSAxID8gMSA6IDBdLFxcbitcXHR9O1xcbitcXG4rXFx0d2hpbGUgKGVzLVxcdTAwM2VuYW1lKSB7XFxuK1xcdFxcdGxpbnRfZW51bShcXHUwMDI2Y3R4LCBlcyk7XFxuK1xcdFxcdGVzKys7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChjdHguZXJyb3JzIHx8IGN0eC53YXJuaW5ncylcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlczogTGludGVyIHN1bW1hcnk6ICVkIGVycm9ycywgJWQgd2FybmluZ3NcXFxcblxcXCIsXFxuK1xcdFxcdFxcdGN0eC5uYW1lLCBjdHguZXJyb3JzLCBjdHgud2FybmluZ3MpO1xcbitcXG4rXFx0cmV0dXJuIEVYSVRfU1VDQ0VTUztcXG4rfVxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuaW5kZXggMmIzNDgzZGIxYjYwYy4uNWJiZTNjYmE4Zjc1OSAxMDA3NTVcXG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxcbisrKyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuQEAgLTE2ODgsNiArMTY4OCw4IEBAIGNsYXNzIENvZGVXcml0ZXI6XFxuICAgICAgICAgc2VsZi5jbG9zZV9vdXRfZmlsZSgpXFxuIFxcbiAgICAgZGVmIGNsb3NlX291dF9maWxlKHNlbGYpOlxcbisgICAgICAgIGlmIHNlbGYuX2Jsb2NrX2VuZDpcXG4rICAgICAgICAgICAgc2VsZi5fb3V0LndyaXRlKCdcXFxcdCcgKiBzZWxmLl9pbmQgKyAnfVxcXFxuJylcXG4gICAgICAgICBpZiBzZWxmLl9vdXQgPT0gb3Muc3lzLnN0ZG91dDpcXG4gICAgICAgICAgICAgcmV0dXJuXFxuICAgICAgICAgIyBBdm9pZCBtb2RpZnlpbmcgdGhlIGZpbGUgaWYgY29udGVudHMgZGlkbid0IGNoYW5nZVxcbkBAIC0yMDg0LDYgKzIwODYsMzAgQEAgZGVmIHB1dF9lbnVtX3RvX3N0cihfZmFtaWx5LCBjdywgZW51bSk6XFxuICAgICBfcHV0X2VudW1fdG9fc3RyX2hlbHBlcihjdywgZW51bS5yZW5kZXJfbmFtZSwgbWFwX25hbWUsICd2YWx1ZScsIGVudW09ZW51bSlcXG4gXFxuIFxcbitkZWYgcHV0X2VudW1fdG9fbGludGVyKGZhbWlseSwgY3csIGVudW0pOlxcbisgICAgbmFtZV9wZnggPSBlbnVtLmdldCgnbmFtZS1wcmVmaXgnLCBmXFxcIntmYW1pbHkuaWRlbnRfbmFtZX0te2VudW1bJ25hbWUnXX0tXFxcIilcXG4rICAgIG1heF9uYW1lID0gY191cHBlcihuYW1lX3BmeCArICdtYXgnKVxcbisgICAgbWFwX25hbWUgPSBmJ3tlbnVtLnJlbmRlcl9uYW1lfV9lbnRyaWVzJ1xcbisgICAgY3cuYmxvY2tfc3RhcnQobGluZT1mXFxcInN0YXRpYyBjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSB7bWFwX25hbWV9W10gPVxcXCIpXFxuKyAgICB2YWwgPSAwXFxuKyAgICBmb3IgZW50cnkgaW4gZW51bS5lbnRyaWVzLnZhbHVlcygpOlxcbisgICAgICAgIHZhbCA9IGVudHJ5LnVzZXJfdmFsdWUoKVxcbisgICAgICAgIGNfbmFtZSA9IGVudHJ5LmNfbmFtZVxcbisgICAgICAgIGN3LnAoZicjaWYgZGVmaW5lZCh7Y19uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3tjX25hbWV9KScpXFxuKyAgICAgICAgY3cucChmJ1lOTF9FTlVNX0VOVFJZKFxcXCJ7ZW50cnkubmFtZX1cXFwiLCB7Y19uYW1lfSwge3ZhbH0pLCcpXFxuKyAgICAgICAgY3cucCgnI2Vsc2UnKVxcbisgICAgICAgIGN3LnAoZidZTkxfRU5VTV9CQURfRU5UUlkoXFxcIntlbnRyeS5uYW1lfVxcXCIsIHtjX25hbWV9LCB7dmFsfSksJylcXG4rICAgICAgICBjdy5wKCcjZW5kaWYnKVxcbisgICAgY3cucChmJyNpZiBkZWZpbmVkKHttYXhfbmFtZX0pIHx8IGRlZmluZWQoTElOVEVSX0hBU197bWF4X25hbWV9KScpXFxuKyAgICBjdy5wKGYnWU5MX0VOVU1fU0VOVElOQUwoe21heF9uYW1lfSwge3ZhbH0pLCcpXFxuKyAgICBjdy5wKCcjZW5kaWYnKVxcbisgICAgY3cucCgne30sJylcXG4rICAgIGN3LmJsb2NrX2VuZChsaW5lPSc7JylcXG4rICAgIGN3Lm5sKClcXG4rICAgIGVudW1fdHlwZSA9IGVudW1bJ3R5cGUnXS51cHBlcigpXFxuKyAgICByZXR1cm4gZid7e1xcXCJ7ZW51bS5uYW1lfVxcXCIsIFxcdTAwMjZ7bWFwX25hbWV9WzBdLCBZTkxfe2VudW1fdHlwZX19fSwnXFxuK1xcbitcXG4gZGVmIHB1dF9sb2NhbF92YXJzKHN0cnVjdCk6XFxuICAgICBsb2NhbF92YXJzID0gW11cXG4gICAgIGhhc19hcnJheSA9IEZhbHNlXFxuQEAgLTM0NjIsNiArMzQ4OCw3IEBAIGRlZiBtYWluKCk6XFxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXNwZWMnLCBkZXN0PSdzcGVjJywgdHlwZT1zdHIsIHJlcXVpcmVkPVRydWUpXFxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGRlc3Q9J2hlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9Tm9uZSlcXG4gICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc291cmNlJywgZGVzdD0naGVhZGVyJywgYWN0aW9uPSdzdG9yZV9mYWxzZScpXFxuKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWxpbnRlcicsIGRlc3Q9J2xpbnRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpXFxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVzZXItaGVhZGVyJywgbmFyZ3M9JysnLCBkZWZhdWx0PVtdKVxcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jbXAtb3V0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1Ob25lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdEbyBub3Qgb3ZlcndyaXRlIHRoZSBvdXRwdXQgZmlsZSBpZiB0aGUgbmV3IG91dHB1dCBpcyBpZGVudGljYWwgdG8gdGhlIG9sZCcpXFxuQEAgLTM0NzAsOCArMzQ5NywxMCBAQCBkZWYgbWFpbigpOlxcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1mdW5jdGlvbi1wcmVmaXgnLCBkZXN0PSdmbl9wcmVmaXgnLCB0eXBlPXN0cilcXG4gICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXFxuIFxcbisgICAgaWYgYXJncy5saW50ZXI6XFxuKyAgICAgICAgYXJncy5oZWFkZXIgPSBGYWxzZVxcbiAgICAgaWYgYXJncy5oZWFkZXIgaXMgTm9uZTpcXG4tICAgICAgICBwYXJzZXIuZXJyb3IoXFxcIi0taGVhZGVyIG9yIC0tc291cmNlIGlzIHJlcXVpcmVkXFxcIilcXG4rICAgICAgICBwYXJzZXIuZXJyb3IoXFxcIi0taGVhZGVyLCAtLXNvdXJjZSBvciAtLWxpbnRlciBpcyByZXF1aXJlZFxcXCIpXFxuIFxcbiAgICAgZXhjbHVkZV9vcHMgPSBbcmUuY29tcGlsZShleHByKSBmb3IgZXhwciBpbiBhcmdzLmV4Y2x1ZGVfb3BdXFxuIFxcbkBAIC0zNDk0LDE3ICszNTIzLDE5IEBAIGRlZiBtYWluKCk6XFxuICAgICAgICAgY3cucChmJy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiB7cGFyc2VkLmxpY2Vuc2V9JylcXG4gICAgIGN3LnAoXFxcIi8qIERvIG5vdCBlZGl0IGRpcmVjdGx5LCBhdXRvLWdlbmVyYXRlZCBmcm9tOiAqL1xcXCIpXFxuICAgICBjdy5wKGZcXFwiLypcXFxcdHtzcGVjX2tlcm5lbH0gKi9cXFwiKVxcbi0gICAgY3cucChmXFxcIi8qIFlOTC1HRU4ge2FyZ3MubW9kZX0geydoZWFkZXInIGlmIGFyZ3MuaGVhZGVyIGVsc2UgJ3NvdXJjZSd9ICovXFxcIilcXG4tICAgIGlmIGFyZ3MuZXhjbHVkZV9vcCBvciBhcmdzLnVzZXJfaGVhZGVyIG9yIGFyZ3MuZm5fcHJlZml4Olxcbi0gICAgICAgIGxpbmUgPSAnJ1xcbi0gICAgICAgIGlmIGFyZ3MudXNlcl9oZWFkZXI6XFxuLSAgICAgICAgICAgIGxpbmUgKz0gJyAtLXVzZXItaGVhZGVyICcuam9pbihbJyddICsgYXJncy51c2VyX2hlYWRlcilcXG4tICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfb3A6XFxuLSAgICAgICAgICAgIGxpbmUgKz0gJyAtLWV4Y2x1ZGUtb3AgJy5qb2luKFsnJ10gKyBhcmdzLmV4Y2x1ZGVfb3ApXFxuLSAgICAgICAgaWYgYXJncy5mbl9wcmVmaXg6XFxuLSAgICAgICAgICAgIGxpbmUgKz0gZicgLS1mdW5jdGlvbi1wcmVmaXgge2FyZ3MuZm5fcHJlZml4fSdcXG4tICAgICAgICBjdy5wKGYnLyogWU5MLUFSR3tsaW5lfSAqLycpXFxuLSAgICBjdy5wKCcvKiBUbyByZWdlbmVyYXRlIHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8nKVxcbisgICAgaWYgbm90IGFyZ3MubGludGVyOlxcbisgICAgICAgIHlubF9hcmcgPSAnaGVhZGVyJyBpZiBhcmdzLmhlYWRlciBlbHNlICdzb3VyY2UnXFxuKyAgICAgICAgY3cucChmXFxcIi8qIFlOTC1HRU4ge2FyZ3MubW9kZX0ge3lubF9hcmd9ICovXFxcIilcXG4rICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfb3Agb3IgYXJncy51c2VyX2hlYWRlciBvciBhcmdzLmZuX3ByZWZpeDpcXG4rICAgICAgICAgICAgbGluZSA9ICcnXFxuKyAgICAgICAgICAgIGlmIGFyZ3MudXNlcl9oZWFkZXI6XFxuKyAgICAgICAgICAgICAgICBsaW5lICs9ICcgLS11c2VyLWhlYWRlciAnLmpvaW4oWycnXSArIGFyZ3MudXNlcl9oZWFkZXIpXFxuKyAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDpcXG4rICAgICAgICAgICAgICAgIGxpbmUgKz0gJyAtLWV4Y2x1ZGUtb3AgJy5qb2luKFsnJ10gKyBhcmdzLmV4Y2x1ZGVfb3ApXFxuKyAgICAgICAgICAgIGlmIGFyZ3MuZm5fcHJlZml4OlxcbisgICAgICAgICAgICAgICAgbGluZSArPSBmJyAtLWZ1bmN0aW9uLXByZWZpeCB7YXJncy5mbl9wcmVmaXh9J1xcbisgICAgICAgICAgICBjdy5wKGYnLyogWU5MLUFSR3tsaW5lfSAqLycpXFxuKyAgICAgICAgY3cucCgnLyogVG8gcmVnZW5lcmF0ZSBydW46IHRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoICovJylcXG4gICAgIGN3Lm5sKClcXG4gXFxuICAgICBpZiBhcmdzLm1vZGUgPT0gJ3VhcGknOlxcbkBAIC0zNTM5LDYgKzM1NzAsOCBAQCBkZWYgbWFpbigpOlxcbiAgICAgICAgICAgICBjdy5wKCcjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2UnKVxcbiAgICAgICAgICAgICBpZiBmYW1pbHlfY29udGFpbnNfYml0ZmllbGQzMihwYXJzZWQpOlxcbiAgICAgICAgICAgICAgICAgY3cucCgnI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGxpbmsuaFxcdTAwM2UnKVxcbisgICAgICAgIGVsaWYgYXJncy5saW50ZXI6XFxuKyAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFxcXCIuLi9saW50ZXIvbGludGVyLmhcXFwiJylcXG4gICAgICAgICBlbHNlOlxcbiAgICAgICAgICAgICBjdy5wKGYnI2luY2x1ZGUgXFxcIntoZHJfZmlsZX1cXFwiJylcXG4gICAgICAgICAgICAgY3cucCgnI2luY2x1ZGUgXFxcInlubC5oXFxcIicpXFxuQEAgLTM2OTAsNiArMzcyMywyMSBAQCBkZWYgbWFpbigpOlxcbiAgICAgICAgICAgICAgICAgICAgIGN3Lm5sKClcXG4gICAgICAgICAgICAgICAgICAgICBwcmludF93cmFwcGVkX3R5cGUocmkpXFxuICAgICAgICAgICAgIGN3Lm5sKClcXG4rICAgICAgICBlbGlmIGFyZ3MubGludGVyOlxcbisgICAgICAgICAgICBlbnVtX3NldHMgPSBbXVxcbisgICAgICAgICAgICBmb3IgbmFtZSwgY29uc3QgaW4gcGFyc2VkLmNvbnN0cy5pdGVtcygpOlxcbisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25zdCwgRW51bVNldCk6XFxuKyAgICAgICAgICAgICAgICAgICAgZW51bV9zZXRzLmFwcGVuZChwdXRfZW51bV90b19saW50ZXIocGFyc2VkLCBjdywgY29uc3QpKVxcbisgICAgICAgICAgICBjdy5ubCgpXFxuKyAgICAgICAgICAgIGN3LmJsb2NrX3N0YXJ0KGxpbmU9XFxcInN0YXRpYyBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgZW51bXNbXSA9XFxcIilcXG4rICAgICAgICAgICAgZm9yIGVudW1fc2V0IGluIGVudW1fc2V0czpcXG4rICAgICAgICAgICAgICAgIGN3LnAoZW51bV9zZXQpXFxuKyAgICAgICAgICAgIGN3LnAoJ3t9LCcpXFxuKyAgICAgICAgICAgIGN3LmJsb2NrX2VuZChsaW5lPSc7JylcXG4rICAgICAgICAgICAgY3cubmwoKVxcbisgICAgICAgICAgICBjdy53cml0ZV9mdW5jKCdpbnQnLCAnbWFpbicsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1bJ2NvbnN0IGludCBhcmdjJywgJ2NvbnN0IGNoYXIgKiphcmd2J10sXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keT1bJ3JldHVybiBsaW50ZXJfcnVuKGFyZ2MsIGFyZ3YsIFxcdTAwMjZlbnVtc1swXSk7J10pXFxuICAgICAgICAgZWxzZTpcXG4gICAgICAgICAgICAgY3cucCgnLyogRW51bXMgKi8nKVxcbiAgICAgICAgICAgICBwdXRfb3BfbmFtZShwYXJzZWQsIGN3KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo1MjoyNy42MDA4MDQxMTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE0MTMzOTc3MTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgbW9kaWZpZXMgZG9jdW1lbnRhdGlvbiAoWUFNTCBzcGVjcyBpbiBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvKSwgdXNlci1zcGFjZSB0b29saW5nL2xpbnRlcnMgKHRvb2xzL25ldC95bmwvKSwgYW5kIGFuIGluY2x1ZGUgZ3VhcmQgaW4gaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaC4gTm8gZXhlY3V0YWJsZSBrZXJuZWwgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZDEwYmUyZjAwMzlkZTE5NThiMmI1NWJiMDJhNDVhMTIyNWFhMWZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NTI6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcbmluZGV4IGIxZWIxMDJhYjg0MzIuLjU0M2RjZGRiMDQ2NDcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9jb25udHJhY2sueWFtbFxuQEAgLTIsNiArMiw3IEBAXG4gLS0tXG4gbmFtZTogY29ubnRyYWNrXG4gcHJvdG9jb2w6IG5ldGxpbmstcmF3XG4rdWFwaS1oZWFkZXI6IGxpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcbiBwcm90b251bTogMTJcbiBcbiBkb2M6IFx1MDAzZS1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXG5pbmRleCAyMWVkZjNkMjVmMzRiLi43NmY2OWVkODJhMjRkIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXG5AQCAtMiw2ICsyLDcgQEBcbiAtLS1cbiBuYW1lOiBuZnRhYmxlc1xuIHByb3RvY29sOiBuZXRsaW5rLXJhd1xuK3VhcGktaGVhZGVyOiBsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcbiBwcm90b251bTogMTJcbiBcbiBkb2M6IFx1MDAzZS1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxuaW5kZXggNjFlYmI5YTJiYWQ1MS4uZmU1MmQ1MDhkNjA3NSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWxcbkBAIC0yNSwxNyArMjUsMTcgQEAgZGVmaW5pdGlvbnM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogbG9vcGJhY2tcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBwb2ludC10by1wb2ludFxuKyAgICAgICAgbmFtZTogcG9pbnRvcG9pbnRcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBuby10cmFpbGVyc1xuKyAgICAgICAgbmFtZTogbm90cmFpbGVyc1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJ1bm5pbmdcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBuby1hcnBcbisgICAgICAgIG5hbWU6IG5vYXJwXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcHJvbWlzY1xuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IGFsbC1tdWx0aVxuKyAgICAgICAgbmFtZTogYWxsbXVsdGlcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBtYXN0ZXJcbiAgICAgICAtXG5AQCAtNDUsNyArNDUsNyBAQCBkZWZpbml0aW9uczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBwb3J0c2VsXG4gICAgICAgLVxuLSAgICAgICAgbmFtZTogYXV0by1tZWRpYVxuKyAgICAgICAgbmFtZTogYXV0b21lZGlhXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHluYW1pY1xuICAgICAgIC1cbkBAIC01OCw2ICs1OCw3IEBAIGRlZmluaXRpb25zOlxuICAgICBuYW1lOiB2bGFuLXByb3RvY29sc1xuICAgICB0eXBlOiBlbnVtXG4gICAgIGVudW0tbmFtZTpcbisgICAgbmFtZS1wcmVmaXg6IGV0aC1wLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IDgwMjFxXG5AQCAtMzA1LDEwICszMDYsMTMgQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IGlwdjQtZGV2Y29uZlxuICAgICBlbnVtLW5hbWU6XG4rICAgIG5hbWUtcHJlZml4OiBpcHY0LWRldmNvbmYtXG4rICAgIGhlYWRlcjogbGludXgvaXAuaFxuICAgICB0eXBlOiBlbnVtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZm9yd2FyZGluZ1xuKyAgICAgICAgdmFsdWU6IDFcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBtYy1mb3J3YXJkaW5nXG4gICAgICAgLVxuQEAgLTM3Niw2ICszODAsOCBAQCBkZWZpbml0aW9uczpcbiAgIC1cbiAgICAgbmFtZTogaXB2Ni1kZXZjb25mXG4gICAgIGVudW0tbmFtZTpcbisgICAgbmFtZS1wcmVmaXg6IGRldmNvbmYtXG4rICAgIGhlYWRlcjogbGludXgvaXB2Ni5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG5AQCAtNTAxLDYgKzUwNyw4IEBAIGRlZmluaXRpb25zOlxuICAgLVxuICAgICBuYW1lOiBpZmxhLWljbXA2LXN0YXRzXG4gICAgIGVudW0tbmFtZTpcbisgICAgbmFtZS1wcmVmaXg6IGljbXA2LW1pYi1cbisgICAgaGVhZGVyOiBsaW51eC9zbm1wLmhcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnRyaWVzOlxuICAgICAgIC1cbkBAIC01MjAsNiArNTI4LDggQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IGlmbGEtaW5ldDYtc3RhdHNcbiAgICAgZW51bS1uYW1lOlxuKyAgICBuYW1lLXByZWZpeDogaXBzdGF0cy1taWItXG4rICAgIGhlYWRlcjogbGludXgvc25tcC5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG5AQCAtNTMxLDExICs1NDEsMjEgQEAgZGVmaW5pdGlvbnM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaW5kZWxpdmVyc1xuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IG91dGZvcndkYXRhZ3JhbXNcbisgICAgICAgIG5hbWU6IG5vZWN0cGt0c1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGVjdDFwa3RzXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZWN0MHBrdHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBjZXBrdHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBvdXRyZXF1ZXN0c1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IG91dHBrdHNcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBvdXRvY3RldHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBvdXRmb3J3ZGF0YWdyYW1zXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaW5oZHJlcnJvcnNcbiAgICAgICAtXG5AQCAtNTg2LDE0ICs2MDYsNiBAQCBkZWZpbml0aW9uczpcbiAgICAgICAgIG5hbWU6IG91dGJjYXN0b2N0ZXRzXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogY3N1bWVycm9yc1xuLSAgICAgIC1cbi0gICAgICAgIG5hbWU6IG5vZWN0cGt0c1xuLSAgICAgIC1cbi0gICAgICAgIG5hbWU6IGVjdDEtcGt0c1xuLSAgICAgIC1cbi0gICAgICAgIG5hbWU6IGVjdDAtcGt0c1xuLSAgICAgIC1cbi0gICAgICAgIG5hbWU6IGNlcGt0c1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlYXNtLW92ZXJsYXBzXG4gICAtIG5hbWU6IGJyLWJvb2xvcHQtbXVsdGlcbkBAIC02NDAsNiArNjUyLDggQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IHZsYW4tZmxhZ3NcbiAgICAgdHlwZTogZmxhZ3NcbiAgICAgZW51bS1uYW1lOlxuKyAgICBuYW1lLXByZWZpeDogdmxhbi1mbGFnLVxuKyAgICBoZWFkZXI6IGxpbnV4L2lmX3ZsYW4uaFxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gcmVvcmRlci1oZHJcbiAgICAgICAtIGd2cnBcbkBAIC03MjcsNiArNzQxLDggQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IGlmbGEtdmYtbGluay1zdGF0ZS1lbnVtXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW51bS1uYW1lOlxuKyAgICBuYW1lLXByZWZpeDogaWZsYS12Zi1saW5rLXN0YXRlLVxuKyAgICBoZWFkZXI6IGxpbnV4L2lmX2xpbmsuaFxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gYXV0b1xuICAgICAgIC0gZW5hYmxlXG5AQCAtNzk0LDYgKzgxMCw3IEBAIGRlZmluaXRpb25zOlxuICAgICBuYW1lOiBydGV4dC1maWx0ZXJcbiAgICAgdHlwZTogZmxhZ3NcbiAgICAgZW51bS1uYW1lOlxuKyAgICBuYW1lLXByZWZpeDogcnRleHQtZmlsdGVyLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gdmZcbiAgICAgICAtIGJydmxhblxuQEAgLTgwNiwxOCArODIzLDIwIEBAIGRlZmluaXRpb25zOlxuICAgLVxuICAgICBuYW1lOiBuZXRraXQtcG9saWN5XG4gICAgIHR5cGU6IGVudW1cbi0gICAgZW51bS1uYW1lOlxuKyAgICBlbnVtLW5hbWU6IG5ldGtpdC1hY3Rpb25cbisgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBmb3J3YXJkXG4rICAgICAgICBuYW1lOiBwYXNzXG4gICAgICAgICB2YWx1ZTogMFxuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IGJsYWNraG9sZVxuKyAgICAgICAgbmFtZTogZHJvcFxuICAgICAgICAgdmFsdWU6IDJcbiAgIC1cbiAgICAgbmFtZTogbmV0a2l0LW1vZGVcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6IG5ldGtpdC1tb2RlXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLSBuYW1lOiBsMlxuICAgICAgIC0gbmFtZTogbDNcbkBAIC04MjUsNyArODQ0LDggQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IG5ldGtpdC1zY3J1YlxuICAgICB0eXBlOiBlbnVtXG4tICAgIGVudW0tbmFtZTpcbisgICAgZW51bS1uYW1lOiBuZXRraXQtc2NydWJcbisgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1zY3J1Yi1cbiAgICAgZW50cmllczpcbiAgICAgICAtIG5hbWU6IG5vbmVcbiAgICAgICAtIG5hbWU6IGRlZmF1bHRcbkBAIC04MzMsMTMgKzg1MywxNCBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogbmV0a2l0LXBhaXJpbmdcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6IG5ldGtpdC1wYWlyaW5nXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtZGV2aWNlLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gbmFtZTogcGFpclxuICAgICAgIC0gbmFtZTogc2luZ2xlXG4gICAtXG4gICAgIG5hbWU6IG92cG4tbW9kZVxuICAgICBlbnVtLW5hbWU6IG92cG4tbW9kZVxuLSAgICBuYW1lLXByZWZpeDogb3Zwbi1tb2RlXG4rICAgIG5hbWUtcHJlZml4OiBvdnBuLW1vZGUtXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtIHAycFxuQEAgLTg0OCw2ICs4NjksNyBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogYnItc3RwLW1vZGVcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6IGJyLXN0cC1tb2RlXG4rICAgIG5hbWUtcHJlZml4OiBici1zdHAtbW9kZS1cbiAgICAgZW50cmllczpcbiAgICAgICAtIGF1dG9cbiAgICAgICAtIHVzZXJcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaFxuaW5kZXggNDlmNTY0MDA5MmEwZC4uMjZiZGFiYzUwMmZlYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmhcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmhcbkBAIC01LDggKzUsOCBAQFxuICAqIEF1dGhvcjogSGlkZWFraSBZT1NISUZVSkkgXHUwMDNjeW9zaGZ1amlAbGludXgtaXB2Ni5vcmdcdTAwM2VcbiAgKi9cbiBcbi0jaWZuZGVmIF9MSU5VWF9TTk1QX0hcbi0jZGVmaW5lIF9MSU5VWF9TTk1QX0hcbisjaWZuZGVmIF9VQVBJX0xJTlVYX1NOTVBfSFxuKyNkZWZpbmUgX1VBUElfTElOVVhfU05NUF9IXG4gXG4gLyogaXBzdGF0cyBtaWIgZGVmaW5pdGlvbnMgKi9cbiAvKlxuQEAgLTM3Miw0ICszNzIsNCBAQCBlbnVtXG4gXHRfX0xJTlVYX01JQl9UTFNNQVhcbiB9O1xuIFxuLSNlbmRpZlx0LyogX0xJTlVYX1NOTVBfSCAqL1xuKyNlbmRpZlx0LyogX1VBUElfTElOVVhfU05NUF9IICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzIGIvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXG5pbmRleCAyNzcxMzc1MzM5ZDljLi44ZTEzNmE1ZGY4OTkxIDEwMDY0NFxuLS0tIGEvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXG4rKysgYi90b29scy9uZXQveW5sL01ha2VmaWxlLmRlcHNcbkBAIC00MCw4ICs0MCwxNSBAQCBDRkxBR1Nfb3ZzX3Zwb3J0Oj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9PUEVOVlNXSVRDSF9ILG9wZW52c3dpdGNoLmgpXG4gQ0ZMQUdTX3BzcDo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9QU1BfSCxwc3AuaClcbiBDRkxBR1NfcnQtYWRkcjo9JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpIFxcXG4gXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9JRl9BRERSX0gsaWZfYWRkci5oKVxuLUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXFxcbi1cdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfTElOS19ILGlmX2xpbmsuaClcbitDRkxBR1NfcnQtbGluazo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9MSU5LX0gsaWZfbGluay5oKSBcXFxuK1x0JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpIFxcXG4rXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lQX0gsaXAuaCkgXFxcbitcdCQoY2FsbCBnZXRfaGRyX2luYyxfSVBWNl9ILGlwdjYuaCkgXFxcbitcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfQlJJREdFX0gsaWZfYnJpZGdlLmgpIFxcXG4rXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0lGX1RVTk5FTF9IXyxpZl90dW5uZWwuaCkgXFxcbitcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfVkxBTl9IXyxpZl92bGFuLmgpIFxcXG4rXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX1NOTVBfSCxzbm1wLmgpIFxcXG4rXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0RQTExfSCxkcGxsLmgpXG4gQ0ZMQUdTX3J0LW5laWdoOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXFxcbiBcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX05FSUdIQk9VUl9ILG5laWdoYm91ci5oKVxuIENGTEFHU19ydC1yb3V0ZTo9JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZSBiL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmVcbmluZGV4IDg1OWE2ZmI0NDZlMTQuLjIwZGQ3MGNkNzA5ZWUgMTAwNjQ0XG4tLS0gYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlXG4rKysgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlXG5AQCAtMSwzICsxLDYgQEBcbiAqLXVzZXIuY1xuICotdXNlci5oXG4rKi1saW50ZXIuY1xuKyotbGludGVyLmhcbisqLWxpbnRlclxuICoucnN0XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZVxuaW5kZXggNWExODYzNDliNWE4Ni4uYmNmN2Y0NTU2MzEzMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlXG4rKysgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZVxuQEAgLTMzLDggKzMzLDkgQEAgT0JKUz0kKHBhdHN1YnN0ICUsJS11c2VyLm8sJHtHRU5TfSlcbiBTUEVDU19QQVRIUz0kKHdpbGRjYXJkICQoU1BFQ1NfRElSKS8qLnlhbWwpXG4gU1BFQ1M9JChwYXRzdWJzdCAkKFNQRUNTX0RJUikvJS55YW1sLCUsJHtTUEVDU19QQVRIU30pXG4gUlNUUz0kKHBhdHN1YnN0ICUsJS5yc3QsJHtTUEVDU30pXG4rTElOVFM9JChwYXRzdWJzdCAlLCUtbGludCwke1NQRUNTfSlcbiBcbi1hbGw6IHByb3Rvcy5hICQoSERSUykgJChTUkNTKSAkKEtIRFJTKSAkKEtTUkNTKSAkKFVBUEkpICQoUlNUUylcbithbGw6IHByb3Rvcy5hICQoSERSUykgJChTUkNTKSAkKEtIRFJTKSAkKEtTUkNTKSAkKFVBUEkpICQoUlNUUykgJChMSU5UUylcbiBcbiBwcm90b3MuYTogJChPQkpTKVxuIFx0QGVjaG8gLWUgXCJcXHRBUiAkQFwiXG5AQCAtNTYsMTEgKzU3LDI5IEBAIHByb3Rvcy5hOiAkKE9CSlMpXG4gXHRAZWNobyAtZSBcIlxcdEdFTl9SU1QgJEBcIlxuIFx0QCQoVE9PTF9SU1QpIC1vICRAIC1pICRcdTAwM2NcbiBcbislLWxpbnRlci5jOiAkKFNQRUNTX0RJUikvJS55YW1sICQoVE9PTCkgLi4vbGludGVyL2xpbnRlci5oXG4rXHRAZWNobyAtZSBcIlxcdEdFTiAkQFwiXG4rXHRAJChUT09MKSAtLW1vZGUgdXNlciAtLWxpbnRlciAtLXNwZWMgJFx1MDAzYyAtbyAkQCAkKFlOTF9HRU5fQVJHXyQqKVxuK1xuKyUtbGludGVyLmg6ICUtbGludGVyLmMgLi4vbGludGVyL2dlbi1oLnNoXG4rXHRAZWNobyAtZSBcIlxcdEdFTiAkQFwiXG4rXHRALi4vbGludGVyL2dlbi1oLnNoICQoQ0ZMQUdTKSAkKENGTEFHU18kKikgXHUwMDNjICRcdTAwM2MgXHUwMDNlICRAXG4rXG4rJS1saW50ZXI6ICUtbGludGVyLmMgJS1saW50ZXIuaCAuLi9saW50ZXIvbGludGVyLmhcbitcdEBlY2hvIC1lIFwiXFx0Q0MgJEBcIlxuK1x0QCQoQ0MpICQoQ0ZMQUdTKSAkKENGTEFHU18kKikgLWluY2x1ZGUgJCotbGludGVyLmggLW8gJEAgJFx1MDAzY1xuK1xuKyUtbGludDogJS1saW50ZXJcbitcdEBlY2hvIC1lIFwiXFx0TElOVCAkQFwiXG4rXHRALi8kXHUwMDNjICQqXG4rXG4rbGludDogJChMSU5UUylcbitcbiBjbGVhbjpcbiBcdHJtIC1mICoub1xuIFxuIGRpc3RjbGVhbjogY2xlYW5cbi1cdHJtIC1mICouYyAqLmggKi5hICoucnN0XG4rXHRybSAtZiAqLmMgKi5oICouYSAqLnJzdCAqLWxpbnRlclxuIFxuIHJlZ2VuOlxuIFx0QC4uL3lubC1yZWdlbi5zaFxuQEAgLTY4LDcgKzg3LDcgQEAgcmVnZW46XG4gaW5zdGFsbC1oZWFkZXJzOiAkKEhEUlMpXG4gXHRAZWNobyAtZSBcIlxcdElOU1RBTEwgZ2VuZXJhdGVkIGhlYWRlcnNcIlxuIFx0QCQoSU5TVEFMTCkgLWQgJChERVNURElSKSQoaW5jbHVkZWRpcikveW5sXG4tXHRAJChJTlNUQUxMKSAtbSAwNjQ0ICouaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS95bmwvXG4rXHRAJChJTlNUQUxMKSAtbSAwNjQ0ICQoS0hEUlMpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC9cbiBcbiBpbnN0YWxsLXJzdHM6ICQoUlNUUylcbiBcdEBlY2hvIC1lIFwiXFx0SU5TVEFMTCBnZW5lcmF0ZWQgZG9jc1wiXG5AQCAtODQsNSArMTAzLDUgQEAgaW5zdGFsbC1zcGVjczpcbiBcbiBpbnN0YWxsOiBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcbiBcbi0uUEhPTlk6IGFsbCBjbGVhbiBkaXN0Y2xlYW4gcmVnZW4gaW5zdGFsbCBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcbisuUEhPTlk6IGFsbCBjbGVhbiBkaXN0Y2xlYW4gcmVnZW4gaW5zdGFsbCBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3MgbGludFxuIC5ERUZBVUxUX0dPQUw6IGFsbFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2dlbi1oLnNoIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4yNDc0OTM2MDAwMzRkXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy9uZXQveW5sL2xpbnRlci9nZW4taC5zaFxuQEAgLTAsMCArMSwyMyBAQFxuKyMhL2Jpbi9zaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbisjIFVzYWdlOiAuL2dlbi1oLnNoICRDRkxBR1MgXHUwMDNjIGluLmMgXHUwMDNlIG91dC5oXG4rI1xuKyMgRXh0cmFjdCB2YWxpZCBzeW1ib2xzLCBhbmQgZGVmaW5lIHRoYXQgdGhleSBhcmUgYXZhaWxhYmxlLiBUaGlzIGlzIGFcbisjIHdvcmthcm91bmQsIHRvIGF2b2lkIGNvbXBpbGUgZmFpbHVyZXMgZHVlIHRvIG5vbi1leGlzdGVudCBlbnVtIG1lbWJlcnMuXG4rI1xuKyMgQ2FwaXRhbGl6ZWQga2V5d29yZHMgZm91bmQgaW4gdGhlIHByZXByb2Nlc3NvciBvdXRwdXQsIGFyZSBtb3N0bHkgZW51bVxuKyMgbWVtYmVycy5cbisjXG4rIyBBcyBhbiBleGFtcGxlLCBleGlzdGVuY2Ugb2YgRk9PIGNhbiBiZSBjaGVja2VkIHdpdGg6XG4rIyAgICNpZiBkZWZpbmVkKEZPTykgfHwgZGVmaW5lZChMSU5URVJfSEFTX0ZPTylcbisjIHRodXMgY2hlY2tpbmcgZm9yIEZPTyBlaXRoZXIgYXMgYSBtYWNybyBvciBhcyBhbiBlbnVtIG1lbWJlcnMuXG4rXG4rc2V0IC1lXG4rXG4rZWNobyAnLyogVGhpcyBpcyBhbiBhdXRvLWdlbmVyYXRlZCBmaWxlICovJ1xuK2dyZXAgJ14jaW5jbHVkZSBcdTAwM2NsaW51eC8nIHxcbitcdGNwcCAteCBjIFwiJEBcIiAtIHxcbitcdGdyZXAgLXdvICdbQS1aXVtBLVowLTlfXVxcKycgfFxuK1x0c29ydCB8IHVuaXEgfFxuK1x0c2VkIC1lICdzL14vI2RlZmluZSBMSU5URVJfSEFTXy9nJ1xuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2xpbnRlci5oIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvbGludGVyLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4wZDFjMjhjOWYyMTQwXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaFxuQEAgLTAsMCArMSwxNTIgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRib29sLmhcdTAwM2VcbitcbitzdHJ1Y3QgZW51bV9rdiB7XG4rXHRjb25zdCBjaGFyICpuYW1lO1xuK1x0Y29uc3QgbG9uZyBsb25nIHZhbDtcbitcdGNvbnN0IGJvb2wgaXNfdW5kZWY6MTtcbit9O1xuK1xuK3N0cnVjdCBlbnVtX2VudHJ5IHtcbitcdGNvbnN0IHN0cnVjdCBlbnVtX2t2IHlubDtcbitcdGNvbnN0IHN0cnVjdCBlbnVtX2t2IGM7XG4rXHRjb25zdCBib29sIGlzX3NlbnRpbmFsOjE7XG4rfTtcbitcbisjZGVmaW5lIFlOTF9FTlVNX0VOVFJZKFlOTF9OQU1FLCBDX05BTUUsIFlOTF9WQUxVRSkgXFxcbitcdHsgXFxcbitcdFx0LnlubCA9IHsgLm5hbWUgPSBZTkxfTkFNRSwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxuK1x0XHQuYyA9IHsgLm5hbWUgPSAjQ19OQU1FLCAudmFsID0gQ19OQU1FIH0sIFxcXG4rXHR9XG4rXG4rI2RlZmluZSBZTkxfRU5VTV9CQURfRU5UUlkoWU5MX05BTUUsIENfTkFNRSwgWU5MX1ZBTFVFKSBcXFxuK1x0eyBcXFxuK1x0XHQueW5sID0geyAubmFtZSA9IFlOTF9OQU1FLCAudmFsID0gWU5MX1ZBTFVFIH0sIFxcXG4rXHRcdC5jID0geyAubmFtZSA9ICNDX05BTUUsIC5pc191bmRlZiA9IHRydWUgfSwgXFxcbitcdH1cbitcbisjZGVmaW5lIFlOTF9FTlVNX1NFTlRJTkFMKENfTkFNRSwgWU5MX1ZBTFVFKSBcXFxuK1x0eyBcXFxuK1x0XHQueW5sID0geyAubmFtZSA9IFwiTUFYXCIsIC52YWwgPSBZTkxfVkFMVUUgfSwgXFxcbitcdFx0LmMgPSB7IC5uYW1lID0gI0NfTkFNRSwgLnZhbCA9IENfTkFNRSB9LCBcXFxuK1x0XHQuaXNfc2VudGluYWwgPSB0cnVlLCBcXFxuK1x0fVxuK1xuK2VudW0geW5sX2VudW1fdHlwZSB7XG4rXHRZTkxfRU5VTSxcbitcdFlOTF9GTEFHUyxcbit9O1xuK1xuK3N0cnVjdCBlbnVtX3NldCB7XG4rXHRjb25zdCBjaGFyICpuYW1lO1xuK1x0Y29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5O1xuK1x0ZW51bSB5bmxfZW51bV90eXBlIHR5cGU7XG4rfTtcbitcbitzdHJ1Y3QgbGludGVyX2N0eCB7XG4rXHRpbnQgZXJyb3JzO1xuK1x0aW50IHdhcm5pbmdzO1xuK1x0Y29uc3QgY2hhciAqbmFtZTtcbit9O1xuK1xuKyNkZWZpbmUgZXJyZihmbXQsIC4uLikgXFxcbitcdGRvIHsgXFxcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiJXM6IEVSUk9SOiBcIiBmbXQsIGN0eC1cdTAwM2VuYW1lLCBfX1ZBX0FSR1NfXyk7IFxcXG4rXHRcdGN0eC1cdTAwM2VlcnJvcnMrKzsgXFxcbitcdH0gd2hpbGUgKDApXG4rXG4rI2RlZmluZSB3YXJuZihmbXQsIC4uLikgXFxcbitcdGRvIHsgXFxcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiJXM6IFdBUk46IFwiIGZtdCwgY3R4LVx1MDAzZW5hbWUsIF9fVkFfQVJHU19fKTsgXFxcbitcdFx0Y3R4LVx1MDAzZXdhcm5pbmdzKys7IFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuK3N0YXRpYyBpbmxpbmUgbG9uZyBsb25nIGZpbmRfbmV4dF92YWx1ZShjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzLFxuK1x0XHRcdFx0XHRjb25zdCBsb25nIGxvbmcgbGFzdF92YWwpXG4re1xuK1x0c3dpdGNoIChlcy1cdTAwM2V0eXBlKSB7XG4rXHRjYXNlIFlOTF9FTlVNOlxuK1x0XHRyZXR1cm4gbGFzdF92YWwgKyAxO1xuK1x0Y2FzZSBZTkxfRkxBR1M6XG4rXHRcdHJldHVybiBsYXN0X3ZhbCBcdTAwM2NcdTAwM2MgMTtcbitcdGRlZmF1bHQ6XG4rXHRcdC8qIHVucmVhY2hhYmxlICovXG4rXHRcdGFib3J0KCk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW50X2VudW1fZW50cnkoc3RydWN0IGxpbnRlcl9jdHggKmN0eCxcbitcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXG4rXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnksXG4rXHRcdFx0XHQgICBsb25nIGxvbmcgKmxhc3RfdmFsLCBjb25zdCBpbnQgaSxcbitcdFx0XHRcdCAgIGNvbnN0IGludCBjbnQpXG4re1xuK1x0Y29uc3QgbG9uZyBsb25nIHZhbCA9IGVudHJ5LVx1MDAzZWMudmFsO1xuK1xuK1x0aWYgKGkgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHZhbCAhPSAqbGFzdF92YWwgXHUwMDI2XHUwMDI2IHZhbCAhPSBmaW5kX25leHRfdmFsdWUoZXMsICpsYXN0X3ZhbCkpXG4rXHRcdHdhcm5mKFwiJXM6IFBvc3NpYmxlIG1pc3NpbmcgbWVtYmVyIGJlZm9yZSAlcyAoJWxsZCAtXHUwMDNlICVsbGQpXFxuXCIsXG4rXHRcdCAgICAgIGVzLVx1MDAzZW5hbWUsIGVudHJ5LVx1MDAzZWMubmFtZSwgKmxhc3RfdmFsLCB2YWwpO1xuK1x0Kmxhc3RfdmFsID0gZW50cnktXHUwMDNlYy52YWw7XG4rXG4rXHRpZiAoaSA9PSBjbnQgLSAxIFx1MDAyNlx1MDAyNiBzdHJjbXAoZW50cnktXHUwMDNleW5sLm5hbWUsIFwibWF4XCIpID09IDApXG4rXHRcdGVycmYoXCIlczogU2VudGluYWwgdXNlZCBpbiBZTkwgc3BlY1xcblwiLCBlcy1cdTAwM2VuYW1lKTtcbitcbitcdGlmIChlbnRyeS1cdTAwM2VjLmlzX3VuZGVmKSB7XG4rXHRcdGVycmYoXCIlczogJXM6ICVzIG5vdCBmb3VuZFxcblwiLCBlcy1cdTAwM2VuYW1lLCBlbnRyeS1cdTAwM2V5bmwubmFtZSxcbitcdFx0ICAgICBlbnRyeS1cdTAwM2VjLm5hbWUpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRpZiAoZW50cnktXHUwMDNleW5sLnZhbCA9PSBlbnRyeS1cdTAwM2VjLnZhbClcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKGVudHJ5LVx1MDAzZWlzX3NlbnRpbmFsKSB7XG4rXHRcdGlmIChlcy1cdTAwM2V0eXBlID09IFlOTF9FTlVNIFx1MDAyNlx1MDAyNiBlbnRyeS1cdTAwM2V5bmwudmFsICsgMSA9PSBlbnRyeS1cdTAwM2VjLnZhbClcbitcdFx0XHRyZXR1cm47IC8qIGVnLiBERVZDT05GX01BWCBpcyB0aGUgc3RvcmFnZSBzaXplICovXG4rXHRcdHdhcm5mKFwiJXM6IFNlbnRpbmFsIG1pc21hdGNoOiAlbGxkICE9ICVsbGQgKExhc3QgWU5MICE9ICVzKVxcblwiLFxuK1x0XHQgICAgICBlcy1cdTAwM2VuYW1lLCBlbnRyeS1cdTAwM2V5bmwudmFsLCBlbnRyeS1cdTAwM2VjLnZhbCwgZW50cnktXHUwMDNlYy5uYW1lKTtcbitcdH0gZWxzZSB7XG4rXHRcdGVycmYoXCIlczogVmFsdWUgbWlzbWF0Y2g6ICVsbGQgIT0gJWxsZCAoJXMgIT0gJXMpXFxuXCIsIGVzLVx1MDAzZW5hbWUsXG4rXHRcdCAgICAgZW50cnktXHUwMDNleW5sLnZhbCwgZW50cnktXHUwMDNlYy52YWwsIGVudHJ5LVx1MDAzZXlubC5uYW1lLFxuK1x0XHQgICAgIGVudHJ5LVx1MDAzZWMubmFtZSk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW50X2VudW0oc3RydWN0IGxpbnRlcl9jdHggKmN0eCwgY29uc3Qgc3RydWN0IGVudW1fc2V0ICplcylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnkgPSBlcy1cdTAwM2VlbnRyeTtcbitcdGxvbmcgbG9uZyBsYXN0X3ZhbDtcbitcdGludCBjbnQgPSAwO1xuK1x0aW50IGkgPSAwO1xuK1xuK1x0d2hpbGUgKGVudHJ5LVx1MDAzZXlubC5uYW1lKSB7XG4rXHRcdGlmICghZW50cnktXHUwMDNlaXNfc2VudGluYWwpXG4rXHRcdFx0Y250Kys7XG4rXHRcdGVudHJ5Kys7XG4rXHR9XG4rXHRlbnRyeSA9IGVzLVx1MDAzZWVudHJ5O1xuK1xuK1x0d2hpbGUgKGVudHJ5LVx1MDAzZXlubC5uYW1lKVxuK1x0XHRsaW50X2VudW1fZW50cnkoY3R4LCBlcywgZW50cnkrKywgXHUwMDI2bGFzdF92YWwsIGkrKywgY250KTtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgbGludGVyX3J1bihjb25zdCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsXG4rXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzKVxuK3tcbitcdHN0cnVjdCBsaW50ZXJfY3R4IGN0eCA9IHtcbitcdFx0Lm5hbWUgPSBhcmd2W2FyZ2MgXHUwMDNlIDEgPyAxIDogMF0sXG4rXHR9O1xuK1xuK1x0d2hpbGUgKGVzLVx1MDAzZW5hbWUpIHtcbitcdFx0bGludF9lbnVtKFx1MDAyNmN0eCwgZXMpO1xuK1x0XHRlcysrO1xuK1x0fVxuK1xuK1x0aWYgKGN0eC5lcnJvcnMgfHwgY3R4Lndhcm5pbmdzKVxuK1x0XHRmcHJpbnRmKHN0ZGVyciwgXCIlczogTGludGVyIHN1bW1hcnk6ICVkIGVycm9ycywgJWQgd2FybmluZ3NcXG5cIixcbitcdFx0XHRjdHgubmFtZSwgY3R4LmVycm9ycywgY3R4Lndhcm5pbmdzKTtcbitcbitcdHJldHVybiBFWElUX1NVQ0NFU1M7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbmluZGV4IDJiMzQ4M2RiMWI2MGMuLjViYmUzY2JhOGY3NTkgMTAwNzU1XG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuKysrIGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbkBAIC0xNjg4LDYgKzE2ODgsOCBAQCBjbGFzcyBDb2RlV3JpdGVyOlxuICAgICAgICAgc2VsZi5jbG9zZV9vdXRfZmlsZSgpXG4gXG4gICAgIGRlZiBjbG9zZV9vdXRfZmlsZShzZWxmKTpcbisgICAgICAgIGlmIHNlbGYuX2Jsb2NrX2VuZDpcbisgICAgICAgICAgICBzZWxmLl9vdXQud3JpdGUoJ1xcdCcgKiBzZWxmLl9pbmQgKyAnfVxcbicpXG4gICAgICAgICBpZiBzZWxmLl9vdXQgPT0gb3Muc3lzLnN0ZG91dDpcbiAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICMgQXZvaWQgbW9kaWZ5aW5nIHRoZSBmaWxlIGlmIGNvbnRlbnRzIGRpZG4ndCBjaGFuZ2VcbkBAIC0yMDg0LDYgKzIwODYsMzAgQEAgZGVmIHB1dF9lbnVtX3RvX3N0cihfZmFtaWx5LCBjdywgZW51bSk6XG4gICAgIF9wdXRfZW51bV90b19zdHJfaGVscGVyKGN3LCBlbnVtLnJlbmRlcl9uYW1lLCBtYXBfbmFtZSwgJ3ZhbHVlJywgZW51bT1lbnVtKVxuIFxuIFxuK2RlZiBwdXRfZW51bV90b19saW50ZXIoZmFtaWx5LCBjdywgZW51bSk6XG4rICAgIG5hbWVfcGZ4ID0gZW51bS5nZXQoJ25hbWUtcHJlZml4JywgZlwie2ZhbWlseS5pZGVudF9uYW1lfS17ZW51bVsnbmFtZSddfS1cIilcbisgICAgbWF4X25hbWUgPSBjX3VwcGVyKG5hbWVfcGZ4ICsgJ21heCcpXG4rICAgIG1hcF9uYW1lID0gZid7ZW51bS5yZW5kZXJfbmFtZX1fZW50cmllcydcbisgICAgY3cuYmxvY2tfc3RhcnQobGluZT1mXCJzdGF0aWMgY29uc3Qgc3RydWN0IGVudW1fZW50cnkge21hcF9uYW1lfVtdID1cIilcbisgICAgdmFsID0gMFxuKyAgICBmb3IgZW50cnkgaW4gZW51bS5lbnRyaWVzLnZhbHVlcygpOlxuKyAgICAgICAgdmFsID0gZW50cnkudXNlcl92YWx1ZSgpXG4rICAgICAgICBjX25hbWUgPSBlbnRyeS5jX25hbWVcbisgICAgICAgIGN3LnAoZicjaWYgZGVmaW5lZCh7Y19uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3tjX25hbWV9KScpXG4rICAgICAgICBjdy5wKGYnWU5MX0VOVU1fRU5UUlkoXCJ7ZW50cnkubmFtZX1cIiwge2NfbmFtZX0sIHt2YWx9KSwnKVxuKyAgICAgICAgY3cucCgnI2Vsc2UnKVxuKyAgICAgICAgY3cucChmJ1lOTF9FTlVNX0JBRF9FTlRSWShcIntlbnRyeS5uYW1lfVwiLCB7Y19uYW1lfSwge3ZhbH0pLCcpXG4rICAgICAgICBjdy5wKCcjZW5kaWYnKVxuKyAgICBjdy5wKGYnI2lmIGRlZmluZWQoe21heF9uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3ttYXhfbmFtZX0pJylcbisgICAgY3cucChmJ1lOTF9FTlVNX1NFTlRJTkFMKHttYXhfbmFtZX0sIHt2YWx9KSwnKVxuKyAgICBjdy5wKCcjZW5kaWYnKVxuKyAgICBjdy5wKCd7fSwnKVxuKyAgICBjdy5ibG9ja19lbmQobGluZT0nOycpXG4rICAgIGN3Lm5sKClcbisgICAgZW51bV90eXBlID0gZW51bVsndHlwZSddLnVwcGVyKClcbisgICAgcmV0dXJuIGYne3tcIntlbnVtLm5hbWV9XCIsIFx1MDAyNnttYXBfbmFtZX1bMF0sIFlOTF97ZW51bV90eXBlfX19LCdcbitcbitcbiBkZWYgcHV0X2xvY2FsX3ZhcnMoc3RydWN0KTpcbiAgICAgbG9jYWxfdmFycyA9IFtdXG4gICAgIGhhc19hcnJheSA9IEZhbHNlXG5AQCAtMzQ2Miw2ICszNDg4LDcgQEAgZGVmIG1haW4oKTpcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zcGVjJywgZGVzdD0nc3BlYycsIHR5cGU9c3RyLCByZXF1aXJlZD1UcnVlKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGRlc3Q9J2hlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9Tm9uZSlcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zb3VyY2UnLCBkZXN0PSdoZWFkZXInLCBhY3Rpb249J3N0b3JlX2ZhbHNlJylcbisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1saW50ZXInLCBkZXN0PSdsaW50ZXInLCBhY3Rpb249J3N0b3JlX3RydWUnKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVzZXItaGVhZGVyJywgbmFyZ3M9JysnLCBkZWZhdWx0PVtdKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNtcC1vdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PU5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRG8gbm90IG92ZXJ3cml0ZSB0aGUgb3V0cHV0IGZpbGUgaWYgdGhlIG5ldyBvdXRwdXQgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbGQnKVxuQEAgLTM0NzAsOCArMzQ5NywxMCBAQCBkZWYgbWFpbigpOlxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZ1bmN0aW9uLXByZWZpeCcsIGRlc3Q9J2ZuX3ByZWZpeCcsIHR5cGU9c3RyKVxuICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKVxuIFxuKyAgICBpZiBhcmdzLmxpbnRlcjpcbisgICAgICAgIGFyZ3MuaGVhZGVyID0gRmFsc2VcbiAgICAgaWYgYXJncy5oZWFkZXIgaXMgTm9uZTpcbi0gICAgICAgIHBhcnNlci5lcnJvcihcIi0taGVhZGVyIG9yIC0tc291cmNlIGlzIHJlcXVpcmVkXCIpXG4rICAgICAgICBwYXJzZXIuZXJyb3IoXCItLWhlYWRlciwgLS1zb3VyY2Ugb3IgLS1saW50ZXIgaXMgcmVxdWlyZWRcIilcbiBcbiAgICAgZXhjbHVkZV9vcHMgPSBbcmUuY29tcGlsZShleHByKSBmb3IgZXhwciBpbiBhcmdzLmV4Y2x1ZGVfb3BdXG4gXG5AQCAtMzQ5NCwxNyArMzUyMywxOSBAQCBkZWYgbWFpbigpOlxuICAgICAgICAgY3cucChmJy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiB7cGFyc2VkLmxpY2Vuc2V9JylcbiAgICAgY3cucChcIi8qIERvIG5vdCBlZGl0IGRpcmVjdGx5LCBhdXRvLWdlbmVyYXRlZCBmcm9tOiAqL1wiKVxuICAgICBjdy5wKGZcIi8qXFx0e3NwZWNfa2VybmVsfSAqL1wiKVxuLSAgICBjdy5wKGZcIi8qIFlOTC1HRU4ge2FyZ3MubW9kZX0geydoZWFkZXInIGlmIGFyZ3MuaGVhZGVyIGVsc2UgJ3NvdXJjZSd9ICovXCIpXG4tICAgIGlmIGFyZ3MuZXhjbHVkZV9vcCBvciBhcmdzLnVzZXJfaGVhZGVyIG9yIGFyZ3MuZm5fcHJlZml4OlxuLSAgICAgICAgbGluZSA9ICcnXG4tICAgICAgICBpZiBhcmdzLnVzZXJfaGVhZGVyOlxuLSAgICAgICAgICAgIGxpbmUgKz0gJyAtLXVzZXItaGVhZGVyICcuam9pbihbJyddICsgYXJncy51c2VyX2hlYWRlcilcbi0gICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDpcbi0gICAgICAgICAgICBsaW5lICs9ICcgLS1leGNsdWRlLW9wICcuam9pbihbJyddICsgYXJncy5leGNsdWRlX29wKVxuLSAgICAgICAgaWYgYXJncy5mbl9wcmVmaXg6XG4tICAgICAgICAgICAgbGluZSArPSBmJyAtLWZ1bmN0aW9uLXByZWZpeCB7YXJncy5mbl9wcmVmaXh9J1xuLSAgICAgICAgY3cucChmJy8qIFlOTC1BUkd7bGluZX0gKi8nKVxuLSAgICBjdy5wKCcvKiBUbyByZWdlbmVyYXRlIHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8nKVxuKyAgICBpZiBub3QgYXJncy5saW50ZXI6XG4rICAgICAgICB5bmxfYXJnID0gJ2hlYWRlcicgaWYgYXJncy5oZWFkZXIgZWxzZSAnc291cmNlJ1xuKyAgICAgICAgY3cucChmXCIvKiBZTkwtR0VOIHthcmdzLm1vZGV9IHt5bmxfYXJnfSAqL1wiKVxuKyAgICAgICAgaWYgYXJncy5leGNsdWRlX29wIG9yIGFyZ3MudXNlcl9oZWFkZXIgb3IgYXJncy5mbl9wcmVmaXg6XG4rICAgICAgICAgICAgbGluZSA9ICcnXG4rICAgICAgICAgICAgaWYgYXJncy51c2VyX2hlYWRlcjpcbisgICAgICAgICAgICAgICAgbGluZSArPSAnIC0tdXNlci1oZWFkZXIgJy5qb2luKFsnJ10gKyBhcmdzLnVzZXJfaGVhZGVyKVxuKyAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDpcbisgICAgICAgICAgICAgICAgbGluZSArPSAnIC0tZXhjbHVkZS1vcCAnLmpvaW4oWycnXSArIGFyZ3MuZXhjbHVkZV9vcClcbisgICAgICAgICAgICBpZiBhcmdzLmZuX3ByZWZpeDpcbisgICAgICAgICAgICAgICAgbGluZSArPSBmJyAtLWZ1bmN0aW9uLXByZWZpeCB7YXJncy5mbl9wcmVmaXh9J1xuKyAgICAgICAgICAgIGN3LnAoZicvKiBZTkwtQVJHe2xpbmV9ICovJylcbisgICAgICAgIGN3LnAoJy8qIFRvIHJlZ2VuZXJhdGUgcnVuOiB0b29scy9uZXQveW5sL3lubC1yZWdlbi5zaCAqLycpXG4gICAgIGN3Lm5sKClcbiBcbiAgICAgaWYgYXJncy5tb2RlID09ICd1YXBpJzpcbkBAIC0zNTM5LDYgKzM1NzAsOCBAQCBkZWYgbWFpbigpOlxuICAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2UnKVxuICAgICAgICAgICAgIGlmIGZhbWlseV9jb250YWluc19iaXRmaWVsZDMyKHBhcnNlZCk6XG4gICAgICAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGxpbmsuaFx1MDAzZScpXG4rICAgICAgICBlbGlmIGFyZ3MubGludGVyOlxuKyAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFwiLi4vbGludGVyL2xpbnRlci5oXCInKVxuICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICBjdy5wKGYnI2luY2x1ZGUgXCJ7aGRyX2ZpbGV9XCInKVxuICAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFwieW5sLmhcIicpXG5AQCAtMzY5MCw2ICszNzIzLDIxIEBAIGRlZiBtYWluKCk6XG4gICAgICAgICAgICAgICAgICAgICBjdy5ubCgpXG4gICAgICAgICAgICAgICAgICAgICBwcmludF93cmFwcGVkX3R5cGUocmkpXG4gICAgICAgICAgICAgY3cubmwoKVxuKyAgICAgICAgZWxpZiBhcmdzLmxpbnRlcjpcbisgICAgICAgICAgICBlbnVtX3NldHMgPSBbXVxuKyAgICAgICAgICAgIGZvciBuYW1lLCBjb25zdCBpbiBwYXJzZWQuY29uc3RzLml0ZW1zKCk6XG4rICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29uc3QsIEVudW1TZXQpOlxuKyAgICAgICAgICAgICAgICAgICAgZW51bV9zZXRzLmFwcGVuZChwdXRfZW51bV90b19saW50ZXIocGFyc2VkLCBjdywgY29uc3QpKVxuKyAgICAgICAgICAgIGN3Lm5sKClcbisgICAgICAgICAgICBjdy5ibG9ja19zdGFydChsaW5lPVwic3RhdGljIGNvbnN0IHN0cnVjdCBlbnVtX3NldCBlbnVtc1tdID1cIilcbisgICAgICAgICAgICBmb3IgZW51bV9zZXQgaW4gZW51bV9zZXRzOlxuKyAgICAgICAgICAgICAgICBjdy5wKGVudW1fc2V0KVxuKyAgICAgICAgICAgIGN3LnAoJ3t9LCcpXG4rICAgICAgICAgICAgY3cuYmxvY2tfZW5kKGxpbmU9JzsnKVxuKyAgICAgICAgICAgIGN3Lm5sKClcbisgICAgICAgICAgICBjdy53cml0ZV9mdW5jKCdpbnQnLCAnbWFpbicsXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPVsnY29uc3QgaW50IGFyZ2MnLCAnY29uc3QgY2hhciAqKmFyZ3YnXSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk9WydyZXR1cm4gbGludGVyX3J1bihhcmdjLCBhcmd2LCBcdTAwMjZlbnVtc1swXSk7J10pXG4gICAgICAgICBlbHNlOlxuICAgICAgICAgICAgIGN3LnAoJy8qIEVudW1zICovJylcbiAgICAgICAgICAgICBwdXRfb3BfbmFtZShwYXJzZWQsIGN3KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NTI6MjcuNjAwODA2NDU5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ2MDg4MTIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBGb2N1cyBvbiBOZXRsaW5rIFNwZWNzIGFuZCBVQVBJIEhlYWRlcnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgcHJpbWFyaWx5IGZvY3VzZWQgb24gdXBkYXRpbmcgdGhlIHVzZXItc3BhY2UgQVBJIChVQVBJKSBkZWZpbml0aW9ucywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gTmV0bGluayBhbmQgdGhlIHVuZGVybHlpbmcgaGVhZGVyIGZpbGVzLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIHRoZSBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2AgZGlyZWN0b3J5LCB3aGljaCBpcyB3aGVyZSB0aGUgaGVhcnQgb2YgTmV0bGluaydzIHNwZWNpZmljYXRpb24gbGllcy5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byB0aGUgWUFNTCBmaWxlcy4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIG9yIG1vZGlmeWluZyBzcGVjaWZpY2F0aW9ucyBmb3IgYGNvbm50cmFja2AsIGBuZnRhYmxlc2AsIGFuZCBgcnQtbGlua2Agd2l0aGluIHRoZSBOZXRsaW5rIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aG9zZSBZQU1MIGNoYW5nZXMg4oCTIGZpZWxkIG5hbWVzLCBwcmVmaXhlcywgaG93IHRoZXkgbWFwIHRvIGtlcm5lbCBzdHJ1Y3R1cmVzLCBhbmQgc28gb24uXG5cblRoZSBgcnQtbGlua2AgdXBkYXRlcyBhcmUgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGJlY2F1c2UgdGhleSBsaWtlbHkgc2lnbmFsIGltcHJvdmVtZW50cyB0byB0aGUgcm91dGluZyB0YWJsZSBhbmQgbGluayBtYW5hZ2VtZW50IEFQSXMsIHdoaWNoIGFyZSBhbHdheXMgY3JpdGljYWwuIEkgbmVlZCB0byBzZWUgaWYgdGhlc2Ugc3BlYyBtb2RpZmljYXRpb25zIHJlZmxlY3QgbmV3IGZlYXR1cmVzLCBidWcgZml4ZXMsIG9yIHNpbXBseSBjbGFyaWZpY2F0aW9ucyBhbmQgYmV0dGVyIG9yZ2FuaXphdGlvbi5cblxuVGhlbiB0aGVyZSdzIHRoZSBgaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaGAgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGluY2x1ZGUgZ3VhcmQgdXBkYXRlLCBjaGFuZ2luZyB0aGUgZGVmaW5lIG5hbWUgZnJvbSBgX0xJTlVYX1NOTVBfSGAgdG8gYF9VQVBJX0xJTlVYX1NOTVBfSGAuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBlbnN1cmluZyB0aGVzZSB1c2VyLXNwYWNlIGhlYWRlcnMgZG9uJ3QgY29sbGlkZSB3aXRoIGludGVybmFsIGtlcm5lbCBkZWZpbml0aW9ucyBvciBvdGhlciBVQVBJIGNvbXBvbmVudHMuIEkgd2FudCB0byBjaGVjayBpZiB0aGUgY29ycmVzcG9uZGluZyBgaW5jbHVkZS9saW51eC9zbm1wLmhgIGV4aXN0cyB0byBiZSBzdXJlIHdlIGFyZSBub3QgZGVwcmVjYXRpbmcgaXQuXG5cbkZpbmFsbHksIHRoZSBgdG9vbHMvbmV0L3lubC9gIGRpcmVjdG9yeSBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHNvbWUgc29ydCBvZiBjb2RlIGdlbmVyYXRpb24gYW5kIGxpbnRpbmcgcHJvY2VzcywgZXNwZWNpYWxseSBhcm91bmQgdGhlIE5ldGxpbmsgZGVmaW5pdGlvbnMuIEkgc2VlIGFkZGl0aW9ucyBmb3IgbGludGVyIGlnbm9yZXMsIHRhcmdldHMsIGEgbmV3IHNoZWxsIHNjcmlwdCAoYGdlbi1oLnNoYCksIGEgaGVhZGVyIChgbGludGVyLmhgKSwgYW5kIFB5dGhvbiBjb2RlIHVwZGF0ZXMuIFRoaXMgbGlrZWx5IGF1dG9tYXRlcyB2YWxpZGF0aW9uIG9mIE5ldGxpbmsgc3BlY2lmaWNhdGlvbnMgYW5kL29yIGdlbmVyYXRlcyBDIGNvZGUgYmFzZWQgb24gdGhvc2Ugc3BlY2lmaWNhdGlvbnMuIEl0J3MgYSBuaWNlIGltcHJvdmVtZW50IGZvciBtYWludGFpbmFiaWxpdHkuIEkgd2FudCB0byBsb29rIG1vcmUgaW50byB0aGlzLCBwYXJ0aWN1bGFybHkgdGhlIFB5dGhvbiBjb2RlLCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBsaW50ZXIgZnVuY3Rpb25zLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYHJ0LWxpbmsueWFtbGAgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgbmF0dXJlIG9mIHRoZSB1cGRhdGVzLCBmb2xsb3dlZCBieSB0aGUgbGludGVyIGNvZGUgdG8gc2VlIGhvdyBpdCB3b3Jrcy4gSSdsbCBuZWVkIHRvIHVzZSB0b29scyB0byB2ZXJpZnkgYW5kIHVuZGVyc3RhbmQgdGhlc2UgZmlsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzUzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NTI6MzMuMDYxNjg5NzY3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTA1MTkyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX0xJTlVYX1NOTVBfSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLTctXFxuaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaDo4OiNpZm5kZWYgX1VBUElfTElOVVhfU05NUF9IXFxuaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaDo5OiNkZWZpbmUgX1VBUElfTElOVVhfU05NUF9IXFxuaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaC0xMC1cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg9MzUyPWVudW1cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmgtMzc0LVxcbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg6Mzc1OiNlbmRpZlxcdC8qIF9VQVBJX0xJTlVYX1NOTVBfSCAqL1xcbi0tXFxudG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzPTQzPUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0xJTktfSCxpZl9saW5rLmgpIFxcXFxcXG4tLVxcbnRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcy00OS1cXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX1ZMQU5fSF8saWZfdmxhbi5oKSBcXFxcXFxudG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzOjUwOlxcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfU05NUF9ILHNubXAuaCkgXFxcXFxcbnRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcy01MS1cXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0RQTExfSCxkcGxsLmgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjUyOjM1LjI1MjIxMzIwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3NjUxNzQwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNOTVAgSGVhZGVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3lzdGVtIGhhbmRsZXMgU05NUC4gTXkgZmlyc3Qgc3RlcCBpcyB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGV4aXN0ZW5jZSBhbmQgY29udGVudHMgb2YgdGhlIGNvcmUgaGVhZGVyIGZpbGUuIEknbSBnb2luZyB0byBjaGVjayBmb3IgYGluY2x1ZGUvbGludXgvc25tcC5oYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgZnVuZGFtZW50YWwgZGVmaW5pdGlvbnMsIHN0cnVjdHVyZXMsIGFuZCBwb3NzaWJseSBldmVuIHNvbWUgYmFzaWMgZnVuY3Rpb24gZGVjbGFyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIExpbnV4IGtlcm5lbCdzIFNOTVAgaW1wbGVtZW50YXRpb24uIEtub3dpbmcgaXRzIHByZXNlbmNlIChvciBhYnNlbmNlKSBwcm92aWRlcyBhIGNyaXRpY2FsIHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFyY2hpdGVjdHVyZS4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgZXhpc3RpbmcgY29kZSBoYXMgaXRzIG93biBjdXN0b20gZXh0ZW5zaW9ucywgb3IgbGV2ZXJhZ2VzIHRoZSBzdGFuZGFyZCBTTk1QIGludGVyZmFjZS4gVGhhdCBoZWFkZXIgZmlsZSBpcyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTcwNiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjUyOjM3LjAxNzM5MTQ5NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1OTY0MjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNubXBcXFxcLmhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NTI6MzcuMTUyOTk4MjkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU4MTc1NDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBjb25zdWx0IFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zIOKAkyB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlbGV2YW50IGNhdGVnb3JpZXMgYXJlIHRob3NlIHRoYXQgZG9uJ3QgaW52b2x2ZSBrZXJuZWwgZXhlY3V0YWJsZSBsb2dpYyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIGNoYW5nZXMgdG8gdXNlci1zcGFjZSB0b29scywgYW5kIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcuXG5cbk5vdywgSSdsbCBnbyB0aHJvdWdoIHRoZSBkaWZmIGZpbGUgYnkgZmlsZS4gSSBzZWU6XG5cbjEuICBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sYCDigJMgKipEb2N1bWVudGF0aW9uKipcbjIuICBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxgIOKAkyAqKkRvY3VtZW50YXRpb24qKlxuMy4gIGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sYCDigJMgKipEb2N1bWVudGF0aW9uKipcbjQuICBgaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaGAg4oCTIFRoaXMgaXMgYSBoZWFkZXIgZmlsZSwgYnV0IGl0J3MgYSBzaW1wbGUgYCNpZm5kZWZgIGd1YXJkIGNoYW5nZS4gTm8gYWN0dWFsIGV4ZWN1dGFibGUgY29kZSwgZGF0YSBzdHJ1Y3R1cmVzLCBvciBkZWZpbml0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQuICoqSGVhZGVyIEd1YXJkIENoYW5nZSoqXG41LiAgYHRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwc2Ag4oCTICoqdG9vbHMvKipcbjYuICBgdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZWAg4oCTICoqdG9vbHMvKipcbjcuICBgdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGVgIOKAkyAqKnRvb2xzLyoqXG44LiAgYHRvb2xzL25ldC95bmwvbGludGVyL2dlbi1oLnNoYCDigJMgKip0b29scy8qKlxuOS4gIGB0b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaGAg4oCTICoqdG9vbHMvKipcbjEwLiBgdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlgIOKAkyAqKnRvb2xzLyoqXG5cbkFuYWx5emluZyB0aGUgZGlmZiwgSSBjYW4gY29uZmlybSB0aGF0IGFsbCB0aGUgY2hhbmdlcyBmYWxsIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3JpZXMgSSdtIHN1cHBvc2VkIHRvIGlnbm9yZS4gSXQncyBkb2N1bWVudGF0aW9uLCB0b29scyAoWU5MIG5ldGxpbmsgdG9vbC9saW50ZXIgc3VwcG9ydCksIGFuZCBhIHRyaXZpYWwgaGVhZGVyIGd1YXJkIHJlbmFtZS4gTm8gbW9kaWZpY2F0aW9ucyBhZmZlY3QgdGhlIGtlcm5lbCdzIGV4ZWN1dGFibGUgbG9naWMsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBvdmVyYWxsIGJlaGF2aW9yLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBjcml0ZXJpYSBkZWZpbmVkLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIHNldCB0byBgZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjazpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZSAtICoqQ2hlY2tlZCoqXG4qICAgYEZvY3VzU3ltYm9sc2A6IFxcWyBdIC0gKipJbXBsaWNpdGx5IEVtcHR5KipcbiogICBgRW5hYmxlQ29uZmlnc2A6IFxcWyBdIC0gKipJbXBsaWNpdGx5IEVtcHR5KipcbiogICBgUmVhc29uaW5nYDogQ29uY2lzZSBleHBsYW5hdGlvbiwgd2hpY2ggSSd2ZSBmb3JtdWxhdGVkLiAtICoqQ2hlY2tlZCoqXG5cbldpdGggdGhhdCwgSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50IGFuZCByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTE4LCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjUyOjQxLjczNDc1NTQ4M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIG1vZGlmaWVzIGRvY3VtZW50YXRpb24gKFlBTUwgc3BlY3MgaW4gRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzLyksIHVzZXItc3BhY2UgdG9vbGluZy9saW50ZXJzICh0b29scy9uZXQveW5sLyksIGFuZCBhbiBpbmNsdWRlIGd1YXJkIGluIGluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmguIE5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBtb2RpZmllcyBkb2N1bWVudGF0aW9uIChZQU1MIHNwZWNzIGluIERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy8pLCB1c2VyLXNwYWNlIHRvb2xpbmcvbGludGVycyAodG9vbHMvbmV0L3lubC8pLCBhbmQgYW4gaW5jbHVkZSBndWFyZCBpbiBpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLiBObyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo1Mjo0MS43MzQ3ODM2ODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8p6l[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 22:50:03 +0000 UTC FinishedAt: 2026-09-10 22:52:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG1vZGlmaWVzIGRvY3VtZW50YXRpb24gKFlBTUwgc3BlY3MgaW4gRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzLyksIHVzZXItc3BhY2UgdG9vbGluZy9saW50ZXJzICh0b29scy9uZXQveW5sLyksIGFuZCBhbiBpbmNsdWRlIGd1YXJkIGluIGluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmguIE5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjI6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZDEwYmUyZjAwMzlkZTE5NThiMmI1NWJiMDJhNDVhMTIyNWFhMWZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NTI6MjYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sXG5pbmRleCBiMWViMTAyYWI4NDMyLi41NDNkY2RkYjA0NjQ3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcbkBAIC0yLDYgJiM0MzsyLDcgQEBcbiAtLS1cbiBuYW1lOiBjb25udHJhY2tcbiBwcm90b2NvbDogbmV0bGluay1yYXdcbiYjNDM7dWFwaS1oZWFkZXI6IGxpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcbiBwcm90b251bTogMTJcbiBcbiBkb2M6IFx1MDAzZS1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXG5pbmRleCAyMWVkZjNkMjVmMzRiLi43NmY2OWVkODJhMjRkIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXG5AQCAtMiw2ICYjNDM7Miw3IEBAXG4gLS0tXG4gbmFtZTogbmZ0YWJsZXNcbiBwcm90b2NvbDogbmV0bGluay1yYXdcbiYjNDM7dWFwaS1oZWFkZXI6IGxpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFxuIHByb3RvbnVtOiAxMlxuIFxuIGRvYzogXHUwMDNlLVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sXG5pbmRleCA2MWViYjlhMmJhZDUxLi5mZTUyZDUwOGQ2MDc1IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxuQEAgLTI1LDE3ICYjNDM7MjUsMTcgQEAgZGVmaW5pdGlvbnM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogbG9vcGJhY2tcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBwb2ludC10by1wb2ludFxuJiM0MzsgICAgICAgIG5hbWU6IHBvaW50b3BvaW50XG4gICAgICAgLVxuLSAgICAgICAgbmFtZTogbm8tdHJhaWxlcnNcbiYjNDM7ICAgICAgICBuYW1lOiBub3RyYWlsZXJzXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcnVubmluZ1xuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IG5vLWFycFxuJiM0MzsgICAgICAgIG5hbWU6IG5vYXJwXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcHJvbWlzY1xuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IGFsbC1tdWx0aVxuJiM0MzsgICAgICAgIG5hbWU6IGFsbG11bHRpXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogbWFzdGVyXG4gICAgICAgLVxuQEAgLTQ1LDcgJiM0Mzs0NSw3IEBAIGRlZmluaXRpb25zOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHBvcnRzZWxcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBhdXRvLW1lZGlhXG4mIzQzOyAgICAgICAgbmFtZTogYXV0b21lZGlhXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHluYW1pY1xuICAgICAgIC1cbkBAIC01OCw2ICYjNDM7NTgsNyBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogdmxhbi1wcm90b2NvbHNcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogZXRoLXAtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogODAyMXFcbkBAIC0zMDUsMTAgJiM0MzszMDYsMTMgQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IGlwdjQtZGV2Y29uZlxuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogaXB2NC1kZXZjb25mLVxuJiM0MzsgICAgaGVhZGVyOiBsaW51eC9pcC5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBmb3J3YXJkaW5nXG4mIzQzOyAgICAgICAgdmFsdWU6IDFcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBtYy1mb3J3YXJkaW5nXG4gICAgICAgLVxuQEAgLTM3Niw2ICYjNDM7MzgwLDggQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IGlwdjYtZGV2Y29uZlxuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogZGV2Y29uZi1cbiYjNDM7ICAgIGhlYWRlcjogbGludXgvaXB2Ni5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG5AQCAtNTAxLDYgJiM0Mzs1MDcsOCBAQCBkZWZpbml0aW9uczpcbiAgIC1cbiAgICAgbmFtZTogaWZsYS1pY21wNi1zdGF0c1xuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogaWNtcDYtbWliLVxuJiM0MzsgICAgaGVhZGVyOiBsaW51eC9zbm1wLmhcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnRyaWVzOlxuICAgICAgIC1cbkBAIC01MjAsNiAmIzQzOzUyOCw4IEBAIGRlZmluaXRpb25zOlxuICAgLVxuICAgICBuYW1lOiBpZmxhLWluZXQ2LXN0YXRzXG4gICAgIGVudW0tbmFtZTpcbiYjNDM7ICAgIG5hbWUtcHJlZml4OiBpcHN0YXRzLW1pYi1cbiYjNDM7ICAgIGhlYWRlcjogbGludXgvc25tcC5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG5AQCAtNTMxLDExICYjNDM7NTQxLDIxIEBAIGRlZmluaXRpb25zOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGluZGVsaXZlcnNcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBvdXRmb3J3ZGF0YWdyYW1zXG4mIzQzOyAgICAgICAgbmFtZTogbm9lY3Rwa3RzXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBlY3QxcGt0c1xuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZWN0MHBrdHNcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IGNlcGt0c1xuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogb3V0cmVxdWVzdHNcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBvdXRwa3RzXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogb3V0b2N0ZXRzXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBvdXRmb3J3ZGF0YWdyYW1zXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaW5oZHJlcnJvcnNcbiAgICAgICAtXG5AQCAtNTg2LDE0ICYjNDM7NjA2LDYgQEAgZGVmaW5pdGlvbnM6XG4gICAgICAgICBuYW1lOiBvdXRiY2FzdG9jdGV0c1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGNzdW1lcnJvcnNcbi0gICAgICAtXG4tICAgICAgICBuYW1lOiBub2VjdHBrdHNcbi0gICAgICAtXG4tICAgICAgICBuYW1lOiBlY3QxLXBrdHNcbi0gICAgICAtXG4tICAgICAgICBuYW1lOiBlY3QwLXBrdHNcbi0gICAgICAtXG4tICAgICAgICBuYW1lOiBjZXBrdHNcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWFzbS1vdmVybGFwc1xuICAgLSBuYW1lOiBici1ib29sb3B0LW11bHRpXG5AQCAtNjQwLDYgJiM0Mzs2NTIsOCBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogdmxhbi1mbGFnc1xuICAgICB0eXBlOiBmbGFnc1xuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogdmxhbi1mbGFnLVxuJiM0MzsgICAgaGVhZGVyOiBsaW51eC9pZl92bGFuLmhcbiAgICAgZW50cmllczpcbiAgICAgICAtIHJlb3JkZXItaGRyXG4gICAgICAgLSBndnJwXG5AQCAtNzI3LDYgJiM0Mzs3NDEsOCBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogaWZsYS12Zi1saW5rLXN0YXRlLWVudW1cbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogaWZsYS12Zi1saW5rLXN0YXRlLVxuJiM0MzsgICAgaGVhZGVyOiBsaW51eC9pZl9saW5rLmhcbiAgICAgZW50cmllczpcbiAgICAgICAtIGF1dG9cbiAgICAgICAtIGVuYWJsZVxuQEAgLTc5NCw2ICYjNDM7ODEwLDcgQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IHJ0ZXh0LWZpbHRlclxuICAgICB0eXBlOiBmbGFnc1xuICAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBuYW1lLXByZWZpeDogcnRleHQtZmlsdGVyLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gdmZcbiAgICAgICAtIGJydmxhblxuQEAgLTgwNiwxOCAmIzQzOzgyMywyMCBAQCBkZWZpbml0aW9uczpcbiAgIC1cbiAgICAgbmFtZTogbmV0a2l0LXBvbGljeVxuICAgICB0eXBlOiBlbnVtXG4tICAgIGVudW0tbmFtZTpcbiYjNDM7ICAgIGVudW0tbmFtZTogbmV0a2l0LWFjdGlvblxuJiM0MzsgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBmb3J3YXJkXG4mIzQzOyAgICAgICAgbmFtZTogcGFzc1xuICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBibGFja2hvbGVcbiYjNDM7ICAgICAgICBuYW1lOiBkcm9wXG4gICAgICAgICB2YWx1ZTogMlxuICAgLVxuICAgICBuYW1lOiBuZXRraXQtbW9kZVxuICAgICB0eXBlOiBlbnVtXG4gICAgIGVudW0tbmFtZTogbmV0a2l0LW1vZGVcbiYjNDM7ICAgIG5hbWUtcHJlZml4OiBuZXRraXQtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLSBuYW1lOiBsMlxuICAgICAgIC0gbmFtZTogbDNcbkBAIC04MjUsNyAmIzQzOzg0NCw4IEBAIGRlZmluaXRpb25zOlxuICAgLVxuICAgICBuYW1lOiBuZXRraXQtc2NydWJcbiAgICAgdHlwZTogZW51bVxuLSAgICBlbnVtLW5hbWU6XG4mIzQzOyAgICBlbnVtLW5hbWU6IG5ldGtpdC1zY3J1YlxuJiM0MzsgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1zY3J1Yi1cbiAgICAgZW50cmllczpcbiAgICAgICAtIG5hbWU6IG5vbmVcbiAgICAgICAtIG5hbWU6IGRlZmF1bHRcbkBAIC04MzMsMTMgJiM0Mzs4NTMsMTQgQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IG5ldGtpdC1wYWlyaW5nXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW51bS1uYW1lOiBuZXRraXQtcGFpcmluZ1xuJiM0MzsgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1kZXZpY2UtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLSBuYW1lOiBwYWlyXG4gICAgICAgLSBuYW1lOiBzaW5nbGVcbiAgIC1cbiAgICAgbmFtZTogb3Zwbi1tb2RlXG4gICAgIGVudW0tbmFtZTogb3Zwbi1tb2RlXG4tICAgIG5hbWUtcHJlZml4OiBvdnBuLW1vZGVcbiYjNDM7ICAgIG5hbWUtcHJlZml4OiBvdnBuLW1vZGUtXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtIHAycFxuQEAgLTg0OCw2ICYjNDM7ODY5LDcgQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IGJyLXN0cC1tb2RlXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW51bS1uYW1lOiBici1zdHAtbW9kZVxuJiM0MzsgICAgbmFtZS1wcmVmaXg6IGJyLXN0cC1tb2RlLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gYXV0b1xuICAgICAgIC0gdXNlclxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oXG5pbmRleCA0OWY1NjQwMDkyYTBkLi4yNmJkYWJjNTAyZmVhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaFxuQEAgLTUsOCAmIzQzOzUsOCBAQFxuICAqIEF1dGhvcjogSGlkZWFraSBZT1NISUZVSkkgXHUwMDNjeW9zaGZ1amlAbGludXgtaXB2Ni5vcmdcdTAwM2VcbiAgKi9cbiBcbi0jaWZuZGVmIF9MSU5VWF9TTk1QX0hcbi0jZGVmaW5lIF9MSU5VWF9TTk1QX0hcbiYjNDM7I2lmbmRlZiBfVUFQSV9MSU5VWF9TTk1QX0hcbiYjNDM7I2RlZmluZSBfVUFQSV9MSU5VWF9TTk1QX0hcbiBcbiAvKiBpcHN0YXRzIG1pYiBkZWZpbml0aW9ucyAqL1xuIC8qXG5AQCAtMzcyLDQgJiM0MzszNzIsNCBAQCBlbnVtXG4gXHRfX0xJTlVYX01JQl9UTFNNQVhcbiB9O1xuIFxuLSNlbmRpZlx0LyogX0xJTlVYX1NOTVBfSCAqL1xuJiM0MzsjZW5kaWZcdC8qIF9VQVBJX0xJTlVYX1NOTVBfSCAqL1xuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcyBiL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwc1xuaW5kZXggMjc3MTM3NTMzOWQ5Yy4uOGUxMzZhNWRmODk5MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwc1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXG5AQCAtNDAsOCAmIzQzOzQwLDE1IEBAIENGTEFHU19vdnNfdnBvcnQ6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX09QRU5WU1dJVENIX0gsb3BlbnZzd2l0Y2guaClcbiBDRkxBR1NfcHNwOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX1BTUF9ILHBzcC5oKVxuIENGTEFHU19ydC1hZGRyOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXFxcbiBcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX0lGX0FERFJfSCxpZl9hZGRyLmgpXG4tQ0ZMQUdTX3J0LWxpbms6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxuLVx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9MSU5LX0gsaWZfbGluay5oKVxuJiM0MztDRkxBR1NfcnQtbGluazo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9MSU5LX0gsaWZfbGluay5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSVBfSCxpcC5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfSVBWNl9ILGlwdjYuaCkgXFxcbiYjNDM7XHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0JSSURHRV9ILGlmX2JyaWRnZS5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfSUZfVFVOTkVMX0hfLGlmX3R1bm5lbC5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfVkxBTl9IXyxpZl92bGFuLmgpIFxcXG4mIzQzO1x0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9TTk1QX0gsc25tcC5oKSBcXFxuJiM0MztcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfRFBMTF9ILGRwbGwuaClcbiBDRkxBR1NfcnQtbmVpZ2g6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxuIFx0JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfTkVJR0hCT1VSX0gsbmVpZ2hib3VyLmgpXG4gQ0ZMQUdTX3J0LXJvdXRlOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaClcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZVxuaW5kZXggODU5YTZmYjQ0NmUxNC4uMjBkZDcwY2Q3MDllZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmVcbkBAIC0xLDMgJiM0MzsxLDYgQEBcbiAqLXVzZXIuY1xuICotdXNlci5oXG4mIzQzOyotbGludGVyLmNcbiYjNDM7Ki1saW50ZXIuaFxuJiM0MzsqLWxpbnRlclxuICoucnN0XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZVxuaW5kZXggNWExODYzNDliNWE4Ni4uYmNmN2Y0NTU2MzEzMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZVxuQEAgLTMzLDggJiM0MzszMyw5IEBAIE9CSlM9JChwYXRzdWJzdCAlLCUtdXNlci5vLCR7R0VOU30pXG4gU1BFQ1NfUEFUSFM9JCh3aWxkY2FyZCAkKFNQRUNTX0RJUikvKi55YW1sKVxuIFNQRUNTPSQocGF0c3Vic3QgJChTUEVDU19ESVIpLyUueWFtbCwlLCR7U1BFQ1NfUEFUSFN9KVxuIFJTVFM9JChwYXRzdWJzdCAlLCUucnN0LCR7U1BFQ1N9KVxuJiM0MztMSU5UUz0kKHBhdHN1YnN0ICUsJS1saW50LCR7U1BFQ1N9KVxuIFxuLWFsbDogcHJvdG9zLmEgJChIRFJTKSAkKFNSQ1MpICQoS0hEUlMpICQoS1NSQ1MpICQoVUFQSSkgJChSU1RTKVxuJiM0MzthbGw6IHByb3Rvcy5hICQoSERSUykgJChTUkNTKSAkKEtIRFJTKSAkKEtTUkNTKSAkKFVBUEkpICQoUlNUUykgJChMSU5UUylcbiBcbiBwcm90b3MuYTogJChPQkpTKVxuIFx0QGVjaG8gLWUgXCYjMzQ7XFx0QVIgJEBcJiMzNDtcbkBAIC01NiwxMSAmIzQzOzU3LDI5IEBAIHByb3Rvcy5hOiAkKE9CSlMpXG4gXHRAZWNobyAtZSBcJiMzNDtcXHRHRU5fUlNUICRAXCYjMzQ7XG4gXHRAJChUT09MX1JTVCkgLW8gJEAgLWkgJFx1MDAzY1xuIFxuJiM0MzslLWxpbnRlci5jOiAkKFNQRUNTX0RJUikvJS55YW1sICQoVE9PTCkgLi4vbGludGVyL2xpbnRlci5oXG4mIzQzO1x0QGVjaG8gLWUgXCYjMzQ7XFx0R0VOICRAXCYjMzQ7XG4mIzQzO1x0QCQoVE9PTCkgLS1tb2RlIHVzZXIgLS1saW50ZXIgLS1zcGVjICRcdTAwM2MgLW8gJEAgJChZTkxfR0VOX0FSR18kKilcbiYjNDM7XG4mIzQzOyUtbGludGVyLmg6ICUtbGludGVyLmMgLi4vbGludGVyL2dlbi1oLnNoXG4mIzQzO1x0QGVjaG8gLWUgXCYjMzQ7XFx0R0VOICRAXCYjMzQ7XG4mIzQzO1x0QC4uL2xpbnRlci9nZW4taC5zaCAkKENGTEFHUykgJChDRkxBR1NfJCopIFx1MDAzYyAkXHUwMDNjIFx1MDAzZSAkQFxuJiM0MztcbiYjNDM7JS1saW50ZXI6ICUtbGludGVyLmMgJS1saW50ZXIuaCAuLi9saW50ZXIvbGludGVyLmhcbiYjNDM7XHRAZWNobyAtZSBcJiMzNDtcXHRDQyAkQFwmIzM0O1xuJiM0MztcdEAkKENDKSAkKENGTEFHUykgJChDRkxBR1NfJCopIC1pbmNsdWRlICQqLWxpbnRlci5oIC1vICRAICRcdTAwM2NcbiYjNDM7XG4mIzQzOyUtbGludDogJS1saW50ZXJcbiYjNDM7XHRAZWNobyAtZSBcJiMzNDtcXHRMSU5UICRAXCYjMzQ7XG4mIzQzO1x0QC4vJFx1MDAzYyAkKlxuJiM0MztcbiYjNDM7bGludDogJChMSU5UUylcbiYjNDM7XG4gY2xlYW46XG4gXHRybSAtZiAqLm9cbiBcbiBkaXN0Y2xlYW46IGNsZWFuXG4tXHRybSAtZiAqLmMgKi5oICouYSAqLnJzdFxuJiM0MztcdHJtIC1mICouYyAqLmggKi5hICoucnN0ICotbGludGVyXG4gXG4gcmVnZW46XG4gXHRALi4veW5sLXJlZ2VuLnNoXG5AQCAtNjgsNyAmIzQzOzg3LDcgQEAgcmVnZW46XG4gaW5zdGFsbC1oZWFkZXJzOiAkKEhEUlMpXG4gXHRAZWNobyAtZSBcJiMzNDtcXHRJTlNUQUxMIGdlbmVyYXRlZCBoZWFkZXJzXCYjMzQ7XG4gXHRAJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS95bmxcbi1cdEAkKElOU1RBTEwpIC1tIDA2NDQgKi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC9cbiYjNDM7XHRAJChJTlNUQUxMKSAtbSAwNjQ0ICQoS0hEUlMpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC9cbiBcbiBpbnN0YWxsLXJzdHM6ICQoUlNUUylcbiBcdEBlY2hvIC1lIFwmIzM0O1xcdElOU1RBTEwgZ2VuZXJhdGVkIGRvY3NcJiMzNDtcbkBAIC04NCw1ICYjNDM7MTAzLDUgQEAgaW5zdGFsbC1zcGVjczpcbiBcbiBpbnN0YWxsOiBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcbiBcbi0uUEhPTlk6IGFsbCBjbGVhbiBkaXN0Y2xlYW4gcmVnZW4gaW5zdGFsbCBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcbiYjNDM7LlBIT05ZOiBhbGwgY2xlYW4gZGlzdGNsZWFuIHJlZ2VuIGluc3RhbGwgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzIGxpbnRcbiAuREVGQVVMVF9HT0FMOiBhbGxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2xpbnRlci9nZW4taC5zaCBiL3Rvb2xzL25ldC95bmwvbGludGVyL2dlbi1oLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMjQ3NDkzNjAwMDM0ZFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2hcbkBAIC0wLDAgJiM0MzsxLDIzIEBAXG4mIzQzOyMhL2Jpbi9zaFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO1xuJiM0MzsjIFVzYWdlOiAuL2dlbi1oLnNoICRDRkxBR1MgXHUwMDNjIGluLmMgXHUwMDNlIG91dC5oXG4mIzQzOyNcbiYjNDM7IyBFeHRyYWN0IHZhbGlkIHN5bWJvbHMsIGFuZCBkZWZpbmUgdGhhdCB0aGV5IGFyZSBhdmFpbGFibGUuIFRoaXMgaXMgYVxuJiM0MzsjIHdvcmthcm91bmQsIHRvIGF2b2lkIGNvbXBpbGUgZmFpbHVyZXMgZHVlIHRvIG5vbi1leGlzdGVudCBlbnVtIG1lbWJlcnMuXG4mIzQzOyNcbiYjNDM7IyBDYXBpdGFsaXplZCBrZXl3b3JkcyBmb3VuZCBpbiB0aGUgcHJlcHJvY2Vzc29yIG91dHB1dCwgYXJlIG1vc3RseSBlbnVtXG4mIzQzOyMgbWVtYmVycy5cbiYjNDM7I1xuJiM0MzsjIEFzIGFuIGV4YW1wbGUsIGV4aXN0ZW5jZSBvZiBGT08gY2FuIGJlIGNoZWNrZWQgd2l0aDpcbiYjNDM7IyAgICNpZiBkZWZpbmVkKEZPTykgfHwgZGVmaW5lZChMSU5URVJfSEFTX0ZPTylcbiYjNDM7IyB0aHVzIGNoZWNraW5nIGZvciBGT08gZWl0aGVyIGFzIGEgbWFjcm8gb3IgYXMgYW4gZW51bSBtZW1iZXJzLlxuJiM0MztcbiYjNDM7c2V0IC1lXG4mIzQzO1xuJiM0MztlY2hvICYjMzk7LyogVGhpcyBpcyBhbiBhdXRvLWdlbmVyYXRlZCBmaWxlICovJiMzOTtcbiYjNDM7Z3JlcCAmIzM5O14jaW5jbHVkZSBcdTAwM2NsaW51eC8mIzM5OyB8XG4mIzQzO1x0Y3BwIC14IGMgXCYjMzQ7JEBcJiMzNDsgLSB8XG4mIzQzO1x0Z3JlcCAtd28gJiMzOTtbQS1aXVtBLVowLTlfXVxcJiM0MzsmIzM5OyB8XG4mIzQzO1x0c29ydCB8IHVuaXEgfFxuJiM0MztcdHNlZCAtZSAmIzM5O3MvXi8jZGVmaW5lIExJTlRFUl9IQVNfL2cmIzM5O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2xpbnRlci5oIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvbGludGVyLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4wZDFjMjhjOWYyMTQwXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaFxuQEAgLTAsMCAmIzQzOzEsMTUyIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGJvb2wuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IGVudW1fa3Yge1xuJiM0MztcdGNvbnN0IGNoYXIgKm5hbWU7XG4mIzQzO1x0Y29uc3QgbG9uZyBsb25nIHZhbDtcbiYjNDM7XHRjb25zdCBib29sIGlzX3VuZGVmOjE7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZW51bV9lbnRyeSB7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGVudW1fa3YgeW5sO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBlbnVtX2t2IGM7XG4mIzQzO1x0Y29uc3QgYm9vbCBpc19zZW50aW5hbDoxO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7I2RlZmluZSBZTkxfRU5VTV9FTlRSWShZTkxfTkFNRSwgQ19OQU1FLCBZTkxfVkFMVUUpIFxcXG4mIzQzO1x0eyBcXFxuJiM0MztcdFx0LnlubCA9IHsgLm5hbWUgPSBZTkxfTkFNRSwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxuJiM0MztcdFx0LmMgPSB7IC5uYW1lID0gI0NfTkFNRSwgLnZhbCA9IENfTkFNRSB9LCBcXFxuJiM0MztcdH1cbiYjNDM7XG4mIzQzOyNkZWZpbmUgWU5MX0VOVU1fQkFEX0VOVFJZKFlOTF9OQU1FLCBDX05BTUUsIFlOTF9WQUxVRSkgXFxcbiYjNDM7XHR7IFxcXG4mIzQzO1x0XHQueW5sID0geyAubmFtZSA9IFlOTF9OQU1FLCAudmFsID0gWU5MX1ZBTFVFIH0sIFxcXG4mIzQzO1x0XHQuYyA9IHsgLm5hbWUgPSAjQ19OQU1FLCAuaXNfdW5kZWYgPSB0cnVlIH0sIFxcXG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7I2RlZmluZSBZTkxfRU5VTV9TRU5USU5BTChDX05BTUUsIFlOTF9WQUxVRSkgXFxcbiYjNDM7XHR7IFxcXG4mIzQzO1x0XHQueW5sID0geyAubmFtZSA9IFwmIzM0O01BWFwmIzM0OywgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxuJiM0MztcdFx0LmMgPSB7IC5uYW1lID0gI0NfTkFNRSwgLnZhbCA9IENfTkFNRSB9LCBcXFxuJiM0MztcdFx0LmlzX3NlbnRpbmFsID0gdHJ1ZSwgXFxcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztlbnVtIHlubF9lbnVtX3R5cGUge1xuJiM0MztcdFlOTF9FTlVNLFxuJiM0MztcdFlOTF9GTEFHUyxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBlbnVtX3NldCB7XG4mIzQzO1x0Y29uc3QgY2hhciAqbmFtZTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnk7XG4mIzQzO1x0ZW51bSB5bmxfZW51bV90eXBlIHR5cGU7XG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3QgbGludGVyX2N0eCB7XG4mIzQzO1x0aW50IGVycm9ycztcbiYjNDM7XHRpbnQgd2FybmluZ3M7XG4mIzQzO1x0Y29uc3QgY2hhciAqbmFtZTtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgZXJyZihmbXQsIC4uLikgXFxcbiYjNDM7XHRkbyB7IFxcXG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JXM6IEVSUk9SOiBcJiMzNDsgZm10LCBjdHgtXHUwMDNlbmFtZSwgX19WQV9BUkdTX18pOyBcXFxuJiM0MztcdFx0Y3R4LVx1MDAzZWVycm9ycyYjNDM7JiM0Mzs7IFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzOyNkZWZpbmUgd2FybmYoZm10LCAuLi4pIFxcXG4mIzQzO1x0ZG8geyBcXFxuJiM0MztcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0OyVzOiBXQVJOOiBcJiMzNDsgZm10LCBjdHgtXHUwMDNlbmFtZSwgX19WQV9BUkdTX18pOyBcXFxuJiM0MztcdFx0Y3R4LVx1MDAzZXdhcm5pbmdzJiM0MzsmIzQzOzsgXFxcbiYjNDM7XHR9IHdoaWxlICgwKVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBsb25nIGxvbmcgZmluZF9uZXh0X3ZhbHVlKGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXG4mIzQzO1x0XHRcdFx0XHRjb25zdCBsb25nIGxvbmcgbGFzdF92YWwpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKGVzLVx1MDAzZXR5cGUpIHtcbiYjNDM7XHRjYXNlIFlOTF9FTlVNOlxuJiM0MztcdFx0cmV0dXJuIGxhc3RfdmFsICYjNDM7IDE7XG4mIzQzO1x0Y2FzZSBZTkxfRkxBR1M6XG4mIzQzO1x0XHRyZXR1cm4gbGFzdF92YWwgXHUwMDNjXHUwMDNjIDE7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdC8qIHVucmVhY2hhYmxlICovXG4mIzQzO1x0XHRhYm9ydCgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGxpbnRfZW51bV9lbnRyeShzdHJ1Y3QgbGludGVyX2N0eCAqY3R4LFxuJiM0MztcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXG4mIzQzO1x0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5LFxuJiM0MztcdFx0XHRcdCAgIGxvbmcgbG9uZyAqbGFzdF92YWwsIGNvbnN0IGludCBpLFxuJiM0MztcdFx0XHRcdCAgIGNvbnN0IGludCBjbnQpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBsb25nIGxvbmcgdmFsID0gZW50cnktXHUwMDNlYy52YWw7XG4mIzQzO1xuJiM0MztcdGlmIChpIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiB2YWwgIT0gKmxhc3RfdmFsIFx1MDAyNlx1MDAyNiB2YWwgIT0gZmluZF9uZXh0X3ZhbHVlKGVzLCAqbGFzdF92YWwpKVxuJiM0MztcdFx0d2FybmYoXCYjMzQ7JXM6IFBvc3NpYmxlIG1pc3NpbmcgbWVtYmVyIGJlZm9yZSAlcyAoJWxsZCAtXHUwMDNlICVsbGQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgICAgZXMtXHUwMDNlbmFtZSwgZW50cnktXHUwMDNlYy5uYW1lLCAqbGFzdF92YWwsIHZhbCk7XG4mIzQzO1x0Kmxhc3RfdmFsID0gZW50cnktXHUwMDNlYy52YWw7XG4mIzQzO1xuJiM0MztcdGlmIChpID09IGNudCAtIDEgXHUwMDI2XHUwMDI2IHN0cmNtcChlbnRyeS1cdTAwM2V5bmwubmFtZSwgXCYjMzQ7bWF4XCYjMzQ7KSA9PSAwKVxuJiM0MztcdFx0ZXJyZihcJiMzNDslczogU2VudGluYWwgdXNlZCBpbiBZTkwgc3BlY1xcblwmIzM0OywgZXMtXHUwMDNlbmFtZSk7XG4mIzQzO1xuJiM0MztcdGlmIChlbnRyeS1cdTAwM2VjLmlzX3VuZGVmKSB7XG4mIzQzO1x0XHRlcnJmKFwmIzM0OyVzOiAlczogJXMgbm90IGZvdW5kXFxuXCYjMzQ7LCBlcy1cdTAwM2VuYW1lLCBlbnRyeS1cdTAwM2V5bmwubmFtZSxcbiYjNDM7XHRcdCAgICAgZW50cnktXHUwMDNlYy5uYW1lKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChlbnRyeS1cdTAwM2V5bmwudmFsID09IGVudHJ5LVx1MDAzZWMudmFsKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAoZW50cnktXHUwMDNlaXNfc2VudGluYWwpIHtcbiYjNDM7XHRcdGlmIChlcy1cdTAwM2V0eXBlID09IFlOTF9FTlVNIFx1MDAyNlx1MDAyNiBlbnRyeS1cdTAwM2V5bmwudmFsICYjNDM7IDEgPT0gZW50cnktXHUwMDNlYy52YWwpXG4mIzQzO1x0XHRcdHJldHVybjsgLyogZWcuIERFVkNPTkZfTUFYIGlzIHRoZSBzdG9yYWdlIHNpemUgKi9cbiYjNDM7XHRcdHdhcm5mKFwmIzM0OyVzOiBTZW50aW5hbCBtaXNtYXRjaDogJWxsZCAhPSAlbGxkIChMYXN0IFlOTCAhPSAlcylcXG5cJiMzNDssXG4mIzQzO1x0XHQgICAgICBlcy1cdTAwM2VuYW1lLCBlbnRyeS1cdTAwM2V5bmwudmFsLCBlbnRyeS1cdTAwM2VjLnZhbCwgZW50cnktXHUwMDNlYy5uYW1lKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZXJyZihcJiMzNDslczogVmFsdWUgbWlzbWF0Y2g6ICVsbGQgIT0gJWxsZCAoJXMgIT0gJXMpXFxuXCYjMzQ7LCBlcy1cdTAwM2VuYW1lLFxuJiM0MztcdFx0ICAgICBlbnRyeS1cdTAwM2V5bmwudmFsLCBlbnRyeS1cdTAwM2VjLnZhbCwgZW50cnktXHUwMDNleW5sLm5hbWUsXG4mIzQzO1x0XHQgICAgIGVudHJ5LVx1MDAzZWMubmFtZSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgbGludF9lbnVtKHN0cnVjdCBsaW50ZXJfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnkgPSBlcy1cdTAwM2VlbnRyeTtcbiYjNDM7XHRsb25nIGxvbmcgbGFzdF92YWw7XG4mIzQzO1x0aW50IGNudCA9IDA7XG4mIzQzO1x0aW50IGkgPSAwO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAoZW50cnktXHUwMDNleW5sLm5hbWUpIHtcbiYjNDM7XHRcdGlmICghZW50cnktXHUwMDNlaXNfc2VudGluYWwpXG4mIzQzO1x0XHRcdGNudCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRlbnRyeSYjNDM7JiM0Mzs7XG4mIzQzO1x0fVxuJiM0MztcdGVudHJ5ID0gZXMtXHUwMDNlZW50cnk7XG4mIzQzO1xuJiM0MztcdHdoaWxlIChlbnRyeS1cdTAwM2V5bmwubmFtZSlcbiYjNDM7XHRcdGxpbnRfZW51bV9lbnRyeShjdHgsIGVzLCBlbnRyeSYjNDM7JiM0MzssIFx1MDAyNmxhc3RfdmFsLCBpJiM0MzsmIzQzOywgY250KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgbGludGVyX3J1bihjb25zdCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsXG4mIzQzO1x0XHRcdCAgICAgY29uc3Qgc3RydWN0IGVudW1fc2V0ICplcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBsaW50ZXJfY3R4IGN0eCA9IHtcbiYjNDM7XHRcdC5uYW1lID0gYXJndlthcmdjIFx1MDAzZSAxID8gMSA6IDBdLFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdHdoaWxlIChlcy1cdTAwM2VuYW1lKSB7XG4mIzQzO1x0XHRsaW50X2VudW0oXHUwMDI2Y3R4LCBlcyk7XG4mIzQzO1x0XHRlcyYjNDM7JiM0Mzs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoY3R4LmVycm9ycyB8fCBjdHgud2FybmluZ3MpXG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7JXM6IExpbnRlciBzdW1tYXJ5OiAlZCBlcnJvcnMsICVkIHdhcm5pbmdzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRjdHgubmFtZSwgY3R4LmVycm9ycywgY3R4Lndhcm5pbmdzKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIEVYSVRfU1VDQ0VTUztcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbmluZGV4IDJiMzQ4M2RiMWI2MGMuLjViYmUzY2JhOGY3NTkgMTAwNzU1XG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbkBAIC0xNjg4LDYgJiM0MzsxNjg4LDggQEAgY2xhc3MgQ29kZVdyaXRlcjpcbiAgICAgICAgIHNlbGYuY2xvc2Vfb3V0X2ZpbGUoKVxuIFxuICAgICBkZWYgY2xvc2Vfb3V0X2ZpbGUoc2VsZik6XG4mIzQzOyAgICAgICAgaWYgc2VsZi5fYmxvY2tfZW5kOlxuJiM0MzsgICAgICAgICAgICBzZWxmLl9vdXQud3JpdGUoJiMzOTtcXHQmIzM5OyAqIHNlbGYuX2luZCAmIzQzOyAmIzM5O31cXG4mIzM5OylcbiAgICAgICAgIGlmIHNlbGYuX291dCA9PSBvcy5zeXMuc3Rkb3V0OlxuICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIyBBdm9pZCBtb2RpZnlpbmcgdGhlIGZpbGUgaWYgY29udGVudHMgZGlkbiYjMzk7dCBjaGFuZ2VcbkBAIC0yMDg0LDYgJiM0MzsyMDg2LDMwIEBAIGRlZiBwdXRfZW51bV90b19zdHIoX2ZhbWlseSwgY3csIGVudW0pOlxuICAgICBfcHV0X2VudW1fdG9fc3RyX2hlbHBlcihjdywgZW51bS5yZW5kZXJfbmFtZSwgbWFwX25hbWUsICYjMzk7dmFsdWUmIzM5OywgZW51bT1lbnVtKVxuIFxuIFxuJiM0MztkZWYgcHV0X2VudW1fdG9fbGludGVyKGZhbWlseSwgY3csIGVudW0pOlxuJiM0MzsgICAgbmFtZV9wZnggPSBlbnVtLmdldCgmIzM5O25hbWUtcHJlZml4JiMzOTssIGZcJiMzNDt7ZmFtaWx5LmlkZW50X25hbWV9LXtlbnVtWyYjMzk7bmFtZSYjMzk7XX0tXCYjMzQ7KVxuJiM0MzsgICAgbWF4X25hbWUgPSBjX3VwcGVyKG5hbWVfcGZ4ICYjNDM7ICYjMzk7bWF4JiMzOTspXG4mIzQzOyAgICBtYXBfbmFtZSA9IGYmIzM5O3tlbnVtLnJlbmRlcl9uYW1lfV9lbnRyaWVzJiMzOTtcbiYjNDM7ICAgIGN3LmJsb2NrX3N0YXJ0KGxpbmU9ZlwmIzM0O3N0YXRpYyBjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSB7bWFwX25hbWV9W10gPVwmIzM0OylcbiYjNDM7ICAgIHZhbCA9IDBcbiYjNDM7ICAgIGZvciBlbnRyeSBpbiBlbnVtLmVudHJpZXMudmFsdWVzKCk6XG4mIzQzOyAgICAgICAgdmFsID0gZW50cnkudXNlcl92YWx1ZSgpXG4mIzQzOyAgICAgICAgY19uYW1lID0gZW50cnkuY19uYW1lXG4mIzQzOyAgICAgICAgY3cucChmJiMzOTsjaWYgZGVmaW5lZCh7Y19uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3tjX25hbWV9KSYjMzk7KVxuJiM0MzsgICAgICAgIGN3LnAoZiYjMzk7WU5MX0VOVU1fRU5UUlkoXCYjMzQ7e2VudHJ5Lm5hbWV9XCYjMzQ7LCB7Y19uYW1lfSwge3ZhbH0pLCYjMzk7KVxuJiM0MzsgICAgICAgIGN3LnAoJiMzOTsjZWxzZSYjMzk7KVxuJiM0MzsgICAgICAgIGN3LnAoZiYjMzk7WU5MX0VOVU1fQkFEX0VOVFJZKFwmIzM0O3tlbnRyeS5uYW1lfVwmIzM0Oywge2NfbmFtZX0sIHt2YWx9KSwmIzM5OylcbiYjNDM7ICAgICAgICBjdy5wKCYjMzk7I2VuZGlmJiMzOTspXG4mIzQzOyAgICBjdy5wKGYmIzM5OyNpZiBkZWZpbmVkKHttYXhfbmFtZX0pIHx8IGRlZmluZWQoTElOVEVSX0hBU197bWF4X25hbWV9KSYjMzk7KVxuJiM0MzsgICAgY3cucChmJiMzOTtZTkxfRU5VTV9TRU5USU5BTCh7bWF4X25hbWV9LCB7dmFsfSksJiMzOTspXG4mIzQzOyAgICBjdy5wKCYjMzk7I2VuZGlmJiMzOTspXG4mIzQzOyAgICBjdy5wKCYjMzk7e30sJiMzOTspXG4mIzQzOyAgICBjdy5ibG9ja19lbmQobGluZT0mIzM5OzsmIzM5OylcbiYjNDM7ICAgIGN3Lm5sKClcbiYjNDM7ICAgIGVudW1fdHlwZSA9IGVudW1bJiMzOTt0eXBlJiMzOTtdLnVwcGVyKClcbiYjNDM7ICAgIHJldHVybiBmJiMzOTt7e1wmIzM0O3tlbnVtLm5hbWV9XCYjMzQ7LCBcdTAwMjZ7bWFwX25hbWV9WzBdLCBZTkxfe2VudW1fdHlwZX19fSwmIzM5O1xuJiM0MztcbiYjNDM7XG4gZGVmIHB1dF9sb2NhbF92YXJzKHN0cnVjdCk6XG4gICAgIGxvY2FsX3ZhcnMgPSBbXVxuICAgICBoYXNfYXJyYXkgPSBGYWxzZVxuQEAgLTM0NjIsNiAmIzQzOzM0ODgsNyBAQCBkZWYgbWFpbigpOlxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1zcGVjJiMzOTssIGRlc3Q9JiMzOTtzcGVjJiMzOTssIHR5cGU9c3RyLCByZXF1aXJlZD1UcnVlKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1oZWFkZXImIzM5OywgZGVzdD0mIzM5O2hlYWRlciYjMzk7LCBhY3Rpb249JiMzOTtzdG9yZV90cnVlJiMzOTssIGRlZmF1bHQ9Tm9uZSlcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tc291cmNlJiMzOTssIGRlc3Q9JiMzOTtoZWFkZXImIzM5OywgYWN0aW9uPSYjMzk7c3RvcmVfZmFsc2UmIzM5OylcbiYjNDM7ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJiMzOTstLWxpbnRlciYjMzk7LCBkZXN0PSYjMzk7bGludGVyJiMzOTssIGFjdGlvbj0mIzM5O3N0b3JlX3RydWUmIzM5OylcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tdXNlci1oZWFkZXImIzM5OywgbmFyZ3M9JiMzOTsmIzQzOyYjMzk7LCBkZWZhdWx0PVtdKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1jbXAtb3V0JiMzOTssIGFjdGlvbj0mIzM5O3N0b3JlX3RydWUmIzM5OywgZGVmYXVsdD1Ob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9JiMzOTtEbyBub3Qgb3ZlcndyaXRlIHRoZSBvdXRwdXQgZmlsZSBpZiB0aGUgbmV3IG91dHB1dCBpcyBpZGVudGljYWwgdG8gdGhlIG9sZCYjMzk7KVxuQEAgLTM0NzAsOCAmIzQzOzM0OTcsMTAgQEAgZGVmIG1haW4oKTpcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tZnVuY3Rpb24tcHJlZml4JiMzOTssIGRlc3Q9JiMzOTtmbl9wcmVmaXgmIzM5OywgdHlwZT1zdHIpXG4gICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4gXG4mIzQzOyAgICBpZiBhcmdzLmxpbnRlcjpcbiYjNDM7ICAgICAgICBhcmdzLmhlYWRlciA9IEZhbHNlXG4gICAgIGlmIGFyZ3MuaGVhZGVyIGlzIE5vbmU6XG4tICAgICAgICBwYXJzZXIuZXJyb3IoXCYjMzQ7LS1oZWFkZXIgb3IgLS1zb3VyY2UgaXMgcmVxdWlyZWRcJiMzNDspXG4mIzQzOyAgICAgICAgcGFyc2VyLmVycm9yKFwmIzM0Oy0taGVhZGVyLCAtLXNvdXJjZSBvciAtLWxpbnRlciBpcyByZXF1aXJlZFwmIzM0OylcbiBcbiAgICAgZXhjbHVkZV9vcHMgPSBbcmUuY29tcGlsZShleHByKSBmb3IgZXhwciBpbiBhcmdzLmV4Y2x1ZGVfb3BdXG4gXG5AQCAtMzQ5NCwxNyAmIzQzOzM1MjMsMTkgQEAgZGVmIG1haW4oKTpcbiAgICAgICAgIGN3LnAoZiYjMzk7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IHtwYXJzZWQubGljZW5zZX0mIzM5OylcbiAgICAgY3cucChcJiMzNDsvKiBEbyBub3QgZWRpdCBkaXJlY3RseSwgYXV0by1nZW5lcmF0ZWQgZnJvbTogKi9cJiMzNDspXG4gICAgIGN3LnAoZlwmIzM0Oy8qXFx0e3NwZWNfa2VybmVsfSAqL1wmIzM0Oylcbi0gICAgY3cucChmXCYjMzQ7LyogWU5MLUdFTiB7YXJncy5tb2RlfSB7JiMzOTtoZWFkZXImIzM5OyBpZiBhcmdzLmhlYWRlciBlbHNlICYjMzk7c291cmNlJiMzOTt9ICovXCYjMzQ7KVxuLSAgICBpZiBhcmdzLmV4Y2x1ZGVfb3Agb3IgYXJncy51c2VyX2hlYWRlciBvciBhcmdzLmZuX3ByZWZpeDpcbi0gICAgICAgIGxpbmUgPSAmIzM5OyYjMzk7XG4tICAgICAgICBpZiBhcmdzLnVzZXJfaGVhZGVyOlxuLSAgICAgICAgICAgIGxpbmUgJiM0Mzs9ICYjMzk7IC0tdXNlci1oZWFkZXIgJiMzOTsuam9pbihbJiMzOTsmIzM5O10gJiM0MzsgYXJncy51c2VyX2hlYWRlcilcbi0gICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDpcbi0gICAgICAgICAgICBsaW5lICYjNDM7PSAmIzM5OyAtLWV4Y2x1ZGUtb3AgJiMzOTsuam9pbihbJiMzOTsmIzM5O10gJiM0MzsgYXJncy5leGNsdWRlX29wKVxuLSAgICAgICAgaWYgYXJncy5mbl9wcmVmaXg6XG4tICAgICAgICAgICAgbGluZSAmIzQzOz0gZiYjMzk7IC0tZnVuY3Rpb24tcHJlZml4IHthcmdzLmZuX3ByZWZpeH0mIzM5O1xuLSAgICAgICAgY3cucChmJiMzOTsvKiBZTkwtQVJHe2xpbmV9ICovJiMzOTspXG4tICAgIGN3LnAoJiMzOTsvKiBUbyByZWdlbmVyYXRlIHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8mIzM5OylcbiYjNDM7ICAgIGlmIG5vdCBhcmdzLmxpbnRlcjpcbiYjNDM7ICAgICAgICB5bmxfYXJnID0gJiMzOTtoZWFkZXImIzM5OyBpZiBhcmdzLmhlYWRlciBlbHNlICYjMzk7c291cmNlJiMzOTtcbiYjNDM7ICAgICAgICBjdy5wKGZcJiMzNDsvKiBZTkwtR0VOIHthcmdzLm1vZGV9IHt5bmxfYXJnfSAqL1wmIzM0OylcbiYjNDM7ICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfb3Agb3IgYXJncy51c2VyX2hlYWRlciBvciBhcmdzLmZuX3ByZWZpeDpcbiYjNDM7ICAgICAgICAgICAgbGluZSA9ICYjMzk7JiMzOTtcbiYjNDM7ICAgICAgICAgICAgaWYgYXJncy51c2VyX2hlYWRlcjpcbiYjNDM7ICAgICAgICAgICAgICAgIGxpbmUgJiM0Mzs9ICYjMzk7IC0tdXNlci1oZWFkZXIgJiMzOTsuam9pbihbJiMzOTsmIzM5O10gJiM0MzsgYXJncy51c2VyX2hlYWRlcilcbiYjNDM7ICAgICAgICAgICAgaWYgYXJncy5leGNsdWRlX29wOlxuJiM0MzsgICAgICAgICAgICAgICAgbGluZSAmIzQzOz0gJiMzOTsgLS1leGNsdWRlLW9wICYjMzk7LmpvaW4oWyYjMzk7JiMzOTtdICYjNDM7IGFyZ3MuZXhjbHVkZV9vcClcbiYjNDM7ICAgICAgICAgICAgaWYgYXJncy5mbl9wcmVmaXg6XG4mIzQzOyAgICAgICAgICAgICAgICBsaW5lICYjNDM7PSBmJiMzOTsgLS1mdW5jdGlvbi1wcmVmaXgge2FyZ3MuZm5fcHJlZml4fSYjMzk7XG4mIzQzOyAgICAgICAgICAgIGN3LnAoZiYjMzk7LyogWU5MLUFSR3tsaW5lfSAqLyYjMzk7KVxuJiM0MzsgICAgICAgIGN3LnAoJiMzOTsvKiBUbyByZWdlbmVyYXRlIHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8mIzM5OylcbiAgICAgY3cubmwoKVxuIFxuICAgICBpZiBhcmdzLm1vZGUgPT0gJiMzOTt1YXBpJiMzOTs6XG5AQCAtMzUzOSw2ICYjNDM7MzU3MCw4IEBAIGRlZiBtYWluKCk6XG4gICAgICAgICAgICAgY3cucCgmIzM5OyNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2UmIzM5OylcbiAgICAgICAgICAgICBpZiBmYW1pbHlfY29udGFpbnNfYml0ZmllbGQzMihwYXJzZWQpOlxuICAgICAgICAgICAgICAgICBjdy5wKCYjMzk7I2luY2x1ZGUgXHUwMDNjbGludXgvbmV0bGluay5oXHUwMDNlJiMzOTspXG4mIzQzOyAgICAgICAgZWxpZiBhcmdzLmxpbnRlcjpcbiYjNDM7ICAgICAgICAgICAgY3cucCgmIzM5OyNpbmNsdWRlIFwmIzM0Oy4uL2xpbnRlci9saW50ZXIuaFwmIzM0OyYjMzk7KVxuICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICBjdy5wKGYmIzM5OyNpbmNsdWRlIFwmIzM0O3toZHJfZmlsZX1cJiMzNDsmIzM5OylcbiAgICAgICAgICAgICBjdy5wKCYjMzk7I2luY2x1ZGUgXCYjMzQ7eW5sLmhcJiMzNDsmIzM5OylcbkBAIC0zNjkwLDYgJiM0MzszNzIzLDIxIEBAIGRlZiBtYWluKCk6XG4gICAgICAgICAgICAgICAgICAgICBjdy5ubCgpXG4gICAgICAgICAgICAgICAgICAgICBwcmludF93cmFwcGVkX3R5cGUocmkpXG4gICAgICAgICAgICAgY3cubmwoKVxuJiM0MzsgICAgICAgIGVsaWYgYXJncy5saW50ZXI6XG4mIzQzOyAgICAgICAgICAgIGVudW1fc2V0cyA9IFtdXG4mIzQzOyAgICAgICAgICAgIGZvciBuYW1lLCBjb25zdCBpbiBwYXJzZWQuY29uc3RzLml0ZW1zKCk6XG4mIzQzOyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbnN0LCBFbnVtU2V0KTpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBlbnVtX3NldHMuYXBwZW5kKHB1dF9lbnVtX3RvX2xpbnRlcihwYXJzZWQsIGN3LCBjb25zdCkpXG4mIzQzOyAgICAgICAgICAgIGN3Lm5sKClcbiYjNDM7ICAgICAgICAgICAgY3cuYmxvY2tfc3RhcnQobGluZT1cJiMzNDtzdGF0aWMgY29uc3Qgc3RydWN0IGVudW1fc2V0IGVudW1zW10gPVwmIzM0OylcbiYjNDM7ICAgICAgICAgICAgZm9yIGVudW1fc2V0IGluIGVudW1fc2V0czpcbiYjNDM7ICAgICAgICAgICAgICAgIGN3LnAoZW51bV9zZXQpXG4mIzQzOyAgICAgICAgICAgIGN3LnAoJiMzOTt7fSwmIzM5OylcbiYjNDM7ICAgICAgICAgICAgY3cuYmxvY2tfZW5kKGxpbmU9JiMzOTs7JiMzOTspXG4mIzQzOyAgICAgICAgICAgIGN3Lm5sKClcbiYjNDM7ICAgICAgICAgICAgY3cud3JpdGVfZnVuYygmIzM5O2ludCYjMzk7LCAmIzM5O21haW4mIzM5OyxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPVsmIzM5O2NvbnN0IGludCBhcmdjJiMzOTssICYjMzk7Y29uc3QgY2hhciAqKmFyZ3YmIzM5O10sXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keT1bJiMzOTtyZXR1cm4gbGludGVyX3J1bihhcmdjLCBhcmd2LCBcdTAwMjZlbnVtc1swXSk7JiMzOTtdKVxuICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICBjdy5wKCYjMzk7LyogRW51bXMgKi8mIzM5OylcbiAgICAgICAgICAgICBwdXRfb3BfbmFtZShwYXJzZWQsIGN3KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBtb2RpZmllcyBkb2N1bWVudGF0aW9uIChZQU1MIHNwZWNzIGluIERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy8pLCB1c2VyLXNwYWNlIHRvb2xpbmcvbGludGVycyAodG9vbHMvbmV0L3lubC8pLCBhbmQgYW4gaW5jbHVkZSBndWFyZCBpbiBpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLiBObyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmQxMGJlMmYwMDM5ZGUxOTU4YjJiNTViYjAyYTQ1YTEyMjVhYTFmYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIyOjUyOjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sCmluZGV4IGIxZWIxMDJhYjg0MzIuLjU0M2RjZGRiMDQ2NDcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9jb25udHJhY2sueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWwKQEAgLTIsNiAmIzQzOzIsNyBAQAogLS0tCiBuYW1lOiBjb25udHJhY2sKIHByb3RvY29sOiBuZXRsaW5rLXJhdwomIzQzO3VhcGktaGVhZGVyOiBsaW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvbW1vbi5oCiBwcm90b251bTogMTIKIAogZG9jOiAmZ3Q7LQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbAppbmRleCAyMWVkZjNkMjVmMzRiLi43NmY2OWVkODJhMjRkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbApAQCAtMiw2ICYjNDM7Miw3IEBACiAtLS0KIG5hbWU6IG5mdGFibGVzCiBwcm90b2NvbDogbmV0bGluay1yYXcKJiM0Mzt1YXBpLWhlYWRlcjogbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oCiBwcm90b251bTogMTIKIAogZG9jOiAmZ3Q7LQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWwKaW5kZXggNjFlYmI5YTJiYWQ1MS4uZmU1MmQ1MDhkNjA3NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sCkBAIC0yNSwxNyAmIzQzOzI1LDE3IEBAIGRlZmluaXRpb25zOgogICAgICAgLQogICAgICAgICBuYW1lOiBsb29wYmFjawogICAgICAgLQotICAgICAgICBuYW1lOiBwb2ludC10by1wb2ludAomIzQzOyAgICAgICAgbmFtZTogcG9pbnRvcG9pbnQKICAgICAgIC0KLSAgICAgICAgbmFtZTogbm8tdHJhaWxlcnMKJiM0MzsgICAgICAgIG5hbWU6IG5vdHJhaWxlcnMKICAgICAgIC0KICAgICAgICAgbmFtZTogcnVubmluZwogICAgICAgLQotICAgICAgICBuYW1lOiBuby1hcnAKJiM0MzsgICAgICAgIG5hbWU6IG5vYXJwCiAgICAgICAtCiAgICAgICAgIG5hbWU6IHByb21pc2MKICAgICAgIC0KLSAgICAgICAgbmFtZTogYWxsLW11bHRpCiYjNDM7ICAgICAgICBuYW1lOiBhbGxtdWx0aQogICAgICAgLQogICAgICAgICBuYW1lOiBtYXN0ZXIKICAgICAgIC0KQEAgLTQ1LDcgJiM0Mzs0NSw3IEBAIGRlZmluaXRpb25zOgogICAgICAgLQogICAgICAgICBuYW1lOiBwb3J0c2VsCiAgICAgICAtCi0gICAgICAgIG5hbWU6IGF1dG8tbWVkaWEKJiM0MzsgICAgICAgIG5hbWU6IGF1dG9tZWRpYQogICAgICAgLQogICAgICAgICBuYW1lOiBkeW5hbWljCiAgICAgICAtCkBAIC01OCw2ICYjNDM7NTgsNyBAQCBkZWZpbml0aW9uczoKICAgICBuYW1lOiB2bGFuLXByb3RvY29scwogICAgIHR5cGU6IGVudW0KICAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIG5hbWUtcHJlZml4OiBldGgtcC0KICAgICBlbnRyaWVzOgogICAgICAgLQogICAgICAgICBuYW1lOiA4MDIxcQpAQCAtMzA1LDEwICYjNDM7MzA2LDEzIEBAIGRlZmluaXRpb25zOgogICAtCiAgICAgbmFtZTogaXB2NC1kZXZjb25mCiAgICAgZW51bS1uYW1lOgomIzQzOyAgICBuYW1lLXByZWZpeDogaXB2NC1kZXZjb25mLQomIzQzOyAgICBoZWFkZXI6IGxpbnV4L2lwLmgKICAgICB0eXBlOiBlbnVtCiAgICAgZW50cmllczoKICAgICAgIC0KICAgICAgICAgbmFtZTogZm9yd2FyZGluZwomIzQzOyAgICAgICAgdmFsdWU6IDEKICAgICAgIC0KICAgICAgICAgbmFtZTogbWMtZm9yd2FyZGluZwogICAgICAgLQpAQCAtMzc2LDYgJiM0MzszODAsOCBAQCBkZWZpbml0aW9uczoKICAgLQogICAgIG5hbWU6IGlwdjYtZGV2Y29uZgogICAgIGVudW0tbmFtZToKJiM0MzsgICAgbmFtZS1wcmVmaXg6IGRldmNvbmYtCiYjNDM7ICAgIGhlYWRlcjogbGludXgvaXB2Ni5oCiAgICAgdHlwZTogZW51bQogICAgIGVudHJpZXM6CiAgICAgICAtCkBAIC01MDEsNiAmIzQzOzUwNyw4IEBAIGRlZmluaXRpb25zOgogICAtCiAgICAgbmFtZTogaWZsYS1pY21wNi1zdGF0cwogICAgIGVudW0tbmFtZToKJiM0MzsgICAgbmFtZS1wcmVmaXg6IGljbXA2LW1pYi0KJiM0MzsgICAgaGVhZGVyOiBsaW51eC9zbm1wLmgKICAgICB0eXBlOiBlbnVtCiAgICAgZW50cmllczoKICAgICAgIC0KQEAgLTUyMCw2ICYjNDM7NTI4LDggQEAgZGVmaW5pdGlvbnM6CiAgIC0KICAgICBuYW1lOiBpZmxhLWluZXQ2LXN0YXRzCiAgICAgZW51bS1uYW1lOgomIzQzOyAgICBuYW1lLXByZWZpeDogaXBzdGF0cy1taWItCiYjNDM7ICAgIGhlYWRlcjogbGludXgvc25tcC5oCiAgICAgdHlwZTogZW51bQogICAgIGVudHJpZXM6CiAgICAgICAtCkBAIC01MzEsMTEgJiM0Mzs1NDEsMjEgQEAgZGVmaW5pdGlvbnM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IGluZGVsaXZlcnMKICAgICAgIC0KLSAgICAgICAgbmFtZTogb3V0Zm9yd2RhdGFncmFtcwomIzQzOyAgICAgICAgbmFtZTogbm9lY3Rwa3RzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZWN0MXBrdHMKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBlY3QwcGt0cwomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGNlcGt0cwomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IG91dHJlcXVlc3RzCiAgICAgICAtCiAgICAgICAgIG5hbWU6IG91dHBrdHMKICAgICAgIC0KICAgICAgICAgbmFtZTogb3V0b2N0ZXRzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogb3V0Zm9yd2RhdGFncmFtcwogICAgICAgLQogICAgICAgICBuYW1lOiBpbmhkcmVycm9ycwogICAgICAgLQpAQCAtNTg2LDE0ICYjNDM7NjA2LDYgQEAgZGVmaW5pdGlvbnM6CiAgICAgICAgIG5hbWU6IG91dGJjYXN0b2N0ZXRzCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGNzdW1lcnJvcnMKLSAgICAgIC0KLSAgICAgICAgbmFtZTogbm9lY3Rwa3RzCi0gICAgICAtCi0gICAgICAgIG5hbWU6IGVjdDEtcGt0cwotICAgICAgLQotICAgICAgICBuYW1lOiBlY3QwLXBrdHMKLSAgICAgIC0KLSAgICAgICAgbmFtZTogY2Vwa3RzCiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlYXNtLW92ZXJsYXBzCiAgIC0gbmFtZTogYnItYm9vbG9wdC1tdWx0aQpAQCAtNjQwLDYgJiM0Mzs2NTIsOCBAQCBkZWZpbml0aW9uczoKICAgICBuYW1lOiB2bGFuLWZsYWdzCiAgICAgdHlwZTogZmxhZ3MKICAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIG5hbWUtcHJlZml4OiB2bGFuLWZsYWctCiYjNDM7ICAgIGhlYWRlcjogbGludXgvaWZfdmxhbi5oCiAgICAgZW50cmllczoKICAgICAgIC0gcmVvcmRlci1oZHIKICAgICAgIC0gZ3ZycApAQCAtNzI3LDYgJiM0Mzs3NDEsOCBAQCBkZWZpbml0aW9uczoKICAgICBuYW1lOiBpZmxhLXZmLWxpbmstc3RhdGUtZW51bQogICAgIHR5cGU6IGVudW0KICAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIG5hbWUtcHJlZml4OiBpZmxhLXZmLWxpbmstc3RhdGUtCiYjNDM7ICAgIGhlYWRlcjogbGludXgvaWZfbGluay5oCiAgICAgZW50cmllczoKICAgICAgIC0gYXV0bwogICAgICAgLSBlbmFibGUKQEAgLTc5NCw2ICYjNDM7ODEwLDcgQEAgZGVmaW5pdGlvbnM6CiAgICAgbmFtZTogcnRleHQtZmlsdGVyCiAgICAgdHlwZTogZmxhZ3MKICAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIG5hbWUtcHJlZml4OiBydGV4dC1maWx0ZXItCiAgICAgZW50cmllczoKICAgICAgIC0gdmYKICAgICAgIC0gYnJ2bGFuCkBAIC04MDYsMTggJiM0Mzs4MjMsMjAgQEAgZGVmaW5pdGlvbnM6CiAgIC0KICAgICBuYW1lOiBuZXRraXQtcG9saWN5CiAgICAgdHlwZTogZW51bQotICAgIGVudW0tbmFtZToKJiM0MzsgICAgZW51bS1uYW1lOiBuZXRraXQtYWN0aW9uCiYjNDM7ICAgIG5hbWUtcHJlZml4OiBuZXRraXQtCiAgICAgZW50cmllczoKICAgICAgIC0KLSAgICAgICAgbmFtZTogZm9yd2FyZAomIzQzOyAgICAgICAgbmFtZTogcGFzcwogICAgICAgICB2YWx1ZTogMAogICAgICAgLQotICAgICAgICBuYW1lOiBibGFja2hvbGUKJiM0MzsgICAgICAgIG5hbWU6IGRyb3AKICAgICAgICAgdmFsdWU6IDIKICAgLQogICAgIG5hbWU6IG5ldGtpdC1tb2RlCiAgICAgdHlwZTogZW51bQogICAgIGVudW0tbmFtZTogbmV0a2l0LW1vZGUKJiM0MzsgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC0KICAgICBlbnRyaWVzOgogICAgICAgLSBuYW1lOiBsMgogICAgICAgLSBuYW1lOiBsMwpAQCAtODI1LDcgJiM0Mzs4NDQsOCBAQCBkZWZpbml0aW9uczoKICAgLQogICAgIG5hbWU6IG5ldGtpdC1zY3J1YgogICAgIHR5cGU6IGVudW0KLSAgICBlbnVtLW5hbWU6CiYjNDM7ICAgIGVudW0tbmFtZTogbmV0a2l0LXNjcnViCiYjNDM7ICAgIG5hbWUtcHJlZml4OiBuZXRraXQtc2NydWItCiAgICAgZW50cmllczoKICAgICAgIC0gbmFtZTogbm9uZQogICAgICAgLSBuYW1lOiBkZWZhdWx0CkBAIC04MzMsMTMgJiM0Mzs4NTMsMTQgQEAgZGVmaW5pdGlvbnM6CiAgICAgbmFtZTogbmV0a2l0LXBhaXJpbmcKICAgICB0eXBlOiBlbnVtCiAgICAgZW51bS1uYW1lOiBuZXRraXQtcGFpcmluZwomIzQzOyAgICBuYW1lLXByZWZpeDogbmV0a2l0LWRldmljZS0KICAgICBlbnRyaWVzOgogICAgICAgLSBuYW1lOiBwYWlyCiAgICAgICAtIG5hbWU6IHNpbmdsZQogICAtCiAgICAgbmFtZTogb3Zwbi1tb2RlCiAgICAgZW51bS1uYW1lOiBvdnBuLW1vZGUKLSAgICBuYW1lLXByZWZpeDogb3Zwbi1tb2RlCiYjNDM7ICAgIG5hbWUtcHJlZml4OiBvdnBuLW1vZGUtCiAgICAgdHlwZTogZW51bQogICAgIGVudHJpZXM6CiAgICAgICAtIHAycApAQCAtODQ4LDYgJiM0Mzs4NjksNyBAQCBkZWZpbml0aW9uczoKICAgICBuYW1lOiBici1zdHAtbW9kZQogICAgIHR5cGU6IGVudW0KICAgICBlbnVtLW5hbWU6IGJyLXN0cC1tb2RlCiYjNDM7ICAgIG5hbWUtcHJlZml4OiBici1zdHAtbW9kZS0KICAgICBlbnRyaWVzOgogICAgICAgLSBhdXRvCiAgICAgICAtIHVzZXIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oCmluZGV4IDQ5ZjU2NDAwOTJhMGQuLjI2YmRhYmM1MDJmZWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaApAQCAtNSw4ICYjNDM7NSw4IEBACiAgKiBBdXRob3I6IEhpZGVha2kgWU9TSElGVUpJICZsdDt5b3NoZnVqaUBsaW51eC1pcHY2Lm9yZyZndDsKICAqLwogCi0jaWZuZGVmIF9MSU5VWF9TTk1QX0gKLSNkZWZpbmUgX0xJTlVYX1NOTVBfSAomIzQzOyNpZm5kZWYgX1VBUElfTElOVVhfU05NUF9ICiYjNDM7I2RlZmluZSBfVUFQSV9MSU5VWF9TTk1QX0gKIAogLyogaXBzdGF0cyBtaWIgZGVmaW5pdGlvbnMgKi8KIC8qCkBAIC0zNzIsNCAmIzQzOzM3Miw0IEBAIGVudW0KIAlfX0xJTlVYX01JQl9UTFNNQVgKIH07CiAKLSNlbmRpZgkvKiBfTElOVVhfU05NUF9IICovCiYjNDM7I2VuZGlmCS8qIF9VQVBJX0xJTlVYX1NOTVBfSCAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzIGIvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzCmluZGV4IDI3NzEzNzUzMzlkOWMuLjhlMTM2YTVkZjg5OTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL01ha2VmaWxlLmRlcHMKQEAgLTQwLDggJiM0Mzs0MCwxNSBAQCBDRkxBR1Nfb3ZzX3Zwb3J0Oj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9PUEVOVlNXSVRDSF9ILG9wZW52c3dpdGNoLmgpCiBDRkxBR1NfcHNwOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX1BTUF9ILHBzcC5oKQogQ0ZMQUdTX3J0LWFkZHI6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcCiAJJChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfSUZfQUREUl9ILGlmX2FkZHIuaCkKLUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXAotCSQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfTElOS19ILGlmX2xpbmsuaCkKJiM0MztDRkxBR1NfcnQtbGluazo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9MSU5LX0gsaWZfbGluay5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSVBfSCxpcC5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfSVBWNl9ILGlwdjYuaCkgXAomIzQzOwkkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0JSSURHRV9ILGlmX2JyaWRnZS5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfSUZfVFVOTkVMX0hfLGlmX3R1bm5lbC5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfVkxBTl9IXyxpZl92bGFuLmgpIFwKJiM0MzsJJChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9TTk1QX0gsc25tcC5oKSBcCiYjNDM7CSQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfRFBMTF9ILGRwbGwuaCkKIENGTEFHU19ydC1uZWlnaDo9JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpIFwKIAkkKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9ORUlHSEJPVVJfSCxuZWlnaGJvdXIuaCkKIENGTEFHU19ydC1yb3V0ZTo9JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpCmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZQppbmRleCA4NTlhNmZiNDQ2ZTE0Li4yMGRkNzBjZDcwOWVlIDEwMDY0NAotLS0gYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmUKQEAgLTEsMyAmIzQzOzEsNiBAQAogKi11c2VyLmMKICotdXNlci5oCiYjNDM7Ki1saW50ZXIuYwomIzQzOyotbGludGVyLmgKJiM0MzsqLWxpbnRlcgogKi5yc3QKZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUKaW5kZXggNWExODYzNDliNWE4Ni4uYmNmN2Y0NTU2MzEzMCAxMDA2NDQKLS0tIGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUKQEAgLTMzLDggJiM0MzszMyw5IEBAIE9CSlM9JChwYXRzdWJzdCAlLCUtdXNlci5vLCR7R0VOU30pCiBTUEVDU19QQVRIUz0kKHdpbGRjYXJkICQoU1BFQ1NfRElSKS8qLnlhbWwpCiBTUEVDUz0kKHBhdHN1YnN0ICQoU1BFQ1NfRElSKS8lLnlhbWwsJSwke1NQRUNTX1BBVEhTfSkKIFJTVFM9JChwYXRzdWJzdCAlLCUucnN0LCR7U1BFQ1N9KQomIzQzO0xJTlRTPSQocGF0c3Vic3QgJSwlLWxpbnQsJHtTUEVDU30pCiAKLWFsbDogcHJvdG9zLmEgJChIRFJTKSAkKFNSQ1MpICQoS0hEUlMpICQoS1NSQ1MpICQoVUFQSSkgJChSU1RTKQomIzQzO2FsbDogcHJvdG9zLmEgJChIRFJTKSAkKFNSQ1MpICQoS0hEUlMpICQoS1NSQ1MpICQoVUFQSSkgJChSU1RTKSAkKExJTlRTKQogCiBwcm90b3MuYTogJChPQkpTKQogCUBlY2hvIC1lICYjMzQ7XHRBUiAkQCYjMzQ7CkBAIC01NiwxMSAmIzQzOzU3LDI5IEBAIHByb3Rvcy5hOiAkKE9CSlMpCiAJQGVjaG8gLWUgJiMzNDtcdEdFTl9SU1QgJEAmIzM0OwogCUAkKFRPT0xfUlNUKSAtbyAkQCAtaSAkJmx0OwogCiYjNDM7JS1saW50ZXIuYzogJChTUEVDU19ESVIpLyUueWFtbCAkKFRPT0wpIC4uL2xpbnRlci9saW50ZXIuaAomIzQzOwlAZWNobyAtZSAmIzM0O1x0R0VOICRAJiMzNDsKJiM0MzsJQCQoVE9PTCkgLS1tb2RlIHVzZXIgLS1saW50ZXIgLS1zcGVjICQmbHQ7IC1vICRAICQoWU5MX0dFTl9BUkdfJCopCiYjNDM7CiYjNDM7JS1saW50ZXIuaDogJS1saW50ZXIuYyAuLi9saW50ZXIvZ2VuLWguc2gKJiM0MzsJQGVjaG8gLWUgJiMzNDtcdEdFTiAkQCYjMzQ7CiYjNDM7CUAuLi9saW50ZXIvZ2VuLWguc2ggJChDRkxBR1MpICQoQ0ZMQUdTXyQqKSAmbHQ7ICQmbHQ7ICZndDsgJEAKJiM0MzsKJiM0MzslLWxpbnRlcjogJS1saW50ZXIuYyAlLWxpbnRlci5oIC4uL2xpbnRlci9saW50ZXIuaAomIzQzOwlAZWNobyAtZSAmIzM0O1x0Q0MgJEAmIzM0OwomIzQzOwlAJChDQykgJChDRkxBR1MpICQoQ0ZMQUdTXyQqKSAtaW5jbHVkZSAkKi1saW50ZXIuaCAtbyAkQCAkJmx0OwomIzQzOwomIzQzOyUtbGludDogJS1saW50ZXIKJiM0MzsJQGVjaG8gLWUgJiMzNDtcdExJTlQgJEAmIzM0OwomIzQzOwlALi8kJmx0OyAkKgomIzQzOwomIzQzO2xpbnQ6ICQoTElOVFMpCiYjNDM7CiBjbGVhbjoKIAlybSAtZiAqLm8KIAogZGlzdGNsZWFuOiBjbGVhbgotCXJtIC1mICouYyAqLmggKi5hICoucnN0CiYjNDM7CXJtIC1mICouYyAqLmggKi5hICoucnN0ICotbGludGVyCiAKIHJlZ2VuOgogCUAuLi95bmwtcmVnZW4uc2gKQEAgLTY4LDcgJiM0Mzs4Nyw3IEBAIHJlZ2VuOgogaW5zdGFsbC1oZWFkZXJzOiAkKEhEUlMpCiAJQGVjaG8gLWUgJiMzNDtcdElOU1RBTEwgZ2VuZXJhdGVkIGhlYWRlcnMmIzM0OwogCUAkKElOU1RBTEwpIC1kICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubAotCUAkKElOU1RBTEwpIC1tIDA2NDQgKi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC8KJiM0MzsJQCQoSU5TVEFMTCkgLW0gMDY0NCAkKEtIRFJTKSAkKERFU1RESVIpJChpbmNsdWRlZGlyKS95bmwvCiAKIGluc3RhbGwtcnN0czogJChSU1RTKQogCUBlY2hvIC1lICYjMzQ7XHRJTlNUQUxMIGdlbmVyYXRlZCBkb2NzJiMzNDsKQEAgLTg0LDUgJiM0MzsxMDMsNSBAQCBpbnN0YWxsLXNwZWNzOgogCiBpbnN0YWxsOiBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3MKIAotLlBIT05ZOiBhbGwgY2xlYW4gZGlzdGNsZWFuIHJlZ2VuIGluc3RhbGwgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzCiYjNDM7LlBIT05ZOiBhbGwgY2xlYW4gZGlzdGNsZWFuIHJlZ2VuIGluc3RhbGwgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzIGxpbnQKIC5ERUZBVUxUX0dPQUw6IGFsbApkaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2ggYi90b29scy9uZXQveW5sL2xpbnRlci9nZW4taC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwLi4yNDc0OTM2MDAwMzRkCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2gKQEAgLTAsMCAmIzQzOzEsMjMgQEAKJiM0MzsjIS9iaW4vc2gKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7IyBVc2FnZTogLi9nZW4taC5zaCAkQ0ZMQUdTICZsdDsgaW4uYyAmZ3Q7IG91dC5oCiYjNDM7IwomIzQzOyMgRXh0cmFjdCB2YWxpZCBzeW1ib2xzLCBhbmQgZGVmaW5lIHRoYXQgdGhleSBhcmUgYXZhaWxhYmxlLiBUaGlzIGlzIGEKJiM0MzsjIHdvcmthcm91bmQsIHRvIGF2b2lkIGNvbXBpbGUgZmFpbHVyZXMgZHVlIHRvIG5vbi1leGlzdGVudCBlbnVtIG1lbWJlcnMuCiYjNDM7IwomIzQzOyMgQ2FwaXRhbGl6ZWQga2V5d29yZHMgZm91bmQgaW4gdGhlIHByZXByb2Nlc3NvciBvdXRwdXQsIGFyZSBtb3N0bHkgZW51bQomIzQzOyMgbWVtYmVycy4KJiM0MzsjCiYjNDM7IyBBcyBhbiBleGFtcGxlLCBleGlzdGVuY2Ugb2YgRk9PIGNhbiBiZSBjaGVja2VkIHdpdGg6CiYjNDM7IyAgICNpZiBkZWZpbmVkKEZPTykgfHwgZGVmaW5lZChMSU5URVJfSEFTX0ZPTykKJiM0MzsjIHRodXMgY2hlY2tpbmcgZm9yIEZPTyBlaXRoZXIgYXMgYSBtYWNybyBvciBhcyBhbiBlbnVtIG1lbWJlcnMuCiYjNDM7CiYjNDM7c2V0IC1lCiYjNDM7CiYjNDM7ZWNobyAmIzM5Oy8qIFRoaXMgaXMgYW4gYXV0by1nZW5lcmF0ZWQgZmlsZSAqLyYjMzk7CiYjNDM7Z3JlcCAmIzM5O14jaW5jbHVkZSAmbHQ7bGludXgvJiMzOTsgfAomIzQzOwljcHAgLXggYyAmIzM0OyRAJiMzNDsgLSB8CiYjNDM7CWdyZXAgLXdvICYjMzk7W0EtWl1bQS1aMC05X11cJiM0MzsmIzM5OyB8CiYjNDM7CXNvcnQgfCB1bmlxIHwKJiM0MzsJc2VkIC1lICYjMzk7cy9eLyNkZWZpbmUgTElOVEVSX0hBU18vZyYjMzk7CmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaCBiL3Rvb2xzL25ldC95bmwvbGludGVyL2xpbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjBkMWMyOGM5ZjIxNDAKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaApAQCAtMCwwICYjNDM7MSwxNTIgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtzdGRpby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdGRib29sLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGVudW1fa3YgewomIzQzOwljb25zdCBjaGFyICpuYW1lOwomIzQzOwljb25zdCBsb25nIGxvbmcgdmFsOwomIzQzOwljb25zdCBib29sIGlzX3VuZGVmOjE7CiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3QgZW51bV9lbnRyeSB7CiYjNDM7CWNvbnN0IHN0cnVjdCBlbnVtX2t2IHlubDsKJiM0MzsJY29uc3Qgc3RydWN0IGVudW1fa3YgYzsKJiM0MzsJY29uc3QgYm9vbCBpc19zZW50aW5hbDoxOwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBZTkxfRU5VTV9FTlRSWShZTkxfTkFNRSwgQ19OQU1FLCBZTkxfVkFMVUUpIFwKJiM0MzsJeyBcCiYjNDM7CQkueW5sID0geyAubmFtZSA9IFlOTF9OQU1FLCAudmFsID0gWU5MX1ZBTFVFIH0sIFwKJiM0MzsJCS5jID0geyAubmFtZSA9ICNDX05BTUUsIC52YWwgPSBDX05BTUUgfSwgXAomIzQzOwl9CiYjNDM7CiYjNDM7I2RlZmluZSBZTkxfRU5VTV9CQURfRU5UUlkoWU5MX05BTUUsIENfTkFNRSwgWU5MX1ZBTFVFKSBcCiYjNDM7CXsgXAomIzQzOwkJLnlubCA9IHsgLm5hbWUgPSBZTkxfTkFNRSwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcCiYjNDM7CQkuYyA9IHsgLm5hbWUgPSAjQ19OQU1FLCAuaXNfdW5kZWYgPSB0cnVlIH0sIFwKJiM0MzsJfQomIzQzOwomIzQzOyNkZWZpbmUgWU5MX0VOVU1fU0VOVElOQUwoQ19OQU1FLCBZTkxfVkFMVUUpIFwKJiM0MzsJeyBcCiYjNDM7CQkueW5sID0geyAubmFtZSA9ICYjMzQ7TUFYJiMzNDssIC52YWwgPSBZTkxfVkFMVUUgfSwgXAomIzQzOwkJLmMgPSB7IC5uYW1lID0gI0NfTkFNRSwgLnZhbCA9IENfTkFNRSB9LCBcCiYjNDM7CQkuaXNfc2VudGluYWwgPSB0cnVlLCBcCiYjNDM7CX0KJiM0MzsKJiM0MztlbnVtIHlubF9lbnVtX3R5cGUgewomIzQzOwlZTkxfRU5VTSwKJiM0MzsJWU5MX0ZMQUdTLAomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IGVudW1fc2V0IHsKJiM0MzsJY29uc3QgY2hhciAqbmFtZTsKJiM0MzsJY29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5OwomIzQzOwllbnVtIHlubF9lbnVtX3R5cGUgdHlwZTsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBsaW50ZXJfY3R4IHsKJiM0MzsJaW50IGVycm9yczsKJiM0MzsJaW50IHdhcm5pbmdzOwomIzQzOwljb25zdCBjaGFyICpuYW1lOwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBlcnJmKGZtdCwgLi4uKSBcCiYjNDM7CWRvIHsgXAomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7JXM6IEVSUk9SOiAmIzM0OyBmbXQsIGN0eC0mZ3Q7bmFtZSwgX19WQV9BUkdTX18pOyBcCiYjNDM7CQljdHgtJmd0O2Vycm9ycyYjNDM7JiM0Mzs7IFwKJiM0MzsJfSB3aGlsZSAoMCkKJiM0MzsKJiM0MzsjZGVmaW5lIHdhcm5mKGZtdCwgLi4uKSBcCiYjNDM7CWRvIHsgXAomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7JXM6IFdBUk46ICYjMzQ7IGZtdCwgY3R4LSZndDtuYW1lLCBfX1ZBX0FSR1NfXyk7IFwKJiM0MzsJCWN0eC0mZ3Q7d2FybmluZ3MmIzQzOyYjNDM7OyBcCiYjNDM7CX0gd2hpbGUgKDApCiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBsb25nIGxvbmcgZmluZF9uZXh0X3ZhbHVlKGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsCiYjNDM7CQkJCQljb25zdCBsb25nIGxvbmcgbGFzdF92YWwpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGVzLSZndDt0eXBlKSB7CiYjNDM7CWNhc2UgWU5MX0VOVU06CiYjNDM7CQlyZXR1cm4gbGFzdF92YWwgJiM0MzsgMTsKJiM0MzsJY2FzZSBZTkxfRkxBR1M6CiYjNDM7CQlyZXR1cm4gbGFzdF92YWwgJmx0OyZsdDsgMTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCS8qIHVucmVhY2hhYmxlICovCiYjNDM7CQlhYm9ydCgpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBsaW50X2VudW1fZW50cnkoc3RydWN0IGxpbnRlcl9jdHggKmN0eCwKJiM0MzsJCQkJICAgY29uc3Qgc3RydWN0IGVudW1fc2V0ICplcywKJiM0MzsJCQkJICAgY29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5LAomIzQzOwkJCQkgICBsb25nIGxvbmcgKmxhc3RfdmFsLCBjb25zdCBpbnQgaSwKJiM0MzsJCQkJICAgY29uc3QgaW50IGNudCkKJiM0Mzt7CiYjNDM7CWNvbnN0IGxvbmcgbG9uZyB2YWwgPSBlbnRyeS0mZ3Q7Yy52YWw7CiYjNDM7CiYjNDM7CWlmIChpICZndDsgMCAmYW1wOyZhbXA7IHZhbCAhPSAqbGFzdF92YWwgJmFtcDsmYW1wOyB2YWwgIT0gZmluZF9uZXh0X3ZhbHVlKGVzLCAqbGFzdF92YWwpKQomIzQzOwkJd2FybmYoJiMzNDslczogUG9zc2libGUgbWlzc2luZyBtZW1iZXIgYmVmb3JlICVzICglbGxkIC0mZ3Q7ICVsbGQpXG4mIzM0OywKJiM0MzsJCSAgICAgIGVzLSZndDtuYW1lLCBlbnRyeS0mZ3Q7Yy5uYW1lLCAqbGFzdF92YWwsIHZhbCk7CiYjNDM7CSpsYXN0X3ZhbCA9IGVudHJ5LSZndDtjLnZhbDsKJiM0MzsKJiM0MzsJaWYgKGkgPT0gY250IC0gMSAmYW1wOyZhbXA7IHN0cmNtcChlbnRyeS0mZ3Q7eW5sLm5hbWUsICYjMzQ7bWF4JiMzNDspID09IDApCiYjNDM7CQllcnJmKCYjMzQ7JXM6IFNlbnRpbmFsIHVzZWQgaW4gWU5MIHNwZWNcbiYjMzQ7LCBlcy0mZ3Q7bmFtZSk7CiYjNDM7CiYjNDM7CWlmIChlbnRyeS0mZ3Q7Yy5pc191bmRlZikgewomIzQzOwkJZXJyZigmIzM0OyVzOiAlczogJXMgbm90IGZvdW5kXG4mIzM0OywgZXMtJmd0O25hbWUsIGVudHJ5LSZndDt5bmwubmFtZSwKJiM0MzsJCSAgICAgZW50cnktJmd0O2MubmFtZSk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKGVudHJ5LSZndDt5bmwudmFsID09IGVudHJ5LSZndDtjLnZhbCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKGVudHJ5LSZndDtpc19zZW50aW5hbCkgewomIzQzOwkJaWYgKGVzLSZndDt0eXBlID09IFlOTF9FTlVNICZhbXA7JmFtcDsgZW50cnktJmd0O3lubC52YWwgJiM0MzsgMSA9PSBlbnRyeS0mZ3Q7Yy52YWwpCiYjNDM7CQkJcmV0dXJuOyAvKiBlZy4gREVWQ09ORl9NQVggaXMgdGhlIHN0b3JhZ2Ugc2l6ZSAqLwomIzQzOwkJd2FybmYoJiMzNDslczogU2VudGluYWwgbWlzbWF0Y2g6ICVsbGQgIT0gJWxsZCAoTGFzdCBZTkwgIT0gJXMpXG4mIzM0OywKJiM0MzsJCSAgICAgIGVzLSZndDtuYW1lLCBlbnRyeS0mZ3Q7eW5sLnZhbCwgZW50cnktJmd0O2MudmFsLCBlbnRyeS0mZ3Q7Yy5uYW1lKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWVycmYoJiMzNDslczogVmFsdWUgbWlzbWF0Y2g6ICVsbGQgIT0gJWxsZCAoJXMgIT0gJXMpXG4mIzM0OywgZXMtJmd0O25hbWUsCiYjNDM7CQkgICAgIGVudHJ5LSZndDt5bmwudmFsLCBlbnRyeS0mZ3Q7Yy52YWwsIGVudHJ5LSZndDt5bmwubmFtZSwKJiM0MzsJCSAgICAgZW50cnktJmd0O2MubmFtZSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGxpbnRfZW51bShzdHJ1Y3QgbGludGVyX2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5ID0gZXMtJmd0O2VudHJ5OwomIzQzOwlsb25nIGxvbmcgbGFzdF92YWw7CiYjNDM7CWludCBjbnQgPSAwOwomIzQzOwlpbnQgaSA9IDA7CiYjNDM7CiYjNDM7CXdoaWxlIChlbnRyeS0mZ3Q7eW5sLm5hbWUpIHsKJiM0MzsJCWlmICghZW50cnktJmd0O2lzX3NlbnRpbmFsKQomIzQzOwkJCWNudCYjNDM7JiM0Mzs7CiYjNDM7CQllbnRyeSYjNDM7JiM0Mzs7CiYjNDM7CX0KJiM0MzsJZW50cnkgPSBlcy0mZ3Q7ZW50cnk7CiYjNDM7CiYjNDM7CXdoaWxlIChlbnRyeS0mZ3Q7eW5sLm5hbWUpCiYjNDM7CQlsaW50X2VudW1fZW50cnkoY3R4LCBlcywgZW50cnkmIzQzOyYjNDM7LCAmYW1wO2xhc3RfdmFsLCBpJiM0MzsmIzQzOywgY250KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBpbnQgbGludGVyX3J1bihjb25zdCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsCiYjNDM7CQkJICAgICBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzKQomIzQzO3sKJiM0MzsJc3RydWN0IGxpbnRlcl9jdHggY3R4ID0gewomIzQzOwkJLm5hbWUgPSBhcmd2W2FyZ2MgJmd0OyAxID8gMSA6IDBdLAomIzQzOwl9OwomIzQzOwomIzQzOwl3aGlsZSAoZXMtJmd0O25hbWUpIHsKJiM0MzsJCWxpbnRfZW51bSgmYW1wO2N0eCwgZXMpOwomIzQzOwkJZXMmIzQzOyYjNDM7OwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChjdHguZXJyb3JzIHx8IGN0eC53YXJuaW5ncykKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0OyVzOiBMaW50ZXIgc3VtbWFyeTogJWQgZXJyb3JzLCAlZCB3YXJuaW5nc1xuJiMzNDssCiYjNDM7CQkJY3R4Lm5hbWUsIGN0eC5lcnJvcnMsIGN0eC53YXJuaW5ncyk7CiYjNDM7CiYjNDM7CXJldHVybiBFWElUX1NVQ0NFU1M7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkgYi90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weQppbmRleCAyYjM0ODNkYjFiNjBjLi41YmJlM2NiYThmNzU5IDEwMDc1NQotLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weQomIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weQpAQCAtMTY4OCw2ICYjNDM7MTY4OCw4IEBAIGNsYXNzIENvZGVXcml0ZXI6CiAgICAgICAgIHNlbGYuY2xvc2Vfb3V0X2ZpbGUoKQogCiAgICAgZGVmIGNsb3NlX291dF9maWxlKHNlbGYpOgomIzQzOyAgICAgICAgaWYgc2VsZi5fYmxvY2tfZW5kOgomIzQzOyAgICAgICAgICAgIHNlbGYuX291dC53cml0ZSgmIzM5O1x0JiMzOTsgKiBzZWxmLl9pbmQgJiM0MzsgJiMzOTt9XG4mIzM5OykKICAgICAgICAgaWYgc2VsZi5fb3V0ID09IG9zLnN5cy5zdGRvdXQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBBdm9pZCBtb2RpZnlpbmcgdGhlIGZpbGUgaWYgY29udGVudHMgZGlkbiYjMzk7dCBjaGFuZ2UKQEAgLTIwODQsNiAmIzQzOzIwODYsMzAgQEAgZGVmIHB1dF9lbnVtX3RvX3N0cihfZmFtaWx5LCBjdywgZW51bSk6CiAgICAgX3B1dF9lbnVtX3RvX3N0cl9oZWxwZXIoY3csIGVudW0ucmVuZGVyX25hbWUsIG1hcF9uYW1lLCAmIzM5O3ZhbHVlJiMzOTssIGVudW09ZW51bSkKIAogCiYjNDM7ZGVmIHB1dF9lbnVtX3RvX2xpbnRlcihmYW1pbHksIGN3LCBlbnVtKToKJiM0MzsgICAgbmFtZV9wZnggPSBlbnVtLmdldCgmIzM5O25hbWUtcHJlZml4JiMzOTssIGYmIzM0O3tmYW1pbHkuaWRlbnRfbmFtZX0te2VudW1bJiMzOTtuYW1lJiMzOTtdfS0mIzM0OykKJiM0MzsgICAgbWF4X25hbWUgPSBjX3VwcGVyKG5hbWVfcGZ4ICYjNDM7ICYjMzk7bWF4JiMzOTspCiYjNDM7ICAgIG1hcF9uYW1lID0gZiYjMzk7e2VudW0ucmVuZGVyX25hbWV9X2VudHJpZXMmIzM5OwomIzQzOyAgICBjdy5ibG9ja19zdGFydChsaW5lPWYmIzM0O3N0YXRpYyBjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSB7bWFwX25hbWV9W10gPSYjMzQ7KQomIzQzOyAgICB2YWwgPSAwCiYjNDM7ICAgIGZvciBlbnRyeSBpbiBlbnVtLmVudHJpZXMudmFsdWVzKCk6CiYjNDM7ICAgICAgICB2YWwgPSBlbnRyeS51c2VyX3ZhbHVlKCkKJiM0MzsgICAgICAgIGNfbmFtZSA9IGVudHJ5LmNfbmFtZQomIzQzOyAgICAgICAgY3cucChmJiMzOTsjaWYgZGVmaW5lZCh7Y19uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3tjX25hbWV9KSYjMzk7KQomIzQzOyAgICAgICAgY3cucChmJiMzOTtZTkxfRU5VTV9FTlRSWSgmIzM0O3tlbnRyeS5uYW1lfSYjMzQ7LCB7Y19uYW1lfSwge3ZhbH0pLCYjMzk7KQomIzQzOyAgICAgICAgY3cucCgmIzM5OyNlbHNlJiMzOTspCiYjNDM7ICAgICAgICBjdy5wKGYmIzM5O1lOTF9FTlVNX0JBRF9FTlRSWSgmIzM0O3tlbnRyeS5uYW1lfSYjMzQ7LCB7Y19uYW1lfSwge3ZhbH0pLCYjMzk7KQomIzQzOyAgICAgICAgY3cucCgmIzM5OyNlbmRpZiYjMzk7KQomIzQzOyAgICBjdy5wKGYmIzM5OyNpZiBkZWZpbmVkKHttYXhfbmFtZX0pIHx8IGRlZmluZWQoTElOVEVSX0hBU197bWF4X25hbWV9KSYjMzk7KQomIzQzOyAgICBjdy5wKGYmIzM5O1lOTF9FTlVNX1NFTlRJTkFMKHttYXhfbmFtZX0sIHt2YWx9KSwmIzM5OykKJiM0MzsgICAgY3cucCgmIzM5OyNlbmRpZiYjMzk7KQomIzQzOyAgICBjdy5wKCYjMzk7e30sJiMzOTspCiYjNDM7ICAgIGN3LmJsb2NrX2VuZChsaW5lPSYjMzk7OyYjMzk7KQomIzQzOyAgICBjdy5ubCgpCiYjNDM7ICAgIGVudW1fdHlwZSA9IGVudW1bJiMzOTt0eXBlJiMzOTtdLnVwcGVyKCkKJiM0MzsgICAgcmV0dXJuIGYmIzM5O3t7JiMzNDt7ZW51bS5uYW1lfSYjMzQ7LCAmYW1wO3ttYXBfbmFtZX1bMF0sIFlOTF97ZW51bV90eXBlfX19LCYjMzk7CiYjNDM7CiYjNDM7CiBkZWYgcHV0X2xvY2FsX3ZhcnMoc3RydWN0KToKICAgICBsb2NhbF92YXJzID0gW10KICAgICBoYXNfYXJyYXkgPSBGYWxzZQpAQCAtMzQ2Miw2ICYjNDM7MzQ4OCw3IEBAIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tc3BlYyYjMzk7LCBkZXN0PSYjMzk7c3BlYyYjMzk7LCB0eXBlPXN0ciwgcmVxdWlyZWQ9VHJ1ZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1oZWFkZXImIzM5OywgZGVzdD0mIzM5O2hlYWRlciYjMzk7LCBhY3Rpb249JiMzOTtzdG9yZV90cnVlJiMzOTssIGRlZmF1bHQ9Tm9uZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1zb3VyY2UmIzM5OywgZGVzdD0mIzM5O2hlYWRlciYjMzk7LCBhY3Rpb249JiMzOTtzdG9yZV9mYWxzZSYjMzk7KQomIzQzOyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1saW50ZXImIzM5OywgZGVzdD0mIzM5O2xpbnRlciYjMzk7LCBhY3Rpb249JiMzOTtzdG9yZV90cnVlJiMzOTspCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgmIzM5Oy0tdXNlci1oZWFkZXImIzM5OywgbmFyZ3M9JiMzOTsmIzQzOyYjMzk7LCBkZWZhdWx0PVtdKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJiMzOTstLWNtcC1vdXQmIzM5OywgYWN0aW9uPSYjMzk7c3RvcmVfdHJ1ZSYjMzk7LCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSYjMzk7RG8gbm90IG92ZXJ3cml0ZSB0aGUgb3V0cHV0IGZpbGUgaWYgdGhlIG5ldyBvdXRwdXQgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbGQmIzM5OykKQEAgLTM0NzAsOCAmIzQzOzM0OTcsMTAgQEAgZGVmIG1haW4oKToKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCYjMzk7LS1mdW5jdGlvbi1wcmVmaXgmIzM5OywgZGVzdD0mIzM5O2ZuX3ByZWZpeCYjMzk7LCB0eXBlPXN0cikKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiYjNDM7ICAgIGlmIGFyZ3MubGludGVyOgomIzQzOyAgICAgICAgYXJncy5oZWFkZXIgPSBGYWxzZQogICAgIGlmIGFyZ3MuaGVhZGVyIGlzIE5vbmU6Ci0gICAgICAgIHBhcnNlci5lcnJvcigmIzM0Oy0taGVhZGVyIG9yIC0tc291cmNlIGlzIHJlcXVpcmVkJiMzNDspCiYjNDM7ICAgICAgICBwYXJzZXIuZXJyb3IoJiMzNDstLWhlYWRlciwgLS1zb3VyY2Ugb3IgLS1saW50ZXIgaXMgcmVxdWlyZWQmIzM0OykKIAogICAgIGV4Y2x1ZGVfb3BzID0gW3JlLmNvbXBpbGUoZXhwcikgZm9yIGV4cHIgaW4gYXJncy5leGNsdWRlX29wXQogCkBAIC0zNDk0LDE3ICYjNDM7MzUyMywxOSBAQCBkZWYgbWFpbigpOgogICAgICAgICBjdy5wKGYmIzM5Oy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiB7cGFyc2VkLmxpY2Vuc2V9JiMzOTspCiAgICAgY3cucCgmIzM0Oy8qIERvIG5vdCBlZGl0IGRpcmVjdGx5LCBhdXRvLWdlbmVyYXRlZCBmcm9tOiAqLyYjMzQ7KQogICAgIGN3LnAoZiYjMzQ7LypcdHtzcGVjX2tlcm5lbH0gKi8mIzM0OykKLSAgICBjdy5wKGYmIzM0Oy8qIFlOTC1HRU4ge2FyZ3MubW9kZX0geyYjMzk7aGVhZGVyJiMzOTsgaWYgYXJncy5oZWFkZXIgZWxzZSAmIzM5O3NvdXJjZSYjMzk7fSAqLyYjMzQ7KQotICAgIGlmIGFyZ3MuZXhjbHVkZV9vcCBvciBhcmdzLnVzZXJfaGVhZGVyIG9yIGFyZ3MuZm5fcHJlZml4OgotICAgICAgICBsaW5lID0gJiMzOTsmIzM5OwotICAgICAgICBpZiBhcmdzLnVzZXJfaGVhZGVyOgotICAgICAgICAgICAgbGluZSAmIzQzOz0gJiMzOTsgLS11c2VyLWhlYWRlciAmIzM5Oy5qb2luKFsmIzM5OyYjMzk7XSAmIzQzOyBhcmdzLnVzZXJfaGVhZGVyKQotICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfb3A6Ci0gICAgICAgICAgICBsaW5lICYjNDM7PSAmIzM5OyAtLWV4Y2x1ZGUtb3AgJiMzOTsuam9pbihbJiMzOTsmIzM5O10gJiM0MzsgYXJncy5leGNsdWRlX29wKQotICAgICAgICBpZiBhcmdzLmZuX3ByZWZpeDoKLSAgICAgICAgICAgIGxpbmUgJiM0Mzs9IGYmIzM5OyAtLWZ1bmN0aW9uLXByZWZpeCB7YXJncy5mbl9wcmVmaXh9JiMzOTsKLSAgICAgICAgY3cucChmJiMzOTsvKiBZTkwtQVJHe2xpbmV9ICovJiMzOTspCi0gICAgY3cucCgmIzM5Oy8qIFRvIHJlZ2VuZXJhdGUgcnVuOiB0b29scy9uZXQveW5sL3lubC1yZWdlbi5zaCAqLyYjMzk7KQomIzQzOyAgICBpZiBub3QgYXJncy5saW50ZXI6CiYjNDM7ICAgICAgICB5bmxfYXJnID0gJiMzOTtoZWFkZXImIzM5OyBpZiBhcmdzLmhlYWRlciBlbHNlICYjMzk7c291cmNlJiMzOTsKJiM0MzsgICAgICAgIGN3LnAoZiYjMzQ7LyogWU5MLUdFTiB7YXJncy5tb2RlfSB7eW5sX2FyZ30gKi8mIzM0OykKJiM0MzsgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcCBvciBhcmdzLnVzZXJfaGVhZGVyIG9yIGFyZ3MuZm5fcHJlZml4OgomIzQzOyAgICAgICAgICAgIGxpbmUgPSAmIzM5OyYjMzk7CiYjNDM7ICAgICAgICAgICAgaWYgYXJncy51c2VyX2hlYWRlcjoKJiM0MzsgICAgICAgICAgICAgICAgbGluZSAmIzQzOz0gJiMzOTsgLS11c2VyLWhlYWRlciAmIzM5Oy5qb2luKFsmIzM5OyYjMzk7XSAmIzQzOyBhcmdzLnVzZXJfaGVhZGVyKQomIzQzOyAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDoKJiM0MzsgICAgICAgICAgICAgICAgbGluZSAmIzQzOz0gJiMzOTsgLS1leGNsdWRlLW9wICYjMzk7LmpvaW4oWyYjMzk7JiMzOTtdICYjNDM7IGFyZ3MuZXhjbHVkZV9vcCkKJiM0MzsgICAgICAgICAgICBpZiBhcmdzLmZuX3ByZWZpeDoKJiM0MzsgICAgICAgICAgICAgICAgbGluZSAmIzQzOz0gZiYjMzk7IC0tZnVuY3Rpb24tcHJlZml4IHthcmdzLmZuX3ByZWZpeH0mIzM5OwomIzQzOyAgICAgICAgICAgIGN3LnAoZiYjMzk7LyogWU5MLUFSR3tsaW5lfSAqLyYjMzk7KQomIzQzOyAgICAgICAgY3cucCgmIzM5Oy8qIFRvIHJlZ2VuZXJhdGUgcnVuOiB0b29scy9uZXQveW5sL3lubC1yZWdlbi5zaCAqLyYjMzk7KQogICAgIGN3Lm5sKCkKIAogICAgIGlmIGFyZ3MubW9kZSA9PSAmIzM5O3VhcGkmIzM5OzoKQEAgLTM1MzksNiAmIzQzOzM1NzAsOCBAQCBkZWYgbWFpbigpOgogICAgICAgICAgICAgY3cucCgmIzM5OyNpbmNsdWRlICZsdDtsaW51eC90eXBlcy5oJmd0OyYjMzk7KQogICAgICAgICAgICAgaWYgZmFtaWx5X2NvbnRhaW5zX2JpdGZpZWxkMzIocGFyc2VkKToKICAgICAgICAgICAgICAgICBjdy5wKCYjMzk7I2luY2x1ZGUgJmx0O2xpbnV4L25ldGxpbmsuaCZndDsmIzM5OykKJiM0MzsgICAgICAgIGVsaWYgYXJncy5saW50ZXI6CiYjNDM7ICAgICAgICAgICAgY3cucCgmIzM5OyNpbmNsdWRlICYjMzQ7Li4vbGludGVyL2xpbnRlci5oJiMzNDsmIzM5OykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGN3LnAoZiYjMzk7I2luY2x1ZGUgJiMzNDt7aGRyX2ZpbGV9JiMzNDsmIzM5OykKICAgICAgICAgICAgIGN3LnAoJiMzOTsjaW5jbHVkZSAmIzM0O3lubC5oJiMzNDsmIzM5OykKQEAgLTM2OTAsNiAmIzQzOzM3MjMsMjEgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgY3cubmwoKQogICAgICAgICAgICAgICAgICAgICBwcmludF93cmFwcGVkX3R5cGUocmkpCiAgICAgICAgICAgICBjdy5ubCgpCiYjNDM7ICAgICAgICBlbGlmIGFyZ3MubGludGVyOgomIzQzOyAgICAgICAgICAgIGVudW1fc2V0cyA9IFtdCiYjNDM7ICAgICAgICAgICAgZm9yIG5hbWUsIGNvbnN0IGluIHBhcnNlZC5jb25zdHMuaXRlbXMoKToKJiM0MzsgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25zdCwgRW51bVNldCk6CiYjNDM7ICAgICAgICAgICAgICAgICAgICBlbnVtX3NldHMuYXBwZW5kKHB1dF9lbnVtX3RvX2xpbnRlcihwYXJzZWQsIGN3LCBjb25zdCkpCiYjNDM7ICAgICAgICAgICAgY3cubmwoKQomIzQzOyAgICAgICAgICAgIGN3LmJsb2NrX3N0YXJ0KGxpbmU9JiMzNDtzdGF0aWMgY29uc3Qgc3RydWN0IGVudW1fc2V0IGVudW1zW10gPSYjMzQ7KQomIzQzOyAgICAgICAgICAgIGZvciBlbnVtX3NldCBpbiBlbnVtX3NldHM6CiYjNDM7ICAgICAgICAgICAgICAgIGN3LnAoZW51bV9zZXQpCiYjNDM7ICAgICAgICAgICAgY3cucCgmIzM5O3t9LCYjMzk7KQomIzQzOyAgICAgICAgICAgIGN3LmJsb2NrX2VuZChsaW5lPSYjMzk7OyYjMzk7KQomIzQzOyAgICAgICAgICAgIGN3Lm5sKCkKJiM0MzsgICAgICAgICAgICBjdy53cml0ZV9mdW5jKCYjMzk7aW50JiMzOTssICYjMzk7bWFpbiYjMzk7LAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1bJiMzOTtjb25zdCBpbnQgYXJnYyYjMzk7LCAmIzM5O2NvbnN0IGNoYXIgKiphcmd2JiMzOTtdLAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keT1bJiMzOTtyZXR1cm4gbGludGVyX3J1bihhcmdjLCBhcmd2LCAmYW1wO2VudW1zWzBdKTsmIzM5O10pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjdy5wKCYjMzk7LyogRW51bXMgKi8mIzM5OykKICAgICAgICAgICAgIHB1dF9vcF9uYW1lKHBhcnNlZCwgY3cpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzUzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IEZvY3VzIG9uIE5ldGxpbmsgU3BlY3MgYW5kIFVBUEkgSGVhZGVycyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIHByaW1hcmlseSBmb2N1c2VkIG9uIHVwZGF0aW5nIHRoZSB1c2VyLXNwYWNlIEFQSSAoVUFQSSkgZGVmaW5pdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIE5ldGxpbmsgYW5kIHRoZSB1bmRlcmx5aW5nIGhlYWRlciBmaWxlcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9gIGRpcmVjdG9yeSwgd2hpY2ggaXMgd2hlcmUgdGhlIGhlYXJ0IG9mIE5ldGxpbmsmIzM5O3Mgc3BlY2lmaWNhdGlvbiBsaWVzLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byB0aGUgWUFNTCBmaWxlcy4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIG9yIG1vZGlmeWluZyBzcGVjaWZpY2F0aW9ucyBmb3IgYGNvbm50cmFja2AsIGBuZnRhYmxlc2AsIGFuZCBgcnQtbGlua2Agd2l0aGluIHRoZSBOZXRsaW5rIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aG9zZSBZQU1MIGNoYW5nZXMg4oCTIGZpZWxkIG5hbWVzLCBwcmVmaXhlcywgaG93IHRoZXkgbWFwIHRvIGtlcm5lbCBzdHJ1Y3R1cmVzLCBhbmQgc28gb24uCgpUaGUgYHJ0LWxpbmtgIHVwZGF0ZXMgYXJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIHRoZXkgbGlrZWx5IHNpZ25hbCBpbXByb3ZlbWVudHMgdG8gdGhlIHJvdXRpbmcgdGFibGUgYW5kIGxpbmsgbWFuYWdlbWVudCBBUElzLCB3aGljaCBhcmUgYWx3YXlzIGNyaXRpY2FsLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXNlIHNwZWMgbW9kaWZpY2F0aW9ucyByZWZsZWN0IG5ldyBmZWF0dXJlcywgYnVnIGZpeGVzLCBvciBzaW1wbHkgY2xhcmlmaWNhdGlvbnMgYW5kIGJldHRlciBvcmdhbml6YXRpb24uCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSBgaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaGAgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGluY2x1ZGUgZ3VhcmQgdXBkYXRlLCBjaGFuZ2luZyB0aGUgZGVmaW5lIG5hbWUgZnJvbSBgX0xJTlVYX1NOTVBfSGAgdG8gYF9VQVBJX0xJTlVYX1NOTVBfSGAuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBlbnN1cmluZyB0aGVzZSB1c2VyLXNwYWNlIGhlYWRlcnMgZG9uJiMzOTt0IGNvbGxpZGUgd2l0aCBpbnRlcm5hbCBrZXJuZWwgZGVmaW5pdGlvbnMgb3Igb3RoZXIgVUFQSSBjb21wb25lbnRzLiBJIHdhbnQgdG8gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgYGluY2x1ZGUvbGludXgvc25tcC5oYCBleGlzdHMgdG8gYmUgc3VyZSB3ZSBhcmUgbm90IGRlcHJlY2F0aW5nIGl0LgoKRmluYWxseSwgdGhlIGB0b29scy9uZXQveW5sL2AgZGlyZWN0b3J5IHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gc29tZSBzb3J0IG9mIGNvZGUgZ2VuZXJhdGlvbiBhbmQgbGludGluZyBwcm9jZXNzLCBlc3BlY2lhbGx5IGFyb3VuZCB0aGUgTmV0bGluayBkZWZpbml0aW9ucy4gSSBzZWUgYWRkaXRpb25zIGZvciBsaW50ZXIgaWdub3JlcywgdGFyZ2V0cywgYSBuZXcgc2hlbGwgc2NyaXB0IChgZ2VuLWguc2hgKSwgYSBoZWFkZXIgKGBsaW50ZXIuaGApLCBhbmQgUHl0aG9uIGNvZGUgdXBkYXRlcy4gVGhpcyBsaWtlbHkgYXV0b21hdGVzIHZhbGlkYXRpb24gb2YgTmV0bGluayBzcGVjaWZpY2F0aW9ucyBhbmQvb3IgZ2VuZXJhdGVzIEMgY29kZSBiYXNlZCBvbiB0aG9zZSBzcGVjaWZpY2F0aW9ucy4gSXQmIzM5O3MgYSBuaWNlIGltcHJvdmVtZW50IGZvciBtYWludGFpbmFiaWxpdHkuIEkgd2FudCB0byBsb29rIG1vcmUgaW50byB0aGlzLCBwYXJ0aWN1bGFybHkgdGhlIFB5dGhvbiBjb2RlLCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBsaW50ZXIgZnVuY3Rpb25zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBydC1saW5rLnlhbWxgIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIG5hdHVyZSBvZiB0aGUgdXBkYXRlcywgZm9sbG93ZWQgYnkgdGhlIGxpbnRlciBjb2RlIHRvIHNlZSBob3cgaXQgd29ya3MuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIHRvb2xzIHRvIHZlcmlmeSBhbmQgdW5kZXJzdGFuZCB0aGVzZSBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfTElOVVhfU05NUF9IJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmgtNy1cbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg6ODojaWZuZGVmIF9VQVBJX0xJTlVYX1NOTVBfSFxuaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaDo5OiNkZWZpbmUgX1VBUElfTElOVVhfU05NUF9IXG5pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLTEwLVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg9MzUyPWVudW1cbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLTM3NC1cbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg6Mzc1OiNlbmRpZlx0LyogX1VBUElfTElOVVhfU05NUF9IICovXG4tLVxudG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzPTQzPUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0xJTktfSCxpZl9saW5rLmgpIFxcXG4tLVxudG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzLTQ5LVx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9WTEFOX0hfLGlmX3ZsYW4uaCkgXFxcbnRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwczo1MDpcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfU05NUF9ILHNubXAuaCkgXFxcbnRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcy01MS1cdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfRFBMTF9ILGRwbGwuaClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTcwNgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFNOTVAgSGVhZGVyKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHN5c3RlbSBoYW5kbGVzIFNOTVAuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoZSBleGlzdGVuY2UgYW5kIGNvbnRlbnRzIG9mIHRoZSBjb3JlIGhlYWRlciBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIGZvciBgaW5jbHVkZS9saW51eC9zbm1wLmhgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGZ1bmRhbWVudGFsIGRlZmluaXRpb25zLCBzdHJ1Y3R1cmVzLCBhbmQgcG9zc2libHkgZXZlbiBzb21lIGJhc2ljIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyByZWxhdGVkIHRvIHRoZSBMaW51eCBrZXJuZWwmIzM5O3MgU05NUCBpbXBsZW1lbnRhdGlvbi4gS25vd2luZyBpdHMgcHJlc2VuY2UgKG9yIGFic2VuY2UpIHByb3ZpZGVzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyB0aGUgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgZXhpc3RpbmcgY29kZSBoYXMgaXRzIG93biBjdXN0b20gZXh0ZW5zaW9ucywgb3IgbGV2ZXJhZ2VzIHRoZSBzdGFuZGFyZCBTTk1QIGludGVyZmFjZS4gVGhhdCBoZWFkZXIgZmlsZSBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c25tcFxcLmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkxOAoJCQkJCQkJb3V0cHV0OiA4OQoJCQkJCQkJdGhvdWdodHM6IDU2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbnN1bHQgU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMg4oCTIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBmb3IgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVsZXZhbnQgY2F0ZWdvcmllcyBhcmUgdGhvc2UgdGhhdCBkb24mIzM5O3QgaW52b2x2ZSBrZXJuZWwgZXhlY3V0YWJsZSBsb2dpYyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBjaGFuZ2VzIHRvIHVzZXItc3BhY2UgdG9vbHMsIGFuZCBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nLgoKTm93LCBJJiMzOTtsbCBnbyB0aHJvdWdoIHRoZSBkaWZmIGZpbGUgYnkgZmlsZS4gSSBzZWU6CgoxLiAgYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9jb25udHJhY2sueWFtbGAg4oCTICoqRG9jdW1lbnRhdGlvbioqCjIuICBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxgIOKAkyAqKkRvY3VtZW50YXRpb24qKgozLiAgYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWxgIOKAkyAqKkRvY3VtZW50YXRpb24qKgo0LiAgYGluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmhgIOKAkyBUaGlzIGlzIGEgaGVhZGVyIGZpbGUsIGJ1dCBpdCYjMzk7cyBhIHNpbXBsZSBgI2lmbmRlZmAgZ3VhcmQgY2hhbmdlLiBObyBhY3R1YWwgZXhlY3V0YWJsZSBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGRlZmluaXRpb25zIGFyZSBiZWluZyBtb2RpZmllZC4gKipIZWFkZXIgR3VhcmQgQ2hhbmdlKioKNS4gIGB0b29scy9uZXQveW5sL01ha2VmaWxlLmRlcHNgIOKAkyAqKnRvb2xzLyoqCjYuICBgdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZWAg4oCTICoqdG9vbHMvKioKNy4gIGB0b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZWAg4oCTICoqdG9vbHMvKioKOC4gIGB0b29scy9uZXQveW5sL2xpbnRlci9nZW4taC5zaGAg4oCTICoqdG9vbHMvKioKOS4gIGB0b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaGAg4oCTICoqdG9vbHMvKioKMTAuIGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWAg4oCTICoqdG9vbHMvKioKCkFuYWx5emluZyB0aGUgZGlmZiwgSSBjYW4gY29uZmlybSB0aGF0IGFsbCB0aGUgY2hhbmdlcyBmYWxsIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3JpZXMgSSYjMzk7bSBzdXBwb3NlZCB0byBpZ25vcmUuIEl0JiMzOTtzIGRvY3VtZW50YXRpb24sIHRvb2xzIChZTkwgbmV0bGluayB0b29sL2xpbnRlciBzdXBwb3J0KSwgYW5kIGEgdHJpdmlhbCBoZWFkZXIgZ3VhcmQgcmVuYW1lLiBObyBtb2RpZmljYXRpb25zIGFmZmVjdCB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGFibGUgbG9naWMsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBvdmVyYWxsIGJlaGF2aW9yLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBjcml0ZXJpYSBkZWZpbmVkLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIHNldCB0byBgZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZSAtICoqQ2hlY2tlZCoqCiogICBgRm9jdXNTeW1ib2xzYDogXFsgXSAtICoqSW1wbGljaXRseSBFbXB0eSoqCiogICBgRW5hYmxlQ29uZmlnc2A6IFxbIF0gLSAqKkltcGxpY2l0bHkgRW1wdHkqKgoqICAgYFJlYXNvbmluZ2A6IENvbmNpc2UgZXhwbGFuYXRpb24sIHdoaWNoIEkmIzM5O3ZlIGZvcm11bGF0ZWQuIC0gKipDaGVja2VkKioKCldpdGggdGhhdCwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudCBhbmQgcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIG1vZGlmaWVzIGRvY3VtZW50YXRpb24gKFlBTUwgc3BlY3MgaW4gRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzLyksIHVzZXItc3BhY2UgdG9vbGluZy9saW50ZXJzICh0b29scy9uZXQveW5sLyksIGFuZCBhbiBpbmNsdWRlIGd1YXJkIGluIGluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmguIE5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBtb2RpZmllcyBkb2N1bWVudGF0aW9uIChZQU1MIHNwZWNzIGluIERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy8pLCB1c2VyLXNwYWNlIHRvb2xpbmcvbGludGVycyAodG9vbHMvbmV0L3lubC8pLCBhbmQgYW4gaW5jbHVkZSBndWFyZCBpbiBpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLiBObyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIyOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo1MjoyNi45NzA4NTM4NDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDc2Mzk0MjQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBtb2RpZmllcyBkb2N1bWVudGF0aW9uIChZQU1MIHNwZWNzIGluIERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy8pLCB1c2VyLXNwYWNlIHRvb2xpbmcvbGludGVycyAodG9vbHMvbmV0L3lubC8pLCBhbmQgYW4gaW5jbHVkZSBndWFyZCBpbiBpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLiBObyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo1MjoyNi45NzA4NTk3OTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyOTA1OTgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJkMTBiZTJmMDAzOWRlMTk1OGIyYjU1YmIwMmE0NWExMjI1YWExZmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NTI6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sXFxuaW5kZXggYjFlYjEwMmFiODQzMi4uNTQzZGNkZGIwNDY0NyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcXG5AQCAtMiw2ICsyLDcgQEBcXG4gLS0tXFxuIG5hbWU6IGNvbm50cmFja1xcbiBwcm90b2NvbDogbmV0bGluay1yYXdcXG4rdWFwaS1oZWFkZXI6IGxpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcXG4gcHJvdG9udW06IDEyXFxuIFxcbiBkb2M6IFxcdTAwM2UtXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxcXG5pbmRleCAyMWVkZjNkMjVmMzRiLi43NmY2OWVkODJhMjRkIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxcXG5AQCAtMiw2ICsyLDcgQEBcXG4gLS0tXFxuIG5hbWU6IG5mdGFibGVzXFxuIHByb3RvY29sOiBuZXRsaW5rLXJhd1xcbit1YXBpLWhlYWRlcjogbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFxuIHByb3RvbnVtOiAxMlxcbiBcXG4gZG9jOiBcXHUwMDNlLVxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxcbmluZGV4IDYxZWJiOWEyYmFkNTEuLmZlNTJkNTA4ZDYwNzUgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWxcXG5AQCAtMjUsMTcgKzI1LDE3IEBAIGRlZmluaXRpb25zOlxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogbG9vcGJhY2tcXG4gICAgICAgLVxcbi0gICAgICAgIG5hbWU6IHBvaW50LXRvLXBvaW50XFxuKyAgICAgICAgbmFtZTogcG9pbnRvcG9pbnRcXG4gICAgICAgLVxcbi0gICAgICAgIG5hbWU6IG5vLXRyYWlsZXJzXFxuKyAgICAgICAgbmFtZTogbm90cmFpbGVyc1xcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcnVubmluZ1xcbiAgICAgICAtXFxuLSAgICAgICAgbmFtZTogbm8tYXJwXFxuKyAgICAgICAgbmFtZTogbm9hcnBcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IHByb21pc2NcXG4gICAgICAgLVxcbi0gICAgICAgIG5hbWU6IGFsbC1tdWx0aVxcbisgICAgICAgIG5hbWU6IGFsbG11bHRpXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBtYXN0ZXJcXG4gICAgICAgLVxcbkBAIC00NSw3ICs0NSw3IEBAIGRlZmluaXRpb25zOlxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcG9ydHNlbFxcbiAgICAgICAtXFxuLSAgICAgICAgbmFtZTogYXV0by1tZWRpYVxcbisgICAgICAgIG5hbWU6IGF1dG9tZWRpYVxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogZHluYW1pY1xcbiAgICAgICAtXFxuQEAgLTU4LDYgKzU4LDcgQEAgZGVmaW5pdGlvbnM6XFxuICAgICBuYW1lOiB2bGFuLXByb3RvY29sc1xcbiAgICAgdHlwZTogZW51bVxcbiAgICAgZW51bS1uYW1lOlxcbisgICAgbmFtZS1wcmVmaXg6IGV0aC1wLVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IDgwMjFxXFxuQEAgLTMwNSwxMCArMzA2LDEzIEBAIGRlZmluaXRpb25zOlxcbiAgIC1cXG4gICAgIG5hbWU6IGlwdjQtZGV2Y29uZlxcbiAgICAgZW51bS1uYW1lOlxcbisgICAgbmFtZS1wcmVmaXg6IGlwdjQtZGV2Y29uZi1cXG4rICAgIGhlYWRlcjogbGludXgvaXAuaFxcbiAgICAgdHlwZTogZW51bVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IGZvcndhcmRpbmdcXG4rICAgICAgICB2YWx1ZTogMVxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogbWMtZm9yd2FyZGluZ1xcbiAgICAgICAtXFxuQEAgLTM3Niw2ICszODAsOCBAQCBkZWZpbml0aW9uczpcXG4gICAtXFxuICAgICBuYW1lOiBpcHY2LWRldmNvbmZcXG4gICAgIGVudW0tbmFtZTpcXG4rICAgIG5hbWUtcHJlZml4OiBkZXZjb25mLVxcbisgICAgaGVhZGVyOiBsaW51eC9pcHY2LmhcXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC1cXG5AQCAtNTAxLDYgKzUwNyw4IEBAIGRlZmluaXRpb25zOlxcbiAgIC1cXG4gICAgIG5hbWU6IGlmbGEtaWNtcDYtc3RhdHNcXG4gICAgIGVudW0tbmFtZTpcXG4rICAgIG5hbWUtcHJlZml4OiBpY21wNi1taWItXFxuKyAgICBoZWFkZXI6IGxpbnV4L3NubXAuaFxcbiAgICAgdHlwZTogZW51bVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLVxcbkBAIC01MjAsNiArNTI4LDggQEAgZGVmaW5pdGlvbnM6XFxuICAgLVxcbiAgICAgbmFtZTogaWZsYS1pbmV0Ni1zdGF0c1xcbiAgICAgZW51bS1uYW1lOlxcbisgICAgbmFtZS1wcmVmaXg6IGlwc3RhdHMtbWliLVxcbisgICAgaGVhZGVyOiBsaW51eC9zbm1wLmhcXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC1cXG5AQCAtNTMxLDExICs1NDEsMjEgQEAgZGVmaW5pdGlvbnM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBpbmRlbGl2ZXJzXFxuICAgICAgIC1cXG4tICAgICAgICBuYW1lOiBvdXRmb3J3ZGF0YWdyYW1zXFxuKyAgICAgICAgbmFtZTogbm9lY3Rwa3RzXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBlY3QxcGt0c1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogZWN0MHBrdHNcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IGNlcGt0c1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogb3V0cmVxdWVzdHNcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IG91dHBrdHNcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IG91dG9jdGV0c1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogb3V0Zm9yd2RhdGFncmFtc1xcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogaW5oZHJlcnJvcnNcXG4gICAgICAgLVxcbkBAIC01ODYsMTQgKzYwNiw2IEBAIGRlZmluaXRpb25zOlxcbiAgICAgICAgIG5hbWU6IG91dGJjYXN0b2N0ZXRzXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBjc3VtZXJyb3JzXFxuLSAgICAgIC1cXG4tICAgICAgICBuYW1lOiBub2VjdHBrdHNcXG4tICAgICAgLVxcbi0gICAgICAgIG5hbWU6IGVjdDEtcGt0c1xcbi0gICAgICAtXFxuLSAgICAgICAgbmFtZTogZWN0MC1wa3RzXFxuLSAgICAgIC1cXG4tICAgICAgICBuYW1lOiBjZXBrdHNcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IHJlYXNtLW92ZXJsYXBzXFxuICAgLSBuYW1lOiBici1ib29sb3B0LW11bHRpXFxuQEAgLTY0MCw2ICs2NTIsOCBAQCBkZWZpbml0aW9uczpcXG4gICAgIG5hbWU6IHZsYW4tZmxhZ3NcXG4gICAgIHR5cGU6IGZsYWdzXFxuICAgICBlbnVtLW5hbWU6XFxuKyAgICBuYW1lLXByZWZpeDogdmxhbi1mbGFnLVxcbisgICAgaGVhZGVyOiBsaW51eC9pZl92bGFuLmhcXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC0gcmVvcmRlci1oZHJcXG4gICAgICAgLSBndnJwXFxuQEAgLTcyNyw2ICs3NDEsOCBAQCBkZWZpbml0aW9uczpcXG4gICAgIG5hbWU6IGlmbGEtdmYtbGluay1zdGF0ZS1lbnVtXFxuICAgICB0eXBlOiBlbnVtXFxuICAgICBlbnVtLW5hbWU6XFxuKyAgICBuYW1lLXByZWZpeDogaWZsYS12Zi1saW5rLXN0YXRlLVxcbisgICAgaGVhZGVyOiBsaW51eC9pZl9saW5rLmhcXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC0gYXV0b1xcbiAgICAgICAtIGVuYWJsZVxcbkBAIC03OTQsNiArODEwLDcgQEAgZGVmaW5pdGlvbnM6XFxuICAgICBuYW1lOiBydGV4dC1maWx0ZXJcXG4gICAgIHR5cGU6IGZsYWdzXFxuICAgICBlbnVtLW5hbWU6XFxuKyAgICBuYW1lLXByZWZpeDogcnRleHQtZmlsdGVyLVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLSB2ZlxcbiAgICAgICAtIGJydmxhblxcbkBAIC04MDYsMTggKzgyMywyMCBAQCBkZWZpbml0aW9uczpcXG4gICAtXFxuICAgICBuYW1lOiBuZXRraXQtcG9saWN5XFxuICAgICB0eXBlOiBlbnVtXFxuLSAgICBlbnVtLW5hbWU6XFxuKyAgICBlbnVtLW5hbWU6IG5ldGtpdC1hY3Rpb25cXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtXFxuICAgICBlbnRyaWVzOlxcbiAgICAgICAtXFxuLSAgICAgICAgbmFtZTogZm9yd2FyZFxcbisgICAgICAgIG5hbWU6IHBhc3NcXG4gICAgICAgICB2YWx1ZTogMFxcbiAgICAgICAtXFxuLSAgICAgICAgbmFtZTogYmxhY2tob2xlXFxuKyAgICAgICAgbmFtZTogZHJvcFxcbiAgICAgICAgIHZhbHVlOiAyXFxuICAgLVxcbiAgICAgbmFtZTogbmV0a2l0LW1vZGVcXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudW0tbmFtZTogbmV0a2l0LW1vZGVcXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtXFxuICAgICBlbnRyaWVzOlxcbiAgICAgICAtIG5hbWU6IGwyXFxuICAgICAgIC0gbmFtZTogbDNcXG5AQCAtODI1LDcgKzg0NCw4IEBAIGRlZmluaXRpb25zOlxcbiAgIC1cXG4gICAgIG5hbWU6IG5ldGtpdC1zY3J1YlxcbiAgICAgdHlwZTogZW51bVxcbi0gICAgZW51bS1uYW1lOlxcbisgICAgZW51bS1uYW1lOiBuZXRraXQtc2NydWJcXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtc2NydWItXFxuICAgICBlbnRyaWVzOlxcbiAgICAgICAtIG5hbWU6IG5vbmVcXG4gICAgICAgLSBuYW1lOiBkZWZhdWx0XFxuQEAgLTgzMywxMyArODUzLDE0IEBAIGRlZmluaXRpb25zOlxcbiAgICAgbmFtZTogbmV0a2l0LXBhaXJpbmdcXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudW0tbmFtZTogbmV0a2l0LXBhaXJpbmdcXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtZGV2aWNlLVxcbiAgICAgZW50cmllczpcXG4gICAgICAgLSBuYW1lOiBwYWlyXFxuICAgICAgIC0gbmFtZTogc2luZ2xlXFxuICAgLVxcbiAgICAgbmFtZTogb3Zwbi1tb2RlXFxuICAgICBlbnVtLW5hbWU6IG92cG4tbW9kZVxcbi0gICAgbmFtZS1wcmVmaXg6IG92cG4tbW9kZVxcbisgICAgbmFtZS1wcmVmaXg6IG92cG4tbW9kZS1cXG4gICAgIHR5cGU6IGVudW1cXG4gICAgIGVudHJpZXM6XFxuICAgICAgIC0gcDJwXFxuQEAgLTg0OCw2ICs4NjksNyBAQCBkZWZpbml0aW9uczpcXG4gICAgIG5hbWU6IGJyLXN0cC1tb2RlXFxuICAgICB0eXBlOiBlbnVtXFxuICAgICBlbnVtLW5hbWU6IGJyLXN0cC1tb2RlXFxuKyAgICBuYW1lLXByZWZpeDogYnItc3RwLW1vZGUtXFxuICAgICBlbnRyaWVzOlxcbiAgICAgICAtIGF1dG9cXG4gICAgICAgLSB1c2VyXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oXFxuaW5kZXggNDlmNTY0MDA5MmEwZC4uMjZiZGFiYzUwMmZlYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaFxcbkBAIC01LDggKzUsOCBAQFxcbiAgKiBBdXRob3I6IEhpZGVha2kgWU9TSElGVUpJIFxcdTAwM2N5b3NoZnVqaUBsaW51eC1pcHY2Lm9yZ1xcdTAwM2VcXG4gICovXFxuIFxcbi0jaWZuZGVmIF9MSU5VWF9TTk1QX0hcXG4tI2RlZmluZSBfTElOVVhfU05NUF9IXFxuKyNpZm5kZWYgX1VBUElfTElOVVhfU05NUF9IXFxuKyNkZWZpbmUgX1VBUElfTElOVVhfU05NUF9IXFxuIFxcbiAvKiBpcHN0YXRzIG1pYiBkZWZpbml0aW9ucyAqL1xcbiAvKlxcbkBAIC0zNzIsNCArMzcyLDQgQEAgZW51bVxcbiBcXHRfX0xJTlVYX01JQl9UTFNNQVhcXG4gfTtcXG4gXFxuLSNlbmRpZlxcdC8qIF9MSU5VWF9TTk1QX0ggKi9cXG4rI2VuZGlmXFx0LyogX1VBUElfTElOVVhfU05NUF9IICovXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcyBiL3Rvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwc1xcbmluZGV4IDI3NzEzNzUzMzlkOWMuLjhlMTM2YTVkZjg5OTEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXFxuKysrIGIvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXFxuQEAgLTQwLDggKzQwLDE1IEBAIENGTEFHU19vdnNfdnBvcnQ6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX09QRU5WU1dJVENIX0gsb3BlbnZzd2l0Y2guaClcXG4gQ0ZMQUdTX3BzcDo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9QU1BfSCxwc3AuaClcXG4gQ0ZMQUdTX3J0LWFkZHI6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxcXFxuIFxcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX0lGX0FERFJfSCxpZl9hZGRyLmgpXFxuLUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXFxcXFxcbi1cXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0xJTktfSCxpZl9saW5rLmgpXFxuK0NGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0xJTktfSCxpZl9saW5rLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JUF9ILGlwLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9JUFY2X0gsaXB2Ni5oKSBcXFxcXFxuK1xcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfQlJJREdFX0gsaWZfYnJpZGdlLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9JRl9UVU5ORUxfSF8saWZfdHVubmVsLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9WTEFOX0hfLGlmX3ZsYW4uaCkgXFxcXFxcbitcXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX1NOTVBfSCxzbm1wLmgpIFxcXFxcXG4rXFx0JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9EUExMX0gsZHBsbC5oKVxcbiBDRkxBR1NfcnQtbmVpZ2g6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKSBcXFxcXFxuIFxcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX05FSUdIQk9VUl9ILG5laWdoYm91ci5oKVxcbiBDRkxBR1NfcnQtcm91dGU6PSQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX1JUTkVUTElOS19ILHJ0bmV0bGluay5oKVxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZVxcbmluZGV4IDg1OWE2ZmI0NDZlMTQuLjIwZGQ3MGNkNzA5ZWUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZVxcbisrKyBiL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmVcXG5AQCAtMSwzICsxLDYgQEBcXG4gKi11c2VyLmNcXG4gKi11c2VyLmhcXG4rKi1saW50ZXIuY1xcbisqLWxpbnRlci5oXFxuKyotbGludGVyXFxuICoucnN0XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGVcXG5pbmRleCA1YTE4NjM0OWI1YTg2Li5iY2Y3ZjQ1NTYzMTMwIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGVcXG5AQCAtMzMsOCArMzMsOSBAQCBPQkpTPSQocGF0c3Vic3QgJSwlLXVzZXIubywke0dFTlN9KVxcbiBTUEVDU19QQVRIUz0kKHdpbGRjYXJkICQoU1BFQ1NfRElSKS8qLnlhbWwpXFxuIFNQRUNTPSQocGF0c3Vic3QgJChTUEVDU19ESVIpLyUueWFtbCwlLCR7U1BFQ1NfUEFUSFN9KVxcbiBSU1RTPSQocGF0c3Vic3QgJSwlLnJzdCwke1NQRUNTfSlcXG4rTElOVFM9JChwYXRzdWJzdCAlLCUtbGludCwke1NQRUNTfSlcXG4gXFxuLWFsbDogcHJvdG9zLmEgJChIRFJTKSAkKFNSQ1MpICQoS0hEUlMpICQoS1NSQ1MpICQoVUFQSSkgJChSU1RTKVxcbithbGw6IHByb3Rvcy5hICQoSERSUykgJChTUkNTKSAkKEtIRFJTKSAkKEtTUkNTKSAkKFVBUEkpICQoUlNUUykgJChMSU5UUylcXG4gXFxuIHByb3Rvcy5hOiAkKE9CSlMpXFxuIFxcdEBlY2hvIC1lIFxcXCJcXFxcdEFSICRAXFxcIlxcbkBAIC01NiwxMSArNTcsMjkgQEAgcHJvdG9zLmE6ICQoT0JKUylcXG4gXFx0QGVjaG8gLWUgXFxcIlxcXFx0R0VOX1JTVCAkQFxcXCJcXG4gXFx0QCQoVE9PTF9SU1QpIC1vICRAIC1pICRcXHUwMDNjXFxuIFxcbislLWxpbnRlci5jOiAkKFNQRUNTX0RJUikvJS55YW1sICQoVE9PTCkgLi4vbGludGVyL2xpbnRlci5oXFxuK1xcdEBlY2hvIC1lIFxcXCJcXFxcdEdFTiAkQFxcXCJcXG4rXFx0QCQoVE9PTCkgLS1tb2RlIHVzZXIgLS1saW50ZXIgLS1zcGVjICRcXHUwMDNjIC1vICRAICQoWU5MX0dFTl9BUkdfJCopXFxuK1xcbislLWxpbnRlci5oOiAlLWxpbnRlci5jIC4uL2xpbnRlci9nZW4taC5zaFxcbitcXHRAZWNobyAtZSBcXFwiXFxcXHRHRU4gJEBcXFwiXFxuK1xcdEAuLi9saW50ZXIvZ2VuLWguc2ggJChDRkxBR1MpICQoQ0ZMQUdTXyQqKSBcXHUwMDNjICRcXHUwMDNjIFxcdTAwM2UgJEBcXG4rXFxuKyUtbGludGVyOiAlLWxpbnRlci5jICUtbGludGVyLmggLi4vbGludGVyL2xpbnRlci5oXFxuK1xcdEBlY2hvIC1lIFxcXCJcXFxcdENDICRAXFxcIlxcbitcXHRAJChDQykgJChDRkxBR1MpICQoQ0ZMQUdTXyQqKSAtaW5jbHVkZSAkKi1saW50ZXIuaCAtbyAkQCAkXFx1MDAzY1xcbitcXG4rJS1saW50OiAlLWxpbnRlclxcbitcXHRAZWNobyAtZSBcXFwiXFxcXHRMSU5UICRAXFxcIlxcbitcXHRALi8kXFx1MDAzYyAkKlxcbitcXG4rbGludDogJChMSU5UUylcXG4rXFxuIGNsZWFuOlxcbiBcXHRybSAtZiAqLm9cXG4gXFxuIGRpc3RjbGVhbjogY2xlYW5cXG4tXFx0cm0gLWYgKi5jICouaCAqLmEgKi5yc3RcXG4rXFx0cm0gLWYgKi5jICouaCAqLmEgKi5yc3QgKi1saW50ZXJcXG4gXFxuIHJlZ2VuOlxcbiBcXHRALi4veW5sLXJlZ2VuLnNoXFxuQEAgLTY4LDcgKzg3LDcgQEAgcmVnZW46XFxuIGluc3RhbGwtaGVhZGVyczogJChIRFJTKVxcbiBcXHRAZWNobyAtZSBcXFwiXFxcXHRJTlNUQUxMIGdlbmVyYXRlZCBoZWFkZXJzXFxcIlxcbiBcXHRAJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS95bmxcXG4tXFx0QCQoSU5TVEFMTCkgLW0gMDY0NCAqLmggJChERVNURElSKSQoaW5jbHVkZWRpcikveW5sL1xcbitcXHRAJChJTlNUQUxMKSAtbSAwNjQ0ICQoS0hEUlMpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC9cXG4gXFxuIGluc3RhbGwtcnN0czogJChSU1RTKVxcbiBcXHRAZWNobyAtZSBcXFwiXFxcXHRJTlNUQUxMIGdlbmVyYXRlZCBkb2NzXFxcIlxcbkBAIC04NCw1ICsxMDMsNSBAQCBpbnN0YWxsLXNwZWNzOlxcbiBcXG4gaW5zdGFsbDogaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzXFxuIFxcbi0uUEhPTlk6IGFsbCBjbGVhbiBkaXN0Y2xlYW4gcmVnZW4gaW5zdGFsbCBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcXG4rLlBIT05ZOiBhbGwgY2xlYW4gZGlzdGNsZWFuIHJlZ2VuIGluc3RhbGwgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtcnN0cyBpbnN0YWxsLXNwZWNzIGxpbnRcXG4gLkRFRkFVTFRfR09BTDogYWxsXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2dlbi1oLnNoIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI0NzQ5MzYwMDAzNGRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2hcXG5AQCAtMCwwICsxLDIzIEBAXFxuKyMhL2Jpbi9zaFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK1xcbisjIFVzYWdlOiAuL2dlbi1oLnNoICRDRkxBR1MgXFx1MDAzYyBpbi5jIFxcdTAwM2Ugb3V0LmhcXG4rI1xcbisjIEV4dHJhY3QgdmFsaWQgc3ltYm9scywgYW5kIGRlZmluZSB0aGF0IHRoZXkgYXJlIGF2YWlsYWJsZS4gVGhpcyBpcyBhXFxuKyMgd29ya2Fyb3VuZCwgdG8gYXZvaWQgY29tcGlsZSBmYWlsdXJlcyBkdWUgdG8gbm9uLWV4aXN0ZW50IGVudW0gbWVtYmVycy5cXG4rI1xcbisjIENhcGl0YWxpemVkIGtleXdvcmRzIGZvdW5kIGluIHRoZSBwcmVwcm9jZXNzb3Igb3V0cHV0LCBhcmUgbW9zdGx5IGVudW1cXG4rIyBtZW1iZXJzLlxcbisjXFxuKyMgQXMgYW4gZXhhbXBsZSwgZXhpc3RlbmNlIG9mIEZPTyBjYW4gYmUgY2hlY2tlZCB3aXRoOlxcbisjICAgI2lmIGRlZmluZWQoRk9PKSB8fCBkZWZpbmVkKExJTlRFUl9IQVNfRk9PKVxcbisjIHRodXMgY2hlY2tpbmcgZm9yIEZPTyBlaXRoZXIgYXMgYSBtYWNybyBvciBhcyBhbiBlbnVtIG1lbWJlcnMuXFxuK1xcbitzZXQgLWVcXG4rXFxuK2VjaG8gJy8qIFRoaXMgaXMgYW4gYXV0by1nZW5lcmF0ZWQgZmlsZSAqLydcXG4rZ3JlcCAnXiNpbmNsdWRlIFxcdTAwM2NsaW51eC8nIHxcXG4rXFx0Y3BwIC14IGMgXFxcIiRAXFxcIiAtIHxcXG4rXFx0Z3JlcCAtd28gJ1tBLVpdW0EtWjAtOV9dXFxcXCsnIHxcXG4rXFx0c29ydCB8IHVuaXEgfFxcbitcXHRzZWQgLWUgJ3MvXi8jZGVmaW5lIExJTlRFUl9IQVNfL2cnXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2xpbnRlci5oIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvbGludGVyLmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjBkMWMyOGM5ZjIxNDBcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvbGludGVyLmhcXG5AQCAtMCwwICsxLDE1MiBAQFxcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbitcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRib29sLmhcXHUwMDNlXFxuK1xcbitzdHJ1Y3QgZW51bV9rdiB7XFxuK1xcdGNvbnN0IGNoYXIgKm5hbWU7XFxuK1xcdGNvbnN0IGxvbmcgbG9uZyB2YWw7XFxuK1xcdGNvbnN0IGJvb2wgaXNfdW5kZWY6MTtcXG4rfTtcXG4rXFxuK3N0cnVjdCBlbnVtX2VudHJ5IHtcXG4rXFx0Y29uc3Qgc3RydWN0IGVudW1fa3YgeW5sO1xcbitcXHRjb25zdCBzdHJ1Y3QgZW51bV9rdiBjO1xcbitcXHRjb25zdCBib29sIGlzX3NlbnRpbmFsOjE7XFxuK307XFxuK1xcbisjZGVmaW5lIFlOTF9FTlVNX0VOVFJZKFlOTF9OQU1FLCBDX05BTUUsIFlOTF9WQUxVRSkgXFxcXFxcbitcXHR7IFxcXFxcXG4rXFx0XFx0LnlubCA9IHsgLm5hbWUgPSBZTkxfTkFNRSwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxcXFxuK1xcdFxcdC5jID0geyAubmFtZSA9ICNDX05BTUUsIC52YWwgPSBDX05BTUUgfSwgXFxcXFxcbitcXHR9XFxuK1xcbisjZGVmaW5lIFlOTF9FTlVNX0JBRF9FTlRSWShZTkxfTkFNRSwgQ19OQU1FLCBZTkxfVkFMVUUpIFxcXFxcXG4rXFx0eyBcXFxcXFxuK1xcdFxcdC55bmwgPSB7IC5uYW1lID0gWU5MX05BTUUsIC52YWwgPSBZTkxfVkFMVUUgfSwgXFxcXFxcbitcXHRcXHQuYyA9IHsgLm5hbWUgPSAjQ19OQU1FLCAuaXNfdW5kZWYgPSB0cnVlIH0sIFxcXFxcXG4rXFx0fVxcbitcXG4rI2RlZmluZSBZTkxfRU5VTV9TRU5USU5BTChDX05BTUUsIFlOTF9WQUxVRSkgXFxcXFxcbitcXHR7IFxcXFxcXG4rXFx0XFx0LnlubCA9IHsgLm5hbWUgPSBcXFwiTUFYXFxcIiwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxcXFxuK1xcdFxcdC5jID0geyAubmFtZSA9ICNDX05BTUUsIC52YWwgPSBDX05BTUUgfSwgXFxcXFxcbitcXHRcXHQuaXNfc2VudGluYWwgPSB0cnVlLCBcXFxcXFxuK1xcdH1cXG4rXFxuK2VudW0geW5sX2VudW1fdHlwZSB7XFxuK1xcdFlOTF9FTlVNLFxcbitcXHRZTkxfRkxBR1MsXFxuK307XFxuK1xcbitzdHJ1Y3QgZW51bV9zZXQge1xcbitcXHRjb25zdCBjaGFyICpuYW1lO1xcbitcXHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnk7XFxuK1xcdGVudW0geW5sX2VudW1fdHlwZSB0eXBlO1xcbit9O1xcbitcXG4rc3RydWN0IGxpbnRlcl9jdHgge1xcbitcXHRpbnQgZXJyb3JzO1xcbitcXHRpbnQgd2FybmluZ3M7XFxuK1xcdGNvbnN0IGNoYXIgKm5hbWU7XFxuK307XFxuK1xcbisjZGVmaW5lIGVycmYoZm10LCAuLi4pIFxcXFxcXG4rXFx0ZG8geyBcXFxcXFxuK1xcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiJXM6IEVSUk9SOiBcXFwiIGZtdCwgY3R4LVxcdTAwM2VuYW1lLCBfX1ZBX0FSR1NfXyk7IFxcXFxcXG4rXFx0XFx0Y3R4LVxcdTAwM2VlcnJvcnMrKzsgXFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rI2RlZmluZSB3YXJuZihmbXQsIC4uLikgXFxcXFxcbitcXHRkbyB7IFxcXFxcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlczogV0FSTjogXFxcIiBmbXQsIGN0eC1cXHUwMDNlbmFtZSwgX19WQV9BUkdTX18pOyBcXFxcXFxuK1xcdFxcdGN0eC1cXHUwMDNld2FybmluZ3MrKzsgXFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rc3RhdGljIGlubGluZSBsb25nIGxvbmcgZmluZF9uZXh0X3ZhbHVlKGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXFxuK1xcdFxcdFxcdFxcdFxcdGNvbnN0IGxvbmcgbG9uZyBsYXN0X3ZhbClcXG4re1xcbitcXHRzd2l0Y2ggKGVzLVxcdTAwM2V0eXBlKSB7XFxuK1xcdGNhc2UgWU5MX0VOVU06XFxuK1xcdFxcdHJldHVybiBsYXN0X3ZhbCArIDE7XFxuK1xcdGNhc2UgWU5MX0ZMQUdTOlxcbitcXHRcXHRyZXR1cm4gbGFzdF92YWwgXFx1MDAzY1xcdTAwM2MgMTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0LyogdW5yZWFjaGFibGUgKi9cXG4rXFx0XFx0YWJvcnQoKTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIHZvaWQgbGludF9lbnVtX2VudHJ5KHN0cnVjdCBsaW50ZXJfY3R4ICpjdHgsXFxuK1xcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXFxuK1xcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBlbnVtX2VudHJ5ICplbnRyeSxcXG4rXFx0XFx0XFx0XFx0ICAgbG9uZyBsb25nICpsYXN0X3ZhbCwgY29uc3QgaW50IGksXFxuK1xcdFxcdFxcdFxcdCAgIGNvbnN0IGludCBjbnQpXFxuK3tcXG4rXFx0Y29uc3QgbG9uZyBsb25nIHZhbCA9IGVudHJ5LVxcdTAwM2VjLnZhbDtcXG4rXFxuK1xcdGlmIChpIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiB2YWwgIT0gKmxhc3RfdmFsIFxcdTAwMjZcXHUwMDI2IHZhbCAhPSBmaW5kX25leHRfdmFsdWUoZXMsICpsYXN0X3ZhbCkpXFxuK1xcdFxcdHdhcm5mKFxcXCIlczogUG9zc2libGUgbWlzc2luZyBtZW1iZXIgYmVmb3JlICVzICglbGxkIC1cXHUwMDNlICVsbGQpXFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICBlcy1cXHUwMDNlbmFtZSwgZW50cnktXFx1MDAzZWMubmFtZSwgKmxhc3RfdmFsLCB2YWwpO1xcbitcXHQqbGFzdF92YWwgPSBlbnRyeS1cXHUwMDNlYy52YWw7XFxuK1xcbitcXHRpZiAoaSA9PSBjbnQgLSAxIFxcdTAwMjZcXHUwMDI2IHN0cmNtcChlbnRyeS1cXHUwMDNleW5sLm5hbWUsIFxcXCJtYXhcXFwiKSA9PSAwKVxcbitcXHRcXHRlcnJmKFxcXCIlczogU2VudGluYWwgdXNlZCBpbiBZTkwgc3BlY1xcXFxuXFxcIiwgZXMtXFx1MDAzZW5hbWUpO1xcbitcXG4rXFx0aWYgKGVudHJ5LVxcdTAwM2VjLmlzX3VuZGVmKSB7XFxuK1xcdFxcdGVycmYoXFxcIiVzOiAlczogJXMgbm90IGZvdW5kXFxcXG5cXFwiLCBlcy1cXHUwMDNlbmFtZSwgZW50cnktXFx1MDAzZXlubC5uYW1lLFxcbitcXHRcXHQgICAgIGVudHJ5LVxcdTAwM2VjLm5hbWUpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChlbnRyeS1cXHUwMDNleW5sLnZhbCA9PSBlbnRyeS1cXHUwMDNlYy52YWwpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChlbnRyeS1cXHUwMDNlaXNfc2VudGluYWwpIHtcXG4rXFx0XFx0aWYgKGVzLVxcdTAwM2V0eXBlID09IFlOTF9FTlVNIFxcdTAwMjZcXHUwMDI2IGVudHJ5LVxcdTAwM2V5bmwudmFsICsgMSA9PSBlbnRyeS1cXHUwMDNlYy52YWwpXFxuK1xcdFxcdFxcdHJldHVybjsgLyogZWcuIERFVkNPTkZfTUFYIGlzIHRoZSBzdG9yYWdlIHNpemUgKi9cXG4rXFx0XFx0d2FybmYoXFxcIiVzOiBTZW50aW5hbCBtaXNtYXRjaDogJWxsZCAhPSAlbGxkIChMYXN0IFlOTCAhPSAlcylcXFxcblxcXCIsXFxuK1xcdFxcdCAgICAgIGVzLVxcdTAwM2VuYW1lLCBlbnRyeS1cXHUwMDNleW5sLnZhbCwgZW50cnktXFx1MDAzZWMudmFsLCBlbnRyeS1cXHUwMDNlYy5uYW1lKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0ZXJyZihcXFwiJXM6IFZhbHVlIG1pc21hdGNoOiAlbGxkICE9ICVsbGQgKCVzICE9ICVzKVxcXFxuXFxcIiwgZXMtXFx1MDAzZW5hbWUsXFxuK1xcdFxcdCAgICAgZW50cnktXFx1MDAzZXlubC52YWwsIGVudHJ5LVxcdTAwM2VjLnZhbCwgZW50cnktXFx1MDAzZXlubC5uYW1lLFxcbitcXHRcXHQgICAgIGVudHJ5LVxcdTAwM2VjLm5hbWUpO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW50X2VudW0oc3RydWN0IGxpbnRlcl9jdHggKmN0eCwgY29uc3Qgc3RydWN0IGVudW1fc2V0ICplcylcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnkgPSBlcy1cXHUwMDNlZW50cnk7XFxuK1xcdGxvbmcgbG9uZyBsYXN0X3ZhbDtcXG4rXFx0aW50IGNudCA9IDA7XFxuK1xcdGludCBpID0gMDtcXG4rXFxuK1xcdHdoaWxlIChlbnRyeS1cXHUwMDNleW5sLm5hbWUpIHtcXG4rXFx0XFx0aWYgKCFlbnRyeS1cXHUwMDNlaXNfc2VudGluYWwpXFxuK1xcdFxcdFxcdGNudCsrO1xcbitcXHRcXHRlbnRyeSsrO1xcbitcXHR9XFxuK1xcdGVudHJ5ID0gZXMtXFx1MDAzZWVudHJ5O1xcbitcXG4rXFx0d2hpbGUgKGVudHJ5LVxcdTAwM2V5bmwubmFtZSlcXG4rXFx0XFx0bGludF9lbnVtX2VudHJ5KGN0eCwgZXMsIGVudHJ5KyssIFxcdTAwMjZsYXN0X3ZhbCwgaSsrLCBjbnQpO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIGludCBsaW50ZXJfcnVuKGNvbnN0IGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndixcXG4rXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzKVxcbit7XFxuK1xcdHN0cnVjdCBsaW50ZXJfY3R4IGN0eCA9IHtcXG4rXFx0XFx0Lm5hbWUgPSBhcmd2W2FyZ2MgXFx1MDAzZSAxID8gMSA6IDBdLFxcbitcXHR9O1xcbitcXG4rXFx0d2hpbGUgKGVzLVxcdTAwM2VuYW1lKSB7XFxuK1xcdFxcdGxpbnRfZW51bShcXHUwMDI2Y3R4LCBlcyk7XFxuK1xcdFxcdGVzKys7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChjdHguZXJyb3JzIHx8IGN0eC53YXJuaW5ncylcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCIlczogTGludGVyIHN1bW1hcnk6ICVkIGVycm9ycywgJWQgd2FybmluZ3NcXFxcblxcXCIsXFxuK1xcdFxcdFxcdGN0eC5uYW1lLCBjdHguZXJyb3JzLCBjdHgud2FybmluZ3MpO1xcbitcXG4rXFx0cmV0dXJuIEVYSVRfU1VDQ0VTUztcXG4rfVxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuaW5kZXggMmIzNDgzZGIxYjYwYy4uNWJiZTNjYmE4Zjc1OSAxMDA3NTVcXG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxcbisrKyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuQEAgLTE2ODgsNiArMTY4OCw4IEBAIGNsYXNzIENvZGVXcml0ZXI6XFxuICAgICAgICAgc2VsZi5jbG9zZV9vdXRfZmlsZSgpXFxuIFxcbiAgICAgZGVmIGNsb3NlX291dF9maWxlKHNlbGYpOlxcbisgICAgICAgIGlmIHNlbGYuX2Jsb2NrX2VuZDpcXG4rICAgICAgICAgICAgc2VsZi5fb3V0LndyaXRlKCdcXFxcdCcgKiBzZWxmLl9pbmQgKyAnfVxcXFxuJylcXG4gICAgICAgICBpZiBzZWxmLl9vdXQgPT0gb3Muc3lzLnN0ZG91dDpcXG4gICAgICAgICAgICAgcmV0dXJuXFxuICAgICAgICAgIyBBdm9pZCBtb2RpZnlpbmcgdGhlIGZpbGUgaWYgY29udGVudHMgZGlkbid0IGNoYW5nZVxcbkBAIC0yMDg0LDYgKzIwODYsMzAgQEAgZGVmIHB1dF9lbnVtX3RvX3N0cihfZmFtaWx5LCBjdywgZW51bSk6XFxuICAgICBfcHV0X2VudW1fdG9fc3RyX2hlbHBlcihjdywgZW51bS5yZW5kZXJfbmFtZSwgbWFwX25hbWUsICd2YWx1ZScsIGVudW09ZW51bSlcXG4gXFxuIFxcbitkZWYgcHV0X2VudW1fdG9fbGludGVyKGZhbWlseSwgY3csIGVudW0pOlxcbisgICAgbmFtZV9wZnggPSBlbnVtLmdldCgnbmFtZS1wcmVmaXgnLCBmXFxcIntmYW1pbHkuaWRlbnRfbmFtZX0te2VudW1bJ25hbWUnXX0tXFxcIilcXG4rICAgIG1heF9uYW1lID0gY191cHBlcihuYW1lX3BmeCArICdtYXgnKVxcbisgICAgbWFwX25hbWUgPSBmJ3tlbnVtLnJlbmRlcl9uYW1lfV9lbnRyaWVzJ1xcbisgICAgY3cuYmxvY2tfc3RhcnQobGluZT1mXFxcInN0YXRpYyBjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSB7bWFwX25hbWV9W10gPVxcXCIpXFxuKyAgICB2YWwgPSAwXFxuKyAgICBmb3IgZW50cnkgaW4gZW51bS5lbnRyaWVzLnZhbHVlcygpOlxcbisgICAgICAgIHZhbCA9IGVudHJ5LnVzZXJfdmFsdWUoKVxcbisgICAgICAgIGNfbmFtZSA9IGVudHJ5LmNfbmFtZVxcbisgICAgICAgIGN3LnAoZicjaWYgZGVmaW5lZCh7Y19uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3tjX25hbWV9KScpXFxuKyAgICAgICAgY3cucChmJ1lOTF9FTlVNX0VOVFJZKFxcXCJ7ZW50cnkubmFtZX1cXFwiLCB7Y19uYW1lfSwge3ZhbH0pLCcpXFxuKyAgICAgICAgY3cucCgnI2Vsc2UnKVxcbisgICAgICAgIGN3LnAoZidZTkxfRU5VTV9CQURfRU5UUlkoXFxcIntlbnRyeS5uYW1lfVxcXCIsIHtjX25hbWV9LCB7dmFsfSksJylcXG4rICAgICAgICBjdy5wKCcjZW5kaWYnKVxcbisgICAgY3cucChmJyNpZiBkZWZpbmVkKHttYXhfbmFtZX0pIHx8IGRlZmluZWQoTElOVEVSX0hBU197bWF4X25hbWV9KScpXFxuKyAgICBjdy5wKGYnWU5MX0VOVU1fU0VOVElOQUwoe21heF9uYW1lfSwge3ZhbH0pLCcpXFxuKyAgICBjdy5wKCcjZW5kaWYnKVxcbisgICAgY3cucCgne30sJylcXG4rICAgIGN3LmJsb2NrX2VuZChsaW5lPSc7JylcXG4rICAgIGN3Lm5sKClcXG4rICAgIGVudW1fdHlwZSA9IGVudW1bJ3R5cGUnXS51cHBlcigpXFxuKyAgICByZXR1cm4gZid7e1xcXCJ7ZW51bS5uYW1lfVxcXCIsIFxcdTAwMjZ7bWFwX25hbWV9WzBdLCBZTkxfe2VudW1fdHlwZX19fSwnXFxuK1xcbitcXG4gZGVmIHB1dF9sb2NhbF92YXJzKHN0cnVjdCk6XFxuICAgICBsb2NhbF92YXJzID0gW11cXG4gICAgIGhhc19hcnJheSA9IEZhbHNlXFxuQEAgLTM0NjIsNiArMzQ4OCw3IEBAIGRlZiBtYWluKCk6XFxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXNwZWMnLCBkZXN0PSdzcGVjJywgdHlwZT1zdHIsIHJlcXVpcmVkPVRydWUpXFxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGRlc3Q9J2hlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9Tm9uZSlcXG4gICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc291cmNlJywgZGVzdD0naGVhZGVyJywgYWN0aW9uPSdzdG9yZV9mYWxzZScpXFxuKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWxpbnRlcicsIGRlc3Q9J2xpbnRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpXFxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVzZXItaGVhZGVyJywgbmFyZ3M9JysnLCBkZWZhdWx0PVtdKVxcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jbXAtb3V0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1Ob25lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdEbyBub3Qgb3ZlcndyaXRlIHRoZSBvdXRwdXQgZmlsZSBpZiB0aGUgbmV3IG91dHB1dCBpcyBpZGVudGljYWwgdG8gdGhlIG9sZCcpXFxuQEAgLTM0NzAsOCArMzQ5NywxMCBAQCBkZWYgbWFpbigpOlxcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1mdW5jdGlvbi1wcmVmaXgnLCBkZXN0PSdmbl9wcmVmaXgnLCB0eXBlPXN0cilcXG4gICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXFxuIFxcbisgICAgaWYgYXJncy5saW50ZXI6XFxuKyAgICAgICAgYXJncy5oZWFkZXIgPSBGYWxzZVxcbiAgICAgaWYgYXJncy5oZWFkZXIgaXMgTm9uZTpcXG4tICAgICAgICBwYXJzZXIuZXJyb3IoXFxcIi0taGVhZGVyIG9yIC0tc291cmNlIGlzIHJlcXVpcmVkXFxcIilcXG4rICAgICAgICBwYXJzZXIuZXJyb3IoXFxcIi0taGVhZGVyLCAtLXNvdXJjZSBvciAtLWxpbnRlciBpcyByZXF1aXJlZFxcXCIpXFxuIFxcbiAgICAgZXhjbHVkZV9vcHMgPSBbcmUuY29tcGlsZShleHByKSBmb3IgZXhwciBpbiBhcmdzLmV4Y2x1ZGVfb3BdXFxuIFxcbkBAIC0zNDk0LDE3ICszNTIzLDE5IEBAIGRlZiBtYWluKCk6XFxuICAgICAgICAgY3cucChmJy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiB7cGFyc2VkLmxpY2Vuc2V9JylcXG4gICAgIGN3LnAoXFxcIi8qIERvIG5vdCBlZGl0IGRpcmVjdGx5LCBhdXRvLWdlbmVyYXRlZCBmcm9tOiAqL1xcXCIpXFxuICAgICBjdy5wKGZcXFwiLypcXFxcdHtzcGVjX2tlcm5lbH0gKi9cXFwiKVxcbi0gICAgY3cucChmXFxcIi8qIFlOTC1HRU4ge2FyZ3MubW9kZX0geydoZWFkZXInIGlmIGFyZ3MuaGVhZGVyIGVsc2UgJ3NvdXJjZSd9ICovXFxcIilcXG4tICAgIGlmIGFyZ3MuZXhjbHVkZV9vcCBvciBhcmdzLnVzZXJfaGVhZGVyIG9yIGFyZ3MuZm5fcHJlZml4Olxcbi0gICAgICAgIGxpbmUgPSAnJ1xcbi0gICAgICAgIGlmIGFyZ3MudXNlcl9oZWFkZXI6XFxuLSAgICAgICAgICAgIGxpbmUgKz0gJyAtLXVzZXItaGVhZGVyICcuam9pbihbJyddICsgYXJncy51c2VyX2hlYWRlcilcXG4tICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfb3A6XFxuLSAgICAgICAgICAgIGxpbmUgKz0gJyAtLWV4Y2x1ZGUtb3AgJy5qb2luKFsnJ10gKyBhcmdzLmV4Y2x1ZGVfb3ApXFxuLSAgICAgICAgaWYgYXJncy5mbl9wcmVmaXg6XFxuLSAgICAgICAgICAgIGxpbmUgKz0gZicgLS1mdW5jdGlvbi1wcmVmaXgge2FyZ3MuZm5fcHJlZml4fSdcXG4tICAgICAgICBjdy5wKGYnLyogWU5MLUFSR3tsaW5lfSAqLycpXFxuLSAgICBjdy5wKCcvKiBUbyByZWdlbmVyYXRlIHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8nKVxcbisgICAgaWYgbm90IGFyZ3MubGludGVyOlxcbisgICAgICAgIHlubF9hcmcgPSAnaGVhZGVyJyBpZiBhcmdzLmhlYWRlciBlbHNlICdzb3VyY2UnXFxuKyAgICAgICAgY3cucChmXFxcIi8qIFlOTC1HRU4ge2FyZ3MubW9kZX0ge3lubF9hcmd9ICovXFxcIilcXG4rICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfb3Agb3IgYXJncy51c2VyX2hlYWRlciBvciBhcmdzLmZuX3ByZWZpeDpcXG4rICAgICAgICAgICAgbGluZSA9ICcnXFxuKyAgICAgICAgICAgIGlmIGFyZ3MudXNlcl9oZWFkZXI6XFxuKyAgICAgICAgICAgICAgICBsaW5lICs9ICcgLS11c2VyLWhlYWRlciAnLmpvaW4oWycnXSArIGFyZ3MudXNlcl9oZWFkZXIpXFxuKyAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDpcXG4rICAgICAgICAgICAgICAgIGxpbmUgKz0gJyAtLWV4Y2x1ZGUtb3AgJy5qb2luKFsnJ10gKyBhcmdzLmV4Y2x1ZGVfb3ApXFxuKyAgICAgICAgICAgIGlmIGFyZ3MuZm5fcHJlZml4OlxcbisgICAgICAgICAgICAgICAgbGluZSArPSBmJyAtLWZ1bmN0aW9uLXByZWZpeCB7YXJncy5mbl9wcmVmaXh9J1xcbisgICAgICAgICAgICBjdy5wKGYnLyogWU5MLUFSR3tsaW5lfSAqLycpXFxuKyAgICAgICAgY3cucCgnLyogVG8gcmVnZW5lcmF0ZSBydW46IHRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoICovJylcXG4gICAgIGN3Lm5sKClcXG4gXFxuICAgICBpZiBhcmdzLm1vZGUgPT0gJ3VhcGknOlxcbkBAIC0zNTM5LDYgKzM1NzAsOCBAQCBkZWYgbWFpbigpOlxcbiAgICAgICAgICAgICBjdy5wKCcjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2UnKVxcbiAgICAgICAgICAgICBpZiBmYW1pbHlfY29udGFpbnNfYml0ZmllbGQzMihwYXJzZWQpOlxcbiAgICAgICAgICAgICAgICAgY3cucCgnI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGxpbmsuaFxcdTAwM2UnKVxcbisgICAgICAgIGVsaWYgYXJncy5saW50ZXI6XFxuKyAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFxcXCIuLi9saW50ZXIvbGludGVyLmhcXFwiJylcXG4gICAgICAgICBlbHNlOlxcbiAgICAgICAgICAgICBjdy5wKGYnI2luY2x1ZGUgXFxcIntoZHJfZmlsZX1cXFwiJylcXG4gICAgICAgICAgICAgY3cucCgnI2luY2x1ZGUgXFxcInlubC5oXFxcIicpXFxuQEAgLTM2OTAsNiArMzcyMywyMSBAQCBkZWYgbWFpbigpOlxcbiAgICAgICAgICAgICAgICAgICAgIGN3Lm5sKClcXG4gICAgICAgICAgICAgICAgICAgICBwcmludF93cmFwcGVkX3R5cGUocmkpXFxuICAgICAgICAgICAgIGN3Lm5sKClcXG4rICAgICAgICBlbGlmIGFyZ3MubGludGVyOlxcbisgICAgICAgICAgICBlbnVtX3NldHMgPSBbXVxcbisgICAgICAgICAgICBmb3IgbmFtZSwgY29uc3QgaW4gcGFyc2VkLmNvbnN0cy5pdGVtcygpOlxcbisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25zdCwgRW51bVNldCk6XFxuKyAgICAgICAgICAgICAgICAgICAgZW51bV9zZXRzLmFwcGVuZChwdXRfZW51bV90b19saW50ZXIocGFyc2VkLCBjdywgY29uc3QpKVxcbisgICAgICAgICAgICBjdy5ubCgpXFxuKyAgICAgICAgICAgIGN3LmJsb2NrX3N0YXJ0KGxpbmU9XFxcInN0YXRpYyBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgZW51bXNbXSA9XFxcIilcXG4rICAgICAgICAgICAgZm9yIGVudW1fc2V0IGluIGVudW1fc2V0czpcXG4rICAgICAgICAgICAgICAgIGN3LnAoZW51bV9zZXQpXFxuKyAgICAgICAgICAgIGN3LnAoJ3t9LCcpXFxuKyAgICAgICAgICAgIGN3LmJsb2NrX2VuZChsaW5lPSc7JylcXG4rICAgICAgICAgICAgY3cubmwoKVxcbisgICAgICAgICAgICBjdy53cml0ZV9mdW5jKCdpbnQnLCAnbWFpbicsXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1bJ2NvbnN0IGludCBhcmdjJywgJ2NvbnN0IGNoYXIgKiphcmd2J10sXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keT1bJ3JldHVybiBsaW50ZXJfcnVuKGFyZ2MsIGFyZ3YsIFxcdTAwMjZlbnVtc1swXSk7J10pXFxuICAgICAgICAgZWxzZTpcXG4gICAgICAgICAgICAgY3cucCgnLyogRW51bXMgKi8nKVxcbiAgICAgICAgICAgICBwdXRfb3BfbmFtZShwYXJzZWQsIGN3KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo1MjoyNy42MDA4MDQxMTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE0MTMzOTc3MTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgbW9kaWZpZXMgZG9jdW1lbnRhdGlvbiAoWUFNTCBzcGVjcyBpbiBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvKSwgdXNlci1zcGFjZSB0b29saW5nL2xpbnRlcnMgKHRvb2xzL25ldC95bmwvKSwgYW5kIGFuIGluY2x1ZGUgZ3VhcmQgaW4gaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaC4gTm8gZXhlY3V0YWJsZSBrZXJuZWwgY29kZSBvciBkYXRhIHN0cnVjdHVyZXMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZDEwYmUyZjAwMzlkZTE5NThiMmI1NWJiMDJhNDVhMTIyNWFhMWZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjI6NTI6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcbmluZGV4IGIxZWIxMDJhYjg0MzIuLjU0M2RjZGRiMDQ2NDcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvY29ubnRyYWNrLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9jb25udHJhY2sueWFtbFxuQEAgLTIsNiArMiw3IEBAXG4gLS0tXG4gbmFtZTogY29ubnRyYWNrXG4gcHJvdG9jb2w6IG5ldGxpbmstcmF3XG4rdWFwaS1oZWFkZXI6IGxpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29tbW9uLmhcbiBwcm90b251bTogMTJcbiBcbiBkb2M6IFx1MDAzZS1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvbmZ0YWJsZXMueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXG5pbmRleCAyMWVkZjNkMjVmMzRiLi43NmY2OWVkODJhMjRkIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9uZnRhYmxlcy55YW1sXG5AQCAtMiw2ICsyLDcgQEBcbiAtLS1cbiBuYW1lOiBuZnRhYmxlc1xuIHByb3RvY29sOiBuZXRsaW5rLXJhd1xuK3VhcGktaGVhZGVyOiBsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcbiBwcm90b251bTogMTJcbiBcbiBkb2M6IFx1MDAzZS1cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3J0LWxpbmsueWFtbFxuaW5kZXggNjFlYmI5YTJiYWQ1MS4uZmU1MmQ1MDhkNjA3NSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9ydC1saW5rLnlhbWxcbkBAIC0yNSwxNyArMjUsMTcgQEAgZGVmaW5pdGlvbnM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogbG9vcGJhY2tcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBwb2ludC10by1wb2ludFxuKyAgICAgICAgbmFtZTogcG9pbnRvcG9pbnRcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBuby10cmFpbGVyc1xuKyAgICAgICAgbmFtZTogbm90cmFpbGVyc1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJ1bm5pbmdcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBuby1hcnBcbisgICAgICAgIG5hbWU6IG5vYXJwXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcHJvbWlzY1xuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IGFsbC1tdWx0aVxuKyAgICAgICAgbmFtZTogYWxsbXVsdGlcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBtYXN0ZXJcbiAgICAgICAtXG5AQCAtNDUsNyArNDUsNyBAQCBkZWZpbml0aW9uczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBwb3J0c2VsXG4gICAgICAgLVxuLSAgICAgICAgbmFtZTogYXV0by1tZWRpYVxuKyAgICAgICAgbmFtZTogYXV0b21lZGlhXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHluYW1pY1xuICAgICAgIC1cbkBAIC01OCw2ICs1OCw3IEBAIGRlZmluaXRpb25zOlxuICAgICBuYW1lOiB2bGFuLXByb3RvY29sc1xuICAgICB0eXBlOiBlbnVtXG4gICAgIGVudW0tbmFtZTpcbisgICAgbmFtZS1wcmVmaXg6IGV0aC1wLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IDgwMjFxXG5AQCAtMzA1LDEwICszMDYsMTMgQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IGlwdjQtZGV2Y29uZlxuICAgICBlbnVtLW5hbWU6XG4rICAgIG5hbWUtcHJlZml4OiBpcHY0LWRldmNvbmYtXG4rICAgIGhlYWRlcjogbGludXgvaXAuaFxuICAgICB0eXBlOiBlbnVtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZm9yd2FyZGluZ1xuKyAgICAgICAgdmFsdWU6IDFcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBtYy1mb3J3YXJkaW5nXG4gICAgICAgLVxuQEAgLTM3Niw2ICszODAsOCBAQCBkZWZpbml0aW9uczpcbiAgIC1cbiAgICAgbmFtZTogaXB2Ni1kZXZjb25mXG4gICAgIGVudW0tbmFtZTpcbisgICAgbmFtZS1wcmVmaXg6IGRldmNvbmYtXG4rICAgIGhlYWRlcjogbGludXgvaXB2Ni5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG5AQCAtNTAxLDYgKzUwNyw4IEBAIGRlZmluaXRpb25zOlxuICAgLVxuICAgICBuYW1lOiBpZmxhLWljbXA2LXN0YXRzXG4gICAgIGVudW0tbmFtZTpcbisgICAgbmFtZS1wcmVmaXg6IGljbXA2LW1pYi1cbisgICAgaGVhZGVyOiBsaW51eC9zbm1wLmhcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnRyaWVzOlxuICAgICAgIC1cbkBAIC01MjAsNiArNTI4LDggQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IGlmbGEtaW5ldDYtc3RhdHNcbiAgICAgZW51bS1uYW1lOlxuKyAgICBuYW1lLXByZWZpeDogaXBzdGF0cy1taWItXG4rICAgIGhlYWRlcjogbGludXgvc25tcC5oXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG5AQCAtNTMxLDExICs1NDEsMjEgQEAgZGVmaW5pdGlvbnM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaW5kZWxpdmVyc1xuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IG91dGZvcndkYXRhZ3JhbXNcbisgICAgICAgIG5hbWU6IG5vZWN0cGt0c1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGVjdDFwa3RzXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZWN0MHBrdHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBjZXBrdHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBvdXRyZXF1ZXN0c1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IG91dHBrdHNcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBvdXRvY3RldHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBvdXRmb3J3ZGF0YWdyYW1zXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaW5oZHJlcnJvcnNcbiAgICAgICAtXG5AQCAtNTg2LDE0ICs2MDYsNiBAQCBkZWZpbml0aW9uczpcbiAgICAgICAgIG5hbWU6IG91dGJjYXN0b2N0ZXRzXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogY3N1bWVycm9yc1xuLSAgICAgIC1cbi0gICAgICAgIG5hbWU6IG5vZWN0cGt0c1xuLSAgICAgIC1cbi0gICAgICAgIG5hbWU6IGVjdDEtcGt0c1xuLSAgICAgIC1cbi0gICAgICAgIG5hbWU6IGVjdDAtcGt0c1xuLSAgICAgIC1cbi0gICAgICAgIG5hbWU6IGNlcGt0c1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlYXNtLW92ZXJsYXBzXG4gICAtIG5hbWU6IGJyLWJvb2xvcHQtbXVsdGlcbkBAIC02NDAsNiArNjUyLDggQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IHZsYW4tZmxhZ3NcbiAgICAgdHlwZTogZmxhZ3NcbiAgICAgZW51bS1uYW1lOlxuKyAgICBuYW1lLXByZWZpeDogdmxhbi1mbGFnLVxuKyAgICBoZWFkZXI6IGxpbnV4L2lmX3ZsYW4uaFxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gcmVvcmRlci1oZHJcbiAgICAgICAtIGd2cnBcbkBAIC03MjcsNiArNzQxLDggQEAgZGVmaW5pdGlvbnM6XG4gICAgIG5hbWU6IGlmbGEtdmYtbGluay1zdGF0ZS1lbnVtXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW51bS1uYW1lOlxuKyAgICBuYW1lLXByZWZpeDogaWZsYS12Zi1saW5rLXN0YXRlLVxuKyAgICBoZWFkZXI6IGxpbnV4L2lmX2xpbmsuaFxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gYXV0b1xuICAgICAgIC0gZW5hYmxlXG5AQCAtNzk0LDYgKzgxMCw3IEBAIGRlZmluaXRpb25zOlxuICAgICBuYW1lOiBydGV4dC1maWx0ZXJcbiAgICAgdHlwZTogZmxhZ3NcbiAgICAgZW51bS1uYW1lOlxuKyAgICBuYW1lLXByZWZpeDogcnRleHQtZmlsdGVyLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gdmZcbiAgICAgICAtIGJydmxhblxuQEAgLTgwNiwxOCArODIzLDIwIEBAIGRlZmluaXRpb25zOlxuICAgLVxuICAgICBuYW1lOiBuZXRraXQtcG9saWN5XG4gICAgIHR5cGU6IGVudW1cbi0gICAgZW51bS1uYW1lOlxuKyAgICBlbnVtLW5hbWU6IG5ldGtpdC1hY3Rpb25cbisgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1cbiAgICAgZW50cmllczpcbiAgICAgICAtXG4tICAgICAgICBuYW1lOiBmb3J3YXJkXG4rICAgICAgICBuYW1lOiBwYXNzXG4gICAgICAgICB2YWx1ZTogMFxuICAgICAgIC1cbi0gICAgICAgIG5hbWU6IGJsYWNraG9sZVxuKyAgICAgICAgbmFtZTogZHJvcFxuICAgICAgICAgdmFsdWU6IDJcbiAgIC1cbiAgICAgbmFtZTogbmV0a2l0LW1vZGVcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6IG5ldGtpdC1tb2RlXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtXG4gICAgIGVudHJpZXM6XG4gICAgICAgLSBuYW1lOiBsMlxuICAgICAgIC0gbmFtZTogbDNcbkBAIC04MjUsNyArODQ0LDggQEAgZGVmaW5pdGlvbnM6XG4gICAtXG4gICAgIG5hbWU6IG5ldGtpdC1zY3J1YlxuICAgICB0eXBlOiBlbnVtXG4tICAgIGVudW0tbmFtZTpcbisgICAgZW51bS1uYW1lOiBuZXRraXQtc2NydWJcbisgICAgbmFtZS1wcmVmaXg6IG5ldGtpdC1zY3J1Yi1cbiAgICAgZW50cmllczpcbiAgICAgICAtIG5hbWU6IG5vbmVcbiAgICAgICAtIG5hbWU6IGRlZmF1bHRcbkBAIC04MzMsMTMgKzg1MywxNCBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogbmV0a2l0LXBhaXJpbmdcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6IG5ldGtpdC1wYWlyaW5nXG4rICAgIG5hbWUtcHJlZml4OiBuZXRraXQtZGV2aWNlLVxuICAgICBlbnRyaWVzOlxuICAgICAgIC0gbmFtZTogcGFpclxuICAgICAgIC0gbmFtZTogc2luZ2xlXG4gICAtXG4gICAgIG5hbWU6IG92cG4tbW9kZVxuICAgICBlbnVtLW5hbWU6IG92cG4tbW9kZVxuLSAgICBuYW1lLXByZWZpeDogb3Zwbi1tb2RlXG4rICAgIG5hbWUtcHJlZml4OiBvdnBuLW1vZGUtXG4gICAgIHR5cGU6IGVudW1cbiAgICAgZW50cmllczpcbiAgICAgICAtIHAycFxuQEAgLTg0OCw2ICs4NjksNyBAQCBkZWZpbml0aW9uczpcbiAgICAgbmFtZTogYnItc3RwLW1vZGVcbiAgICAgdHlwZTogZW51bVxuICAgICBlbnVtLW5hbWU6IGJyLXN0cC1tb2RlXG4rICAgIG5hbWUtcHJlZml4OiBici1zdHAtbW9kZS1cbiAgICAgZW50cmllczpcbiAgICAgICAtIGF1dG9cbiAgICAgICAtIHVzZXJcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvc25tcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaFxuaW5kZXggNDlmNTY0MDA5MmEwZC4uMjZiZGFiYzUwMmZlYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmhcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmhcbkBAIC01LDggKzUsOCBAQFxuICAqIEF1dGhvcjogSGlkZWFraSBZT1NISUZVSkkgXHUwMDNjeW9zaGZ1amlAbGludXgtaXB2Ni5vcmdcdTAwM2VcbiAgKi9cbiBcbi0jaWZuZGVmIF9MSU5VWF9TTk1QX0hcbi0jZGVmaW5lIF9MSU5VWF9TTk1QX0hcbisjaWZuZGVmIF9VQVBJX0xJTlVYX1NOTVBfSFxuKyNkZWZpbmUgX1VBUElfTElOVVhfU05NUF9IXG4gXG4gLyogaXBzdGF0cyBtaWIgZGVmaW5pdGlvbnMgKi9cbiAvKlxuQEAgLTM3Miw0ICszNzIsNCBAQCBlbnVtXG4gXHRfX0xJTlVYX01JQl9UTFNNQVhcbiB9O1xuIFxuLSNlbmRpZlx0LyogX0xJTlVYX1NOTVBfSCAqL1xuKyNlbmRpZlx0LyogX1VBUElfTElOVVhfU05NUF9IICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzIGIvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXG5pbmRleCAyNzcxMzc1MzM5ZDljLi44ZTEzNmE1ZGY4OTkxIDEwMDY0NFxuLS0tIGEvdG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzXG4rKysgYi90b29scy9uZXQveW5sL01ha2VmaWxlLmRlcHNcbkBAIC00MCw4ICs0MCwxNSBAQCBDRkxBR1Nfb3ZzX3Zwb3J0Oj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9PUEVOVlNXSVRDSF9ILG9wZW52c3dpdGNoLmgpXG4gQ0ZMQUdTX3BzcDo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9QU1BfSCxwc3AuaClcbiBDRkxBR1NfcnQtYWRkcjo9JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpIFxcXG4gXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9JRl9BRERSX0gsaWZfYWRkci5oKVxuLUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXFxcbi1cdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfTElOS19ILGlmX2xpbmsuaClcbitDRkxBR1NfcnQtbGluazo9JChjYWxsIGdldF9oZHJfaW5jLF9MSU5VWF9JRl9MSU5LX0gsaWZfbGluay5oKSBcXFxuK1x0JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpIFxcXG4rXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lQX0gsaXAuaCkgXFxcbitcdCQoY2FsbCBnZXRfaGRyX2luYyxfSVBWNl9ILGlwdjYuaCkgXFxcbitcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfQlJJREdFX0gsaWZfYnJpZGdlLmgpIFxcXG4rXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0lGX1RVTk5FTF9IXyxpZl90dW5uZWwuaCkgXFxcbitcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfSUZfVkxBTl9IXyxpZl92bGFuLmgpIFxcXG4rXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX1NOTVBfSCxzbm1wLmgpIFxcXG4rXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0RQTExfSCxkcGxsLmgpXG4gQ0ZMQUdTX3J0LW5laWdoOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX19MSU5VWF9SVE5FVExJTktfSCxydG5ldGxpbmsuaCkgXFxcbiBcdCQoY2FsbCBnZXRfaGRyX2luYyxfX0xJTlVYX05FSUdIQk9VUl9ILG5laWdoYm91ci5oKVxuIENGTEFHU19ydC1yb3V0ZTo9JChjYWxsIGdldF9oZHJfaW5jLF9fTElOVVhfUlRORVRMSU5LX0gscnRuZXRsaW5rLmgpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZSBiL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkLy5naXRpZ25vcmVcbmluZGV4IDg1OWE2ZmI0NDZlMTQuLjIwZGQ3MGNkNzA5ZWUgMTAwNjQ0XG4tLS0gYS90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlXG4rKysgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC8uZ2l0aWdub3JlXG5AQCAtMSwzICsxLDYgQEBcbiAqLXVzZXIuY1xuICotdXNlci5oXG4rKi1saW50ZXIuY1xuKyotbGludGVyLmhcbisqLWxpbnRlclxuICoucnN0XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZVxuaW5kZXggNWExODYzNDliNWE4Ni4uYmNmN2Y0NTU2MzEzMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlXG4rKysgYi90b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZVxuQEAgLTMzLDggKzMzLDkgQEAgT0JKUz0kKHBhdHN1YnN0ICUsJS11c2VyLm8sJHtHRU5TfSlcbiBTUEVDU19QQVRIUz0kKHdpbGRjYXJkICQoU1BFQ1NfRElSKS8qLnlhbWwpXG4gU1BFQ1M9JChwYXRzdWJzdCAkKFNQRUNTX0RJUikvJS55YW1sLCUsJHtTUEVDU19QQVRIU30pXG4gUlNUUz0kKHBhdHN1YnN0ICUsJS5yc3QsJHtTUEVDU30pXG4rTElOVFM9JChwYXRzdWJzdCAlLCUtbGludCwke1NQRUNTfSlcbiBcbi1hbGw6IHByb3Rvcy5hICQoSERSUykgJChTUkNTKSAkKEtIRFJTKSAkKEtTUkNTKSAkKFVBUEkpICQoUlNUUylcbithbGw6IHByb3Rvcy5hICQoSERSUykgJChTUkNTKSAkKEtIRFJTKSAkKEtTUkNTKSAkKFVBUEkpICQoUlNUUykgJChMSU5UUylcbiBcbiBwcm90b3MuYTogJChPQkpTKVxuIFx0QGVjaG8gLWUgXCJcXHRBUiAkQFwiXG5AQCAtNTYsMTEgKzU3LDI5IEBAIHByb3Rvcy5hOiAkKE9CSlMpXG4gXHRAZWNobyAtZSBcIlxcdEdFTl9SU1QgJEBcIlxuIFx0QCQoVE9PTF9SU1QpIC1vICRAIC1pICRcdTAwM2NcbiBcbislLWxpbnRlci5jOiAkKFNQRUNTX0RJUikvJS55YW1sICQoVE9PTCkgLi4vbGludGVyL2xpbnRlci5oXG4rXHRAZWNobyAtZSBcIlxcdEdFTiAkQFwiXG4rXHRAJChUT09MKSAtLW1vZGUgdXNlciAtLWxpbnRlciAtLXNwZWMgJFx1MDAzYyAtbyAkQCAkKFlOTF9HRU5fQVJHXyQqKVxuK1xuKyUtbGludGVyLmg6ICUtbGludGVyLmMgLi4vbGludGVyL2dlbi1oLnNoXG4rXHRAZWNobyAtZSBcIlxcdEdFTiAkQFwiXG4rXHRALi4vbGludGVyL2dlbi1oLnNoICQoQ0ZMQUdTKSAkKENGTEFHU18kKikgXHUwMDNjICRcdTAwM2MgXHUwMDNlICRAXG4rXG4rJS1saW50ZXI6ICUtbGludGVyLmMgJS1saW50ZXIuaCAuLi9saW50ZXIvbGludGVyLmhcbitcdEBlY2hvIC1lIFwiXFx0Q0MgJEBcIlxuK1x0QCQoQ0MpICQoQ0ZMQUdTKSAkKENGTEFHU18kKikgLWluY2x1ZGUgJCotbGludGVyLmggLW8gJEAgJFx1MDAzY1xuK1xuKyUtbGludDogJS1saW50ZXJcbitcdEBlY2hvIC1lIFwiXFx0TElOVCAkQFwiXG4rXHRALi8kXHUwMDNjICQqXG4rXG4rbGludDogJChMSU5UUylcbitcbiBjbGVhbjpcbiBcdHJtIC1mICoub1xuIFxuIGRpc3RjbGVhbjogY2xlYW5cbi1cdHJtIC1mICouYyAqLmggKi5hICoucnN0XG4rXHRybSAtZiAqLmMgKi5oICouYSAqLnJzdCAqLWxpbnRlclxuIFxuIHJlZ2VuOlxuIFx0QC4uL3lubC1yZWdlbi5zaFxuQEAgLTY4LDcgKzg3LDcgQEAgcmVnZW46XG4gaW5zdGFsbC1oZWFkZXJzOiAkKEhEUlMpXG4gXHRAZWNobyAtZSBcIlxcdElOU1RBTEwgZ2VuZXJhdGVkIGhlYWRlcnNcIlxuIFx0QCQoSU5TVEFMTCkgLWQgJChERVNURElSKSQoaW5jbHVkZWRpcikveW5sXG4tXHRAJChJTlNUQUxMKSAtbSAwNjQ0ICouaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS95bmwvXG4rXHRAJChJTlNUQUxMKSAtbSAwNjQ0ICQoS0hEUlMpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3lubC9cbiBcbiBpbnN0YWxsLXJzdHM6ICQoUlNUUylcbiBcdEBlY2hvIC1lIFwiXFx0SU5TVEFMTCBnZW5lcmF0ZWQgZG9jc1wiXG5AQCAtODQsNSArMTAzLDUgQEAgaW5zdGFsbC1zcGVjczpcbiBcbiBpbnN0YWxsOiBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcbiBcbi0uUEhPTlk6IGFsbCBjbGVhbiBkaXN0Y2xlYW4gcmVnZW4gaW5zdGFsbCBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3NcbisuUEhPTlk6IGFsbCBjbGVhbiBkaXN0Y2xlYW4gcmVnZW4gaW5zdGFsbCBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1yc3RzIGluc3RhbGwtc3BlY3MgbGludFxuIC5ERUZBVUxUX0dPQUw6IGFsbFxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2dlbi1oLnNoIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvZ2VuLWguc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4yNDc0OTM2MDAwMzRkXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy9uZXQveW5sL2xpbnRlci9nZW4taC5zaFxuQEAgLTAsMCArMSwyMyBAQFxuKyMhL2Jpbi9zaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbisjIFVzYWdlOiAuL2dlbi1oLnNoICRDRkxBR1MgXHUwMDNjIGluLmMgXHUwMDNlIG91dC5oXG4rI1xuKyMgRXh0cmFjdCB2YWxpZCBzeW1ib2xzLCBhbmQgZGVmaW5lIHRoYXQgdGhleSBhcmUgYXZhaWxhYmxlLiBUaGlzIGlzIGFcbisjIHdvcmthcm91bmQsIHRvIGF2b2lkIGNvbXBpbGUgZmFpbHVyZXMgZHVlIHRvIG5vbi1leGlzdGVudCBlbnVtIG1lbWJlcnMuXG4rI1xuKyMgQ2FwaXRhbGl6ZWQga2V5d29yZHMgZm91bmQgaW4gdGhlIHByZXByb2Nlc3NvciBvdXRwdXQsIGFyZSBtb3N0bHkgZW51bVxuKyMgbWVtYmVycy5cbisjXG4rIyBBcyBhbiBleGFtcGxlLCBleGlzdGVuY2Ugb2YgRk9PIGNhbiBiZSBjaGVja2VkIHdpdGg6XG4rIyAgICNpZiBkZWZpbmVkKEZPTykgfHwgZGVmaW5lZChMSU5URVJfSEFTX0ZPTylcbisjIHRodXMgY2hlY2tpbmcgZm9yIEZPTyBlaXRoZXIgYXMgYSBtYWNybyBvciBhcyBhbiBlbnVtIG1lbWJlcnMuXG4rXG4rc2V0IC1lXG4rXG4rZWNobyAnLyogVGhpcyBpcyBhbiBhdXRvLWdlbmVyYXRlZCBmaWxlICovJ1xuK2dyZXAgJ14jaW5jbHVkZSBcdTAwM2NsaW51eC8nIHxcbitcdGNwcCAteCBjIFwiJEBcIiAtIHxcbitcdGdyZXAgLXdvICdbQS1aXVtBLVowLTlfXVxcKycgfFxuK1x0c29ydCB8IHVuaXEgfFxuK1x0c2VkIC1lICdzL14vI2RlZmluZSBMSU5URVJfSEFTXy9nJ1xuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvbGludGVyL2xpbnRlci5oIGIvdG9vbHMvbmV0L3lubC9saW50ZXIvbGludGVyLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4wZDFjMjhjOWYyMTQwXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaFxuQEAgLTAsMCArMSwxNTIgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRib29sLmhcdTAwM2VcbitcbitzdHJ1Y3QgZW51bV9rdiB7XG4rXHRjb25zdCBjaGFyICpuYW1lO1xuK1x0Y29uc3QgbG9uZyBsb25nIHZhbDtcbitcdGNvbnN0IGJvb2wgaXNfdW5kZWY6MTtcbit9O1xuK1xuK3N0cnVjdCBlbnVtX2VudHJ5IHtcbitcdGNvbnN0IHN0cnVjdCBlbnVtX2t2IHlubDtcbitcdGNvbnN0IHN0cnVjdCBlbnVtX2t2IGM7XG4rXHRjb25zdCBib29sIGlzX3NlbnRpbmFsOjE7XG4rfTtcbitcbisjZGVmaW5lIFlOTF9FTlVNX0VOVFJZKFlOTF9OQU1FLCBDX05BTUUsIFlOTF9WQUxVRSkgXFxcbitcdHsgXFxcbitcdFx0LnlubCA9IHsgLm5hbWUgPSBZTkxfTkFNRSwgLnZhbCA9IFlOTF9WQUxVRSB9LCBcXFxuK1x0XHQuYyA9IHsgLm5hbWUgPSAjQ19OQU1FLCAudmFsID0gQ19OQU1FIH0sIFxcXG4rXHR9XG4rXG4rI2RlZmluZSBZTkxfRU5VTV9CQURfRU5UUlkoWU5MX05BTUUsIENfTkFNRSwgWU5MX1ZBTFVFKSBcXFxuK1x0eyBcXFxuK1x0XHQueW5sID0geyAubmFtZSA9IFlOTF9OQU1FLCAudmFsID0gWU5MX1ZBTFVFIH0sIFxcXG4rXHRcdC5jID0geyAubmFtZSA9ICNDX05BTUUsIC5pc191bmRlZiA9IHRydWUgfSwgXFxcbitcdH1cbitcbisjZGVmaW5lIFlOTF9FTlVNX1NFTlRJTkFMKENfTkFNRSwgWU5MX1ZBTFVFKSBcXFxuK1x0eyBcXFxuK1x0XHQueW5sID0geyAubmFtZSA9IFwiTUFYXCIsIC52YWwgPSBZTkxfVkFMVUUgfSwgXFxcbitcdFx0LmMgPSB7IC5uYW1lID0gI0NfTkFNRSwgLnZhbCA9IENfTkFNRSB9LCBcXFxuK1x0XHQuaXNfc2VudGluYWwgPSB0cnVlLCBcXFxuK1x0fVxuK1xuK2VudW0geW5sX2VudW1fdHlwZSB7XG4rXHRZTkxfRU5VTSxcbitcdFlOTF9GTEFHUyxcbit9O1xuK1xuK3N0cnVjdCBlbnVtX3NldCB7XG4rXHRjb25zdCBjaGFyICpuYW1lO1xuK1x0Y29uc3Qgc3RydWN0IGVudW1fZW50cnkgKmVudHJ5O1xuK1x0ZW51bSB5bmxfZW51bV90eXBlIHR5cGU7XG4rfTtcbitcbitzdHJ1Y3QgbGludGVyX2N0eCB7XG4rXHRpbnQgZXJyb3JzO1xuK1x0aW50IHdhcm5pbmdzO1xuK1x0Y29uc3QgY2hhciAqbmFtZTtcbit9O1xuK1xuKyNkZWZpbmUgZXJyZihmbXQsIC4uLikgXFxcbitcdGRvIHsgXFxcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiJXM6IEVSUk9SOiBcIiBmbXQsIGN0eC1cdTAwM2VuYW1lLCBfX1ZBX0FSR1NfXyk7IFxcXG4rXHRcdGN0eC1cdTAwM2VlcnJvcnMrKzsgXFxcbitcdH0gd2hpbGUgKDApXG4rXG4rI2RlZmluZSB3YXJuZihmbXQsIC4uLikgXFxcbitcdGRvIHsgXFxcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiJXM6IFdBUk46IFwiIGZtdCwgY3R4LVx1MDAzZW5hbWUsIF9fVkFfQVJHU19fKTsgXFxcbitcdFx0Y3R4LVx1MDAzZXdhcm5pbmdzKys7IFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuK3N0YXRpYyBpbmxpbmUgbG9uZyBsb25nIGZpbmRfbmV4dF92YWx1ZShjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzLFxuK1x0XHRcdFx0XHRjb25zdCBsb25nIGxvbmcgbGFzdF92YWwpXG4re1xuK1x0c3dpdGNoIChlcy1cdTAwM2V0eXBlKSB7XG4rXHRjYXNlIFlOTF9FTlVNOlxuK1x0XHRyZXR1cm4gbGFzdF92YWwgKyAxO1xuK1x0Y2FzZSBZTkxfRkxBR1M6XG4rXHRcdHJldHVybiBsYXN0X3ZhbCBcdTAwM2NcdTAwM2MgMTtcbitcdGRlZmF1bHQ6XG4rXHRcdC8qIHVucmVhY2hhYmxlICovXG4rXHRcdGFib3J0KCk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW50X2VudW1fZW50cnkoc3RydWN0IGxpbnRlcl9jdHggKmN0eCxcbitcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBlbnVtX3NldCAqZXMsXG4rXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnksXG4rXHRcdFx0XHQgICBsb25nIGxvbmcgKmxhc3RfdmFsLCBjb25zdCBpbnQgaSxcbitcdFx0XHRcdCAgIGNvbnN0IGludCBjbnQpXG4re1xuK1x0Y29uc3QgbG9uZyBsb25nIHZhbCA9IGVudHJ5LVx1MDAzZWMudmFsO1xuK1xuK1x0aWYgKGkgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHZhbCAhPSAqbGFzdF92YWwgXHUwMDI2XHUwMDI2IHZhbCAhPSBmaW5kX25leHRfdmFsdWUoZXMsICpsYXN0X3ZhbCkpXG4rXHRcdHdhcm5mKFwiJXM6IFBvc3NpYmxlIG1pc3NpbmcgbWVtYmVyIGJlZm9yZSAlcyAoJWxsZCAtXHUwMDNlICVsbGQpXFxuXCIsXG4rXHRcdCAgICAgIGVzLVx1MDAzZW5hbWUsIGVudHJ5LVx1MDAzZWMubmFtZSwgKmxhc3RfdmFsLCB2YWwpO1xuK1x0Kmxhc3RfdmFsID0gZW50cnktXHUwMDNlYy52YWw7XG4rXG4rXHRpZiAoaSA9PSBjbnQgLSAxIFx1MDAyNlx1MDAyNiBzdHJjbXAoZW50cnktXHUwMDNleW5sLm5hbWUsIFwibWF4XCIpID09IDApXG4rXHRcdGVycmYoXCIlczogU2VudGluYWwgdXNlZCBpbiBZTkwgc3BlY1xcblwiLCBlcy1cdTAwM2VuYW1lKTtcbitcbitcdGlmIChlbnRyeS1cdTAwM2VjLmlzX3VuZGVmKSB7XG4rXHRcdGVycmYoXCIlczogJXM6ICVzIG5vdCBmb3VuZFxcblwiLCBlcy1cdTAwM2VuYW1lLCBlbnRyeS1cdTAwM2V5bmwubmFtZSxcbitcdFx0ICAgICBlbnRyeS1cdTAwM2VjLm5hbWUpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRpZiAoZW50cnktXHUwMDNleW5sLnZhbCA9PSBlbnRyeS1cdTAwM2VjLnZhbClcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKGVudHJ5LVx1MDAzZWlzX3NlbnRpbmFsKSB7XG4rXHRcdGlmIChlcy1cdTAwM2V0eXBlID09IFlOTF9FTlVNIFx1MDAyNlx1MDAyNiBlbnRyeS1cdTAwM2V5bmwudmFsICsgMSA9PSBlbnRyeS1cdTAwM2VjLnZhbClcbitcdFx0XHRyZXR1cm47IC8qIGVnLiBERVZDT05GX01BWCBpcyB0aGUgc3RvcmFnZSBzaXplICovXG4rXHRcdHdhcm5mKFwiJXM6IFNlbnRpbmFsIG1pc21hdGNoOiAlbGxkICE9ICVsbGQgKExhc3QgWU5MICE9ICVzKVxcblwiLFxuK1x0XHQgICAgICBlcy1cdTAwM2VuYW1lLCBlbnRyeS1cdTAwM2V5bmwudmFsLCBlbnRyeS1cdTAwM2VjLnZhbCwgZW50cnktXHUwMDNlYy5uYW1lKTtcbitcdH0gZWxzZSB7XG4rXHRcdGVycmYoXCIlczogVmFsdWUgbWlzbWF0Y2g6ICVsbGQgIT0gJWxsZCAoJXMgIT0gJXMpXFxuXCIsIGVzLVx1MDAzZW5hbWUsXG4rXHRcdCAgICAgZW50cnktXHUwMDNleW5sLnZhbCwgZW50cnktXHUwMDNlYy52YWwsIGVudHJ5LVx1MDAzZXlubC5uYW1lLFxuK1x0XHQgICAgIGVudHJ5LVx1MDAzZWMubmFtZSk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW50X2VudW0oc3RydWN0IGxpbnRlcl9jdHggKmN0eCwgY29uc3Qgc3RydWN0IGVudW1fc2V0ICplcylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZW51bV9lbnRyeSAqZW50cnkgPSBlcy1cdTAwM2VlbnRyeTtcbitcdGxvbmcgbG9uZyBsYXN0X3ZhbDtcbitcdGludCBjbnQgPSAwO1xuK1x0aW50IGkgPSAwO1xuK1xuK1x0d2hpbGUgKGVudHJ5LVx1MDAzZXlubC5uYW1lKSB7XG4rXHRcdGlmICghZW50cnktXHUwMDNlaXNfc2VudGluYWwpXG4rXHRcdFx0Y250Kys7XG4rXHRcdGVudHJ5Kys7XG4rXHR9XG4rXHRlbnRyeSA9IGVzLVx1MDAzZWVudHJ5O1xuK1xuK1x0d2hpbGUgKGVudHJ5LVx1MDAzZXlubC5uYW1lKVxuK1x0XHRsaW50X2VudW1fZW50cnkoY3R4LCBlcywgZW50cnkrKywgXHUwMDI2bGFzdF92YWwsIGkrKywgY250KTtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgbGludGVyX3J1bihjb25zdCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsXG4rXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgZW51bV9zZXQgKmVzKVxuK3tcbitcdHN0cnVjdCBsaW50ZXJfY3R4IGN0eCA9IHtcbitcdFx0Lm5hbWUgPSBhcmd2W2FyZ2MgXHUwMDNlIDEgPyAxIDogMF0sXG4rXHR9O1xuK1xuK1x0d2hpbGUgKGVzLVx1MDAzZW5hbWUpIHtcbitcdFx0bGludF9lbnVtKFx1MDAyNmN0eCwgZXMpO1xuK1x0XHRlcysrO1xuK1x0fVxuK1xuK1x0aWYgKGN0eC5lcnJvcnMgfHwgY3R4Lndhcm5pbmdzKVxuK1x0XHRmcHJpbnRmKHN0ZGVyciwgXCIlczogTGludGVyIHN1bW1hcnk6ICVkIGVycm9ycywgJWQgd2FybmluZ3NcXG5cIixcbitcdFx0XHRjdHgubmFtZSwgY3R4LmVycm9ycywgY3R4Lndhcm5pbmdzKTtcbitcbitcdHJldHVybiBFWElUX1NVQ0NFU1M7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbmluZGV4IDJiMzQ4M2RiMWI2MGMuLjViYmUzY2JhOGY3NTkgMTAwNzU1XG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuKysrIGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbkBAIC0xNjg4LDYgKzE2ODgsOCBAQCBjbGFzcyBDb2RlV3JpdGVyOlxuICAgICAgICAgc2VsZi5jbG9zZV9vdXRfZmlsZSgpXG4gXG4gICAgIGRlZiBjbG9zZV9vdXRfZmlsZShzZWxmKTpcbisgICAgICAgIGlmIHNlbGYuX2Jsb2NrX2VuZDpcbisgICAgICAgICAgICBzZWxmLl9vdXQud3JpdGUoJ1xcdCcgKiBzZWxmLl9pbmQgKyAnfVxcbicpXG4gICAgICAgICBpZiBzZWxmLl9vdXQgPT0gb3Muc3lzLnN0ZG91dDpcbiAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICMgQXZvaWQgbW9kaWZ5aW5nIHRoZSBmaWxlIGlmIGNvbnRlbnRzIGRpZG4ndCBjaGFuZ2VcbkBAIC0yMDg0LDYgKzIwODYsMzAgQEAgZGVmIHB1dF9lbnVtX3RvX3N0cihfZmFtaWx5LCBjdywgZW51bSk6XG4gICAgIF9wdXRfZW51bV90b19zdHJfaGVscGVyKGN3LCBlbnVtLnJlbmRlcl9uYW1lLCBtYXBfbmFtZSwgJ3ZhbHVlJywgZW51bT1lbnVtKVxuIFxuIFxuK2RlZiBwdXRfZW51bV90b19saW50ZXIoZmFtaWx5LCBjdywgZW51bSk6XG4rICAgIG5hbWVfcGZ4ID0gZW51bS5nZXQoJ25hbWUtcHJlZml4JywgZlwie2ZhbWlseS5pZGVudF9uYW1lfS17ZW51bVsnbmFtZSddfS1cIilcbisgICAgbWF4X25hbWUgPSBjX3VwcGVyKG5hbWVfcGZ4ICsgJ21heCcpXG4rICAgIG1hcF9uYW1lID0gZid7ZW51bS5yZW5kZXJfbmFtZX1fZW50cmllcydcbisgICAgY3cuYmxvY2tfc3RhcnQobGluZT1mXCJzdGF0aWMgY29uc3Qgc3RydWN0IGVudW1fZW50cnkge21hcF9uYW1lfVtdID1cIilcbisgICAgdmFsID0gMFxuKyAgICBmb3IgZW50cnkgaW4gZW51bS5lbnRyaWVzLnZhbHVlcygpOlxuKyAgICAgICAgdmFsID0gZW50cnkudXNlcl92YWx1ZSgpXG4rICAgICAgICBjX25hbWUgPSBlbnRyeS5jX25hbWVcbisgICAgICAgIGN3LnAoZicjaWYgZGVmaW5lZCh7Y19uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3tjX25hbWV9KScpXG4rICAgICAgICBjdy5wKGYnWU5MX0VOVU1fRU5UUlkoXCJ7ZW50cnkubmFtZX1cIiwge2NfbmFtZX0sIHt2YWx9KSwnKVxuKyAgICAgICAgY3cucCgnI2Vsc2UnKVxuKyAgICAgICAgY3cucChmJ1lOTF9FTlVNX0JBRF9FTlRSWShcIntlbnRyeS5uYW1lfVwiLCB7Y19uYW1lfSwge3ZhbH0pLCcpXG4rICAgICAgICBjdy5wKCcjZW5kaWYnKVxuKyAgICBjdy5wKGYnI2lmIGRlZmluZWQoe21heF9uYW1lfSkgfHwgZGVmaW5lZChMSU5URVJfSEFTX3ttYXhfbmFtZX0pJylcbisgICAgY3cucChmJ1lOTF9FTlVNX1NFTlRJTkFMKHttYXhfbmFtZX0sIHt2YWx9KSwnKVxuKyAgICBjdy5wKCcjZW5kaWYnKVxuKyAgICBjdy5wKCd7fSwnKVxuKyAgICBjdy5ibG9ja19lbmQobGluZT0nOycpXG4rICAgIGN3Lm5sKClcbisgICAgZW51bV90eXBlID0gZW51bVsndHlwZSddLnVwcGVyKClcbisgICAgcmV0dXJuIGYne3tcIntlbnVtLm5hbWV9XCIsIFx1MDAyNnttYXBfbmFtZX1bMF0sIFlOTF97ZW51bV90eXBlfX19LCdcbitcbitcbiBkZWYgcHV0X2xvY2FsX3ZhcnMoc3RydWN0KTpcbiAgICAgbG9jYWxfdmFycyA9IFtdXG4gICAgIGhhc19hcnJheSA9IEZhbHNlXG5AQCAtMzQ2Miw2ICszNDg4LDcgQEAgZGVmIG1haW4oKTpcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zcGVjJywgZGVzdD0nc3BlYycsIHR5cGU9c3RyLCByZXF1aXJlZD1UcnVlKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGRlc3Q9J2hlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9Tm9uZSlcbiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zb3VyY2UnLCBkZXN0PSdoZWFkZXInLCBhY3Rpb249J3N0b3JlX2ZhbHNlJylcbisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1saW50ZXInLCBkZXN0PSdsaW50ZXInLCBhY3Rpb249J3N0b3JlX3RydWUnKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVzZXItaGVhZGVyJywgbmFyZ3M9JysnLCBkZWZhdWx0PVtdKVxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNtcC1vdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PU5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRG8gbm90IG92ZXJ3cml0ZSB0aGUgb3V0cHV0IGZpbGUgaWYgdGhlIG5ldyBvdXRwdXQgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbGQnKVxuQEAgLTM0NzAsOCArMzQ5NywxMCBAQCBkZWYgbWFpbigpOlxuICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZ1bmN0aW9uLXByZWZpeCcsIGRlc3Q9J2ZuX3ByZWZpeCcsIHR5cGU9c3RyKVxuICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKVxuIFxuKyAgICBpZiBhcmdzLmxpbnRlcjpcbisgICAgICAgIGFyZ3MuaGVhZGVyID0gRmFsc2VcbiAgICAgaWYgYXJncy5oZWFkZXIgaXMgTm9uZTpcbi0gICAgICAgIHBhcnNlci5lcnJvcihcIi0taGVhZGVyIG9yIC0tc291cmNlIGlzIHJlcXVpcmVkXCIpXG4rICAgICAgICBwYXJzZXIuZXJyb3IoXCItLWhlYWRlciwgLS1zb3VyY2Ugb3IgLS1saW50ZXIgaXMgcmVxdWlyZWRcIilcbiBcbiAgICAgZXhjbHVkZV9vcHMgPSBbcmUuY29tcGlsZShleHByKSBmb3IgZXhwciBpbiBhcmdzLmV4Y2x1ZGVfb3BdXG4gXG5AQCAtMzQ5NCwxNyArMzUyMywxOSBAQCBkZWYgbWFpbigpOlxuICAgICAgICAgY3cucChmJy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiB7cGFyc2VkLmxpY2Vuc2V9JylcbiAgICAgY3cucChcIi8qIERvIG5vdCBlZGl0IGRpcmVjdGx5LCBhdXRvLWdlbmVyYXRlZCBmcm9tOiAqL1wiKVxuICAgICBjdy5wKGZcIi8qXFx0e3NwZWNfa2VybmVsfSAqL1wiKVxuLSAgICBjdy5wKGZcIi8qIFlOTC1HRU4ge2FyZ3MubW9kZX0geydoZWFkZXInIGlmIGFyZ3MuaGVhZGVyIGVsc2UgJ3NvdXJjZSd9ICovXCIpXG4tICAgIGlmIGFyZ3MuZXhjbHVkZV9vcCBvciBhcmdzLnVzZXJfaGVhZGVyIG9yIGFyZ3MuZm5fcHJlZml4OlxuLSAgICAgICAgbGluZSA9ICcnXG4tICAgICAgICBpZiBhcmdzLnVzZXJfaGVhZGVyOlxuLSAgICAgICAgICAgIGxpbmUgKz0gJyAtLXVzZXItaGVhZGVyICcuam9pbihbJyddICsgYXJncy51c2VyX2hlYWRlcilcbi0gICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDpcbi0gICAgICAgICAgICBsaW5lICs9ICcgLS1leGNsdWRlLW9wICcuam9pbihbJyddICsgYXJncy5leGNsdWRlX29wKVxuLSAgICAgICAgaWYgYXJncy5mbl9wcmVmaXg6XG4tICAgICAgICAgICAgbGluZSArPSBmJyAtLWZ1bmN0aW9uLXByZWZpeCB7YXJncy5mbl9wcmVmaXh9J1xuLSAgICAgICAgY3cucChmJy8qIFlOTC1BUkd7bGluZX0gKi8nKVxuLSAgICBjdy5wKCcvKiBUbyByZWdlbmVyYXRlIHJ1bjogdG9vbHMvbmV0L3lubC95bmwtcmVnZW4uc2ggKi8nKVxuKyAgICBpZiBub3QgYXJncy5saW50ZXI6XG4rICAgICAgICB5bmxfYXJnID0gJ2hlYWRlcicgaWYgYXJncy5oZWFkZXIgZWxzZSAnc291cmNlJ1xuKyAgICAgICAgY3cucChmXCIvKiBZTkwtR0VOIHthcmdzLm1vZGV9IHt5bmxfYXJnfSAqL1wiKVxuKyAgICAgICAgaWYgYXJncy5leGNsdWRlX29wIG9yIGFyZ3MudXNlcl9oZWFkZXIgb3IgYXJncy5mbl9wcmVmaXg6XG4rICAgICAgICAgICAgbGluZSA9ICcnXG4rICAgICAgICAgICAgaWYgYXJncy51c2VyX2hlYWRlcjpcbisgICAgICAgICAgICAgICAgbGluZSArPSAnIC0tdXNlci1oZWFkZXIgJy5qb2luKFsnJ10gKyBhcmdzLnVzZXJfaGVhZGVyKVxuKyAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV9vcDpcbisgICAgICAgICAgICAgICAgbGluZSArPSAnIC0tZXhjbHVkZS1vcCAnLmpvaW4oWycnXSArIGFyZ3MuZXhjbHVkZV9vcClcbisgICAgICAgICAgICBpZiBhcmdzLmZuX3ByZWZpeDpcbisgICAgICAgICAgICAgICAgbGluZSArPSBmJyAtLWZ1bmN0aW9uLXByZWZpeCB7YXJncy5mbl9wcmVmaXh9J1xuKyAgICAgICAgICAgIGN3LnAoZicvKiBZTkwtQVJHe2xpbmV9ICovJylcbisgICAgICAgIGN3LnAoJy8qIFRvIHJlZ2VuZXJhdGUgcnVuOiB0b29scy9uZXQveW5sL3lubC1yZWdlbi5zaCAqLycpXG4gICAgIGN3Lm5sKClcbiBcbiAgICAgaWYgYXJncy5tb2RlID09ICd1YXBpJzpcbkBAIC0zNTM5LDYgKzM1NzAsOCBAQCBkZWYgbWFpbigpOlxuICAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2UnKVxuICAgICAgICAgICAgIGlmIGZhbWlseV9jb250YWluc19iaXRmaWVsZDMyKHBhcnNlZCk6XG4gICAgICAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGxpbmsuaFx1MDAzZScpXG4rICAgICAgICBlbGlmIGFyZ3MubGludGVyOlxuKyAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFwiLi4vbGludGVyL2xpbnRlci5oXCInKVxuICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICBjdy5wKGYnI2luY2x1ZGUgXCJ7aGRyX2ZpbGV9XCInKVxuICAgICAgICAgICAgIGN3LnAoJyNpbmNsdWRlIFwieW5sLmhcIicpXG5AQCAtMzY5MCw2ICszNzIzLDIxIEBAIGRlZiBtYWluKCk6XG4gICAgICAgICAgICAgICAgICAgICBjdy5ubCgpXG4gICAgICAgICAgICAgICAgICAgICBwcmludF93cmFwcGVkX3R5cGUocmkpXG4gICAgICAgICAgICAgY3cubmwoKVxuKyAgICAgICAgZWxpZiBhcmdzLmxpbnRlcjpcbisgICAgICAgICAgICBlbnVtX3NldHMgPSBbXVxuKyAgICAgICAgICAgIGZvciBuYW1lLCBjb25zdCBpbiBwYXJzZWQuY29uc3RzLml0ZW1zKCk6XG4rICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29uc3QsIEVudW1TZXQpOlxuKyAgICAgICAgICAgICAgICAgICAgZW51bV9zZXRzLmFwcGVuZChwdXRfZW51bV90b19saW50ZXIocGFyc2VkLCBjdywgY29uc3QpKVxuKyAgICAgICAgICAgIGN3Lm5sKClcbisgICAgICAgICAgICBjdy5ibG9ja19zdGFydChsaW5lPVwic3RhdGljIGNvbnN0IHN0cnVjdCBlbnVtX3NldCBlbnVtc1tdID1cIilcbisgICAgICAgICAgICBmb3IgZW51bV9zZXQgaW4gZW51bV9zZXRzOlxuKyAgICAgICAgICAgICAgICBjdy5wKGVudW1fc2V0KVxuKyAgICAgICAgICAgIGN3LnAoJ3t9LCcpXG4rICAgICAgICAgICAgY3cuYmxvY2tfZW5kKGxpbmU9JzsnKVxuKyAgICAgICAgICAgIGN3Lm5sKClcbisgICAgICAgICAgICBjdy53cml0ZV9mdW5jKCdpbnQnLCAnbWFpbicsXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPVsnY29uc3QgaW50IGFyZ2MnLCAnY29uc3QgY2hhciAqKmFyZ3YnXSxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk9WydyZXR1cm4gbGludGVyX3J1bihhcmdjLCBhcmd2LCBcdTAwMjZlbnVtc1swXSk7J10pXG4gICAgICAgICBlbHNlOlxuICAgICAgICAgICAgIGN3LnAoJy8qIEVudW1zICovJylcbiAgICAgICAgICAgICBwdXRfb3BfbmFtZShwYXJzZWQsIGN3KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NTI6MjcuNjAwODA2NDU5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ2MDg4MTIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBGb2N1cyBvbiBOZXRsaW5rIFNwZWNzIGFuZCBVQVBJIEhlYWRlcnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgcHJpbWFyaWx5IGZvY3VzZWQgb24gdXBkYXRpbmcgdGhlIHVzZXItc3BhY2UgQVBJIChVQVBJKSBkZWZpbml0aW9ucywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gTmV0bGluayBhbmQgdGhlIHVuZGVybHlpbmcgaGVhZGVyIGZpbGVzLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIHRoZSBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2AgZGlyZWN0b3J5LCB3aGljaCBpcyB3aGVyZSB0aGUgaGVhcnQgb2YgTmV0bGluaydzIHNwZWNpZmljYXRpb24gbGllcy5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byB0aGUgWUFNTCBmaWxlcy4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIG9yIG1vZGlmeWluZyBzcGVjaWZpY2F0aW9ucyBmb3IgYGNvbm50cmFja2AsIGBuZnRhYmxlc2AsIGFuZCBgcnQtbGlua2Agd2l0aGluIHRoZSBOZXRsaW5rIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aG9zZSBZQU1MIGNoYW5nZXMg4oCTIGZpZWxkIG5hbWVzLCBwcmVmaXhlcywgaG93IHRoZXkgbWFwIHRvIGtlcm5lbCBzdHJ1Y3R1cmVzLCBhbmQgc28gb24uXG5cblRoZSBgcnQtbGlua2AgdXBkYXRlcyBhcmUgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGJlY2F1c2UgdGhleSBsaWtlbHkgc2lnbmFsIGltcHJvdmVtZW50cyB0byB0aGUgcm91dGluZyB0YWJsZSBhbmQgbGluayBtYW5hZ2VtZW50IEFQSXMsIHdoaWNoIGFyZSBhbHdheXMgY3JpdGljYWwuIEkgbmVlZCB0byBzZWUgaWYgdGhlc2Ugc3BlYyBtb2RpZmljYXRpb25zIHJlZmxlY3QgbmV3IGZlYXR1cmVzLCBidWcgZml4ZXMsIG9yIHNpbXBseSBjbGFyaWZpY2F0aW9ucyBhbmQgYmV0dGVyIG9yZ2FuaXphdGlvbi5cblxuVGhlbiB0aGVyZSdzIHRoZSBgaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaGAgY2hhbmdlLiBJdCBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGluY2x1ZGUgZ3VhcmQgdXBkYXRlLCBjaGFuZ2luZyB0aGUgZGVmaW5lIG5hbWUgZnJvbSBgX0xJTlVYX1NOTVBfSGAgdG8gYF9VQVBJX0xJTlVYX1NOTVBfSGAuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBlbnN1cmluZyB0aGVzZSB1c2VyLXNwYWNlIGhlYWRlcnMgZG9uJ3QgY29sbGlkZSB3aXRoIGludGVybmFsIGtlcm5lbCBkZWZpbml0aW9ucyBvciBvdGhlciBVQVBJIGNvbXBvbmVudHMuIEkgd2FudCB0byBjaGVjayBpZiB0aGUgY29ycmVzcG9uZGluZyBgaW5jbHVkZS9saW51eC9zbm1wLmhgIGV4aXN0cyB0byBiZSBzdXJlIHdlIGFyZSBub3QgZGVwcmVjYXRpbmcgaXQuXG5cbkZpbmFsbHksIHRoZSBgdG9vbHMvbmV0L3lubC9gIGRpcmVjdG9yeSBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHNvbWUgc29ydCBvZiBjb2RlIGdlbmVyYXRpb24gYW5kIGxpbnRpbmcgcHJvY2VzcywgZXNwZWNpYWxseSBhcm91bmQgdGhlIE5ldGxpbmsgZGVmaW5pdGlvbnMuIEkgc2VlIGFkZGl0aW9ucyBmb3IgbGludGVyIGlnbm9yZXMsIHRhcmdldHMsIGEgbmV3IHNoZWxsIHNjcmlwdCAoYGdlbi1oLnNoYCksIGEgaGVhZGVyIChgbGludGVyLmhgKSwgYW5kIFB5dGhvbiBjb2RlIHVwZGF0ZXMuIFRoaXMgbGlrZWx5IGF1dG9tYXRlcyB2YWxpZGF0aW9uIG9mIE5ldGxpbmsgc3BlY2lmaWNhdGlvbnMgYW5kL29yIGdlbmVyYXRlcyBDIGNvZGUgYmFzZWQgb24gdGhvc2Ugc3BlY2lmaWNhdGlvbnMuIEl0J3MgYSBuaWNlIGltcHJvdmVtZW50IGZvciBtYWludGFpbmFiaWxpdHkuIEkgd2FudCB0byBsb29rIG1vcmUgaW50byB0aGlzLCBwYXJ0aWN1bGFybHkgdGhlIFB5dGhvbiBjb2RlLCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBsaW50ZXIgZnVuY3Rpb25zLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYHJ0LWxpbmsueWFtbGAgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgbmF0dXJlIG9mIHRoZSB1cGRhdGVzLCBmb2xsb3dlZCBieSB0aGUgbGludGVyIGNvZGUgdG8gc2VlIGhvdyBpdCB3b3Jrcy4gSSdsbCBuZWVkIHRvIHVzZSB0b29scyB0byB2ZXJpZnkgYW5kIHVuZGVyc3RhbmQgdGhlc2UgZmlsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzUzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NTI6MzMuMDYxNjg5NzY3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTA1MTkyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX0xJTlVYX1NOTVBfSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLTctXFxuaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaDo4OiNpZm5kZWYgX1VBUElfTElOVVhfU05NUF9IXFxuaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaDo5OiNkZWZpbmUgX1VBUElfTElOVVhfU05NUF9IXFxuaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaC0xMC1cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg9MzUyPWVudW1cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmgtMzc0LVxcbmluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmg6Mzc1OiNlbmRpZlxcdC8qIF9VQVBJX0xJTlVYX1NOTVBfSCAqL1xcbi0tXFxudG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzPTQzPUNGTEFHU19ydC1saW5rOj0kKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX0xJTktfSCxpZl9saW5rLmgpIFxcXFxcXG4tLVxcbnRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcy00OS1cXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0lGX1ZMQU5fSF8saWZfdmxhbi5oKSBcXFxcXFxudG9vbHMvbmV0L3lubC9NYWtlZmlsZS5kZXBzOjUwOlxcdCQoY2FsbCBnZXRfaGRyX2luYyxfTElOVVhfU05NUF9ILHNubXAuaCkgXFxcXFxcbnRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwcy01MS1cXHQkKGNhbGwgZ2V0X2hkcl9pbmMsX0xJTlVYX0RQTExfSCxkcGxsLmgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjUyOjM1LjI1MjIxMzIwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3NjUxNzQwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNOTVAgSGVhZGVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3lzdGVtIGhhbmRsZXMgU05NUC4gTXkgZmlyc3Qgc3RlcCBpcyB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGV4aXN0ZW5jZSBhbmQgY29udGVudHMgb2YgdGhlIGNvcmUgaGVhZGVyIGZpbGUuIEknbSBnb2luZyB0byBjaGVjayBmb3IgYGluY2x1ZGUvbGludXgvc25tcC5oYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgZnVuZGFtZW50YWwgZGVmaW5pdGlvbnMsIHN0cnVjdHVyZXMsIGFuZCBwb3NzaWJseSBldmVuIHNvbWUgYmFzaWMgZnVuY3Rpb24gZGVjbGFyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIExpbnV4IGtlcm5lbCdzIFNOTVAgaW1wbGVtZW50YXRpb24uIEtub3dpbmcgaXRzIHByZXNlbmNlIChvciBhYnNlbmNlKSBwcm92aWRlcyBhIGNyaXRpY2FsIHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGFyY2hpdGVjdHVyZS4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgZXhpc3RpbmcgY29kZSBoYXMgaXRzIG93biBjdXN0b20gZXh0ZW5zaW9ucywgb3IgbGV2ZXJhZ2VzIHRoZSBzdGFuZGFyZCBTTk1QIGludGVyZmFjZS4gVGhhdCBoZWFkZXIgZmlsZSBpcyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTcwNiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjUyOjM3LjAxNzM5MTQ5NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1OTY0MjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNubXBcXFxcLmhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjI6NTI6MzcuMTUyOTk4MjkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU4MTc1NDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBjb25zdWx0IFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zIOKAkyB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlbGV2YW50IGNhdGVnb3JpZXMgYXJlIHRob3NlIHRoYXQgZG9uJ3QgaW52b2x2ZSBrZXJuZWwgZXhlY3V0YWJsZSBsb2dpYyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIGNoYW5nZXMgdG8gdXNlci1zcGFjZSB0b29scywgYW5kIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcuXG5cbk5vdywgSSdsbCBnbyB0aHJvdWdoIHRoZSBkaWZmIGZpbGUgYnkgZmlsZS4gSSBzZWU6XG5cbjEuICBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2Nvbm50cmFjay55YW1sYCDigJMgKipEb2N1bWVudGF0aW9uKipcbjIuICBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL25mdGFibGVzLnlhbWxgIOKAkyAqKkRvY3VtZW50YXRpb24qKlxuMy4gIGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvcnQtbGluay55YW1sYCDigJMgKipEb2N1bWVudGF0aW9uKipcbjQuICBgaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaGAg4oCTIFRoaXMgaXMgYSBoZWFkZXIgZmlsZSwgYnV0IGl0J3MgYSBzaW1wbGUgYCNpZm5kZWZgIGd1YXJkIGNoYW5nZS4gTm8gYWN0dWFsIGV4ZWN1dGFibGUgY29kZSwgZGF0YSBzdHJ1Y3R1cmVzLCBvciBkZWZpbml0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQuICoqSGVhZGVyIEd1YXJkIENoYW5nZSoqXG41LiAgYHRvb2xzL25ldC95bmwvTWFrZWZpbGUuZGVwc2Ag4oCTICoqdG9vbHMvKipcbjYuICBgdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvLmdpdGlnbm9yZWAg4oCTICoqdG9vbHMvKipcbjcuICBgdG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGVgIOKAkyAqKnRvb2xzLyoqXG44LiAgYHRvb2xzL25ldC95bmwvbGludGVyL2dlbi1oLnNoYCDigJMgKip0b29scy8qKlxuOS4gIGB0b29scy9uZXQveW5sL2xpbnRlci9saW50ZXIuaGAg4oCTICoqdG9vbHMvKipcbjEwLiBgdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlgIOKAkyAqKnRvb2xzLyoqXG5cbkFuYWx5emluZyB0aGUgZGlmZiwgSSBjYW4gY29uZmlybSB0aGF0IGFsbCB0aGUgY2hhbmdlcyBmYWxsIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3JpZXMgSSdtIHN1cHBvc2VkIHRvIGlnbm9yZS4gSXQncyBkb2N1bWVudGF0aW9uLCB0b29scyAoWU5MIG5ldGxpbmsgdG9vbC9saW50ZXIgc3VwcG9ydCksIGFuZCBhIHRyaXZpYWwgaGVhZGVyIGd1YXJkIHJlbmFtZS4gTm8gbW9kaWZpY2F0aW9ucyBhZmZlY3QgdGhlIGtlcm5lbCdzIGV4ZWN1dGFibGUgbG9naWMsIGRhdGEgc3RydWN0dXJlcywgY29udHJvbCBmbG93LCBvciBvdmVyYWxsIGJlaGF2aW9yLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSBjcml0ZXJpYSBkZWZpbmVkLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIHNldCB0byBgZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjazpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZSAtICoqQ2hlY2tlZCoqXG4qICAgYEZvY3VzU3ltYm9sc2A6IFxcWyBdIC0gKipJbXBsaWNpdGx5IEVtcHR5KipcbiogICBgRW5hYmxlQ29uZmlnc2A6IFxcWyBdIC0gKipJbXBsaWNpdGx5IEVtcHR5KipcbiogICBgUmVhc29uaW5nYDogQ29uY2lzZSBleHBsYW5hdGlvbiwgd2hpY2ggSSd2ZSBmb3JtdWxhdGVkLiAtICoqQ2hlY2tlZCoqXG5cbldpdGggdGhhdCwgSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50IGFuZCByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTE4LCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIyOjUyOjQxLjczNDc1NTQ4M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIG1vZGlmaWVzIGRvY3VtZW50YXRpb24gKFlBTUwgc3BlY3MgaW4gRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzLyksIHVzZXItc3BhY2UgdG9vbGluZy9saW50ZXJzICh0b29scy9uZXQveW5sLyksIGFuZCBhbiBpbmNsdWRlIGd1YXJkIGluIGluY2x1ZGUvdWFwaS9saW51eC9zbm1wLmguIE5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBtb2RpZmllcyBkb2N1bWVudGF0aW9uIChZQU1MIHNwZWNzIGluIERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy8pLCB1c2VyLXNwYWNlIHRvb2xpbmcvbGludGVycyAodG9vbHMvbmV0L3lubC8pLCBhbmQgYW4gaW5jbHVkZSBndWFyZCBpbiBpbmNsdWRlL3VhcGkvbGludXgvc25tcC5oLiBObyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMjo1Mjo0MS43MzQ3ODM2ODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8p6l[1] Phase: Running StartedAt: 2026-09-10 22:52:52 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8p6l[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 22:52:52 +0000 UTC FinishedAt: 2026-09-10 22:52:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}