LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTZXJiaWFuIChDeXJpbGxpYykKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUxKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19TRVJCSUFOLCBTVUJMQU5HX1NFUkJJQU5fQ1lSSUxMSUMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMjAzXHg4MDAwXHgzODQ4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA0XHgwMDAwXHgwMDAwXHgwMDAyXHgwMDA0XHgwMDAwXHgwMDAwXHgwMjAyIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjM4MSIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTEiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1NSIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzODEiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIxMDI1IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwYzFhIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjBjMWEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIwIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJTUEIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAi7+7tIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIvPy7iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLx8OUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi9+XyIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIu/l8iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLx8+EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAi7eXkIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlNSQiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIrzg7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIvTl4SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIuzg8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIuDv8CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIuzgvCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIrzz7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIrzz6yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIuDi4yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIvHl7yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLu6vIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAi7e7iIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIuTl9iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJTZXJiaWEiCiAgTE9DQUxFX1NDVVJSRU5DWSAixOjtLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAi7+7t5eTlmuDqIgogIExPQ0FMRV9TREFZTkFNRTIgIvPy7vDg6iIKICBMT0NBTEVfU0RBWU5BTUUzICLx8OXk4CIKICBMT0NBTEVfU0RBWU5BTUU0ICL35fLi8PLg6iIKICBMT0NBTEVfU0RBWU5BTUU1ICLv5fLg6iIKICBMT0NBTEVfU0RBWU5BTUU2ICLx8+Hu8uAiCiAgTE9DQUxFX1NEQVlOQU1FNyAi7eXk5ZrgIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlNlcmJpYSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJZdWdvc2xhdmlhbiBEaW5hciIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJTZXJiaWFuIChDeXJpbGxpYykiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiWVVOIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJTUCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJzciIKICBMT0NBTEVfU0xBTkdVQUdFICJTZXJiaWFuIChDeXJpbGxpYykiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQuIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAivODt8+DwIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi9OXh8PPg8CIKICBMT0NBTEVfU01PTlRITkFNRTMgIuzg8PIiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLg7/Do6yIKICBMT0NBTEVfU01PTlRITkFNRTUgIuzgvCIKICBMT0NBTEVfU01PTlRITkFNRTYgIrzz7SIKICBMT0NBTEVfU01PTlRITkFNRTcgIrzz6yIKICBMT0NBTEVfU01PTlRITkFNRTggIuDi4/Px8iIKICBMT0NBTEVfU01PTlRITkFNRTkgIvHl7/Ll7OHg8CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLu6vLu4eDwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIu3u4uXs4eDwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIuTl9uXs4eDwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIuIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIqPz4+7x6+Di6LzgIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIuTo7eDwIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIvHw7/Hq6CIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkLk0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==