LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIAogKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQogKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgogKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQogKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqIAogKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKiAKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAogKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgogKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCiAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICogdW5kZXIgdGhlIExpY2Vuc2UuCiAqIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgoKI2luY2x1ZGUgImJhc2ljLmhyYyIKI2luY2x1ZGUgInJlc2lkcy5ocmMiCgpNb2RhbERpYWxvZyBSSURfQ0FMTERMRyB7CiAgICBIZWxwSUQgPSAiYmFzaWM6TW9kYWxEaWFsb2c6UklEX0NBTExETEciOwogIFBvc1NpemUgPSBNQVBfU1lTRk9OVCAoMTgsMTgsMTQyLDE0Mik7CiAgU1ZMb29rID0gVFJVRTsKICBNT1ZFQUJMRSA9IFRSVUU7CiAgQ0xPU0VBQkxFID0gVFJVRTsKLy8gIFdpbkNoaWxkcyA9IHsKLy8JRml4ZWRUZXh0IHsKLy8JICBUZXh0ID0gIkFrdHVlbGxlIFBhcmFtZXRlciI7Ci8vCSAgUG9zU2l6ZSA9IE1BUF9TWVNGT05UICgxMCwxMCwxMjAsOCk7Ci8vCX07Ci8vICB9OwogIEZpeGVkVGV4dCBSSURfUkVUVFlQRSB7CglQb3NTaXplID0gTUFQX1NZU0ZPTlQgKDEwLDcwLDEyMCw4KTsKICB9OwogIEVkaXQgUklEX1JFVFZBTCB7CiAgICAgIEhlbHBJRCA9ICJiYXNpYzpFZGl0OlJJRF9DQUxMRExHOlJJRF9SRVRWQUwiOwoJUG9zU2l6ZSA9IE1BUF9TWVNGT05UICgxMCw4NSwxMjAsMTIpOwoJQm9yZGVyID0gVFJVRTsKCVRhYlN0b3AgPSBUUlVFOwogIH07CiAgTGlzdEJveCBSSURfUEFSQU1TIHsKICAgICAgSGVscElEID0gImJhc2ljOkxpc3RCb3g6UklEX0NBTExETEc6UklEX1BBUkFNUyI7CglQb3NTaXplID0gTUFQX1NZU0ZPTlQgKDEwLDI1LDEyMCw0MCk7CglUYWJTdG9wID0gVFJVRTsKCUJvcmRlciA9IFRSVUU7CiAgfTsKICBPS0J1dHRvbiBSSURfT0sgewoJUG9zU2l6ZSA9IE1BUF9TWVNGT05UICg1MCwxMDUsNDAsMTQpOwoJVGFiU3RvcCA9IFRSVUU7CglEZWZCdXR0b24gPSBUUlVFOwogIH07CglUZXh0WyBlbi1VUyBdID0gIkR5bmFtaWMgTGluayBOby4gIjsKfTsKCk1vZGFsRGlhbG9nIElERF9BQk9VVF9ESUFMT0cgewogICAgSGVscElEID0gImJhc2ljOk1vZGFsRGlhbG9nOklERF9BQk9VVF9ESUFMT0ciOwoJUG9zID0gTUFQX0FQUEZPTlQoIDU4LCAxNyApOwoJU2l6ZSA9IE1BUF9BUFBGT05UKCAxNTUsIDEwNiApOwoJU1ZMb29rID0gVFJVRTsKLyoKCVdJTkNISUxEUyA9IHsKCUZpeGVkVGV4dCAgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNDAsIDUgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMTAsIDEwICk7CgkJCVRFWFQgPSAiVGVzdHRvb2wiOwoJCQlDRU5URVIgPSBUUlVFOwoJCX07CglGaXhlZFRleHQgIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQwLCAyMCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDExMCwgMjAgKTsKCQkJVEVYVCA9ICJPamVrdG9yaWVudGllcnRlcyBCQVNJQy1FbnR3aWNrbHVuZ3NzeXN0ZW0iOwoJCQlDRU5URVIgPSBUUlVFOwoJCX07CglGaXhlZFRleHQgIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQwLCA0NSApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDExMCwgMTAgKTsKCQkJVEVYVCA9ICJWZXJzaW9uIDIuMCBNYXkgMjAwMiI7CgkJCUNFTlRFUiA9IFRSVUU7CgkJfTsKCUZpeGVkVGV4dCAgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNDAsIDYwICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTEwLCAxMCApOwoJCQlURVhUID0gIq4xOTk1LTIwMTAgT3JhY2xlIjsKCQkJQ0VOVEVSID0gVFJVRTsKCQl9OwoJfTsKKi8KLy8JRml4ZWRJY29uIFJJRF9JQ09OIHsKLy8JCQlQb3MgPSBNQVBfQVBQRk9OVCggMjAsIDI2ICk7Ci8vCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAyMCwgMjAgKTsKLy8JCQlGSVhFRCA9IEljb24gIHsKLy8JCQkJRklMRSA9ICJiYXNpYy5pY28iOwovLwkJCX07Ci8vCQl9OwoJT0tCdXR0b24gUklEX09LIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDU1LCA4MCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDQwLCAxNCApOwoJCQlEZWZCdXR0b24gPSBUUlVFOwoJCX07Cn07CgpNb2RhbERpYWxvZyBJRERfVFRfQUJPVVRfRElBTE9HIHsKICAgIEhlbHBJRCA9ICJiYXNpYzpNb2RhbERpYWxvZzpJRERfVFRfQUJPVVRfRElBTE9HIjsKCVBvcyA9IE1BUF9BUFBGT05UKCA1OCwgMTcgKTsKCVNpemUgPSBNQVBfQVBQRk9OVCggMTIwLCA4MSApOwoJU1ZMb29rID0gVFJVRTsKCU1PVkVBQkxFID0gVFJVRTsKCUZpeGVkVGV4dCAxIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDUsIDEwICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTEwLCAxMCApOwoJCQlDRU5URVIgPSBUUlVFOwoJCVRFWFRbIGVuLVVTIF0gPSAiVkNMVGVzdFRvb2wiOwoJfTsKCUZpeGVkVGV4dCBSSURfVkVSU0lPTlNUUklORyB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA1LCAyNSApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDExMCwgMTAgKTsKCQkJVGV4dCA9IFVQRFZFUjsKCQkJQ0VOVEVSID0gVFJVRTsKCQl9OwoJRml4ZWRUZXh0IDQgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNSwgNDAgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMTAsIDEwICk7CgkJCUNFTlRFUiA9IFRSVUU7CgkJVEVYVFsgZW4tVVMgXSA9ICLCqTE5OTUtMjAxMCBPcmFjbGUiOwoJfTsKCU9LQnV0dG9uIFJJRF9PSyB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA0MCwgNjAgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTQgKTsKCQkJRGVmQnV0dG9uID0gVFJVRTsKCQl9OwoJVEVYVFsgZW4tVVMgXSA9ICJBYm91dCBWQ0xUZXN0VG9vbCI7Cn07CgpNb2RhbERpYWxvZyBJRERfRklORF9ESUFMT0cgewogICAgSGVscElEID0gImJhc2ljOk1vZGFsRGlhbG9nOklERF9GSU5EX0RJQUxPRyI7CglQb3MgPSBNQVBfQVBQRk9OVCggNjksIDMwICk7CglTaXplID0gTUFQX0FQUEZPTlQoIDE4NSwgNzAgKTsKCVNWTG9vayA9IFRSVUU7CglNT1ZFQUJMRSA9IFRSVUU7CgkvLyBDTE9TRUFCTEUgPSBUUlVFOyAJLy8gSGF0IGNhbmNlbGJ1dHRvbgoKCUZpeGVkVGV4dCBSSURfRklYRURURVhUMSB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA1LCAxMCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDMwLCAxMCApOwoJCVRFWFRbIGVuLVVTIF0gPSAiflRleHQiOwoJfTsKCUVkaXQgUklEX0ZJTkQgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpFZGl0OklERF9GSU5EX0RJQUxPRzpSSURfRklORCI7CgkJCUJPUkRFUiA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA0MCwgOCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDEzNSwgMTIgKTsKCQkJVEFCU1RPUCA9IFRSVUU7CgkJfTsKCU9LQnV0dG9uIFJJRF9PSyB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAzMCwgMzAgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA1MCwgMTQgKTsKCQkJVEFCU1RPUCA9IFRSVUU7CgkJCURlZkJ1dHRvbiA9IFRSVUU7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+RmluZCI7Cgl9OwoJQ2FuY2VsQnV0dG9uIFJJRF9DQU5DRUwgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggMTA1LCAzMCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDUwLCAxNCApOwoJCQlUQUJTVE9QID0gVFJVRTsKCQlURVhUWyBlbi1VUyBdID0gIn5DYW5jZWwiOwoJfTsKCVRFWFRbIGVuLVVTIF0gPSAiVGVzdHRvb2w6IEZpbmQgVGV4dCI7Cn07CgpNb2RhbERpYWxvZyBJRERfUkVQTEFDRV9ESUFMT0cgewogICAgSGVscElEID0gImJhc2ljOk1vZGFsRGlhbG9nOklERF9SRVBMQUNFX0RJQUxPRyI7CglQb3MgPSBNQVBfQVBQRk9OVCggNjksIDMwICk7CglTaXplID0gTUFQX0FQUEZPTlQoIDE4NSwgODggKTsKCVNWTG9vayA9IFRSVUU7CglNT1ZFQUJMRSA9IFRSVUU7CgkvLyBDTE9TRUFCTEUgPSBUUlVFOyAJLy8gSGF0IGNhbmNlbGJ1dHRvbgoJRml4ZWRUZXh0IFJJRF9GSVhFRFRFWFQxIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDUsIDEwICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNTUsIDEwICk7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+U2VhcmNoIGZvciI7Cgl9OwoJRml4ZWRUZXh0IFJJRF9GSVhFRFRFWFQyIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDUsIDMwICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNTUsIDEwICk7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+UmVwbGFjZSBieSI7Cgl9OwoJRWRpdCBSSURfRklORCB7CgkgICAgSGVscElEID0gImJhc2ljOkVkaXQ6SUREX1JFUExBQ0VfRElBTE9HOlJJRF9GSU5EIjsKCQkJQk9SREVSID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDY1LCA4ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTEwLCAxMiApOwoJCQlUQUJTVE9QID0gVFJVRTsKCQl9OwoJRWRpdCBSSURfUkVQTEFDRSB7CgkgICAgSGVscElEID0gImJhc2ljOkVkaXQ6SUREX1JFUExBQ0VfRElBTE9HOlJJRF9SRVBMQUNFIjsKCQkJQk9SREVSID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDY1LCAyOCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDExMCwgMTIgKTsKCQkJVEFCU1RPUCA9IFRSVUU7CgkJfTsKCU9LQnV0dG9uIFJJRF9PSyB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAzMCwgNTAgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA1MCwgMTQgKTsKCQkJVEFCU1RPUCA9IFRSVUU7CgkJCURlZkJ1dHRvbiA9IFRSVUU7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+UmVwbGFjZSI7Cgl9OwoJQ2FuY2VsQnV0dG9uIFJJRF9DQU5DRUwgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggMTA1LCA1MCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDUwLCAxNCApOwoJCQlUQUJTVE9QID0gVFJVRTsKCQlURVhUWyBlbi1VUyBdID0gIn5DYW5jZWwiOwoJfTsKCVRFWFRbIGVuLVVTIF0gPSAiVGVzdHRvb2w6IFJlcGxhY2UgVGV4dCI7Cn07CgpJbmZvQm94IElEU19OT1BSSU5URVJFUlJPUiB7CglNRVNTQUdFWyBlbi1VUyBdID0gIlRoZSBwcmludCBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlISI7Cn07CkVycm9yQm94IElEU19DQU5UTE9BRCB7CglNRVNTQUdFWyBlbi1VUyBdID0gIkxpYnJhcnkgY2Fubm90IGJlIGxvYWRlZCEiOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wgRXJyb3IiOwp9OwpFcnJvckJveCBJRFNfQ0FOVFNBVkUgewoJTUVTU0FHRVsgZW4tVVMgXSA9ICJMaWJyYXJ5IGNhbm5vdCBiZSBzYXZlZCEiOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wgRXJyb3IiOwp9OwpFcnJvckJveCBJRFNfTk9NQUlOUEdNIHsKCU1FU1NBR0VbIGVuLVVTIF0gPSAiVGhpcyB3aW5kb3cgZG9lcyBub3QgY29udGFpbiBhIG1haW4gcHJvZ3JhbSEiOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wgRXJyb3IiOwp9OwpFcnJvckJveCBJRFNfUkVBREVSUk9SIHsKCU1FU1NBR0VbIGVuLVVTIF0gPSAiRmlsZSBjYW5ub3QgYmUgcmVhZCEiOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wgRXJyb3IiOwp9OwpFcnJvckJveCBJRFNfV1JJVEVFUlJPUiB7CglNRVNTQUdFWyBlbi1VUyBdID0gIkZpbGUgY2Fubm90IGJlIHNhdmVkISI7CglUaXRsZVsgZW4tVVMgXSA9ICJUZXN0dG9vbCBFcnJvciI7Cn07CkVycm9yQm94IElEU19QQVRURVJOTk9URk9VTkQgewoJTUVTU0FHRVsgZW4tVVMgXSA9ICJTZWFyY2gga2V5IG5vdCBmb3VuZCEiOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wgRXJyb3IiOwp9OwpFcnJvckJveCBJRFNfSU5WQUxJRF9WQUxVRSB7CglNRVNTQUdFWyBlbi1VUyBdID0gIlRoZSB2YWx1ZSBpcyBpbnZhbGlkIGFuZCBjYW5ub3QgYmUgc2V0LiI7CglUaXRsZVsgZW4tVVMgXSA9ICJUZXN0dG9vbCBFcnJvciI7Cn07CgpRdWVyeUJveCBJRFNfQVNLU0FWRUVSUk9SIHsKCVRJVExFID0gIlRlc3R0b29sIjsKCUJVVFRPTlMgPSBXQl9ZRVNfTk87CglNRVNTQUdFWyBlbi1VUyBdID0gIkVycm9yIHNhdmluZyBmaWxlcyEgUnVuIGFueXdheT8iOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wiOwp9OwpRdWVyeUJveCBJRFNfQVNLX0RJUlRZX1NBVkUgewoJVElUTEUgPSAiVGVzdHRvb2wiOwoJQlVUVE9OUyA9IFdCX1lFU19OT19DQU5DRUw7CglNRVNTQUdFWyBlbi1VUyBdID0gIkZpbGUgaGFzIGJlZW4gY2hhbmdlZC4gU2F2ZT8iOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wiOwp9OwpRdWVyeUJveCBJRFNfQVNLX0RJUlRZX0FORF9ESVNLQ0hBTkdFX1NBVkUgewoJVElUTEUgPSAiVGVzdHRvb2wiOwoJQlVUVE9OUyA9IFdCX1lFU19OT19DQU5DRUw7CglNRVNTQUdFWyBlbi1VUyBdID0gIkZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvbiBkYXRhIG1lZGl1bVxuYW5kIGluIHRoZSBFZGl0b3IuIFNhdmU/IjsKCVRpdGxlWyBlbi1VUyBdID0gIlRlc3R0b29sIjsKfTsKUXVlcnlCb3ggSURTX0FTS19ESVNLQ0hBTkdFX1NBVkUgewoJVElUTEUgPSAiVGVzdHRvb2wiOwoJQlVUVE9OUyA9IFdCX1lFU19OT19DQU5DRUw7CglNRVNTQUdFWyBlbi1VUyBdID0gIkZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvbiBkYXRhIG1lZGl1bS5cbk92ZXJ3cml0ZT8iOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wiOwp9OwpRdWVyeUJveCBJRFNfQVNLUkVMT0FEIHsKCVRJVExFID0gIlRlc3R0b29sIjsKCUJVVFRPTlMgPSBXQl9ZRVNfTk87CglNRVNTQUdFWyBlbi1VUyBdID0gIkZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvbiBkYXRhIG1lZGl1bS4gUmVsb2FkPyI7CglUaXRsZVsgZW4tVVMgXSA9ICJUZXN0dG9vbCI7Cn07ClF1ZXJ5Qm94IElEU19BU0tESVJUWVJFTE9BRCB7CglUSVRMRSA9ICJUZXN0dG9vbCI7CglCVVRUT05TID0gV0JfWUVTX05POwoJTUVTU0FHRVsgZW4tVVMgXSA9ICJGaWxlIGhhcyBiZWVuIGNoYW5nZWQgb24gZGF0YSBtZWRpdW1cbmFuZCBpbiB0aGUgRWRpdG9yLiBSZWxvYWQ/IjsKCVRpdGxlWyBlbi1VUyBdID0gIlRlc3R0b29sIjsKfTsKUXVlcnlCb3ggSURTX1JVTk5JTkcgewoJVElUTEUgPSAiVGVzdHRvb2wiOwoJQlVUVE9OUyA9IFdCX1lFU19OTzsKCU1FU1NBR0VbIGVuLVVTIF0gPSAiQkFTSUMgaXMgc3RpbGwgcnVubmluZyEgRXhpdCBhbnl3YXk/IjsKCVRpdGxlWyBlbi1VUyBdID0gIlRlc3R0b29sIjsKfTsKUXVlcnlCb3ggSURTX0xPU1NfT0ZfSU5GT1JNQVRJT04gewoJVElUTEUgPSAiVGVzdHRvb2wiOwoJQlVUVE9OUyA9IFdCX09LX0NBTkNFTDsKCU1FU1NBR0VbIGVuLVVTIF0gPSAiU2F2aW5nIGluIGFuIGV4dGVybmFsIGZvcm1hdCBjYXVzZXMgaW5mb3JtYXRpb24gbG9zcy4iOwoJVGl0bGVbIGVuLVVTIF0gPSAiVGVzdHRvb2wiOwp9OwoKSW5mb0JveCBJRFNfTk9UX1lFVF9JTVBMRU1FTlRFRAp7CglNRVNTQUdFWyBlbi1VUyBdID0gIk5vdCB5ZXQgaW1wbGVtZW50ZWQiOwp9OwoKClN0cmluZyBJRFNfV0FSTklORzEgewoJVEVYVFsgZW4tVVMgXSA9ICJXYXJuaW5nICI7Cn07ClN0cmluZyBJRFNfRVJST1IxIHsKCVRFWFRbIGVuLVVTIF0gPSAiRXJyb3IgIjsKfTsKU3RyaW5nIElEU19FUlJPUjIgewoJVEVYVFsgZW4tVVMgXSA9ICIgaW4gbGluZSAiOwp9OwpTdHJpbmcgSURTX05PX0xPTkdOQU1FIHsKCVRFWFRbIGVuLVVTIF0gPSAiTm8gZW50cmllcyBpbiBIaWQuTHN0IjsKfTsKU3RyaW5nIElEU19XQVJOSU5HX1BSRUZJWAp7CglUZXh0WyBlbi1VUyBdID0gIldhcm5pbmc6ICI7Cn07ClN0cmluZyBJRFNfT0JKRUNUCnsKCVRleHRbIGVuLVVTIF0gPSAiT2JqZWN0IjsKfTsKU3RyaW5nIElEU19FRElUX1ZBUgp7CglUZXh0WyBlbi1VUyBdID0gIkVkaXQgKCRBcmcxKSI7Cn07CgpTdHJpbmcgSURTX0FQUE5BTUUgewoJVEVYVFsgZW4tVVMgXSA9ICJUZXN0dG9vbCI7Cn07ClN0cmluZyBJRFNfQVBQTkFNRTIgewoJVEVYVFsgZW4tVVMgXSA9ICJWQ0xUZXN0VG9vbCI7Cn07ClN0cmluZyBJRFNfQVBQTU9ERV9CUkVBSyB7Cgl0ZXh0WyBlbi1VUyBdID0gIkJyZWFrIjsKfTsKU3RyaW5nIElEU19BUFBNT0RFX1JVTiB7Cgl0ZXh0WyBlbi1VUyBdID0gIlJ1biI7Cn07ClN0cmluZyBJRFNfTk9OQU1FIHsKCVRFWFRbIGVuLVVTIF0gPSAiVW5uYW1lZCI7Cn07CgpTdHJpbmcgSURTX05PTkFNRUZJTEUgewojaWYgZGVmaW5lZCAoIFVOWCApClRFWFQgPSAiKi5iYXMiOwojZWxzZQpURVhUID0gIiouQkFTIjsKI2VuZGlmCn07ClN0cmluZyBJRFNfSU5DRklMRSB7CiNpZiBkZWZpbmVkICggVU5YICkKVEVYVCA9ICIqLmluYyI7CiNlbHNlClRFWFQgPSAiKi5JTkMiOwojZW5kaWYKfTsKU3RyaW5nIElEU19MSUJGSUxFIHsKI2lmIGRlZmluZWQgKCBVTlggKQpURVhUID0gIiouc2IiOwojZWxzZQpURVhUID0gIiouU0IiOwojZW5kaWYKfTsKU3RyaW5nIElEU19SRVNGSUxFIHsKI2lmIGRlZmluZWQgKCBVTlggKQpURVhUID0gIioucmVzIjsKI2Vsc2UKVEVYVCA9ICIqLlJFUyI7CiNlbmRpZgp9OwpTdHJpbmcgSURTX1RYVEZJTEUgewojaWYgZGVmaW5lZCAoIFVOWCApClRFWFQgPSAiKi50eHQiOwojZWxzZQpURVhUID0gIiouVFhUIjsKI2VuZGlmCn07CgpTdHJpbmcgSURTX0xPQURETEcgewoJVEVYVFsgZW4tVVMgXSA9ICJUZXN0dG9vbDogTG9hZCBGaWxlIjsKfTsKU3RyaW5nIElEU19TQVZFRExHIHsKCVRFWFRbIGVuLVVTIF0gPSAiVGVzdHRvb2w6IFNhdmUgRmlsZSI7Cn07ClN0cmluZyBJRFNfQkFTRklMVEVSIHsKCVRFWFRbIGVuLVVTIF0gPSAiU291cmNlIGZpbGVzICgqLkJBUykiOwp9OwpTdHJpbmcgSURTX0lOQ0ZJTFRFUiB7CglURVhUWyBlbi1VUyBdID0gIkluY2x1ZGUgZmlsZXMgKCouSU5DKSI7Cn07ClN0cmluZyBJRFNfTElCRklMVEVSIHsKCVRFWFRbIGVuLVVTIF0gPSAiTGlicmFyaWVzICgqLlNCKSI7Cn07ClN0cmluZyBJRFNfUkVTRklMVEVSIHsKCVRFWFRbIGVuLVVTIF0gPSAiUmVzdWx0IGZpbGVzICgqLlJFUykiOwp9OwpTdHJpbmcgSURTX1RYVEZJTFRFUiB7CglURVhUWyBlbi1VUyBdID0gIlJlc3VsdHMgYXMgdGV4dCBmaWxlICgqLlRYVCkiOwp9OwpTdHJpbmcgSURTX1BBR0UgewoJVEVYVFsgZW4tVVMgXSA9ICJQYWdlICI7Cn07ClN0cmluZyBJRFNfUFJJTlRNU0cgewoJVEVYVFsgZW4tVVMgXSA9ICJQcmludG91dCBvZiAiOwp9OwpTdHJpbmcgSURTX0NPTlRJTlVFIHsKCVRFWFRbIGVuLVVTIF0gPSAiQ29udGludWUiOwp9OwpTdHJpbmcgSURTX0NBTkNFTCB7CglURVhUWyBlbi1VUyBdID0gIkNhbmNlbCI7Cn07ClN0cmluZyBJRFNfRElTQVNXSU4gewoJVEVYVFsgZW4tVVMgXSA9ICJEaXNhc3NlbWJseSI7Cn07Ci8vSWNvbiBSSURfQVBQSUNPTiB7Ci8vCUZJTEUgPSAiYmFzaWMuaWNvIjsKLy99OwovL0ljb24gUklEX0FQUElDT04yIHsKLy8JRklMRSA9ICJ0ZXN0dG9vbC5pY28iOwovL307Ci8vSWNvbiBSSURfV09SS0lDT04gewovLwlGSUxFID0gIndvcmsuaWNvIjsKLy99OwoKQml0bWFwIE1CUF9QTFVTIHsKCQlGaWxlID0gInBsdXMuYm1wIjsKfTsKQml0bWFwIE1CUF9NSU5VUyB7CgkJRmlsZSA9ICJtaW51cy5ibXAiOwp9OwoKTWVudSBSSURfQVBQTUVOVUJBUiB7CglJdGVtTGlzdCA9IHsKCU1lbnVJdGVtICB7CgkJCUlkZW50aWZpZXIgPSBSSURfQVBQRklMRTsKCQkJU1VCTUVOVSA9IE1lbnUgLFJJRF9GSUxFOwoJCQlURVhUWyBlbi1VUyBdID0gIn5GaWxlIjsKCQl9OwoJTWVudUl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9BUFBFRElUOwoJCQlTVUJNRU5VID0gTWVudSAsUklEX0VESVQ7CgkJCVRFWFRbIGVuLVVTIF0gPSAifkVkaXQiOwoJCX07CglNZW51SXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX0FQUFJVTjsKCQkJU1VCTUVOVSA9IE1lbnUgLFJJRF9SVU47CgkJCVRFWFRbIGVuLVVTIF0gPSAiflByb2dyYW0iOwoJCX07CglNZW51SXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX0FQUFdJTkRPVzsKCQkJU1VCTUVOVSA9IE1lbnUgLFJJRF9XSU5ET1c7CgkJCVRFWFRbIGVuLVVTIF0gPSAifldpbmRvdyI7CgkJfTsKCU1lbnVJdGVtICB7CgkJCVNFUEFSQVRPUiA9IFRSVUU7CgkJfTsKCU1lbnVJdGVtICB7CgkJCUhFTFAgPSBUUlVFOwoJCQlJZGVudGlmaWVyID0gUklEX0FQUEhFTFA7CgkJCVNVQk1FTlUgPSBNZW51ICxSSURfSEVMUDsKCQkJVEVYVFsgZW4tVVMgXSA9ICJ+SGVscCI7CgkJfTsKCX07Cn07Ck1lbnUgUklEX0ZJTEUgewoJSVRFTUxJU1QgPSB7CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfRklMRU5FVzsKCQlURVhUWyBlbi1VUyBdID0gIn5OZXciOwoJCUFjY2VsS2V5ID0gS2V5Q29kZSB7IEZ1bmN0aW9uID0gS0VZRlVOQ19ORVc7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9GSUxFT1BFTjsKCQlURVhUWyBlbi1VUyBdID0gIn5PcGVuLi4uIjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfT1BFTjsgfTsKCQl9OwoJTWVudUl0ZW0gIHsKCQlTRVBBUkFUT1IgPSBUUlVFOwoJCX07CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfRklMRUNMT1NFOwoJCVRFWFRbIGVuLVVTIF0gPSAifkNsb3NlIjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfQ0xPU0U7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9GSUxFU0FWRTsKCQlURVhUWyBlbi1VUyBdID0gIn5TYXZlIjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfU0FWRTsgfTsKCQl9OwoJTWVudUl0ZW0gIHsKCQlJZGVudGlmaWVyID0gUklEX0ZJTEVTQVZFQVM7CgkJVEVYVFsgZW4tVVMgXSA9ICJTYXZlfiBBcy4uLiI7CgkJQWNjZWxLZXkgPSBLZXlDb2RlIHsgRnVuY3Rpb24gPSBLRVlGVU5DX1NBVkVBUzsgfTsKCQl9OwoJTWVudUl0ZW0gIHsKCQlTRVBBUkFUT1IgPSBUUlVFOwoJCX07CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfRklMRUxPQURMSUI7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+TG9hZCBMaWJyYXJ5Li4uIjsKCQl9OwoJTWVudUl0ZW0gIHsKCQlJZGVudGlmaWVyID0gUklEX0ZJTEVTQVZFTElCOwoJCVRFWFRbIGVuLVVTIF0gPSAiU2F2ZSBMaX5icmFyeS4uLiI7CgkJfTsKCU1lbnVJdGVtICB7CgkJU0VQQVJBVE9SID0gVFJVRTsKCQl9OwoJTWVudUl0ZW0gIHsKCQlJZGVudGlmaWVyID0gUklEX0ZJTEVQUklOVDsKCQlURVhUWyBlbi1VUyBdID0gIn5QcmludCI7CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9GSUxFU0VUVVA7CgkJVEVYVFsgZW4tVVMgXSA9ICJQfnJpbnRlciBTZXR0aW5nLi4uIjsKCQl9OwoJTWVudUl0ZW0gIHsKCQlTRVBBUkFUT1IgPSBUUlVFOwoJCX07CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfUVVJVDsKCQlURVhUWyBlbi1VUyBdID0gIn5FeGl0IjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfUVVJVDsgfTsKCQl9OwoJfTsKfTsKTWVudSBSSURfRURJVCB7CglJVEVNTElTVCA9IHsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9FRElUVU5ETzsKCQlURVhUWyBlbi1VUyBdID0gIn5VbmRvIjsKLy8JCUFjY2VsS2V5ID0gS2V5Q29kZSB7IEZ1bmN0aW9uID0gS0VZRlVOQ19DVVQ7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9FRElUUkVETzsKCQlURVhUWyBlbi1VUyBdID0gIn5SZWRvIjsKLy8JCUFjY2VsS2V5ID0gS2V5Q29kZSB7IEZ1bmN0aW9uID0gS0VZRlVOQ19DVVQ7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJU0VQQVJBVE9SID0gVFJVRTsKCQl9OwoJTWVudUl0ZW0gIHsKCQlJZGVudGlmaWVyID0gUklEX0VESVRDVVQ7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+Q3V0IjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfQ1VUOyB9OwoJCX07CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfRURJVENPUFk7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+Q29weSI7CgkJQWNjZWxLZXkgPSBLZXlDb2RlIHsgRnVuY3Rpb24gPSBLRVlGVU5DX0NPUFk7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9FRElUUEFTVEU7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+UGFzdGUiOwoJCUFjY2VsS2V5ID0gS2V5Q29kZSB7IEZ1bmN0aW9uID0gS0VZRlVOQ19QQVNURTsgfTsKCQl9OwoJTWVudUl0ZW0gIHsKCQlJZGVudGlmaWVyID0gUklEX0VESVRERUw7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+RGVsZXRlIjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfREVMRVRFOyB9OwoJCX07CglNZW51SXRlbSAgewoJCVNFUEFSQVRPUiA9IFRSVUU7CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9FRElUU0VBUkNIOwoJCVRFWFRbIGVuLVVTIF0gPSAifkZpbmQuLi4iOwoJCUFjY2VsS2V5ID0gS2V5Q29kZSB7IEZ1bmN0aW9uID0gS0VZRlVOQ19GSU5EOyB9OwoJCX07CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfRURJVFJFUExBQ0U7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+UmVwbGFjZS4uLiI7CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9FRElUUkVQRUFUOwoJCVRFWFRbIGVuLVVTIF0gPSAiUmVwZWF0IFN+ZWFyY2giOwoJCUFjY2VsS2V5ID0gS2V5Q29kZSB7IENvZGUgPSBLRVlfRjM7IH07Ci8vCQlBY2NlbEtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfUkVQRUFUOyB9OwoJCX07Cgl9Owp9OwpNZW51IFJJRF9SVU4gewoJSVRFTUxJU1QgPSB7CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfUlVOQ09NUElMRTsKCQlURVhUWyBlbi1VUyBdID0gIn5Db21waWxlIjsKCQl9OwoJTWVudUl0ZW0gIHsKCQlJZGVudGlmaWVyID0gUklEX1JVTkRJU0FTOwoJCVRFWFRbIGVuLVVTIF0gPSAifkRpc2Fzc2VtYmxlIjsKCQl9OwoJTWVudUl0ZW0gIHsKCQlJZGVudGlmaWVyID0gUklEX1JVTlNUQVJUOwoJCVRFWFRbIGVuLVVTIF0gPSAiflN0YXJ0IjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBDb2RlID0gS0VZX0Y1OyB9OwoJCX07CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfUlVOU1RFUElOVE87CgkJVEVYVFsgZW4tVVMgXSA9ICJ+U2luZ2xlIFN0ZXAiOwoJCUFjY2VsS2V5ID0gS2V5Q29kZSB7IENvZGUgPSBLRVlfRjg7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9SVU5TVEVQT1ZFUjsKCQlURVhUWyBlbi1VUyBdID0gIlNpfm5nbGUgU3RlcCBvdmVyIFByb2NlZHVyZSI7CgkJQWNjZWxLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GMTA7IH07CgkJfTsKLy8JTWVudUl0ZW0gIHsKLy8JCUlkZW50aWZpZXIgPSBSSURfUlVOVE9DVVJTT1I7Ci8vCQlURVhUID0gIlJ1biB0byBjdXJzb3IiOwovLwkJQWNjZWxLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GNzsgfTsKLy8JCX07CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfVE9HTEVCUktQTlQ7CgkJVEVYVFsgZW4tVVMgXSA9ICJTZXQgLyBEZWxldGUgQnJlYWsgUG9pbnQiOwoJCUFjY2VsS2V5ID0gS2V5Q29kZSB7IENvZGUgPSBLRVlfRjk7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9SVU5CUkVBSzsKCQlURVhUWyBlbi1VUyBdID0gIn5CcmVhayI7CgkJQWNjZWxLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GNTsgTW9kaWZpZXIxID0gVFJVRTsgfTsKCQl9OwoJTWVudUl0ZW0gIHsKCQlJZGVudGlmaWVyID0gUklEX1JVTlNUT1A7CgkJVEVYVFsgZW4tVVMgXSA9ICJ+U3RvcCI7CgkJQWNjZWxLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GNTsgU2hpZnQgPSBUUlVFOyB9OwoJCX07CglNZW51SXRlbSAgewoJCUlkZW50aWZpZXIgPSBSSURfUlVOTkVYVEVSUjsKCQlURVhUWyBlbi1VUyBdID0gIn5OZXh0IEVycm9yIjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBDb2RlID0gS0VZX0Y4OyBTaGlmdCA9IFRSVUU7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJSWRlbnRpZmllciA9IFJJRF9SVU5QUkVWRVJSOwoJCVRFWFRbIGVuLVVTIF0gPSAiflByZXZpb3VzIEVycm9yIjsKCQlBY2NlbEtleSA9IEtleUNvZGUgeyBDb2RlID0gS0VZX0Y3OyBTaGlmdCA9IFRSVUU7IH07CgkJfTsKCU1lbnVJdGVtICB7CgkJU0VQQVJBVE9SID0gVFJVRTsKCQl9OwoJfTsKfTsKLy8gV2lyZCBudXIgYmVpbSBUZXN0IFRvb2wgZWluZ2Vms2d0CgovLyB1bnRlciBGb2xnZW5kZW0gTmFtZQpTdHJpbmcgUklEX1RUX0VYVFJBU19OQU1FCnsKCVRleHRbIGVuLVVTIF0gPSAiRX54dHJhIjsKfTsKCk1lbnUgUklEX1RUX0VYVFJBUyB7CglJVEVNTElTVCA9IHsKCU1lbnVJdGVtICB7CgkJCUlkZW50aWZpZXIgPSBSSURfT1BUSU9OUzsKCQkJVEVYVFsgZW4tVVMgXSA9ICJ+U2V0dGluZ3MiOwoJCX07Ci8qCWNvbW1lbnQgb3V0IHRpbGwgaXQgZ2V0cyBmdW5jdGlvbmFsaXR5ICNpMjY5MDgKCU1lbnVJdGVtICB7CgkJCUlkZW50aWZpZXIgPSBSSURfREVDTEFSRV9IRUxQRVI7CgkJCVRleHQgWyBlbi1VUyBdID0gIn5SZWNvcmQgRGlhbG9ncyI7CgkJfTsqLwoJfTsKfTsKTWVudSBSSURfV0lORE9XIHsKCUlURU1MSVNUID0gewovKglNZW51SXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX1dJTkNBU0NBREU7CgkJCVRFWFRbIGVuLVVTIF0gPSAifkNhc2NhZGUiOwoJCX07CglNZW51SXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX1dJTlRJTEU7CgkJCVRFWFRbIGVuLVVTIF0gPSAiflRpbGUiOwoJCX07CglNZW51SXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX1dJTlRJTEVIT1JaOwoJCQlURVhUWyBlbi1VUyBdID0gIn5BcnJhbmdlIEhvcml6b250YWxseSI7CgkJfTsKCU1lbnVJdGVtICB7CgkJCUlkZW50aWZpZXIgPSBSSURfV0lOVElMRVZFUlQ7CgkJCVRFWFRbIGVuLVVTIF0gPSAifkFycmFuZ2UgVmVydGljYWxseSI7CgkJfTsqLwoJfTsKfTsKTWVudSBSSURfSEVMUCB7CglJVEVNTElTVCA9IHsKLyoJTWVudUl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9IRUxQSU5ERVg7CgkJCVRFWFQgPSAifkluZGV4IjsKCQl9OwoJTWVudUl0ZW0gIHsKCQkJU0VQQVJBVE9SID0gVFJVRTsKCQl9OwoJTWVudUl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9IRUxQS0VZUzsKCQkJVEVYVCA9ICJ+VGFzdGF0dXJiZWxlZ3VuZyI7CgkJfTsKCU1lbnVJdGVtICB7CgkJCUlkZW50aWZpZXIgPSBSSURfSEVMUElOVFJPOwoJCQlURVhUID0gIn5BbmxlaXR1bmciOwoJCX07CglNZW51SXRlbSAgewoJCQlTRVBBUkFUT1IgPSBUUlVFOwoJCX07CglNZW51SXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX0hFTFBUT1BJQzsKCQkJVEVYVCA9ICJ+TWFya2llcnRlciBUZXh0IjsKCQl9OwoJTWVudUl0ZW0gIHsKCQkJU0VQQVJBVE9SID0gVFJVRTsKCQl9OwoqLwlNZW51SXRlbSAgewoJCQlBQk9VVCA9IFRSVUU7CgkJCUlkZW50aWZpZXIgPSBSSURfSEVMUEFCT1VUOwoJCQlURVhUWyBlbi1VUyBdID0gIn5BYm91dC4uLiI7CgkJfTsKCX07Cn07Ck1vZGVsZXNzRGlhbG9nIElERF9QUklOVF9ESUFMT0cgewogICAgSGVscElEID0gImJhc2ljOk1vZGVsZXNzRGlhbG9nOklERF9QUklOVF9ESUFMT0ciOwoJUG9zID0gTUFQX0FQUEZPTlQoIDgzLCA0MiApOwoJU2l6ZSA9IE1BUF9BUFBGT05UKCAxNzEsIDk0ICk7CglNT1ZFQUJMRSA9IFRSVUU7CglTVkxvb2sgPSBUUlVFOwoJRml4ZWRUZXh0IFJJRF9URVhUIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDExLCA5ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTQ2LCAyOCApOwoJCQlDRU5URVIgPSBUUlVFOwoJCQlURVhUWyBlbi1VUyBdID0gIlByaW50ICI7Cgl9OwoJQ2FuY2VsQnV0dG9uIFJJRF9DQU5DRUwgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNTYsIDQ2ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDcsIDE5ICk7CgkJCVRFWFRbIGVuLVVTIF0gPSAiQ2FuY2VsIjsKCX07CglURVhUWyBlbi1VUyBdID0gIlRlc3R0b29sOiBQcmludCBGaWxlIjsKfTsKCgpUYWJEaWFsb2cgSUREX09QVElPTlNfRExHCnsKCU91dHB1dFNpemUgPSBUUlVFIDsKCVNWTG9vayA9IFRSVUUgOwoJU2l6ZSA9IE1BUF9BUFBGT05UKCAyNDgsIDE0MCApOwoJVGV4dFsgZW4tVVMgXSA9ICJTZXR0aW5ncyI7CglNb3ZlYWJsZSA9IFRSVUUgOwoJQ2xvc2VhYmxlID0gVFJVRSA7CglUYWJDb250cm9sIFJFU19UQ19PUFRJT05TCgl7CgkJT3V0cHV0U2l6ZSA9IFRSVUUgOwoJCVBvcyA9IE1BUF9BUFBGT05UKCA0LCA0ICk7CgkJU2l6ZSA9IE1BUF9BUFBGT05UKCAyNDAsIDExNiApOwoJCUhpZGUgPSBGQUxTRSA7CgkJUGFnZUxpc3QgPQoJCXsKCQkJUGFnZUl0ZW0KCQkJewoJCQkJSWRlbnRpZmllciA9IFJJRF9UUF9HRU4gOwoJCQkJVGV4dFsgZW4tVVMgXSA9ICJHZW5lcmljIjsKCQkJfTsKCQkJUGFnZUl0ZW0KCQkJewoJCQkJSWRlbnRpZmllciA9IFJJRF9UUF9QUk8gOwoJCQkJVGV4dFsgZW4tVVMgXSA9ICJQcm9maWxlIjsKCQkJfTsKCQkJUGFnZUl0ZW0KCQkJewoJCQkJSWRlbnRpZmllciA9IFJJRF9UUF9DUkEgOwoJCQkJVGV4dFsgZW4tVVMgXSA9ICJDcmFzaHJlcG9ydCI7CgkJCX07CgkJCVBhZ2VJdGVtCgkJCXsKCQkJCUlkZW50aWZpZXIgPSBSSURfVFBfTUlTIDsKCQkJCVRleHRbIGVuLVVTIF0gPSAiTWlzYyI7CgkJCX07CgkJCVBhZ2VJdGVtCgkJCXsKCQkJCUlkZW50aWZpZXIgPSBSSURfVFBfRk9OIDsKCQkJCVRleHRbIGVuLVVTIF0gPSAiRm9udCI7CgkJCX07CgkJfTsKCX07Cn07CgoKVGFiUGFnZSBSSURfVFBfR0VORVJJQyB7CiAgICBIZWxwSUQgPSAiYmFzaWM6VGFiUGFnZTpSSURfVFBfR0VORVJJQyI7CglIaWRlID0gVFJVRSA7CglTVkxvb2sgPSBUUlVFIDsKCVNpemUgPSBNQVBfQVBQRk9OVCggMjQ0LCAxMDAgKTsKCUZpeGVkTGluZSBSSURfRkxfQVJFQSB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA0LCAyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMjI4LCA4ICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiQXJlYSI7Cgl9OwoJQ29tYm9Cb3ggUklEX0NCX0FSRUEgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpDb21ib0JveDpSSURfVFBfR0VORVJJQzpSSURfQ0JfQVJFQSI7CgkJCUhTY3JvbGwgICAgICAgICAgICAgID0gVFJVRTsKCQkJVlNjcm9sbCAgICAgICAgICAgICAgPSBUUlVFOwoJCQlBdXRvSFNjcm9sbCAgICAgICAgICA9IFRSVUU7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA4LCAxMiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDEzMiwgODggKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJCURyb3BEb3duID0gVFJVRTsKCQl9OwoJUHVzaEJ1dHRvbiBSSURfUEJfTkVXX0FSRUEgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpQdXNoQnV0dG9uOlJJRF9UUF9HRU5FUklDOlJJRF9QQl9ORVdfQVJFQSI7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAxNDQsIDEyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCQlUZXh0WyBlbi1VUyBdID0gIk5ldyI7Cgl9OwoJUHVzaEJ1dHRvbiBSSURfUERfREVMX0FSRUEgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpQdXNoQnV0dG9uOlJJRF9UUF9HRU5FUklDOlJJRF9QRF9ERUxfQVJFQSI7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAxODgsIDEyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCQlUZXh0WyBlbi1VUyBdID0gIkRlbGV0ZSI7Cgl9OwoJRml4ZWRMaW5lIFJJRF9GTF9WQUxVRSB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA0LCAzMiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDIyOCwgOCApOwoJCQlUZXh0WyBlbi1VUyBdID0gIlNldHRpbmciOwoJfTsKCUNvbWJvQm94IFJJRF9DQl9WQUxVRSB7CgkgICAgSGVscElEID0gImJhc2ljOkNvbWJvQm94OlJJRF9UUF9HRU5FUklDOlJJRF9DQl9WQUxVRSI7CgkJCUhTY3JvbGwgICAgICAgICAgICAgID0gVFJVRTsKCQkJVlNjcm9sbCAgICAgICAgICAgICAgPSBUUlVFOwoJCQlBdXRvSFNjcm9sbCAgICAgICAgICA9IFRSVUU7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA4LCA0OCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDE3NiwgNDQgKTsKCQkJVGFiU3RvcCA9IFRSVUU7Cgl9OwoJUHVzaEJ1dHRvbiBSSURfUEJfU0VMRUNUX0ZJTEUgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpQdXNoQnV0dG9uOlJJRF9UUF9HRU5FUklDOlJJRF9QQl9TRUxFQ1RfRklMRSI7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAxODgsIDQ4ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCQlUZXh0WyBlbi1VUyBdID0gIlBhdGggLi4uIjsKCQkJRGlzYWJsZSA9IFRSVUU7CgkJCUhpZGUgPSBUUlVFOwoJfTsKCVB1c2hCdXR0b24gUklEX1BCX05FV19WQUxVRSB7CgkgICAgSGVscElEID0gImJhc2ljOlB1c2hCdXR0b246UklEX1RQX0dFTkVSSUM6UklEX1BCX05FV19WQUxVRSI7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAxODgsIDQ4ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCQlUZXh0WyBlbi1VUyBdID0gIk5ldyI7Cgl9OwoJUHVzaEJ1dHRvbiBSSURfUEJfREVMX1ZBTFVFIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6UHVzaEJ1dHRvbjpSSURfVFBfR0VORVJJQzpSSURfUEJfREVMX1ZBTFVFIjsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDE4OCwgNjQgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJCVRleHRbIGVuLVVTIF0gPSAiRGVsZXRlIjsKCX07Cn07CgoKVGFiUGFnZSBSSURfVFBfUFJPRklMRSB7CiAgICBIZWxwSUQgPSAiYmFzaWM6VGFiUGFnZTpSSURfVFBfUFJPRklMRSI7CglIaWRlID0gVFJVRSA7CglTVkxvb2sgPSBUUlVFIDsKCVNpemUgPSBNQVBfQVBQRk9OVCggMjQ0LCAxMDAgKTsKCUZpeGVkTGluZSBSSURfRkxfUFJPRklMRSB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA0LCA0ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMjIsIDggKTsKCQkJVGV4dFsgZW4tVVMgXSA9ICJQcm9maWxlIjsKCX07CglDb21ib0JveCBSSURfQ0JfUFJPRklMRSB7CgkgICAgSGVscElEID0gImJhc2ljOkNvbWJvQm94OlJJRF9UUF9QUk9GSUxFOlJJRF9DQl9QUk9GSUxFIjsKCQkJSFNjcm9sbCAgICAgICAgICAgICAgPSBUUlVFOwoJCQlWU2Nyb2xsICAgICAgICAgICAgICA9IFRSVUU7CgkJCUF1dG9IU2Nyb2xsICAgICAgICAgID0gVFJVRTsKCQkJQm9yZGVyID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDMwLCAyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTEwLCA4OCApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQkJRHJvcERvd24gPSBUUlVFOwoJCX07CglQdXNoQnV0dG9uIFJJRF9QQl9ORVdfUFJPRklMRSB7CgkgICAgSGVscElEID0gImJhc2ljOlB1c2hCdXR0b246UklEX1RQX1BST0ZJTEU6UklEX1BCX05FV19QUk9GSUxFIjsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDE0NCwgMiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDQwLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQkJVGV4dFsgZW4tVVMgXSA9ICJOZXciOwoJfTsKCVB1c2hCdXR0b24gUklEX1BEX0RFTF9QUk9GSUxFIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6UHVzaEJ1dHRvbjpSSURfVFBfUFJPRklMRTpSSURfUERfREVMX1BST0ZJTEUiOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggMTg4LCAyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCQlUZXh0WyBlbi1VUyBdID0gIkRlbGV0ZSI7Cgl9OwoJRml4ZWRMaW5lIEZMX0RJUkVDVE9SSUVTIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQsIDE2ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMjMwLCA4ICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiUHJvZmlsZSBzZXR0aW5ncyI7Cgl9OwoJRml4ZWRUZXh0IExPR19URVhUIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDcsIDI2ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggODYsIDEyICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiTG9nIGJhc2UgZGlyZWN0b3J5IjsKCX07CglGaXhlZFRleHQgQkFTSVNfVEVYVCB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA3LCA0MiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDg2LCAxMiApOwoJCQlUZXh0WyBlbi1VUyBdID0gIkJhc2UgZGlyZWN0b3J5IjsKCX07CglDaGVja0JveCBISURfQ0hFQ0sgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpDaGVja0JveDpSSURfVFBfUFJPRklMRTpISURfQ0hFQ0siOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNywgNTggKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA4NiwgMTIgKTsKCQkJVGV4dFsgZW4tVVMgXSA9ICJEZWZhdWx0IEhJRCBkaXJlY3RvcnkiOwoJCQlUYWJTdG9wID0gVFJVRTsKCQkJSGlkZSA9IEZBTFNFOwoJfTsKCUVkaXQgTE9HX05BTUUgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpFZGl0OlJJRF9UUF9QUk9GSUxFOkxPR19OQU1FIjsKCQkJQm9yZGVyID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDk3LCAyNiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDExNiwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJfTsKCUVkaXQgQkFTSVNfTkFNRSB7CgkgICAgSGVscElEID0gImJhc2ljOkVkaXQ6UklEX1RQX1BST0ZJTEU6QkFTSVNfTkFNRSI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA5NywgNDIgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMTYsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCX07CglFZGl0IEhJRF9OQU1FIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6RWRpdDpSSURfVFBfUFJPRklMRTpISURfTkFNRSI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA5NywgNTggKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMTYsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCX07CglQdXNoQnV0dG9uIExPR19TRVQgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpQdXNoQnV0dG9uOlJJRF9UUF9QUk9GSUxFOkxPR19TRVQiOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggMjE3LCAyNiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDEyLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQlUZXh0WyBlbi1VUyBdID0gIi4uLiI7Cgl9OwoJUHVzaEJ1dHRvbiBCQVNJU19TRVQgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpQdXNoQnV0dG9uOlJJRF9UUF9QUk9GSUxFOkJBU0lTX1NFVCI7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAyMTcsIDQyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTIsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCVRleHRbIGVuLVVTIF0gPSAiLi4uIjsKCX07CglQdXNoQnV0dG9uIEhJRF9TRVQgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpQdXNoQnV0dG9uOlJJRF9UUF9QUk9GSUxFOkhJRF9TRVQiOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggMjE3LCA1OCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDEyLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQlUZXh0WyBlbi1VUyBdID0gIi4uLiI7Cgl9OwoJQ2hlY2tCb3ggQ0JfQVVUT1JFTE9BRCB7CgkgICAgSGVscElEID0gImJhc2ljOkNoZWNrQm94OlJJRF9UUF9QUk9GSUxFOkNCX0FVVE9SRUxPQUQiOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNywgNzQgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMTUsIDEyICk7CgkJVGV4dFsgZW4tVVMgXSA9ICJBdXRvUmVsb2FkIjsKCX07CglDaGVja0JveCBDQl9BVVRPU0FWRSB7CgkgICAgSGVscElEID0gImJhc2ljOkNoZWNrQm94OlJJRF9UUF9QUk9GSUxFOkNCX0FVVE9TQVZFIjsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDcsIDg3ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTE1LCAxMiApOwoJCVRleHRbIGVuLVVTIF0gPSAiU2F2ZSBiZWZvcmUgZXhlY3V0ZSI7Cgl9OwoJQ2hlY2tCb3ggQ0JfU1RPUE9OU1lOVEFYRVJST1JTIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6Q2hlY2tCb3g6UklEX1RQX1BST0ZJTEU6Q0JfU1RPUE9OU1lOVEFYRVJST1JTIjsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDEzMiwgNzQgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMTUsIDEyICk7CgkJVGV4dFsgZW4tVVMgXSA9ICJTdG9wIG9uIFN5bnRheCBFcnJvcnMiOwoJfTsKfTsKClRhYlBhZ2UgUklEX1RQX0NSQVNIIHsKICAgIEhlbHBJRCA9ICJiYXNpYzpUYWJQYWdlOlJJRF9UUF9DUkFTSCI7CglIaWRlID0gVFJVRSA7CglTVkxvb2sgPSBUUlVFIDsKCVNpemUgPSBNQVBfQVBQRk9OVCggMjQ0LCAxMDAgKTsKCUZpeGVkTGluZSBGTF9DUkFTSFJFUE9SVCB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA0LCAyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMjMwLCA4ICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiQ3Jhc2hyZXBvcnQiOwoJfTsKCUNoZWNrQm94IENCX1VTRVBST1hZIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6Q2hlY2tCb3g6UklEX1RQX0NSQVNIOkNCX1VTRVBST1hZIjsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDgsIDEyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTIwLCAxMiApOwoJCQlUZXh0WyBlbi1VUyBdID0gIlVzZSBQcm94eSI7Cgl9OwoJRml4ZWRUZXh0IEZUX0NSSE9TVCB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA4KzEyLCAxMisxMyApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDMwLCAxMiApOwoJCQlUZXh0WyBlbi1VUyBdID0gIkhvc3QiOwoJfTsKCUVkaXQgRURfQ1JIT1NUIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6RWRpdDpSSURfVFBfQ1JBU0g6RURfQ1JIT1NUIjsKCQkJQm9yZGVyID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQzKzEyLCAxMisxMyApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDgwLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQl9OwoJRml4ZWRUZXh0IEZUX0NSUE9SVCB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA4KzEyLCAxMisxMysxNiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDMwLCAxMiApOwoJCQlUZXh0WyBlbi1VUyBdID0gIlBvcnQiOwoJfTsKCU51bWVyaWNGaWVsZCBORl9DUlBPUlQgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpOdW1lcmljRmllbGQ6UklEX1RQX0NSQVNIOk5GX0NSUE9SVCI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA0MysxMiwgMTIrMTMrMTYgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CiAgICAgICAgICAgIFJpZ2h0ID0gVFJVRTsKCQkJUmVwZWF0ID0gVFJVRTsKCQkJU3BpbiA9IFRSVUU7CgkJCU1pbmltdW0gPSAxMDI0OwogICAgICAgICAgICBNYXhpbXVtID0gMHhmZmZmOwogICAgICAgICAgICBGaXJzdCA9IDEwMjQ7CiAgICAgICAgICAgIExhc3QgPSAweGZmZmY7CgkJfTsKCUNoZWNrQm94IENCX0FMTE9XQ09OVEFDVCB7CgkgICAgSGVscElEID0gImJhc2ljOkNoZWNrQm94OlJJRF9UUF9DUkFTSDpDQl9BTExPV0NPTlRBQ1QiOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggOCwgMTIrMTMrMTYrMTYgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMjAsIDEyICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiQWxsb3cgQ29udGFjdCI7Cgl9OwoJRml4ZWRUZXh0IEZUX0VNQUlMIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDgrMTIsIDEyKzEzKzE2KzE2KzEzICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMzAsIDEyICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiRU1haWwiOwoJfTsKCUVkaXQgRURfRU1BSUwgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpFZGl0OlJJRF9UUF9DUkFTSDpFRF9FTUFJTCI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA0MysxMiwgMTIrMTMrMTYrMTYrMTMgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA4MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJfTsKfTsKCgpUYWJQYWdlIFJJRF9UUF9NSVNDIHsKICAgIEhlbHBJRCA9ICJiYXNpYzpUYWJQYWdlOlJJRF9UUF9NSVNDIjsKCUhpZGUgPSBUUlVFIDsKCVNWTG9vayA9IFRSVUUgOwoJU2l6ZSA9IE1BUF9BUFBGT05UKCAyNDQsIDEwMCApOwoJRml4ZWRMaW5lIEZMX0NPTU1VTklDQVRJT04gewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNCwgMiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDIzMCwgOCApOwoJCQlUZXh0WyBlbi1VUyBdID0gIkNvbW11bmljYXRpb24iOwoJfTsKCUZpeGVkVGV4dCBGVF9IT1NUIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDgsIDEyICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMzAsIDEyICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiSG9zdCI7Cgl9OwoJRWRpdCBFRF9IT1NUIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6RWRpdDpSSURfVFBfTUlTQzpFRF9IT1NUIjsKCQkJQm9yZGVyID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQzLCAxMik7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggODAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCX07CglGaXhlZFRleHQgRlRfVFRQT1JUIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDEzMiwgMTIgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA3MCwgMTIgKTsKCQkJVGV4dFsgZW4tVVMgXSA9ICJUZXN0dG9vbCBQb3J0IjsKCX07CglOdW1lcmljRmllbGQgTkZfVFRQT1JUIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6TnVtZXJpY0ZpZWxkOlJJRF9UUF9NSVNDOk5GX1RUUE9SVCI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAxOTEsIDEyKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CiAgICAgICAgICAgIFJpZ2h0ID0gVFJVRTsKCQkJUmVwZWF0ID0gVFJVRTsKCQkJU3BpbiA9IFRSVUU7CgkJCU1pbmltdW0gPSAxMDI0OwogICAgICAgICAgICBNYXhpbXVtID0gMHhmZmZmOwogICAgICAgICAgICBGaXJzdCA9IDEwMjQ7CiAgICAgICAgICAgIExhc3QgPSAweGZmZmY7CgkJfTsKCUZpeGVkVGV4dCBGVF9VTk9QT1JUIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDEzMiwgMTIrMTUgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA3MCwgMTIgKTsKCQkJVGV4dFsgZW4tVVMgXSA9ICJSZW1vdGUgVU5PIFBvcnQiOwoJfTsKCU51bWVyaWNGaWVsZCBORl9VTk9QT1JUIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6TnVtZXJpY0ZpZWxkOlJJRF9UUF9NSVNDOk5GX1VOT1BPUlQiOwoJCQlCb3JkZXIgPSBUUlVFOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggMTkxLCAxMisxNSk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwogICAgICAgICAgICBSaWdodCA9IFRSVUU7CgkJCVJlcGVhdCA9IFRSVUU7CgkJCVNwaW4gPSBUUlVFOwoJCQlNaW5pbXVtID0gMTAyNDsKCQkJTWF4aW11bSA9IDB4ZmZmZjsKICAgICAgICAgICAgRmlyc3QgPSAxMDI0OwogICAgICAgICAgICBMYXN0ID0gMHhmZmZmOwoJCX07CgoJRml4ZWRMaW5lIEZMX09USEVSIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQsIDI3ICsxMyApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDIzMCwgOCApOwoJCQlUZXh0WyBlbi1VUyBdID0gIk90aGVyIHNldHRpbmdzIjsKCX07CglGaXhlZFRleHQgVElNRU9VVF9URVhUIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDgsIDUwICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNzAsIDEyICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiU2VydmVyIFRpbWVvdXQiOwoJfTsKCVRpbWVGaWVsZCBTRVJWRVJfVElNRU9VVCB7CgkgICAgSGVscElEID0gImJhc2ljOlRpbWVGaWVsZDpSSURfVFBfTUlTQzpTRVJWRVJfVElNRU9VVCI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA4MywgNTAgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJCVJlcGVhdCA9IFRSVUU7CgkJCVNwaW4gPSBUUlVFOwoJCQlGb3JtYXQgPSBUSU1FRl9TRUM7CgkJCUR1cmF0aW9uID0gVFJVRTsKCQl9OwoJRml4ZWRUZXh0IEZUX0xSVSB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAxMzIsIDUwICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNzAsIDEyICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiTWF4IExSVSBGaWxlcyI7Cgl9OwoJTnVtZXJpY0ZpZWxkIFRGX01BWF9MUlUgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpOdW1lcmljRmllbGQ6UklEX1RQX01JU0M6VEZfTUFYX0xSVSI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAxOTEsIDUwKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CiAgICAgICAgICAgIFJpZ2h0ID0gVFJVRTsKCQkJUmVwZWF0ID0gVFJVRTsKCQkJU3BpbiA9IFRSVUU7CgkJCU1pbmltdW0gPSAwOwoJCQlNYXhpbXVtID0gSURNX0ZJTEVfTFJVbiAtIElETV9GSUxFX0xSVTEgKzE7CgkJfTsKCUZpeGVkVGV4dCBGVF9QUk9HRElSIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDgsIDUwKzE1ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNzYsIDEyICk7CgkJCVRleHRbIGVuLVVTIF0gPSAiT09vIFByb2dyYW0gRGlyIjsKCX07CglFZGl0IEVEX1BST0dESVIgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpFZGl0OlJJRF9UUF9NSVNDOkVEX1BST0dESVIiOwoJCQlCb3JkZXIgPSBUUlVFOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggODMsIDUwKzE1ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMjE5LTgzLTQsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCX07CglQdXNoQnV0dG9uIFBCX1BST0dESVIgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpQdXNoQnV0dG9uOlJJRF9UUF9NSVNDOlBCX1BST0dESVIiOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggMjE5LCA1MCsxNSApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDEyLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQlUZXh0WyBlbi1VUyBdID0gIi4uLiI7Cgl9Owp9OwoKClRhYlBhZ2UgUklEX1RQX0ZPTlQgewogICAgSGVscElEID0gImJhc2ljOlRhYlBhZ2U6UklEX1RQX0ZPTlQiOwoJSGlkZSA9IFRSVUUgOwoJU1ZMb29rID0gVFJVRSA7CglTaXplID0gTUFQX0FQUEZPTlQoIDI0NCwgMTAwICk7CglGaXhlZFRleHQgRlRfRk9OVE5BTUUgewoJCVBvcyA9IE1BUF9BUFBGT05UKCA0LCAyICk7CgkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMjMsIDggKTsKCQlUZXh0WyBlbi1VUyBdID0gIlR5cGUiOwoJfTsKCUNvbWJvQm94IENCX0ZPTlROQU1FIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6Q29tYm9Cb3g6UklEX1RQX0ZPTlQ6Q0JfRk9OVE5BTUUiOwoJCVBvcyA9IE1BUF9BUFBGT05UKCA0LCAxMiApOwoJCVNpemUgPSBNQVBfQVBQRk9OVCggMTIzLCAxMio0ICk7CiAgICAgICAgU29ydCA9IFRSVUU7CiAgICAgICAgQXV0b0hTY3JvbGwgPSBUUlVFOwoJfTsKCUZpeGVkVGV4dCBGVF9GT05UU1RZTEUgewoJCVBvcyA9IE1BUF9BUFBGT05UKCAxMzEsIDIgKTsKCQlTaXplID0gTUFQX0FQUEZPTlQoIDY1LCA4ICk7CgkJVGV4dFsgZW4tVVMgXSA9ICJUeXBlZmFjZSI7Cgl9OwoJQ29tYm9Cb3ggQ0JfRk9OVFNUWUxFIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6Q29tYm9Cb3g6UklEX1RQX0ZPTlQ6Q0JfRk9OVFNUWUxFIjsKCQlQb3MgPSBNQVBfQVBQRk9OVCggMTMxLCAxMiApOwoJCVNpemUgPSBNQVBfQVBQRk9OVCggNjUsIDEyKjQgKTsKICAgICAgICBBdXRvSFNjcm9sbCA9IFRSVUU7Cgl9OwoJRml4ZWRUZXh0IEZUX0ZPTlRTSVpFIHsKCQlQb3MgPSBNQVBfQVBQRk9OVCggMjAwLCAyICk7CgkJU2l6ZSA9IE1BUF9BUFBGT05UKCAyOSwgOCApOwoJCVRleHRbIGVuLVVTIF0gPSAiU2l6ZSI7Cgl9OwoJTWV0cmljQm94IE1CX0ZPTlRTSVpFIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6TWV0cmljQm94OlJJRF9UUF9GT05UOk1CX0ZPTlRTSVpFIjsKCQlQb3MgPSBNQVBfQVBQRk9OVCggMjAwLCAxMiApOwoJCVNpemUgPSBNQVBfQVBQRk9OVCggMjksIDEyKjQgKTsKICAgICAgICBBdXRvSFNjcm9sbCA9IFRSVUU7Cgl9OwogICAgRml4ZWRUZXh0IEZUX1BSRVZJRVcgewoJCVBvcyA9IE1BUF9BUFBGT05UKCA0LCAxMio1KzUgKTsKCQlTaXplID0gTUFQX0FQUEZPTlQoIDIyOSwgMzAgKTsKCQlDZW50ZXIgPSBUUlVFOwoJCUJvcmRlciA9IFRSVUU7CiAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMjI5IGlzIG1heAp9OwoKCkZsb2F0aW5nV2luZG93IElERF9ESVNQTEFZX0hJRCB7CiAgICBIZWxwSUQgPSAiYmFzaWM6RmxvYXRpbmdXaW5kb3c6SUREX0RJU1BMQVlfSElEIjsKCU91dHB1dFNpemUgPSBUUlVFOwoJU1ZMb29rID0gVFJVRTsKCVNpemUgPSBNQVBfQVBQRk9OVCggMjYxLCAxNjAgKTsKCU1vdmVhYmxlID0gVFJVRTsKCUNsb3NlYWJsZSA9IFRSVUU7CglTaXplYWJsZSA9IFRSVUU7Cglab29tYWJsZSA9IFRSVUU7CglIaWRlID0gVFJVRTsKCUNsaXBDaGlsZHJlbiA9IFRSVUU7CglUb29sQm94IFJJRF9UQl9DT05GIHsKCQkJQm9yZGVyID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDAsIDAgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAyNjAsIDE0ICk7Ci8qCQkJSXRlbUxpc3QgPSB7CgkJCVRvb2xCb3hJdGVtICB7CgkJCQkJVGV4dCA9ICJlcnN0ZXIgZGVyIFRvb2xib3giOwoJCQkJfTsKCQkJfTsqLwovLwkJCUhpZGUgPSBUUlVFOwoJCX07CglGaXhlZFRleHQgUklEX0ZUX0NPTlRST0xTIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQsIDE2ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTI4LCAxMCApOwoJCVRleHRbIGVuLVVTIF0gPSAiQ29udHJvbHMiOwoJfTsKCU11bHRpTGlzdEJveCBSSURfTUxCX0NPTlRST0xTIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6TXVsdGlMaXN0Qm94OklERF9ESVNQTEFZX0hJRDpSSURfTUxCX0NPTlRST0xTIjsKCQkJQm9yZGVyID0gVFJVRTsKCQkJQXV0b0hTY3JvbGwgPSBUUlVFOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNCwgMjggKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAyMDgsIDg4ICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCX07CglGaXhlZFRleHQgUklEX0ZUX1NMT1RTIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQsIDEyMCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDEyOCwgMTAgKTsKCQlUZXh0WyBlbi1VUyBdID0gIlNsb3RzIjsKCX07CglNdWx0aUxpc3RCb3ggUklEX01MQl9TTE9UUyB7CgkgICAgSGVscElEID0gImJhc2ljOk11bHRpTGlzdEJveDpJRERfRElTUExBWV9ISUQ6UklEX01MQl9TTE9UUyI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCUF1dG9IU2Nyb2xsID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDQsIDEzMiApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDIwOCwgMjQgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJfTsKCVB1c2hCdXR0b24gUklEX1BCX0tPUElFUkVOIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6UHVzaEJ1dHRvbjpJRERfRElTUExBWV9ISUQ6UklEX1BCX0tPUElFUkVOIjsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDIxNiwgMjggKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJVGV4dFsgZW4tVVMgXSA9ICJDb3B5IjsKCX07CglQdXNoQnV0dG9uIFJJRF9QQl9CRU5FTk5FTiB7CgkgICAgSGVscElEID0gImJhc2ljOlB1c2hCdXR0b246SUREX0RJU1BMQVlfSElEOlJJRF9QQl9CRU5FTk5FTiI7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAyMTYsIDQ0ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCQlIaWRlID0gVFJVRTsKCQlUZXh0WyBlbi1VUyBdID0gIk5hbWUiOwoJfTsKCVB1c2hCdXR0b24gUklEX1BCX1NFTEVDVEFMTCB7CgkgICAgSGVscElEID0gImJhc2ljOlB1c2hCdXR0b246SUREX0RJU1BMQVlfSElEOlJJRF9QQl9TRUxFQ1RBTEwiOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggMjE2LCA0NCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDQwLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQlUZXh0WyBlbi1VUyBdID0gIlNlbGVjdCBhbGwiOwoJfTsKCU9LQnV0dG9uIFJJRF9PS19DTE9TRSB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAyMTYsIDE0NCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDQwLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQlUZXh0WyBlbi1VUyBdID0gIkNsb3NlIjsKCX07CglUZXh0WyBlbi1VUyBdID0gIkRpc3BsYXkgSElkIjsKfTsKCgoKQWNjZWxlcmF0b3IgTUFJTl9BQ0NFTCB7CglJdGVtTGlzdCA9IHsKCUFjY2VsZXJhdG9ySXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX0ZJTEVORVc7CgkJCUtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfTkVXOyB9OwoJCX07CglBY2NlbGVyYXRvckl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9GSUxFT1BFTjsKCQkJS2V5ID0gS2V5Q29kZSB7IEZ1bmN0aW9uID0gS0VZRlVOQ19PUEVOOyB9OwoJCX07CglBY2NlbGVyYXRvckl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9GSUxFQ0xPU0U7CgkJCUtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfQ0xPU0U7IH07CgkJfTsKCUFjY2VsZXJhdG9ySXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX0ZJTEVTQVZFOwoJCQlLZXkgPSBLZXlDb2RlIHsgRnVuY3Rpb24gPSBLRVlGVU5DX1NBVkU7IH07CgkJfTsKCUFjY2VsZXJhdG9ySXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX0ZJTEVTQVZFQVM7CgkJCUtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfU0FWRUFTOyB9OwoJCX07CglBY2NlbGVyYXRvckl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9RVUlUOwoJCQlLZXkgPSBLZXlDb2RlIHsgRnVuY3Rpb24gPSBLRVlGVU5DX1FVSVQ7IH07CgkJfTsKLy8JQWNjZWxlcmF0b3JJdGVtICB7Ci8vCQkJSWRlbnRpZmllciA9IFJJRF9FRElUQ1VUOwovLwkJCUtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfQ1VUOyB9OwovLwkJfTsKLy8JQWNjZWxlcmF0b3JJdGVtICB7Ci8vCQkJSWRlbnRpZmllciA9IFJJRF9FRElUQ09QWTsKLy8JCQlLZXkgPSBLZXlDb2RlIHsgRnVuY3Rpb24gPSBLRVlGVU5DX0NPUFk7IH07Ci8vCQl9OwovLwlBY2NlbGVyYXRvckl0ZW0gIHsKLy8JCQlJZGVudGlmaWVyID0gUklEX0VESVRQQVNURTsKLy8JCQlLZXkgPSBLZXlDb2RlIHsgRnVuY3Rpb24gPSBLRVlGVU5DX1BBU1RFOyB9OwovLwkJfTsKLy8JQWNjZWxlcmF0b3JJdGVtICB7Ci8vCQkJSWRlbnRpZmllciA9IFJJRF9FRElUREVMOwovLwkJCUtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfREVMRVRFOyB9OwovLwkJfTsKCUFjY2VsZXJhdG9ySXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX0VESVRTRUFSQ0g7CgkJCUtleSA9IEtleUNvZGUgeyBGdW5jdGlvbiA9IEtFWUZVTkNfRklORDsgfTsKCQl9OwoJQWNjZWxlcmF0b3JJdGVtICB7CgkJCUlkZW50aWZpZXIgPSBSSURfRURJVFJFUEVBVDsKCQkJS2V5ID0gS2V5Q29kZSB7IENvZGUgPSBLRVlfRjM7IH07Ci8vCQkJS2V5ID0gS2V5Q29kZSB7IEZ1bmN0aW9uID0gS0VZRlVOQ19SRVBFQVQ7IH07CgkJfTsKCUFjY2VsZXJhdG9ySXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX1JVTlNUQVJUOwoJCQlLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GNTsgfTsKCQl9OwoJQWNjZWxlcmF0b3JJdGVtICB7CgkJCUlkZW50aWZpZXIgPSBSSURfUlVOU1RFUElOVE87CgkJCUtleSA9IEtleUNvZGUgeyBDb2RlID0gS0VZX0Y4OyB9OwoJCX07CglBY2NlbGVyYXRvckl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9UT0dMRUJSS1BOVDsKCQkJS2V5ID0gS2V5Q29kZSB7IENvZGUgPSBLRVlfRjk7IH07CgkJfTsKCUFjY2VsZXJhdG9ySXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX1JVTlNURVBPVkVSOwoJCQlLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GMTA7IH07CgkJfTsKCUFjY2VsZXJhdG9ySXRlbSAgewoJCQlJZGVudGlmaWVyID0gUklEX1JVTlRPQ1VSU09SOwoJCQlLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GNzsgfTsKCQl9OwoJQWNjZWxlcmF0b3JJdGVtICB7CgkJCUlkZW50aWZpZXIgPSBSSURfUlVOQlJFQUs7CgkJCUtleSA9IEtleUNvZGUgeyBDb2RlID0gS0VZX0Y1OyBNb2RpZmllcjEgPSBUUlVFOyB9OwoJCX07CglBY2NlbGVyYXRvckl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9SVU5TVE9QOwoJCQlLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GNTsgU2hpZnQgPSBUUlVFOyB9OwoJCX07CglBY2NlbGVyYXRvckl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9SVU5ORVhURVJSOwoJCQlLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GODsgU2hpZnQgPSBUUlVFOyB9OwoJCX07CglBY2NlbGVyYXRvckl0ZW0gIHsKCQkJSWRlbnRpZmllciA9IFJJRF9SVU5QUkVWRVJSOwoJCQlLZXkgPSBLZXlDb2RlIHsgQ29kZSA9IEtFWV9GNzsgU2hpZnQgPSBUUlVFOyB9OwoJCX07Cgl9Owp9OwoKSW1hZ2VMaXN0IFJJRF9JTUdMU1RfTEFZT1VUCnsKICAgIFByZWZpeCA9ICJpbSI7CglNYXNrQ29sb3IgPSBDb2xvciB7IFJlZCA9IDB4RkZGRiA7IEdyZWVuID0gMHhGRkZGIDsgQmx1ZSA9IDB4RkZGRiA7IH07CglJZExpc3QgPQoJewoJCUlNR0lEX0JSS0VOQUJMRUQgOwoJCUlNR0lEX0JSS0RJU0FCTEVEIDsKCQlJTUdJRF9TVEVQTUFSS0VSIDsKCQlJTUdJRF9FUlJPUk1BUktFUiA7Cgl9Owp9OwoKTW9kZWxlc3NEaWFsb2cgSUREX0VESVRfVkFSIHsKICAgIEhlbHBJRCA9ICJiYXNpYzpNb2RlbGVzc0RpYWxvZzpJRERfRURJVF9WQVIiOwoJUG9zID0gTUFQX0FQUEZPTlQoIDAsIDAgKTsKCVNpemUgPSBNQVBfQVBQRk9OVCggMTcxLCA4NyApOwoJTW92ZWFibGUgPSBUUlVFOwoJQ2xvc2VhYmxlID0gVFJVRTsKCUZpeGVkVGV4dCBSSURfRlRfTkFNRSB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA4LCA4ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEwICk7CgkJVGV4dFsgZW4tVVMgXSA9ICJOYW1lIjsKCX07CglGaXhlZFRleHQgUklEX0ZUX0NPTlRFTlQgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggOCwgMjEgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTAgKTsKCQlUZXh0WyBlbi1VUyBdID0gIkNvbnRlbnQiOwoJfTsKCUZpeGVkVGV4dCBSSURfRlRfTkVXX0NPTlRFTlQgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggOCwgMzggKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTAgKTsKCQlUZXh0WyBlbi1VUyBdID0gIk5ldyBjb250ZW50IjsKCX07CglGaXhlZFRleHQgUklEX0ZUX05BTUVfVkFMVUUgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNTMsIDggKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMTEsIDEwICk7CgkJVGV4dFsgZW4tVVMgXSA9ICJOYW1lIG9mIHZhcmlhYmxlIjsKCX07CglGaXhlZFRleHQgUklEX0ZUX0NPTlRFTlRfVkFMVUUgewoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNTMsIDIxICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTExLCAxMCApOwoJCVRleHRbIGVuLVVTIF0gPSAiUHJldmlvdXMgY29udGVudHMiOwoJfTsKCVJhZGlvQnV0dG9uIFJJRF9SQl9ORVdfQk9PTF9UIHsKCSAgICBIZWxwSUQgPSAiYmFzaWM6UmFkaW9CdXR0b246SUREX0VESVRfVkFSOlJJRF9SQl9ORVdfQk9PTF9UIjsKCQkJSGlkZSA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA1MywgMzcgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJVGV4dFsgZW4tVVMgXSA9ICJUcnVlIjsKCX07CglSYWRpb0J1dHRvbiBSSURfUkJfTkVXX0JPT0xfRiB7CgkgICAgSGVscElEID0gImJhc2ljOlJhZGlvQnV0dG9uOklERF9FRElUX1ZBUjpSSURfUkJfTkVXX0JPT0xfRiI7CgkJCUhpZGUgPSBUUlVFOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggOTgsIDM3ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggNDAsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCVRleHRbIGVuLVVTIF0gPSAiRmFsc2UiOwoJfTsKCU51bWVyaWNGaWVsZCBSSURfTkZfTkVXX0lOVEVHRVIgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpOdW1lcmljRmllbGQ6SUREX0VESVRfVkFSOlJJRF9ORl9ORVdfSU5URUdFUiI7CgkJCUJvcmRlciA9IFRSVUU7CgkJCUhpZGUgPSBUUlVFOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNTMsIDM3ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTExLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQkJUmVwZWF0ID0gVFJVRTsKCQkJU3BpbiA9IFRSVUU7CgkJCU1pbmltdW0gPSAtMzI3Njg7CgkJCU1heGltdW0gPSAzMjc2NzsKCQkJRmlyc3QgPSAtMzI3Njg7CgkJCUxhc3QgPSAzMjc2NzsKCQkJU3BpblNpemUgPSAxMDsKCQl9OwoJTnVtZXJpY0ZpZWxkIFJJRF9ORl9ORVdfTE9ORyB7CgkgICAgSGVscElEID0gImJhc2ljOk51bWVyaWNGaWVsZDpJRERfRURJVF9WQVI6UklEX05GX05FV19MT05HIjsKCQkJQm9yZGVyID0gVFJVRTsKCQkJSGlkZSA9IFRSVUU7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCA1MywgMzcgKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxMTEsIDEyICk7CgkJCVRhYlN0b3AgPSBUUlVFOwoJCQlSZXBlYXQgPSBUUlVFOwoJCQlTcGluID0gVFJVRTsKCQkJTWluaW11bSA9IC0yMTQ3NDgzNjQ4OwoJCQlNYXhpbXVtID0gMjE0NzQ4MzY0NzsKCQkJRmlyc3QgPSAtMjE0NzQ4MzY0ODsKCQkJTGFzdCA9IDIxNDc0ODM2NDc7CgkJCVNwaW5TaXplID0gMTA7CgkJfTsKCUVkaXQgUklEX0VEX05FV19TVFJJTkcgewoJICAgIEhlbHBJRCA9ICJiYXNpYzpFZGl0OklERF9FRElUX1ZBUjpSSURfRURfTkVXX1NUUklORyI7CgkJCUhpZGUgPSBUUlVFOwoJCQlCb3JkZXIgPSBUUlVFOwoJCQlQb3MgPSBNQVBfQVBQRk9OVCggNTMsIDM3ICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTExLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQlUZXh0WyBlbi1VUyBdID0gIkVkaXQiOwoJfTsKCU9LQnV0dG9uIFJJRF9PSyB7CgkJCVBvcyA9IE1BUF9BUFBGT05UKCAzMywgNTggKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCA0MCwgMTIgKTsKCQkJVGFiU3RvcCA9IFRSVUU7CgkJfTsKCUNhbmNlbEJ1dHRvbiBSSURfQ0FOQ0VMIHsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDkzLCA1OCApOwoJCQlTaXplID0gTUFQX0FQUEZPTlQoIDQwLCAxMiApOwoJCQlUYWJTdG9wID0gVFJVRTsKCQl9OwoJVGV4dFsgZW4tVVMgXSA9ICJFZGl0IHZhcmlhYmxlIjsKfTsKCkZsb2F0aW5nV2luZG93IExPQURfQ09ORiB7CiAgICBIZWxwSUQgPSAiYmFzaWM6RmxvYXRpbmdXaW5kb3c6TE9BRF9DT05GIjsKCVNWTG9vayA9IFRSVUU7CglQb3MgPSBNQVBfQVBQRk9OVCggNjYsIDIzICk7CglTaXplID0gTUFQX0FQUEZPTlQoIDE1NiwgNTEgKTsKCU1vdmVhYmxlID0gVFJVRTsKCUZpeGVkVGV4dCBXT1JLIHsKCQkJU1ZMb29rID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDAsIDggKTsKCQkJU2l6ZSA9IE1BUF9BUFBGT05UKCAxNTUsIDEwICk7CgkJCUNlbnRlciA9IFRSVUU7CgkJVGV4dFsgZW4tVVMgXSA9ICJTbG90IElEcyI7Cgl9OwoJRml4ZWRUZXh0IEZJTEVOQU1FIHsKCQkJU1ZMb29rID0gVFJVRTsKCQkJUG9zID0gTUFQX0FQUEZPTlQoIDAsIDIxICk7CgkJCVNpemUgPSBNQVBfQVBQRk9OVCggMTU1LCAxMCApOwoJCQlDZW50ZXIgPSBUUlVFOwoJCVRleHRbIGVuLVVTIF0gPSAiRmlsZS53aW4iOwoJfTsKCVRleHRbIGVuLVVTIF0gPSAiUmVhZGluZyBDb25maWd1cmF0aW9uIEZpbGVzIjsKfTsKCg==