IyBUcmFuc2xhdGlvbiBvZiBSLXRjbHRrLnBvdCB0byBGcmVuY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDUgVGhlIFIgRm91bmRhdGlvbgojIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSB0Y2x0ayBSIHBhY2thZ2UuCiMgUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPiwgMjAwNS4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogUiAyLjEyLjBcbiIKIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBidWdzLnItcHJvamVjdC5vcmdcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE0LTA4LTAzIDEyOjE3XG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTAzLTE4IDIyOjE1KzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPlxuIgoiTGFuZ3VhZ2UtVGVhbTogRnJlbmNoIDxSLWNvcmVAci1wcm9qZWN0Lm9yZz5cbiIKIkxhbmd1YWdlOiBmclxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiA+IDEpO1xuIgoiWC1HZW5lcmF0b3I6IFBvZWRpdCAxLjUuNVxuIgoKbXNnaWQgImNhbm5vdCBoYW5kbGUgb2JqZWN0IG9mIG1vZGUgJyVzJyIKbXNnc3RyICJpbXBvc3NpYmxlIGRlIG1hbmlwdWxlciB1biBvYmpldCBkZSBtb2RlICclcyciCgptc2dpZCAiY2Fubm90IGNoYW5nZSBuYW1lcyBvbiBUY2wgYXJyYXkiCm1zZ3N0ciAiaW1wb3NzaWJsZSBkZSBjaGFuZ2VyIGxlcyBub21zIGRhbnMgdW4gdGFibGVhdSBUY2wiCgptc2dpZCAiY2Fubm90IHNldCBsZW5ndGggb2YgVGNsIGFycmF5Igptc2dzdHIgImltcG9zc2libGUgZCdpbXBvc2VyIGxhIHRhaWxsZSBkJ3VuIHRhYmxlYXUgVGNsIgoKbXNnaWQgIlRjbCBwYWNrYWdlICclcycgbm90IGZvdW5kIgptc2dzdHIgImxlIHBhY2thZ2UgVGNsICclcycgZXN0IGludHJvdXZhYmxlIgoKbXNnaWQgIlRoZSB0a0dVSSBpcyBub3QgYXZhaWxhYmxlIHVuZGVyIFdpbmRvd3MiCm1zZ3N0ciAiTCdpbnRlcmZhY2UgdXRpbGlzYXRldXIgdGtHVUkgbidlc3QgcGFzIGRpc3BvbmlibGUgc291cyBXaW5kb3dzIgoKbXNnaWQgIkZpbGUiCm1zZ3N0ciAiRmljaGllciIKCm1zZ2lkICJEZW1vcyIKbXNnc3RyICJE6W1vcyIKCm1zZ2lkICJQYWNrYWdlcyIKbXNnc3RyICJQYWNrYWdlcyIKCm1zZ2lkICJIZWxwIgptc2dzdHIgIkFpZGUiCgptc2dpZCAiU291cmNlIFIgY29kZSIKbXNnc3RyICJTb3VyY2VyIGR1IGNvZGUgUiIKCm1zZ2lkICJRdWl0Igptc2dzdHIgIlF1aXR0ZXIiCgptc2dpZCAiU2F2ZSB3b3Jrc3BhY2UiCm1zZ3N0ciAiU2F1dmVyIGwnZW52aXJvbm5lbWVudCIKCm1zZ2lkICJEb24ndCBzYXZlIHdvcmtzcGFjZSIKbXNnc3RyICJOZSBwYXMgc2F1dmVyIGwnZW52aXJvbm5lbWVudCIKCm1zZ2lkICJ0IHRlc3QiCm1zZ3N0ciAiVGVzdCB0IgoKbXNnaWQgIkRlbnNpdHkiCm1zZ3N0ciAiRGVuc2l06SIKCm1zZ2lkICJJbnRlcmFjdGl2ZSBsaW5lYXIgZml0dGluZyIKbXNnc3RyICJBanVzdGVtZW50IGxpbulhaXJlIGludGVyYWN0aWYiCgptc2dpZCAiUiBGQVEiCm1zZ3N0ciAiRkFRIFIiCgptc2dpZCAiTG9hZCIKbXNnc3RyICJDaGFyZ2VyIgoKbXNnaWQgIkdvIGdldCB0aGVtISIKbXNnc3RyICJMZXMgculjdXDpcmVyICEiCgptc2dpZCAiTG9hZCBwYWNrYWdlcyIKbXNnc3RyICJDaGFyZ2VyIGRlcyBwYWNrYWdlcyIKCm1zZ2lkICJJbnN0YWxsIHBhY2thZ2VzIGZyb20gQ1JBTiIKbXNnc3RyICJJbnN0YWxsZXIgZGVzIHBhY2thZ2VzIGRlcHVpcyBDUkFOIgoKbXNnaWQgIkhlbHAgdG9waWM6Igptc2dzdHIgIkFpZGUgc3VyIDoiCgptc2dpZCAiTWFudWFscyBpbiBQREYgZm9ybWF0Igptc2dzdHIgIk1hbnVlbHMgYXUgZm9ybWF0IFBERiIKCm1zZ2lkICJPSyIKbXNnc3RyICJPSyIKCm1zZ2lkICJDYW5jZWwiCm1zZ3N0ciAiQW5udWxlciIKCm1zZ2lkICIncGInIGlzIG5vdCBmcm9tIGNsYXNzICVzIgptc2dzdHIgIidwYicgbidlc3QgcGFzIHVuIG9iamV0IGRlIGNsYXNzZSAlcyIKCm1zZ2lkICInZmlsdGVycycgbXVzdCBiZSBhIDItY29sdW1uIGNoYXJhY3RlciBtYXRyaXgiCm1zZ3N0ciAiJ2ZpbHRlcnMnIGRvaXQg6nRyZSB1bmUgbWF0cmljZSBkZSBjaGHubmVzIGRlIGNhcmFjdOhyZXMg4CAyIGNvbG9ubmVzIgoKbXNnaWQgIlRjbC9UayBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBzeXN0ZW0iCm1zZ3N0ciAiVGNsL1RrIG4nZXN0IHBhcyBzdXBwb3J06SBzdXIgY2Ugc3lzdOhtZSIKCm1zZ2lkICJUY2wvVGsgc3VwcG9ydCBmaWxlcyB3ZXJlIG5vdCBpbnN0YWxsZWQiCm1zZ3N0ciAibGVzIGZpY2hpZXJzIFRjbC9UayBu6WNlc3NhaXJlcyBuJ29udCBwYXMg6XTpIGluc3RhbGzpcyIKCiN+IG1zZ2lkICJMb2FkaW5nIFRjbC9UayBpbnRlcmZhY2UgLi4uIgojfiBtc2dzdHIgIkNoYXJnZW1lbnQgZGUgVGNsL1RrLi4uIgoKI34gbXNnaWQgImRvbmUiCiN+IG1zZ3N0ciAidGVybWlu6SIK