LyoKICogY3J5cHQzMiBkbGwgcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAoQykgMjAwNiBKdWFuIExhbmcKICogQ29weXJpZ2h0IChDKSAyMDA2IFl1blNvbmcgSHdhbmcKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19LT1JFQU4sIFNVQkxBTkdfREVGQVVMVAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogICAgSURTX0FVVEhPUklUWV9LRVlfSUQgIsGisdkgxbAgvcS6sMDaIgogICAgSURTX0tFWV9BVFRSSUJVVEVTICLFsCC807y6IgogICAgSURTX0tFWV9VU0FHRV9SRVNUUklDVElPTiAixbAgu+e/6yDBpsfRIgogICAgSURTX1NVQkpFQ1RfQUxUX05BTUUgIsHWwaYoc3ViamVjdCkgtOvDvCDAzLinIgogICAgSURTX0lTU1VFUl9BTFRfTkFNRSAiud/H4MDaILTrw7wgwMy4pyIKICAgIElEU19CQVNJQ19DT05TVFJBSU5UUyAiseK6uyDBpr7gIgogICAgSURTX0tFWV9VU0FHRSAixbAgu+e/67n9IgogICAgSURTX0NFUlRfUE9MSUNJRVMgIsDOwfUguebEpyIKICAgIElEU19TVUJKRUNUX0tFWV9JREVOVElGSUVSICLB1sGmKFN1YmplY3QpxbAgvcS6sMDaIgogICAgSURTX0NSTF9SRUFTT05fQ09ERSAiQ1JMILrQurAgxNq15SIKICAgIElEU19DUkxfRElTVF9QT0lOVFMgIkNSTCC56Mb3ICDB9sGhIgogICAgSURTX0VOSEFOQ0VEX0tFWV9VU0FHRSAiyK7A5bXIIMWwILvnv+u5/SIKICAgIElEU19BVVRIT1JJVFlfSU5GT19BQ0NFU1MgIrHHx9EgwaS6uCDBorHZIgogICAgSURTX0NFUlRfRVhURU5TSU9OUyAiwM7B9bytIMiuwOUoQ2VydGlmaWNhdGUgRXh0ZW5zaW9ucykiCiAgICBJRFNfTkVYVF9VUERBVEVfTE9DQVRJT04gIrTZwL0gvve1pcDMxq4gwKfEoSIKICAgIElEU19ZRVNfT1JfTk9fVFJVU1QgIr3Ft9oov7kgs6ogvsa0z7/AKSIKICAgIElEU19FTUFJTF9BRERSRVNTICLAzLjewM8gwda80iIKICAgIElEU19VTlNUUlVDVFVSRURfTkFNRSAiuvGxuMG2yK0gwMy4pyIKICAgIElEU19DT05URU5UX1RZUEUgIrO7v+sgx/y9xCIKICAgIElEU19NRVNTQUdFX0RJR0VTVCAis7u/6yC/5L7gIgogICAgSURTX1NJR05JTkdfVElNRSAivK247SC9w7CjIgogICAgSURTX0NPVU5URVJfU0lHTiAiv6ogvK247ShDb3VudGVyIFNpZ24pIgogICAgSURTX0NIQUxMRU5HRV9QQVNTV09SRCAivs/IoyC52bLZseIiCiAgICBJRFNfVU5TVFJVQ1RVUkVEX0FERFJFU1MgIrrxsbjBtsitIMHWvNIiCiAgICBJRFNfU01JTUVfQ0FQQUJJTElUSUVTICJTTUlNRSDGr7y6IgogICAgSURTX1BSRUZFUl9TSUdORURfREFUQSAivLHIo8fPtMIgu+fAzrXIILWlwMzFuChQcmVmZXIgU2lnbmVkIERhdGEpIgogICAgSURTX0NQUyAiQ1BTIgogICAgSURTX1VTRVJfTk9USUNFICK757/rwNogxevB9iIKICAgIElEU19PQ1NQICK/wrbzwM4gwM7B9SC788XCIMfBt87F5MTdIgogICAgSURTX0NBX0lTU1VFUiAiwM7B9bytIMGisdkgud/H4MDaIgogICAgSURTX0NFUlRfVEVNUExBVEVfTkFNRSAiwM7B9SDH/MbHIMDMuKciCiAgICBJRFNfQ0VSVF9UWVBFICLAzsH1vK0gx/zFwiIKICAgIElEU19DRVJUX01BTklGT0xEICLAzsH1vK0gu+e6uyIKICAgIElEU19ORVRTQ0FQRV9DRVJUX1RZUEUgIrPdvbrEycDMx8EgwM7B9SDH/MXCIgogICAgSURTX05FVFNDQVBFX0JBU0VfVVJMICKz3b26xMnAzMfBILHiursgwKXB1rzSIgogICAgSURTX05FVFNDQVBFX1JFVk9DQVRJT05fVVJMICKz3b26xMnAzMfBIMPrvNIgwKXB1rzSIgogICAgSURTX05FVFNDQVBFX0NBX1JFVk9DQVRJT05fVVJMICKz3b26xMnAzMfBIENBIMPrvNIgwKXB1rzSIgogICAgSURTX05FVFNDQVBFX0NFUlRfUkVORVdBTF9VUkwgIrPdvbrEycDMx8EgwM7B9bytIMDnsLMgwKXB1rzSIgogICAgSURTX05FVFNDQVBFX0NBX1BPTElDWV9VUkwgIrPdvbrEycDMx8EgQ0EguebEpyBVUkwiCiAgICBJRFNfTkVUU0NBUEVfU1NMX1NFUlZFUl9OQU1FICKz3b26xMnAzMfBIFNTTCC8rbn2wMy4pyIKICAgIElEU19ORVRTQ0FQRV9DT01NRU5UICKz3b26xMnAzMfBILyzuO0iCiAgICBJRFNfU1BDX1NQX0FHRU5DWV9JTkZPICJTcGNTcLD8uK7A2iDBpLq4IgogICAgSURTX1NQQ19GSU5BTkNJQUxfQ1JJVEVSSUEgIlNwY8DnwaS78yC/+MSiIgogICAgSURTX1NQQ19NSU5JTUFMX0NSSVRFUklBICJTcGPD1rzSIL/4xKIiCiAgICBJRFNfQ09VTlRSWSAis6q28y/B9r+qIgogICAgSURTX09SR0FOSVpBVElPTiAitNzDvCIKICAgIElEU19PUkdBTklaQVRJT05BTF9VTklUICK03MO8KE9yZ2FuaXphdGlvbmFsIFVuaXQpIgogICAgSURTX0NPTU1PTl9OQU1FICK+1sSqIgogICAgSURTX0xPQ0FMSVRZICK80sDnwfYiCiAgICBJRFNfU1RBVEVfT1JfUFJPVklOQ0UgIsHWs6ogwfa55iIKICAgIElEU19USVRMRSAiwaa48SIKICAgIElEU19HSVZFTl9OQU1FICLB1r7uwfggwMy4pyIKICAgIElEU19JTklUSUFMUyAiuNO4tLHbwNoiCiAgICBJRFNfU1VSX05BTUUgIry6IgogICAgSURTX0RPTUFJTl9DT01QT05FTlQgIsHWvNIgsbi8ur/kvNIiCiAgICBJRFNfU1RSRUVUX0FERFJFU1MgIrDFuK4gwda80iIKICAgIElEU19TRVJJQUxfTlVNQkVSICK9w7iuvvMgufjIoyIKICAgIElEU19DQV9WRVJTSU9OICJDQSC59sGvIgogICAgSURTX0NST1NTX0NBX1ZFUlNJT04gIrGzwvcgQ0EgufbBryIKICAgIElEU19TRVJJQUxJWkVEX1NJR19TRVJJQUxfTlVNQkVSICK/rLzTtcgoU2VyaWFsaXplZCkgvK247SC9w7iuvvMgs9G59iIKICAgIElEU19QUklOQ0lQQUxfTkFNRSAiwda/5MfRIMDMuKciCiAgICBJRFNfV0lORE9XU19QUk9EVUNUX1VQREFURSAiwKm1tb/swe4gwabHsCC+97WlwMzGriIKICAgIElEU19FTlJPTExNRU5UX05BTUVfVkFMVUVfUEFJUiAite63zyDAzLinILCqwMcgvdYiCiAgICBJRFNfT1NfVkVSU0lPTiAiT1MgufbBryIKICAgIElEU19FTlJPTExNRU5UX0NTUCAiQ1NQILXut88iCiAgICBJRFNfQ1JMX05VTUJFUiAiQ1JMILn4yKMiCiAgICBJRFNfREVMVEFfQ1JMX0lORElDQVRPUiAitajFuCBDUkwgx6W9w7HiIgogICAgSURTX0lTU1VJTkdfRElTVF9QT0lOVCAiud/H4MDaILnoxvcgwKfEoSIKICAgIElEU19GUkVTSEVTVF9DUkwgIsPWvcUgQ1JMIgogICAgSURTX05BTUVfQ09OU1RSQUlOVFMgIsDMuKcgwaa+4CIKICAgIElEU19QT0xJQ1lfTUFQUElOR1MgIsGkw6UgtOvAwCIKICAgIElEU19QT0xJQ1lfQ09OU1RSQUlOVFMgIsGkw6Ugwaa+4CIKICAgIElEU19DUk9TU19DRVJUX0RJU1RfUE9JTlRTICK788ijIMDOwfUgutC56CDAp8ShIgogICAgSURTX0FQUExJQ0FUSU9OX1BPTElDSUVTICLHrrHXuLIguebEpyIKICAgIElEU19BUFBMSUNBVElPTl9QT0xJQ1lfTUFQUElOR1MgIseusde4siDBpMOlILTrwMAoTWFwcGluZ3MpIgogICAgSURTX0FQUExJQ0FUSU9OX1BPTElDWV9DT05TVFJBSU5UUyAix66x17iyIMGkw6Ugwaa+4CIKICAgIElEU19DTUNfREFUQSAiQ01DILWlwMzFuCIKICAgIElEU19DTUNfUkVTUE9OU0UgIkNNQyDAwLTkIgogICAgSURTX1VOU0lHTkVEX0NNQ19SRVFVRVNUICK8rbjttcfB9iC+ysC6Q01DIL/kw7siCiAgICBJRFNfQ01DX1NUQVRVU19JTkZPICJDTUMgu/PFwiDBpLq4IgogICAgSURTX0NNQ19FWFRFTlNJT05TICJDTUMgyK7A5SIKICAgIElEU19DTUNfQVRUUklCVVRFUyAiQ01DILzTvLoiCiAgICBJRFNfUEtDU183X0RBVEEgIlBLQ1MgNyC1pcDMxbgiCiAgICBJRFNfUEtDU183X1NJR05FRCAiUEtDUyA3ILytuO0iCiAgICBJRFNfUEtDU183X0VOVkVMT1BFRCAiUEtDUyA3IL3OsLMiCiAgICBJRFNfUEtDU183X1NJR05FRF9FTlZFTE9QRUQgIlBLQ1MgNyC8rbjttcggvc6wsyIKICAgIElEU19QS0NTXzdfRElHRVNURUQgIlBLQ1MgNyC/5L7gIgogICAgSURTX1BLQ1NfN19FTkNSWVBURUQgIlBLQ1MgNyC+z8ijyK0iCiAgICBJRFNfUFJFVklPVVNfQ0FfQ0VSVF9IQVNIICLAzMD8wMcgQ0EgwM7B9SDH2L2sIgogICAgSURTX0NSTF9WSVJUVUFMX0JBU0UgIrChu/MgseK53SBDUkwgvP3A2ihWaXJ0dWFsIEJhc2UgQ1JMIE51bWJlcikiCiAgICBJRFNfQ1JMX05FWFRfUFVCTElTSCAitNnAvSBDUkwgud/H4CIKICAgIElEU19DQV9FWENIQU5HRSAiQ0Egvs/IoyDAzsH1IgogICAgSURTX0tFWV9SRUNPVkVSWV9BR0VOVCAixbAgurmxuCCw/LiuwNoiCiAgICBJRFNfQ0VSVElGSUNBVEVfVEVNUExBVEUgIsDOwfUgwdbH/ChUZW1wbGF0ZSkgwaS6uCIKICAgIElEU19FTlRFUlBSSVNFX1JPT1RfT0lEICKx4r73ILfnxq4gT0lEIgogICAgSURTX1JETl9EVU1NWV9TSUdORVIgIrChwqUgu+fAzsDaKER1bW15IFNpZ25lcikiCiAgICBJRFNfQVJDSElWRURfS0VZX0FUVFIgIr7PyKPIrbXIILCzwM4gxbAiCiAgICBJRFNfQ1JMX1NFTEZfQ0RQICK538fgtcggQ1JMIMCnxKEiCiAgICBJRFNfUkVRVUlSRV9DRVJUX0NIQUlOX1BPTElDWSAisK3BpiDAzsH1IMO8wM4gwaTDpShFbmZvcmNlIENlcnRpZmljYXRlIENoYWluIFBvbGljeSkiCiAgICBJRFNfVFJBTlNBQ1RJT05fSUQgIsOzuK4gSWQiCiAgICBJRFNfU0VOREVSX05PTkNFICLA073DILnfvNvAziIKICAgIElEU19SRUNJUElFTlRfTk9OQ0UgIsDTvcMgvPa3ycDOIgogICAgSURTX1JFR19JTkZPICK17rfPIMGkurgiCiAgICBJRFNfR0VUX0NFUlRJRklDQVRFICLAzsH1vK0gvvKx4iIKICAgIElEU19HRVRfQ1JMICJDUkwgvvKx4iIKICAgIElEU19SRVZPS0VfUkVRVUVTVCAiw+u80iC/5MO7IgogICAgSURTX1FVRVJZX1BFTkRJTkcgIsH6ua7Hz7TCIMHfIgogICAgSURTX1NPUlRFRF9DVEwgIsDOwfW1yCC9xbfaILjxt88iCiAgICBJRFNfQVJDSElWRURfS0VZX0NFUlRfSEFTSCAivtDD4LXIIMWwIMDOwfUgx9i9rCIKICAgIElEU19QUklWQVRFX0tFWV9VU0FHRV9QRVJJT0QgIrCzwM4gxbAgu+e/6yCx4rCjIgogICAgSURTX0NMSUVOVF9JTkZPUk1BVElPTiAixay288DMvvDGriDBpLq4IgogICAgSURTX1NFUlZFUl9BVVRIRU5USUNBVElPTiAivK259iDAzsH1IgogICAgSURTX0NMSUVOVF9BVVRIRU5USUNBVElPTiAixay288DMvvDGriDAzsH1IgogICAgSURTX0NPREVfU0lHTklORyAixNq15SC8rbjtIgogICAgSURTX1NFQ1VSRV9FTUFJTCAiuri+yCDAzLjewM8iCiAgICBJRFNfVElNRV9TVEFNUElORyAivcOwoyCzr8DOIgogICAgSURTX01JQ1JPU09GVF9UUlVTVF9MSVNUX1NJR05JTkcgIri2wMzFqbfOvNLHwcauIL3Ft9oguPG3zyC758DOIgogICAgSURTX01JQ1JPU09GVF9USU1FX1NUQU1QSU5HICK4tsDMxam3zrzSx8HGriC9w7CjILOvwM4iCiAgICBJRFNfSVBTRUNfRU5EX1NZU1RFTSAiSVAguri+yCDBvrTcIL3DvbrF2yIKICAgIElEU19JUFNFQ19UVU5ORUwgIklQILq4vsggIMXNs84gwb634Sh0dW5uZWwgdGVybWluYXRpb24pIgogICAgSURTX0lQU0VDX1VTRVIgIklQILq4vsggu+e/68DaIgogICAgSURTX0VGUyAivs/Io8ittcggxsTAzyC9w726xdsiCiAgICBJRFNfV0hRTF9DUllQVE8gIsCptbW/7MHuIMfPteW//r7uILXltvPAzLn2ILDLwfUiCiAgICBJRFNfTlQ1X0NSWVBUTyAiwKm1tb/swe4gvcO9usXbILG4vLq/5LzSILDLwfUiCiAgICBJRFNfT0VNX1dIUUxfQ1JZUFRPICJPRU0gwKm1tb/swe4gvcO9usXbILG4vLq/5LzSILDLwfUiCiAgICBJRFNfRU1CRURERURfTlRfQ1JZUFRPICKzu8DltcggwKm1tb/swe4gvcO9usXGILG4vLq/5LzSILDLwd8iCiAgICBJRFNfS0VZX1BBQ0tfTElDRU5TRVMgIsWwIMbRILbzwMy8vr26IgogICAgSURTX0xJQ0VOU0VfU0VSVkVSICK288DMvL69uiC8rbn2ILDLwfUiCiAgICBJRFNfU01BUlRfQ0FSRF9MT0dPTiAivbq4tsauIMSrteUgt86x18DOIgogICAgSURTX0RJR0lUQUxfUklHSFRTICK18MH2xdAgwPrA27HHIgogICAgSURTX1FVQUxJRklFRF9TVUJPUkRJTkFUSU9OICLA2rDdwNa0wiDBvrzTsPyw6CIKICAgIElEU19LRVlfUkVDT1ZFUlkgIsWwILq5sbgiCiAgICBJRFNfRE9DVU1FTlRfU0lHTklORyAiua68rSC8rbjtIgogICAgSURTX0lQU0VDX0lLRV9JTlRFUk1FRElBVEUgIklQILq4vsggIElLRSC89rTcKGludGVybWVkaWF0ZSkiCiAgICBJRFNfRklMRV9SRUNPVkVSWSAixsTAzyC6ubG4IgogICAgSURTX1JPT1RfTElTVF9TSUdORVIgIrfnxq4guPG3zyC8rbjtwNoiCiAgICBJRFNfQU5ZX0FQUExJQ0FUSU9OX1BPTElDSUVTICK48LXnIMeusde4ssDHILnmxKciCiAgICBJRFNfRFNfRU1BSUxfUkVQTElDQVRJT04gIrXwt7rF5LiuILytuvG9uiDAzLjewM8gwMC05CIKICAgIElEU19FTlJPTExNRU5UX0FHRU5UICLAzsH1IL/ksbggsPy4rsDaIgogICAgSURTX0xJRkVUSU1FX1NJR05JTkcgIsbyu/0gvK247SIKICAgIElEU19BTllfQ0VSVF9QT0xJQ1kgIrjwtecguejG9yC55sSnIgp9Cg==