LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTcGFuaXNoIChIb25kdXJhcykKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19TUEFOSVNILCBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjUwNCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI1MDQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjg0IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICI0ODBhIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkxIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNiIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjQ4MGEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMTIiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjQiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICIxIgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICI0IgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMCIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgImEubS4iCiAgTE9DQUxFX1MyMzU5ICJwLm0uIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkhORCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJMdW4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiTWFyIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIk1p6SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJKdWUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiVmllIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIlPhYiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJEb20iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiRVNIIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiRW5lIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiRmViIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiTWFyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiQWJyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAiTWF5IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiSnVuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiSnVsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiQWdvIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiU2VwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIk9jdCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJOb3YiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiRGljIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkhvbmR1cmFzIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIkwuIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICJMdW5lcyIKICBMT0NBTEVfU0RBWU5BTUUyICJNYXJ0ZXMiCiAgTE9DQUxFX1NEQVlOQU1FMyAiTWnpcmNvbGVzIgogIExPQ0FMRV9TREFZTkFNRTQgIkp1ZXZlcyIKICBMT0NBTEVfU0RBWU5BTUU1ICJWaWVybmVzIgogIExPQ0FMRV9TREFZTkFNRTYgIlPhYmFkbyIKICBMT0NBTEVfU0RBWU5BTUU3ICJEb21pbmdvIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkhvbmR1cmFzIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkhvbmR1cmFuIExlbXBpcmEiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiU3BhbmlzaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJITkwiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkhOIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImVzIgogIExPQ0FMRV9TTEFOR1VBR0UgIlNwYW5pc2ggKEhvbmR1cmFzKSIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAiZGRkZCwgZGQnIGRlICdNTU1NJyBkZSAneXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMyIKICBMT0NBTEVfU01PTlRITkFNRTEgIkVuZXJvIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiRmVicmVybyIKICBMT0NBTEVfU01PTlRITkFNRTMgIk1hcnpvIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiQWJyaWwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJNYXlvIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiSnVuaW8iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJKdWxpbyIKICBMT0NBTEVfU01PTlRITkFNRTggIkFnb3N0byIKICBMT0NBTEVfU01PTlRITkFNRTkgIlNlcHRpZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiT2N0dWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTExICJOb3ZpZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiRGljaWVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAiZXMtSE4iCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiSG9uZHVyYXMiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiTGVtcGlyYSIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICJFc3Bh8W9sIChIb25kdXJhcykiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiRXNwYfFvbCIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU09QRU5UWVBFTEFOR1VBR0VUQUcgIkVTUCAiCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU0hPUlRUSU1FICJoaDptbSB0dCIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiwiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiaGg6bW06c3MgdHQiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0nIGRlICd5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==