LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMyBWaW5jZW50IELpcm9uCiAqIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gRXJuc3QKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RyZXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSW1wb3J0ZXIgdW4gZmljaGllciBkZSByZWdpc3RyZXMuLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGVyIHVuIGZpY2hpZXIgZGUgcmVnaXN0cmVzLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb25uZWN0ZXIg4CBkZXMgcmVnaXN0cmVzIHZpYSBsZSBy6XNlYXUuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkTpY29ubmVjdGVyIGRlIHJlZ2lzdHJlcyBy6XNlYXUuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSW0mcHJpbWVyXHRDdHJsK1AiLCAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUXVpdHRlciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICLJJmRpdGlvbiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZNb2RpZmllciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5vdXZlbGxlIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2zpIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgYyZoYe5uZSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbGV1ciAmYmluYWlyZSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbGV1ciAmbW90IGRvdWJsZSIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbGV1ciBjaGHubmUgJm11bHRpcGxlIiwgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3VwcHJpbWVyXHRTdXBwciIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlbiZvbW1lclx0RjIiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpZXIgbGUgbm9tIGRlIGxhIGNs6SIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZSZWNoZXJjaGVyLi4uXHRDdHJsK0YiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiUmVjaGVyY2hlciBsZSBzJnVpdmFudFx0RjMiLCAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZBZmZpY2hhZ2UiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQmFycmUgZCfpdGF0IiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZT6XBhcmF0ZXVyIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUmFmcmHuY2hpclx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZTaWduZXRzIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFqb3V0ZXIgYXV4IHNpZ25ldHMuLi4iLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiJlN1cHByaW1lciBkZXMgc2lnbmV0cy4uLiIsICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIkFpZCZlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlNvbW1haXJlXHRGMSIsICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICBNRU5VSVRFTSAiwCAmcHJvcG9zIGRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMiLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIiZNb2RpZmllciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZmllciBkb25u6WVzIGJpbmFpcmVzIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImU3VwcHJpbWVyXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIlJlbiZvbW1lciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOb3V2ZWxsZSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkNs6SIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsZXVyIGMmaGHubmUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgJmJpbmFpcmUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgJm1vdCBkb3VibGUiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgY2hh7m5lICZtdWx0aXBsZSIsICAgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlN1cHByaW1lclx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiUmVuJm9tbWVyXHRGMiIsICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGVyLi4uIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9FWFBPUlQKICAgICAgICBNRU5VSVRFTSAiJkNvcGllciBsZSBub20gZGUgbGEgY2zpIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlJlY2hlcmNoZXJcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiJkV4cG9ydGVyIGxlIHJlZ2lzdHJlIiwgSURDX0VYUE9SVF9CQVNFLCA2LCA2LCAyNjYsIDQyLCBXU19HUk9VUAogICAgQVVUT1JBRElPQlVUVE9OICImVG91dCIsIElEQ19FWFBPUlRfQUxMLCAxMiwgMTUsIDI0NCwgMTIKICAgIEFVVE9SQURJT0JVVFRPTiAiJlPpbGVjdGlvbm5lciB1bmUgYnJhbmNoZaA6IiwgSURDX0VYUE9SVF9TRUxFQ1RFRCwgMTIsIDMwLCA3MCwgMTIKICAgIEVESVRURVhUIElEQ19FWFBPUlRfUEFUSCwgODIsIDMwLCAxODQsIDEyCkVORAoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlY2hlcmNoZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJSZWNoZXJjaGVyoDoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICJSZWdhcmRlciBkYW5zoDoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOAogICAgQ0hFQ0tCT1ggICAgICAgICJDbOlzIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIlZhbGV1cnMiLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiRG9ubullcyIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiTW90IGVudGllciBzZXVsZW1lbnQiLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICJTdWl2YW50IixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkZlcm1lciIsSURDQU5DRUwsMTc1LDIyLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQWpvdXRlciBhdXggc2lnbmV0cyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb20gZHUgc2lnbmV0oDoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNDAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU3VwcHJpbWVyIGxlcyBzaWduZXRzIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlPpbGVjdGlvbm5leiB1biBvdSBwbHVzaWV1cnMgc2lnbmV0c6A6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNzMsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTc1LDczLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTW9kaWZpY2F0aW9uIGRlIGxhIGNoYe5uZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb20gZGUgbGEgdmFsZXVyoDoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRvbm7pZXMgZGUgbGEgdmFsZXVyoDoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXIiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTW9kaWZpY2F0aW9uIGRlIGxhIHZhbGV1ciBEV09SRCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb20gZGUgbGEgdmFsZXVyoDoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRvbm7pZXMgZGUgdmFsZXVyoDoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXNlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWTpY2ltYWxlIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkTpY2ltYWxlIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJNb2RpZmljYXRpb24gZGUgbGEgdmFsZXVyIGJpbmFpcmUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tIGRlIGxhIHZhbGV1cqA6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRvbm7pZXMgZGUgbGEgdmFsZXVyoDoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsZXIiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX01VTFRJX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXQgTXVsdGkgU3RyaW5nIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5vbSBkZSBsYSB2YWxldXKgOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEb25u6WVzIGRlIGxhIHZhbGV1cqA6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19IU0NST0xMIHwgV1NfVlNDUk9MTCB8IEVTX01VTFRJTElORSB8IEVTX1dBTlRSRVRVUk4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDE2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbm51bGVyIixJRENBTkNFTCwxNzUsMTYwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOb20iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwZSIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJWYWxldXIiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICLJZGl0ZXVyIGRlIHJlZ2lzdHJlcyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkNvbnRpZW50IGRlcyBjb21tYW5kZXMgcG91ciB0cmF2YWlsbGVyIHN1ciBsZXMgcmVnaXN0cmVzIGRlIG1hbmnocmUgZ2xvYmFsZSIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb250aWVudCBkZXMgY29tbWFuZGVzIHBvdXIg6WRpdGVyIGRlcyB2YWxldXJzIG91IGRlcyBjbOlzIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnRpZW50IGRlcyBjb21tYW5kZXMgcG91ciBwZXJzb25uYWxpc2VyIGxhIGZlbup0cmUgZGVzIHJlZ2lzdHJlcyIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJDb250aWVudCBkZXMgY29tbWFuZGVzIHBvdXIgYWNj6WRlciBhdXggY2zpcyBmculxdWVtbWVudCB1dGlsaXPpZXMiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiQ29udGllbnQgZGVzIGNvbW1hbmRlcyBwb3VyIGFmZmljaGVyIGRlIGwnYWlkZSBldCBkZSBsJ2luZm9ybWF0aW9uIOAgcHJvcG9zIGRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiQ29udGllbnQgZGVzIGNvbW1hbmRlcyBwb3VyIGNy6WVyIGRlIG5vdXZlbGxlcyBjbOlzIG91IHZhbGV1cnMiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJNb2RpZmllIGxlcyBkb25u6WVzIGQndW5lIHZhbGV1ciIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJBam91dGUgdW5lIG5vdXZlbGxlIGNs6SIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJBam91dGUgdW5lIG5vdXZlbGxlIHZhbGV1ciBjaGHubmUiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiQWpvdXRlIHVuZSBub3V2ZWxsZSB2YWxldXIgYmluYWlyZSIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJBam91dGUgdW5lIG5vdXZlbGxlIHZhbGV1ciBtb3QgZG91YmxlIgogICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUgIkFqb3V0ZSB1bmUgbm91dmVsbGUgdmFsZXVyIGNoYe5uZSBtdWx0aXBsZSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0ZSB1biBmaWNoaWVyIHRleHRlIGRhbnMgbGVzIHJlZ2lzdHJlcyIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cG9ydGUgdG91dCBvdSB1bmUgcGFydGllIGRlcyByZWdpc3RyZXMgZGFucyB1biBmaWNoaWVyIHRleHRlIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3RlIGF1eCByZWdpc3RyZXMgZCd1biBvcmRpbmF0ZXVyIGRpc3RhbnQiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiROljb25uZWN0ZSBkZXMgcmVnaXN0cmVzIGQndW4gb3JkaW5hdGV1ciBkaXN0YW50IgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIkltcHJpbWUgdG91dCBvdSB1bmUgcGFydGllIGRlcyByZWdpc3RyZXMiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJPdXZyZSBsJ2FpZGUgZGUgbCfpZGl0ZXVyIGRlIHJlZ2lzdHJlcyIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJBZmZpY2hlIGRlIGwnaW5mb3JtYXRpb24gc3VyIGxlIHByb2dyYW1tZSwgbGUgbnVt6XJvIGRlIHZlcnNpb24gZXQgbGUgY29weXJpZ2h0IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiUXVpdHRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMiCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIkFqb3V0ZSBkZXMgY2zpcyDgIGxhIGxpc3RlIGRlcyBzaWduZXRzIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJSZXRpcmUgZGVzIGNs6XMgZGUgbGEgbGlzdGUgZGVzIHNpZ25ldHMiCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiTW9udHJlIG91IGNhY2hlIGxhIGJhcnJlIGQn6XRhdCIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICJDaGFuZ2UgbGEgcG9zaXRpb24gZGUgbGEgc+lwYXJhdGlvbiBlbnRyZSBsZXMgZGV1eCBwYW5uZWF1eCIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJSYWZyYe5jaGl0IGxhIGZlbup0cmUiCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAiU3VwcHJpbWUgbGEgc+lsZWN0aW9uIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIlJlbm9tbWUgbGEgc+lsZWN0aW9uIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkNvcGllIGxlIG5vbSBkZSBsYSBjbOkgc+lsZWN0aW9ubullIHZlcnMgbGUgcHJlc3NlLXBhcGllciIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJSZWNoZXJjaGUgZHUgdGV4dGUgZGFucyB1bmUgY2zpLCB1bmUgdmFsZXVyIG91IGRlcyBkb25u6WVzIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIlJlY2hlcmNoZSBsJ29jY3VyZW5jZSBzdWl2YW50ZSBkdSB0ZXh0ZSBkZSBsYSBkZXJuaehyZSByZWNoZXJjaGUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJFcnJldXIiCiAgICBJRFNfQkFEX0tFWQkJICAgICJOZSBwZXV0IHBhcyBxdWVzdGlvbm5lciBsYSBjbOkgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJOZSBwZXV0IHBhcyBxdWVzdGlvbm5lciBsYSB2YWxldXIgJyVzJyIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJOZSBwZXV0IHBhcyDpZGl0ZXIgZGVzIGNs6XMgZGUgY2UgdHlwZSAoJWxkKSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJMYSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkNvbmZpcm1leiBsJ2VmZmFjZW1lbnQgZGUgdmFsZXVyIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIsp0ZXMgdm91cyBz+3Igdm91cyB2b3VsZXogc3VwcHJpbWVyIGxhIHZhbGV1ciAnJXMnPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOb3V2ZWxsZSBDbOkgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk5vdXZlbGxlIFZhbGV1ciAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiT2NjdXJlbmNlIGRlICclcycgbm9uIHRyb3V26WUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICJJbXBvcnRlciB1biBmaWNoaWVyIGRlIHJlZ2lzdHJlIgogICAgSURTX0ZJTEVESUFMT0dfRVhQT1JUX1RJVExFICAgIkV4cG9ydGVyIHVuIGZpY2hpZXIgZGUgcmVnaXN0cmUiCiAgICBJRFNfRklMRURJQUxPR19GSUxURVIgICAgICAgICAiRmljaGllcnMgZGUgcmVnaXN0cmVzXDAqLnJlZ1wwRmljaGllcnMgZGUgcmVnaXN0cmVzIFdpbjl4L05UNCAoUkVHRURJVDQpXDAqLnJlZ1wwVG91cyBsZXMgZmljaGllcnMgKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19SRUdJU1RSWV9ST09UX05BTUUgICAgICAgICAgICJQb3N0ZSBkZSB0cmF2YWlsIgogICAgSURTX1JFR0lTVFJZX0RFRkFVTFRfVkFMVUUgICAgICAgIihwYXIgZOlmYXV0KSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9OT1RfU0VUICAgICAgICIodmFsZXVyIG5vbiBk6WZpbmllKSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9DQU5UX0RJU1BMQVkgICIoaW1wb3NzaWJsZSBkJ2FmZmljaGVyIGxhIHZhbGV1cikiCiAgICBJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKCVkIGluY29ubnUpIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiT3V2cmUgbCdhaWRlIGRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiQWZmaWNoZSBkZSBsJ2luZm9ybWF0aW9uIHN1ciBsZSBwcm9ncmFtbWUsIGxlIG51belybyBkZSB2ZXJzaW9uIGV0IGxlIGNvcHlyaWdodC4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=