LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwNSBNaWtlIE1jQ29ybWFjawogKiBDb3B5cmlnaHQgMjAwNyBZdW5Tb25nIEh3YW5nKGh5czU0NUBkcmVhbXdpei5jb20pCgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBLb3JlYW4gcmVzb3VyY2VzICovCgpMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ORVVUUkFMCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAit7nB9r26xq64rigmUikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICK3ucH2vbrGrriuIMbEwM8gsKHBrr/AseIoJkkpLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIre5wfa9usauuK4gxsTAzyCzu7q4s7ux4igmRSkuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiv/iw3SC3ucH2vbrGrriuIL+ssOEoJkMpLi4uIiwgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIr/4sN0gt7nB9r26xq64riC/rLDhILL3seIoJkQpLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsDOvOIoJlApXHRDdHJsK1AiLCAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrOhs7ux4igmWCkiLCAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICLG7cH9KCZFKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIrz2waQoJk0pIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICK79bfOILi4temx4igmTikiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIibFsCgmSykiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiua7A2r+tILCqKCZTKSIsICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIsDMwfiwqigmQikiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJEV09SRCCwqigmRCkiLCAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICK02cHfILmuwNq/rSCwqigmTSkiLCAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK76MGmKCZEKVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiwMy4pyC52bLZseIoJlIpXHRGMiIsICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsWwIMDMuKcgurm75ygmQykiLCAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsOjseIoJkYpXHRDdHJsK0YiLCAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICK02cC9IMOjseIoJngpXHRGMyIsICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICK6uLHiKCZWKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIrvzxcIgx6Wx4sHZKCZCKSIsICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKzqrSpseIoJkwpIiwgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK79bfOILDtxKcoJlIpXHRGNSIsICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICLB8bDcIMOjseIoJkYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiwfGw3CDDo7HiIMPfsKEoJkEpIiwgICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICLB8bDcIMOjseIgwaawxSgmUikiLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICK1tb/yuLsoJkgpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAitbW/8ri7IMfXuPEoJkgpXHRGMSIsICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK3ucH2vbrGrriuIMbtwf2x4iDBpLq4KCZBKSIsICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAivPbBpCgmTSkiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAiwMzB+LCqILDtxKGx4iIsICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAiu+jBpigmRClcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiwMy4pyC52bLZseIoJlIpIiwgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICK79bfOILi4temx4igmTikiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIibFsCgmSykiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIrmuwNq/rSCwqigmUykiLCAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICLAzMH4sKooJkIpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiRFdPUkQgsKooJkQpIiwgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAitNnB3yC5rsDav60gsKooJk0pIiwgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiu+jBpigmRClcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIsDMuKcgudmy2bHiKCZSKVx0RjIiLCAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLFsCDAzLinILq5u+coJkMpIiwgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLDo7HiKCZGKVx0Q3RybCtGIiwgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLB8bDcIMOjseIgw9+woSIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIsiuwM4iLElET0ssMTQwLDM4LDMwLDEzLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE3NSwzOCwzMCwxMywgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIsHxsNwgw6Ox4iDBprDFIgpGT05UIDksICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsDMuKc6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw3MSwzMCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsNzEsMzAsMTQsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK5rsDav60gxu3B/SIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICKwqiDAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKwqiC1pcDMxc06IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIsiuwM4iLElET0ssMTQwLDU4LDMwLDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE3NSw1OCwzMCwxNCxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgxu3B/SIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICKwqiDAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKwqiC1pcDMxc06IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAitNzApyIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIjE2IMH4vPYiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiMTAgwfi89iIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw3NywzMCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsNzcsMzAsMTQsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLAzMH4ILCqIMbtwf0iCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAisKogwMy4pzoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAisKogtaXAzMXNOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw4MSwzMCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsODAsMzAsMTUsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9NVUxUSV9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK02cHfILmuwNq/rSDG7cH9IgpGT05UIDksICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIrCqIMDMuKc6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIrCqILWlwMzFzToiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDExMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0hTQ1JPTEwgfCBXU19WU0NST0xMIHwgRVNfTVVMVElMSU5FIHwgRVNfV0FOVFJFVFVSTgogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCwxNTgsMzAsMTMsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiw+u80iIsSURDQU5DRUwsMTc1LDE1OCwzMCwxMyxXU19HUk9VUApFTkQKCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLDo7HiIgpGT05UIDksICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsOjseI6IixJRENfU1RBVElDLDUsNywxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTI1LDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIExURVhUICAgICAgICAgICAiw6Ox4iC/ybzHOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIsWwIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIrCqIMDMuKciLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAisKogs7u/6yIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiv8/A/MfRILTcvu64uCDDo7HiIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIERFRlBVU0hCVVRUT04gICAiw6Ox4iIsSURPSywxNzUsMywzMCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICK03bHiIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKV1NfQk9SREVSCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAit7nB9r26xq64riC60revv8Cx4iIsIElEQ19FWFBPUlRfQkFTRSwgNiwgNiwgMjY2LCA0MiwgV1NfR1JPVVAKICAgIEFVVE9SQURJT0JVVFRPTiAiuPC1zigmQSkiLCBJRENfRVhQT1JUX0FMTCwgMTIsIDE1LCAyNDQsIDEyCiAgICBBVVRPUkFESU9CVVRUT04gIryxxcO1yCC6zrrQuLgoJkUpOiIsIElEQ19FWFBPUlRfU0VMRUNURUQsIDEyLCAzMCwgNzAsIDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VYUE9SVF9QQVRILCA4MiwgMzAsIDE4NCwgMTIKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIsDMuKciCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiwb63+SIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICK1pcDMxc0iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICK3ucH2vbrGrriuIMbtwf2x4iIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIrjwtecgt7nB9r26xq64riDA2773ILjtt8kgxvfH1CIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICLFsMDHILCqIMbtwf0guO23ySDG98fUIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIre5wfa9usauuK4gw6Igu+e/68DaIMGkwMfHz7TCILjtt8kgxvfH1CIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICLA2sHWILvnv+vHz7TCIMWwIMGisdnHz7TCILjtt8kgxvfH1CIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICK3ucH2vbrGrriuIMbtwf2x4iDBpLq4v80gtbW/8ri7ILq4v6nB1rTCILjtt8kgxvfH1CIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICK79SDFsLOqILCqILi4teW0wiC47bfJIMb3x9QiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICKwqiC1pcDMxbggsO3EobHiIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIrv1IMWwILT1x8+x4iIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICK79SC5rsDav60gsKogtPXHz7HiIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIrv1ILnZwMyzyriuILCqILT1x8+x4iIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICK79SC09brtIL/2teUgsKogtPXHz7HiIgogICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUgIrv1ILTZwd8gua7A2r+tILCqILT1x8+x4iIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAixdi9usauIMbEwM/AuyC3ucH2vbrGrriuv6Egs6K/9rPWseIiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICK3ucH2vbrGrriuwMcgwPy6zrOqIMDPus660MC7IMXYvbrGriDGxMDPt84gs7u6uLO7seIiCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiv/iw3SDExMe7xc3AxyC3ucH2vbrGrriuIL+ssOEiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiv/iw3SDExMe7xc3AxyC3ucH2vbrGrriuIL+ssOEgx9jBpiIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICK3ucH2vbrGrriuIMD8us6zqiC6zrrQIMDOvOLHz7HiIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAit7nB9r26xq64riDG7cH9seIgtbW/8ri7IL+tseIiICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAix66x17iyIMGkurgsufbBrywgwPrA27HHILq4v6nB1rHiIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAit7nB9r26xq64riDG7cH9seIgs6qwobHiIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICLB8bDcIMOjseIguPG3z7+hIMWwILT1x8+x4iIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiwfGw3CDDo7HiILjxt8+/oSDFsCDB9r/sseIiCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiu/PFwrnZILq4v6nB1rDFs6ogvPux4rHiIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIrXOIMaywLsgs6q0qbTCIMCnxKEgudmy2bHiIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIsOiILTZvcMgwNCx4iIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICLAzCC8vbzHIMH2v+yx4iIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICLAzCC8vbzHIMDMuKe52bLZseIiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAivLHFw7XIIMWwwMcgwMy4p8C7IMWsuLO6uLXlv6Egurm75yIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICLFsCywqsDMs6ogtaXAzMW4v6G8rSDF2L26xq4gua7A2r+tIMOjseIiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiwMzA/CDDo7Hiv6G8rSDB9sGktcggua7A2r+tt84gtNm9wyDDo7HiIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiv6G3ryIKICAgIElEU19CQURfS0VZCQkgICAgIsWwICclcye4piDB+sDHx9IgvPYgvvi9wLTPtNkiCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAisKogJyVzJ7imIMH6wMfH0iC89iC++L3AtM+02SIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICLAzCDFuMDUICglbGQpwMcgxbC4piCw7cSlILz2IL74vcC0z7TZIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIrCqwMwgs8q5qyDFrrTPtNkgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAisKogwfa/7LHiIMiuwM4iCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAitOe9xcC6IMDMILCqICclcyfAuyDBpLi7t84gwfa/7LDavcC0z7HuPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICK79SDFsCAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiu/UgsKogIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIiclcyfAuyDDo8C7ILz2IL74vcC0z7TZIgpFTkQKCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICBJRFNfRklMRURJQUxPR19JTVBPUlRfVElUTEUgICAit7nAzMH2vbrGriDGxMDPILrSt6+/wLHiIgogICBJRFNfRklMRURJQUxPR19FWFBPUlRfVElUTEUgICAit7nB9r26xq64riDGxMDPILO7urizu7HiIgogICBJRFNfRklMRURJQUxPR19GSUxURVIgICAgICAgICAit7nB9r26xq64riDGxMDPXDAqLnJlZ1wwV2luOXgvTlQ0ILe5wfa9usauuK4gxsTAzyAoUkVHRURJVDQpXDAqLnJlZ1wwuPC15yDGxMDPICgqLiopXDAqLipcMFwwIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgIElEU19SRUdJU1RSWV9ST09UX05BTUUgICAgICAgICAgICKzuyDExMe7xc0iCiAgIElEU19SRUdJU1RSWV9ERUZBVUxUX1ZBTFVFICAgICAgICIoseK6uykiCiAgIElEU19SRUdJU1RSWV9WQUxVRV9OT1RfU0VUICAgICAgICIosKrAzCDBpMfYwfbB9iC+ysC9KSIKICAgSURTX1JFR0lTVFJZX1ZBTFVFX0NBTlRfRElTUExBWSAgIiiwqsC7ILq4v6kgwdm89iC++MC9KSIKICAgSURTX1JFR0lTVFJZX1VOS05PV05fVFlQRSAgICAgICAgIii+yyC89iC++LTCICVkKSIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCi8qCiAqU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKICpCRUdJTgogKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAit7nB9r26xq64riDG7cH9seIgtbW/8ri7IL+tseIuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAix66x17iyIMGkurgsufbBrywgwPrA27HHILq4v6nB1rHiLiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==