LyoKICogUmVnZWRpdCAoUnVzc2lhbiByZXNvdXJjZXMpCiAqCiAqIENvcHlyaWdodCAyMDAzIElnb3IgU3RlcGluCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfUlVTU0lBTiwgU1VCTEFOR19ERUZBVUxUCgovKgogKiBNZW51CiAqLwoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIibU4OnrIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiwib79e7kIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIibR7/Dg4urgIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJs4g7/Du4/Dg7OzlIiwgICAgICAgICAgICAgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICIm0OXl8fLwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJsjs7+7w8ujw7uLg8vwg9ODp6yDw5eXx8vDgLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIibd6vHv7vDy6PDu4uDy/CD04OnrIPDl5fHy8OAuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJs/u5Orr/vfo8vwg8eXy5eLu6SDw5eXx8vAuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJs7y6uv+9+jy/CDx5fLl4u7pIPDl5fHy8C4uLiIsICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJs/l9+Dy4PxcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsIm+/Xu5CIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImz/Dg4urgIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJsjn7OXt6PL8IiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICLR7ufkJuDy/CIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiyusm/vciLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIibR8vDu6u7i7uUg5+3g9+Xt6OUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImwejt4PDt7uUg5+3g9+Xt6OUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQg5+3g9+Xt6OUiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibT5ODr6PL8XHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImz+Xw5ejs5e3u4uDy/Fx0RjIiLCAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAi0Sbq7u/o8O7i4PL8IOjs/yDq6/734CIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibN4Ony6Fx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICLN4Ony6CAm5ODr5eVcdEYzIiwgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiJsLo5CIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gItHy8O7q4CAm8e7x8u7/7ej/IiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibQ4Ofk5evo8vwiLCAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibO4e3u4ujy/Fx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIibI5+Hw4O3t7uUiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImxO7h4OLo8vwg4iDo5+Hw4O3t7uUiLCAgICAgICAgICBJRF9GQVZPVVJJVEVTX0FERFRPRkFWT1VSSVRFUwogICAgICAgICwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIibT5ODr6PL8IOjnIOjn4fDg7e3u4+4iLCAgICAgICAgICAgSURfRkFWT1VSSVRFU19SRU1PVkVGQVZPVVJJVEUKICAgICAgICAsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiJtHv8ODi6uAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICIm0e7k5fDm4O3o5SIsICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImziDw5eTg6vLu8OUg8OXl8fLw4CIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9BQk9VVEJPWCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjMwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiziDv8O7j8ODs7OUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIElDT04gICAgICAgICAgICBJRElfUkVHRURJVCxJRElfUkVHRURJVCwxNCw5LDE2LDE2CiAgICBMVEVYVCAgICAgICAgICAgItDl5ODq8u7wIPDl5fHy8OAgUmVhY3RPUy4gwuXw8ej/IDEuMCIsSURDX1NUQVRJQyw0OSwxMCwxMTksOCwKICAgICAgICAgICAgICAgICAgICBTU19OT1BSRUZJWAogICAgTFRFWFQgICAgICAgICAgICJDb3B5cmlnaHQgKEMpIDIwMDIgyu7s4O3k4CBSZWFjdE9TIixJRENfU1RBVElDLDQ5LDIwLDExOSw4CiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE5NSw2LDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICLI7P8iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAi0ujvIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIsTg7e375SIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgItDl5ODq8u7wIPDl5fHy8OAiCiAgICBJRENfUkVHRURJVCAgICAgICAgICAgICAiUkVHRURJVCIKICAgIElEQ19SRUdFRElUX0ZSQU1FICAgICAgICJSRUdFRElUX0ZSQU1FIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAi0e7k5fDm6PIg6u7s4O3k+yDk6/8g8ODh7vL7IPEg8OXj6PHy8O7sIOIg9uXr7uwiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAi0e7k5fDm6PIg6u7s4O3k+yDk6/8g8OXk4Ory6PDu4uDt6P8g5+3g9+Xt6Okg6OvoIOrr/vfl6SIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICLR7uTl8Obo8iDq7uzg7eT7IOTr/yDt4PHy8O7p6ugg7urt4CDw5eXx8vDgIgogICAgSURfRkFWT1VSSVRFU19NRU5VICAgICAgItHu5OXw5ujyIOru7ODt5Psg5Ov/IOTu8fLz7+Ag6iD34PHy7iDo8e/u6/zn8+Xs++wg6uv+9+DsIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgItHu5OXw5ujyIOru7ODt5Psg5Ov/IO7y7uHw4Obl7ej/IPHv8ODi6ugg6CDo7fTu8Ozg9ujoIO4g8OXk4Ory7vDlIPDl5fHy8OAiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAi0e7k5fDm6PIg6u7s4O3k+yDk6/8g8e7n5ODt6P8g7e7i+/Ug6uv+9+XpIOjr6CDn7eD35e3o6SIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk1vZGlmaWVzIHRoZSB2YWx1ZSdzIGRhdGEiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAixO7h4OLr/+XyIO3u4vvpIOrr/vciCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAixO7h4OLr/+XyIO3u4u7lIPHy8O7q7uLu5SDn7eD35e3o5SIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICLE7uHg4uv/5fIg7e7i7uUg4ejt4PDt7uUg5+3g9+Xt6OUiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAixO7h4OLr/+XyIO3u4u7lIERXT1JELeft4Pfl7ejlIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICLI7O/u8PLo8PPl8iDy5erx8u7i7ukg9ODp6yDiIPDl5fHy8CIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIt3q8e/u8PLo8PPl8iDi5fH8IPDl5fHy8CDo6+gg5ePuIPfg8fL8IOIg8uXq8fLu4u7pIPTg6esiCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiz+7k6uv+9+Dl8vH/IOog8OXl8fLw8yDz5ODruO3t7uPuIOru7O/8/vLl8OAiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAizvLq6/734OXy8f8g7vIg8OXl8fLw4CDz5ODruO3t7uPuIOru7O/8/vLl8OAiCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiz+X34PLg5fIg4uXx/CDw5eXx8vAg6OvoIO7j7iD34PHy/CIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk9wZW5zIHJlZ2lzdHJ5IGVkaXRvciBoZWxwIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIs7y7uHw4Obg5fIg6O307vDs4Pbo/iDuIO/w7uPw4Ozs5Swg7e7s5fAg4uXw8ejoIOgg4OLy7vDx8uLuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiwvv17uQg6Ocg8OXk4Ory7vDgIPDl5fHy8OAiCiAgICBJRF9GQVZPVVJJVEVTX0FERFRPRkFWT1VSSVRFUyAixO7h4OLo8vwg6uv+9yDiIOjn4fDg7e3u5SIKICAgIElEX0ZBVk9VUklURVNfUkVNT1ZFRkFWT1VSSVRFICLT5ODr6PL8IOrr/vcg6Ocg6Ofh8ODt7e7j7iIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICLP7urg5+Dy/CDo6+gg8erw+/L8IPHy8O7q8yDx7vHy7v/t6P8iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiyOfs5e3o8vwg7+7n6Pbo/iDw4Ofk5evo8uXr/yDs5ebk8yDk4vPs/yDv4O3l6//s6CIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICLO4e3u4uv/5fIg7urt7iIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICLT5ODr/+XyIOL75OXr5e3o5SIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICLP5fDl6Ozl7e7i++Lg5fIg4vvk5evl7ejlIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIsru7+jw8+XyIOjs/yDi++Tl6+Xt7e7j7iDq6/734CDiIOHz9OXwIO7h7OXt4CIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICLI+eXyIPLl6vHy7uLz/iDx8vDu6vMg4iDq6/735Swg5+3g9+Xt6Ogg6OvoIOTg7e379SIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICLI+eXyIPHr5eTz/vnl5SDx7uLv4OTl7ejlIPLl6vHy4Cwg5+Dk4O3t7uPuIOIg7/Dl5Pvk8/nl7CDv7ujx6uUiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCi8qCiAqIERpYWxvZwogKi8KCklERF9ESUFMT0cxIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNjgsIDk4ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KRU5ECgpJRERfRElBTE9HMiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDE4NywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAixOjg6+7jIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEzMCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIs7y7OXt4CIsSURDQU5DRUwsMTMwLDI0LDUwLDE0CkVORAoKCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiT3BlbnMgUmVnaXN0cnkgRWRpdG9yIEhlbHAuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiRGlzcGxheXMgcHJvZ3JhbSBpbmZvcm1hdGlvbiwgdmVyc2lvbiBudW1iZXIsIGFuZCBjb3B5cmlnaHQuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K