LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDQgSGFqaW1lIFNlZ2F3YQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0pBUEFORVNFLCBTVUJMQU5HX0RFRkFVTFQKCi8qCiAqIE1lbnUKICovCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICKDjINXg1iDZ4OKKCZSKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIoOMg1eDWINng4qCzINDg5ODfIFbg2coJkkpLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIoOMg1eDWINng4qCzINHg06DWIN8gVuDZygmRSkuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAig2yDYoNng4+BW4NOg4yDV4NYg2eDioLJkNqRsSgmQykuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAig2yDYoNng4+BW4NOg4yDV4NYg2eDioKpgueQ2JJmKCZEKS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKI8438KCZQKVx0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAij0mXuSgmeCkiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAildKPVygmRSkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICKVz41YKCZNKSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAikFaLSygmTikiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIoNMgVsoJkspIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICKVto6al/EoJlMpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAig2+DQ4Npg4ooJkIpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiRFdPUkSSbCgmRCkiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImTXVsdGkgU3RyaW5nIFZhbHVlIiwgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKN7Y+cKCZEKVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAilryRT4LMlc+NWCgmUilcdEYyIiwgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIoNMgVuWvILwg1KDc4FbKCZDKSIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIoyfjfUoJkYpXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIo6fgsyMn431jPOV4igmeClcdEYzIiwgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAilVxcjqYoJlYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAig1iDZYFbg16DWINvgVsoJkIpIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIpWqioQoJmwpIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKDioN0g4yDYoNWg4UoJlIpXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAigqiLQ4LJk/yC6CgmRikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICKCqItDgsmT/ILogsmSx4nBKCZBKS4uLiIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICKCqItDgsmT/ILogqmC543tj5woJlIpLi4uIiwgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAig3eDi4N2KCZIKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIoN3g4uDdigmSClcdEYxIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAig2+BW4NXg4eDk4/ulfEoJkEpIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICKVz41YKCZNKSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICKDb4NDg2mDioNmgVuDXoLwlc+NWCIsICAgICAgICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAije2PnCgmRClcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAilryRT4LMlc+NWCgmUikiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICKQVotLKCZOKSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAig0yBWygmSykiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIpW2jpqX8SgmUykiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICKDb4NDg2mDiigmQikiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJEV09SRJJsKCZEKSIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNdWx0aSBTdHJpbmcgVmFsdWUiLCAgICAgICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIo3tj5woJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICKWvJFPgsyVz41YKCZSKVx0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydCAuLi4iLCAgICAgICAgICAgICAgIElEX0VESVRfRVhQT1JUCiAgICAgICAgTUVOVUlURU0gIoNMgVuWvILwg1KDc4FbKCZDKSIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIoyfjfUoJkYpXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAilbaOmpfxgsyV0o9XIgpGT05UIDksICJNUyBVSSBHb3RoaWMiCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIpJsgsyWvJFPOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAig2aBW4NeOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAig0yDg4OTg1qDiyIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJEV09SRJJsgsyV0o9XIgpGT05UIDksICJNUyBVSSBHb3RoaWMiCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIpJsgsyWvJFPOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAig2aBW4NeOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIoN4gVuDWCIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIjE2kGmQlCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICIxMJBpkJQiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIoNMg4ODk4Nag4siLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAilryRTyIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICKDXoNDg3YiCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAig2aBW4NeIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAig4yDV4NYg2eDioNHg2aDQoNeIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAig4yDV4NYg2eDipFTkcyC8JGAjeyCt4Lpg1KDfYOTg2giCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAikmyCxoNMgVuC8JXSj1eCt4Lpg1KDfYOTg2giCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAig4yDV4NYg2eDioNFg0KDk4Nog0WC8INKg1iDXoN9g0ODWYK3gumDUoN9g5ODaCIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICKC5oKtjmeCpINMgVuCyYNBg06DWoNYgreC6YNSg32Dk4NoIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIoOMg1eDWINng4qDR4Nmg0KDXoLJgsKCooLEgsyDd4OLg3aC4o/ulfGC8JVcjqaCt4Lpg1KDfYOTg2giCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAikFaCtYKig0yBW4LikmyC8I3skKyCt4Lpg1KDfYOTg2giCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICKSbILMg2aBW4NegvCVz41YIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIpBWgrWCooNMgVuC8JLHicEiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAikFaCtYKilbaOmpfxgvCSx4nBIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIpBWgrWCooNvg0ODaYOKgvCSx4nBIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIpBWgrWCokRXT1JEkmyC8JLHicEiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIoNlg0yDWINng3SDQINDg4uC8IOMg1eDWINng4qCyYNDg5ODfIFbg2ciCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICKDjINXg1iDZ4OKgsyI6pWUgtyCvYLNkVOVlILwg2WDTINYg2eDdINAg0ODi4LJg0eDToNYg3yBW4NnIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIoOKg4KBW4Nng1KDk4Nzg4WBW4NegsyDjINXg1iDZ4OKgsmQ2pGxIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIoOKg4KBW4Nng1KDk4Nzg4WBW4NegsyDjINXg1iDZ4OKgqmC55DYkmYiCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAig4yDV4NYg2eDioLMiOqVlILcgr2CzZFTlZSC8IjzjfwiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICKDjINXg1iDZ4OKg0eDZoNCg16CzIN3g4uDdoLwikqCrSIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICKDdoONg0+DiYOAgsyP7pXxgUGDb4Fbg1eDh4OTgUGSmI3sjtKC8JVcjqYiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICKDjINXg1iDZ4OKg0eDZoNCg16C8I9Jl7kiCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIoNMgVuC8IKoi0OCyZP8guiCyZLHicEiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIoNMgVuC8IKoi0OCyZP8guiCqYLnje2PnCIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICKDWINlgVuDXoNYg2+BW4LwlVyOpoFFiUKCtyIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICKDeYNDg5OK1ILMgrWCq4LogsyIypJ1gvCVz41YIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIoNFg0KDk4Nog0WC8IOKg3SDjINig1aDhSIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICKRSZHwgrWCvY2AltqC8I3tj5wiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAikUmR8IK1gr2NgJbagsyWvJFPgvCVz41YIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIpFJkfCCtYK9g0yBW4LMlryRT4Lwg06DioNig3aDe4Fbg2iCyYNSg3OBWyIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICKDTIFbgUGSbIFBg2aBW4NegqmC55W2jpqX8YLwjJ+N9SIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICKIyJFPgsyMn431j/CMj4LJgqiCooLEjp+CzIzzleKC8IyfjfUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICKDR4OJgVsiCiAgICBJRFNfQkFEX0tFWQkJICAgICKDTIFbICclcyeCqo+Kk76CxYKrgtyCuYLxIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIpJsICclcyeCqo+Kk76CxYKrgtyCuYLxIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIoKxgsyDXoNDg3aCzINMgVuCzZXSj1eCxYKrgtyCuYLxICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIpJsgqqR5YKrgreCrILcgrcgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAikmyCzI3tj5yKbZRGIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIpZ7k5aCySAnJXMngvCN7Y+cgrWC3IK3gqk/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIpBWgrWCooNMgVsgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIpBWgrWCopJsICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJTZWFyY2ggc3RyaW5nICclcycgbm90IGZvdW5kIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAig4yDV4NYg2eDioNHg2aDQoNegsyDd4OLg3aC8IpKgq0iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICKDdoONg0+DiYOAgsyP7pXxgUGDb4Fbg1eDh4OTgUGSmI3sjtKC8JVcjqYiCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=