IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IGZvcm1hdCBzdHJpbmcgY2hlY2tpbmcgaW4gcGx1cmFsIGVudHJpZXMuCgpjYXQgPDxcRU9GID4gbWYtdGVzdDEwLnBvMQojIFNPTUUgREVTQ1JJUFRJVkUgVElUTEUuCiMgQ29weXJpZ2h0IChDKSBZRUFSIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgojIEZJUlNUIEFVVEhPUiA8RU1BSUxAQUREUkVTUz4sIFlFQVIuCiMKbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IEdOVSBiaXNvblxuIgoiUE8tUmV2aXNpb24tRGF0ZTogMjAwMS0wNC0wNSAxOTo0NyswMjAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IEFCQyBERUYgPGFiY0BnbnUudXVjcD5cbiIKIkxhbmd1YWdlLVRlYW06IHRlc3QgPHRlc3RAbGkub3JnPlxuIgoiTGFuZ3VhZ2U6IHRlc3RcbiIKIk1JTUUtVmVyc2lvbjogMS4wXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktOVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCgojOiBzcmMvcmVkdWNlLmM6NTExCiMsIGMtZm9ybWF0Cm1zZ2lkICIlZCB1c2VsZXNzIG5vbnRlcm1pbmFsIgptc2dpZF9wbHVyYWwgIiVkIHVzZWxlc3Mgbm9udGVybWluYWxzIgptc2dzdHJbMF0gIjEgeWFyYXJz/XogZGXwaf5rZW4gc2ltZ2UiCm1zZ3N0clsxXSAiJWQgeWFyYXJz/XogZGXwaf5rZW4gc2ltZ2VzIgoKIzogc3JjL3JlZHVjZS5jOjUyMAojLCBjLWZvcm1hdAptc2dpZCAib25lIHVzZWxlc3MgcnVsZSIKbXNnaWRfcGx1cmFsICIlZCB1c2VsZXNzIHJ1bGVzIgptc2dzdHJbMF0gIiVkIHlhcmFyc/16IGt1cmFsIgptc2dzdHJbMV0gIiVkIHlhcmFyc/16IGt1cmFscyIKRU9GCgo6ICR7TVNHRk1UPW1zZ2ZtdH0KJHtNU0dGTVR9IC0tY2hlY2sgLW8gL2Rldi9udWxsIG1mLXRlc3QxMC5wbzEgfHwgRXhpdCAxCgpjYXQgPDxcRU9GID4gbWYtdGVzdDEwLnBvMgojIFNPTUUgREVTQ1JJUFRJVkUgVElUTEUuCiMgQ29weXJpZ2h0IChDKSBZRUFSIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgojIEZJUlNUIEFVVEhPUiA8RU1BSUxAQUREUkVTUz4sIFlFQVIuCiMKbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IEdOVSBiaXNvblxuIgoiUE8tUmV2aXNpb24tRGF0ZTogMjAwMS0wNC0wNSAxOTo0NyswMjAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IEFCQyBERUYgPGFiY0BnbnUudXVjcD5cbiIKIk1JTUUtVmVyc2lvbjogMS4wXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktOVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCgojOiBzcmMvcmVkdWNlLmM6NTIwCiMsIGMtZm9ybWF0Cm1zZ2lkICJvbmUgdXNlbGVzcyBydWxlIgptc2dpZF9wbHVyYWwgIiVkIHVzZWxlc3MgcnVsZXMiCm1zZ3N0clswXSAiJWQgeWFyYXJz/Xoga3VyYWwiCm1zZ3N0clsxXSAiJWQgeWFyYXJz/Xoga3VyYWwlcyIKRU9GCgo6ICR7TVNHRk1UPW1zZ2ZtdH0KTENfTUVTU0FHRVM9QyBMQ19BTEw9IFwKJHtNU0dGTVR9IC0tY2hlY2sgLW8gL2Rldi9udWxsIG1mLXRlc3QxMC5wbzIgXAogICAgMj4mMSB8IGdyZXAgLXYgJ149PScgfCBzZWQgLWUgJ3N8W14gXSpcXG1zZ2ZtdFwuZXhlfG1zZ2ZtdHwnIC1lICdzfF5tc2dmbXRcLmV4ZXxtc2dmbXR8JyAtZSAnc3xeL2N5Z2RyaXZlL1teIF0qL21zZ2ZtdHxtc2dmbXR8JyB8IExDX0FMTD1DIHRyIC1kICdccicgPiBtZi10ZXN0MTAuZXJyCgpjYXQgPDwgRU9GID4gbWYtdGVzdDEwLm9rCm1mLXRlc3QxMC5wbzI6Njogd2FybmluZzogaGVhZGVyIGZpZWxkICdMYW5ndWFnZS1UZWFtJyBtaXNzaW5nIGluIGhlYWRlcgptZi10ZXN0MTAucG8yOjY6IHdhcm5pbmc6IGhlYWRlciBmaWVsZCAnTGFuZ3VhZ2UnIG1pc3NpbmcgaW4gaGVhZGVyCm1mLXRlc3QxMC5wbzI6MTk6IG51bWJlciBvZiBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgaW4gJ21zZ2lkX3BsdXJhbCcgYW5kICdtc2dzdHJbMV0nIGRvZXMgbm90IG1hdGNoCm1zZ2ZtdDogZm91bmQgMSBmYXRhbCBlcnJvcgpFT0YKCjogJHtESUZGPWRpZmZ9CiR7RElGRn0gbWYtdGVzdDEwLm9rIG1mLXRlc3QxMC5lcnIKcmVzdWx0PSQ/CgpleGl0ICRyZXN1bHQK