LyoKICogV2luZUZpbGUKICogRGFuaXNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDggSmVucyBBbGJyZXRzZW4gPGplbnNAYWxicmV0c2VuLmRrPgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfREFOSVNILCBTVUJMQU5HX0RFRkFVTFQKCi8qIE1lbnUgKi8KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkZpbCIgIHsKICAgICAgICBNRU5VSVRFTSAiJsViZW5cdEVudGVyIiwgICAgICAgICAgICAgICAgICAgICBJRF9BQ1RJVkFURQogICAgICAgIE1FTlVJVEVNICImRmx5dC4uLlx0RjciLCAgICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImS29waWVyLi4uXHRGOCIsICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfQ09QWQogICAgICAgIE1FTlVJVEVNICImUOUga2xpcHBlYm9yZGV0Li4uXHRGOSIsICAgICAgICAgIDExOAogICAgICAgIE1FTlVJVEVNICImU2xldFx0RGVsIiwgICAgICAgICAgICAgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIk9tZPhiLi4uIiwgICAgICAgICAgICAgICAgICAgICAgICAgMTA5CiAgICAgICAgTUVOVUlURU0gIiZFZ2Vuc2thcGVyLi4uXHRBbHQrRW50ZXIiLCAgICAgICAgSURfRURJVF9QUk9QRVJUSUVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIksmb21wcmltZXIuLi4iLCAgICAgICAgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIkRlJmtvbXByaW1lci4uLiIsICAgICAgICAgICAgICAgICAgMTIwCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkv4JnIuLi4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgSURfUlVOCiAgICAgICAgTUVOVUlURU0gIiZVZHNrcml2Li4uIiwgICAgICAgICAgICAgICAgICAgICAgMTAyCiAgICAgICAgTUVOVUlURU0gIkFzc29jaWVyLi4uIiwgICAgICAgICAgICAgICAgICAgICAgMTAzCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIk9wciZldCBmb2xkZXIuLi4iLCAgICAgICAgICAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIlMm+GcuLi4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0CiAgICAgICAgTUVOVUlURU0gIiZW5mxnIGZpbGVyLi4uIiwgICAgICAgICAgICAgICAgICAgMTE2CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiJkFmc2x1dFx0QWx0K1giLCAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAiJkFmc2x1dCIsICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIiZEaXNrZXR0ZSIgIHsKICAgICAgICBNRU5VSVRFTSAiJktvcGllciBkaXNrZXR0ZS4uLiIsICAgICAgICAgICAgICAyMDEKICAgICAgICBNRU5VSVRFTSAiU+Z0IHZvbCZ1bWVuYXZuLi4uIiwgICAgICAgICAgICAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZvcm1hdGVyIGRpc2tldHRlLi4uIiwgICAgICAgICAgICBJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CiAgICAgICAgTUVOVUlURU0gIk9wcmV0IHN5c3RlJm1kaXNrZXR0ZS4uLiIsICAgICAgICAgLTEgLypUT0RPKi8KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZUaWxzbHV0IG5ldHbmcmtzZHJldiIsICAgICAgICAgICAgSURfQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gIkZyYWtvYmwgJm5ldHbmcmtzZHJldiIsICAgICAgICAgICAgSURfRElTQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkRlbCBzb20uLi4iLCAgICAgICAgICAgICAgICAgICAgICAgMjU0CiAgICAgICAgTUVOVUlURU0gIkZqZSZybiBkZWx0IHJlc291cnNlLi4uIiwgICAgICAgICAgMjU1CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlbmbGcgJmVuaGVkLi4uIiwgICAgICAgICAgICAgICAgICAgMjUxCiAgICB9CgogICAgUE9QVVAgIkthdGFsb2dlJnIiICB7CiAgICAgICAgTUVOVUlURU0gIiZO5nN0ZSBuaXZlYXVcdCsiLCAgICAgICAgICAgICAgICAgMzAxCiAgICAgICAgTUVOVUlURU0gIlVkdmlkIHQmcuZcdCoiLCAgICAgICAgICAgICAgICAgICAgMzAyCiAgICAgICAgTUVOVUlURU0gIlVkdmlkICZhbGxlXHRTdHJnKyoiLCAgICAgICAgICAgICAgMzAzCiAgICAgICAgTUVOVUlURU0gIktvbGFwcyAmdHLmXHQtIiwgICAgICAgICAgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNYXJrZXIgdW5kZXJlbGVtZW50ZXIiLCAgICAgICAgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIiZWaXMiICB7CiAgICAgICAgTUVOVUlURU0gIlQmcuYgb2cgZm9sZGVyIiwgICAgICAgICAgICAgICAgICAgNDEzCiAgICAgICAgTUVOVUlURU0gIkt1biB0cibmIiwgICAgICAgICAgICAgICAgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIkt1biAmZm9sZGVyIiwgICAgICAgICAgICAgICAgICAgICAgNDEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWaXNuaW5nIG9wZGVsaW5nIiwgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTmF2biIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImQWxsZSBmaWxkZXRhbGplciIsICAgICAgICAgICAgICAgIElEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiRGVsJnZpc2UgZGV0YWxqZXIuLi4iLCAgICAgICAgICAgICBJRF9WSUVXX1NFTEVDVEVEX0FUVFJJQlVURVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNvcnRlciBlZnRlciBuYXZuIiwgICAgICAgICAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZXIgZWZ0ZXIgJnR5cGUiLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9UWVBFCiAgICAgICAgTUVOVUlURU0gIlNvcnRlciBlZnRlciBzdCb4cnJlbHNlIiwgICAgICAgICAgSURfVklFV19TT1JUX1NJWkUKICAgICAgICBNRU5VSVRFTSAiU29ydGVyIGVmdGVyICZkYXRvIiwgICAgICAgICAgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJGaWx0cmVyIG1lZCAnJicuLi4iLCAgICAgICAgICAgICAgIElEX1ZJRVdfRklMVEVSCiAgICB9CgogICAgUE9QVVAgIiZJbmRzdGlsbGluZ2VyIiAgewogICAgICAgIE1FTlVJVEVNICImQmVrcuZmdGVsc2UuLi4iLCAgICAgICAgICAgICAgICAgIDUwMQogICAgICAgIE1FTlVJVEVNICJTa3JpJmZ0dHlwZS4uLiIsICAgICAgICAgICAgICAgICAgIElEX1NFTEVDVF9GT05UCiAgICAgICAgTUVOVUlURU0gIlRpbHBhcyAmduZya3T4anNsaW5pZW4uLi4iLCAgICAgICAgNTEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlbmcmsmdPhqbGluaWUiLCAgICAgICAgICAgICAgICAgICAgSURfVklFV19UT09MX0JBUiwgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICImRW5oZWRzbGluaWUiLCAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZTdGF0dXNsaW5pZSIsICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJGJnVsZHNr5nJtXHRDdHJsK1NoaWZ0K1MiLCAgICAgICAgIElEX1ZJRVdfRlVMTFNDUkVFTgojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1pbmltZXIgdmVkIHN0YXJ0IiwgICAgICAgICAgICAgICA1MDQKICAgICAgICBNRU5VSVRFTSAiR2VtIGluZCZzdGlsbGluZ2VyIHZlZCBhZnNsdXRuaW5nIiw1MTEKICAgIH0KCgogICAgUE9QVVAgIiZTaWtrZXJoZWQiICB7CiAgICAgICAgTUVOVUlURU0gIlRpbGcmYW5nLi4uIiwgICAgICAgICAgICAgICAgICAgICA2MDUKICAgICAgICBNRU5VSVRFTSAiJkxvZ2b4cmluZy4uLiIsICAgICAgICAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICImRWplci4uLiIsICAgICAgICAgICAgICAgICAgICAgICAgNjA3CiAgICB9CgogICAgUE9QVVAgIlZpbmQmdWUiICB7CiAgICAgICAgTUVOVUlURU0gIk55dCAmdmluZHVlIiwgICAgICAgICAgICAgICAgICAgICAgSURfV0lORE9XX05FVwogICAgICAgIE1FTlVJVEVNICJLb3J0c3Rha1x0Q3RybCtGNSIsICAgICAgICAgICAgICAgIElEX1dJTkRPV19DQVNDQURFCiAgICAgICAgTUVOVUlURU0gIlN0aWwgJnZhbmRyZXQiLCAgICAgICAgICAgICAgICAgICAgSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICJTdGlsICZsb2RyZXRcdEN0cmwrRjQiLCAgICAgICAgICAgIElEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJPcmRuZSBhdXRvbWF0aXNrIiwgICAgICAgICAgICAgICAgIElEX1dJTkRPV19BVVRPU09SVAojZW5kaWYKICAgICAgICBNRU5VSVRFTSAiT3JkbmUgJnN5bWJvbGVyIiwgICAgICAgICAgICAgICAgICBJRF9XSU5ET1dfQVJSQU5HRQogICAgICAgIE1FTlVJVEVNICJPcGRhdGUmclx0RjUiLCAgICAgICAgICAgICAgICAgICAgIElEX1JFRlJFU0gKICAgIH0KCiAgICBQT1BVUCAiJkhq5mxwIiAgewogICAgICAgIE1FTlVJVEVNICJFbW5lciBpICZoauZscFx0RjEiLCAgICAgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiJlP4ZyBpIGhq5mxwLi4uXHRGMSIsICAgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIkJyJnVnIGFmIGhq5mxwXHRGMSIsICAgICAgICAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5mb3JtYXRpb24gb20gRmlsYmVoYW5kbGluZy4uLiIsSURfQUJPVVQKICAgIH0KfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJW5mxnIGRlc3RpbmF0aW9uIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZTdGk6IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxsZXIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkdlbm5lbXNlIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX0RJQUxPR19WSUVXX1RZUEUgRElBTE9HIERJU0NBUkRBQkxFIDE1LCAxMywgMTYxLCA5NwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZnRlciBmaWx0eXBlIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICImTmF2bjoiLC0xLDcsOCwyMiwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19WSUVXX1BBVFRFUk4sMzEsNyw2MywxMixFU19BVVRPSFNDUk9MTAogICAgR1JPVVBCT1ggICAgICAgICJGaWx0eXBlIiwtMSw3LDIzLDg3LDU2CiAgICBDT05UUk9MICAgICAgICAgIiZLYXRhbG9nZXIiLElEQ19WSUVXX1RZUEVfRElSRUNUT1JJRVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMywzMiw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICImUHJvZ3JhbW1lciIsSURDX1ZJRVdfVFlQRV9QUk9HUkFNUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDQzLDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIkRva3UmbWVudGVyIixJRENfVklFV19UWVBFX0RPQ1VNRU5UUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDU0LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZBbmRyZSBmaWxlciIsSURDX1ZJRVdfVFlQRV9PVEhFUlMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw2NSw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICJWaSZzIHNranVsdGUvc3lzdGVtZmlsZXIiLElEQ19WSUVXX1RZUEVfSElEREVOLAogICAgICAgICAgICAgICAgICAgICJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNyw4MSwxMDYsOQogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMDQsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGxlciIsSURDQU5DRUwsMTA0LDI0LDUwLDE0CkVORAoKSUREX0RJQUxPR19QUk9QRVJUSUVTIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjQ4LCAyMTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWdlbnNrYXBlciBmb3IgJXMiCkZPTlQgOCwgIk1TIFNhbnMgU2VyaWYiCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE5MSw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsbGVyIixJRENBTkNFTCwxOTEsMjksNTAsMTQKICAgIExURVhUICAgICAgICAgICAiJkZpbG5hdm46IiwtMSw3LDcsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9GSUxFTkFNRSw3MSw3LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiJkZ1bGwgc3RpOiIsLTEsNywxOCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1BBVEgsNzEsMTgsMTIwLDksIEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiU2lkc3Qg5m5kcmV0OiIsLTEsNywyOSw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0xBU1RDSEFOR0UsNzEsMjksMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJWZXJzaW9uOiIsLTEsNyw0MCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1ZFUlNJT04sNzEsNDAsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICImT3BoYXZzcmV0OiIsLTEsNyw1MSw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0NPUFlSSUdIVCw3MSw1MSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlN0+HJyZWxzZToiLC0xLDcsNjIsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9TSVpFLDcxLDYyLDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQXR0cmlidXR0ZXIiLC0xLDcsNzksMTU4LDQ2CiAgICBDT05UUk9MICAgICAgICAgIlNrJnJpdmViZXNreXR0ZXQiLElEQ19DSEVDS19SRUFET05MWSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiU2smanVsdCIsSURDX0NIRUNLX0hJRERFTiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJkFya2l2IixJRENfQ0hFQ0tfQVJDSElWRSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDEwMSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZTeXN0ZW0iLElEQ19DSEVDS19TWVNURU0sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5MiwxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICJLb21wciZpbWVyZXQiLElEQ19DSEVDS19DT01QUkVTU0VELCJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDExMSw2OCw5CiAgICBHUk9VUEJPWCAgICAgICAgIiZWZXJzaW9uaW5mb3JtYXRpb24iLC0xLDcsMTI5LDIzNCw3OQogICAgTElTVEJPWCAgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9UWVBFUywxMywxMzksMTA3LDYzLExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgRURJVFRFWFQgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9WQUxVRVMsMTIzLDEzOSwxMTEsNjMsRVNfTVVMVElMSU5FIHwgRVNfUkVBRE9OTFkgfCBXU19WU0NST0xMCkVORAoKClNUUklOR1RBQkxFCnsKICAgIElEU19GT05UX1NFTF9ETEdfTkFNRSAgICJBa3RpdmVyIHNrcmlmdGluZHN0aWxsaW5nZXIiCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiRmVqbCB2ZWQgdmFsZyBhZiBueSBza3JpZnR0eXBlLiIKfQoKU1RSSU5HVEFCTEUKewogICAgSURTX1dJTkVGSUxFICAgICAgICAgICAgIkZpbGJlaGFuZGxpbmciCiAgICBJRFNfRVJST1IgICAgICAgICAgICAgICAiRmVqbCIKICAgIElEU19ST09UX0ZTICAgICAgICAgICAgICJSb2RmaWxzeXN0ZW0iCiAgICBJRFNfVU5JWEZTICAgICAgICAgICAgICAiVW5peC1maWxzeXN0ZW0iCiAgICBJRFNfREVTS1RPUCAgICAgICAgICAgICAiU2tyaXZlYm9yZCIKICAgIElEU19TSEVMTCAgICAgICAgICAgICAgICJTa2FsIgogICAgSURTX1RJVExFRk1UICAgICAgICAgICAgIiVzIC0gJXMiCiAgICBJRFNfTk9fSU1QTCAgICAgICAgICAgICAiSWtrZSBpbXBsZW1lbnRlcmV0IGVuZG51IgogICAgSURTX1dJTkVfRklMRSAgICAgICAgICAgIkZpbGJlaGFuZGxpbmciCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19DT0xfTkFNRSAgICAgICAgICAgICJOYXZuIgogICAgSURTX0NPTF9TSVpFICAgICAgICAgICAgIlN0+HJyZWxzZSIKICAgIElEU19DT0xfQ0RBVEUgICAgICAgICAgICJDLWRhdG8iCiAgICBJRFNfQ09MX0FEQVRFICAgICAgICAgICAiQS1kYXRvIgogICAgSURTX0NPTF9NREFURSAgICAgICAgICAgIk0tZGF0byIKICAgIElEU19DT0xfSURYICAgICAgICAgICAgICJJbmRla3MvSW5vZGUiCiAgICBJRFNfQ09MX0xJTktTICAgICAgICAgICAiR2VudmVqZSIKICAgIElEU19DT0xfQVRUUiAgICAgICAgICAgICJBdHRyaWJ1dHRlciIKICAgIElEU19DT0xfU0VDICAgICAgICAgICAgICJTaWtrZXJoZWQiCgogICAgSURTX0ZSRUVfU1BBQ0VfRk1UICAgICAgIiVzIGFmICVzIGxlZGlnIgp9Cg==