LyoKICogV2luZUZpbGUKICogRnJlbmNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDAgTWFydGluIEZ1Y2hzCiAqIENvcHlyaWdodCAyMDAyIFN0ZXZlbiBFZHdhcmRzCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZAogKiBDb3B5cmlnaHQgMjAwMyBTeWx2YWluIFBldHJlb2xsZQogKiBDb3B5cmlnaHQgMjAwNS0yMDA2IEpvbmF0aGFuIEVybnN0CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKCi8qIE1lbnUgKi8KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkZpY2hpZXIiICB7CiAgICAgICAgTUVOVUlURU0gIiZPdXZyaXJcdEVudHLpZSIsICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZE6XBsYWNlci4uLlx0RjciLCAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImQ29waWVyLi4uXHRGOCIsICAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiUCZyZXNzZS1QYXBpZXJzLi4uXHRGOSIsICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIiZFZmZhY2VyXHREZWwiLCAgICAgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlJm5vbW1lci4uLiIsICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImUHJvcHJp6XTpcy4uLlx0QWx0K0VudHJlZSIsIElEX0VESVRfUFJPUEVSVElFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDbyZtcHJlc3Nlci4uLiIsICAgICAgICAgICAgICAxMTkKICAgICAgICBNRU5VSVRFTSAiROljb21wcmUmc3Nlci4uLiIsICAgICAgICAgICAgMTIwCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkUmeOljdXRlci4uLiIsICAgICAgICAgICAgICAgIElEX0VYRUNVVEUKICAgICAgICBNRU5VSVRFTSAiJkltcHJpbWVyLi4uIiwgICAgICAgICAgICAgICAgMTAyCiAgICAgICAgTUVOVUlURU0gIiZBc3NvY2llci4uLiIsICAgICAgICAgICAgICAgIDEwMwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDcullciBS6XBlciZ0b2lyZS4uLiIsICAgICAgICAxMTEKICAgICAgICBNRU5VSVRFTSAiUmVjJmhlcmNoZXIuLi4iLCAgICAgICAgICAgICAgMTA0CiAgICAgICAgTUVOVUlURU0gIlPpbGVjdGlvbm5lciAmRmljaGllcnMuLi4iLCAgIDExNgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIiZRdWl0dGVyXHRBbHQrWCIsICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICImUXVpdHRlciIsICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIiZEaXNxdWUiICB7CiAgICAgICAgTUVOVUlURU0gIiZDb3BpZXIgRGlzcXVlLi4uIiwgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICImTm9tbWVyIERpc3F1ZS4uLiIsICAgICAgICAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZvcm1hdGVyIERpc3F1ZS4uLiIsICAgICAgICAgSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQogICAgICAgIE1FTlVJVEVNICJDcullciB1biBkaXNxdWUgKnN5c3TobWUuLi4iLCAtMSAgLypUT0RPKi8KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNvbm5lY3RlciB1biBsZWN0ZXVyICZy6XNlYXUiLElEX0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNICImROljb25uZWN0ZXIgdW4gbGVjdGV1ciBy6XNlYXUiLElEX0RJU0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUGFydGFnZXIuLi4iLCAgICAgICAgICAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAiQ2Vzc2VyIGRlIHBhcnRhJmdlciIsICAgICAgICAgMjU1CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNob2lzaXIgbGUgJmxlY3RldXIiLCAgICAgICAgIDI1MQogICAgfQoKICAgIFBPUFVQICImUulwZXJ0b2lyZXMiICB7CiAgICAgICAgTUVOVUlURU0gIiZE6XZlbG9wcGVyIHVuIG5pdmVhdVx0KyIsICAgIDMwMQogICAgICAgIE1FTlVJVEVNICJE6XZlbG9wcGVyIHVuZSAmYnJhbmNoZVx0KiIsICAzMDIKICAgICAgICBNRU5VSVRFTSAiJlRvdXQgZOl2ZWxvcHBlclx0Q3RybCsqIiwgICAgMzAzCiAgICAgICAgTUVOVUlURU0gIiZS6WR1aXJlIHVuZSBicmFuY2hlXHQtIiwgICAgIDMwNAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5kaXF1ZXIgbCdhcmJvcmVzY2VuY2UiLCAgICA1MDUKICAgIH0KCiAgICBQT1BVUCAiJlZ1ZSIgIHsKICAgICAgICBNRU5VSVRFTSAiQXJicmUgZXQgcukmcGVydG9pcmUiLCAgICAgICAgNDEzCiAgICAgICAgTUVOVUlURU0gIiZBcmJyZSBzZXVsZW1lbnQiLCAgICAgICAgICAgIDQxMQogICAgICAgIE1FTlVJVEVNICImUulwZXJ0b2lyZSBzZXVsZW1lbnQiLCAgICAgICA0MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlPpcGFyZXIiLCAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTm9tIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX05BTUUKICAgICAgICBNRU5VSVRFTSAiVG91cyAmbGVzIETpdGFpbHMiLCAgICAgICAgICAgSURfVklFV19BTExfQVRUUklCVVRFUywgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICImROl0YWlscy4uLiIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NFTEVDVEVEX0FUVFJJQlVURVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVHJpZXIgcGFyIE4mb20iLCAgICAgICAgICAgICAgSURfVklFV19TT1JUX05BTUUKICAgICAgICBNRU5VSVRFTSAiVHJpZXIgcGFyICZUeXBlIiwgICAgICAgICAgICAgSURfVklFV19TT1JUX1RZUEUKICAgICAgICBNRU5VSVRFTSAiVHJpZXIgcGFyIFRhJmlsbGUiLCAgICAgICAgICAgSURfVklFV19TT1JUX1NJWkUKICAgICAgICBNRU5VSVRFTSAiVHJpZXIgcGFyIERhdCZlIiwgICAgICAgICAgICAgSURfVklFV19TT1JUX0RBVEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVHJpZXIgcGFyICYuLi4iLCAgICAgICAgICAgICAgSURfVklFV19GSUxURVIKICAgIH0KCiAgICBQT1BVUCAiJk9wdGlvbnMiICB7CiAgICAgICAgTUVOVUlURU0gIiZDb25maXJtYXRpb24uLi4iLCAgICAgICAgICAgIDUwMQogICAgICAgIE1FTlVJVEVNICImUG9saWNlLi4uIiwgICAgICAgICAgICAgICAgICBJRF9TRUxFQ1RfRk9OVAogICAgICAgIE1FTlVJVEVNICJQZXJzb25uYWxpc2VyIGxhICZiYXJyZSBkJ091dGlscy4uLiIsIDUxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJCYXJyZSBkJyZPdXRpbHMiLCAgICAgICAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkJhcnJlIGRlICZMZWN0ZXVyIiwgICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkJhcnJlIGQnJsl0YXQiLCAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiUCZsZWluIMljcmFuXHRDdHJsK1NoaWZ0K1MiLCAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUulkdWlyZSBhIGwndXRpbGlzYXRpb24iLCAgICA1MDQKICAgICAgICBNRU5VSVRFTSAiJkVucmVnaXN0cmVyIGxhIGNvbmZpZ3VyYXRpb24gZW4gcXVpdHRhbnQiLDUxMQogICAgfQoKCiAgICBQT1BVUCAiJlPpY3VyaXTpIiAgewogICAgICAgIE1FTlVJVEVNICImQWNj6HMuLi4iLCAgICAgICAgICAgICAgICAgICA2MDUKICAgICAgICBNRU5VSVRFTSAiJlN1cnZlaWxsYW5jZS4uLiIsICAgICAgICAgICAgNjA2CiAgICAgICAgTUVOVUlURU0gIiZQcm9wcmnpdGFpcmUuLi4iLCAgICAgICAgICAgIDYwNwogICAgfQoKICAgIFBPUFVQICImRmVu6nRyZSIgIHsKICAgICAgICBNRU5VSVRFTSAiTm91dmVsbGUgJmZlbup0cmUiLCAgICAgICAgICAgSURfV0lORE9XX05FVwogICAgICAgIE1FTlVJVEVNICImRW4gY2FzY2FkZVx0Q3RybCtGNSIsICAgICAgICBJRF9XSU5ET1dfQ0FTQ0FERQogICAgICAgIE1FTlVJVEVNICJNb3Nh73F1ZSAmaG9yaXpvbnRhbGUiLCAgICAgICBJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIk1vc2HvcXVlICZ2ZXJ0aWNhbGVcdEN0cmwrRjQiLElEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJS6W9yZ2FuaXNhdGlvbiAmQXV0b21hdGlxdWUiLCBJRF9XSU5ET1dfQVVUT1NPUlQKI2VuZGlmCiAgICAgICAgTUVOVUlURU0gIlLpb3JnYW5pc2VyIGxlcyAmaWP0bmVzIiwgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIiZBY3R1YWxpc2VyXHRGNSIsICAgICAgICAgICAgIElEX1JFRlJFU0gKICAgIH0KCiAgICBQT1BVUCAiQWlkJmUiICB7CiAgICAgICAgTUVOVUlURU0gIiZTb21tYWlyZSBkZSBsJ2FpZGVcdEYxIiwgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiJlJlY2hlcmNoZXIgZGFucyBsJ2FpZGVcdEYxIiwgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICImVXRpbGlzZXIgbCdhaWRlXHRGMSIsICAgICAgICBJRF9IRUxQX1VTSU5HCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsAgJnByb3BvcyBkZSBXaW5lZmlsZSIsICAgIElEX0FCT1VUCiNpZmRlZiBfX1dJTkVfXwogICAgICAgIE1FTlVJVEVNICLAIHByb3BvcyBkZSAmV2luZSIsICAgICAgICBJRF9BQk9VVF9XSU5FCiNlbmRpZgogICAgfQp9CgoKSUREX0VYRUNVVEUgRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRXjpY3V0ZXIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJkNvbW1hbmRlIDoiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIENPTlRST0wgICAgICAgICAiU291cyBmb3JtZSBkJ2lj9G5lIiwgMjE0LCAiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1AsMywgNDUsIDcxLCAxMgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQWlkJmUiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpJRERfU0VMRUNUX0RFU1RJTkFUSU9OIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlPpbGVjdGlvbm5lciBsYSBkZXN0aW5hdGlvbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImRG9zc2llcqA6IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImUGFyY291cmlyLi4uIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX0RJQUxPR19WSUVXX1RZUEUgRElBTE9HIERJU0NBUkRBQkxFIDE1LCAxMywgMTYxLCA5NwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJQYXIgdHlwZSBkZSBmaWNoaWVyIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICImTmFtZToiLC0xLDcsOCwyMiwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19WSUVXX1BBVFRFUk4sMzEsNyw2MywxMixFU19BVVRPSFNDUk9MTAogICAgR1JPVVBCT1ggICAgICAgICJUeXBlIGRlIGZpY2hpZXIiLC0xLDcsMjMsODcsNTYKICAgIENPTlRST0wgICAgICAgICAiJlLpcGVydG9pcmVzIixJRENfVklFV19UWVBFX0RJUkVDVE9SSUVTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsMzIsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJlByb2dyYW1tZXMiLElEQ19WSUVXX1RZUEVfUFJPR1JBTVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw0Myw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICJEb2N1Jm1lbnRzIixJRENfVklFV19UWVBFX0RPQ1VNRU5UUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDU0LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZBdXRyZXMgZmljaGllcnMiLElEQ19WSUVXX1RZUEVfT1RIRVJTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNjUsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiTW9udHJlciBsZXMgZmljaGllcnMgY2FjaOlzLyZzeXN06G1lIixJRENfVklFV19UWVBFX0hJRERFTiwKICAgICAgICAgICAgICAgICAgICAiQm91dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDcsODEsMTA2LDkKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTA0LDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTA0LDI0LDUwLDE0CkVORAoKSUREX0RJQUxPR19QUk9QRVJUSUVTIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjQ4LCAyMTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUHJvcHJp6XTpcyBkZSAlcyIKRk9OVCA4LCAiTVMgU2FucyBTZXJpZiIKQkVHSU4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTkxLDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTkxLDI5LDUwLDE0CiAgICBMVEVYVCAgICAgICAgICAgIk5vbSBkdSAmZmljaGllcqA6IiwtMSw3LDcsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9GSUxFTkFNRSw3MSw3LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiQ2hlbWluIGNvbSZwbGV0oDoiLC0xLDcsMTgsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9QQVRILDcxLDE4LDEyMCw5LCBFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIk1vZGlmaWNhdGlvbqA6IiwtMSw3LDI5LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfTEFTVENIQU5HRSw3MSwyOSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlZlcnNpb26gOiIsLTEsNyw0MCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1ZFUlNJT04sNzEsNDAsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJDb3AmeXJpZ2h0OiIsLTEsNyw1MSw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0NPUFlSSUdIVCw3MSw1MSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlRhaWxsZaA6IiwtMSw3LDYyLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfU0laRSw3MSw2MiwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkF0dHJpYnV0cyIsLTEsNyw3OSwxNTgsNDYKICAgIENPTlRST0wgICAgICAgICAiTGVjdHUmcmUgc2V1bGUiLElEQ19DSEVDS19SRUFET05MWSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiQ2FjJmjpIixJRENfQ0hFQ0tfSElEREVOLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOTIsOTEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICImQXJjaGl2ZSIsSURDX0NIRUNLX0FSQ0hJVkUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNywxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICImU3lzdOhtZSIsSURDX0NIRUNLX1NZU1RFTSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDEwMSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZDb21wcmVzc+kiLElEQ19DSEVDS19DT01QUkVTU0VELCJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDExMSw2OCw5CiAgICBHUk9VUEJPWCAgICAgICAgIiZWZXJzaW9uIEluZm9ybWF0aW9uIiwtMSw3LDEyOSwyMzQsNzkKICAgIExJU1RCT1ggICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVFlQRVMsMTMsMTM5LDEwNyw2MyxMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIEVESVRURVhUICAgICAgICBJRENfTElTVF9QUk9QX1ZFUlNJT05fVkFMVUVTLDEyMywxMzksMTExLDYzLEVTX01VTFRJTElORSB8IEVTX1JFQURPTkxZIHwgV1NfVlNDUk9MTApFTkQKCgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfRk9OVF9TRUxfRExHX05BTUUgICAiQXBwbGlxdWVyIGxlcyBy6WdsYWdlcyBkZXMgZm9udGVzIgogICAgSURTX0ZPTlRfU0VMX0VSUk9SICAgICAgIkVycmV1ciBkYW5zIGxhIHPpbGVjdGlvbiBkZSBsYSBub3V2ZWxsZSBmb250ZS4iCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19XSU5FRklMRSAgICAgICAgICAgICJXaW5lZmlsZSIKICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICJFcnJldXIiCiAgICBJRFNfUk9PVF9GUyAgICAgICAgICAgICAicm9vdCBmcyIKICAgIElEU19VTklYRlMgICAgICAgICAgICAgICJ1bml4ZnMiCiAgICBJRFNfREVTS1RPUCAgICAgICAgICAgICAiQnVyZWF1IgogICAgSURTX1NIRUxMICAgICAgICAgICAgICAgIlNoZWxsIgogICAgSURTX1RJVExFRk1UICAgICAgICAgICAgIiVzIC0gJXMiCiAgICBJRFNfTk9fSU1QTCAgICAgICAgICAgICAiUGFzIGVuY29yZSBpbXBs6W1lbnTpIgogICAgSURTX1dJTkUgICAgICAgICAgICAgICAgIldJTkUiCiAgICBJRFNfV0lORV9GSUxFICAgICAgICAgICAiV2luZSBGaWxlIgp9CgpTVFJJTkdUQUJMRQp7CiAgICBJRFNfQ09MX05BTUUgICAgICAgICAgICAiTm9tIgogICAgSURTX0NPTF9TSVpFICAgICAgICAgICAgIlRhaWxsZSIKICAgIElEU19DT0xfQ0RBVEUgICAgICAgICAgICJDRGF0ZSIKICAgIElEU19DT0xfQURBVEUgICAgICAgICAgICJBRGF0ZSIKICAgIElEU19DT0xfTURBVEUgICAgICAgICAgICJNRGF0ZSIKICAgIElEU19DT0xfSURYICAgICAgICAgICAgICJJbmRleC9Jbm9kZSIKICAgIElEU19DT0xfTElOS1MgICAgICAgICAgICJMaWVucyIKICAgIElEU19DT0xfQVRUUiAgICAgICAgICAgICJBdHRyaWJ1dHMiCiAgICBJRFNfQ09MX1NFQyAgICAgICAgICAgICAiU+ljdXJpdOkiCgogICAgSURTX0ZSRUVfU1BBQ0VfRk1UICAgICAgIiVzIHN1ciAlcyBsaWJyZSIKfQoKU1RSSU5HVEFCTEUKewpJRFNfTElDRU5TRV9DQVBUSU9OLCAgICAgICAgICAgICJMSUNFTkNFIgpJRFNfTElDRU5TRSwKIkNldHRlIGJpYmxpb3Ro6HF1ZSBlc3QgbGlicmUsIHZvdXMgcG91dmV6IGxhIHJlZGlzdHJpYnVlciBldC9vdSBcCmxhIG1vZGlmaWVyIHNlbG9uIGxlcyB0ZXJtZXMgZGUgbGEgTGljZW5jZSBQdWJsaXF1ZSBH6W7pcmFsZSBHTlUgXApMaW1pdOllIHB1Ymxp6WUgcGFyIGxhIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAodmVyc2lvbiAyLjEgb3UgXApiaWVuIHRvdXRlIGF1dHJlIHZlcnNpb24gdWx06XJpZXVyZSBjaG9pc2llIHBhciB2b3VzKS5cblwKQ2V0dGUgYmlibGlvdGjocXVlIGVzdCBkaXN0cmlidellIGNhciBwb3RlbnRpZWxsZW1lbnQgdXRpbGUsIFwKbWFpcyBTQU5TIEFVQ1VORSBHQVJBTlRJRSwgbmkgZXhwbGljaXRlIG5pIGltcGxpY2l0ZSwgeSBjb21wcmlzIFwKbGVzIGdhcmFudGllcyBkZSBjb21tZXJjaWFsaXNhdGlvbiBvdSBkJ2FkYXB0YXRpb24gZGFucyB1biBidXQgXApzcOljaWZpcXVlLiBSZXBvcnRlei12b3VzIOAgbGEgTGljZW5jZSBQdWJsaXF1ZSBH6W7pcmFsZSBHTlUgXApMaW1pdOllIHBvdXIgcGx1cyBkZSBk6XRhaWxzLlxuXApWb3VzIGRldmV6IGF2b2lyIHJl53UgdW5lIGNvcGllIGRlIGxhIExpY2VuY2UgUHVibGlxdWUgR+lu6XJhbGUgXApHTlUgTGltaXTpZSBlbiBt6m1lIHRlbXBzIHF1ZSBjZXR0ZSBiaWJsaW90aOhxdWWgOyBzaSBjZSBuJ2VzdCBwYXMgXApsZSBjYXMsIOljcml2ZXog4CBsYSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBcCkZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTExLTEzMDEsIMl0YXRzLVVuaXMuIgoKSURTX1dBUlJBTlRZX0NBUFRJT04sICJBVUNVTkUgR0FSQU5USUUiCklEU19XQVJSQU5UWSwKIkNldHRlIGJpYmxpb3Ro6HF1ZSBlc3QgZGlzdHJpYnXpZSBjYXIgcG90ZW50aWVsbGVtZW50IHV0aWxlLCBcCm1haXMgU0FOUyBBVUNVTkUgR0FSQU5USUUsIG5pIGV4cGxpY2l0ZSBuaSBpbXBsaWNpdGUsIHkgY29tcHJpcyBcCmxlcyBnYXJhbnRpZXMgZGUgY29tbWVyY2lhbGlzYXRpb24gb3UgZCdhZGFwdGF0aW9uIGRhbnMgdW4gYnV0IFwKc3DpY2lmaXF1ZS4gUmVwb3J0ZXotdm91cyDgIGxhIExpY2VuY2UgUHVibGlxdWUgR+lu6XJhbGUgR05VIFwKTGltaXTpZSBwb3VyIHBsdXMgZGUgZOl0YWlscy4iCn0K