LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBOb3J3ZWdpYW4gKEJva23lbCkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKiBDb3B5cmlnaHQgMjAwNiBBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQ3IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQ3IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI3NyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQxNCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjIiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDE0IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjEyIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICI0IgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICI0IgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIk5PUiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJtYSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJ0aSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJvbiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJ0byIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJmciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJs+CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJz+CIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJOT1IiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJmZWIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJtYXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJhcHIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJqdW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJqdWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhdWciCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJzZXAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2t0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIm5vdiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJkZXMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiTm9yd2F5IgogIExPQ0FMRV9TQ1VSUkVOQ1kgImtyIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxICJtYW5kYWciCiAgTE9DQUxFX1NEQVlOQU1FMiAidGlyc2RhZyIKICBMT0NBTEVfU0RBWU5BTUUzICJvbnNkYWciCiAgTE9DQUxFX1NEQVlOQU1FNCAidG9yc2RhZyIKICBMT0NBTEVfU0RBWU5BTUU1ICJmcmVkYWciCiAgTE9DQUxFX1NEQVlOQU1FNiAibPhyZGFnIgogIExPQ0FMRV9TREFZTkFNRTcgInP4bmRhZyIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJOb3J3YXkiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiTm9yd2VnaWFuIEtyb25lIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIk5vcndlZ2lhbiAoQm9rbeVsKSIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJOT0siCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIk5PIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgIm5iIgogIExPQ0FMRV9TTEFOR1VBR0UgIk5vcndlZ2lhbiAoQm9rbWFsKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZC4gTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW51YXIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJmZWJydWFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU01PTlRITkFNRTQgImFwcmlsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAianVuaSIKICBMT0NBTEVfU01PTlRITkFNRTcgImp1bGkiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJhdWd1c3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJzZXB0ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2t0b2JlciIKICBMT0NBTEVfU01PTlRITkFNRTExICJub3ZlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEyICJkZXNlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAioCIKICBMT0NBTEVfU05BTUUgIm5iLU5PIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIk5vcmdlIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIk5vcnNrIGtyb25lIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIm5vcnNrIChib2tt5WwpIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkLk1NLnl5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICKgIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIlZlc3QtRXVyb3BhIG9nIFVTQSIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJTZW50cmFsLUV1cm9wYSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGlzayIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVzayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJLeXJpbGxpc2siCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUeXJraXNrIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuc2siCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbnNrIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiS2luZXNpc2sgKHRyYWRpc2pvbmVsbCkiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIktpbmVzaXNrIChmb3JlbmtsZXQpIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaWxhbmRzayIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmFpc2siCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpc2siIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzaXNrIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGlzayIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lzayIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbnNrIgp9Cg==