LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBQb3J0dWd1ZXNlIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUKewogIFdDTURfQVRUUklCLCAiQWp1ZGEgZG8gY29tYW5kbyBBVFRSSUJcbiIKICBXQ01EX0NBTEwsCiJDQUxMIDxhcnF1aXZvX2RlX2xvdGU+IOkgdXNhZG8gZGVudHJvIGRlIHVtIGFycXVpdm8gZGUgbG90ZSBwYXJhIGV4ZWN1dGFyXG5cCmNvbWFuZG8gZGUgb3V0cm8gYXJxdWl2byBkZSBsb3RlLiBRdWFuZG8gbyBhcnF1aXZvIGV4aXN0ZSwgbyBjb250cm9sZSByZXRvcm5hXG5cCmFvIGFycXVpdm8gcXVlIG8gY2hhbW91LiBPIGNvbWFuZG8gQ0FMTCBwb2RlIHBhc3NhciBwYXLibWV0cm9zIGFvIHByb2NlZGltZW50b1xuXApjaGFtYWRvLlxuXApcblwKTXVkYW5u52FzIG5vIGRpcmV083JpbyBwYWRy428sIHZhcmnhdmVpcyBkZSBhbWJpZW50ZSwgZXRjLCBmZWl0YXMgZGVudHJvXG5cCmRvIHByb2NlZGltZW50ZSBjaGFtYWRvIHPjbyBoZXJkYWRvcyBwZWxvIGNoYW1hZG9yLlxuIgoKICBXQ01EX0NELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gQ0RcbiIKICBXQ01EX0NIRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gQ0hESVJcbiIKCiAgV0NNRF9DTFMsICAgICJDTFMgbGltcGEgYSB0ZWxhIGRvIGNvbnNvbGVcbiIKCiAgV0NNRF9DT1BZLCAgICJBanVkYSBkbyBjb21hbmRvIENPUFlcbiIKICBXQ01EX0NUVFksICAgIkFqdWRhIGRvIGNvbWFuZG8gQ1RUWVxuIgogIFdDTURfREFURSwgICAiQWp1ZGEgZG8gY29tYW5kbyBEQVRFXG4iCiAgV0NNRF9ERUwsICAgICJBanVkYSBkbyBjb21hbmRvIERFTFxuIgogIFdDTURfRElSLCAgICAiQWp1ZGEgZG8gY29tYW5kbyBESVJcbiIKCiAgV0NNRF9FQ0hPLAoiRUNITyA8c3RyaW5nPiBtb3N0cmEgYSA8c3RyaW5nPiBubyBkaXNwb3NpdGl2byB0ZXJtaW5hbCBhdHVhbC5cblwKXG5cCkVDSE8gT04gYXRpdmEgYSBleGliaefjbyBkZSB0b2RvcyBvcyBjb21hbmRvcyBzdWJzZXF1ZW50ZXMgZW0gdW1cblwKYXJxdWl2byBkZSBsb3RlIG5vIHRlcm1pbmFsIGFudGVzIGRlbGVzIHNlcmVtIGV4ZWN1dGFkb3MuXG5cClxuXApFQ0hPIE9GRiBkZXNhdGl2YSBvIGVmZWl0byBkZSB1bSBjb21hbmRvIEVDSE8gT04gKEVDSE8g6SBPRkYgcG9yIHBhZHLjbykuXG5cCk8gY29tYW5kbyBFQ0hPIE9GRiBwb2RlIHNlciBpbXBlZGlkbyBkZSBzZXIgbW9zdHJhZG8gY29sb2NhbmRvLXNlIHVtXG5cCnPtbWJvbG8gQCBwcmVjZWRlbmRvIG8gbWVzbW8uXG4iCgogIFdDTURfRVJBU0UsICAiQWp1ZGEgZG8gY29tYW5kbyBFUkFTRVxuIgoKICBXQ01EX0ZPUiwKIk8gY29tYW5kbyBGT1Ig6SB1c2FkbyBwYXJhIGV4ZWN1dGFyIHVtIGNvbWFuZG8gYSBjYWRhIHZleiBlbVxudW0gY29uanVudG8gZGUgYXJxdWl2b3MuXG5cClxuXApTaW50YXhlOiBGT1IgJXZhcmnhdmVsIElOIChjb25qdW50bykgRE8gY29tYW5kb1xuXApcblwKTm8gY21kLCBu428gZXhpc3RlIGEgbmVjZXNzaWRhZGUgZGUgdXNhciBkb2lzIHNpbmFpcyAlIG5vXG5cCmNvbWFuZG8gRk9SIG5vcyBhcnF1aXZvcyBkZSBsb3RlLlxuIgoKICBXQ01EX0dPVE8sCiJPIGNvbWFuZG8gR09UTyB0cmFuc2ZlcmUgYSBleGVjdefjbyBwYXJhIG91dHJhIGRlY2xhcmHn428gZGVudHJvXG5cCmRvIGFycXVpdm8gZGUgbG90ZS5cblwKXG5cCk8gcvN0dWxvIHF1ZSBzZXLhIG8gZGVzdGlubyBkbyBjb21hbmRvIEdPVE8gcG9kZSB0ZXIgYXTpIDI1NSBjYXJhY3RlcmVzXG5cCm1hcyBu428gcG9kZSBpbmNsdWlyIGVzcGHnb3MgKGRpZmVyZW50ZW1lbnRlIGRlIG91dHJvcyBzaXN0ZW1hcyBvcGVyYWNpb25haXMpLlxuXApTZSBkb2lzIG91IG1haXMgcvN0dWxvcyBmb3JlbSBpZGVudGljb3Mgbm8gYXJxdWl2byBkZSBsb3RlLCBvIHByaW1laXJvIGRlbGVzXG5cCnNlcuEgc2VtcHJlIGV4ZWN1dGFkby4gQSB0ZW50YXRpdmEgZGUgdXNhciBvIEdPVE8gcGFyYSB1bSBy83R1bG8gaW5leGlzdGVudGVcblwKdGVybWluYSBhIGV4ZWN15+NvIGRvIGFycXVpdm8gZGUgbG90ZS5cblwKXG5cCkdPVE8gbuNvIHRlbSBlZmVpdG8gcXVhbmRvIHVzYW5kbyBpbnRlcmF0aXZhbWVudGUuXG4iCgogIFdDTURfSEVMUCwgICAiQWp1ZGEgZG8gY29tYW5kbyBIRUxQXG4iCgogIFdDTURfSUYsCiJJRiDpIHVzYWRvIHBhcmEgZXhlY3V0YXIgdW0gY29tYW5kbyBjb25kaWNpb25hbG1lbnRlLlxuXApcblwKU2ludGF4ZToJSUYgW05PVF0gRVhJU1QgYXJxdWl2byBjb21hbmRvXG5cCglJRiBbTk9UXSB0ZXh0bzE9PXRleHRvMiBjb21hbmRvXG5cCglJRiBbTk9UXSBFUlJPUkxFVkVMIG76bWVybyBjb21hbmRvXG5cClxuXApOYSBzZWd1bmRhIGZvcm1hIGRvIGNvbWFuZG8sIHRleHRvMSBlIHRleHRvMiBkZXZlbSBlc3RhciB1c2FuZG8gYXNwYXMuXG5cCkEgY29tcGFyYefjbyBu428gZGlmZXJlbmNpYSBtYWn6c2N1bGFzIGRlIG1pbnVzY3VsYXMuXG4iCgogIFdDTURfTEFCRUwsICAiTEFCRUwg6SB1c2FkbyBwYXJhIHJvdHVsYXIgdW0gdm9sdW1lIGRvIGRpc2NvLlxuXApcblwKU2ludGF4ZTogTEFCRUwgW2RyaXZlOl1cblwKTyBjb21hbmRvIExBQkVMIGly4SBhZ3VhcmRhciBxdWUgdmMgaW5mb3JtZSBvIG5vdm8gcvN0dWxvIHBhcmEgbyBkcml2ZVxuXAplc3BlY2lmaWNhZG8uIFZvY+ogcG9kZSBtb3N0cmFyIG8gcvN0dWxvIGRvIGRpc2NvIGNvbSBvIGNvbWFuZG8gVk9MLlxuIgoKICBXQ01EX01ELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gTURcbiIKICBXQ01EX01LRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gTUtESVJcbiIKICBXQ01EX01PVkUsCiJNT1ZFIHJlYWxvY2EgdW0gYXJxdWl2byBvdSBkaXJldPNyaW8gZW0gdW0gbm92byBwb250byBubyBzaXN0ZW1hIGRlIGFycXVpdm9zLlxuXApcblwKU2UgbyBpdGVtIHNlbmRvIG1vdmlkbyDpIHVtIGRpcmV083JpbyBlbnTjbyB0b2RvcyBvcyBhcnF1aXZvcyBlIHN1YmRpcmV083Jpb3NcblwKYWJhaXhvIGRvIGl0ZW0gc+NvIG1vdmlkb3MgY29tIG8gbWVzbW8uXG5cClxuXApNT1ZFIGZhbGhhcuEgc2UgbyBsb2NhbCBhbnRpZ28gZSBvIG5vdm8gbG9jYWwgZXN0428gZW0gZGlmZXJlbnRlcyB1bmlkYWRlcy5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCBtb3N0cmEgb3UgcGVybWl0ZSBtdWRhciBvIGNhbWluaG8gZGUgcHJvY3VyYSBkZSBwcm9ncmFtYXMgZG8gY21kLlxuXApcblwKRGlnaXRhbmRvIFBBVEggbW9zdHJhcuEgYSBhdHVhbCBjb25maWd1cmHn428gZG8gY29tYW5kbyBQQVRIIChpbmljaWFsbWVudGUgZXN0ZVxuXAp2YWxvciDpIGVzcGVjaWZpY2FkbyBubyBhcnF1aXZvIHdpbmUuY29uZikuIFBhcmEgbXVkYXIgYXMgY29uZmlndXJh5/VlcywgZGlnaXRlXG5cCm5vdm9zIHZhbG9yZXMgbm8gY29tYW5kbyBQQVRILlxuXApcblwKVGFtYultIOkgcG9zc+12ZWwgbW9kaWZpY2FyIG8gY29tYW5kbyBQQVRIIHVzYW5kbyBhIHZhcmnhdmVsIGRlIGFtYmllbnRlIFBBVEgsXG5cCnBvciBleGVtcGxvOlxuXAoJCVBBVEggJVBBVEglO2M6XFx0ZW1wXG4iCgogIFdDTURfUEFVU0UsCiJQQVVTRSBtb3N0cmEgYSBzZWd1aW50ZSBtZW5zYWdlbSBuYSB0ZWxhICdQcmVzc2lvbmUgRW50ZXIgcGFyYSBjb250aW51YXInXG5cCmUgYWd1YXJkYSBxdWUgbyB1c3XhcmlvIHByZXNzaW9uZSBhIHRlY2xhIEVudGVyLiBJc3RvIOkg+nRpbCBwcmluY2lwYWxtZW50ZVxuXAplbSBhcnF1aXZvcyBkZSBsb3RlIHBhcmEgcGVybWl0aXIgYW8gdXN14XJpbyBsZXIgYSBzYe1kYSBkZSB1bSBjb21hbmRvIGFudGVyaW9yXG5cCmFudGVzIHF1ZSBhIHRlbGEgc29mcmEgdW0gcm9sYW1lbnRvLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBjb25maWd1cmEgbyAncHJvbXB0JyBkYSBsaW5oYSBkZSBjb21hbmRvLlxuXApcblwKTyB0ZXh0byBzZWd1aW5kbyBvIGNvbWFuZG8gUFJPTVBUIChlIG9zIGVzcGHnb3MgaW1lZGlhdGFtZW50ZSBkZXBvaXMpXG5cCmFwYXJlY2VtIG5vIGNvbWXnbyBkYSBsaW5oYSBlbnF1YW50byBvIGNtZCBlc3ThIGFndWFyZGFuZG8gcG9yIGNvbWFuZG9zLlxuXApcblwKT3Mgc2VndWludGVzIGNhcmFjdGVyZXMgdGVtIHVtIHNpZ25pZmljYWRvIGVzcGVjaWFsLCBjb25mb3JtZSBtb3N0cmFkbzpcblwKXG5cCiQkICAgIENpZnLjbyAoJCkgICAgICAgICAgJF8gICAgQXZhbudvIGRlIGxpbmhhICAgICAkYiAgICBT7W1ib2xvIHBpcGUgKHwpXG5cCiRkICAgIERhdGEgYXR1YWwgICAgICAgICAgJGUgICAgQ/NkaWdvIGRlIGVzY2FwZSAgICAkZyAgICBTaW5hbCBkZSBtYWlvciAoPilcblwKJGwgICAgU2luYWwgZGUgbWVub3IgKDwpICAkbiAgICBVbmlkYWRlIGF0dWFsICAgICAgICRwICAgIENhbWluaG8gYXR1YWxcblwKJHEgICAgU2luYWwgZGUgaWd1YWwgKD0pICAkdCAgICBIb3JhIGF0dWFsICAgICAgICAgICR2ICAgIFZlcnPjbyBkbyBjbWRcblwKXG5cCk5vdGUgcXVlIGRpZ2l0YW5kbyBvIGNvbWFuZG8gUFJPTVBUIHNlbSBwYXLibWV0cm9zIHJlY29uZmlndXJhIG8gcGFkcuNvLFxuXApxdWUg6SBhIGxldHJhIGRhIHVuaWRhZGUgYXR1YWwgc2VndWlkYSBwZWxvIGRpcmV083JpbyBlIHVtIHNpbmFsIGRlIG1haW9yXG5cCihlcXVpdmFsZW50ZSBhIHVtIGNvbWFuZG8gUFJPTVBUICRwJGcpLlxuXApcblwKTyAncHJvbXB0JyB0YW1i6W0gcG9kZSBzZXIgbXVkYWRvIGFsdGVyYW5kbyBhIHZhcmnhdmVsIFBST01QVCwgYXNzaW0sXG5cCm8gY29tYW5kbyAnU0VUIFBST01QVD10ZXh0bycgdGVtIG8gbWVzbW8gZWZlaXRvIHF1ZSAnUFJPTVBUIHRleHRvJ1xuIgoKICBXQ01EX1JFTSwKIlVtYSBsaW5oYSBkZSBjb21hbmRvIGluaWNpYW5kbyBjb20gUkVNIChzZWd1aW5kbyBkZSB1bSBlc3Bh528pIG7jbyBmYXpcblwKYefjbyBhbGd1bWEsIGUgb3MgY2FyYXRlcmVzIHVzYW5kbyBz428gY29uc2lkZXJhZG9zIGNvbWVudOFyaW9zIGVtIHVtXG5cCmFycXVpdm8gZGUgbG90ZVxuIgoKICBXQ01EX1JFTiwgICAgIkFqdWRhIGRvIGNvbWFuZG8gUkVOXG4iCiAgV0NNRF9SRU5BTUUsICJBanVkYSBkbyBjb21hbmRvIFJFTkFNRVxuIgogIFdDTURfUkQsICAgICAiQWp1ZGEgZG8gY29tYW5kbyBSRFxuIgogIFdDTURfUk1ESVIsICAiQWp1ZGEgZG8gY29tYW5kbyBSTURJUlxuIgoKICBXQ01EX1NFVCwKIlNFVCBtb3N0cmEgb3UgbXVkYSBhcyB2YXLhdmVsIGRlIGFtYmllbnRlIGRlIGNtZC5cblwKXG5cClNFVCBzZW0gcGFy6m10cm9zIG1vc3RyYSB0b2RhcyBhcyB2YXLhdmVsIGRlIGFtYmllbnRlIGF0dWFpc1xuXApcblwKUGFyYSBjcmlhciBvdSBtb2RpZmljYXIgdmFyaeF2ZWwgZGUgYW1iaWVudGUsIGEgc2ludGF4ZSDpOlxuXApcblwKICAgICAgU0VUIDx2YXJp4XZlbD49PHZhbG9yPlxuXApcblwKc2VuZG8gcXVlIDx2YXJp4XZlbD4gZSA8dmFsb3I+IHPjbyB0ZXh0b3MuIE7jbyBkZXZlbSBleGlzdGlyIGVzcGHnb3NcblwKYW50ZXMgZG8gc2luYWwgZGUgaWd1YWxkYWRlLCBuZW0gYSB2YXLhdmVsIHBvZGUgY29udGVyIGVzcGHnb3MuXG5cClxuXApObyBXaW5lLCBvIGFtYmllbnRlIGRvIHNpc3RlbWEgb3BlcmFjaW9uYWwg6SBpbmNsdWlkbyBubyBhbWJpZW50ZSBXaW4zMixcblwKb25kZSBzZW1wcmUgaGF2ZXLhIG1haXMgdmFsb3JlcyBxdWUgZW0gdW0gc2lzdGVtYSBXaW4zMiBuYXRpdm8uIE5vdGUgcXVlXG5cCm7jbyDpIHBvc3PtdmVsIGFmZXRhciBvIGFtYmllbnRlIGRvIHNpc3RlbWEgb3BlcmFjaW9uYWwgYSBwYXJ0aXIgZG8gY21kLlxuIgoKICBXQ01EX1NISUZULAoiU0hJRlQg6SB1c2FkbyBlbSBhcnF1aXZvcyBkZSBsb3RlIHBhcmEgcmVtb3ZlciB1bSBwYXLibWV0cm8gcXVlIGluaWNpYSBhXG5cCmxpc3RhLCBhc3NpbSBlbnTjbyBvIHBhcuJtZW50cm8yIHNvYnJlcPRlIG8gcGFyYW1ldHJvMSBlIGFzc2ltIHBvciBkaWFudGUuXG5cCklzdG8gbuNvIHRlbSBlZmVpdG8gc2UgY2hhbWFkbyBhIHBhcnRpciBkYSBsaW5oYSBkZSBjb21hbmRvLlxuIgoKICBXQ01EX1RJTUUsICAgIkFqdWRhIGRvIGNvbWFuZG8gVElNRVxuIgoKICBXQ01EX1RJVExFLCAgIkNvbmZpZ3VyYSBvIHTtdHVsbyBkYSBqYW5lbGEgZG8gY21kLCBlIGEgc2ludGF4ZSDpIFRJVExFIFt0ZXh0b11cbiIKCiAgV0NNRF9UWVBFLAoiVFlQRSA8YXJxdWl2bz4gY29waWEgPGFycXV2bz4gcGFyYSBvIGRpc3Bvc2l0aXZvIGNvbnNvbGUgKG91IG91dHJvLCBzZVxuXApyZWRpcmVjaW9uYWRvKS4gTmVodW1hIHZlcmlmaWNh5+NvIOkgZmVpdGEgc2UgbyBhcnF1aXZvIHBvZGUgc2VyIGxpZG8uXG4iCgogIFdDTURfVkVSSUZZLAoiVkVSSUZZIOkgdXNhZG8gcGFyYSBjb25maWd1cmFyLCBsaW1wYXIgZSB0ZXN0YXIgbyAnZmxhZycgZGUgdmVyaWZpY2Hn428uIEFzXG5cCmZvcm1hcyB24WxpZGFzIHPjbz5cblwKXG5cClZFUklGWSBPTglDb25maWd1cmEgbyBmbGFnXG5cClZFUklGWSBPRkYJTGltcGEgbyBmbGFnXG5cClZFUklGWQkJTW9zdHJhIE9OIG91IE9GRiBxZG8gYXByb3ByaWFkby5cblwKXG5cCk8gZmxhZyBkZSB2ZXJpZmljYefjbyBu428gdGVtIGZ1bufjbyBubyBXaW5lLlxuIgoKICBXQ01EX1ZFUiwKIlZFUiBtb3N0cmEgYSB2ZXJz428gZW0gZXhlY3Xn428gZG8gY21kLlxuIgoKICBXQ01EX1ZPTCwgICAgIkFqdWRhIGRvIGNvbWFuZG8gVk9MXG4iCgogIFdDTURfUFVTSEQsICAiUFVTSEQgPGRpcmVjdG9yeW5hbWU+IHNhdmVzIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvbnRvIGFcblwKc3RhY2ssIGFuZCB0aGVuIGNoYW5nZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHRoZSBzdXBwbGllZCBvbmUuXG4iCgogIFdDTURfUE9QRCwgICAiUE9QRCBjaGFuZ2VzIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHRoZSBsYXN0IG9uZSBzYXZlZCB3aXRoXG5cClBVU0hELlxuIgoKICBXQ01EX01PUkUsICAgIk1PUkUgZGlzcGxheXMgb3V0cHV0IG9mIGZpbGVzIG9yIHBpcGVkIGlucHV0IGluIHBhZ2VzLlxuIgoKICBXQ01EX0VYSVQsCiJFWElUIHRlcm1pbmEgYSBzZXNz428gZGUgY29tYW5kbyBhdHVhbCBlIHJldG9ybmEgYW8gc2lzdGVtYSBvcGVyYWNpb25hbFxuXApvdSBzaGVsbCBxdWUgdGVuaGEgaW52b2NhZG8gbyBjbWQuXG4iCgogIFdDTURfQUxMSEVMUCwgIkNNRCAtIG9zIGNvbWFuZG8gaW50ZXJub3Mgc+NvOlxuXApBVFRSSUJcdFx0TW9zdHJhIG91IHRyb2NhIGF0cmlidXRvcyBkZSBhcnF1aXZvIERPU1xuXApDQUxMXHRcdEludm9jYSB1bSBhcnF1aXZvIGRlIGxvdGUgZGVudHJvIGRlIG91dHJvXG5cCkNEIChDSERJUilcdE11ZGEgbyBkaXJldPNyaW8gcGFkcuNvIGF0dWFsXG5cCkNMU1x0XHRMaW1wYSBhIHRlbGEgZG8gY29uc29sZVxuXApDT1BZXHRcdENvcGlhIGFycXVpdm9zXG5cCkNUVFlcdFx0TXVkYSBvIGRpc3Bvc2l0aXZvIGRlIGVudHJhZGEvc2HtZGFcblwKREFURVx0XHRNb3N0cmEgb3UgbXVkYSBhIGRhdGEgZG8gc2lzdGVtYVxuXApERUwgKEVSQVNFKVx0QXBhZ2EgdW0gYXJxdWl2byBvdSBjb25qdW50byBkZSBhcnF1aXZvc1xuXApESVJcdFx0TW9zdHJhIG8gY29udGX6ZG8gZGUgdW0gZGlyZXTzcmlvc1xuXApFQ0hPXHRcdENvcGlhIHRleHRvIGRpcmV0YW1lbnRlIG5hIHNh7WRhIGRvIGNvbnNvbGVcblwKSEVMUFx0XHRNb3N0cmEgYnJldmVzIGRldGFsaGVzIGRlIHVtIHTzcGljb1xuXApNRCAoTUtESVIpXHRDcmlhIHVtIHN1YmRpcmV083Jpb1xuXApNT1JFXHRcdERpc3BsYXkgb3V0cHV0IGluIHBhZ2VzXG5cCk1PVkVcdFx0TW92ZSB1bSBhcnF1aXZvLCBjb25qdW50byBkZSBhcnF1aXZvcyBvdSB1bWEg4XJ2b3JlIGRlIGRpcmV083Jpb3NcblwKUEFUSFx0XHRDb25maWdpcmEgbyBjYW1pbmhvIGRlIHByb2N1cmFcblwKUE9QRFx0XHRSZXN0b3JlcyB0aGUgZGlyZWN0b3J5IHRvIHRoZSBsYXN0IG9uZSBzYXZlZCB3aXRoIFBVU0hEXG5cClBST01QVFx0XHRNdWRhIG8gJ3Byb21wdCcgZGUgY29tYW5kb1xuXApQVVNIRFx0XHRDaGFuZ2VzIHRvIGEgbmV3IGRpcmVjdG9yeSwgc2F2aW5nIHRoZSBjdXJyZW50IG9uZVxuXApSRU4gKFJFTkFNRSlcdFJlbm9tZWlhIHVtIGFycXVpdm9cblwKUkQgKFJNRElSKVx0QXBhZ2EgdW0gc3ViZGlyZXTzcmlvXG5cClNFVFx0XHRDb25maWd1cmEgb3UgbW9zdHJhIHZhcmnhdmVpcyBkZSBhbWJpZW50ZVxuXApUSU1FXHRcdENvbmZpZ3VyYSBvdSBtb3N0cmEgYSBob3JhIGF0dWFsIGRvIHNpc3RlbWFcblwKVElUTEVcdFx0Q29uZmlndXJhIG8gdO10dWxvIGRhIGphbmVsYSBkZSBjb21hbmRvIENNRFxuXApUWVBFXHRcdE1vc3RyYSBvIGNvbnRl+mRvIGRlIHVtIGFycXVpdm8gdGV4dG9cblwKVkVSXHRcdE1vc3RyYSBhIHZlcnPjbyBhdHVhbCBkbyBDTURcblwKVk9MXHRcdE1vc3RyYSBvIHLzdHVsbyBkbyB2b2x1bWUgZGUgdW1hIHVuaWRhZGUgZGUgZGlzY29cblwKRVhJVFx0XHRGZWNoYSBvIENNRFxuXG5cCkVudHJlIEhFTFAgPGNvbWFuZG8+IHBhcmEgbWFpb3JlcyBpbmZvcm1h5/VlcyBzb2JyZSBhbGd1bnMgZG9zIGNvbWFuZG9zIGFjaW1hXG4iCgogIFdDTURfQ09ORklSTSwgIkFyZSB5b3Ugc3VyZSIKICBXQ01EX1lFUywgIlkiCiAgV0NNRF9OTywgIk4iCiAgV0NNRF9OT0FTU09DLCAiRmlsZSBhc3NvY2lhdGlvbiBtaXNzaW5nIGZvciBleHRlbnNpb24gJXNcbiIKICBXQ01EX05PRlRZUEUsICJObyBvcGVuIGNvbW1hbmQgYXNzb2NpYXRlZCB3aXRoIGZpbGUgdHlwZSAnJXMnXG4iCiAgV0NNRF9PVkVSV1JJVEUsICJPdmVyd3JpdGUgJXMiCiAgV0NNRF9NT1JFU1RSLCAiTW9yZS4uLiIKfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFCnsKICBXQ01EX0FUVFJJQiwgIkFqdWRhIGRvIGNvbWFuZG8gQVRUUklCXG4iCiAgV0NNRF9DQUxMLAoiQ0FMTCA8ZmljaGVpcm9fZGVfbG90ZT4g6SB1c2FkbyBkZW50cm8gZGUgdW0gZmljaGVpcm8gZGUgbG90ZSBwYXJhIGV4ZWN1dGFyIG9cblwKY29tYW5kbyBkZSBvdXRybyBmaWNoZWlybyBkZSBsb3RlLiBRdWFuZG8gbyBmaWNoZWlybyBleGlzdGUsIG8gY29udHJvbGUgcmV0b3JuYVxuXAphbyBmaWNoZWlybyBxdWUgbyBjaGFtb3UuIE8gY29tYW5kbyBDQUxMIHBvZGUgcGFzc2FyIHBhcuJtZXRyb3MgYW8gcHJvY2VkaW1lbnRvXG5cCmNoYW1hZG8uXG5cClxuXApNdWRhbudhcyBubyBkaXJlY3TzcmlvIHBhZHLjbywgdmFyaeF2ZWlzIGRlIGFtYmllbnRlLCBldGMsIGZlaXRhcyBkZW50cm9cblwKZG8gcHJvY2VkaW1lbnRlIGNoYW1hZG8gc+NvIGhlcmRhZG9zIHBlbG8gY2hhbWFkb3IuXG4iCgogIFdDTURfQ0QsICAgICAiQWp1ZGEgZG8gY29tYW5kbyBDRFxuIgogIFdDTURfQ0hESVIsICAiQWp1ZGEgZG8gY29tYW5kbyBDSERJUlxuIgoKICBXQ01EX0NMUywgICAgIkNMUyBsaW1wYSBhIGVjcuMgZGEgY29uc29sYVxuIgoKICBXQ01EX0NPUFksICAgIkFqdWRhIGRvIGNvbWFuZG8gQ09QWVxuIgogIFdDTURfQ1RUWSwgICAiQWp1ZGEgZG8gY29tYW5kbyBDVFRZXG4iCiAgV0NNRF9EQVRFLCAgICJBanVkYSBkbyBjb21hbmRvIERBVEVcbiIKICBXQ01EX0RFTCwgICAgIkFqdWRhIGRvIGNvbWFuZG8gREVMXG4iCiAgV0NNRF9ESVIsICAgICJBanVkYSBkbyBjb21hbmRvIERJUlxuIgoKICBXQ01EX0VDSE8sCiJFQ0hPIDxzdHJpbmc+IG1vc3RyYSBhIDxzdHJpbmc+IG5vIGRpc3Bvc2l0aXZvIHRlcm1pbmFsIGFjdHVhbC5cblwKXG5cCkVDSE8gT04gYWN0aXZhIGEgZXhpYmnn428gZGUgdG9kb3Mgb3MgY29tYW5kb3Mgc3Vic2VxdWVudGVzIG51bVxuXApmaWNoZWlybyBkZSBsb3RlIG5vIHRlcm1pbmFsIGFudGVzIGRlbGVzIHNlcmVtIGV4ZWN1dGFkb3MuXG5cClxuXApFQ0hPIE9GRiBkZXNhY3RpdmEgbyBlZmVpdG8gZGUgdW0gY29tYW5kbyBFQ0hPIE9OIChFQ0hPIOkgT0ZGIHBvciBwYWRy428pLlxuXApPIGNvbWFuZG8gRUNITyBPRkYgcG9kZSBzZXIgaW1wZWRpZG8gZGUgc2VyIG1vc3RyYWRvIGNvbG9jYW5kby1zZSB1bVxuXApz7W1ib2xvIEAgcHJlY2VkZW5kbyBvIG1lc21vLlxuIgoKICBXQ01EX0VSQVNFLCAgIkFqdWRhIGRvIGNvbWFuZG8gRVJBU0VcbiIKCiAgV0NNRF9GT1IsCiJPIGNvbWFuZG8gRk9SIOkgdXNhZG8gcGFyYSBleGVjdXRhciB1bSBjb21hbmRvIGEgY2FkYSB2ZXogbnVtIGNvbmp1bnRvIGRlIGZpY2hlaXJvcy5cblwKXG5cClNpbnRheGU6IEZPUiAldmFyaeF2ZWwgSU4gKGNvbmp1bnRvKSBETyBjb21hbmRvXG5cClxuXApObyBjbWQsIG7jbyBleGlzdGUgYSBuZWNlc3NpZGFkZSBkZSB1c2FyIGRvaXMgc2luYWlzICUgbm9cblwKY29tYW5kbyBGT1Igbm9zIGZpY2hlaXJvcyBkZSBsb3RlLlxuIgoKICBXQ01EX0dPVE8sCiJPIGNvbWFuZG8gR09UTyB0cmFuc2ZlcmUgYSBleGVjdefjbyBwYXJhIG91dHJhIGRlY2xhcmHn428gZGVudHJvXG5cCmRvIGZpY2hlaXJvIGRlIGxvdGUuXG5cClxuXApPIHLzdHVsbyBxdWUgc2Vy4SBvIGRlc3Rpbm8gZG8gY29tYW5kbyBHT1RPIHBvZGUgdGVyIGF06SAyNTUgY2FyYWN0ZXJlc1xuXAptYXMgbuNvIHBvZGUgY29udGVyIGVzcGHnb3MgKGRpZmVyZW50ZW1lbnRlIGRlIG91dHJvcyBzaXN0ZW1hcyBvcGVyYWNpb25haXMpLlxuXApTZSBkb2lzIG91IG1haXMgcvN0dWxvcyBmb3JlbSBpZGVudGljb3Mgbm8gZmljaGVpcm8gZGUgbG90ZSwgbyBwcmltZWlybyBkZWxlc1xuXApzZXLhIHNlbXByZSBleGVjdXRhZG8uIEEgdGVudGF0aXZhIGRlIHVzYXIgbyBHT1RPIHBhcmEgdW0gcvN0dWxvIGluZXhpc3RlbnRlXG5cCnRlcm1pbmEgYSBleGVjdefjbyBkbyBmaWNoZWlybyBkZSBsb3RlLlxuXApcblwKR09UTyBu428gdGVtIGVmZWl0byBxdWFuZG8gdXNhZG8gaW50ZXJhY3RpdmFtZW50ZS5cbiIKCiAgV0NNRF9IRUxQLCAgICJBanVkYSBkbyBjb21hbmRvIEhFTFBcbiIKCiAgV0NNRF9JRiwKIklGIOkgdXNhZG8gcGFyYSBleGVjdXRhciB1bSBjb21hbmRvIGNvbmRpY2lvbmFsbWVudGUuXG5cClxuXApTaW50YXhlOglJRiBbTk9UXSBFWElTVCBmaWNoZWlybyBjb21hbmRvXG5cCglJRiBbTk9UXSB0ZXh0bzE9PXRleHRvMiBjb21hbmRvXG5cCglJRiBbTk9UXSBFUlJPUkxFVkVMIG76bWVybyBjb21hbmRvXG5cClxuXApOYSBzZWd1bmRhIGZvcm1hIGRvIGNvbWFuZG8sIHRleHRvMSBlIHRleHRvMiBkZXZlbSBlc3RhciBhIHVzYXIgYXNwYXMuXG5cCkEgY29tcGFyYefjbyBu428gZGlmZXJlbmNpYSBtYWn6c2N1bGFzIGRlIG1pbnVzY3VsYXMuXG4iCgogIFdDTURfTEFCRUwsICAiTEFCRUwg6SB1c2FkbyBwYXJhIHJvdHVsYXIgdW0gdm9sdW1lIGRvIGRpc2NvLlxuXApcblwKU2ludGF4ZTogTEFCRUwgW2RyaXZlOl1cblwKTyBjb21hbmRvIExBQkVMIGly4SBhZ3VhcmRhciBxdWUgaW5mb3JtZSBvIG5vdm8gcvN0dWxvIHBhcmEgbyBkcml2ZVxuXAplc3BlY2lmaWNhZG8uIFBvZGUgbW9zdHJhciBvIHLzdHVsbyBkbyBkaXNjbyBjb20gbyBjb21hbmRvIFZPTC5cbiIKCiAgV0NNRF9NRCwgICAgICJBanVkYSBkbyBjb21hbmRvIE1EXG4iCiAgV0NNRF9NS0RJUiwgICJBanVkYSBkbyBjb21hbmRvIE1LRElSXG4iCiAgV0NNRF9NT1ZFLAoiTU9WRSByZWFsb2NhIHVtIGZpY2hlaXJvIG91IGRpcmVjdPNyaW8gbnVtIG5vdm8gcG9udG8gbm8gc2lzdGVtYSBkZSBmaWNoZWlyb3MuXG5cClxuXApTZSBvIGl0ZW0gYW8gc2VyIG1vdmlkbyDpIHVtIGRpcmVjdPNyaW8gZW50428gdG9kb3Mgb3MgZmljaGVpcm9zIGUgc3ViZGlyZWN083Jpb3NcblwKYWJhaXhvIGRvIGl0ZW0gc2Vy428gbW92aWRvcyBjb20gbyBtZXNtby5cblwKXG5cCk1PVkUgZmFsaGFy4SBzZSBvIGxvY2FsIGFudGlnbyBlIG8gbm92byBsb2NhbCBlc3TjbyBlbSBkaWZlcmVudGVzIHVuaWRhZGVzLlxuIgoKICBXQ01EX1BBVEgsCiJQQVRIIG1vc3RyYSBvdSBwZXJtaXRlIG11ZGFyIG8gY2FtaW5obyBkZSBwcm9jdXJhIGRlIHByb2dyYW1hcyBkbyBjbWQuXG5cClxuXApBbyBkaWdpdGFyIFBBVEggbW9zdHJhcuEgYSBhY3R1YWwgY29uZmlndXJh5+NvIGRvIGNvbWFuZG8gUEFUSCAoaW5pY2lhbG1lbnRlIGVzdGVcblwKdmFsb3Ig6SBlc3BlY2lmaWNhZG8gbm8gZmljaGVpcm8gd2luZS5jb25mKS4gUGFyYSBtdWRhciBhcyBjb25maWd1cmHn9WVzLCBkaWdpdGVcblwKbm92b3MgdmFsb3JlcyBubyBjb21hbmRvIFBBVEguXG5cClxuXApUYW1i6W0g6SBwb3Nz7XZlbCBtb2RpZmljYXIgbyBjb21hbmRvIFBBVEggdXNhbmRvIGEgdmFyaeF2ZWwgZGUgYW1iaWVudGUgUEFUSCxcblwKcG9yIGV4ZW1wbG86XG5cCgkJUEFUSCAlUEFUSCU7YzpcXHRlbXBcbiIKCiAgV0NNRF9QQVVTRSwKIlBBVVNFIG1vc3RyYSBhIHNlZ3VpbnRlIG1lbnNhZ2VtIG5vIGVjcuMgJ1ByaW1hIEVudGVyIHBhcmEgY29udGludWFyJ1xuXAplIGFndWFyZGEgcXVlIG8gdXRpbGl6YWRvciBwcmltYSBhIHRlY2xhIEVudGVyLiBJc3RvIOkg+nRpbCBwcmluY2lwYWxtZW50ZVxuXAplbSBmaWNoZWlyb3MgZGUgbG90ZSBwYXJhIHBlcm1pdGlyIGFvIHV0aWxpemFkb3IgbGVyIGEgc2HtZGEgZGUgdW0gY29tYW5kbyBhbnRlcmlvclxuXAphbnRlcyBxdWUgbyBlY3LjIHNvZnJhIHVtIHJvbGFtZW50by5cbiIKCiAgV0NNRF9QUk9NUFQsCiJQUk9NUFQgY29uZmlndXJhIG8gJ3Byb21wdCcgZGEgbGluaGEgZGUgY29tYW5kby5cblwKXG5cCk8gdGV4dG8gYSBzZWd1aXIgbyBjb21hbmRvIFBST01QVCAoZSBvcyBlc3Bh529zIGltZWRpYXRhbWVudGUgZGVwb2lzKVxuXAphcGFyZWNlbSBubyBjb21l528gZGEgbGluaGEgZW5xdWFudG8gbyBjbWQgZXN04SBhIGFndWFyZGFyIHBvciBjb21hbmRvcy5cblwKXG5cCk9zIHNlZ3VpbnRlcyBjYXJhY3RlcmVzIHRlbSB1bSBzaWduaWZpY2FkbyBlc3BlY2lhbCwgY29uZm9ybWUgbW9zdHJhZG86XG5cClxuXAokJCAgICBDaWZy428gKCQpICAgICAgICAgICRfICAgIEF2YW7nbyBkZSBsaW5oYSAgICAgJGIgICAgU+1tYm9sbyBwaXBlICh8KVxuXAokZCAgICBEYXRhIGFjdHVhbCAgICAgICAgICAkZSAgICBD82RpZ28gZGUgZXNjYXBlICAgICRnICAgIFNpbmFsIGRlIG1haW9yICg+KVxuXAokbCAgICBTaW5hbCBkZSBtZW5vciAoPCkgICRuICAgIFVuaWRhZGUgYWN0dWFsICAgICAgICRwICAgIENhbWluaG8gYWN0dWFsXG5cCiRxICAgIFNpbmFsIGRlIGlndWFsICg9KSAgJHQgICAgSG9yYSBhY3R1YWwgICAgICAgICAgJHYgICAgVmVyc+NvIGRvIGNtZFxuXApcblwKTm90ZSBxdWUgYW8gZGlnaXRhciBvIGNvbWFuZG8gUFJPTVBUIHNlbSBwYXLibWV0cm9zIHJlY29uZmlndXJhIG8gcGFkcuNvLFxuXApxdWUg6SBhIGxldHJhIGRhIHVuaWRhZGUgYWN0dWFsIHNlZ3VpZGEgcGVsbyBkaXJlY3TzcmlvIGUgdW0gc2luYWwgZGUgbWFpb3JcblwKKGVxdWl2YWxlbnRlIGEgdW0gY29tYW5kbyBQUk9NUFQgJHAkZykuXG5cClxuXApPICdwcm9tcHQnIHRhbWLpbSBwb2RlIHNlciBtdWRhZG8gYWx0ZXJhbmRvIGEgdmFyaeF2ZWwgUFJPTVBULCBhc3NpbSxcblwKbyBjb21hbmRvICdTRVQgUFJPTVBUPXRleHRvJyB0ZW0gbyBtZXNtbyBlZmVpdG8gcXVlICdQUk9NUFQgdGV4dG8nXG4iCgogIFdDTURfUkVNLAoiVW1hIGxpbmhhIGRlIGNvbWFuZG8gYSBpbmljaWFyIGNvbSBSRU0gKHNlZ3VpZG8gZGUgdW0gZXNwYedvKSBu428gZmF6XG5cCm5lbmh1bWEgYWPn428sIGUgb3MgY2FyYXRlcmVzIGEgdXNhciBz428gY29uc2lkZXJhZG9zIGNvbWVudOFyaW9zIG51bVxuXApmaWNoZWlybyBkZSBsb3RlXG4iCgogIFdDTURfUkVOLCAgICAiQWp1ZGEgZG8gY29tYW5kbyBSRU5cbiIKICBXQ01EX1JFTkFNRSwgIkFqdWRhIGRvIGNvbWFuZG8gUkVOQU1FXG4iCiAgV0NNRF9SRCwgICAgICJBanVkYSBkbyBjb21hbmRvIFJEXG4iCiAgV0NNRF9STURJUiwgICJBanVkYSBkbyBjb21hbmRvIFJNRElSXG4iCgogIFdDTURfU0VULAoiU0VUIG1vc3RyYSBvdSBtdWRhIGFzIHZhcuF2ZWwgZGUgYW1iaWVudGUgZGUgY21kLlxuXApcblwKU0VUIHNlbSBwYXLqbXRyb3MgbW9zdHJhIHRvZGFzIGFzIHZhcuF2ZWwgZGUgYW1iaWVudGUgYWN0dWFpc1xuXApcblwKUGFyYSBjcmlhciBvdSBtb2RpZmljYXIgdmFyaeF2ZWwgZGUgYW1iaWVudGUsIGEgc2ludGF4ZSDpOlxuXApcblwKICAgICAgU0VUIDx2YXJp4XZlbD49PHZhbG9yPlxuXApcblwKc2VuZG8gcXVlIDx2YXJp4XZlbD4gZSA8dmFsb3I+IHPjbyB0ZXh0b3MuIE7jbyBkZXZlbSBleGlzdGlyIGVzcGHnb3NcblwKYW50ZXMgZG8gc2luYWwgZGUgaWd1YWxkYWRlLCBuZW0gYSB2YXLhdmVsIHBvZGUgY29udGVyIGVzcGHnb3MuXG5cClxuXApObyBXaW5lLCBvIGFtYmllbnRlIGRvIHNpc3RlbWEgb3BlcmFjaW9uYWwg6SBpbmNsdWlkbyBubyBhbWJpZW50ZSBXaW4zMixcblwKb25kZSBzZW1wcmUgaGF2ZXLhIG1haXMgdmFsb3JlcyBxdWUgbnVtIHNpc3RlbWEgV2luMzIgbmF0aXZvLiBOb3RlIHF1ZVxuXApu428g6SBwb3Nz7XZlbCBhZmVjdGFyIG8gYW1iaWVudGUgZG8gc2lzdGVtYSBvcGVyYWNpb25hbCBhIHBhcnRpciBkbyBjbWQuXG4iCgogIFdDTURfU0hJRlQsCiJTSElGVCDpIHVzYWRvIGVtIGZpY2hlaXJvcyBkZSBsb3RlIHBhcmEgcmVtb3ZlciB1bSBwYXLibWV0cm8gcXVlIGluaWNpYSBhXG5cCmxpc3RhLCBhc3NpbSBlbnTjbyBvIHBhcuJtZW50cm8yIHNvYnJlcPRlIG8gcGFyYW1ldHJvMSBlIGFzc2ltIHBvciBkaWFudGUuXG5cCklzdG8gbuNvIHRlbSBlZmVpdG8gc2UgY2hhbWFkbyBhIHBhcnRpciBkYSBsaW5oYSBkZSBjb21hbmRvLlxuIgoKICBXQ01EX1RJTUUsICAgIkFqdWRhIGRvIGNvbWFuZG8gVElNRVxuIgoKICBXQ01EX1RJVExFLCAgIkNvbmZpZ3VyYSBvIHTtdHVsbyBkYSBqYW5lbGEgZG8gY21kLCBlIGEgc2ludGF4ZSDpIFRJVExFIFt0ZXh0b11cbiIKCiAgV0NNRF9UWVBFLAoiVFlQRSA8ZmljaGVpcm8+IGNvcGlhIDxmaWNoZWlybz4gcGFyYSBvIGRpc3Bvc2l0aXZvIGNvbnNvbGEgKG91IG91dHJvLCBzZVxuXApyZWRpcmVjY2lvbmFkbykuIE5laHVtYSB2ZXJpZmljYefjbyDpIGZlaXRhIHNlIG8gZmljaGVpcm8gcG9kZSBzZXIgbGlkby5cbiIKCiAgV0NNRF9WRVJJRlksCiJWRVJJRlkg6SB1c2FkbyBwYXJhIGNvbmZpZ3VyYXIsIGxpbXBhciBlIHRlc3RhciBvICdmbGFnJyBkZSB2ZXJpZmljYefjby4gQXNcblwKZm9ybWFzIHbhbGlkYXMgc+NvPlxuXApcblwKVkVSSUZZIE9OCUNvbmZpZ3VyYSBvIGZsYWdcblwKVkVSSUZZIE9GRglMaW1wYSBvIGZsYWdcblwKVkVSSUZZCQlNb3N0cmEgT04gb3UgT0ZGIHFkbyBhcHJvcHJpYWRvLlxuXApcblwKTyBmbGFnIGRlIHZlcmlmaWNh5+NvIG7jbyB0ZW0gZnVu5+NvIG5vIFdpbmUuXG4iCgogIFdDTURfVkVSLAoiVkVSIG1vc3RyYSBhIHZlcnPjbyBlbSBleGVjdefjbyBkbyBjbWQuXG4iCgogIFdDTURfVk9MLCAgICAiQWp1ZGEgZG8gY29tYW5kbyBWT0xcbiIKCiAgV0NNRF9QVVNIRCwgICJQVVNIRCA8ZGlyZWN0b3J5bmFtZT4gc2F2ZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG9udG8gYVxuXApzdGFjaywgYW5kIHRoZW4gY2hhbmdlcyB0aGUgY3VycmVudCBkaXJlY3RvcnkgdG8gdGhlIHN1cHBsaWVkIG9uZS5cbiIKCiAgV0NNRF9QT1BELCAgICJQT1BEIGNoYW5nZXMgY3VycmVudCBkaXJlY3RvcnkgdG8gdGhlIGxhc3Qgb25lIHNhdmVkIHdpdGhcblwKUFVTSEQuXG4iCgogIFdDTURfTU9SRSwgICAiTU9SRSBkaXNwbGF5cyBvdXRwdXQgb2YgZmlsZXMgb3IgcGlwZWQgaW5wdXQgaW4gcGFnZXMuXG4iCgogIFdDTURfRVhJVCwKIkVYSVQgdGVybWluYSBhIHNlc3PjbyBkZSBjb21hbmRvIGFjdHVhbCBlIHJldG9ybmEgYW8gc2lzdGVtYSBvcGVyYWNpb25hbFxuXApvdSBzaGVsbCBxdWUgdGVuaGEgaW52b2NhZG8gbyBjbWQuXG4iCgogIFdDTURfQUxMSEVMUCwgIkNNRCAtIG9zIGNvbWFuZG8gaW50ZXJub3Mgc+NvOlxuXApBVFRSSUJcdFx0TW9zdHJhIG91IHRyb2NhIGF0cmlidXRvcyBkbyBmaWNoZWlybyBET1NcblwKQ0FMTFx0XHRJbnZvY2EgdW0gZmljaGVpcm8gZGUgbG90ZSBkZW50cm8gZGUgb3V0cm9cblwKQ0QgKENIRElSKVx0TXVkYSBvIGRpcmVjdPNyaW8gcGFkcuNvIGFjdHVhbFxuXApDTFNcdFx0TGltcGEgbyBlY3LjIGRhIGNvbnNvbGFcblwKQ09QWVx0XHRDb3BpYSBmaWNoZWlyb3NcblwKQ1RUWVx0XHRNdWRhIG8gZGlzcG9zaXRpdm8gZGUgZW50cmFkYS9zYe1kYVxuXApEQVRFXHRcdE1vc3RyYSBvdSBtdWRhIGEgZGF0YSBkbyBzaXN0ZW1hXG5cCkRFTCAoRVJBU0UpXHRBcGFnYSB1bSBmaWNoZWlybyBvdSBjb25qdW50byBkZSBmaWNoZWlyb3NcblwKRElSXHRcdE1vc3RyYSBvIGNvbnRl+mRvIGRlIHVtIGRpcmVjdPNyaW9cblwKRUNIT1x0XHRDb3BpYSBvIHRleHRvIGRpcmV0YW1lbnRlIG5hIHNh7WRhIGRhIGNvbnNvbGFcblwKSEVMUFx0XHRNb3N0cmEgYnJldmVzIGRldGFsaGVzIGRlIHVtIHTzcGljb1xuXApNRCAoTUtESVIpXHRDcmlhIHVtIHN1YmRpcmVjdPNyaW9cblwKTU9SRVx0XHREaXNwbGF5IG91dHB1dCBpbiBwYWdlc1xuXApNT1ZFXHRcdE1vdmUgdW0gZmljaGVpcm8sIGNvbmp1bnRvIGRlIGZpY2hlaXJvcyBvdSB1bWEg4XJ2b3JlIGRlIGRpcmVjdPNyaW9zXG5cClBBVEhcdFx0Q29uZmlndXJhIG8gY2FtaW5obyBkZSBwcm9jdXJhXG5cClBPUERcdFx0UmVzdG9yZXMgdGhlIGRpcmVjdG9yeSB0byB0aGUgbGFzdCBvbmUgc2F2ZWQgd2l0aCBQVVNIRFxuXApQUk9NUFRcdFx0TXVkYSBhICdwcm9tcHQnIGRlIGNvbWFuZG9cblwKUFVTSERcdFx0Q2hhbmdlcyB0byBhIG5ldyBkaXJlY3RvcnksIHNhdmluZyB0aGUgY3VycmVudCBvbmVcblwKUkVOIChSRU5BTUUpXHRSZW5vbWVpYSB1bSBmaWNoZWlyb1xuXApSRCAoUk1ESVIpXHRBcGFnYSB1bSBzdWJkaXJlY3TzcmlvXG5cClNFVFx0XHRDb25maWd1cmEgb3UgbW9zdHJhIHZhcmnhdmVpcyBkZSBhbWJpZW50ZVxuXApUSU1FXHRcdENvbmZpZ3VyYSBvdSBtb3N0cmEgYSBob3JhIGF0dWFsIGRvIHNpc3RlbWFcblwKVElUTEVcdFx0Q29uZmlndXJhIG8gdO10dWxvIGRhIGphbmVsYSBkZSBjb21hbmRvIENNRFxuXApUWVBFXHRcdE1vc3RyYSBvIGNvbnRl+mRvIGRlIHVtIGZpY2hlaXJvIHRleHRvXG5cClZFUlx0XHRNb3N0cmEgYSB2ZXJz428gYXR1YWwgZG8gQ01EXG5cClZPTFx0XHRNb3N0cmEgbyBy83R1bG8gZG8gdm9sdW1lIGRlIHVtYSB1bmlkYWRlIGRlIGRpc2NvXG5cCkVYSVRcdFx0RmVjaGEgbyBDTURcblxuXApEaWdpdGUgSEVMUCA8Y29tYW5kbz4gcGFyYSBtYWlzIGluZm9ybWHn9WVzIHNvYnJlIGFsZ3VucyBkb3MgY29tYW5kb3MgYWNpbWFcbiIKCiAgV0NNRF9DT05GSVJNLCAiQXJlIHlvdSBzdXJlIgogIFdDTURfWUVTLCAiWSIKICBXQ01EX05PLCAiTiIKICBXQ01EX05PQVNTT0MsICJGaWxlIGFzc29jaWF0aW9uIG1pc3NpbmcgZm9yIGV4dGVuc2lvbiAlc1xuIgogIFdDTURfTk9GVFlQRSwgIk5vIG9wZW4gY29tbWFuZCBhc3NvY2lhdGVkIHdpdGggZmlsZSB0eXBlICclcydcbiIKICBXQ01EX09WRVJXUklURSwgIk92ZXJ3cml0ZSAlcyIKICBXQ01EX01PUkVTVFIsICJNb3JlLi4uIgogIFdDTURfVFJVTkNBVEVETElORSwgIkxpbmUgaW4gQmF0Y2ggcHJvY2Vzc2luZyBwb3NzaWJseSB0cnVuY2F0ZWQuIFVzaW5nOlxuIgogIFdDTURfTllJLCAiTm90IFlldCBJbXBsZW1lbnRlZFxuXG4iCiAgV0NNRF9OT0FSRywgIkFyZ3VtZW50IG1pc3NpbmdcbiIKICBXQ01EX1NZTlRBWEVSUiwgIlN5bnRheCBlcnJvclxuIgogIFdDTURfRklMRU5PVEZPVU5ELCAiJXMgOiBGaWxlIE5vdCBGb3VuZFxuIgogIFdDTURfTk9DTURIRUxQLCAiTm8gaGVscCBhdmFpbGFibGUgZm9yICVzXG4iCiAgV0NNRF9OT1RBUkdFVCwgIlRhcmdldCB0byBHT1RPIG5vdCBmb3VuZFxuIgogIFdDTURfQ1VSUkVOVERBVEUsICJDdXJyZW50IERhdGUgaXMgJXNcbiIKICBXQ01EX0NVUlJFTlRUSU1FLCAiQ3VycmVudCBUaW1lIGlzICVzXG4iCiAgV0NNRF9ORVdEQVRFLCAiRW50ZXIgbmV3IGRhdGU6ICIKICBXQ01EX05FV1RJTUUsICJFbnRlciBuZXcgdGltZTogIgogIFdDTURfTUlTU0lOR0VOViwgIkVudmlyb25tZW50IHZhcmlhYmxlICVzIG5vdCBkZWZpbmVkXG4iCiAgV0NNRF9SRUFERkFJTCwgIkZhaWxlZCB0byBvcGVuICclcydcbiIKICBXQ01EX0NBTExJTlNDUklQVCwgIkNhbm5vdCBjYWxsIGJhdGNoIGxhYmVsIG91dHNpZGUgb2YgYSBiYXRjaCBzY3JpcHRcbiIKICBXQ01EX0FMTCwgIkEiCiAgV0NNRF9ERUxQUk9NUFQsICIlcywgRGVsZXRlIgogIFdDTURfRUNIT1BST01QVCwgIkVjaG8gaXMgJXNcbiIKICBXQ01EX1ZFUklGWVBST01QVCwgIlZlcmlmeSBpcyAlc1xuIgogIFdDTURfVkVSSUZZRVJSLCAiVmVyaWZ5IG11c3QgYmUgT04gb3IgT0ZGXG4iOwogIFdDTURfQVJHRVJSLCAiUGFyYW1ldGVyIGVycm9yXG4iCiAgV0NNRF9WT0xVTUVERVRBSUwsICJWb2x1bWUgaW4gZHJpdmUgJWMgaXMgJXNcblZvbHVtZSBTZXJpYWwgTnVtYmVyIGlzICUwNHgtJTA0eFxuXG4iCiAgV0NNRF9WT0xVTUVQUk9NUFQsICJWb2x1bWUgbGFiZWwgKDExIGNoYXJhY3RlcnMsIEVOVEVSIGZvciBub25lKT8iCiAgV0NNRF9OT1BBVEgsICJQQVRIIG5vdCBmb3VuZFxuIgogIFdDTURfQU5ZS0VZLCJQcmVzcyBSZXR1cm4ga2V5IHRvIGNvbnRpbnVlOiAiCiAgV0NNRF9DT05TVElUTEUsIldpbmUgQ29tbWFuZCBQcm9tcHQiCiAgV0NNRF9WRVJTSU9OLCJDTUQgVmVyc2lvbiAlc1xuXG4iCiAgV0NNRF9NT1JFUFJPTVBULCAiTW9yZT8gIgp9Cg==