LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBcmFiaWMgKEt1d2FpdCkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2Rld2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjU2KQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19BUkFCSUMsIFNVQkxBTkdfQVJBQklDX0tVV0FJVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDYwYWZceDgwMDBceDM4NDhceDEwMDBceDAwMDhceDAwMDBceDAwMDBceDA4MDBceDAwNDBceDAwMDBceDAwMDBceDIwMDBceDAwNDBceDAwMDBceDAwMDBceDIwMDgiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiOTY1IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMyIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1NiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiNzIwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjk2NSIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA0MjAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjM0MDEiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDA0IgogIExPQ0FMRV9JRElHSVRTICIzIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjAiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNSIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIzIgogIExPQ0FMRV9JTEFOR1VBR0UgIjM0MDEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMyIKICBMT0NBTEVfSU5FR05VTUJFUiAiMyIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMiIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiNiIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMiIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JVElNRSAiMCIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgItUiCiAgTE9DQUxFX1MyMzU5ICLjIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIktXVCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLH4cfL5O3kIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIsfhy+HHy8fBIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIsfhx9HI2sfBIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIsfhzuPt0yIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICLH4czj2skiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAix+HTyMoiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAix+HHzc8iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiQVJLIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi7eTH7dEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICLdyNHH7dEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLjx9HTIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAix8jR7eEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICLjx+3mIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAi7ebk7eYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLt5uHt5iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsfb09jTIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi08jK48jRIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIsffyubI0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLk5t3jyNEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiz+3T48jRIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkt1d2FpdCIKICBMT0NBTEVfU0NVUlJFTkNZICLPLt8u/iIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAix+HHy+Tt5CIKICBMT0NBTEVfU0RBWU5BTUUyICLH4cvhx8vHwSIKICBMT0NBTEVfU0RBWU5BTUUzICLH4cfRyNrHwSIKICBMT0NBTEVfU0RBWU5BTUU0ICLH4c7j7dMiCiAgTE9DQUxFX1NEQVlOQU1FNSAix+HM49rJIgogIExPQ0FMRV9TREFZTkFNRTYgIsfh08jKIgogIExPQ0FMRV9TREFZTkFNRTcgIsfhx83PIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkt1d2FpdCIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJLdXdhaXRpIERpbmFyIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkFyYWJpYyIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJLV0QiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIktXIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImFyIgogIExPQ0FMRV9TTEFOR1VBR0UgIkFyYWJpYyAoS3V3YWl0KSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZGQgTU1NTSwgeXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAi7eTH7dEiCiAgTE9DQUxFX1NNT05USE5BTUUyICLdyNHH7dEiCiAgTE9DQUxFX1NNT05USE5BTUUzICLjx9HTIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAix8jR7eEiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLjx+3mIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi7ebk7eYiCiAgTE9DQUxFX1NNT05USE5BTUU3ICLt5uHt5iIKICBMT0NBTEVfU01PTlRITkFNRTggIsfb09jTIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAi08jK48jRIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIsffyubI0SIKICBMT0NBTEVfU01PTlRITkFNRTExICLk5t3jyNEiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiz+3T48jRIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIsfh3+btyiIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLP7eTH0aDf5u3K7SIKICBMT0NBTEVfU05BVElWRURJR0lUUyBMIlx4MDY2MFx4MDY2MVx4MDY2Mlx4MDY2M1x4MDY2NFx4MDY2NVx4MDY2Nlx4MDY2N1x4MDY2OFx4MDY2OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLH4drRyO3JIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkL01NL3l5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIsIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgImhoOm1tOnNzIHR0IgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NLCB5eXl5Igp9Cg==