LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBQb2xpc2gKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUwKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19QT0xJU0gsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMjdceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDA0MDBceDAwMTJceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiNDgiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIyIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUwIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTIiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNDgiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDE1IgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyOSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkyIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMiIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MTUiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIlBPTCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJQbiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJXdCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICKcciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJDeiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJQdCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJTbyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJOIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlBMSyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgInN0eSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImx1dCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImt3aSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1haiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImN6ZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImxpcCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggInNpZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIndyeiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJwYZ8iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibGlzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImdydSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJQb2xhbmQiCiAgTE9DQUxFX1NDVVJSRU5DWSAierMiCiAgTE9DQUxFX1NEQVRFICItIgogIExPQ0FMRV9TREFZTkFNRTEgInBvbmllZHppYbNlayIKICBMT0NBTEVfU0RBWU5BTUUyICJ3dG9yZWsiCiAgTE9DQUxFX1NEQVlOQU1FMyAinHJvZGEiCiAgTE9DQUxFX1NEQVlOQU1FNCAiY3p3YXJ0ZWsiCiAgTE9DQUxFX1NEQVlOQU1FNSAicGm5dGVrIgogIExPQ0FMRV9TREFZTkFNRTYgInNvYm90YSIKICBMT0NBTEVfU0RBWU5BTUU3ICJuaWVkemllbGEiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiUG9sYW5kIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlBvbGlzaCBabG90eSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJQb2xpc2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiUExOIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJQTCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJwbCIKICBMT0NBTEVfU0xBTkdVQUdFICJQb2xpc2giCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJzdHljemXxIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAibHV0eSIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnplYyIKICBMT0NBTEVfU01PTlRITkFNRTQgImt3aWVjaWXxIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFqIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiY3plcndpZWMiCiAgTE9DQUxFX1NNT05USE5BTUU3ICJsaXBpZWMiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJzaWVycGll8SIKICBMT0NBTEVfU01PTlRITkFNRTkgIndyemVzaWXxIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgInBhn2R6aWVybmlrIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgImxpc3RvcGFkIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImdydWR6aWXxIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAicGwtUEwiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiUG9sc2thIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIlqzb3R5IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgInBvbHNraSAoUG9sc2thKSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJwb2xza2kiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5LU1NLWRkIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJFdXJvcGEgemFjaG9kbmlhIGkgU3RhbnkgWmplZG5vY3pvbmUiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BhIGNlbnRyYWxuYSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmGzdHlja2llIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWNraSIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJ5bGljYSIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmVja2kiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwb/Fza2kiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVh8XNraSIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIkNoafFza2kgdHJhZHljeWpueSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiQ2hp8XNraSB1cHJvc3pjem9ueSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRhanNraSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmFqc2tpIgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFic2tpIgogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiV2lldG5hbXNraSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmR5anNraSIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHcnV6afFza2kiCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZfFza2kiCn0K