LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMy0yMDA0IEl2YW4gTGVvIFB1b3RpCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfSVRBTElBTiwgU1VCTEFOR19ERUZBVUxUCgovKgogKiBNZW51CiAqLwoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZGaWxlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiRSZzY2kiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkFpdXRvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkluZm9ybWF6aW9uaSBzdWxsJ2VkaXRvciBkZWwgUmVnaXN0cm8iLCAgICAgICAgICAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RybyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRhLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIiZFc3BvcnRhLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb25uZXR0aSBhIFJlZ2lzdHJvIGluIHJldGUuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkRpc2Nvbm50dGkgZGEgUmVnaXN0cm8gZGkgcmV0ZS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3RhbXBhXHRDdHJsK1AiLCAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFJnNjaSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImTW9kaWZpY2EiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImTW9kaWZpY2EiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOdW92byIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiQ2hpYXZlIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImVmFsb3JlIHN0cmluZ2EiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImVmFsb3JlIGJpbmFyaW8iLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImVmFsb3JlIERXT1JEIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRWxpbWluYVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJpbm9taW5hXHRGMiIgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYSBub21lIGNoaWF2ZSIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZUcm92YVx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImVHJvdmEgU3VjY2Vzc2l2b1x0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImVmlzdWFsaXp6YSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkJhcnJhIGRpICZTdGF0byIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJEaSZ2aWRpIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQWdnaW9ybmFcdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImUHJlZmVyaXRpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFnZ2l1bmdpIGFpIFByZWZlcml0aSIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgICwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZSaW11b3ZpIGRhaSBQcmVmZXJpdGkiLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICAgICAgLCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZBaXV0byIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTb21tYXJpbyBkZWxsYSBHdWlkYSIsICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5mb3JtYXppb25pIHN1bGwnZWRpdG9yIGRlbCBSZWdpc3RybyIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJk1vZGlmaWNhIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIk1vZGlmaWNhIGRhdGkgYmluYXJpIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImRWxpbWluYVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImUmlub21pbmEiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTnVvdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGlhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgc3RyaW5nYSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgYmluYXJpbyIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgRFdPUkQiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFbGltaW5hXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmlub21pbmFcdEYyIiAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhIG5vbWUgY2hpYXZlIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRyb3ZhXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJJbmZvcm1hemlvbmkgc3VsbCdlZGl0b3IgZGVsIFJlZ2lzdHJvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBJQ09OICAgICAgICAgICAgSURJX1JFR0VESVQsSURJX1JFR0VESVQsMTQsOSwxNiwxNgogICAgTFRFWFQgICAgICAgICAgICJSZWFjdE9TIEVkaXRvciBkZWwgUmVnaXN0cm8gVmVyc2lvbmUgMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBSZWFjdE9TIFRlYW0iLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhIFN0cmluZ2EiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tZSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhdGEgZGVsIHZhbG9yZToiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsbGEiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGEgU3RyaW5nYSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb21lIGRlbCB2YWxvcmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGF0ZSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhc2UiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJFc2FkZWNpbWFsZSIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbWFsZSIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxsYSIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOb21lIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlRpcG8iCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAiRGF0aSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIkVkaXRvciBkZWwgUmVnaXN0cm8iCiAgICBJRENfUkVHRURJVCAgICAgICAgICAgICAiUkVHRURJVCIKICAgIElEQ19SRUdFRElUX0ZSQU1FICAgICAgICJSRUdFRElUX0ZSQU1FIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciBsYXZvcmFyZSBzdSB0dXR0byBpbCBSZWdpc3RybyIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIGVkaXRhcmUgdmFsb3JpIG8gY2hpYXZpIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgcGVyc29uYWxpenphcmUgbGEgZmluZXN0cmEgZGVsIFJlZ2lzdHJvIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgYWNjZWRlcmUgYWxsZSBjaGlhdmkgdXNhdGUgZnJlcXVlbnRlbWVudGUiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciB2aXN1YWxpenphcmUgbGEgR3VpZGEgZSBpbmZvcm1hemlvbmkgc3VsbCdlZGl0b3IgZGVsIFJlZ2lzdHJvIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgY3JlYXJlIG51b3ZlIGNoaWF2aSBvIHZhbG9yaSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk1vZGlmaWNhIGkgZGF0aSBkZWwgdmFsb3JlIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkFnZ2l1bmdlIHVuYSBudW92YSBjaGlhdmUiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiQWdnaXVuZ2UgdW4gbnVvdm8gdmFsb3JlIHN0cmluZ2EiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiQWdnaXVuZ2UgdW4gbnVvdm8gdmFsb3JlIGJpbmFyaW8iCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiQWdnaXVuZ2UgdW4gbnVvdm8gdmFsb3JlIGEgZG9wcGlhIHBhcm9sYSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0YSB1biBmaWxlIGRpIHRlc3RvIG5lbCBSZWdpc3RybyIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVzcG9ydGEgdHV0dG8gbyBwYXJ0ZSBkZWwgUmVnaXN0cm8gaW4gdW4gZmlsZSBkaSB0ZXN0byIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaSBjb25uZXR0ZSBhbCBSZWdpc3RybyBkaSB1biBjb21wdXRlciByZW1vdG8iCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2kgZGlzY29ubmV0dGUgZGFsIFJlZ2lzdHJvIGRpIHVuIGNvbXB1dGVyIHJlbW90byIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJTdGFtcGEgdHV0dG8gbyBwYXJ0ZSBkZWwgUmVnaXN0cm8iCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJBcHJlIGwnYWl1dG8gZGVsbCdFZGl0b3IgZGVsIFJlZ2lzdHJvIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc3VhbGl6emEgaW5mb3JtYXppb25pIHN1bCBwcm9ncmFtbWEsIG51bWVybyBkaSB2ZXJzaW9uZSBlIGNvcHlyaWdodCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkVzY2UgZGFsbCdlZGl0b3IgZGVsIFJlZ2lzdHJvIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJBZ2dpdW5nZSB1bmEgY2hpYXZlIGFsbGEgbGlzdGEgZGVpIFByZWZlcml0aSIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiUmltdW92ZSB1bmEgbyBwafkgY2hpYXZpIGRhbGxhIGxpc3RhIGRlaSBwcmVmZXJpdGkiCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiTW9zdHJhIG8gbmFzY29uZGUgbGEgYmFycmEgZGkgc3RhdG8iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiQ2FtYmlhIGxhIHBvc2l6aW9uZSBkZWwgc2VwYXJhdG9yZSB0cmEgZHVlIHBhbm5lbGxpIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIkFnZ2lvcm5hIGxhIGZpbmVzdHJhIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkVsaW1pbmEgbGEgc2VsZXppb25lIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIlJpbm9taW5hIGxhIHNlbGV6aW9uZSIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJDb3BpYSBpbCBub21lIGRlbGxhIGNoaWF2ZSBzZWxlemlvbmF0YSBuZWdsaSBhcHB1bnRpIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIlRyb3ZhIHVuYSBzdHJpbmdhIGRpIHRlc3RvIGluIHVuYSBjaGlhdmUsIHVuIHZhbG9yZSBvIGluIGRlaSBkYXRpIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIlRyb3ZhIGxhIHZvbHRhIHN1Y2Nlc3NpdmEgaWwgdGVzdG8gc3BlY2lmaWNhdG8gbmVsbGEgcmljZXJjYSBwcmVjZWRlbnRlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiRXJyb3JlIgogICAgSURTX0JBRF9LRVkJCSAgICAiSW1wb3NzaWJpbGUgdHJvdmFyZSBsYSBjaGlhdmUgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJJbXBvc3NpYmlsZSB0cm92YXJlIGlsIHZhbG9yZSAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIkltcG9zc2liaWxlIGVkaXRhcmUgdmFsb3JpIGRpIHF1ZXN0byB0aXBvICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIlZhbG9yZSB0cm9wcG8gZ3JhbmRlICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkNvbmZlcm1hcmUgQ2FuY2VsbGF6aW9uZSBkZWwgVmFsb3JlIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIlNlaSBzaWN1cm8gZGkgdm9sZXIgY2FuY2VsbGFyZSBpbCB2YWxvcmUgJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTnVvdmEgQ2hpYXZlICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOdW92byBWYWxvcmUgIyVkIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKgogKiBEaWFsb2cKICovCgpJRERfRElBTE9HMSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjY4LCA5OApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkVORAoKSUREX0RJQUxPRzIgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAxODcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRpYWxvZ28iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTMwLDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxsYSIsSURDQU5DRUwsMTMwLDI0LDUwLDE0CkVORAoKCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiQXByZSBsJ2FpdXRvIGRlbGwnZWRpdG9yIGRlbCBSZWdpc3Ryby4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJWaXN1YWxpenphIGluZm9ybWF6aW9uaSBzdWwgcHJvZ3JhbW1hLCBpbCBudW1lcm8gZGkgdmVyc2lvbmUgZSBpbCBjb3B5cmlnaHQuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K