LyoKICogV2luZUZpbGUgKFJ1c3NpYW4gcmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgMjAwMyBJZ29yIFN0ZXBpbgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1JVU1NJQU4sIFNVQkxBTkdfREVGQVVMVAoKLyogTWVudSAqLwoKSURNX1dJTkVGSUxFIE1FTlUgRklYRUQgSU1QVVJFCnsKCVBPUFVQICIm1ODp6yIgIHsKCQlNRU5VSVRFTSAiJs7y6vD78vxcdEVudGVyIiAsCQkJMTAxCgkJTUVOVUlURU0gIibP5fDl7OXx8ujy/C4uLlx0RjciICwgCQkJMTA2CgkJTUVOVUlURU0gIibK7u/o8O7i4PL8Li4uXHRGOCIgLAkJCTEwNwoJCU1FTlVJVEVNICImwiDh8/Tl8CDu4ezl7eAuLi5cdEY5IiAsCQkxMTgKCQlNRU5VSVRFTSAiJtPk4Ovo8vxcdERlbCIgLAkJCTEwOAoJCU1FTlVJVEVNICLP5fDl6Ozl7e7i4PL8Li4uIiAsCQkJMTA5CgkJTUVOVUlURU0gItHi7unx8uLgLi4uXHRBbHQrRW50ZXIiICwgSURfRURJVF9QUk9QRVJUSUVTCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIsDw9eji6PDu4uDy/C4uLiIgLAkJMTE5CgkJTUVOVUlURU0gItDg8e/g6u7i4PL8Li4uIiAsCQkxMjAKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJsfg7/Px8ujy/C4uLiIgLAkJCUlEX0VYRUNVVEUKCQlNRU5VSVRFTSAiJs/l9+Dy4PL8Li4uIiAsIAkJCTEwMgoJCU1FTlVJVEVNICLA8fHu9ujo8O7i4PL8Li4uIiAsCQkxMDMKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAi0e7n5ODy/CDk6PDl6vLu8Oj+Li4uIiAsCQkJMTExCgkJTUVOVUlURU0gIs/u6PHqLi4uIiAsCQkJMTA0CgkJTUVOVUlURU0gIibC++Tl6+jy/CD04Onr+y4uLiIgLAkJCTExNgoJCU1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIsL79e7kXHRBbHQrWCIgLCAJCQlJRF9GSUxFX0VYSVQKI2Vsc2UKCQlNRU5VSVRFTSAiwvv17uQiLCAJCQkJSURfRklMRV9FWElUCiNlbmRpZgoJfQoKCVBPUFVQICImxOjx6iIgIHsKCQlNRU5VSVRFTSAiJsru7+jw7uLg8vwg5Ojx6i4uLiIgLAkJCTIwMQoJCU1FTlVJVEVNICImzOXy6uAg8u7s4C4uLiIgLAkJCTIwMgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICIm1O7w7ODy6PDu4uDy/C4uLiIgLAkJCTIwMwojaWZkZWYgX1dJTjk1CgkJTUVOVUlURU0gIibR7ufk4PL8IPHo8fLl7O376SDk6PHqLi4uIiwgLTEJLypAQCAqLwojZW5kaWYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiz+7k6uv+Jvfo8vwg8eXy5eLu6SDk6PHqIiAsCQkJMjUyCgkJTUVOVUlURU0gIs7y6ibr/vfo8vwg8eXy5eLu6SDk6PHqIiAsCQkyNTMKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAi0eTl6+Dy/CDuJuH56Owg6uDqLi4uIiAsCQkJMjU0CgkJTUVOVUlURU0gIibH4Orw+/L8IO7h+ejpIOTu8fLz7y4uLiIgLAkJCTI1NQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImwvvh8ODy/CDk6PHqLi4uIiAsCQkJMjUxCgl9CgoJUE9QVVAgIibP4O/q6CIgIHsKCQlNRU5VSVRFTSAi0Sbr5eTz/vno6SDz8O7i5e38XHQrIiAsCQkJMzAxCgkJTUVOVUlURU0gIibQ4Ofi5fDt8/L8IOTl8OXi7lx0KiIgLAkJMzAyCgkJTUVOVUlURU0gItDg5+Ll8O3z8vwg4ibx5Vx0U3RyZysqIiAsCQkzMDMKCQlNRU5VSVRFTSAiJtHi5fDt8/L8IOTl8OXi7lx0LSIgLAkJCTMwNAoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImzvLs5fLo8vwg4uXy4ugiICwJCQkJNTA1Cgl9CgoJUE9QVVAgIibC6OQiICB7CgkJTUVOVUlURU0gIsTl8OXi7iAm6CDv4O/q4CIgLAkJCTQxMwoJCU1FTlVJVEVNICLS7uv86u4gJuTl8OXi7iIgLAkJCTQxMQoJCU1FTlVJVEVNICLS7uv86u4gJu/g7+rgIiAsCQkJNDEyCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gItDg5ybh6PL8IiAsCQkJNDE0CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIsgm7P8iICwJCQlJRF9WSUVXX05BTUUKCQlNRU5VSVRFTSAiwibx5SDv7uTw7uHt7vHy6CDuIPTg6evlIiAsCQkJCUlEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKCQlNRU5VSVRFTSAiJsL74e7w7vft7iDuIPTg6evlLi4uIiAsCQkJSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIibR7vDy6PDu4uDy/CDv7iDo7OXt6CIgLAkJNDA0CgkJTUVOVUlURU0gItHu8PLo8O7i4PL8IO/uICby6O/zIiAsCQk0MDUKCQlNRU5VSVRFTSAi0e7w8ujw7uLg8vwg7+4gJvDg5+zl8PMiICwgCQk0MDYKCQlNRU5VSVRFTSAi0e7w8ujw7uLg8vwg7+4g5Cbg8uUiICwgCQk0MDcKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAi0e7w8ujw7uLg8vwg7+4gJi4uLiIgLAkJCTQwOQoJfQoKCVBPUFVQICImzeDx8vDu6eroIiAgewoJCU1FTlVJVEVNICLP7uQm8uLl8Obk5e3o/y4uLiIgLAkJLTEKCQlNRU5VSVRFTSAiJtjw6PTyLi4uIiAsCQkJLTEKCQlNRU5VSVRFTSAiJs3g8fLw7ujy/CDv4O3l6/wg6O3x8vDz7OXt8u7iLi4uIiAsIC0xCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIibP4O3l6/wg6O3x8vDz7OXt8u7iIiAsCQlJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECgkJTUVOVUlURU0gIs/g7eXr/CAm5Ojx6u7iIiAsCQlJRF9WSUVXX0RSSVZFX0JBUiwgQ0hFQ0tFRAoJCU1FTlVJVEVNICIm0fLw7urgIPHu8fLu/+3o/yIgLAlJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIs8m7uvt++kg/erw4O1cdEN0cmwrU2hpZnQrUyIgLCAJSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImx+3g9+7qIOIg8e/o8e7qIO/w7uPw4OzsIiAsCQktMQoJCU1FTlVJVEVNICLR7ib18ODt//L8IO3g8fLw7unq6CDv8Ogg4vv17uTlIiAsCQkJNTExCgl9CgoKCVBPUFVQICImweXn7u/g8e3u8fL8IiAgewoJCU1FTlVJVEVNICImxO7x8vPvLi4uIiAsCQk2MDUKCQlNRU5VSVRFTSAiJs/w7vLu6u7r+y4uLiIgLAkJCTYwNgoJCU1FTlVJVEVNICImwuvg5OXr5fYuLi4iICwJCTYwNwoJfQoKCVBPUFVQICImzurt7iIgIHsKCQlNRU5VSVRFTSAize7i7uUgJu7q7e4iICwJCQlJRF9XSU5ET1dfTkVXCgkJTUVOVUlURU0gIs7q7eAgJurg8erg5O7sXHRDdHJsK0Y1IiAsCQlJRF9XSU5ET1dfQ0FTQ0FERQoJCU1FTlVJVEVNICLO6u3gIPEm4uXw9fMg4u3o5yIgLAkJSURfV0lORE9XX1RJTEVfSE9SWgoJCU1FTlVJVEVNICLO6u3gIPEm6+Xi4CDt4O/w4OLuXHRDdHJsK0Y0IiAsCQlJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKCQlNRU5VSVRFTSAi0ODx7+7r7ubo8vwgJuDi8u7s4PLo9+Xx6ugiICwJCUlEX1dJTkRPV19BVVRPU09SVAojZW5kaWYKCQlNRU5VSVRFTSAiJtDg8e/u6+7m6PL8IiAsCQlJRF9XSU5ET1dfQVJSQU5HRQoJCU1FTlVJVEVNICLOJuHt7uLo8vxcdEY1IiAsCQlJRF9SRUZSRVNICgl9CgoJUE9QVVAgIibR7/Dg4urgIiAgewoJCU1FTlVJVEVNICIm0e7k5fDm4O3o5Vx0RjEiICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIibP7ujx6i4uLlx0RjEiICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIibI8e/u6/zn7uLg7ejlIPHv8ODi6uhcdEYxIiAsCQkJSURfSEVMUF9VU0lORwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCVBPUFVQICIm0eLl5OXt6P8uLi4iICB7CgkJICBNRU5VSVRFTSAiJs4gV2luZS4uLiIgLAkJCUlEX0FCT1VUX1dJTkUJICAKLyoKICoJCSAgTUVOVUlURU0gIibL6Pbl7efo/y4uLiIJCUlEX0xJQ0VOU0UKICoJCSAgTUVOVUlURU0gIibBxccgw8DQwM3SyMkiCQlJRF9OT19XQVJSQU5UWQogKi8KCQl9Cgl9Cn0KCgpJRERfRVhFQ1VURSBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLC++/u6+3o8vwiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewoJQ09OVFJPTCAJCSIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKCUNPTlRST0wgCQkiJsru7ODt5OA6IiAsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKCUVESVRURVhUCQkyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAoJQ09OVFJPTCAJCSLK4OogJvHo7OLu6yIgLCAyMTQsICJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1h8V1NfVEFCU1RPUCwzLCA0NSwgNzEsIDEyCglERUZQVVNIQlVUVE9OCSJPSyIgLCAxLCAxNTgsIDYsIDQ3LCAxNAoJUFVTSEJVVFRPTgkJIs7y7OXt4CIgLCAyLCAxNTgsIDIzLCA0NywgMTQKCVBVU0hCVVRUT04JCSIm0e/w4OLq4CIgLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9Cg==