LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDb3JuaXNoIChVbml0ZWQgS2luZ2RvbSkKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19DT1JOSVNILCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMWZmXHgwMDNmXHg4MDAwXHhmZmZmIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMCIKICBMT0NBTEVfSUNPVU5UUlkgIjQ0IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQ0IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI4NSIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwOSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDg5MSIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICIxIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIzIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiQU0iCiAgTE9DQUxFX1MyMzU5ICJQTSIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJHQlIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiTHVuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIk10aCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJNaHIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiWW93IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIkd3ZSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJTYWQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiU3VsIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkNPUiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIkdlbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIldoZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIk1lciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIkViciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIk1lIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiRXZuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiR29yIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiRXN0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiR3duIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIkhlZCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJEdSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJLZXYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiVW5pdGVkIEtpbmdkb20iCiAgTE9DQUxFX1NDVVJSRU5DWSAioyIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAiRGUgTHVuIgogIExPQ0FMRV9TREFZTkFNRTIgIkRlIE1lcnRoIgogIExPQ0FMRV9TREFZTkFNRTMgIkRlIE1lcmhlciIKICBMT0NBTEVfU0RBWU5BTUU0ICJEZSBZb3ciCiAgTE9DQUxFX1NEQVlOQU1FNSAiRGUgR3dlbmVyIgogIExPQ0FMRV9TREFZTkFNRTYgIkRlIFNhZG9ybiIKICBMT0NBTEVfU0RBWU5BTUU3ICJEZSBTdWwiCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVW5pdGVkIEtpbmdkb20iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiVUsgUG91bmQgU3RlcmxpbmciCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiQ29ybmlzaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJHQlAiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkdCIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImt3IgogIExPQ0FMRV9TTEFOR1VBR0UgIkNvcm5pc2ggKFVuaXRlZCBLaW5nZG9tKSIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAiZGQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJNeXMgR2VudmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiTXlzIFdoZXZyZWwiCiAgTE9DQUxFX1NNT05USE5BTUUzICJNeXMgTWVydGgiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJNeXMgRWJyZWwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJNeXMgTWUiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJNeXMgRXZhbiIKICBMT0NBTEVfU01PTlRITkFNRTcgIk15cyBHb3J0aGVyZW4iCiAgTE9DQUxFX1NNT05USE5BTUU4ICJNeXMgRXN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiTXlzIEd3eW5nYWxhIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIk15cyBIZWRyYSIKICBMT0NBTEVfU01PTlRITkFNRTExICJNeXMgRHUiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiTXlzIEtldmFyZGh1IgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIlVuaXRlZCBLaW5nZG9tIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIiIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJLZXJuZXdlayIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiwiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKICAKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==