LyoKICogV2luZSBjb21tYW5kIHByb21wdCAoRHV0Y2ggcmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDMgSGFucyBMZWlkZWtrZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19EVVRDSCwgU1VCTEFOR19ERUZBVUxUCgpTVFJJTkdUQUJMRQp7CiAgV0NNRF9BVFRSSUIsICJVaXRsZWcgYmlqIEFUVFJJQlxuIgogIFdDTURfQ0FMTCwKIkNBTEwgPGJhdGNoYmVzdGFuZHNuYWFtPiB3b3JkdCBnZWJydWlrdCBiaW5uZW4gZWVuIGJhdGNoYmVzdGFuZCBvbSBvcGRyYWNodGVuIHVpdFxuXAplZW4gYW5kZXIgYmF0Y2hiZXN0YW5kIGFhbiB0ZSByb2VwZW4uIEFscyBoZXQgYmF0Y2hiZXN0YW5kIGJlc3RhYXQga2VlcnQgZGUgY29udHJvbGUgdGVydWdcblwKbmFhciBoZXQgYmVzdGFuZCBkYXQgaGV0IGFhbnJpZXAuIFRoZSBDQUxMIG9wZHJhY2h0IGthbiBwYXJhbWV0ZXJzIG1lZWdldmVuIGFhbiBkZSBhYW4gdGVcblwKcm9lcGVuIHByb2NlZHVyZS5cblwKXG5cClZlcmFuZGVyaW5nZW4gbS5iLnQgZGlyZWN0b3J5LCBvbWdldmluZ3N2YXJpYWJlbGVuLCBldGMgZGllIHRvdCBzdGFuZCBrb21lbiBiaW5uZW4gZWVuXG5cCmFhbmdlcm9lcGVuIHByb2NlZHVyZSB3b3JkZW4gZ+tlcmZ0IGRvb3IgZGUgYWFucm9lcGVuZGUgcHJvY2VkdXJlLlxuIgoKICBXQ01EX0NELCAgICAgIlVpdGxlZyBiaWogQ0RcbiIKICBXQ01EX0NIRElSLCAgIlVpdGxlZyBiaWogQ0hESVJcbiIKCiAgV0NNRF9DTFMsICAgICJDTFMgc2Nob29udCBoZXQgc2NoZXJtXG4iCgogIFdDTURfQ09QWSwgICAiVWl0bGVnIGJpaiBDT1BZXG4iCiAgV0NNRF9DVFRZLCAgICJVaXRsZWcgYmlqIENUVFlcbiIKICBXQ01EX0RBVEUsICAgIlVpdGxlZyBiaWogREFURVxuIgogIFdDTURfREVMLCAgICAiVWl0bGVnIGJpaiBERUxcbiIKICBXQ01EX0RJUiwgICAgIlVpdGxlZyBiaWogRElSXG4iCgogIFdDTURfRUNITywKIkVDSE8gPHRla2VucmVla3M+IGdlZWZ0IDx0ZWtlbnJlZWtzPiB3ZWVyIG9wIGhldCBhY3RpZXZlIHVpdHZvZXJhcHBhcmFhdC5cblwKXG5cCkVDSE8gT04gem9yZ3QgZXJ2b29yIGRhdCBhbGxlIGhpZXJvcCB2b2xnZW5kZSBvcGRyYWNodGVuIGluIGVlbiBiYXRjaGJlc3RhbmQgd29yZGVuIHdlZXJnZWdldmVuXG5cCm9wIGhldCB1aXR2b2VyYXBwYXJhYXQgdm9vcmRhdCB6ZSB3b3JkZW4gdWl0Z2V2b2VyZC5cblwKXG5cCkVDSE8gT0ZGIGtlZXJ0IGhldCBlZmZlY3QgdmFuIGVlbiB2b29yYWZnYWFuZGUgRUNITyBPTiBvbSAoRUNITyBPRkYgaXNcblwKZGUgc3RhbmRhYXJkaW5zdGVsbGluZykuIFdlZXJnYXZlIHZhbiBkZSBFQ0hPIE9GRiBvcGRyYWNodCBrYW4gd29yZGVuIHZvb3Jrb21lbiBkb29yXG5cCmhldCB0ZSBsYXRlbiB2b29yYWZnYWFuIGRvb3IgaGV0IEAtdGVrZW4uXG4iCgogIFdDTURfRVJBU0UsICAiVWl0bGVnIGJpaiBFUkFTRVxuIgoKICBXQ01EX0ZPUiwKIkRlIEZPUiBvcGRyYWNodCB3b3JkdCBnZWJydWlrdCBvbSBlZW4gb3BkcmFjaHQgdWl0IHRlIHZvZXJlbiB2b29yIGllZGVyIHZhbiBlZW4gdmVyemFtZWxpbmcgYmVzdGFuZGVuLlxuXApcblwKU3ludGF4OiBGT1IgJXZhcmlhYmVsZSBJTiAodmVyemFtZWxpbmcpIERPIG9wZHJhY2h0XG5cClxuXApJbiB3Y21kIGlzIGhldCBuaWV0IHZlcmVpc3Qgb20gaGV0ICUtdGVrZW4gaW4gZWVuIEZPUiBvcGRyYWNodCBpbiBlZW4gYmF0Y2hiZXN0YW5kIHRlXG5cCnZlcmR1YmJlbGVuLlxuIgoKICBXQ01EX0dPVE8sCiJEZSBHT1RPIG9wZHJhY2h0IHZlcnBsYWF0c3QgdWl0dm9lcmluZyBuYWFyIGVlbiBhbmRlcmUgb3BkcmFjaHQgYmlubmVuIGVlblxuXApiYXRjaGJlc3RhbmQuXG5cClxuXApIZXQgZG9lbCB2YW4gZWVuIEdPVE8gb3BkcmFjaHQgd29yZHQgYWFuZ2VnZXZlbiBtZXQgZWVuIGxhYmVsLiBEYXQgbGFiZWwgbWFnIHVpdCBtYXhpbWFhbCAyNTUgdGVrZW5zXG5cCmJlc3RhYW4gbWFhciBlciBtb2dlbiBnZWVuIHNwYXRpZXMgaW4gdm9vcmtvbWVuIChkaXQgdmVyc2NoaWx0IGJpaiBhbmRlcmUgYmVzdHVyaW5nc3N5c3RlbWVuKS5cblwKQWxzIGVyIHR3ZWUgb2YgbWVlciBpZGVudGlla2UgbGFiZWxzIGJlc3RhYW4gaW4gZWVuIGJhdGNoYmVzdGFuZCBkYW5cblwKd29yZHQgYWx0aWpkIG5hYXIgZGUgZWVyc3RlIGdlc3Byb25nZW4uIEVlbiBwb2dpbmcgb20gdGUgc3ByaW5nZW4gbmFhciBlZW4gbmlldCBiZXN0YWFuZFxuXApsYWJlbCBiZetpbmRpZ3QgaGV0IHVpdHZvZXJlbiB2YW4gaGV0IGJhdGNoYmVzdGFuZC5cblwKXG5cCkdPVE8gaGVlZnQgZ2VlbiBlZmZlY3QgYWxzIGhldCBpbiBlZW4gaW50ZXJhY3RpZXZlIHNlc3NpZSB3b3JkdCBnZWJydWlrdC5cbiIKCiAgV0NNRF9IRUxQLCAgICJVaXRsZWcgYmlqIEhFTFBcbiIKCiAgV0NNRF9JRiwKIklGIHdvcmR0IGdlYnJ1aWt0IG9tIGVlbiBvcGRyYWNodCB2b29yd2FhcmRlbGlqayB1aXQgdGUgdm9lcmVuLlxuXApcblwKU3ludGF4OglJRiBbTk9UXSBFWElTVCBiZXN0YW5kc25hYW0gb3BkcmFjaHRcblwKCUlGIFtOT1RdIHRla2VucmVla3MxPT10ZWtlbnJlZWtzMiBvcGRyYWNodFxuXAoJSUYgW05PVF0gRVJST1JMRVZFTCBnZXRhbCBvcGRyYWNodFxuXApcblwKSW4gZGUgdHdlZWRlIHZvcm0gdmFuIGRlIG9wZHJhY2h0IG1vZXRlbiB0ZWtlbnJlZWtzMSBlbiB0ZWtlbnJlZWtzMiB0dXNzZW4gZHViYmVsZVxuXAphYW5oYWxpbmdzdGVrZW4gc3RhYW4uIERlIHZlcmdlbGlqa2luZyBpcyBuaWV0IGdldm9lbGlnIHZvb3IgaGV0IG9uZGVyc2NoZWlkIHR1c3NlblxuXApob29mZC0gZW4ga2xlaW5lIGxldHRlcnMuXG4iCgogIFdDTURfTEFCRUwsICAiTEFCRUwgd29yZHQgZ2VicnVpa3Qgb20gZWVuIHNjaGlqZmxhYmVsIHRlIHdpanppZ2VuLiAgXG5cClxuXApTeW50YXg6IExBQkVMIFtzY2hpamY6XVxuXApEZSBvcGRyYWNodCB2cmFhZ3QgdSBvbSBlZW4gbmlldXcgbGFiZWwgaW4gdGUgdGlra2VuIHZvb3IgZGUgb3BnZWdldmVuIHNjaGlqZi5cblwKVSBrdW50IGhldCBsYWJlbCB2YW4gZWVuIHNjaGlqZiB0b25lbiBtZXQgYmVodWxwIHZhbiBkZSBWT0wgb3BkcmFjaHQuXG4iCgogIFdDTURfTUQsICAgICAiVWl0bGVnIGJpaiBNRFxuIgogIFdDTURfTUtESVIsICAiVWl0bGVnIGJpaiBNS0RJUlxuIgogIFdDTURfTU9WRSwKIk1PVkUgdmVycGxhYXRzdCBlZW4gYmVzdGFuZCBvZiBkaXJlY3RvcnkgbmFhciBlZW4gYW5kZXJlIHBsZWsgYmlubmVuIGhldCBiZXN0YW5kc3N5c3RlZW0uXG5cClxuXApBbHMgaGV0IG9tIGVlbiBkaXJlY3RvcnkgZ2FhdCBkYW4gd29yZGVuIGFsbGUgYmVzdGFuZGVuIGVuIGRpcmVjdG9yaWVzXG5cCmRhYXJvbmRlciBvb2sgdmVycGxhYXRzdC5cblwKXG5cCk1PVkUgd2Vya3QgbmlldCBhbHMgZGUgb3VkZSBlbiBuaWV1d2UgbG9jYXRpZXMgemljaCBvcCB2ZXJzY2hpbGxlbmRlIERPUy1zY2hpanZlbiBiZXZpbmRlbi5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCB0b29uIG9mIHdpanppZ3QgaGV0IHpvZWtwYWQgdmFuIHdjbWQuXG5cClxuXApEZSBvcGRyYWNodCBQQVRIIHRvb250IGhldCBodWlkaWdlIHpvZWtwYWQgKGRlIGJlZ2lud2FhcmRlIHdvcmR0IGluXG5cCmhldCBiZXN0YW5kIGdlbmFhbWQgd2luZS5jb25mIHRvZWdla2VuZCkuIE9tIGhldCB6b2VrcGFkIHRlIHdpanppZ2VuIGxhYXQgdSBkZSBQQVRIXG5cCm9wZHJhY2h0IHZvbGdlbiBkb29yIGRlIG5pZXV3ZSB3YWFyZGUuXG5cClxuXApIZXQgaXMgb29rIG1vZ2VsaWprIG9tIGhldCB6b2VrcGFkIHRlIHdpanppZ2VuIG1ldCBiZWh1bHAgdmFuIGRlIFBBVEggb21nZXZpbmdzdmFyaWFiZWxlLFxuXApiaWogdm9vcmJlZWxkOlxuXAoJCVBBVEggJVBBVEglO2M6XFx0ZW1wIFxuIgoKICBXQ01EX1BBVVNFLAoiUEFVU0UgdG9vbnQgZWVuIGJlcmljaHQgb3AgaGV0IHNjaGVybTogJ1RvZXRzIEVudGVyIG9tIGRvb3IgdGUgZ2FhbidcblwKZW4gd2FjaHQgdG90ZGF0IGRlIGdlYnJ1aWtlciBkZSBFbnRlci10b2V0cyBpbmRydWt0LiBEaXQgaXMgdm9vcmFsIGhhbmRpZyBpblxuXApiYXRjaGJlc3RhbmRlbiBvbSBkZSBnZWJydWlrZXIgaW4gc3RhYXQgdGUgc3RlbGxlbiBvbSBkZSB1aXR2b2VyIHZhbiBlZW4gdm9vcmFmZ2FhbmRlIG9wZHJhY2h0XG5cCnRlIGJla2lqa2VuLCB2b29yZGF0IGhldCB2YW4gaGV0IHNjaGVybSBzY2h1aWZ0LlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCB3aWp6aWd0IGRlIHByb21wdCB2YW4gZGUgb3BkcmFjaHRyZWdlbC5cblwKXG5cCkRlIHRla2VucmVla3Mgdm9sZ2VuZCBvcCBkZSBQUk9NUFQgb3BkcmFjaHQgKGVuIGRlIHNwYXRpZSBkaXJlY3QgZGFhcm5hKVxuXAp2ZXJzY2hpam50IHZvb3JhYW4gb3AgZGUgcmVnZWwgYWxzIHdjbWQgd2FjaHQgb3AgaW52b2VyLlxuXApcblwKRGUgdm9sZ2VuZGUgdGVrZW5yZWVrc2VuIGhlYmJlbiBlZW4gc3BlY2lhbGUgYmV0ZWtlbmlzOlxuXApcblwKJCQgICAgZG9sbGFyLXRla2VuICAgICAgICAgICAgICRfICAgIG5pZXV3ZSByZWdlbCAgICAgICRiICAgIHBpanAtdGVrZW4gKHwpXG5cCiRkICAgIGh1aWRpZ2UgZGF0dW0gICAgICAgICAgICAkZSAgICBlc2NhcGUgICAgICAgICAgICAkZyAgICBncm90ZXItZGFuLXRla2VuICg+KVxuXAokbCAgICBrbGVpbmVyLWRhbi10ZWtlbiAoPCkgICAgJG4gICAgaHVpZGlnZSBzY2hpamYgICAgJHAgICAgaHVpZGlnZSBkaXJlY3RvcnlcblwKJHEgICAgaXMtZ2VsaWprLXRla2VuICg9KSAgICAgICR0ICAgIGh1aWRpZ2UgdGlqZCAgICAgICR2ICAgIHdjbWQgdmVyc2llXG5cClxuXApNZXJrIG9wIGRhdCBoZXQgdWl0dm9lcmVuIHZhbiBkZSBQUk9NUFQgb3BkcmFjaHQgem9uZGVyIGVlbiB0ZWtlbnJlZWtzIGRlXG5cCnByb21wdCB0ZXJ1Z3pldCBuYWFyIGRlIHN0YW5kYWFyZGluc3RlbGxpbmcuIERhdCBpcyBkZSBodWlkaWdlIGRpcmVjdG9yeVxuXAooaW5jbHVzaWVmIHNjaGlqZmFhbmR1aWRpbmcpIGdldm9sZ2QgZWVuIGdyb3Rlci1kYW4tdGVrZW4gKD4pLlxuXAooZGF0IHN0YWF0IGdlbGlqayBhYW4gZGUgb3BkcmFjaHQ6IFBST01QVCAkcCRnKS5cblwKXG5cCkRlIHByb21wdCBrYW4gb29rIGdld2lqemlnZCB3b3JkZW4gdmlhIGRlIFBST01QVCBvbWdldmluZ3N2YXJpYWJlbGUsXG5cCmR1cyBkZSBvcGRyYWNodCAnU0VUIFBST01QVD10ZWtlbnJlZWtzJyBoZWVmdCBoZXR6ZWxmZGUgZWZmZWN0IGFscyAnUFJPTVBUIHRla2VucmVla3MnXG4iCgogIFdDTURfUkVNLAoiRWVuIG9wZHJhY2h0cmVnZWwgZGllIGJlZ2ludCBtZXQgUkVNIChnZXZvbGQgZG9vciBlZW4gc3BhdGllKSB3b3JkdCBuaWV0XG5cCnVpdGdldm9lcmQsIGVuIGthbiBkYWFyb20gd29yZGVuIGdlYnJ1aWt0IGFscyBlZW4gY29tbWVudGFhcnJlZ2VsIGluIGVlbiBiYXRjaGJlc3RhbmQuXG4iCgogIFdDTURfUkVOLCAgICAiVWl0bGVnIGJpaiBSRU5cbiIKICBXQ01EX1JFTkFNRSwgIlVpdGxlZyBiaWogUkVOQU1FXG4iCiAgV0NNRF9SRCwgICAgICJVaXRsZWcgYmlqIFJEXG4iCiAgV0NNRF9STURJUiwgICJVaXRsZWcgYmlqIFJNRElSXG4iCgogIFdDTURfU0VULAoiU0VUIHRvb250IG9mIHdpanppZ3Qgb21nZXZpbmdzdmFyaWFiZWxlbiB2YW4gd2NtZC5cblwKXG5cClNFVCB6b25kZXIgcGFyYW1ldGVycyB0b29udCBhbGxlIG9tZ2V2aW5nc3ZhcmlhYmVsZW4uXG5cClxuXApEZSBzeW50YXggdm9vciBoZXQgbWFrZW4gb2Ygd2lqemlnZW4gdmFuIGVlbiBvbWdldmluZ3N2YXJpYWJlbGUgaXM6XG5cClxuXAogICAgICBTRVQgPHZhcmlhYmxlPj08d2FhcmRlPlxuXApcblwKd2FhcmJpaiA8dmFyaWFibGU+IGVuIDx3YWFyZGU+IHVpdCB0ZWtlbnJlZWtzZW4gYmVzdGFhbi4gRXIgbW9nZW4gZ2VlbiBzcGF0aWVzXG5cCnZvb3IgaGV0IGlzLWdlbGlqay10ZWtlbiBzdGFhbiwgbm9jaCBtb2dlbiBlciBpbiBkZSB2YXJpYWJlbGVuYWFtXG5cCnNwYXRpZXMgdm9vcmtvbWVuLlxuXApcblwKT25kZXIgV2luZSB3b3JkZW4gZGUgb21nZXZpbmdzdmFyaWFiZWxlbiB2YW4gaGV0IG9uZGVybGlnZ2VuZGUgYmVzdHVyaW5nc3N5c3RlZW1cblwKb3BnZW5vbWVuIGluIGRlIFdpbjMyIG9tZ2V2aW5nLiBFciB6dWxsZW4gZGFhcm9tIGRvb3JnYWFucyB2ZWVsIG1lZXJcblwKdmFyaWFiZWxlbiBpbiB2b29ya29tZW4gZGFuIGluIGVlbiBvb3JzcHJvbmtlbGlqa2UgV2luMzIgaW1wbGVtZW50YXRpZS4gTWVyayBvcCBkYXQgaGV0XG5cCm5pZXQgbW9nZWxpamsgaXMgb20gZGUgb21nZXZpbmdzdmFyaWFiZWxlbiB2YW4gaGV0IG9uZGVybGlnZ2VuZGUgYmVzdHVyaW5nc3N5c3RlZW0gdGVcblwKd2lqemlnZW4gdmFudWl0IHdjbWQuXG4iCgogIFdDTURfU0hJRlQsCiJTSElGVCB3b3JkdCBnZWJydWlrdCBpbiBlZW4gYmF0Y2hiZXN0YW5kIG9tIGVlbiBwYXJhbWV0ZXIgdGUgdmVyd2lqZGVyZW4gdmFuIGhldCBiZWdpbiB2YW5cblwKZGUgbGlqc3QuIER1cyBkZSB0d2VlZGUgcGFyYW1ldGVyIHdvcmR0IGRhbiBkZSBlZXJzdGUsIGVuem92b29ydC4gRGV6ZSBvcGRyYWNodCBoZWVmdCBnZWVuIGVmZmVjdFxuXAphbHMgaGlqIHdvcmR0IGFhbmdlcm9lcGVuIHZhbmFmIGRlIG9wZHJhY2h0cmVnZWwuXG4iCgogIFdDTURfVElNRSwgICAiVWl0bGVnIGJpaiBUSU1FXG4iCgogIFdDTURfVElUTEUsICAiV2lqemlndCBkZSBuYWFtIHZhbiBoZXQgd2NtZC12ZW5zdGVyLCBzeW50YXg6IFRJVExFIFt0ZWtlbnJlZWtzXVxuIgoKICBXQ01EX1RZUEUsCiJUWVBFIDxiZXN0YW5kc25hYW0+IGtvcGnrZXJ0IDxiZXN0YW5kc25hYW0+IG5hYXIgaGV0IHVpdHZvZXJhcHBhcmFhdC5cblwKRXIgd29yZHQgbmlldCBnZWNvbnRyb2xlZXJkIG9mIGhldCBiZXN0YW5kIGxlZXNiYXJlIHRla3N0IGJldmF0LlxuIgoKICBXQ01EX1ZFUklGWSwKIlZFUklGWSB3b3JkdCBnZWJydWlrdCBvbSBkZSBWRVJJRlktc2NoYWtlbGFhciBhYW4gb2YgdWl0IHRlIHpldHRlbiBvZiBvbSBoZW0gdGUgdGVzdGVuLiBHZWxkaWdlIGFhbnJvZXBlbiB6aWpuOlxuXApcblwKVkVSSUZZIE9OCVpldCBkZSBzY2hha2VsYWFyIGFhblxuXApWRVJJRlkgT0ZGCVpldCBkZSBzY2hha2VsYWFyIHVpdFxuXApWRVJJRlkJCVRvb250IE9OIG9mIE9GRiBuYWFyIGdlbGFuZyBkZSBzdGFuZC5cblwKXG5cCkRlIHZlcmlmeS1zY2hha2VsYWFyIGhlZWZ0IGdlZW4gZnVuY3RpZSBiaW5uZW4gV2luZS5cbiIKCiAgV0NNRF9WRVIsCiJWRVIgdG9vbnQgZGUgdmVyc2llIHZhbiB3Y21kIGRpZSB1IGRyYWFpdFxuIgoKICBXQ01EX1ZPTCwgICAgIlVpdGxlZyBiaWogVk9MXG4iCgogIFdDTURfRVhJVCwKIkVYSVQgYmXraW5kaWd0IGRlIGxvcGVuZGUgc2Vzc2llIGVuIGtlZXJ0IHRlcnVnXG5cCm5hYXIgaGV0IGJlc3R1cmluZ3NzeXN0ZWVtIG9mIGRlIHNjaGlsIHZhbiB3YWFydWl0IHdjbWQgd2VyZCBnZXN0YXJ0LlxuIgoKICAxMDAwLCAiV0NNRCdzIGluZ2Vib3V3ZGUgb3BkcmFjaHRlbiB6aWpuOlxuXApBVFRSSUJcdFx0VG9vbiBvZiB3aWp6aWcgRE9TIGJlc3RhbmRzYXR0cmlidXRlblxuXApDQUxMXHRcdFJvZXAgZWVuIGJhdGNoYmVzdGFuZCBhYW4gdmFudWl0IGVlbiBhbmRlciBiZXN0YW5kXG5cCkNEIChDSERJUilcdFdpanppZyBkZSBodWlkaWdlIGRpcmVjdG9yeVxuXApDTFNcdFx0V2lzIGhldCBzY2hlcm1cblwKQ09QWVx0XHRLb3Bp62VyIGVlbiBiZXN0YW5kXG5cCkNUVFlcdFx0V2lqemlnIGhldCBpbnZvZXItL3VpdHZvZXJhcHBhcmFhdFxuXApEQVRFXHRcdFRvb24gb2Ygd2lqemlnIGRlIHN5c3RlZW1kYXR1bVxuXApERUwgKEVSQVNFKVx0VmVyd2lqZGVyIGVlbiBiZXN0YW5kIG9mIGVlbiB2ZXJ6YW1lbGluZyB2YW4gYmVzdGFuZGVuXG5cCkRJUlx0XHRUb29uIGRlIGluaG91ZCB2YW4gZWVuIGRpcmVjdG9yeVxuXApFQ0hPXHRcdEtvcGnrZXIgdGVrc3QgZGlyZWN0IG5hYXIgaGV0IHVpdHZvZXJhcHBhcmFhdFxuXApIRUxQXHRcdFRvb24gZWVuIGtvcnRlIHVpdGxlZyBvdmVyIGVlbiBvbmRlcndlcnBcblwKTUQgKE1LRElSKVx0TWFhayBlZW4gZGlyZWN0b3J5XG5cCk1PVkVcdFx0VmVycGxhYXRzIGVlbiBiZXN0YW5kLCBlZW4gdmVyemFtZWxpbmcgYmVzdGFuZGVuIG9mIGVlbiBkaXJlY3RvcnlcblwKUEFUSFx0XHRXaWp6aWcgb2YgdG9vbiBoZXQgem9la3BhZFxuXApQUk9NUFRcdFx0V2lqemlnIGRlIHByb21wdFxuXApSRU4gKFJFTkFNRSlcdEhlcm5vZW0gZWVuIGJlc3RhbmRcblwKUkQgKFJNRElSKVx0VmVyd2lqZGVyIGVlbiBkaXJlY3RvcnlcblwKU0VUXHRcdFdpanppZyBvZiB0b29uIGRlIG9tZ2V2aW5nc3ZhcmlhYmVsZW5cblwKVElNRVx0XHRXaWp6aWcgb2YgdG9vbiBkZSBzeXN0ZWVtdGlqZFxuXApUSVRMRVx0XHRXaWp6aWcgZGUgdmVuc3Rlcm5hYW0gdmFuIGRlIFdDTUQtc2Vzc2llXG5cClRZUEVcdFx0VG9vbiBkZSBpbmhvdWQgdmFuIGVlbiB0ZWtzdGJlc3RhbmRcblwKVkVSXHRcdFRvb24gZGUgdmVyc2llIHZhbiBXQ01EXG5cClZPTFx0XHRUb29uIGhldCBsYWJlbCB2YW4gZWVuIHNjaGlqZlxuXApFWElUXHRcdFNsdWl0IFdDTUQgYWZcblxuXAp0eXBlIEhFTFAgPG9wZHJhY2h0PiB2b29yIG1lZXIgaW5mb3JtYXRpZSBvdmVyIGJvdmVuZ2Vub2VtZGUgb3BkcmFjaHRlblxuIgp9Cg==