IyBUcmFuc2xhdGlvbiBvZiBwYXJhbGxlbC5wb3QgdG8gRnJlbmNoCiMgQ29weXJpZ2h0IChDKSAyMDExIFRoZSBSIEZvdW5kYXRpb24KIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgcGFyYWxsZWwgUiBwYWNrYWdlLgojIFBoaWxpcHBlIEdyb3NqZWFuIDxwaGdyb3NqZWFuQHNjaXZpZXdzLm9yZz4sIDIwMDUuCiMKbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IFIgMi4xNC4wXG4iCiJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxOC0wMy0yOSAwNzowNi0wNzAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTAzLTE4IDIyOjA3KzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPlxuIgoiTGFuZ3VhZ2UtVGVhbTogRnJlbmNoIDxSLWNvcmVAci1wcm9qZWN0Lm9yZz5cbiIKIkxhbmd1YWdlOiBmclxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7cGx1cmFsPShuID4gMSk7XG4iCiJYLUdlbmVyYXRvcjogUG9lZGl0IDEuNS41XG4iCgojOiBmb3JrLmM6MTgxCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAidW5hYmxlIHRvIHRlcm1pbmF0ZSBjaGlsZCBwcm9jZXNzOiAlcyIKbXNnc3RyICJpbXBvc3NpYmxlIGRlIGNy6WVyIHVuZSBub3V2ZWxsZSBicmFuY2hlLCByYWlzb24gcG9zc2libGUgOiAlcyIKCiM6IGZvcmsuYzoyMDgKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICJ1bmFibGUgdG8gdGVybWluYXRlIGNoaWxkOiAlcyIKbXNnc3RyICJpbXBvc3NpYmxlIGRlIGNy6WVyIHVuIGNhbmFsIChwaXBlKSIKCiM6IGZvcmsuYzoyODcgZm9yay5jOjU1Ngptc2dpZCAibWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCm1zZ3N0ciAiZXJyZXVyIGQnYWxsb2NhdGlvbiBt6W1vaXJlIgoKIzogZm9yay5jOjMzNyBmb3JrLmM6MzQxIGZvcmsuYzozNDUKIywgYy1mb3JtYXQKbXNnaWQgImludmFsaWQgJyVzJyBhcmd1bWVudCIKbXNnc3RyICIiCgojOiBmb3JrLmM6NDAxCm1zZ2lkICIiCiJFcnJvciB3aGlsZSBzaHV0dGluZyBkb3duIHBhcmFsbGVsOiB1bmFibGUgdG8gdGVybWluYXRlIHNvbWUgY2hpbGQgIgoicHJvY2Vzc2VzXG4iCm1zZ3N0ciAiIgoKIzogZm9yay5jOjQ5MCBmb3JrLmM6NDkzCm1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIGEgcGlwZSIKbXNnc3RyICJpbXBvc3NpYmxlIGRlIGNy6WVyIHVuIGNhbmFsIChwaXBlKSIKCiM6IGZvcmsuYzo1MTUKIywgYy1mb3JtYXQKbXNnaWQgInVuYWJsZSB0byBmb3JrLCBwb3NzaWJsZSByZWFzb246ICVzIgptc2dzdHIgImltcG9zc2libGUgZGUgY3LpZXIgdW5lIG5vdXZlbGxlIGJyYW5jaGUsIHJhaXNvbiBwb3NzaWJsZSA6ICVzIgoKIzogZm9yay5jOjY4Mwptc2dpZCAib25seSBjaGlsZHJlbiBjYW4gc2VuZCBkYXRhIHRvIHRoZSBtYXN0ZXIgcHJvY2VzcyIKbXNnc3RyICIiCiJzZXVscyBkZXMgcHJvY2Vzc3VzIGVuZmFudHMgcGV1dmVudCBlbnZveWVyIGRlcyBkb25u6WVzIOAgdW4gcHJvY2Vzc3VzIG1h7nRyZSIKCiM6IGZvcmsuYzo2ODUKbXNnaWQgInRoZXJlIGlzIG5vIHBpcGUgdG8gdGhlIG1hc3RlciBwcm9jZXNzIgptc2dzdHIgImF1Y3VuIGNhbmFsIHZlcnMgbGUgcHJvY2Vzc3VzIG1h7nRyZSIKCiM6IGZvcmsuYzo2ODcKbXNnaWQgImNvbnRlbnQgdG8gc2VuZCBtdXN0IGJlIFJBVywgdXNlIHNlcmlhbGl6ZSgpIGlmIG5lZWRlZCIKbXNnc3RyICJsZSBjb250ZW51IOAgZW52b3llciBkb2l0IOp0cmUgUkFXLCB1dGlsaXNleiBzZXJpYWxpemUoKSBzaSBu6WNlc3NhaXJlIgoKIzogZm9yay5jOjY5NiBmb3JrLmM6NzA0IGZvcmsuYzoxMDgwCm1zZ2lkICJ3cml0ZSBlcnJvciwgY2xvc2luZyBwaXBlIHRvIHRoZSBtYXN0ZXIiCm1zZ3N0ciAiZXJyZXVyIGQn6WNyaXR1cmUsIGZlcm1ldHVyZSBkdSBjYW5hbCB2ZXJzIGxlIHByb2Nlc3N1cyBtYe50cmUiCgojOiBmb3JrLmM6NzE0Cm1zZ2lkICJvbmx5IHRoZSBtYXN0ZXIgcHJvY2VzcyBjYW4gc2VuZCBkYXRhIHRvIGEgY2hpbGQgcHJvY2VzcyIKbXNnc3RyICIiCiJzZXVsIGxlIHByb2Nlc3N1cyBtYe50cmUgcGV1dCBlbnZveWVyIGRlcyBkb25u6WVzIHZlcnMgdW4gcHJvY2Vzc3VzIGZpbHMiCgojOiBmb3JrLmM6NzIyCiMsIGMtZm9ybWF0Cm1zZ2lkICJjaGlsZCAlZCBkb2VzIG5vdCBleGlzdCIKbXNnc3RyICJsZSBwcm9jZXNzdXMgZmlscyAlZCBuJ2V4aXN0ZSBwYXMiCgojOiBmb3JrLmM6NzI4Cm1zZ2lkICJ3cml0ZSBlcnJvciIKbXNnc3RyICJlcnJldXIgZCfpY3JpdHVyZSIKCiM6IGZvcmsuYzo3ODEKIywgZnV6enksIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3Qgd2FpdCBmb3IgY2hpbGQgJWQgYXMgaXQgZG9lcyBub3QgZXhpc3QiCm1zZ3N0ciAibGUgcHJvY2Vzc3VzIGZpbHMgJWQgbidleGlzdGUgcGFzIgoKIzogZm9yay5jOjg0OCBmb3JrLmM6OTcxCiMsIGMtZm9ybWF0Cm1zZ2lkICJlcnJvciAnJXMnIGluIHNlbGVjdCIKbXNnc3RyICJlcnJldXIgJyVzJyBsb3JzIGRlIGxhIHPpbGVjdGlvbiIKCiM6IGZvcmsuYzoxMDYyCm1zZ2lkICInbWNraWxsJyBmYWlsZWQiCm1zZ3N0ciAiJ21ja2lsbCcgYSDpY2hvdekiCgojOiBmb3JrLmM6MTA3Mgptc2dpZCAiJ21jZXhpdCcgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIGNoaWxkIHByb2Nlc3MiCm1zZ3N0ciAiJ21jZXhpdCcgcGV1dCBzZXVsZW1lbnQg6nRyZSB1dGlsaXPpIGF2ZWMgdW4gcHJvY2Vzc3VzIGZpbHMiCgojOiBmb3JrLmM6MTA5NAptc2dpZCAiJ21jZXhpdCcgZmFpbGVkIgptc2dzdHIgIidtY2V4aXQnIGEg6WNob3XpIgoKIzogZm9yay5jOjExMjMgZm9yay5jOjExMzIKbXNnaWQgImludmFsaWQgQ1BVIGFmZmluaXR5IHNwZWNpZmljYXRpb24iCm1zZ3N0ciAic3DpY2lmaWNhdGlvbiBkJ2FmZmluaXTpIENQVSBpbmNvcnJlY3RlIgoKIzogZm9yay5jOjExNDMKbXNnaWQgInJlcXVlc3RlZCBDUFUgc2V0IGlzIHRvbyBsYXJnZSBmb3IgdGhpcyBzeXN0ZW0iCm1zZ3N0ciAibGUgc2V0IGRlIENQVSBkZW1hbmTpIGVzdCB0cm9wIGxhcmdlIHBvdXIgY2Ugc3lzdOhtZSIKCiM6IGZvcmsuYzoxMTY2Cm1zZ2lkICJyZXRyaWV2aW5nIENQVSBhZmZpbml0eSBzZXQgZmFpbGVkIgptc2dzdHIgImxhIHLpY3Vw6XJhdGlvbiBkZSBsJ2FmZmluaXTpIENQVSBhIOljaG916SIK