LyoKICogSGVscCBWaWV3ZXIgKFNsb3ZlbmlhbiBSZXNvdXJjZXMpCiAqCiAqIENvcHlyaWdodCAyMDAyIFJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgovKiBNZW51ICovCgpNQUlOX01FTlUgTUVOVSBMQU5HVUFHRSBMQU5HX1NMT1ZFTklBTiwgU1VCTEFOR19ERUZBVUxUCnsKIFBPUFVQICImRGF0b3Rla2EiIHsKICBNRU5VSVRFTSAiJk9kcHJpIC4uLiIsIDB4MTAxCiAgTUVOVUlURU0gU0VQQVJBVE9SCiAgTUVOVUlURU0gIk5hJnRpc25pIHRlbW8gLi4uIiwgMHgxMDQKICBNRU5VSVRFTSAiJlByaXByYXZhIHRpc2thbG5pa2EiLCAweDEwNgogIE1FTlVJVEVNIFNFUEFSQVRPUgogIE1FTlVJVEVNICJJeiZob2QiLCAweDEwOAogfQogUE9QVVAgIiZVcmVqYW5qZSIgewogICBNRU5VSVRFTSAiJktvcGlyYWoiLCAweDEwQQogICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgTUVOVUlURU0gIiZQcmlwb21iZSAuLi4iLCAweDEwQwogfQogUE9QVVAgIiZaYXpuYW1layIgewogICBNRU5VSVRFTSAiJkRvbG/oaSAuLi4iLCAweDEwRQogfQogUE9QVVAgIiZQb21v6CIgewogICBNRU5VSVRFTSAiJk8gcG9tb+hpIiwgMHgxMTAKICAgTUVOVUlURU0gIlZlZG5vIG5hICZ2cmh1IiwgMHgxMTEKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImSW5mb3JtYWNpamUgLi4uIiwgMHgxMTMKI2lmZGVmIFdJTkVMSUIKICAgTUVOVUlURU0gIiZPIFdJTkUiLCAweDExNAojZW5kaWYKIH0KfQoKLyogU3RyaW5ncyAqLwpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRSBMQU5HVUFHRSBMQU5HX1NMT1ZFTklBTiwgU1VCTEFOR19ERUZBVUxUCnsKV0lORV9IRUxQLCAJCSJXSU5FIFBvbW/oIgpXSEVSUk9SLCAJCSJOQVBBS0EiCldBUk5JTkcsICAJCSJPUE9aT1JJTE8iCklORk8sICAJCQkiSW5mb3JtYWNpamEiCk5PVF9JTVBMRU1FTlRFRCwgCSJOaSAommUpIG5hIHZvbGpvIgpITFBGSUxFX0VSUk9SX3MsIAkiTmFwYWthIHByaSBicmFuanUgZGF0b3Rla2UgYCVzJyIKQ09OVEVOVFMsIAkJIiZUZW1lIHBvbW/oaSIKU0VBUkNILCAJCSImSXNrYW5qZSIKQkFDSywgCQkJIiZOYXphaiIKSElTVE9SWSwgCQkiJlpnb2RvdmluYSIKQUxMX0ZJTEVTLCAJCSJWc2UgZGF0aXRla2UgKCouKikiCkhFTFBfRklMRVNfSExQLCAJIkRhdG90ZWtlIHMgcG9tb+hqbyAoKi5obHApIgp9Cg==