LyoKICogUmVnZWRpdCBEYW5pc2ggcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAyMDA4IEplbnMgQWxicmV0c2VuIDxqZW5zQGFsYnJldHNlbi5kaz4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInJlc291cmNlLmgiCgpMQU5HVUFHRSBMQU5HX0RBTklTSCwgU1VCTEFOR19ERUZBVUxUCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdGVyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydOlyIHJlZ2lzdGVyaW5nc2ZpbC4uLiIsICAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkVrc3BvcnTpciByZWdpc3RlcmluZ3NmaWwuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRpbHNsdXQgbmV0duZya3NyZWdpc3RlcmluZ3NkYXRhYmFzZS4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImRnJha29ibCBuZXR25nJrc3JlZ2lzdGVyaW5nc2RhdGFiYXNlLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZVZHNrcml2XHRDdHJsK1AiLCAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQWZzbHV0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIlImZWRpZ2VyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJsZuZHJlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTnkiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIk74JmdsZSIsICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImU3RyZW5nduZyZGkiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7mcnbmcmRpIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIHbmcmRpIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZGbGVyc3RyZW5nc3bmcmRpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU2xldFx0RGVsIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZPbWT4Ylx0RjIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJktvcGllciBu+GdsZW5hdm4iLCAgICAgICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZGaW5kXHRDdHJsK0YiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiRmluZCAmbuZzdGVcdEYzIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZWaXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU3RhdHVzbGluaWUiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTcGxpdCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJPcGRhdGUmclx0RjUiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJkZhdm9yaXR0ZXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJUaWxm+GogdGlsIGYmYXZvcml0dGVyLi4uIiwgICAgICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICJGamUmcm4gZmF2b3JpdC4uLiIsICAgICAgICAgICAgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAiJkhq5mxwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiRW1uZXIgaSAmaGrmbHBcdEYxIiwgICAgICAgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk9tIFJlZ2lzdGVyaW5nc2RhdGFiYXNlIGVkaXRvciIsICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICImxm5kcmUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICLGbmRyZSBiaW7mcmRhdGEiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImU2xldFx0RGVsIiwgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImT21k+GIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOeSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiTvgmZ2xlIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZTdHJlbmd25nJkaSIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbuZyduZyZGkiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQgduZyZGkiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkZsZXJzdHJlbmdzduZyZGkiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTbGV0XHREZWwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJk9tZPhiXHRGMiIsICAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRXhwb3J0Li4uIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfRVhQT1JUCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXIgbvhnbGVuYXZuIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRmluZFx0Q3RybCtGIiwgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9FWFBPUlRfVEVNUExBVEUgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI3OCwgNTQKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggIiZFa3Nwb3J0ZXIgcmVnaXN0ZXJpbmdzZGF0YWJhc2UiLCBJRENfRVhQT1JUX0JBU0UsIDYsIDYsIDI2NiwgNDIsIFdTX0dST1VQCiAgICBBVVRPUkFESU9CVVRUT04gIiZBbHQiLCBJRENfRVhQT1JUX0FMTCwgMTIsIDE1LCAyNDQsIDEyCiAgICBBVVRPUkFESU9CVVRUT04gIiZNYXJrZXJldCBkZWw6IiwgSURDX0VYUE9SVF9TRUxFQ1RFRCwgMTIsIDMwLCA3MCwgMTIKICAgIEVESVRURVhUIElEQ19FWFBPUlRfUEFUSCwgODIsIDMwLCAxODQsIDEyCkVORAoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkZpbmQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJGaW5kOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTI1LDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKTFRFWFQgICAgICAgICAgICJGaW5kIGk6IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKQ0hFQ0tCT1ggICAgICAgICJO+GdsZXIiLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJW5nJkaW5hdm4iLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJW5nJkaWluZGhvbGQiLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkNIRUNLQk9YICAgICAgICAiS3VuIGhlbGUgc3RyZW5nZSIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkRFRlBVU0hCVVRUT04gICAiRmluZCIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkx1ayIsSURDQU5DRUwsMTc1LDIyLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVGlsZvhqIHRpbCBmYXZvcml0IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkxURVhUICAgICAgICAgICAiTmF2bjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CkVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQW5udWxsZXIiLElEQ0FOQ0VMLDE3NSw0MCwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkZqZXJuIGZhdm9yaXQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJOYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTApERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw3MywzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkFubnVsbGVyIixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyIHN0cmVuZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJW5nJkaW5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJW5nJkaWRhdGE6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbm51bGxlciIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyIERXT1JEIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlbmcmRpbmF2bjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlbmcmRpZGF0YToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXNlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWRlY2ltYWwiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW1hbCIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxsZXIiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXIgYmlu5nIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVuZyZGluYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVuZyZGlkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxsZXIiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX01VTFRJX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXIgZmxlcnN0cmVuZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJW5nJkaW5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlbmcmRpZGF0YToiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDExMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0hTQ1JPTEwgfCBXU19WU0NST0xMIHwgRVNfTVVMVElMSU5FIHwgRVNfV0FOVFJFVFVSTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsMTYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsbGVyIixJRENBTkNFTCwxNzUsMTYwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOYXZuIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlR5cGUiCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAiRGF0YSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIlJlZ2lzdGVyaW5nc2RhdGFiYXNlIGVkaXRvciIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkluZGVob2xkZXIga29tbWFuZG9lciBmb3IgYXQgYXJiZWpkZSBtZWQgaGVsZSByZWdpc3RlcmV0IgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIkluZGVob2xkZXIga29tbWFuZG9lciBmb3IgYXQgcmVkaWdlcmUgduZyZGllciBvZyBu+GdsZXIiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiSW5kZWhvbGRlciBrb21tYW5kb2VyIGZvciBhdCB0aWxwYXNzZSByZWdpc3RlcnZpbmR1ZXQiCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiSW5kZWhvbGRlciBrb21tYW5kb2VyIGZvciBhdCBm5SB0aWxnYW5nIHRpbCBu+GdsZXIgc29tIGJydWdlcyBvZnRlIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIkluZGVob2xkZXIga29tbWFuZG9lciBmb3IgYXQgdmlzZSBoauZscCBvZyBpbmZvcm1hdGlvbiBvbSBSZWdpc3RlcmluZ3NkYXRhYmFzZSBlZGl0b3IiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiSW5kZWhvbGRlciBrb21tYW5kb2VyIGZvciBhdCBvcHJldHRlIG55ZSBu+GdsZXIgZWxsZXIgduZyZGllciIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIsZuZHJlciB25nJkaWVucyBkYXRhIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIlRpbGb4aiBlbiBueSBu+GdsZSIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJUaWxm+GogZW4gbnkgc3RyZW5nduZyZGkiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiVGlsZvhqIGVuIG55IGJpbuZyduZyZGkiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiVGlsZvhqIGVuIG55IERXT1JEIHbmcmRpIgogICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUgIlRpbGb4aiBlbiBueSBmbGVyc3RyZW5nc3bmcmRpIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRlcmVyIGVuIHRla3N0ZmlsIGluZCBpIHJlZ2lzdGVyaW5nc2RhdGFiYXNlIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWtzcG9ydGVyZXIgaGVsZSBlbGxlciBkZWxlIGFmIHJlZ2lzdGVyaW5nc2RhdGFiYXNlIHRpbCBlbiB0ZWtzdGZpbCIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaWxzbHV0IHRpbCByZWdpc3RlcmluZ3NkYXRhYmFzZSBw5SBlbiBhbmRlbiBtYXNraW5lIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZyYWtvYmwgZnJhIHJlZ2lzdGVyaW5nc2RhdGFiYXNlIHDlIGVuIGFuZGVuIG1hc2tpbmUiCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiU2tyaXZlciB1dCBoZWxlIGVsbGVyIGRlbGVyIGF2IHJlZ2lzdGVyZXQiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJWaXNlciBoauZscCB0aWwgUmVnaXN0ZXJyZWRpZ2VyaW5nIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc2VyIHByb2dyYW1pbmZvcm1hdGlvbiwgdmVyc2lvbm51bW1lciBvZyBvcGhhdnNyZXQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJBZnNsdXR0ZXIgUmVnaXN0ZXJpbmdzZGF0YWJhc2UgZWRpdG9yIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJUaWxm+GplciBu+GdsZXIgdGlsIGZhdm9yaXRsaXN0ZW4iCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIkZqZXJuZXIgbvhnbGVyIGZyYSBmYXZvcml0bGlzdGVuIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIlZpc2VyIGVsbGVyIHNranVsZXIgc3RhdHVzbGluaWVuIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIsZuZHJlciBwb3NpdGlvbmVuIHRpbCBkZWxpbmdzbGluaWVuIG1lbGxlbSB0byBydWRlciIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJPcGRhdGVyZXIgdmluZHVldCIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJTbGV0dGVyIHV0dmFsZ2V0IgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIk9tZPhiZXIgbmF2biB0aWwgdXR2YWxnZXQiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiS29waWVyZXIgbmF2bmV0IHRpbCBkZW4gdmFsZ3RlIG74Z2xlIHRpbCB1dGtsaXBwc3RhdmxlbiIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJGaW5kZXIgZW4gdGVrc3RzdHJlbmcgaSBlbiBu+GdsZSwgduZyZGkgZWxsZXIgZGF0YSIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJGb3Jz5nR0ZXIgc/hnbmluZ2VuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiRmVqbCIKICAgIElEU19CQURfS0VZCQkgICAgIkt1bm5lIGlra2UgdGlsZ+UgbvhnbGVlbiAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIkt1bm5lIGlra2UgdGlsZ+UgduZyZGllbiAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIkt1bm5lIGlra2UgcmVkaWdlcmUgbvhnbGVyIGFmIHR5cGVuICcldSciCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiVuZyZGllbiBlciBmb3Igc3RvciAoJXUpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkJla3LmZnQgc2xldG5pbmcgYWYgduZyZGkiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiRXIgZHUgc2lra2VyIHDlIGF0IHZpbGxlIHNsZXR0ZSB25nJkaWVuICclcyc/IgogICAgSURTX0RFTEVURV9CT1hfVEVYVF9NVUxUSVBMRSAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGVzZSB2YWx1ZXM/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk55IG74Z2xlICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOeSB25nJkaSAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiRmFuZHQgaWtrZSBz+Gdlc3RyZW5nZW4gqyVzuyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgpJRFNfRklMRURJQUxPR19JTVBPUlRfVElUTEUgICAiSW1wb3J0ZXIgcmVnaXN0ZXJpbmdzZGF0YWJhc2VmaWwiCklEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICJFa3Nwb3J0ZXIgcmVnaXN0ZXJpbmdzZGF0YWJhc2VmaWwiCklEU19GSUxFRElBTE9HX0ZJTFRFUiAgICAgICAgICJSZWdpc3RlcmluZ3NkYXRhYmFzZWZpbGVyXDAqLnJlZ1wwV2luOXgtL05UNC1yZWdpc3RlcmZpbGVyIChSRUdFRElUNClcMCoucmVnXDBBbGxlIGZpbGVyICgqLiopXDAqLipcMFwwIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCklEU19SRUdJU1RSWV9ST09UX05BTUUgICAgICAgICAgICJNaW4gY29tcHV0ZXIiCklEU19SRUdJU1RSWV9ERUZBVUxUX1ZBTFVFICAgICAgICIoU3RhbmRhcmQpIgpJRFNfUkVHSVNUUllfVkFMVUVfTk9UX1NFVCAgICAgICAiKHbmcmRpIGlra2Ugc2F0KSIKSURTX1JFR0lTVFJZX1ZBTFVFX0NBTlRfRElTUExBWSAgIihrdW5uZSBpa2tlIHZpc2UgduZyZGkpIgpJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKHVrZW5kdCAlZCkiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K