IyBCb29zdC5GbHl3ZWlnaHQgZXhhbXBsZXMgSmFtZmlsZQojCiMgQ29weXJpZ2h0IDIwMDYtMjAwOCBKb2Fxde1uIE0gTPNwZXogTXXxb3ouCiMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgojIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKIyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCiMKIyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9mbHl3ZWlnaHQgZm9yIGxpYnJhcnkgaG9tZSBwYWdlLgoKcHJvamVjdAogICAgOiByZXF1aXJlbWVudHMKICAgICAgPG9zPkxJTlVYOjx0aHJlYWRpbmc+bXVsdGkKICAgIDsKCmV4ZSBiYXNpYwogICAgOiBiYXNpYy5jcHAKICAgIDogPGluY2x1ZGU+JChCT09TVF9ST09UKQogICAgOwoKZXhlIGNvbXBvc2l0ZQogICAgOiBjb21wb3NpdGUuY3BwCiAgICA6IDxpbmNsdWRlPiQoQk9PU1RfUk9PVCkKICAgIDsKCmV4ZSBjdXN0b21fZmFjdG9yeQogICAgOiBjdXN0b21fZmFjdG9yeS5jcHAKICAgIDogPGluY2x1ZGU+JChCT09TVF9ST09UKQogICAgOwoKZXhlIGZpYm9uYWNjaQogICAgOiBmaWJvbmFjY2kuY3BwCiAgICA6IDxpbmNsdWRlPiQoQk9PU1RfUk9PVCkKICAgIDsKCmV4ZSBodG1sCiAgICA6IGh0bWwuY3BwCiAgICA6IDxpbmNsdWRlPiQoQk9PU1RfUk9PVCkKICAgIDsKCmV4ZSBrZXlfdmFsdWUKICAgIDoga2V5X3ZhbHVlLmNwcAogICAgOiA8aW5jbHVkZT4kKEJPT1NUX1JPT1QpCiAgICA7CgpleGUgcGVyZgogICAgOiBwZXJmLmNwcAogICAgOiA8aW5jbHVkZT4kKEJPT1NUX1JPT1QpCiAgICA6IHJlbGVhc2UKICAgIDsK