LyoKICogV2luZUZpbGUKICogS29yZWFuIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDAgTWFydGluIEZ1Y2hzCiAqIENvcHlyaWdodCAyMDAyIFN0ZXZlbiBFZHdhcmRzCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZAogKiBDb3B5cmlnaHQgMjAwNSwyMDA3IFl1blNvbmcgSHdhbmcKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInJlc291cmNlLmgiCgpMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ERUZBVUxUCgovKiBNZW51ICovCgpJRE1fV0lORUZJTEUgTUVOVSBGSVhFRCBJTVBVUkUKewogICAgUE9QVVAgIsbEwM8oJkYpIiAgewogICAgICAgIE1FTlVJVEVNICK/rbHiKCZPKVx0RW50ZXIiLCAgICAgICAgICAgICAgICBJRF9BQ1RJVkFURQogICAgICAgIE1FTlVJVEVNICLAzLW/KCZNKS4uLlx0RjciLCAgICAgICAgICAgICAgICBJRF9GSUxFX01PVkUKICAgICAgICBNRU5VSVRFTSAiurm75ygmQykuLi5cdEY4IiwgICAgICAgICAgICAgICAgSURfRklMRV9DT1BZCiAgICAgICAgTUVOVUlURU0gIsWsuLO6uLXlt84oJkkpLi4uXHRGOSIsICAgICAgICAxMTgKICAgICAgICBNRU5VSVRFTSAiwfa/7LHiKCZEKVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRklMRV9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiwMy4p7nZstmx4igmTikuLi4iLCAgICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICK807y6KCZJKS4uLlx0QWx0K0VudGVyIiwgICBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAivtDD4CgmTykuLi4iLCAgICAgICAgICAgICAgICAxMTkKICAgICAgICBNRU5VSVRFTSAivtDD4CDHrrHiKCZPKS4uLiIsICAgICAgICAgICAgICAxMjAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAivcfH4CgmUikuLi4iLCAgICAgICAgICAgICAgICAgICAgIElEX0VYRUNVVEUKICAgICAgICBNRU5VSVRFTSAiwM684igmUCkuLi4iLCAgICAgICAgICAgICAgICAgICAxMDIKICAgICAgICBNRU5VSVRFTSAiv6yw4S4uLiIsICAgICAgICAgICAgICAgIDEwMwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK18Le6xeS4riC4uLXpseIoJkUpLi4uIiwgICAgICAgIDExMQogICAgICAgIE1FTlVJVEVNICLDo7HiKCZIKS4uLiIsICAgICAgICAgICAgICAgICAgMTA0CiAgICAgICAgTUVOVUlURU0gIsbEwM8gvLHFwygmUykuLi4iLCAgICAgICAgICAgIDExNgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIrOqsKGx4ihFeClcdEFsdCtYIiwgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbHNlCiAgICAgICAgTUVOVUlURU0gIrOqsKGx4igmeCkiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbmRpZgogICAgfQoKICAgIFBPUFVQICK18L26xakoJkQpIiAgewogICAgICAgIE1FTlVJVEVNICK18L26xakgurm75ygmQykuLi4iLCAgICAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICK18L26xakgtvO6pygmTCkuLi4iLCAgICAgICAgICAgICAgMjAyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrXwvbrFqSDG97jLKCZGKS4uLiIsICAgICAgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAivcO9usXbILXwvbrFqSC4uLXpseIoJk0pLi4uIiwgLTEgLypUT0RPKi8KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrPXxq6/9sWpILXltvPAzLrqIL+ssOEoJk4pIiwgICAgICBJRF9DT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSAis9fGrr/2xakgteW288DMuuogv6yw4SCy97HiKCZEKSIsICAgSURfRElTQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrD4wK8uLi4iLCAgICAgICAgICAgICAgICAgMjU0CiAgICAgICAgTUVOVUlURU0gIrD4wK8gwaawxSgmUikuLi4iLCAgICAgICAgICAgIDI1NQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK15bbzwMy66iC8scXDKCZTKS4uLiIsICAgICAgICAgICAgMjUxCiAgICB9CgogICAgUE9QVVAgIrXwt7rF5LiuKCZSKSIgIHsKICAgICAgICBNRU5VSVRFTSAitNnAvSC03LDoKCZOKVx0KyIsICAgICAgICAgICAgICAzMDEKICAgICAgICBNRU5VSVRFTSAixq64riDIrsDlKCZUKVx0KiIsICAgICAgICAgICAgIDMwMgogICAgICAgIE1FTlVJVEVNICK48LXOIMiuwOUoJkEpXHRTdHJnKyoiLCAgICAgICAgIDMwMwogICAgICAgIE1FTlVJVEVNICLGrriuIMGkuK4oJlQpXHQtIiwgICAgICAgICAgIDMwNAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLHz8CnIMO8xakoJk0pIiwgICAgICAgICAgICAgIDUwNQogICAgfQoKICAgIFBPUFVQICK6uLHiKCZWKSIgIHsKICAgICAgICBNRU5VSVRFTSAixq64riDHz7DtILHit7rF5LiuKCZyKSIsICAgICAgICAgNDEzCiAgICAgICAgTUVOVUlURU0gIr/Awfcgxq64rri4KCZlKSIsICAgICAgICAgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIr/AwfcgtfC3usXkuK64uCgmTykiLCAgICAgICAgICAgICA0MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAis6q0qbHiKCZsKSIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiwMy4pygmTikiLCAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19OQU1FCiAgICAgICAgTUVOVUlURU0gIrjwtecgxsTAzyC8s7jtKCZBKSIsICAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIrrOutAgvLO47SgmUCkuLi4iLCAgICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLAzLinwLi3ziDBpLfEKCZTKSIsICAgICAgICAgICAgICAgSURfVklFV19TT1JUX05BTUUKICAgICAgICBNRU5VSVRFTSAixbjA1MC4t84gwaS3xCgmYikiLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9UWVBFCiAgICAgICAgTUVOVUlURU0gIsWpseK3ziDBpLfEKCZ6KSIsICAgICAgICAgICAgICAgSURfVklFV19TT1JUX1NJWkUKICAgICAgICBNRU5VSVRFTSAis6/CpbfOIMGkt8QoJkQpIiwgICAgICAgICAgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImLi4ut84gv6mw+iIsICAgICAgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICK/ybzHKCZPKSIgIHsKICAgICAgICBNRU5VSVRFTSAiyK7AzigmQykuLi4iLCAgICAgICAgICAgIDUwMQogICAgICAgIE1FTlVJVEVNICKx27LDKCZGKS4uLiIsICAgICAgICAgICAgICAgICAgICBJRF9TRUxFQ1RfRk9OVAogICAgICAgIE1FTlVJVEVNICK1tbG4udkgu+e/68DaIMGkwMcoJmIpLi4uIiwgICAgICAgNTEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrW1sbi52SgmVCkiLCAgICAgICAgICAgICAgICAgICAgSURfVklFV19UT09MX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICK15bbzwMy66iC52SgmRCkiLCAgICAgICAgICAgICAgICAgICBJRF9WSUVXX0RSSVZFX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICK788XCudkoJlMpIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiwPzDvCDIrbjpKCZ1KVx0Q3RybCtTaGlmdCtTIiwgIElEX1ZJRVdfRlVMTFNDUkVFTgojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAivcfH4L3DIMPWvNLIrSgmTSkiLCAgICAgICAgICAgIDUwNAogICAgICAgIE1FTlVJVEVNICKzqrCltqcgvLPBpCDA+sDlKCZTKSIsICAgICAgNTExCiAgICB9CgoKICAgIFBPUFVQICK6uL7IKCZTKSIgIHsKICAgICAgICBNRU5VSVRFTSAiwaKx2SgmQSkuLi4iLCAgICAgICAgICAgICAgICAgIDYwNQogICAgICAgIE1FTlVJVEVNICK3zrHrKCZMKS4uLiIsICAgICAgICAgICAgICAgICA2MDYKICAgICAgICBNRU5VSVRFTSAivNLAr8DaKCZPKS4uLiIsICAgICAgICAgICAgICAgICAgIDYwNwogICAgfQoKICAgIFBPUFVQICLDoigmVykiICB7CiAgICAgICAgTUVOVUlURU0gIrv1IMOiKCZXKSIsICAgICAgICAgICAgICAgICBJRF9XSU5ET1dfTkVXCiAgICAgICAgTUVOVUlURU0gIsGkt8RcdEN0cmwrRjUiLCAgICAgICAgICBJRF9XSU5ET1dfQ0FTQ0FERQogICAgICAgIE1FTlVJVEVNICKwobfOILnZtc/Gx73EIMGkt8QoJkgpIiwgICAgICAgICAgSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICK8vLfOILnZtc/Gx73EIMGkt8QoJlYpXHRDdHJsK0Y0IiwgICBJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiwNq1vyDBpLfEIiwgICAgICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICK9ybn6t84gwaS3xCgmUykiLCAgICAgICAgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIrv1t84gwNCx4igmUilcdEY1IiwgICAgICAgICAgICAgICAgSURfUkVGUkVTSAogICAgfQoKICAgIFBPUFVQICK1tb/yuLsoJkgpIiAgewogICAgICAgIE1FTlVJVEVNICK1tb/yuLsguPHC9ygmSClcdEYxIiwgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIrW1v/K4uyDDo7HiKCZTKS4uLlx0RjEiLCAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAitbW/8ri7ILvnv+u5/SgmVSlcdEYxIiwgICAgICAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJXaW5lZmlsZSCw/LfDIMGkurgoJkkpLi4uIiwgICAgIElEX0FCT1VUCiAgICB9Cn0KCgpJRERfRVhFQ1VURSBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK9x8fgIgpGT05UIDksICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIrjtt8koJkMpOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgQ09OVFJPTCAgICAgICAgICK9ybn6t84oJlMpIiwgMjE0LCAiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1AsMywgNDUsIDcxLCAxMgogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiw+u80iIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICK1tb/yuLsoJkgpIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK48cD7wfYgvLHFwyIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICKw5rfOKCZQKToiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiyK7AziIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiw6Ox4igmQikiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpJRERfRElBTE9HX1ZJRVdfVFlQRSBESUFMT0cgRElTQ0FSREFCTEUgMTUsIDEzLCAxNjEsIDk3ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIsbEwM8gxbjA1MC4t84iCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiwMy4pygmTik6IiwtMSw3LDgsMjIsMTAKICAgIEVESVRURVhUICAgICAgICBJRENfVklFV19QQVRURVJOLDMxLDcsNjMsMTIsRVNfQVVUT0hTQ1JPTEwKICAgIEdST1VQQk9YICAgICAgICAixsTAzyDFuMDUIiwtMSw3LDIzLDg3LDU2CiAgICBDT05UUk9MICAgICAgICAgIrXwt7rF5LiuKCZEKSIsSURDX1ZJRVdfVFlQRV9ESVJFQ1RPUklFUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDMyLDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIseusde4sigmUCkiLElEQ19WSUVXX1RZUEVfUFJPR1JBTVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw0Myw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICK5rrytxsTAzygmTSkiLElEQ19WSUVXX1RZUEVfRE9DVU1FTlRTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNTQsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAitNm4pSDGxMDPKCZPKSIsSURDX1ZJRVdfVFlQRV9PVEhFUlMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw2NSw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICK8+7HoL73DvbrF2yDGxMDPILq4v6nB1rHiKCZTKSIsSURDX1ZJRVdfVFlQRV9ISURERU4sCiAgICAgICAgICAgICAgICAgICAgIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw3LDgxLDEwNiw5CiAgICBERUZQVVNIQlVUVE9OICAgIsiuwM4iLElET0ssMTA0LDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiw+u80iIsSURDQU5DRUwsMTA0LDI0LDUwLDE0CkVORAoKSUREX0RJQUxPR19QUk9QRVJUSUVTIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjQ4LCAyMTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiJXMgvNO8uiIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE5MSw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE5MSwyOSw1MCwxNAogICAgTFRFWFQgICAgICAgICAgICLGxMDPIMDMuKcoJkYpOiIsLTEsNyw3LDU5LDkKCiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0ZJTEVOQU1FLDcxLDcsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICK/z8D8x9EgsOa3zigmUCk6IiwtMSw3LDE4LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfUEFUSCw3MSwxOCwxMjAsOSwgRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICK4tsH2uLcguq/IrToiLC0xLDcsMjksNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9MQVNUQ0hBTkdFLDcxLDI5LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiufbBrzoiLC0xLDcsNDAsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9WRVJTSU9OLDcxLDQwLDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiwPrA27HHKCZZKToiLC0xLDcsNTEsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9DT1BZUklHSFQsNzEsNTEsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICLFqbHiOiIsLTEsNyw2Miw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1NJWkUsNzEsNjIsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICK807y6IiwtMSw3LDc5LDE1OCw0NgogICAgQ09OVFJPTCAgICAgICAgICLA0LHiIMD8v+soJlIpIixJRENfQ0hFQ0tfUkVBRE9OTFksIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNyw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIrz7segoJkkpIixJRENfQ0hFQ0tfSElEREVOLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOTIsOTEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICK+xsSrwMy66igmQSkiLElEQ19DSEVDS19BUkNISVZFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTcsMTAxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAivcO9usXbKCZTKSIsSURDX0NIRUNLX1NZU1RFTSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDEwMSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIr7Qw+AoJkMpIixJRENfQ0hFQ0tfQ09NUFJFU1NFRCwiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNywxMTEsNjgsOQogICAgR1JPVVBCT1ggICAgICAgICK59sGvIMGkurgoJlYpIiwtMSw3LDEyOSwyMzQsNzkKICAgIExJU1RCT1ggICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVFlQRVMsMTMsMTM5LDEwNyw2MyxMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIEVESVRURVhUICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVkFMVUVTLDEyMywxMzksMTExLDYzLEVTX01VTFRJTElORSB8IEVTX1JFQURPTkxZIHwgV1NfVlNDUk9MTApFTkQKCgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfRk9OVF9TRUxfRExHX05BTUUgICAisduywyC8s8GkIMD7v+siCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiu/UgsduywyC8scXDIL+ht68uIgp9CgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfV0lORUZJTEUgICAgICAgICAgICAiV2luZWZpbGUiCiAgICBJRFNfRVJST1IgICAgICAgICAgICAgICAiv6G3ryIKICAgIElEU19ST09UX0ZTICAgICAgICAgICAgICK358auIMbEwM+9w726xdsiCiAgICBJRFNfVU5JWEZTICAgICAgICAgICAgICAiwK+00L26IMbEwM+9w726xdsiCiAgICBJRFNfREVTS1RPUCAgICAgICAgICAgICAitaW9usWpxb4iCiAgICBJRFNfU0hFTEwgICAgICAgICAgICAgICAivL8iCiAgICBJRFNfVElUTEVGTVQgICAgICAgICAgICAiJXMgLSAlcyIKICAgIElEU19OT19JTVBMICAgICAgICAgICAgICK+xsH3ILG4x/a+yLXKIgogICAgSURTX1dJTkVfRklMRSAgICAgICAgICAgIldpbmUgxsTAzyIKfQoKU1RSSU5HVEFCTEUKewogICAgSURTX0NPTF9OQU1FICAgICAgICAgICAgIsDMuKciCiAgICBJRFNfQ09MX1NJWkUgICAgICAgICAgICAixamx4iIKICAgIElEU19DT0xfQ0RBVEUgICAgICAgICAgICK9wyhDRGF0ZSkiCiAgICBJRFNfQ09MX0FEQVRFICAgICAgICAgICAiw8ooQURhdGUpIgogICAgSURTX0NPTF9NREFURSAgICAgICAgICAgIrrQKE1EYXRlKSIKICAgIElEU19DT0xfSURYICAgICAgICAgICAgICLAzrWmvbovvsbAzLPrteUiCiAgICBJRFNfQ09MX0xJTktTICAgICAgICAgICAiuLXFqSIKICAgIElEU19DT0xfQVRUUiAgICAgICAgICAgICK807y6IgogICAgSURTX0NPTF9TRUMgICAgICAgICAgICAgIrq4vsgiCgogICAgSURTX0ZSRUVfU1BBQ0VfRk1UICAgICAgIiVzIG9mICVzILvnv+uwobTJIgp9Cg==