LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTZXJiaWFuIChMYXRpbikKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUwKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19TRVJCSUFOLCBTVUJMQU5HX1NFUkJJQU5fTEFUSU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEyXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjM4MSIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTAiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzODEiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDgxYSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwODFhIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJTUEIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAicG9uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgInV0byIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJzcmUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi6GV0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgInBldCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzdWIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAibmVkIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlNSTCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImphbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImZlYiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImFwciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1haiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImp1biIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImp1bCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggImF2ZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJva3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImRlYyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJTZXJiaWEiCiAgTE9DQUxFX1NDVVJSRU5DWSAiRGluLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAicG9uZWRlbGphayIKICBMT0NBTEVfU0RBWU5BTUUyICJ1dG9yYWsiCiAgTE9DQUxFX1NEQVlOQU1FMyAic3JlZGEiCiAgTE9DQUxFX1NEQVlOQU1FNCAi6GV0dnJ0YWsiCiAgTE9DQUxFX1NEQVlOQU1FNSAicGV0YWsiCiAgTE9DQUxFX1NEQVlOQU1FNiAic3Vib3RhIgogIExPQ0FMRV9TREFZTkFNRTcgIm5lZGVsamEiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiU2VyYmlhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlNlcmJpYW4gRGluYXIiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiU2VyYmlhbiAoTGF0aW4pIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlJTRCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiUlMiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAic3IiCiAgTE9DQUxFX1NMQU5HVUFHRSAiU2VyYmlhbiAoTGF0aW4pIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkLiBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImphbnVhciIKICBMT0NBTEVfU01PTlRITkFNRTIgImZlYnJ1YXIiCiAgTE9DQUxFX1NNT05USE5BTUUzICJtYXJ0IgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYXByaWwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJtYWoiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJqdW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJqdWwiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJhdmd1c3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJzZXB0ZW1iYXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2t0b2JhciIKICBMT0NBTEVfU01PTlRITkFNRTExICJub3ZlbWJhciIKICBMT0NBTEVfU01PTlRITkFNRTEyICJkZWNlbWJhciIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BTUUgInNyLUxhdG4tUlMiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiU3JiaWphIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgImRpbmFyIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgInNycHNraSAoU3JiaWphKSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJzcnBza2kiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJkLk0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==