IyBUcmFuc2xhdGlvbiBvZiBSLXBhcmFsbGVsLnBvdCB0byBGcmVuY2gKIyBDb3B5cmlnaHQgKEMpIDIwMTEgVGhlIFIgRm91bmRhdGlvbgojIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBwYXJhbGxlbCBSIHBhY2thZ2UuCiMgUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPiwgMjAxMS4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogUiAyLjE0LjBcbiIKIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBidWdzLnItcHJvamVjdC5vcmdcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE4LTAzLTI5IDA3OjA2XG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTAzLTE4IDIyOjA4KzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPlxuIgoiTGFuZ3VhZ2UtVGVhbTogRnJlbmNoIDxSLWNvcmVAci1wcm9qZWN0Lm9yZz5cbiIKIkxhbmd1YWdlOiBmclxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7cGx1cmFsPShuID4gMSk7XG4iCiJYLUdlbmVyYXRvcjogUG9lZGl0IDEuNS41XG4iCgojLCBmdXp6eQptc2dpZCAiaW52YWxpZCB2YWx1ZSBvZiAlcyIKbXNnc3RyICJ2YWxldXIgaW5jb3JyZWN0ZSBwb3VyICdzZWVkJyIKCm1zZ2lkICJuZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIKbXNnc3RyICJhdSBtb2lucyB1biBhcmd1bWVudCBlc3QgcmVxdWlzIgoKbXNnaWQgInplcm8tbGVuZ3RoIGlucHV0cyBjYW5ub3QgYmUgbWl4ZWQgd2l0aCB0aG9zZSBvZiBub24temVybyBsZW5ndGgiCm1zZ3N0ciAiIgoiTGVzIGVudHLpZXMgZGUgbG9uZ3VldXIgbnVsbGUgbmUgcGV1dmVudCDqdHJlIG3pbGFuZ+llcyDgIGNlbGxlcyBkZSBsb25ndWV1ciAiCiJub24gbnVsbGUiCgptc2dpZCAiZGltKFgpIG11c3QgaGF2ZSBhIHBvc2l0aXZlIGxlbmd0aCIKbXNnc3RyICJkaW0oWCkgZG9pdCBhdm9pciB1bmUgbG9uZ3VldXIgcG9zaXRpdmUiCgptc2dpZCAiJ1gnIG11c3QgaGF2ZSBuYW1lZCBkaW1uYW1lcyIKbXNnc3RyICInWCcgZG9pdCBhdm9pciBkZXMgZGltbmFtZXMgbm9tbelzIgoKbXNnaWQgIm5vdCBhbGwgZWxlbWVudHMgb2YgJ01BUkdJTicgYXJlIG5hbWVzIG9mIGRpbWVuc2lvbnMiCm1zZ3N0ciAibGVzIOls6W1lbnRzIGRlICdNQVJHSU4nIG5lIHNvbnQgcGFzIHRvdXMgZGVzIG5vbXMgZGUgZGltZW5zaW9ucyIKCm1zZ2lkICJubyBjbHVzdGVyICdjbCcgc3VwcGxpZWQgYW5kIG5vbmUgaXMgcmVnaXN0ZXJlZCIKbXNnc3RyICJwYXMgZGUgZ3JhcHBlICdjbCcgZm91cm5pZSBldCBhdWN1bmUgbidlc3QgZW5yZWdpc3Ry6WUiCgptc2dpZCAibm90IGEgdmFsaWQgY2x1c3RlciIKbXNnc3RyICJncm91cGUgZGUgcHJvY2Vzc3VzIGludmFsaWRlIgoKbXNnaWQgInVua25vd24gY2x1c3RlciB0eXBlIgptc2dzdHIgImdyb3VwZSBkZSBwcm9jZXNzdXMgZGUgdHlwZSBpbmNvbm51IgoKIywgZnV6enkKbXNnaWQgIm51bWVyaWMgJ25hbWVzJyBtdXN0IGJlID49IDEiCm1zZ3N0ciAiJ25ub2RlcycgZG9pdCDqdHJlID49IDEiCgptc2dpZCAibm9kZSBvZiBhIHNvY2tldCBjbHVzdGVyIG9uIGhvc3QgJXMgd2l0aCBwaWQgJWQiCm1zZ3N0ciAibm9ldWQgZCd1biBncm91cGUgZGUgcHJvY2Vzc3VzIHNvY2tldCBzdXIgbCdo9HRlICVzIGF2ZWMgbGUgcGlkICVkIgoKbXNnaWQgIlBPUlQgbXVzdCBiZSBzcGVjaWZpZWQiCm1zZ3N0ciAiUE9SVCBkb2l0IOp0cmUgZm91cm5pIgoKbXNnaWQgIidubm9kZXMnIG11c3QgYmUgPj0gMSIKbXNnc3RyICInbm5vZGVzJyBkb2l0IOp0cmUgPj0gMSIKCm1zZ2lkICJpbnZhbGlkICdjaGlsZCcgYXJndW1lbnQiCm1zZ3N0ciAiYXJndW1lbnQgJ2NoaWxkJyBpbmNvcnJlY3QiCgptc2dpZCAiJ2NoaWxkcmVuJyBtdXN0IGJlIGEgbGlzdCBvZiBwcm9jZXNzZXMgb3IgYSBzaW5nbGUgcHJvY2VzcyIKbXNnc3RyICInY2hpbGRyZW4nIGRvaXQg6nRyZSB1bmUgbGlzdGUgZGUgcHJvY2Vzc3VzIG91IHVuIHNldWwgcHJvY2Vzc3VzIgoKbXNnaWQgIidwcm9jZXNzJyBtdXN0IGJlIG9mIGNsYXNzICVzIgptc2dzdHIgIidwcm9jZXNzJyBkb2l0IOp0cmUgZGUgY2xhc3NlICVzIgoKbXNnaWQgIidjaGlsZCcgbXVzdCBiZSBhIHZhbGlkIGNoaWxkIHByb2Nlc3MiCm1zZ3N0ciAiJ2NoaWxkJyBkb2l0IOp0cmUgdW4gcHJvY2Vzc3VzIGZpbHMgdmFsaWRlIgoKbXNnaWQgIid3aGF0JyBtdXN0IGJlIGEgY2hhcmFjdGVyIG9yIHJhdyB2ZWN0b3IiCm1zZ3N0ciAiJ3doYXQnIGRvaXQg6nRyZSB1bmUgY2hhaW5lIGRlIGNhcmFjdOhyZXMgb3UgdW4gdmVjdGV1ciAncmF3JyIKCm1zZ2lkICInbWMuY29yZXMnIG11c3QgYmUgPj0gMSIKbXNnc3RyICInbWMuY29yZXMnIGRvaXQg6nRyZSA+PSAxIgoKbXNnaWQgImFmZmluaXR5Lmxpc3QgYW5kIFggbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCIKbXNnc3RyICIiCgptc2dpZCAiJWQgZnVuY3Rpb24gY2FsbHMgcmVzdWx0ZWQgaW4gYW4gZXJyb3IiCm1zZ3N0ciAibGVzIGFwcGVscyBkZSBmb25jdGlvbiAlZCBvbnQgcHJvZHVpdCB1bmUgZXJyZXVyIgoKbXNnaWQgIidtYy5wcmVzY2hlZHVsZScgbXVzdCBiZSBmYWxzZSBpZiAnYWZmaW5pdHkubGlzdCcgaXMgdXNlZCIKbXNnc3RyICIiCgptc2dpZCAiYWxsIHNjaGVkdWxlZCBjb3JlcyBlbmNvdW50ZXJlZCBlcnJvcnMgaW4gdXNlciBjb2RlIgptc2dzdHIgIiIKInRvdXMgbGVzIGNvZXVycyBxdWkgb250IOl06SBwcm9ncmFtbelzIG9udCB0cm91dukgZGVzIGVycmV1cnMgZGFucyBsZSBjb2RlICIKInV0aWxpc2F0ZXVyIgoKbXNnaWQgIlplcm8tbGVuZ3RoIGlucHV0cyBjYW5ub3QgYmUgbWl4ZWQgd2l0aCB0aG9zZSBvZiBub24temVybyBsZW5ndGgiCm1zZ3N0ciAiIgoiTGVzIGVudHLpZXMgZGUgbG9uZ3VldXIgbnVsbGUgbmUgcGV1dmVudCDqdHJlIG3pbGFuZ+llcyDgIGNlbGxlcyBkZSBsb25ndWV1ciAiCiJub24gbnVsbGUiCgptc2dpZCAiaW52YWxpZCAnam9icycgYXJndW1lbnQiCm1zZ3N0ciAiYXJndW1lbnQgJ2pvYnMnIGluY29ycmVjdCIKCm1zZ2lkICIndicgbXVzdCBiZSBhIHZlY3RvciIKbXNnc3RyICIndicgZG9pdCDqdHJlIHVuIHZlY3RldXIiCgptc2dpZCAic29tZSByZXN1bHRzIG1heSBiZSBtaXNzaW5nLCBmb2xkZWQgb3IgY2F1c2VkIGFuIGVycm9yIgptc2dzdHIgIiIKInF1ZWxxdWVzIHLpc3VsdGF0cyBwZXV2ZW50IOp0cmUgbWFucXVhbnRzLCByZXBsaelzIG91IG9udCBwcm9kdWl0IHVuZSBlcnJvciIKCm1zZ2lkICJmb3JrIGNsdXN0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MiCm1zZ3N0ciAiIgoibGEgY3LpYXRpb24gZGUgbm91dmVsbGVzIGJyYW5jaGVzIGRlIGdyb3VwZXMgZGUgcHJvY2Vzc3VzIG4nZXN0IHBhcyBzdXBwb3J06SAiCiJzb3VzIFdpbmRvd3MiCgptc2dpZCAiJ21jLmNvcmVzJyA+IDEgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzIgptc2dzdHIgIidtYy5jb3JlcycgPiAxIG4nZXN0IHBhcyBzdXBwb3J06SBzb3VzIFdpbmRvd3MiCgptc2dpZCAic29ja2V0IGNsdXN0ZXIgd2l0aCAlZCBub2RlcyBvbiBob3N0ICVzIgptc2dpZF9wbHVyYWwgInNvY2tldCBjbHVzdGVyIHdpdGggJWQgbm9kZXMgb24gaG9zdHMgJXMiCm1zZ3N0clswXSAiZ3JvdXBlIGRlIHByb2Nlc3N1cyBzb2NrZXQgYXZlYyAlZCBub2V1ZHMgc3VyIGwnaPR0ZSAlcyIKbXNnc3RyWzFdICJncm91cGUgZGUgcHJvY2Vzc3VzIHNvY2tldCBhdmVjICVkIG5vZXVkcyBzdXIgbCdo9HRlICVzIgoKbXNnaWQgIiIKInNjaGVkdWxlZCBjb3JlICVzIGVuY291bnRlcmVkIGVycm9yIGluIHVzZXIgY29kZSwgYWxsIHZhbHVlcyBvZiB0aGUgam9iIHdpbGwgIgoiYmUgYWZmZWN0ZWQiCm1zZ2lkX3BsdXJhbCAiIgoic2NoZWR1bGVkIGNvcmVzICVzIGVuY291bnRlcmVkIGVycm9ycyBpbiB1c2VyIGNvZGUsIGFsbCB2YWx1ZXMgb2YgdGhlIGpvYnMgIgoid2lsbCBiZSBhZmZlY3RlZCIKbXNnc3RyWzBdICIiCiJsZSBjb2V1ciBwcm9ncmFtbekgJXMgYSByZW5jb250cukgdW5lIGVycmV1ciBkYW5zIGxlIGNvZGUgdXRpbGlzYXRldXIsICIKInRvdXRlcyBsZXMgdmFsZXVycyBwb3VyIGNldHRlIHTiY2hlIHNlcm9udCBhZmZlY3TpZXMiCm1zZ3N0clsxXSAiIgoibGVzIGNvZXVycyBwcm9ncmFtbelzICVzIG9udCByZW5jb250cukgZGVzIGVycmV1cnMgZGFucyBsZSBjb2RlIHV0aWxpc2F0ZXVyLCAiCiJ0b3V0ZXMgbGVzIHZhbGV1cnMgcG91ciBjZXMgdOJjaGVzIHNlcm9udCBhZmZlY3TpZXMiCgojfiBtc2dpZCAic29ja2V0IGNsdXN0ZXIgd2l0aCAlZCBub2RlcyBvbiBob3N0cyAlcyIKI34gbXNnc3RyICJncm91cGUgZGUgcHJvY2Vzc3VzIHNvY2tldCBhdmVjICVkIG5vZXVkcyBzdXIgbGVzIGj0dGVzICVzIgoKI34gbXNnaWQgIiwiCiN+IG1zZ3N0ciAiLCIKCiN+IG1zZ2lkICJob3N0IgojfiBtc2dzdHIgImj0dGUiCg==