LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBVa3JhaW5pYW4KICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUxKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19VS1JBSU5JQU4sIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAyMDNceDgwMDBceDM4NDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDRceDAwMDBceDAwMDBceDAwMDJceDAwMDRceDAwMDBceDAwMDBceDAyMDIiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzgwIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MSIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODY2IgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM4MCIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiNTAwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDIyIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAxNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjIxODY2IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MjIiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJVS1IiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiz+0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiwvIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi0fAiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi1/IiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiz/IiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi0eEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAizeQiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiVUtSIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi0bP3IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiy/7yIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiweXwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiyuKzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAi0vDgIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAi1+XwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiy+jvIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAi0eXwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiwuXwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIsbu4iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLL6PEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiw/DzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlVrcmFpbmUiCiAgTE9DQUxFX1NDVVJSRU5DWSAi4/DtLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAi7+7t5eSz6+7qIgogIExPQ0FMRV9TREFZTkFNRTIgIuKz4vLu8O7qIgogIExPQ0FMRV9TREFZTkFNRTMgIvHl8OXk4CIKICBMT0NBTEVfU0RBWU5BTUU0ICL35fLi5fAiCiAgTE9DQUxFX1NEQVlOQU1FNSAi7yf/8u3o9v8iCiAgTE9DQUxFX1NEQVlOQU1FNiAi8fPh7vLgIgogIExPQ0FMRV9TREFZTkFNRTcgIu3l5LPr/yIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJVa3JhaW5lIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlVrcmFpbmlhbiBHcml2bmEiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiVWtyYWluaWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlVBSCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiVUEiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAidWsiCiAgTE9DQUxFX1NMQU5HVUFHRSAiVWtyYWluaWFuIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eScg8C4nIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICLRs/fl7fxcMPGz9+3/IgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiy/7y6OlcMOv+8u7j7iIKICBMT0NBTEVfU01PTlRITkFNRTMgIsHl8OXn5e38XDDh5fDl5+3/IgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiyuKz8uXt/Fww6uKz8u3/IgogIExPQ0FMRV9TTU9OVEhOQU1FNSAi0vDg4uXt/Fww8vDg4u3/IgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi1+Xw4uXt/Fww9+Xw4u3/IgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiy+jv5e38XDDr6O/t/yIKICBMT0NBTEVfU01PTlRITkFNRTggItHl8O/l7fxcMPHl8O/t/yIKICBMT0NBTEVfU01PTlRITkFNRTkgIsLl8OXx5e38XDDi5fDl8e3/IgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIsbu4vLl7fxcMObu4vLt/yIKICBMT0NBTEVfU01PTlRITkFNRTExICLL6PHy7u/g5Fww6+jx8u7v4OTgIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIsPw8+Tl7fxcMOPw8+Tt/yIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAioCIKICBMT0NBTEVfU05BTUUgInVrLVVBIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgItPq8OC/7eAiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi4/Do4u3/IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIvPq8OC/7fzx6uAiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkN5cmw7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXknIPAuJyIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=