LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogQnVsZ2FyaWFuIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDUgTWlsa28gS3JhY2hvdW5vdgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgojaW5jbHVkZSAiY29uZmlnLmgiICAgLyogTmVlZGVkIGZvciB0aGUgUEFDS0FHRV9TVFJJTkcgZGVmaW5pdGlvbiAqLwojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfQlVMR0FSSUFOLCBTVUJMQU5HX0RFRkFVTFQKCklEUl9XSU5FQ0ZHIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLN4PHy8O7p6uAiLCBJRENfQVVESU9fQ09ORklHVVJFCiAgICBFTkQKRU5ECgpJRERfQUJPVVRDRkcgRElBTE9HRVggMCwgMCwgMjYwLCAyNzAKU1RZTEUgV1NfQ0hJTEQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgIFBBQ0tBR0VfU1RSSU5HLElEQ19TVEFUSUMsMTE5LDE3LDEyMCw4CiAgICBDT05UUk9MICAgICAgICAgSURCX1dJTkUsSURDX1NUQVRJQywiU3RhdGljIixTU19CSVRNQVAgLDE1LDE3LDE1NywxMTEKICAgIExURVhUICAgICAgICAgICAiaHR0cDovL3d3dy53aW5laHEub3JnLyIsSURDX1NUQVRJQywxMTksMzEsMTA2LDgKLyoKICAgIExURVhUICAgICAgICAgICAi0uDn6CDh6OHr6O7y5ergIOUg8eLu4e7k5e0g8e708vPl8C4gzO7m5fLlIOTgIP8g8ODn7/Du8fLw4O3/4uDy5SDoL+jr6CDv8O7s5e3/8uUg7/DoIPPx6+7i6P/y4CDt4CBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIO/z4evo6vPi4O0g7vIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIC0g4uXw8ej/IDIuMSDt4CDr6Pbl7efgIOjr6CAo7+4g4uD4IOjn4e7wKSwg6u7/8u4g6CDk4CDlIPHr5eTi4PngIOLl8PHo/y4iLAoqLwogICAgTFRFWFQgICAgICAgICAgICJUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxMTksNDQsMTI0LDcyCiAgICBHUk9VUEJPWCAgICAgICAgIiBXaW5kb3dzIFJlZ2lzdHJhdGlvbiBJbmZvcm1hdGlvbiAiLCBJRENfU1RBVElDLCAxNSwgMTEwLCAyMzAsIDU1CiAgICBMVEVYVCAgICAgICAgICAgIk93bmVyOiIsIElEQ19TVEFUSUMsIDIyLCAxMjYsIDQwLCAyMAogICAgRURJVFRFWFQgICAgICAgIElEQ19BQlRfT1dORVIsIDc1LCAxMjYsIDE2MCwgMTMsIEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJPcmdhbml6YXRpb246IiwgSURDX1NUQVRJQywgMjIsIDE0MCwgNTAsIDIwCiAgICBFRElUVEVYVCAgICAgICAgSURDX0FCVF9PUkcsIDc1LCAxNDAsIDE2MCwgMTMsIEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUApFTkQKCklERF9BUFBDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIM3g8fLw7unq4CDt4CDv8Ojr7ubl7ej/8uAgIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogCiAgICAvKiBGSVhNRTogTWFrZSB0aGUgZXhwbGFuYXRpb24gY29tcHJlaGVuc2libGUgKi8KICAgIExURVhUICAgICAgICAgICAiV2luZSDs7ublIOTgIOjs6PLo8OAg8ODn6+j37egg4uXw8ejoIO3gIFdpbmRvd3Mg5+Ag4vH/6u4g8ODn6+j37e4g7/Do6+7m5e3o5S4g0uDn6CDx8vDg7ej24CDlIPHi+vDn4O3gIPEg7eDx8vDu6ero8uUg4iDB6OHr6O7y5eroIOggw/Dg9Ojq4Cwg5+Ag5OAg7O7m5fLlIOTgIO/w7uzl7f/y5Swg7vHi5e0g7uH57vHo8fLl7O3o8uUsIOgg8e/l9uj06Pft6PLlIOfgIO/w6Ovu5uXt6P/y4CDt4PHy8O7p6uguIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDIwLDIyNyw1MAogICAgQ09OVFJPTCAgICAgICAgICJBcHBsaWNhdGlvbnMiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw3MCwyMzAsMTEwCiAgICBQVVNIQlVUVE9OCSAgICAiJsTu4eDi/+3lIO3gIO/w6Ovu5uXt6OUuLi4iLElEQ19BUFBfQUREQVBQLCAxNSwyMDQsMTEyLDE0CiAgICBQVVNIQlVUVE9OCSAgICAiz/DlJuzg9eLg7eUg7eAg7/Do6+7m5e3o5S4uLiIsSURDX0FQUF9SRU1PVkVBUFAsIDEzMiwyMDQsMTEzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIibC5fDx6P8g7eAgV2luZG93czoiLElEQ19TVEFUSUMsMTcsMjI2LDg4LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDExMywyMjQsMTMzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCAgICAKRU5ECgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICIgzeDx8vDu6ergIO3gIO/w7ufu8Pbo8uUgIixJRENfU1RBVElDLDgsNCwyNDQsODQKICAgIENPTlRST0wgICAgICLQ4Ofw5fjoIO3gIERpcmVjdFgg7/Do6+7m5e3o//LgIOTgIOfg6uv+9+Lg8iDs6Pjq4PLgIixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIwLDIzMCw4CiAgICBDT05UUk9MICAgICAiQWxsb3cgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvICZkZWNvcmF0ZSB0aGUgd2luZG93cyIsSURDX0VOQUJMRV9ERUNPUkFURUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwzMiwyMzAsOAogICAgQ09OVFJPTCAgICAgItPv8ODi6+Xt6OXy7iDt4CDv8O7n7vD26PLlIO7yIOzl7ejk5vrw4CDt4CDv8O7n7vD26CIsSURDX0VOQUJMRV9NQU5BR0VELCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsNDQsMjMwLDgKICAgIENPTlRST0wgICAgICLF7PPr6PDg6SDi6PDy8+Dr5e0g8ODh7vLl7SDv6+7yIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDU2LDIzMCw4CiAgICBMVEVYVCAgICAgICAi0ODn7OXwIO3gIPDg4e7y7ej/IO/r7vI6IixJRENfREVTS1RPUF9TSVpFLDE1LDcwLDQ0LDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDksNzAsOCw4LFdTX0RJU0FCTEVECgkJICAgIAogICAgRURJVFRFWFQgICAgSURDX0RFU0tUT1BfV0lEVEgsNjQsNjgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgSURDX0RFU0tUT1BfSEVJR0hULDExNyw2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECgogICAgR1JPVVBCT1ggICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCw5NSwyNDQsNDkKICAgIExURVhUICAgICAgICLP7uTk8Prm6uAg7eAgVmVydGV4IFNoYWRlcjogIixJRENfU1RBVElDLDE1LDExMCw4MCwzMgogICAgQ09NQk9CT1ggICAgSURDX0QzRF9WU0hBREVSX01PREUsMTAwLDEwOCwxNDUsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT05UUk9MICAgICAi0ODn8OX46CBQaXhlbCBTaGFkZXIgKODq7iDx5SDv7uTk+vDm4CDu8iD14PDk8+Xw4CkiLElEQ19EM0RfUFNIQURFUl9NT0RFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTI2LDIzMCwxMAoKICAgIEdST1VQQk9YICAgICIgU2NyZWVuICZSZXNvbHV0aW9uICIsSURDX1NUQVRJQyw4LDE1MSwyNDQsOTMKICAgIENPTlRST0wgICAgICIiLCBJRENfUkVTX1RSQUNLQkFSLCAibXNjdGxzX3RyYWNrYmFyMzIiLFdTX1RBQlNUT1AsMTIsMTYxLDE4NywxNQogICAgRURJVFRFWFQgICAgSURDX1JFU19EUElFRElULDIwNCwxNjEsMjMsMTMsRVNfTlVNQkVSfFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICJkcGkiLElEQ19TVEFUSUMsMjM1LDE2MywxMCw4CiAgICBMVEVYVCAgICAgICAiVGhpcyBpcyBhIHNhbXBsZSB0ZXh0IHVzaW5nIDEwIHBvaW50IFRhaG9tYSIsSURDX1JFU19GT05UX1BSRVZJRVcsMTUsMTgxLDIzMCw1NQpFTkQKCklERF9ETExDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIERMTCDn4Ozl7eggIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIsLx/+rgIOTo7eDs6Pft7iDx4vrw5+Dt4CDh6OHr6O7y5ergIOzu5uUg5OAg4frk5SDu6uDn4O3gIOrg8u4g4uPw4OTl7eAgKO7x6OPz8OXt4CDu8iBXaW5lKSDo6+gg8e7h8fLi5e3gICji5+Xy4CDu8iBXaW5kb3dzIOjr6CDu8ejj8/Dl7eAg7vIg7/Do6+7m5e3o5fLuKS4iCiAgICAgICAgICAgICAgICAgICAgLElEQ19TVEFUSUMsMTYsMTYsMjIwLDMyCiAgICBMVEVYVCAgICAgICAgICAgIs3u4uAg4ejh6+ju8uX37eAg5+Ds/+3gOiIsSURDX1NUQVRJQywxNiw1OCwxMDAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19ETExDT01CTywxNiw2OCwxNDAsMTQsQ0JTX0RST1BET1dOIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVCB8IENCU19MT1dFUkNBU0UKICAgIFBVU0hCVVRUT04gICAgICAiJsTu4eDi6CIsSURDX0RMTFNfQURERExMLCAxNjQsNjgsODIsMTMsQlNfREVGUFVTSEJVVFRPTiAKICAgIExURVhUICAgICAgICAgICAi0fr55fHy4vPi4PnoIOfg7OXt6DoiLElEQ19TVEFUSUMsMTYsODYsMTAwLDgKICAgIExJU1RCT1ggICAgICAgICBJRENfRExMU19MSVNULDE2LDk2LDE0MCwxNDAsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiJtDl5ODq8ujw4OkiLElEQ19ETExTX0VESVRETEwsMTY0LDk2LDgyLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIs/w5Sbs4PXt6CIsSURDX0RMTFNfUkVNT1ZFRExMLDE2NCwxMTQsODIsMTQgCkVORAoKSUREX0xPQURPUkRFUiBESUFMT0cgRElTQ0FSREFCTEUgODAsIDkwLCAxNjAsIDkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLQ5eTg6vLo8ODt5SDt4CDn4Oz/7eAiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiINDl5CDt4CDn4PDl5uTg7eUgIixJRENfU1RBVElDLDgsNCwxNDQsNjYKICAgIENPTlRST0wgICAgICAgICAiJsLj8ODk5e3gIChXaW5lKSIsSURDX1JBRF9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCwxNiwxNCwxMTUsMTAKICAgIENPTlRST0wgICAgICAgICAiJtHu4fHy4uXt4CAoV2luZG93cykiLElEQ19SQURfTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMjQsMTE1LDEwCiAgICBDT05UUk9MICAgICAgICAgIsIm4/Dg5OXt4Cwg7+7x6+Ug8e7h8fLi5e3gIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMzQsMTE1LDEwCiAgICBDT05UUk9MICAgICAgICAgItHuJuHx8uLl7eAsIO/u8evlIOLj8ODk5e3gIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsMTE1LDEwCiAgICBDT05UUk9MICAgICAgICAgIibH4OHw4O3oIixJRENfUkFEX0RJU0FCTEUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiw1NCwxMTUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMjgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAizvLs5e3oIixJRENBTkNFTCw3Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgz/Dl7eDx7vfi4O3lIO3gIPPx8vDu6fHy4uDy4CAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiRmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIG1vdW50IG1hbmFnZXIsIHRoZSBkcml2ZSBjb25maWd1cmF0aW9uIGNhbm5vdCBiZSBlZGl0ZWQuIiwgSURDX1NUQVRJQ19NT1VOVE1HUl9FUlJPUiwgMTUsMzAsMjIwLDc2CiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9EUklWRVMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTgsMjMyLDc2CiAgICBQVVNIQlVUVE9OICAgICAgIibE7uHg4uguLi4iLElEQ19CVVRUT05fQURELDE1LDk4LDQ3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIs/w5Sbs4PXt6CIsSURDX0JVVFRPTl9SRU1PVkUsNjYsOTgsNDcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJs7y6vDo6S4uLiIsSURDX0JVVFRPTl9BVVRPREVURUNULDE5Nyw5OCw0OSwxNAoKICAgIC8qIGVkaXRpbmcgZHJpdmUgZGV0YWlscyAqLwogICAgTFRFWFQgICAgICAgICAgICImz/ryOiIsSURDX1NUQVRJQ19QQVRILDE1LDEyMywyMCw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfUEFUSCw0MSwxMjAsMTYwLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICImyOfh5fDoLi4uIixJRENfQlVUVE9OX0JST1dTRV9QQVRILDIwNiwxMjAsNDAsMTMKICAgIAogICAgTFRFWFQgICAgICAgICAgICIm0ujvOiIsSURDX1NUQVRJQ19UWVBFLDE1LDEzOCwyMSwxMAogICAgQ09NQk9CT1ggICAgICAgIElEQ19DT01CT19UWVBFLDQxLDEzNSw3Nyw2MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIAogICAgTFRFWFQgICAgICAgICAgICLF8ujq5fIg6CDx5fDo5e0g7e7s5fAiLElEQ19MQUJFTFNFUklBTF9TVEFUSUMsMTUsMTU1LDk1LDEwCiAgICAKICAgIFBVU0hCVVRUT04gICAgICAi5O7v+uvt6PLl6+3oIO3g8fLw7unq6CIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTQ2LDEzNiwxMDAsMTMKICAgIENPTlRST0wgICAgICAgICAizvLq8OjpIO7yICbz8fLw7unx8uLu8u46IixJRENfUkFESU9fQVVUT0RFVEVDVCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTY2LDkzLDEwCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfREVWSUNFLDI3LDE3NiwxNzQsMTMsRVNfQVVUT0hTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiyOcm4eXw6C4uLiIsSURDX0JVVFRPTl9CUk9XU0VfREVWSUNFLDIwNiwxNzYsNDAsMTMKICAgIENPTlRST0wgICAgICAgICAix+Dk4OkgJvD69+3uOiIsSURDX1JBRElPX0FTU0lHTiwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTk1LDY5LDEwCgogICAgTFRFWFQgICAgICAgICAgICImxfLo6uXyOiIsSURDX1NUQVRJQ19MQUJFTCwzMywyMDgsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9MQUJFTCw2MywyMDUsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIibN7uzl8DoiLElEQ19TVEFUSUNfU0VSSUFMLDMzLDIyNSwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1NFUklBTCw2MywyMjEsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICLP7urg5+Lg6SD04Onr7uLl8uUsIOfg7+734uD56CDxIPLu9+rgIixJRENfU0hPV19ET1RfRklMRVMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw4LDI2MCwyMzAsOApFTkQKCklERF9BVURJT0NGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgyOfh7vAg7eAg5PDg6eLl8CAiLElEQ19TVEFUSUMsOCw0LDI0NCwyMTAKICAgIExURVhUICAgICAgICAgICAiyOfh5fDl8uUg5+Lz6u7iIOTw4Oni5fAg6uDy7iDx6+7m6PLlIO7y7OXy6uAg7eAg5uXr4O3o/yDu8iDi4PEg5PDg6eLl8C4gzO7m5SDk4CDn4OHw4O3o8uUg5+Lz6uAg6uDy7iDt5SDo5+Hl8OXy5SDt6Org6vriIOTw4Oni5fAuIMjn4ejw4O3l8u4g7eAg7+7i5fflIO7yIOXk6O0g5PDg6eLl8CDt5SDlIO/w5e/u8Pr36PLl6+3uLiDM7ublIOTgIO3g8fLw7ujy5SDk8ODp4uXw4CDq4PLuIPnw4Ort5fLlIOL68PXzIO3l4+4g8SDk5fHt6P8g4fPy7u0g7eAg7Oj46uDy4C4iLElEQ19TVEFUSUMsMTUsMjAsMjI3LDUwCiAgICBDT05UUk9MICAgICAgICAgItPx8vDu6fHy4uAiLElEQ19BVURJT19UUkVFLCJTeXNUcmVlVmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QLDE1LDcwLDE0MCwxMzUKICAgIFBVU0hCVVRUT04gICAgICAiJlRlc3QgU291bmQiLElEQ19BVURJT19URVNULDE3MCw3MCw1OSwxNAogICAgUFVTSEJVVFRPTiAgICAgICLK7u3y8O7r5e0g7+Dt5esiLElEQ19BVURJT19DT05UUk9MX1BBTkVMLDE3MCw5MCw2OSwxNAogICAgR1JPVVBCT1ggICAgICAgICIgRGlyZWN0U291bmQgIixJRENfU1RBVElDLDgsMjIwLDI0NCw0NQogICAgTFRFWFQJICAgICLV4PDk8+Xw7e4g8/Hq7vDl7ejlOiAiLElEQ19TVEFUSUMsMTUsMjMwLDkwLDEwCiAgICBDT01CT0JPWAkgICAgSURDX0RTT1VORF9IV19BQ0NFTCwxMDAsMjI4LDE1MCw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiRGVmYXVsdCAmU2FtcGxlIFJhdGU6IixJRENfU1RBVElDLDE1LDI0Nyw3MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9SQVRFUyw5MCwyNDUsNDIsNzYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkRlZmF1bHQgJkJpdHMgUGVyIFNhbXBsZToiLElEQ19TVEFUSUMsMTM3LDI0Nyw4MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9CSVRTLDIyMCwyNDUsMzAsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIML67fjl7SDi6OQgIixJRENfU1RBVElDLDgsNCwyNDQsMTA2CiAgICBMVEVYVCAgICAgICAgICAgItLl7OA6IixJRENfU1RBVElDLDE1LDE2LDEzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1RIRU1FQ09NQk8sMTUsMjQsMTMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICLI7fHy4Ovo8ODpIPLl7OAuLi4iLElEQ19USEVNRV9JTlNUQUxMLDE1MiwyMyw5MywxNAogICAgTFRFWFQgICAgICAgICAgICLW4v/yOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw0MCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDQ4LDExMiwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAi0ODn7OXwOiIsSURDX1RIRU1FX1NJWkVURVhULDEzNSw0MCwxMTAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9TSVpFQ09NQk8sMTM1LDQ4LDExMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiSXRlbToiLElEQ19TVEFUSUMsMTUsNjQsMTEyLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfU1lTUEFSQU1fQ09NQk8sMTUsNzQsMTEyLDEyMCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVAogICAgTFRFWFQgICAgICAgICAgICJDb2xvcjoiLElEQ19TWVNQQVJBTV9DT0xPUl9URVhULDEzNSw2NCwyNSw4LFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIiIsSURDX1NZU1BBUkFNX0NPTE9SLDEzNSw3NCwyNSwxMyxXU19ESVNBQkxFRCB8IEJTX09XTkVSRFJBVwogICAgTFRFWFQgICAgICAgICAgICJTaXplOiIsSURDX1NZU1BBUkFNX1NJWkVfVEVYVCwxNjYsNjQsMzAsOCxXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19TWVNQQVJBTV9TSVpFLDE2Niw3NCwyMywxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19TWVNQQVJBTV9TSVpFX1VELFVQRE9XTl9DTEFTUyxVRFNfU0VUQlVERFlJTlQgfCBXU19ESVNBQkxFRCwxODcsNzQsMTUsMTMKICAgIFBVU0hCVVRUT04gICAgICAiRm9udCIsSURDX1NZU1BBUkFNX0ZPTlQsMjA4LDc0LDM3LDEzLFdTX0RJU0FCTEVECiAgICBHUk9VUEJPWCAgICAgICAgIiDP4O/q6CAiLElEQ19TVEFUSUMsOCwxMTQsMjQ0LDEwMAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0dmlldyIsSURDX0xJU1RfU0ZQQVRIUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTI2LDIzMCw2NAogICAgQ09OVFJPTCAgICAgICAgICLC8Prn6uAg6vrsOiIsSURDX0xJTktfU0ZQQVRILCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QfFdTX0RJU0FCTEVELDE1LDE5NSw1NSwxMwogICAgRURJVFRFWFQgICAgICAgICBJRENfRURJVF9TRlBBVEgsNzAsMTk1LDE0MCwxMyxFU19BVVRPSFNDUk9MTHxXU19UQUJTVE9QfFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIsjn4e7wIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19UQUJfQVBQTElDQVRJT05TICAgICLP8Ojr7ubl7ej/IgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIsHo4evo7vLl6ugiCiAgICBJRFNfVEFCX0RSSVZFUyAgICAgICAgICAi0/Hy8O7p8fLi4CIKICAgIElEU19DSE9PU0VfUEFUSCAgICAgICAgICLI5+Hl8OXy5SBVbml4IOTo8OXq8u7w6P8iCiAgICBJRFNfSElERV9BRFZBTkNFRCAgICAgICAi0erw6Okg5O7v+uvt6PLl6+3o8uUiCiAgICBJRFNfU0hPV19BRFZBTkNFRCAgICAgICAiz+7q4OboIOTu7/rr7ejy5evt6PLlIgogICAgSURTX05PVEhFTUUgICAgICAgICAgICAgIijh5ecg8uXs4CkiCiAgICBJRFNfVEFCX0dSQVBISUNTICAgICAgICAiw/Dg9Ojq4CIKICAgIElEU19UQUJfREVTS1RPUF9JTlRFR1JBVElPTiAiyO3y5ePw4Pbo/yIKICAgIElEU19UQUJfQVVESU8gICAgICAgICAgICLH4vPqIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIs7y7e7x7e4iCiAgICBJRFNfV0lORUNGR19USVRMRSAgICAgICAizeDx8vDu6eroIO3gIFdpbmUiCiAgICBJRFNfV0lORUNGR19USVRMRV9BUFAgICAizeDx8vDu6eroIO3gIFdpbmUg5+AgJXMiCiAgICBJRFNfVEhFTUVGSUxFICAgICAgICAgICAi1ODp6+7i5SDxIPLl7OggKCoubXNzdHlsZXM7ICoudGhlbWUpIgogICAgSURTX1RIRU1FRklMRV9TRUxFQ1QgICAgIsjn4eXw5fLlIPTg6esg8SDy5ezgIgogICAgSURTX0FVRElPX01JU1NJTkcgICAgICAgIs3/7OAg7eDx8vDu5e0g5+Lz6u7iIOTw4Oni5fAuXG5cbsfgIOLg8SDh5fjlIOjn4fDg7SDk8ODp4uXwIO/uIO/u5PDg5+Ho8ODt5S5cbszu5uUg5OAg4+4g6Ofv7uvn4uDy5SDo6+gg5OAg6Ofh5fDl8uUg5PDz4y5cblxu0vD/4eLgIOTgIPnw4Ort5fLlIO3gIM/u8uL68OToLCDn4CDk4CDi6+Xn5SDiIPHo6+Ag6Ofh7vDgLiIKICAgIElEU19TSEVMTF9GT0xERVIgICAgICAgICLP4O/q4CIKICAgIElEU19MSU5LU19UTyAgICAgICAgICAgICLC8Prn6uAg6vrsIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRExMX1dBUk5JTkcgICAgICAgICAiz/Du7P/t4PLgIO3gIPDl5OAg7eAg5+Dw5ebk4O3lIO3lIOUg7/Dl7+7w+vfo8uXr7eAuINHo4/Pw7egg6+gg8fLlLCD35SDo8erg8uUg5OAg7eDv8ODi6PLlIPLu4uA/IgogICAgSURTX0RMTF9XQVJOSU5HX0NBUFRJT04gIsLt6Ozg7ejlOiDx6PHy5ezt4CDh6OHr6O7y5ergIgogICAgSURTX0RMTF9OQVRJVkUgICAgICAgICAgIvHu4fHy4uXt4CIKICAgIElEU19ETExfQlVJTFRJTiAgICAgICAgICLi4/Dg5OXt4CIKICAgIElEU19ETExfTkFUSVZFX0JVSUxUSU4gICLx7uHx8uLl7eAsIOLj8ODk5e3gIgogICAgSURTX0RMTF9CVUlMVElOX05BVElWRSAgIuLj8ODk5e3gLCDx7uHx8uLl7eAiCiAgICBJRFNfRExMX0RJU0FCTEVEICAgICAgICAi5+Dh8ODt5e3gIgogICAgSURTX0RFRkFVTFRfU0VUVElOR1MgICAgIkRlZmF1bHQgU2V0dGluZ3MiCiAgICBJRFNfRVhFQ1VUQUJMRV9GSUxURVIgICAiV2luZSBQcm9ncmFtcyAoKi5leGUsKi5leGUuc28pXDAqLmV4ZTsqLmV4ZS5zb1wwIgogICAgSURTX1VTRV9HTE9CQUxfU0VUVElOR1MgIlVzZSBnbG9iYWwgc2V0dGluZ3MiCiAgICBJRFNfU0VMRUNUX0VYRUNVVEFCTEUgICAiU2VsZWN0IGFuIGV4ZWN1dGFibGUgZmlsZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1NIQURFUl9NT0RFX0hBUkRXQVJFICAgICJIYXJkd2FyZSIKICAgIElEU19TSEFERVJfTU9ERV9OT05FICAgICAgICAiTm9uZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0RSSVZFX1VOS05PV04gICAgICAgICAgICJBdXRvZGV0ZWN0IgogICAgSURTX0RSSVZFX0ZJWEVEICAgICAgICAgICAgICJMb2NhbCBoYXJkIGRpc2siCiAgICBJRFNfRFJJVkVfUkVNT1RFICAgICAgICAgICAgIk5ldHdvcmsgc2hhcmUiCiAgICBJRFNfRFJJVkVfUkVNT1ZBQkxFICAgICAgICAgIkZsb3BweSBkaXNrIgogICAgSURTX0RSSVZFX0NEUk9NICAgICAgICAgICAgICJDRC1ST00iCiAgICBJRFNfRFJJVkVfTEVUVEVSU19FWENFRURFRCAgIllvdSBjYW5ub3QgYWRkIGFueSBtb3JlIGRyaXZlcy5cblxuRWFjaCBkcml2ZSBtdXN0IGhhdmUgYSBsZXR0ZXIsIGZyb20gQSB0byBaLCBzbyB5b3UgY2Fubm90IGhhdmUgbW9yZSB0aGFuIDI2IgogICAgSURTX1NZU1RFTV9EUklWRV9MQUJFTCAgICAgICJTeXN0ZW0gZHJpdmUiCiAgICBJRFNfQ09ORklSTV9ERUxFVEVfQyAgICAgICAgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgZHJpdmUgQz9cblxuTW9zdCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBleHBlY3QgZHJpdmUgQyB0byBleGlzdCwgYW5kIHdpbGwgZGllIG1lc3NpbHkgaWYgaXQgZG9lc24ndC4gSWYgeW91IHByb2NlZWQgcmVtZW1iZXIgdG8gcmVjcmVhdGUgaXQhIgogICAgSURTX0NPTF9EUklWRUxFVFRFUiAgICAgICAgICJMZXR0ZXIiCiAgICBJRFNfQ09MX0RSSVZFTUFQUElORyAgICAgICAgIkRyaXZlIE1hcHBpbmciCiAgICBJRFNfTk9fRFJJVkVfQyAgICAgICAgICAgICAgIllvdSBkb24ndCBoYXZlIGEgZHJpdmUgQy4gVGhpcyBpcyBub3Qgc28gZ3JlYXQuXG5cblJlbWVtYmVyIHRvIGNsaWNrICdBZGQnIGluIHRoZSBEcml2ZXMgdGFiIHRvIGNyZWF0ZSBvbmUhXG4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BQ0NFTF9GVUxMICAgICAgICAgICAgICAiRnVsbCIKICAgIElEU19BQ0NFTF9TVEFOREFSRCAgICAgICAgICAiU3RhbmRhcmQiCiAgICBJRFNfQUNDRUxfQkFTSUMgICAgICAgICAgICAgIkJhc2ljIgogICAgSURTX0FDQ0VMX0VNVUxBVElPTiAgICAgICAgICJFbXVsYXRpb24iCiAgICBJRFNfRFJJVkVSX0FMU0EgICAgICAgICAgICAgIkFMU0EgRHJpdmVyIgogICAgSURTX0RSSVZFUl9FU09VTkQgICAgICAgICAgICJFc291bkQgRHJpdmVyIgogICAgSURTX0RSSVZFUl9PU1MgICAgICAgICAgICAgICJPU1MgRHJpdmVyIgogICAgSURTX0RSSVZFUl9KQUNLICAgICAgICAgICAgICJKQUNLIERyaXZlciIKICAgIElEU19EUklWRVJfTkFTICAgICAgICAgICAgICAiTkFTIERyaXZlciIKICAgIElEU19EUklWRVJfQVVESU9JTyAgICAgICAgICAiQXVkaW8gSU8gKFNvbGFyaXMpIERyaXZlciIKICAgIElEU19EUklWRVJfQ09SRUFVRElPICAgICAgICAiQ29yZUF1ZGlvIERyaXZlciIKICAgIElEU19PUEVOX0RSSVZFUl9FUlJPUiAgICAgICAiQ291bGRuJ3Qgb3BlbiAlcyEiCiAgICBJRFNfU09VTkREUklWRVJTICAgICAgICAgICAgIlNvdW5kIERyaXZlcnMiCiAgICBJRFNfREVWSUNFU19XQVZFT1VUICAgICAgICAgIldhdmUgT3V0IERldmljZXMiCiAgICBJRFNfREVWSUNFU19XQVZFSU4gICAgICAgICAgIldhdmUgSW4gRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JRElPVVQgICAgICAgICAiTUlESSBPdXQgRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JRElJTiAgICAgICAgICAiTUlESSBJbiBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfQVVYICAgICAgICAgICAgICJBdXggRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX01JWEVSICAgICAgICAgICAiTWl4ZXIgRGV2aWNlcyIKICAgIElEU19VTkFWQUlMQUJMRV9EUklWRVIgICAgICAiRm91bmQgZHJpdmVyIGluIHJlZ2lzdHJ5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSFcblxuUmVtb3ZlIFwiJXNcIiBmcm9tIHJlZ2lzdHJ5PyIKICAgIElEU19XQVJOSU5HICAgICAgICAgICAgICAgICAiV2FybmluZyIKRU5ECg==