LyoKICogUmVnZWRpdCBOb3J3ZWdpYW4gQm9rbeVsIHJlc291cmNlcwogKgogKiBDb3B5cmlnaHQgMjAwNS0yMDA2IEFsZXhhbmRlciBOLiBT+HJuZXMgPGFsZXhAdGhlaGFuZG9mYWdvbnkuY29tPgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX05PUldFR0lBTiwgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMCgovKgogKiBNZW51CiAqLwoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZGaWwiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQXZzbHV0dCIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImSGplbHAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImT20gLiAuIC4iLCAgICAgICAgICAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RlciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRlciByZWdpc3RlcmZpbCAuIC4gLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImRWtzcG9ydGVyIHJlZ2lzdGVyZmlsIC4gLiAuIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIktvYmxlICZ0aWwgbmV0dHZlcmtzcmVnaXN0ZXIgLiAuIC4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiS29ibGUgJmZyYSBuZXR0dmVya3NyZWdpc3RlciAuIC4gLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU2tyaXYgdXRcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBdnNsdXR0IiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIlImZWRpZ2VyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkVuZHJlIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTnkiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIk74JmtrZWwiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZTdHJlbmd2ZXJkaSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7mcnZlcmRpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JELXZlcmRpIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU2xldHRcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZHaSBueXR0IG5hdm5cdEYyIiwgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXIgbvhra2VsbmF2biIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZGaW5uXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIkZpbm4gJm5lc3RlXHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZWaXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU3RhdHVzbGluamUiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRGUmbCBvcHAiLCAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIk9wcGRhdGUmclx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZGYXZvcml0dGVyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiTGVnZyB0aWwgaSBmJmF2b3JpdHRlciIsICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICJGamUmcm4gZmF2b3JpdHQiLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImSGplbHAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJFbW5lciBpICZoamVscFx0RjEiLCAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImT20gUmVnaXN0ZXJyZWRpZ2VyaW5nIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICImRW5kcmUiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAiTW9kaWZ5IEJpbmFyeSBEYXRhIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImU2xldHRcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJkdpIG55dHQgbmF2biIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOeSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiTvgma2tlbCIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlN0cmVuZ3ZlcmRpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbuZydmVyZGkiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQtdmVyZGkiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTbGV0dFx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJkdpIG55dHQgbmF2blx0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJktvcGllciBu+GtrZWxuYXZuIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZpbm5cdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJPbSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgSUNPTiAgICAgICAgICAgIElESV9SRUdFRElULElESV9SRUdFRElULDE0LDksMTYsMTYKICAgIExURVhUICAgICAgICAgICAiUmVhY3RPUyBSZWdpc3RlcnJlZGlnZXJlciB2ZXJzam9uIDEuMCIsSURDX1NUQVRJQyw0OSwxMCwxMTksOCwKICAgICAgICAgICAgICAgICAgICBTU19OT1BSRUZJWAogICAgTFRFWFQgICAgICAgICAgICJLb3BpcmV0dCAyMDAyIHRpbGj4cmVyIFJlYWN0T1MtbGFnZXQuIE92ZXJzYXR0IGF2IEFsZXhhbmRlciBOLiBT+HJuZXMuIixJRENfU1RBVElDLDQ5LDIwLDExOSw4CiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE5NSw2LDMwLDExLFdTX0dST1VQCkVORAoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkZpbm4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJGaW5uOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTI1LDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKTFRFWFQgICAgICAgICAgICJGaW5uIGk6IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKQ0hFQ0tCT1ggICAgICAgICJO+GtsZXIiLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJWZXJkaW5hdm4iLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJWZXJkaWlubmhvbGQiLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkNIRUNLQk9YICAgICAgICAiS3VuIGhlbGUgc3RyZW5nZXIiLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApERUZQVVNIQlVUVE9OICAgIkZpbm4iLElET0ssMTc1LDUsMzAsMTEsV1NfR1JPVVAKUFVTSEJVVFRPTiAgICAgICJMdWtrIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJMZWdnIHRpbCBmYXZvcml0dCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIk5hdm46IixJRENfU1RBVElDLDUsNSwxMTksOApFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTApERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw0MCwzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkF2YnJ5dCIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRmplcm4gZmF2b3JpdHQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJOYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTApERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw3MywzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkF2YnJ5dCIsSURDQU5DRUwsMTc1LDczLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlciBzdHJlbmciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVmVyZGluYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlZlcmRpZGF0YToiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkF2YnJ5dCIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSZWRpZ2VyIERXT1JEIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlZlcmRpbmF2bjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJWZXJkaWRhdGE6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQmFzZSIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIkhla3NhZGVzaW1hbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZXNpbWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBdmJyeXQiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXIgYmlu5nIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVmVyZGluYXZuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlZlcmRpZGF0YToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkF2YnJ5dCIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOYXZuIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlR5cGUiCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAiRGF0YSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIlJlZ2lzdGVycmVkaWdlcmluZyIKICAgIElEQ19SRUdFRElUICAgICAgICAgICAgICJSRUdFRElUIgogICAgSURDX1JFR0VESVRfRlJBTUUgICAgICAgIlJFR0VESVRfRlJBTUUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJJbm5laG9sZGVyIGtvbW1hbmRvZXIgZm9yIOUgYXJiZWlkZSBtZWQgaGVsZSByZWdpc3RlcmV0IgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIklubmVob2xkZXIga29tbWFuZG9lciBmb3Ig5SByZWRpZ2VyZSB2ZXJkaWVyIG9nIG74a2xlciIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJJbm5laG9sZGVyIGtvbW1hbm9kZXIgZm9yIOUgdGlscGFzc2UgcmVnaXN0ZXJ2aW5kdWV0IgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIklubmVob2xkZXIga29tbWFuZG9lciBmb3Ig5SBm5SB0aWxnYW5nIHRpbCBu+GtsZXIgc29tIGJydWtlcyBvZnRlIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIklubmVob2xkZXIga29tbWFuZG9lciBmb3Ig5SB2aXNlIGhqZWxwIG9nIGluZm9ybWFzam9uIG9tIFJlZ2lzdGVycmVkaWdlcmluZyIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJJbm5laG9sZGVyIGtvbW1hbmRvZXIgZm9yIOUgb3BwcmV0dGUgbnllIG74a2xlciBlbGxlciB2ZXJkaWVyIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAiRW5kcmVyIHZlcmRpZW5zIGRhdGEiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiTGVnZ2VyIHRpbCBlbiBueSBu+GtrZWwiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiTGVnZ2VyIHRpbCBlbiBueSBzdHJlbmd2ZXJkaSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJMZWdnZXIgdGlsIGVuIG55IGJpbuZydmVyZGlzIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkxlZ2dlciB0aWwgZW4gbnkgZG9iYmVsdG9yZC12ZXJkaSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0ZXJlciBlbiB0ZWtzdGZpbCBpbm4gaSByZWdpc3RlcmV0IgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWtzcG9ydGVyZXIgaGVsZSBlbGxlciBkZWxlciBhdiByZWdpc3RlcmV0IHRpbCBlbiB0ZWtzdGZpbCIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLb2JsZXIgdGlsIHJlZ2lzdGVyZXQgcOUgZW4gYW5uZW4gbWFza2luIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIktvYmxlciBmcmEgcmVnaXN0ZXJldCBw5SBlbiBhbm5lbiBtYXNraW4iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiU2tyaXZlciB1dCBoZWxlIGVsbGVyIGRlbGVyIGF2IHJlZ2lzdGVyZXQiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJWaXNlciBoamVscCB0aWwgUmVnaXN0ZXJyZWRpZ2VyaW5nIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc2VyIHByb2dyYW1pbmZvcm1hc2pvbiwgdmVyc2pvbm51bW1lciBvZyBrb3BpcmV0dCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkF2c2x1dHRlciBSZWdpc3RlcnJlZGlnZXJpbmciCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIkxlZ2dlciBu+GtsZXIgdGlsIGkgZmF2b3JpdHRsaXN0ZW4iCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIkZqZXJuZXIgbvhrbGVyIGZyYSBmYXZvcml0dGxpc3RlbiIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJWaXNlciBlbGxlciBza2p1bGVyIHN0YXR1c2xpbmplbnMiCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiRW5kcmVyIHBvc2lzam9uZW4gdGlsIGRlbGluZ3NsaW5qZW4gbWVsbG9tIHRvIHJ1dGVyIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIk9wcGRhdGVyZXIgdmluZHVldCIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJTbGV0dGVyIHV0dmFsZ2V0IgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIkdpciBueXR0IG5hdm4gdGlsIHV0dmFsZ2V0IgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIktvcGllcmVyIG5hdm5ldCB0aWwgZGVuIHZhbGd0ZSBu+GtrZWxlbiB0aWwgdXRrbGlwcHN0YXZsZW4iCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiRmlubmVyIGVuIHRla3N0c3RyZW5nIGkgZW4gbvhra2VsLCB2ZXJkaSBlbGxlciBkYXRhIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkZpbm5lciBuZXN0ZSB0cmVmZiB0aWwgdGVrc3RlbiBzcGVzaWZpc2VydCBpIGZvcnJpZ2Ugc/hrIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiRmVpbCIKICAgIElEU19CQURfS0VZCQkgICAgIkt1bm5lIGlra2Ugc3D4cnJlIG74a2tlbGVuICclcyciCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiS3VubmUgaWtrZSBzcPj4cmUgdmVyZGllbiAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIkt1bm5lIGlra2UgcmVkaWdlcmUgbvhrbGVyIGF2IHR5cGVuICclbGQnIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIlZlcmRpZW4gZXIgZm9yIHN0b3IgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQmVrcmVmdCBzbGV0dGluZyBhdiB2ZXJkaSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJWaXJrZWxpZyBzbGV0dGUgdmVyZGllbiAnJXMnPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOeSBu+GtrZWwgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk55IHZlcmRpICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJGYW50IGlra2Ugc/hrZXN0cmVuZ2VuIKslc7siCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCi8qCiAqIERpYWxvZwogKi8KCklERF9ESUFMT0cxIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNjgsIDk4ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KRU5ECgpJRERfRElBTE9HMiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDE4NywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRGlhbG9nIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEzMCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF2YnJ5dCIsSURDQU5DRUwsMTMwLDI0LDUwLDE0CkVORAoKCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiVmlzZXIgaGplbHAgdGlsIFJlZ2lzdGVycmVkaWdlcmluZy4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJWaXNlciBwcm9ncmFtaW5mb3JtYXNqb24sIHZlcnNqb25udW1tZXIgb2cga29waXJldHQuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K