LyoKICogUmVnZWRpdCBTd2VkaXNoIHJlc291cmNlcwogKgogKiBDb3B5cmlnaHQgMjAwOSBBbmRlcnMgSm9uc3NvbgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1NXRURJU0gsIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RlciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRlcmEgUmVnaXN0ZXJmaWwuLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGVyYSBSZWdpc3RlcmZpbC4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQW5zbHV0IHRpbGwgTuR0dmVya3NyZWdpc3Rlci4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImS29wcGxhIG5lciBmcuVuIE7kdHZlcmtzcmVnaXN0ZXIuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNrcml2IHV0XHRDdHJsK1AiLCAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkEmdnNsdXRhIiwgICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiUiZlZGlnZXJhIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJsRuZHJhIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTnkiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZOeWNrZWwiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZTdHLkbmd25HJkZSIsICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5HJ0IFbkcmRlIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JELXbkcmRlIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkZsZXJzdHLkbmdzduRyZGUiLCAgICAgICAgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRhIGJvcnRcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZCeXQgbmFtblx0RjIiLCAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS29waWVyYSBOeWNrZWxuYW1uIiwgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU/ZrXHRDdHJsK0YiLCAgICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiU/ZrICZO5HN0YVx0RjMiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiJlZpc2EiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU3RhdHVzcmFkIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZEZWxhIHVwcCIsICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVXBwZGF0ZXJhXHRGNSIsICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJkZhdm9yaXRlciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZM5GdnIHRpbGwgaSBmYXZvcml0ZXIuLi4iLCAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiJlRhIGJvcnQgZmF2b3JpdC4uLiIsICAgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAiJkhq5GxwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAixG1uZW4gaSAmaGrkbHBcdEYxIiwgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk9tIFJlZ2lzdGVyZWRpdG9ybiIsICAgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICImxG5kcmEiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICLEbmRyYSBiaW7kcnQgZGF0YSIsICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImVGEgYm9ydFx0RGVsIiwgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImQnl0IG5hbW4iLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOeSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiTnkmY2tlbCIsICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImU3Ry5G5nduRyZGUiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5HJ0IHbkcmRlIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQtduRyZGUiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZGbGVyc3Ry5G5nc3bkcmRlIiwgICAgICAgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRhIGJvcnRcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZCeXQgbmFtblx0RjIiLCAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRXhwb3J0ZXJhLi4uIiwgICAgICAgICAgICAgICAgSURfRURJVF9FWFBPUlQKICAgICAgICBNRU5VSVRFTSAiJktvcGllcmEgbnlja2VsbmFtbiIsICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlP2a1x0Q3RybCtGIiwgICAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9FWFBPUlRfVEVNUExBVEUgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI3OCwgNTQKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggIiZFeHBvcnRlcmEgcmVnaXN0ZXIiLCBJRENfRVhQT1JUX0JBU0UsIDYsIDYsIDI2NiwgNDIsIFdTX0dST1VQCiAgICBBVVRPUkFESU9CVVRUT04gIiZBbGx0IiwgSURDX0VYUE9SVF9BTEwsIDEyLCAxNSwgMjQ0LCAxMgogICAgQVVUT1JBRElPQlVUVE9OICImTWFya2VyYWQgZGVsOiIsIElEQ19FWFBPUlRfU0VMRUNURUQsIDEyLCAzMCwgNzAsIDEyCiAgICBFRElUVEVYVCBJRENfRVhQT1JUX1BBVEgsIDgyLCAzMCwgMTg0LCAxMgpFTkQKCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMjAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJT9msiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJT9ms6IixJRENfU1RBVElDLDUsNywxMTksOApFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTApMVEVYVCAgICAgICAgICAgIlP2ayBpOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CkNIRUNLQk9YICAgICAgICAiTnlja2xhciIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlbkcmRlbmFtbiIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlbkcmRlaW5uZWjlbGwiLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkNIRUNLQk9YICAgICAgICAiRW5iYXJ0IGhlbGEgc3Ry5G5nYXIiLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApERUZQVVNIQlVUVE9OICAgIlP2ayIsSURPSywxNzUsNSw0MCwxNSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIlN05G5nIixJRENBTkNFTCwxNzUsMjQsNDAsMTUsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJM5GdnIHRpbGwgZmF2b3JpdCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIk5hbW46IixJRENfU1RBVElDLDUsNSwxMTksOApFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTApERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCwzNiw0MCwxNSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkF2YnJ5dCIsSURDQU5DRUwsMTY1LDM2LDQwLDE1LFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJUYSBib3J0IGZhdm9yaXQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJOYW1uOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTApERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw3Miw0MCwxNSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkF2YnJ5dCIsSURDQU5DRUwsMTY1LDcyLDQwLDE1LFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyYSBzdHLkbmciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVuRyZGVuYW1uOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVuRyZGVkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMjAsNTYsNDAsMTUsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxNjUsNTYsNDAsMTUsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXJhIERXT1JEIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlbkcmRlbmFtbjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlbkcmRlZGF0YToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXMiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGVjaW1hbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw3OCw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBdmJyeXQiLElEQ0FOQ0VMLDE2NSw3OCw0MCwxNSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMTcwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXJhIGJpbuRyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlbkcmRlbmFtbjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwxNjAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlbkcmRlZGF0YToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNSw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssODAsODMsNDAsMTUsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQXZicnl0IixJRENBTkNFTCwxMjUsODMsNDAsMTUsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9NVUxUSV9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyYSBmbGVyc3Ry5G5nIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlbkcmRlbmFtbjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVuRyZGVkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfSFNDUk9MTCB8IFdTX1ZTQ1JPTEwgfCBFU19NVUxUSUxJTkUgfCBFU19XQU5UUkVUVVJOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCwxNTYsNDAsMTUsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQXZicnl0IixJRENBTkNFTCwxNjUsMTU2LDQwLDE1LFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOYW1uIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlR5cCIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYXRhIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN0ZXJlZGl0b3JuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiSW5uZWjlbGxlciBrb21tYW5kb24gZvZyIGF0dCBhcmJldGEgbWVkIGhlbGEgcmVnaXN0cmV0IgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIklubmVo5WxsZXIga29tbWFuZG9uIGb2ciBhdHQgcmVkaWdlcmEgduRyZGVuIG9jaCBueWNrbGFyIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIklubmVo5WxsZXIga29tbWFuZG9uIGb2ciBhdHQgYW5wYXNzYSByZWdpc3Rlcmb2bnN0cmV0IgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIklubmVo5WxsZXIga29tbWFuZG9uIGb2ciBhdHQgZuUgdGlsbGflbmcgdGlsbCBueWNrbGFyIHNvbSBhbnbkbmRzIG9mdGEiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiSW5uZWjlbGxlciBrb21tYW5kb24gZvZyIGF0dCB2aXNhIGhq5GxwIG9jaCBpbmZvcm1hdGlvbiBvbSBSZWdpc3RlcnJlZGlnZXJpbmciCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiSW5uZWjlbGxlciBrb21tYW5kb24gZvZyIGF0dCBza2FwYSBueWEgbnlja2xhciBlbGxlciB25HJkZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICLEbmRyYXIgduRyZGV0cyBkYXRhIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkzkZ2dlciB0aWxsIGVuIG55IG55Y2tlbCIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJM5GdnZXIgdGlsbCBldHQgbnl0dCBzdHLkbmd25HJkZSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJM5GdnZXIgdGlsbCBldHQgbnl0dCBiaW7kcnQgduRyZGUiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiTORnZ2VyIHRpbGwgZXR0IG55dHQgZHViYmVsb3Jkcy125HJkZSIKICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFICJM5GdnZXIgdGlsbCBldHQgbnl0dCBmbGVyc3Ry5G5nc3bkcmRlIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRlcmFyIGVuIHRleHRmaWwgdGlsbCByZWdpc3RyZXQiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBvcnRlcmFyIGhlbGEgZWxsZXIgZGVsYXIgYXYgcmVnaXN0cmV0IHRpbGwgZW4gdGV4dGZpbCIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbnNsdXRlciB0aWxsIHJlZ2lzdHJldCBw5SBlbiBhbm5hbiBkYXRvciIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLb3BwbGFyIG5lciBmcuVuIHJlZ2lzdHJldCBw5SBlbiBhbm5hbiBkYXRvciIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJTa3JpdmVyIHV0IGhlbGEgZWxsZXIgZGVsYXIgYXYgcmVnaXN0cmV0IgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiVmlzYXIgaGrkbHAgZvZyIFJlZ2lzdGVycmVkaWdlcmluZyIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJWaXNhciBwcm9ncmFtaW5mb3JtYXRpb24sIHZlcnNpb25zbnVtbWVyIHNhbXQgY29weXJpZ2h0IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiQXZzbHV0YXIgUmVnaXN0ZXJlZGl0b3JuIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJM5GdnZXIgdGlsbCBueWNrbGFyIGkgZmF2b3JpdGxpc3RhbiIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiVGFyIGJvcnQgbnlja2xhciBmcuVuIGZhdm9yaXRsaXN0YW4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiVmlzYXIgZWxsZXIgZPZsamVyIHN0YXR1c3JhZGVuIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIsRuZHJhciBwb3NpdGlvbiBm9nIgYXZkZWxhcmVuIG1lbGxhbiBkZSB0duUgcnV0b3JuYSIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJVcHBkYXRlcmFyIGb2bnN0cmV0IgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIlRhciBib3J0IG1hcmtlcmF0IGRhdGEiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiQnl0ZXIgbmFtbiBw5SBtYXJrZXJhdCBkYXRhIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIktvcGllcmFyIG5hbW5ldCBw5SBkZW4gdmFsZGEgbnlja2VsbiB0aWxsIHV0a2xpcHAiCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiU/ZrZXIgZW4gdGV4dHN0cuRuZyBpIG55Y2tlbCwgduRyZGUgZWxsZXIgZGF0YSIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJT9mtlciBu5HN0YSB0cuRmZiB0aWxsIHRleHRlbiBzcGVjaWZpY2VyYWQgaSBm9nJlZ+VlbmRlIHP2a25pbmciCiAgICBJRF9FRElUX0VYUE9SVCAgICAgICAgICAiRXhwb3J0ZXJhciB2YWxkIGdyZW4gYXYgcmVnaXN0cmV0IHRpbGwgZW4gdGV4dGZpbCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIkZlbCIKICAgIElEU19CQURfS0VZCQkgICAgIkt1bmRlIGludGUgbORzYSBueWNrZWxuIKslc7siCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiS3VuZGUgaW50ZSBs5HNhIHbkcmRldCCrJXO7IgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIkthbiBpbnRlIHJlZGlnZXJhIG55Y2tsZXIgYXYgdHlwZW4gqyV1uyIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJW5HJkZXQg5HIgZm9yIHN0b3J0ICgldSkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQmVrcuRmdGEgYm9ydHRhZ25pbmcgYXYgduRyZGUiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCB25HJkZXQgqyVzuz8iCiAgICBJRFNfREVMRVRFX0JPWF9URVhUX01VTFRJUExFICJWaWxsIGR1IHZlcmtsaWdlbiB0YSBib3J0IGRlc3NhIHbkcmRlbj8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTnkgbnlja2VsICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOeXR0IHbkcmRlICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJIaXR0YWRlIGludGUgZGVuIHP2a3RhIHN0cuRuZ2VuIKslc7siCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICJJbXBvcnRlcmEgcmVnaXN0ZXJmaWwiCiAgICBJRFNfRklMRURJQUxPR19FWFBPUlRfVElUTEUgICAiRXhwb3J0ZXJhIHJlZ2lzdGVyZmlsIgogICAgSURTX0ZJTEVESUFMT0dfRklMVEVSICAgICAgICAgIlJlZ2lzdGVyZmlsZXJcMCoucmVnXDBXaW45eC0vTlQ0LXJlZ2lzdGVyZmlsZXIgKFJFR0VESVQ0KVwwKi5yZWdcMEFsbGEgZmlsZXIgKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19SRUdJU1RSWV9ST09UX05BTUUgICAgICAgICAgICJNaW4gZGF0b3IiCiAgICBJRFNfUkVHSVNUUllfREVGQVVMVF9WQUxVRSAgICAgICAiKFN0YW5kYXJkKSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9OT1RfU0VUICAgICAgICIoduRyZGUgZWogYW5naXZldCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKGt1bmRlIGludGUgdmlzYSB25HJkZSkiCiAgICBJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKG9r5G50ICVkKSIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=