LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDYgQW5kcmFzIEtvdmFjcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCi8qIEh1bmdhcmlhbiBSZXNvdXJjZXMgKi8KCkxBTkdVQUdFIExBTkdfSFVOR0FSSUFOLCBTVUJMQU5HX05FVVRSQUwKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3p0cuFjafNzIEFkYXRi4XppcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzenRy4WNp83MgYWRhdGLhemlzIGbhamwgJmltcG9ydOFs4XNhLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzenRy4WNp83MgYWRhdGLhemlzIGbhamwgJmV4cG9ydOFs4XNhLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDc2F0bGFrb3rhcyBo4WzzemF0aSByZWdpc3p0cuFjafNzIGFkYXRi4Xppc2hvei4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJMZXbhbGFzenThcyBhIGjhbPN6YXRpIGEmZGF0YuF6aXNy82wuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk55b210YXThc1x0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiS2kmbOlw6XMiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiU3omZXJrZXN6dOlzIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk3zZG9z7XThcyIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJtpqIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImS3VsY3MiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZTenRyaW5nIOlydOlrIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbuFyaXMg6XJ06WsiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQg6XJ06WsiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImTXVsdGkgU3RyaW5nIFZhbHVlIiwgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVPZybOlzXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImwXRuZXZleulzXHRGMiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJLdWwmY3Nu6XYgbeFzb2zhc2EiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS2VyZXPpc1x0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJLJvZ2ZXRrZXr1IGtlcmVz6XNlXHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZO6XpldCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIsFsbGEmcG90c29yIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlN66XR24SZsYXN6dOFzIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJGJnJpc3PtdOlzXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiS2VkJnZlbmNlayIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkhvenrhJmFk4XMgYSBrZWR2ZW5jZWtoZXouLi4iLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiVPYmcmzpcyBhIGtlZHZlbmNla2L1bC4uLiIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZT+mfzIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiUyb6Z/MgdOltYWv2cvZrXHRGMSIsICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzenRy4WNp83MgJmFkYXRi4XppcyBzemVya2VzenT1IG7pdmplZ3llIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgovKgogKiBEaWFsb2cKICovCgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS2VyZXPpcyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJLZXJlc+lzOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIktlcmVz6XMgaXR0OiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIkt1bGNzb2siLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiyXJ06WsgbmV2ZWsiLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiyXJ06WsgdGFydGFsbWFrIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJDc2FrIHRlbGplcyBzevZ2ZWciLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICJLZXJlc+lzIixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkJleuFy4XMiLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIktlZHZlbmMgaG96euFhZOFzYSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJO6XY6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsNDAsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJLZWR2ZW5jIHT2cmzpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTul2OiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDczLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTenRyaW5nIHN6ZXJrZXN6dOlzZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBuZXZlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLJcnTpayBhZGF0OiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiTelnc2UiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgc3plcmtlc3p06XNlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIG5ldmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIslydOlrIGFkYXQ6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQWxhcCIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIkhleGFkZWNpbeFsaXMiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW3hbGlzIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJN6WdzZSIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQmlu4XJpcyBzemVya2VzenTpc2UiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiyXJ06WsgbmV2ZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiyXJ06WsgYWRhdDoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIk3pZ3NlIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk7pdiIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJU7XB1cyIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJBZGF0IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBheiBlZ+lzeiByZWdpc3p0cuFjafNzIGFkYXRi4Xppc3NhbCB09nJ06W71IG11bmvhaG96IgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBheiDpcnTpayDpcyBrdWxjc3N6ZXJrZXN6dOlzaGV6IgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBhIHJlZ2lzenRy4WNp83MgYWRhdGLhemlzIGFibGFrIHRlc3RyZXN6YWLhc+F2YWwga2FwY3NvbGF0YmFuIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIlBhcmFuY3Nva2F0IHRhcnRhbG1heiBhIGd5YWtyYW4gaG96euFm6XJ0IGt1bGNzb2tob3oiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiUGFyYW5jc29rYXQgdGFydGFsbWF6IGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SBz+mfzauFuYWsg6XMgaW5mb3Jt4WNp82rhbmFrIG1lZ2plbGVu7XTpc+loZXoiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiUGFyYW5jc29rYXQgdGFydGFsbWF6IPpqIGt1bGNzb2sg6XMg6XJ06WtlayBs6XRyZWhveuFz4WhveiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk3zZG9z7XRqYSBlZ3kg6XJ06WsgYWRhdOF0IgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkhvenrhYWQgZWd5IPpqIGt1bGNzb3QiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiSG96euFhZCBlZ3kg+mogc3p0cmluZyDpcnTpa2V0IgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkhvenrhYWQgZWd5IPpqIGJpbuFyaXMg6XJ06WtldCIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJIb3p64WFkIGVneSD6aiBkdXBsYXN68yDpcnTpa2V0IgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJFZ3kgc3r2dmVnZuFqbHQgaW1wb3J04WwgYSByZWdpc3p0cuFjafNzIGFkYXRi4Xppc2JhIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXogZWfpc3ogcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXN0IGtpZXhwb3J04WxqYSBlZ3kgc3r2dmVnZuFqbGJhIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthcGNzb2zzZGlrIGVneSB04XZvbGkgc3rhbe1082fpcCByZWdpc3p0cuFjafNzIGFkYXRi4Xppc+Fob3oiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVrYXBjc29s82RpayBlZ3kgdOF2b2xpIHN64W3tdPNn6XAgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXPhcvNsIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIktpbnlvbXRhdGphIGF6IGVn6XN6IHJlZ2lzenRy4WNp83MgYWRhdGLhemlzdCwgdmFneSBhbm5hayBlZ3kgculzeul0IgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiTWVnbnlpdGphIGEgUmVnaXN6dHLhY2nzcyBhZGF0YuF6aXMgc3plcmtlc3p09SBz+mfzauF0IiAqLwpJRF9IRUxQX0FCT1VUICAgICAgICAgICAiTWVnamVsZW7tdGkgYSBwcm9ncmFtIGluZm9ybeFjafNrYXQsIHZlcnpp83N64W1vdCwg6XMgYSBzemVyevVpIGpvZ290IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiS2ls6XAgYSBSZWdpc3p0cuFjafNzIGFkYXRi4XppcyBzemVya2VzenT1YvVsIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJLdWxjc29rYXQgYWQgaG96euEgYSBrZWR2ZW5jZWsgbGlzdOFob3oiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIkt1bGNzb2thdCB09nL2bCBhIGtlZHZlbmNlayBsaXN04WLzbCIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJNZWdqZWxlbu10aSB2YWd5IGVsdPxudGV0aSBheiDhbGxhcG90c29ydCIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICJNZWd24Wx0b3p0YXRqYSBhIGvpdCBhYmxha3Lpc3ogcGl67WNp82rhdCIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJGcmlzc+10aSBheiBhYmxha290IgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIlT2cmxpIGEga2lqZWz2bOlzdCIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICLBdG5ldmV6aSBhIGtpamVs9mzpc3QiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiQSBraWplbPZsdCBrdWxjcyBuZXbpdCBt4XNvbGphIGEgduFn82xhcHJhIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIk1lZ2tlcmVzIGVneSBzevZ2ZWdlcyBzenRyaW5nZXQgZWd5IGt1bGNzYmFuLCDpcnTpa2JlbiwgdmFneSBhZGF0YmFuIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIktlcmVzaSBhIGv2dmV0a2V69SBlbPVmb3JkdWzhc3QgYXogZWz1evUga2VyZXPpc3T1bCBrZXpkdmUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJIaWJhIgogICAgSURTX0JBRF9LRVkJCSAgICAiTmVtIHR1ZG9tIGxla+lybmkgYSBrdWxjc290OiAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIk5lbSB0dWRvbSBsZWvpcm5pIGF6IOlydOlrZXQ6ICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiTmVtIHR1ZG9tIGV6dCBhIHTtcHVz+iBrdWxjc290IHN6ZXJrZXN6dGVuaTogKCV1KSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJBeiDpcnTpayB0+mwgbmFneTogKCV1KSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICLJcnTpa3T2cmzpcyBq83bhaGFneeFzYSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJCaXp0b3MgaG9neSB09nL2bG5pIHN6ZXJldG7pIGEoeikgJyVzJyBrdWxjc290PyIKICAgIElEU19ERUxFVEVfQk9YX1RFWFRfTVVMVElQTEUgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlc2UgdmFsdWVzPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICLaaiBrdWxjcyAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAi2mog6XJ06WsgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIkEoeikgJyVzJyBrZXJlc+lzaSBraWZlamV66XMgbmVtIHRhbOFsaGF08yIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=