LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogTm9yd2VnaWFuIEJva23lbCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1LTIwMDYgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKgogKi8KCkxBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKCklEUl9XSU5FQ0ZHIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJPcHBzZXR0IiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjcwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX1NUUklORyxJRENfU1RBVElDLDExOSwxNywxMjAsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQICwxNSwxNywxNTcsMTExCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBMVEVYVCAgICAgICAgICAgIkRldHRlIGJpYmxpb3Rla2V0IGVyIGZyaSBwcm9ncmFtdmFyZXI7IGRldCBrYW4gcmVkaXN0cmlidWVyZXMgaSBoZW5ob2xkIHRpbCB2aWxr5XJlbmUgaSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdXRnaXR0IGF2IKt0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uuywgZW50ZW4gdmVyc2pvbiAyLjEgYXYgZGVubmUgTGlzZW5zZW4sIGVsbGVyIChodmlzIGR1IPhuc2tlciBkZXQpIGVuIG55ZXJlIHZlcnNqb24uIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDExOSw0NCwxMjQsNzIKRU5ECgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBQcm9ncmFtbWlubnN0aWxsaW5nZXIgIixJRENfU1RBVElDLCA4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJXaW5lIGthbiBoZXJtZSBldHRlciBmb3Jza2plbGxpZ2UgV2luZG93cy12ZXJzam9uZXIgZm9yIGh2ZXJ0IHByb2dyYW0uIERlbm5lIGZhbmVuIGVyIGtvYmxldCBtZWQgYmlibGlvdGVrLSBvZyBncmFmaWtrZmFuZW5lLCBz5W5uIGF0IGR1IGthbiBlbmRyZSBpbm5zdGlsbGluZ2VyIGZvciBoZWxlIHN5c3RlbWV0IGVsbGVyIGVua2VsdGUgcHJvZ3JhbSBkZXIgb2dz5S4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIlByb2dyYW1tZXIiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw1MCwyMzAsMTUwCiAgICBQVVNIQlVUVE9OCSAgICAiTGVnZyB0aWwgcHJvZ3ImYW0gLiAuIC4iLElEQ19BUFBfQUREQVBQLCA5MCwyMDQsNzUsMTQKICAgIFBVU0hCVVRUT04JICAgICJGamUmcm4gcHJvZ3JhbSIsSURDX0FQUF9SRU1PVkVBUFAsIDE3MCwyMDQsNzUsMTQKICAgIExURVhUICAgICAgICAgICAiJldpbmRvd3MtdmVyc2pvbjoiLElEQ19TVEFUSUMsMTcsMjI2LDU4LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDgzLDIyNCwxNjMsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QICAgIApFTkQKCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgVmluZHVpbm5zdGlsbGluZ2VyICIsSURDX1NUQVRJQyw4LDUsMjQ0LDE4MAoKICAgIENPTlRST0wJICAgICJUaWxsYXQgRGlyZWN0WC1wcm9ncmFtbWVyIOUgaGluZHJlIG11c2VuIGZyYSDlIGZvcmxhdGUgdmluZHVldCIsSURDX0RYX01PVVNFX0dSQUIsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxNSwyMzAsOAogICAgTFRFWFQgCSAgICAiSHZpcyB2aW5kdWVyIGtvbnRyb2xsZXJlcyBhdiBkaW4gc3RhbmRhcmR2aW5kdXNiZWhhbmRsZXIsIGblciBkZSB2YW5saWdlIHJhbW1lciwgb2cgcmVzcGVrdGVyZXIgZGV0IHZpcnR1ZWxsZSBza3JpdmVib3JkZXQgZGl0dCBvZyB2aXNlcyBpIHZpbmR1c2xpc3Rlbi5cblxuSHZpcyBkZSBlciB1a29udHJvbGxlcnRlIGVyIGRlIGtvYmxldCBmcmEgdmluZHVzYmVoYW5kbGVyZW4uIERldHRlIGJldHlyIGF0IGRlIGlra2UgaW50ZWdyZXJlcyBsaWtlIGdvZHQgbWVkIHNrcml2ZWJvcmRldCBkaXR0LCBtZW4gZW11bGVyaW5nZW4gYmxpciBtZXIgcHJlc2lzIHPlbm4gYXQgbm9lbiBwcm9ncmFtbWVyIHZpcmtlciBiZWRyZS4iLAoJCSAgICBJRENfU1RBVElDLDE1LDM4LDIyOCw4MAogICAgQ09OVFJPTAkgICAgIlRpbGxhdCB2aW5kdXNiZWhhbmRsZXJlbiDlIGtvbnRyb2xsZXJlIHZpbmR1ZW5lIixJRENfRU5BQkxFX01BTkFHRUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMTIsMjMwLDgKICAgIAogICAgTFRFWFQgICAgICAgICAgICJEdSBrYW4gdmVsZ2Ug5SBlbXVsZXJlIGV0IFdpbmRvd3Mtc2tyaXZlYm9yZCwgZGVyIGFsbGUgdmluZHVlbmUgZXIgYnVuZGV0IGkgZW4gdmlydHVlbGwgc2tqZXJtLCBlbGxlciBkdSBrYW4gZuUgdmluZHVlbmUgdGlsIOUgb3BwZvhyZSBzZWcgc29tIGFuZHJlIHByb2dyYW1tZXIgcOUgc2tyaXZlYm9yZGV0LiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwxMjYsMjI4LDI4CiAgICBMVEVYVCAgICAgICAgICAgIlNrcml2ZWJvcmRzc3RycmVsc2U6IixJRENfREVTS1RPUF9TSVpFLDE1LDE2OCw0NCw4LFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIlgiLElEQ19ERVNLVE9QX0JZLDEwOCwxNjgsOCw4LFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIkVtdWxlciBldCB2aXJ0dWVsdCBza3JpdmVib3JkIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxNTMsMjMwLDEwCgkJICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX1dJRFRILDY0LDE2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfSEVJR0hULDExNywxNjgsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAoKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdDNEICIsSURDX1NUQVRJQyw4LDE5MCwyNDQsNTAKCiAgICBMVEVYVAkgICAgIlZlcnRla3Mtc2t5Z2dlbGVnZ2luZzogIixJRENfU1RBVElDLDE1LDIwMCw4MCwzMAogICAgQ09NQk9CT1gJICAgIElEQ19EM0RfVlNIQURFUl9NT0RFLDEwMCwxOTgsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIENPTlRST0wgICAgICAgICAiVGlsbGF0IHBpa3NlbC1za3lnZ2VsZWdnZXIgKGh2aXMgbWFza2ludmFyZW4gc3T4dHRlciBkZXQpIixJRENfRDNEX1BTSEFERVJfTU9ERSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIxNywyMzAsMTAKICAgIEdST1VQQk9YICAgICAgICAiIFNjcmVlbiBSZXNvbHV0aW9uICIsSURDX1NUQVRJQyw4LDI0MiwyNDQsMjUKICAgIENPTlRST0wgICAgICAgICAiIiwgSURDX1JFU19UUkFDS0JBUiwgIm1zY3Rsc190cmFja2JhcjMyIixXU19UQUJTVE9QLDEyLDI1MCwxODcsMTUKICAgIEVESVRURVhUICAgICAgICBJRENfUkVTX0RQSUVESVQsMjA0LDI1MCwyMywxMyxFU19OVU1CRVJ8V1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJkcGkiLElEQ19TVEFUSUMsMjM1LDI1MiwxMCw4CkVORAoKSUREX0RMTENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgRExMLW92ZXJzdHlyaW5nICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJEeW5hbWlzayBrb2JsZWRlIGJpYmxpb3Rla2VyIGthbiBvcHBnaXMgaW5kaXZpZHVlbHQgdGlsIOUgduZyZSBlbnRlbiBpbm5lYnlnZ2V0IChmcmEgV2luZSkgZWxsZXIgaW5uZvhkdCAodGF0dCBmcmEgV2luZG93cyBlbGxlciBnaXR0IGF2IGV0IHByb2dyYW0pLiIKICAgICAgICAgICAgICAgICAgICAsSURDX1NUQVRJQywxNiwxNiwyMjAsMzIKICAgIExURVhUICAgICAgICAgICAiTnkgb3ZlcnN0eXJpbmcgZm9yIGJpYmxpb3RlazoiLElEQ19TVEFUSUMsMTYsNTgsMTAwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRExMQ09NQk8sMTYsNjgsMTQwLDE0LENCU19EUk9QRE9XTiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQgfCBDQlNfTE9XRVJDQVNFCiAgICBQVVNIQlVUVE9OICAgICAgIiZMZWdnIHRpbCIsSURDX0RMTFNfQURERExMLCAxNjQsNjgsODIsMTMsQlNfREVGUFVTSEJVVFRPTiAKICAgIExURVhUICAgICAgICAgICAiRWtzaXN0ZXJlbmRlIG92ZXJzdHlyaW5nZXI6IixJRENfU1RBVElDLDE2LDg2LDEwMCw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX0RMTFNfTElTVCwxNiw5NiwxNDAsMTQwLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19WU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIlImZWRpZ2VyIixJRENfRExMU19FRElURExMLDE2NCw5Niw4MiwxNAogICAgUFVTSEJVVFRPTiAgICAgICJGamUmcm4iLElEQ19ETExTX1JFTU9WRURMTCwxNjQsMTE0LDgyLDE0IApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlciBvdmVyc3R5cmluZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgTGFzdGluZ3NyZWtrZWZsZ2UgIixJRENfU1RBVElDLDgsNCw5NCw2NgogICAgQ09OVFJPTCAgICAgICAgICJJbm5lJmJ5Z2dldCAoV2luZSkiLElEQ19SQURfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAsMTYsMTQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiSSZubmb4ZHQgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDI0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZJbm5lYnlnZ2V0IHPlIGlubmb4ZHQiLElEQ19SQURfQlVJTFRJTl9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwzNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJJbm5mZPgmZHQgc+UgaW5uZWJ5Z2dldCIsSURDX1JBRF9OQVRJVkVfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDQ0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZEZWFrdGl2ZXIiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDU0LDc1LDEwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCw1Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgU3Rhc2pvbmthcnRsZWdnaW5nICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0ZXZpc25pbmciLElEQ19MSVNUX0RSSVZFUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxOCwyMzIsNzYKICAgIFBVU0hCVVRUT04gICAgICAiJkxlZ2cgdGlsIC4gLiAuIixJRENfQlVUVE9OX0FERCwxNSw5OCw0NSwxNAogICAgUFVTSEJVVFRPTiAgICAgICJGamUmcm4iLElEQ19CVVRUT05fUkVNT1ZFLDYzLDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZBdXRvbWF0aXNrIC4gLiAuIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTkwLDk4LDU2LDE0CgogICAgLyogZWRpdGluZyBkcml2ZSBkZXRhaWxzICovCiAgICBMVEVYVCAgICAgICAgICAgIiZTdGk6IixJRENfU1RBVElDLDE1LDEyMywyMCw5ICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1BBVEgsNDEsMTIwLDE2MCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiJkJsYSAuIC4gLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCgogICAgTFRFWFQgICAgICAgICAgICImVHlwZToiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjEsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgTFRFWFQgICAgICAgICAgICJWb2x1bW5hdm4gb2cgc2VyaWVudW1tZXIiLElEQ19MQUJFTFNFUklBTF9TVEFUSUMsMTUsMTU1LDk1LDEwCgogICAgUFVTSEJVVFRPTiAgICAgICJBdmFuJnNlcnQgdmlzbmluZyIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTg2LDEzNiw2MCwxMwogICAgQ09OVFJPTCAgICAgICAgICImRmlubiBhdXRvbWF0aXNrIGZyYSBlbmhldDoiLElEQ19SQURJT19BVVRPREVURUNULCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxNjYsOTMsMTAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9ERVZJQ0UsMjcsMTc2LDE3NCwxMyxFU19BVVRPSFNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICImQmxhIC4gLiAuIixJRENfQlVUVE9OX0JST1dTRV9ERVZJQ0UsMjA2LDE3Niw0MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJPcHBuZXZuICZtYW51ZWx0OiIsSURDX1JBRElPX0FTU0lHTiwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTk1LDY5LDEwCgogICAgTFRFWFQgICAgICAgICAgICJWbyZsdW1uYXZuOiIsSURDX1NUQVRJQ19MQUJFTCwzMywyMDgsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9MQUJFTCw2MywyMDUsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlMmZXJpZW51bW1lcjoiLElEQ19TVEFUSUNfU0VSSUFMLDMzLDIyNSwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1NFUklBTCw2MywyMjEsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJWaXMgLi1maWxlciIsSURDX1NIT1dfRE9UX0ZJTEVTLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOCwyNjAsMjMwLDgKRU5ECgpJRERfQVVESU9DRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFZhbGcgYXYgZHJpdmVyICIsSURDX1NUQVRJQyw4LDQsMjQ0LDE5NQogICAgTFRFWFQgICAgICAgICAgICJWZWxnIGVuIGx5ZGRyaXZlciB2ZWQg5SBrcnlzc2UgYXYgaSBib2tzZW4gdmVkIHNpZGVuIGF2IGRlbiBkdSB2aWwgYnJ1a2UuIERlYWt0aXZlciBseWQgdmVkIOUgaWtrZSB2ZWxnZSBub2VuLiBEZXQgYW5iZWZhbGVzIGlra2Ug5SB2ZWxnZSBmbGVyZSBkcml2ZXJlLiBEcml2ZXJlbnMgb3Bwc2V0dCBrYW4gZW5kcmVzIHZlZCDlIGj4eXJla2xpa2tlIHDlIGRlbi4iLElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIkVuaGV0ZXIiLElEQ19BVURJT19UUkVFLCJTeXNUcmVlVmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QLDE1LDUwLDE0MCwxNDAgCiAgICBQVVNIQlVUVE9OCSAgICAiS29udHJvbGxwYW5lbCIsSURDX0FVRElPX0NPTlRST0xfUEFORUwsMTcwLDUwLDU5LDE0CiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3RTb3VuZCAiLElEQ19TVEFUSUMsOCwyMDUsMjQ0LDYwCiAgICBMVEVYVAkgIk1hc2tpbnZhcmVha3NlbGVyYXNqb246ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTdGQuIHNhbXBsaW5nc3JhdGU6IixJRENfU1RBVElDLDE1LDIzMiw3MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9SQVRFUyw5MCwyMzAsNDIsNzYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlN0ZC4gYml0ZXIgcGVyIHBy+HZlOiIsSURDX1NUQVRJQywxMzcsMjMyLDgwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX0JJVFMsMjIwLDIzMCwzMCw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICAgICAiRHJpdmVyZW11bGVyaW5nIixJRENfRFNPVU5EX0RSVl9FTVVMLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjUwLDIzMCwxMApFTkQKCklERF9ERVNLVE9QX0lOVEVHUkFUSU9OIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBBcHBlYXJhbmNlICIsSURDX1NUQVRJQyw4LDQsMjQ0LDEwNgogICAgTFRFWFQgICAgICAgICAgICJUZW1hOiIsSURDX1NUQVRJQywxNSwxNiwxMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9USEVNRUNPTUJPLDE1LDI0LDEzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiSW5zdGFsbGVyIHRlbWEgLiAuIC4iLElEQ19USEVNRV9JTlNUQUxMLDE1MiwyMyw5MywxNAogICAgTFRFWFQgICAgICAgICAgICJGYXJnZToiLElEQ19USEVNRV9DT0xPUlRFWFQsMTUsNDAsMTEyLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfQ09MT1JDT01CTywxNSw0OCwxMTIsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlN0+HJyZWxzZToiLElEQ19USEVNRV9TSVpFVEVYVCwxMzUsNDAsMTEwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfU0laRUNPTUJPLDEzNSw0OCwxMTAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkVsZW1lbnQ6IixJRENfU1RBVElDLDE1LDY0LDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1NZU1BBUkFNX0NPTUJPLDE1LDc0LDExMiwxMjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQKICAgIExURVhUICAgICAgICAgICAiRmFyZ2U6IixJRENfU1lTUEFSQU1fQ09MT1JfVEVYVCwxMzUsNjQsMjUsOCxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICIiLElEQ19TWVNQQVJBTV9DT0xPUiwxMzUsNzQsMjUsMTMsV1NfRElTQUJMRUQgfCBCU19PV05FUkRSQVcKICAgIExURVhUICAgICAgICAgICAiU3T4cnJlbHNlOiIsSURDX1NZU1BBUkFNX1NJWkVfVEVYVCwxNjYsNjQsMzAsOCxXU19ESVNBQkxFRAogICAgRURJVFRFWFQgICAgICAgIElEQ19TWVNQQVJBTV9TSVpFLDE2Niw3NCwyMywxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19TWVNQQVJBTV9TSVpFX1VELFVQRE9XTl9DTEFTUyxVRFNfU0VUQlVERFlJTlQgfCBXU19ESVNBQkxFRCwxODcsNzQsMTUsMTMKICAgIFBVU0hCVVRUT04gICAgICAiU2tyaWZ0IixJRENfU1lTUEFSQU1fRk9OVCwyMDgsNzQsMzcsMTMsV1NfRElTQUJMRUQKICAgIEdST1VQQk9YICAgICAgICAiIFNrYWxsa2F0YWxvZyAiLElEQ19TVEFUSUMsOCwxMTQsMjQ0LDEwMAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0ZXZpc25pbmciLElEQ19MSVNUX1NGUEFUSFMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDEyNiwyMzAsNjQKICAgIENPTlRST0wgICAgICAgICAiUGVrIHRpbDoiLElEQ19MSU5LX1NGUEFUSCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUHxXU19ESVNBQkxFRCwxNSwxOTUsNTAsMTMKICAgIEVESVRURVhUICAgICAgICAgSURDX0VESVRfU0ZQQVRILDY1LDE5NSwxNDUsMTMsRVNfQVVUT0hTQ1JPTEx8V1NfVEFCU1RPUHxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICJCbGEiLElEQ19CUk9XU0VfU0ZQQVRILDIxNSwxOTUsMzAsMTMsV1NfRElTQUJMRUQKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1dJTkVfVkVSU0lPTiAgICAgICAgIkNWUyIKICAgIElEU19UQUJfQVBQTElDQVRJT05TICAgICJQcm9ncmFtbWVyIgogICAgSURTX1RBQl9ETExTICAgICAgICAgICAgIkJpYmxpb3Rla2VyIgogICAgSURTX1RBQl9EUklWRVMgICAgICAgICAgIlN0YXNqb25lciIKICAgIElEU19DSE9PU0VfUEFUSCAgICAgICAgICJWZWxnIFVuaXgtbeVsa2F0YWxvZ2VuLiIKICAgIElEU19ISURFX0FEVkFOQ0VEICAgICAgICJFbmtlbCB2aXNuaW5nIgogICAgSURTX1NIT1dfQURWQU5DRUQgICAgICAgIkF2YW5zZXJ0IHZpc25pbmciCiAgICBJRFNfTk9USEVNRSAgICAgICAgICAgICAiKEludGV0IHRlbWEpIgogICAgSURTX1RBQl9HUkFQSElDUyAgICAgICAgIkdyYWZpa2siCiAgICBJRFNfVEFCX0RFU0tUT1BfSU5URUdSQVRJT04gIlNrcml2ZWJvcmRzaW50ZWdyZXJpbmciCiAgICBJRFNfVEFCX0FVRElPICAgICAgICAgICAiTHlkIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIk9tIgogICAgSURTX1dJTkVDRkdfVElUTEUgICAgICAgIk9wcHNldHQgYXYgV2luZSIKICAgIElEU19XSU5FQ0ZHX1RJVExFX0FQUCAgICJXaW5lIGNvbmZpZ3VyYXRpb24gZm9yICVzIgogICAgSURTX1RIRU1FRklMRSAgICAgICAgICAgIlRlbWFmaWxlciIKICAgIElEU19USEVNRUZJTEVfU0VMRUNUICAgICJWZWxnIGVuIHRlbWFmaWwiCiAgICBJRFNfQVVESU9fTUlTU0lORyAgICAgICAiSW5nZW4gbHlkZHJpdmVyIGVyIG9wcGdpdHQgaSByZWdpc3RlcmV0LlxuXG5FbiBhbmJlZmFsdCBkcml2ZXIgZXIgdmFsZ3QgZm9yIGRlZztcbmJydWsgZGVuIGVsbGVyIHZlbGcgZW4gYW5uZW4sXG5cbm9nIHRyeWtrIKtCcnVruyBmb3IgYXQgZW5kcmluZ2VuZSBza2FsIHRyZSBpIGtyYWZ0LiIKICAgIElEU19TSEVMTF9GT0xERVIgICAgICAgICJTa2FsbGthdGFsb2ciCiAgICBJRFNfTElOS1NfVE8gICAgICAgICAgICAiUGVrZXIgdGlsIgpFTkQKICAgIAogICAgU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICAgIEJFR0lOCiAgICBJRFNfRExMX1dBUk5JTkcgICAgICAgICAiRW5kcmluZyBhdiBsYXN0aW5nc3Jla2tlZvhsZ2VuIGZvciBkZXR0ZSBiaWJsaW90ZWtldCBhbmJlZmFsZXMgaWtrZS5cbkVyIGR1IHNpa2tlciBw5SBhdCBkdSB2aWwgZ2r4cmUgZGV0PyIKICAgIElEU19ETExfV0FSTklOR19DQVBUSU9OICJBZHZhcnNlbDogc3lzdGVtYmlibGlvdGVrIgogICAgSURTX0RMTF9OQVRJVkUgICAgICAgICAgImlubmb4ZHQiCiAgICBJRFNfRExMX0JVSUxUSU4gICAgICAgICAiaW5uZWJ5Z2dldCIKICAgIElEU19ETExfTkFUSVZFX0JVSUxUSU4gICJpbm5m+GR0LCBpbm5lYnlnZ2V0IgogICAgSURTX0RMTF9CVUlMVElOX05BVElWRSAgImlubmVieWdnZXQsIGlubmb4ZHQiCiAgICBJRFNfRExMX0RJU0FCTEVEICAgICAgICAic2zldHQgYXYiCiAgICBJRFNfREVGQVVMVF9TRVRUSU5HUyAgICAiR2xvYmFsZSBpbm5zdGlsbGluZ2VyIgogICAgSURTX0VYRUNVVEFCTEVfRklMVEVSICAgIldpbmUtcHJvZ3JhbW1lciAoKi5leGUsKi5leGUuc28pXDAqLmV4ZTsqLmV4ZS5zb1wwIgogICAgSURTX1VTRV9HTE9CQUxfU0VUVElOR1MgIkJydWsgZ2xvYmFsZSBpbm5zdGlsbGluZ2VyIgogICAgSURTX1NFTEVDVF9FWEVDVVRBQkxFICAgIlZlbGcgZW4gcHJvZ3JhbWZpbCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1NIQURFUl9NT0RFX0hBUkRXQVJFICAgICJNYXNraW52YXJlIgogICAgSURTX1NIQURFUl9NT0RFX05PTkUgICAgICAgICJJbmdlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0RSSVZFX1VOS05PV04gICAgICAgICAgICJBdXRvbWF0aXNrIgogICAgSURTX0RSSVZFX0ZJWEVEICAgICAgICAgICAgICJMb2thbCBoYXJkZGlzayIKICAgIElEU19EUklWRV9SRU1PVEUgICAgICAgICAgICAiTmV0dHZlcmtzcmVzc3VycyIKICAgIElEU19EUklWRV9SRU1PVkFCTEUgICAgICAgICAiRGlza2V0dCIKICAgIElEU19EUklWRV9DRFJPTSAgICAgICAgICAgICAiQ0QtUk9NIgogICAgSURTX0RSSVZFX0xFVFRFUlNfRVhDRUVERUQgICJEdSBrYW4gaWtrZSBsZWdnZSB0aWwgZmxlcmUgc3Rhc2pvbmVyLlxuXG5IdmVyIHN0YXNqb24gbeUgaGEgZW4gYm9rc3RhdiBmcmEgQSB0aWwgWiwgc+UgMjYgc3Rhc2pvbmVyIGVyIGRldCBtZXN0ZSIKICAgIElEU19TWVNURU1fRFJJVkVfTEFCRUwgICAgICAiU3lzdGVtc3Rhc2pvbiIKICAgIElEU19DT05GSVJNX0RFTEVURV9DICAgICAgICAiVmlsIGR1IHZpcmtlbGlnIGZqZXJuZSBzdGFzam9uIEM/XG5cbkRlIGZsZXN0ZSBXaW5kb3dzLXByb2dyYW1tZXIgZm9ydmVudGVyIGF0IEMgZmlubmVzLCBvZyBsYWdlciBicuVrIGh2aXMgZGVuIGlra2UgZXIgZGVyLiBIdXNrIOUgbGFnZSBkZW4gcOUgbnl0dCBodmlzIGR1IGZvcnRzZXR0ZXIuIgogICAgSURTX0NPTF9EUklWRUxFVFRFUiAgICAgICAgICJCb2tzdGF2IgogICAgSURTX0NPTF9EUklWRU1BUFBJTkcgICAgICAgICJQZWtlciB0aWwiCiAgICBJRFNfTk9fRFJJVkVfQyAgICAgICAgICAgICAgIkR1IGhhciBpa2tlIGVuIEMtc3Rhc2pvbi4gRGV0IGVyIGlra2Ugc+UgYnJhLi5cblxuSHVzayDlIHRyeWtrZSCrTGVnZyB0aWy7IGkgc3Rhc2pvbnNmYW5lbiBmb3Ig5SBsYWdlIGVuLlxuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQUNDRUxfRlVMTCAgICAgICAgICAgICAgIkZ1bGwiCiAgICBJRFNfQUNDRUxfU1RBTkRBUkQgICAgICAgICAgIlN0YW5kYXJkIgogICAgSURTX0FDQ0VMX0JBU0lDICAgICAgICAgICAgICJHcnVubmxlZ2dlbmRlIgogICAgSURTX0FDQ0VMX0VNVUxBVElPTiAgICAgICAgICJFbXVsZXJpbmciCiAgICBJRFNfRFJJVkVSX0FMU0EgICAgICAgICAgICAgIkFMU0EtZHJpdmVyIgogICAgSURTX0RSSVZFUl9FU09VTkQgICAgICAgICAgICJFc291bkQtZHJpdmVyIgogICAgSURTX0RSSVZFUl9PU1MgICAgICAgICAgICAgICJPU1MtZHJpdmVyIgogICAgSURTX0RSSVZFUl9KQUNLICAgICAgICAgICAgICJKQUNLLWRyaXZlciIKICAgIElEU19EUklWRVJfTkFTICAgICAgICAgICAgICAiTkFTLWRyaXZlciIKICAgIElEU19EUklWRVJfQVVESU9JTyAgICAgICAgICAiQXVkaW8gSU8gKFNvbGFyaXMpLWRyaXZlciIKICAgIElEU19EUklWRVJfQ09SRUFVRElPICAgICAgICAiQ29yZUF1ZGlvLWRyaXZlciIKICAgIElEU19PUEVOX0RSSVZFUl9FUlJPUiAgICAgICAiS2xhcnRlIGlra2Ug5XBuZSAlcy4iCiAgICBJRFNfU09VTkREUklWRVJTICAgICAgICAgICAgIkx5ZGRyaXZlcmUiCiAgICBJRFNfREVWSUNFU19XQVZFT1VUICAgICAgICAgIkx5ZCB1dC1lbmhldGVyIgogICAgSURTX0RFVklDRVNfV0FWRUlOICAgICAgICAgICJMeWQgaW5uLWVuaGV0ZXIiCiAgICBJRFNfREVWSUNFU19NSURJT1VUICAgICAgICAgIk1JREkgdXQtZW5oZXRlciIKICAgIElEU19ERVZJQ0VTX01JRElJTiAgICAgICAgICAiTUlESSBpbm4tZW5oZXRlciIKICAgIElEU19ERVZJQ0VTX0FVWCAgICAgICAgICAgICAiQXV4LWVuaGV0ZXIiCiAgICBJRFNfREVWSUNFU19NSVhFUiAgICAgICAgICAgIk1pa3NlcmVuaGV0ZXIiCiAgICBJRFNfVU5BVkFJTEFCTEVfRFJJVkVSICAgICAgIkZhbnQgZHJpdmVyIGkgcmVnaXN0ZXJldCBzb20gaWtrZSBlciB0aWxnamVuZ2VsaWcuXG5cbkZqZXJuZSCrJXO7IGZyYSByZWdpc3RlcmV0PyIKICAgIElEU19XQVJOSU5HICAgICAgICAgICAgICAgICAiQWR2YXJzZWwiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEQ19TWVNQQVJBTVNfQlVUVE9OICAgICAgICAgICAgIlN0eXJlciBiYWtncnVubmVuIgogICAgSURDX1NZU1BBUkFNU19CVVRUT05fVEVYVCAgICAgICAiU3R5cmVyIHRla3N0IgogICAgSURDX1NZU1BBUkFNU19ERVNLVE9QICAgICAgICAgICAiU2tyaXZlYm9yZCIKICAgIElEQ19TWVNQQVJBTVNfTUVOVSAgICAgICAgICAgICAgIk1lbnliYWtncnVubiIKICAgIElEQ19TWVNQQVJBTVNfTUVOVV9URVhUICAgICAgICAgIk1lbnl0ZWtzdCIKICAgIElEQ19TWVNQQVJBTVNfU0NST0xMQkFSICAgICAgICAgIlJ1bGxlZmVsdCIKICAgIElEQ19TWVNQQVJBTVNfU0VMRUNUSU9OICAgICAgICAgIkJha2dydW5uIGZvciBtZXJraW5nIgogICAgSURDX1NZU1BBUkFNU19TRUxFQ1RJT05fVEVYVCAgICAiTWVya2V0IHRla3N0IgogICAgSURDX1NZU1BBUkFNU19UT09MVElQICAgICAgICAgICAiQmFrZ3J1bm4gZm9yIHZlcmt0+Hl0aXBzIgogICAgSURDX1NZU1BBUkFNU19UT09MVElQX1RFWFQgICAgICAiVGVrc3QgaSB2ZXJrdPh5dGlwcyIKICAgIElEQ19TWVNQQVJBTVNfV0lORE9XICAgICAgICAgICAgIlZpbmR1YmFrZ3J1bm4iCiAgICBJRENfU1lTUEFSQU1TX1dJTkRPV19URVhUICAgICAgICJWaW5kdXRla3N0cyIKICAgIElEQ19TWVNQQVJBTVNfQUNUSVZFX1RJVExFICAgICAgIkFrdGl2IHRpdHRlbGxpbmplIgogICAgSURDX1NZU1BBUkFNU19BQ1RJVkVfVElUTEVfVEVYVCAiQWt0aXYgdGl0dGVsdGVrc3QiCiAgICBJRENfU1lTUEFSQU1TX0lOQUNUSVZFX1RJVExFICAgICJJbmFrdGl2IHRpdHRlbGxpbmplIgogICAgSURDX1NZU1BBUkFNU19JTkFDVElWRV9USVRMRV9URVhUICJJbmFrdGl2IHRpdHRlbHRla3N0IgogICAgSURDX1NZU1BBUkFNU19NU0dCT1hfVEVYVCAgICAgICAiTWVzc2FnZSBCb3ggVGV4dCIKRU5ECg==