{"tokenId":"14","name":"DOM3 14A","description":"DOM3 14A runs at 135 BPM and has not changed.","attributes":[{"trait_type":"BPM","value":135},{"trait_type":"Side","value":"A"},{"value":"Alternate"}],"image":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iYmFja2dyb3VuZDpjb2xvcihkaXNwbGF5LXAzIDEuMDAwIDEuMDAwIDAuODAwKSI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJnIiB4MT0iMCIgeDI9IjAiIHkxPSIwIiB5Mj0iMSI+PHN0b3Agc3RvcC1jb2xvcj0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSJjb2xvcihkaXNwbGF5LXAzIDEuMDAwIDEuMDAwIDAuODAwKSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgZmlsbD0idXJsKCNnKSIgeD0iMC4wMDAiIHk9IjIiIHdpZHRoPSIxMzguMTkzIiBoZWlnaHQ9IjUiLz48cmVjdCB4PSIwIiB5PSIyIiB3aWR0aD0iMCIgaGVpZ2h0PSIxIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IGZpbGw9InVybCgjZykiIHg9IjEzOC4xOTMiIHk9IjIiIHdpZHRoPSIzNjEuODA2IiBoZWlnaHQ9IjExMyIvPjxyZWN0IHg9IjQ2OSIgeT0iMiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjIwIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjEzOCIgeT0iMjQiIHdpZHRoPSIzNTkiIGhlaWdodD0iMiIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAxLjAwMCAwLjI3NSAwLjAwMCkiLz48cmVjdCB4PSIxMzgiIHk9IjI4IiB3aWR0aD0iMzU5IiBoZWlnaHQ9IjIiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMjEwIiB5PSIzMiIgd2lkdGg9IjI4NyIgaGVpZ2h0PSIyMCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxMzgiIHk9IjU0IiB3aWR0aD0iMzU5IiBoZWlnaHQ9IjEiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMzE5IiB5PSI1NyIgd2lkdGg9IjE3OCIgaGVpZ2h0PSI1MCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxMzgiIHk9IjEwOSIgd2lkdGg9IjM1OSIgaGVpZ2h0PSIyIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMjk0IDAuMDAwIDAuNTEwKSIvPjxyZWN0IGZpbGw9InVybCgjZykiIHg9IjAuMDAwIiB5PSIxMTUiIHdpZHRoPSIxMzguMTkzIiBoZWlnaHQ9IjIyNSIvPjxyZWN0IHg9IjEiIHk9IjExNSIgd2lkdGg9IjY0IiBoZWlnaHQ9IjUwIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjEiIHk9IjE2NyIgd2lkdGg9IjEzNCIgaGVpZ2h0PSIyMCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIyIiB5PSIxODkiIHdpZHRoPSIxMzEiIGhlaWdodD0iMiIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxIiB5PSIxOTMiIHdpZHRoPSI2NCIgaGVpZ2h0PSIxIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMjk0IDAuMDAwIDAuNTEwKSIvPjxyZWN0IHg9IjAiIHk9IjE5NiIgd2lkdGg9IjEzNSIgaGVpZ2h0PSIyMCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjI5NCAwLjAwMCAwLjUxMCkiLz48cmVjdCB4PSIxIiB5PSIyMTgiIHdpZHRoPSIxMDIiIGhlaWdodD0iMiIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxIiB5PSIyMjIiIHdpZHRoPSIxMzEiIGhlaWdodD0iMSIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCBmaWxsPSJ1cmwoI2cpIiB4PSIxMzguMTkzIiB5PSIxMTUiIHdpZHRoPSIzNjEuODA2IiBoZWlnaHQ9IjIyNSIvPjxyZWN0IHg9IjE0MCIgeT0iMTE1IiB3aWR0aD0iMTcxIiBoZWlnaHQ9IjUwIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjE0MCIgeT0iMTY3IiB3aWR0aD0iMzU2IiBoZWlnaHQ9IjIwIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjE0NSIgeT0iMTg5IiB3aWR0aD0iMzQ2IiBoZWlnaHQ9IjIiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMTQxIiB5PSIxOTMiIHdpZHRoPSIxNzEiIGhlaWdodD0iMSIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjI5NCAwLjAwMCAwLjUxMCkiLz48cmVjdCB4PSIxNDAiIHk9IjE5NiIgd2lkdGg9IjM1NyIgaGVpZ2h0PSIyMCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjI5NCAwLjAwMCAwLjUxMCkiLz48cmVjdCB4PSIxNDAiIHk9IjIxOCIgd2lkdGg9IjI3MiIgaGVpZ2h0PSIyIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjE0MyIgeT0iMjIyIiB3aWR0aD0iMzQ3IiBoZWlnaHQ9IjEiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgZmlsbD0idXJsKCNnKSIgeD0iMC4wMDAiIHk9IjIyNyIgd2lkdGg9IjEzOC4xOTMiIGhlaWdodD0iMzM3Ii8+PHJlY3QgeD0iMSIgeT0iMjI3IiB3aWR0aD0iNjQiIGhlaWdodD0iNTAiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMSIgeT0iMjc5IiB3aWR0aD0iMTM0IiBoZWlnaHQ9IjIwIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjIiIHk9IjMwMSIgd2lkdGg9IjEzMSIgaGVpZ2h0PSIyIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjEiIHk9IjMwNSIgd2lkdGg9IjY0IiBoZWlnaHQ9IjEiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4yOTQgMC4wMDAgMC41MTApIi8+PHJlY3QgeD0iMCIgeT0iMzA4IiB3aWR0aD0iMTM1IiBoZWlnaHQ9IjIwIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMjk0IDAuMDAwIDAuNTEwKSIvPjxyZWN0IHg9IjEiIHk9IjMzMCIgd2lkdGg9IjEwMiIgaGVpZ2h0PSIyIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjEiIHk9IjMzNCIgd2lkdGg9IjEzMSIgaGVpZ2h0PSIxIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IGZpbGw9InVybCgjZykiIHg9IjEzOC4xOTMiIHk9IjIyNyIgd2lkdGg9IjM2MS44MDYiIGhlaWdodD0iMzM3Ii8+PHJlY3QgeD0iMTQwIiB5PSIyMjciIHdpZHRoPSIxNzEiIGhlaWdodD0iNTAiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMTQwIiB5PSIyNzkiIHdpZHRoPSIzNTYiIGhlaWdodD0iMjAiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMTQ1IiB5PSIzMDEiIHdpZHRoPSIzNDYiIGhlaWdodD0iMiIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxNDEiIHk9IjMwNSIgd2lkdGg9IjE3MSIgaGVpZ2h0PSIxIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMjk0IDAuMDAwIDAuNTEwKSIvPjxyZWN0IHg9IjE0MCIgeT0iMzA4IiB3aWR0aD0iMzU3IiBoZWlnaHQ9IjIwIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMjk0IDAuMDAwIDAuNTEwKSIvPjxyZWN0IHg9IjE0MCIgeT0iMzMwIiB3aWR0aD0iMjcyIiBoZWlnaHQ9IjIiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMTQzIiB5PSIzMzQiIHdpZHRoPSIzNDciIGhlaWdodD0iMSIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCBmaWxsPSJ1cmwoI2cpIiB4PSIwLjAwMCIgeT0iMzM5IiB3aWR0aD0iMTM4LjE5MyIgaGVpZ2h0PSI0NDkiLz48cmVjdCB4PSIxIiB5PSIzMzkiIHdpZHRoPSI2NCIgaGVpZ2h0PSI1MCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxIiB5PSIzOTEiIHdpZHRoPSIxMzQiIGhlaWdodD0iMjAiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMiIgeT0iNDEzIiB3aWR0aD0iMTMxIiBoZWlnaHQ9IjIiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMSIgeT0iNDE3IiB3aWR0aD0iNjQiIGhlaWdodD0iMSIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjI5NCAwLjAwMCAwLjUxMCkiLz48cmVjdCB4PSIwIiB5PSI0MjAiIHdpZHRoPSIxMzUiIGhlaWdodD0iMjAiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4yOTQgMC4wMDAgMC41MTApIi8+PHJlY3QgeD0iMSIgeT0iNDQyIiB3aWR0aD0iMTAyIiBoZWlnaHQ9IjIiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgeD0iMSIgeT0iNDQ2IiB3aWR0aD0iMTMxIiBoZWlnaHQ9IjEiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4wMDAgMC4wMDAgMC4wMDApIi8+PHJlY3QgZmlsbD0idXJsKCNnKSIgeD0iMTM4LjE5MyIgeT0iMzM5IiB3aWR0aD0iMzYxLjgwNiIgaGVpZ2h0PSI0NDkiLz48cmVjdCB4PSIxNDAiIHk9IjMzOSIgd2lkdGg9IjE3MSIgaGVpZ2h0PSI1MCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxNDAiIHk9IjM5MSIgd2lkdGg9IjM1NiIgaGVpZ2h0PSIyMCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxNDUiIHk9IjQxMyIgd2lkdGg9IjM0NiIgaGVpZ2h0PSIyIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjE0MSIgeT0iNDE3IiB3aWR0aD0iMTcxIiBoZWlnaHQ9IjEiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4yOTQgMC4wMDAgMC41MTApIi8+PHJlY3QgeD0iMTQwIiB5PSI0MjAiIHdpZHRoPSIzNTciIGhlaWdodD0iMjAiIGZpbGw9ImNvbG9yKGRpc3BsYXktcDMgMC4yOTQgMC4wMDAgMC41MTApIi8+PHJlY3QgeD0iMTQwIiB5PSI0NDIiIHdpZHRoPSIyNzIiIGhlaWdodD0iMiIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxNDMiIHk9IjQ0NiIgd2lkdGg9IjM0NyIgaGVpZ2h0PSIxIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IGZpbGw9InVybCgjZykiIHg9IjAuMDAwIiB5PSI0NTEiIHdpZHRoPSIxMzguMTkzIiBoZWlnaHQ9IjU2MSIvPjxyZWN0IHg9IjEiIHk9IjQ1MSIgd2lkdGg9IjY0IiBoZWlnaHQ9IjUwIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMDAwIDAuMDAwIDAuMDAwKSIvPjxyZWN0IHg9IjEiIHk9IjUwMyIgd2lkdGg9IjEzNCIgaGVpZ2h0PSIyMCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIyIiB5PSI1MjUiIHdpZHRoPSIxMzEiIGhlaWdodD0iMiIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxIiB5PSI1MjkiIHdpZHRoPSI2NCIgaGVpZ2h0PSIxIiBmaWxsPSJjb2xvcihkaXNwbGF5LXAzIDAuMjk0IDAuMDAwIDAuNTEwKSIvPjxyZWN0IHg9IjAiIHk9IjUzMiIgd2lkdGg9IjEzNSIgaGVpZ2h0PSIyMCIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjI5NCAwLjAwMCAwLjUxMCkiLz48cmVjdCB4PSIxIiB5PSI1NTQiIHdpZHRoPSIxMDIiIGhlaWdodD0iMiIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48cmVjdCB4PSIxIiB5PSI1NTgiIHdpZHRoPSIxMzEiIGhlaWdodD0iMSIgZmlsbD0iY29sb3IoZGlzcGxheS1wMyAwLjAwMCAwLjAwMCAwLjAwMCkiLz48L3N2Zz4=","animation_url":"data:text/html;base64,PCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjx0aXRsZT5ET00zIDE0QSwgMjAyNSBieSBMZWFuZGVyIEhlcnpvZyBhbmQgTWlsaWFuIE1vcmk8L3RpdGxlPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJET00zIDE0QSwgMjAyNSBieSBMZWFuZGVyIEhlcnpvZyBhbmQgTWlsaWFuIE1vcmkiPjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMDAwMDAwIj48bWV0YSBuYW1lPSJtb2JpbGUtd2ViLWFwcC1jYXBhYmxlIiBjb250ZW50PSJ5ZXMiPjxzdHlsZT5ib2R5e21hcmdpbjowO292ZXJzY3JvbGwtYmVoYXZpb3I6bm9uZTt9PC9zdHlsZT48c3R5bGU+aHRtbHtvdmVyc2Nyb2xsLWJlaGF2aW9yOm5vbmU7c2Nyb2xsLWJlaGF2aW9yOnNtb290aDtzY3JvbGxiYXItd2lkdGg6bm9uZX1ib2R5e3BhZGRpbmc6MDttYXJnaW46MDtiYWNrZ3JvdW5kOmJsYWNrO2ZvbnQtc2l6ZTouOGVtO2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtsaW5lLWhlaWdodDoxLjY7LS1kdXJhdGlvbjogLjVzfWJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0ubm9zY3JvbGx7aGVpZ2h0OjEwMHZoO292ZXJmbG93OmhpZGRlbjtvdmVyc2Nyb2xsLWJlaGF2aW9yOm5vbmV9bWFpbi5kb217bWF4LWhlaWdodDoxMDB2aDtvdmVyZmxvdzpzY3JvbGx9LmRvbXstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LmRvbSAubGF5ZXJ7cG9pbnRlci1ldmVudHM6bm9uZTtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MH0uZG9tIC5zbGlkZXtkaXNwbGF5OmJsb2NrO2hlaWdodDozMHZoO21hcmdpbi10b3A6MXB4O2FuaW1hdGlvbjpzbGlkZSAuNzVzIGVhc2UgMHMgYm90aH0uZG9tIC5yb3QgZGl2Lm92ZXJsYXk+ZGl2e3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5kb20gLmZsaXAgZGl2Lm92ZXJsYXk+ZGl2e3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSl9LmRvbSAuZmxpcC5yb3QgZGl2Lm92ZXJsYXk+ZGl2e3RyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSkgcm90YXRlKDkwZGVnKX0uZG9tPmRpdnttaW4taGVpZ2h0OjEwMHZofS5kb20+ZGl2Om5vdCguYWN0aXZlKXtjdXJzb3I6bm9uZX0uZG9tPmRpdjpub3QoLmFjdGl2ZSkgLnVpPi5mdWxsc2NyZWVuLC5kb20+ZGl2Om5vdCguYWN0aXZlKSAudWk+LmNsb3NlLC5kb20gOmZ1bGxzY3JlZW4gLmZ1bGxzY3JlZW57b3BhY2l0eTowfS5kb20gOmZ1bGxzY3JlZW57b3ZlcmZsb3cteTpzY3JvbGx9LmRvbSAuZnVsbHNjcmVlbntwb3NpdGlvbjpmaXhlZDtib3R0b206MDtyaWdodDowO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246b3BhY2l0eSAuM3MgZWFzZX0uZG9tIC5mdWxsc2NyZWVuOmhvdmVyOmFmdGVye2JhY2tncm91bmQ6Y3VycmVudENvbG9yfS5kb20gLmZ1bGxzY3JlZW46YWZ0ZXJ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IiI7Ym9yZGVyOjFweCBzb2xpZDt3aWR0aDoxLjVlbTtoZWlnaHQ6MS41ZW07bWFyZ2luOjJlbX0uZG9tIC5hbml7YW5pbWF0aW9uOmZsb3cgdmFyKC0tc3BlZWQpIGVhc2UtaW4tb3V0IHZhcigtLWRlbGF5KSAzfS5kb20gLmJhcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7cmlnaHQ6MDtkaXNwbGF5OmJsb2NrO2hlaWdodDoxcHg7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7Y29sb3I6aW5oZXJpdH0uZG9tIC5tYXJrZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3BvaW50ZXItZXZlbnRzOm5vbmU7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7YmFja2dyb3VuZDp3aGl0ZTthbmltYXRpb246Zm9sbG93IDFzIHN0ZXBzKDEsanVtcC1zdGFydCkgMHMgbm9uZSAzMDtkaXNwbGF5OmlubGluZS1ibG9jazstLXM6IDRweDt3aWR0aDp2YXIoLS1zKTtoZWlnaHQ6dmFyKC0tcyl9LmRvbSAuZG9tZ3JpZHtkaXNwbGF5OmdyaWR9LmRvbSAuZG9tZ3JpZCAub3ZlcmxheXtncmlkLWNvbHVtbjoxIC8gLTE7cG9zaXRpb246c3RpY2t5O2JvdHRvbTowO2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDtncmlkLWF1dG8tcm93czp2YXIoLS1yb3dzKTtwb2ludGVyLWV2ZW50czpub25lfS5kb20gLmRvbWdyaWQgLm92ZXJsYXk+ZGl2e2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3dpZHRoOmNhbGModmFyKC0tbGVuZ3RoKSAqIDElKTtoZWlnaHQ6MXB4O21hcmdpbi1ib3R0b206MnB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC43cyBlYXNlLHdpZHRoIC4zcyBlYXNlfS5kb20gLmRvbWdyaWQ+ZGl2e3RyYW5zZm9ybS1vcmlnaW46MCAwO21hcmdpbjowIDFweCAxcHggMH0uZG9tIC5kb21ncmlkPmRpdi54ZW5ke2p1c3RpZnktaXRlbXM6ZW5kfS5kb20gLmRvbWdyaWQ+ZGl2LnllbmR7YWxpZ24tY29udGVudDplbmR9LmRvbSAuZG9tZ3JpZD5kaXYuczJ7Z3JpZC1jb2x1bW4tZW5kOnNwYW4gMn0uZG9tIC5kb21ncmlkPmRpdi5zM3tncmlkLWNvbHVtbi1lbmQ6c3BhbiAzfS5kb20gLmRvbWdyaWQ+ZGl2LnM0e2dyaWQtY29sdW1uLWVuZDpzcGFuIDR9LmRvbSAuZG9tZ3JpZD5kaXYuczV7Z3JpZC1jb2x1bW4tZW5kOnNwYW4gNX0uZG9tIC5kb21ncmlkPmRpdj5kaXZ7LS13OiAxMDAlO21hcmdpbi1ib3R0b206MXB4O2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZTt0cmFuc2Zvcm0tb3JpZ2luOjAgMTAwJTt3aWR0aDp2YXIoLS13KX0uZG9tIC5kb21ncmlkPmRpdj5kaXYuYnlle2FuaW1hdGlvbi1uYW1lOmJ5ZTthbmltYXRpb24tZHVyYXRpb246dmFyKC0tZHVyYXRpb24pfS5kb20gLmRvbWdyaWQ+ZGl2PmRpdi5jbGlwe2JvcmRlci1yYWRpdXM6MCAwIDAgMnB4fUBrZXlmcmFtZXMgZm9sbG93ezAlLHRve3RyYW5zZm9ybTp0cmFuc2xhdGUoMCl9MjUle3RyYW5zZm9ybTp0cmFuc2xhdGUoY2FsYygxMDB2dyAtIHZhcigtLXMpKSl9NTAle3RyYW5zZm9ybTp0cmFuc2xhdGUoY2FsYygxMDB2dyAtIHZhcigtLXMpKSxjYWxjKDEwMHZoIC0gdmFyKC0tcykpKX03NSV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYygxMDB2aCAtIHZhcigtLXMpKSl9fUBrZXlmcmFtZXMgYnlle3Rve3RyYW5zZm9ybTpzY2FsZVkoMCl9fUBrZXlmcmFtZXMgZmxvd3swJSwyMCUsODAlLHRve3dpZHRoOjEwMCU7d2lkdGg6dmFyKC0tdyl9NDAlLDYwJXt3aWR0aDowJX19QGtleWZyYW1lcyBzbGlkZXswJSx0b3toZWlnaHQ6MH0yMCUsNDAle2hlaWdodDozMHZofX0KPC9zdHlsZT48L2hlYWQ+PGJvZHk+PG1haW4gaWQ9ImNvbnRhaW5lciIgY2xhc3M9ImRvbSIgdGFiaW5kZXg9Ii0xIj48L21haW4+PHNjcmlwdD53aW5kb3cuZGF0YT17aWQ6MTQsb3duZXI6JzB4NUJCNjIwOTlDNGJkNTA5ODBGQTMzODQ2MzMyYzYwOTczODY1ZDlkMScsc2lkZTonQScsYWx0OnRydWUsYnBtOjEzNSxmbGlwczowfTs8L3NjcmlwdD48c2NyaXB0PnZhciAkcz1PYmplY3QuZGVmaW5lUHJvcGVydHk7dmFyIENzPShlLG4sdCk9Pm4gaW4gZT8kcyhlLG4se2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KTplW25dPXQ7dmFyIGNuPShlLG4sdCk9PihDcyhlLHR5cGVvZiBuIT0ic3ltYm9sIj9uKyIiOm4sdCksdCksbGE9KGUsbix0KT0+e2lmKCFuLmhhcyhlKSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCAiK3QpfTt2YXIgTGU9KGUsbix0KT0+KGxhKGUsbiwicmVhZCBmcm9tIHByaXZhdGUgZmllbGQiKSx0P3QuY2FsbChlKTpuLmdldChlKSksQ2U9KGUsbix0KT0+e2lmKG4uaGFzKGUpKXRocm93IFR5cGVFcnJvcigiQ2Fubm90IGFkZCB0aGUgc2FtZSBwcml2YXRlIG1lbWJlciBtb3JlIHRoYW4gb25jZSIpO24gaW5zdGFuY2VvZiBXZWFrU2V0P24uYWRkKGUpOm4uc2V0KGUsdCl9LHp0PShlLG4sdCxhKT0+KGxhKGUsbiwid3JpdGUgdG8gcHJpdmF0ZSBmaWVsZCIpLGE/YS5jYWxsKGUsdCk6bi5zZXQoZSx0KSx0KTt2YXIgTGE9KGUsbix0LGEpPT4oe3NldCBfKHMpe3p0KGUsbixzLHQpfSxnZXQgXygpe3JldHVybiBMZShlLG4sYSl9fSksd249KGUsbix0KT0+KGxhKGUsbiwiYWNjZXNzIHByaXZhdGUgbWV0aG9kIiksdCk7KGZ1bmN0aW9uKCl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtpZihuJiZuLnN1cHBvcnRzJiZuLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpcmV0dXJuO2Zvcihjb25zdCBzIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl0nKSlhKHMpO25ldyBNdXRhdGlvbk9ic2VydmVyKHM9Pntmb3IoY29uc3QgbSBvZiBzKWlmKG0udHlwZT09PSJjaGlsZExpc3QiKWZvcihjb25zdCBwIG9mIG0uYWRkZWROb2RlcylwLnRhZ05hbWU9PT0iTElOSyImJnAucmVsPT09Im1vZHVsZXByZWxvYWQiJiZhKHApfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTtmdW5jdGlvbiB0KHMpe2NvbnN0IG09e307cmV0dXJuIHMuaW50ZWdyaXR5JiYobS5pbnRlZ3JpdHk9cy5pbnRlZ3JpdHkpLHMucmVmZXJyZXJQb2xpY3kmJihtLnJlZmVycmVyUG9saWN5PXMucmVmZXJyZXJQb2xpY3kpLHMuY3Jvc3NPcmlnaW49PT0idXNlLWNyZWRlbnRpYWxzIj9tLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjpzLmNyb3NzT3JpZ2luPT09ImFub255bW91cyI/bS5jcmVkZW50aWFscz0ib21pdCI6bS5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLG19ZnVuY3Rpb24gYShzKXtpZihzLmVwKXJldHVybjtzLmVwPSEwO2NvbnN0IG09dChzKTtmZXRjaChzLmhyZWYsbSl9fSkoKTtmdW5jdGlvbiBVcyhlKXtsZXQgbj1NYXRoLmFicyhOdW1iZXIoZSkpPj4+MDtyZXR1cm4gbj1NYXRoLmltdWwobiwyNjU0NDM1NzY5KT4+PjAsbj09PTAmJihuPTEpLG59Y2xhc3MgV3N7Y29uc3RydWN0b3Iobil7dGhpcy5zZWVkPVVzKG4pLHRoaXMuc2VlZD09PTAmJih0aGlzLnNlZWQ9MSl9bmV4dCgpe3JldHVybiB0aGlzLnNlZWQ9TWF0aC5pbXVsKDE2NjQ1MjUsdGhpcy5zZWVkKSsxMDEzOTA0MjIzLHRoaXMuc2VlZD10aGlzLnNlZWQ+Pj4wLHRoaXMuc2VlZH1uZXh0RmxvYXQoKXtyZXR1cm4gdGhpcy5uZXh0KCkvNDI5NDk2NzI5Nn1uZXh0SW50KG4sdCl7Y29uc3QgYT10LW4rMTtyZXR1cm4gbit0aGlzLm5leHQoKSVhfXNodWZmbGUobil7Zm9yKGxldCB0PW4ubGVuZ3RoLTE7dD4wO3QtLSl7Y29uc3QgYT10aGlzLm5leHQoKSUodCsxKTtbblt0XSxuW2FdXT1bblthXSxuW3RdXX1yZXR1cm4gbn19ZnVuY3Rpb24geHMoZSl7Y29uc3Qgbj1uZXcgV3MoZSksdD0oKT0+bi5uZXh0RmxvYXQoKTtyZXR1cm4gdC5uZXh0PSgpPT5uLm5leHQoKSx0Lm5leHRJbnQ9KGEscyk9Pm4ubmV4dEludChhLHMpLHQuc2h1ZmZsZT1hPT5uLnNodWZmbGUoYSksdH1sZXQgTj1NYXRoLnJhbmRvbTtmdW5jdGlvbiBLcyhlKXt0cnl7Tj10eXBlb2YgZT09ImZ1bmN0aW9uIj9lOk1hdGgucmFuZG9tfWNhdGNoe049TWF0aC5yYW5kb219fWZ1bmN0aW9uIGwoZSxuLHQpe2NvbnN0IGE9TnVtYmVyKGUpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUoYSk/TWF0aC5taW4odCxNYXRoLm1heChuLGEpKTpufWNvbnN0IFlzPSJjaGFuZ2VFdmVudCIsUm49T2JqZWN0LmZyZWV6ZShbInN0cmFpZ2h0IiwiYnJlYWsiLCJicmVha2JlYXQiLCJhbWJpZW50IiwiZmx1eEdyaWQiLCJwYXVzZSJdKTtmdW5jdGlvbiBYcyhlKXtyZXR1cm4gUm4uaW5jbHVkZXMoZSl9Y29uc3QgJGU9e21pbkJwbToyMCxtYXhCcG06MzAwLGRlZmF1bHRCcG06MTIwLHN0YXJ0TWluQnBtOjYwLHN0YXJ0TWF4QnBtOjE2MCxzY2FsZUNsYW1wTWluQnBtOjMwLHNjYWxlQ2xhbXBNYXhCcG06MjQwfSxubj17bG93QnBtOjYwLGhpZ2hCcG06MTgwfTtmdW5jdGlvbiBKcyhlPXt9KXt0cnl7Y29uc3Qgbj1OdW1iZXIoZS5sb3dCcG0pLHQ9TnVtYmVyKGUuaGlnaEJwbSk7TnVtYmVyLmlzRmluaXRlKG4pJiZuPjAmJihubi5sb3dCcG09biksTnVtYmVyLmlzRmluaXRlKHQpJiZ0PjAmJihubi5oaWdoQnBtPXQpfWNhdGNoe319ZnVuY3Rpb24gZ3QoZSl7Y29uc3Qgbj1OdW1iZXIoZSk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShuKT9sKG4sJGUubWluQnBtLCRlLm1heEJwbSk6JGUuZGVmYXVsdEJwbX1mdW5jdGlvbiBpKGUsbil7cmV0dXJuIE4oKSoobi1lKStlfWZ1bmN0aW9uIEllKGUsbil7cmV0dXJuIE1hdGguZmxvb3IoTigpKihuLWUrMSkpK2V9ZnVuY3Rpb24gRmUoZSl7cmV0dXJuIG5ldyBBcnJheShlKS5maWxsKG51bGwpfWZ1bmN0aW9uIEhuKGUpe2NvbnN0IG49TnVtYmVyKGUpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUobik/TWF0aC5taW4oMSxNYXRoLm1heCgwLG4pKTowfWZ1bmN0aW9uIFpzKGUsbix0KXt0cnl7Y29uc3QgYT1sKE51bWJlcih0KXx8MCwwLDEpO3JldHVybiBhPD0wP246TnVtYmVyKGUpJTI9PT0wPzIqbiphOjIqbiooMS1hKX1jYXRjaHtyZXR1cm4gbn19ZnVuY3Rpb24gZWkoZSxuLHQpe3RyeXtjb25zdCBhPWwoTnVtYmVyKHQpfHwwLDAsLjUpO3JldHVybiBhPD0wPzA6TnVtYmVyKGUpJTE2JTQ9PT0yP2EqbjowfWNhdGNoe3JldHVybiAwfX1mdW5jdGlvbiB4dChlLG4pe3RyeXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZSgpPChOdW1iZXIobil8fDApOk4oKTwoTnVtYmVyKGUpfHwwKX1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gU3QoZSl7Y29uc3Qgbj1BcnJheS5pc0FycmF5KGUpP2U6W107Zm9yKGxldCB0PW4ubGVuZ3RoLTE7dD4wO3QtLSl7Y29uc3QgYT1NYXRoLmZsb29yKE4oKSoodCsxKSkscz1uW3RdO25bdF09blthXSxuW2FdPXN9cmV0dXJuIG59ZnVuY3Rpb24gS2UoZSl7Y29uc3Qgbj1BcnJheS5pc0FycmF5KGUpP2U6W107aWYobi5sZW5ndGghPT0wKXJldHVybiBuW01hdGguZmxvb3IoTigpKm4ubGVuZ3RoKV19ZnVuY3Rpb24gVGEoZSl7cmV0dXJuIE51bWJlcihlKSUxNj09PTB9ZnVuY3Rpb24geW4oZSl7cmV0dXJuIE51bWJlcihlKSUxNiU0PT09Mn1mdW5jdGlvbiBOYShlLG4pe2NvbnN0IHQ9TWF0aC5yb3VuZCgoTnVtYmVyKGUpfHwwKS84KSo4O3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCkmJnQ+MD90Om59ZnVuY3Rpb24gT3MoZSxuPXt9KXt0cnl7Y29uc3QgdD1OdW1iZXIobi5sb3dCcG0pfHw2MCxhPU51bWJlcihuLmhpZ2hCcG0pfHwxODAscz1OdW1iZXIobi5hbHBoYUF0TG93KXx8MS4yLG09TnVtYmVyKG4uYWxwaGFBdEhpZ2gpfHwuOCxwPU51bWJlcihlKSxTPU51bWJlci5pc0Zpbml0ZShwKT9wOiRlLmRlZmF1bHRCcG07aWYoUzw9dClyZXR1cm4gcztpZihTPj1hKXJldHVybiBtO2NvbnN0IFA9KFMtdCkvTWF0aC5tYXgoMSxhLXQpO3JldHVybiBzKyhtLXMpKlB9Y2F0Y2h7cmV0dXJuIDF9fWZ1bmN0aW9uIHRpKGUsbix0PXt9KXt0cnl7Y29uc3QgYT1IbihlKSxzPU9zKG4sdCksbT0xL01hdGgubWF4KDFlLTQscyk7cmV0dXJuIE1hdGgucG93KGEsbSl9Y2F0Y2h7cmV0dXJuIEhuKGUpfX1mdW5jdGlvbiBuaShlLG4sdD1OKXt0cnl7Y29uc3QgYT1NYXRoLm1heCgwLE51bWJlcihuKXx8KEFycmF5LmlzQXJyYXkoZSk/ZS5sZW5ndGg6MCkpO2lmKCFBcnJheS5pc0FycmF5KGUpfHxhPD0wKXJldHVybjtjb25zdCBzPVtdO2ZvcihsZXQgbT0wO208YTttKyspZVttXSYmcy5wdXNoKHtpbmRleDptLGV2OmVbbV19KTtpZihzLmxlbmd0aD09PTApcmV0dXJuO2Zvcihjb25zdHtpbmRleDptfW9mIHMpZVttXT1udWxsO2Zvcihjb25zdHtpbmRleDptLGV2OnB9b2Ygcyl7Y29uc3QgUz0odHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOk4oKSk8LjU/LTE6MSxQPShtK1MrYSklYTtpZighZVtQXSl7ZVtQXT17Li4ucH07Y29udGludWV9Y29uc3QgTT0obS1TK2EpJWE7aWYoIWVbTV0pe2VbTV09ey4uLnB9O2NvbnRpbnVlfWVbbV18fChlW21dPXsuLi5wfSl9fWNhdGNoe319ZnVuY3Rpb24gYWkoZSxuLHQsYT1OKXt0cnl7aWYoIUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoPT09MClyZXR1cm47Y29uc3Qgcz1lLmxlbmd0aCxtPVtdO2ZvcihsZXQgUz0wO1M8cztTKyspZVtTXXx8bS5wdXNoKFMpO2lmKG0ubGVuZ3RoPT09MClyZXR1cm47Zm9yKGxldCBTPW0ubGVuZ3RoLTE7Uz4wO1MtLSl7Y29uc3QgUD1NYXRoLmZsb29yKCh0eXBlb2YgYT09ImZ1bmN0aW9uIj9hKCk6TigpKSooUysxKSksTT1tW1NdO21bU109bVtQXSxtW1BdPU19bGV0IHA9MDtmb3IobGV0IFM9MDtTPG0ubGVuZ3RoJiZwPG47UysrKXtjb25zdCBQPW1bU10sTT10KFApO00mJihlW1BdPU0scCsrKX19Y2F0Y2h7fX1mdW5jdGlvbiB0bihlKXtyZXR1cm4oTigpKjItMSkqZX1mdW5jdGlvbiBpdChlKXtyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSl9ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIE1hdGgucG93KDEwLGUvMjApfWZ1bmN0aW9uIFR0KGUsbil7Y29uc3QgdD1ubi5sb3dCcG0sYT1ubi5oaWdoQnBtLHM9bChuLCRlLnNjYWxlQ2xhbXBNaW5CcG0sJGUuc2NhbGVDbGFtcE1heEJwbSk7bGV0IG09MTtyZXR1cm4gczw9dD9tPS45Ky4wNCooKHMtJGUuc2NhbGVDbGFtcE1pbkJwbSkvKHQtJGUuc2NhbGVDbGFtcE1pbkJwbSkpOnM+PWE/bT0xLjA2Ky4wMiooKHMtYSkvKCRlLnNjYWxlQ2xhbXBNYXhCcG0tYSkpOm09Ljk0Ky4xMiooKHMtdCkvKGEtdCkpLGUqbX1mdW5jdGlvbiB1YShlLG4pe2NvbnN0IHQ9bm4ubG93QnBtLGE9bm4uaGlnaEJwbSxzPWwobiwkZS5zY2FsZUNsYW1wTWluQnBtLCRlLnNjYWxlQ2xhbXBNYXhCcG0pO2xldCBtPTE7cmV0dXJuIHM8PXQ/bT0uODUrLjA1Kigocy0kZS5zY2FsZUNsYW1wTWluQnBtKS8odC0kZS5zY2FsZUNsYW1wTWluQnBtKSk6cz49YT9tPTEuMDgrLjAyKigocy1hKS8oJGUuc2NhbGVDbGFtcE1heEJwbS1hKSk6bT0uOSsuMTgqKChzLXQpLyhhLXQpKSxlKm19ZnVuY3Rpb24gZm4oZSxuKXtjb25zdCB0PW5uLmxvd0JwbSxhPW5uLmhpZ2hCcG0scz1sKG4sJGUuc2NhbGVDbGFtcE1pbkJwbSwkZS5zY2FsZUNsYW1wTWF4QnBtKTtsZXQgbT0xO3JldHVybiBzPD10P209Ljg4Ky4wNCooKHMtJGUuc2NhbGVDbGFtcE1pbkJwbSkvKHQtJGUuc2NhbGVDbGFtcE1pbkJwbSkpOnM+PWE/bT0xLjA2Ky4wMiooKHMtYSkvKCRlLnNjYWxlQ2xhbXBNYXhCcG0tYSkpOm09LjkyKy4xNCooKHMtdCkvKGEtdCkpLGUqbX1mdW5jdGlvbiBIYShlPXt9KXt0cnl7cmV0dXJuIFN0cmluZyhlJiZlLnNpZGUpLnRvVXBwZXJDYXNlKCk9PT0iQiJ9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIEV0KGUsbil7cmV0dXJuIEhhKG4pP2UqMS42OmV9ZnVuY3Rpb24gSXQoZSxuKXtyZXR1cm4gSGEobik/ZSoxLjU6ZX1mdW5jdGlvbiBqdChlLG4pe3JldHVybiBIYShuKT9lKjEuNDplfWZ1bmN0aW9uIFllKGUpe3RyeXtyZXR1cm4gZSYmU3RyaW5nKGUuc2lkZSkudG9VcHBlckNhc2UoKT09PSJCIj8iQiI6IkEifWNhdGNoe3JldHVybiJBIn19ZnVuY3Rpb24gUWUoZSxuLHQpe2lmKCF0fHxuPD0wKXJldHVybiBlO2NvbnN0IGE9dG4obikqdDtyZXR1cm4gZSooMSthKX1mdW5jdGlvbiBxYShlKXtyZXR1cm4hIWUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gcXQoZSxuPVtdKXtjb25zdCB0PXt9O3JldHVybiBmdW5jdGlvbiBhKHMsbSl7Zm9yKGNvbnN0W3AsU11vZiBPYmplY3QuZW50cmllcyhzfHx7fSkpe2NvbnN0IFA9bS5jb25jYXQocCk7cWEoUyk/YShTLFApOnRbUC5qb2luKCIuIildPVN9fShlLG4pLHR9ZnVuY3Rpb24gc2koZSxuKXtsZXQgdD1lO2Zvcihjb25zdCBhIG9mIG4paWYoIXFhKHQpJiYhQXJyYXkuaXNBcnJheSh0KXx8KHQ9dFthXSx0PT09dm9pZCAwKSlyZXR1cm47cmV0dXJuIHR9ZnVuY3Rpb24gaWkoZSxuLHQpe2xldCBhPWU7Zm9yKGxldCBzPTA7czxuLmxlbmd0aC0xO3MrKyl7Y29uc3QgbT1uW3NdO3FhKGFbbV0pfHwoYVttXT17fSksYT1hW21dfWFbbltuLmxlbmd0aC0xXV09dH1mdW5jdGlvbiBhdChlLG4sdD17fSl7Y29uc3QgYT17fSxzPXF0KG4sW2VdKTtPYmplY3QuYXNzaWduKGEscyk7Zm9yKGNvbnN0W20scF1vZiBPYmplY3QuZW50cmllcyh0KSl7Y29uc3QgUz1zaShuLHAuc3BsaXQoIi4iKSk7UyE9PXZvaWQgMCYmKGFbYCR7ZX0uJHttfWBdPVMpfXJldHVybiBhfWZ1bmN0aW9uIHN0KGUsbix0PXt9KXtjb25zdCBhPXt9LHM9YCR7ZX0uYDtmb3IoY29uc3RbbSxwXW9mIE9iamVjdC5lbnRyaWVzKG58fHt9KSl7aWYoIW0uc3RhcnRzV2l0aChzKSljb250aW51ZTtjb25zdCBTPW0uc2xpY2Uocy5sZW5ndGgpLFA9dFtTXXx8UztpaShhLFAuc3BsaXQoIi4iKSxwKX1yZXR1cm4gYX1mdW5jdGlvbiBBdChlKXtjb25zdCBuPU51bWJlcihlKSx0PU51bWJlci5pc0Zpbml0ZShuKSYmbj4wP246JGUuZGVmYXVsdEJwbTtyZXR1cm4gZ3QodCl9ZnVuY3Rpb24gRnQoZSl7Y29uc3Qgbj1OdW1iZXIoZSk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShuKSYmbj4wP246LjEyNX1mdW5jdGlvbiBjaShlKXt0cnl7Y29uc3Qgbj1OdW1iZXIoZSYmZS50ZW1wb0JwbSk7aWYoTnVtYmVyLmlzRmluaXRlKG4pJiZuPjApcmV0dXJuIGd0KG4pO2NvbnN0IHQ9ZSYmZS5hdWRpb0NvbnRleHQsYT10JiZ0eXBlb2YgdC5nZXRCcG09PSJmdW5jdGlvbiI/dC5nZXRCcG0oKTp2b2lkIDA7aWYoTnVtYmVyLmlzRmluaXRlKGEpJiZhPjApcmV0dXJuIGd0KGEpO2NvbnN0IHM9ZSYmZS5tYXN0ZXJCdXMsbT1OdW1iZXIocyYmcy50ZW1wb0JwbSk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShtKSYmbT4wP2d0KG0pOiRlLmRlZmF1bHRCcG19Y2F0Y2h7cmV0dXJuICRlLmRlZmF1bHRCcG19fWNvbnN0IGtuPWU9PihuLHQpPT4oZSYmZS5yP2UucigpOk4oKSkqKHQtbikrbixfbj1lPT5uPT5uW01hdGguZmxvb3IoKGUmJmUucj9lLnIoKTpOKCkpKm4ubGVuZ3RoKV0sR2E9ZT0+bj0+bltNYXRoLmZsb29yKChlJiZlLnI/ZS5yKCk6TigpKSpuLmxlbmd0aCldO2Z1bmN0aW9uIFl0KGUpe3RyeXtjb25zdCBuPWUmJmUuZmxhZ3MmJmUuZmxhZ3MuZmx1eEdyaWQmJmUuZmxhZ3MuZmx1eEdyaWQucmV2ZXJiQmlhcztyZXR1cm4gbj09PSJzbWFsbCJ8fG49PT0iYmlnIj9uOiJtaWQifWNhdGNoe3JldHVybiJtaWQifX1mdW5jdGlvbiBFYShlLG4pe2NvbnN0IHQ9e3NtYWxsOntkZWNheTpbLjA4LC4xNV0scHJlRGVsYXlNczpbMCwxNV0sbWFrZVVwRGI6WzAsM10saGlnaFNoZWxmSHo6WzQ4MDAsOWUzXSxoaWdoU2hlbGZHYWluRGI6Wy0xMiwtNl0sc3RlcmVvU3ByZWFkOlswLC4wMV19LG1pZDp7ZGVjYXk6Wy4zLDEuMl0scHJlRGVsYXlNczpbNSw1MF0sbWFrZVVwRGI6WzQsMTBdLGhpZ2hTaGVsZkh6OlsyNTAwLDdlM10saGlnaFNoZWxmR2FpbkRiOlstOCwtNF0sc3RlcmVvU3ByZWFkOlsuMDEsLjAzXX0sYmlnOntkZWNheTpbMS4yLDZdLHByZURlbGF5TXM6WzEwLDgwXSxtYWtlVXBEYjpbOCwxNF0saGlnaFNoZWxmSHo6WzE4MDAsNTIwMF0saGlnaFNoZWxmR2FpbkRiOlstNiwtMl0sc3RlcmVvU3ByZWFkOlsuMDIsLjA1XX19LGE9dFtuXXx8dC5taWQscz0obSxwKT0+dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShtLHApOmkobSxwKTtyZXR1cm57ZGVjYXk6cyhhLmRlY2F5WzBdLGEuZGVjYXlbMV0pLHByZURlbGF5TXM6TWF0aC5mbG9vcihzKGEucHJlRGVsYXlNc1swXSxhLnByZURlbGF5TXNbMV0pKSxtYWtlVXBEYjpNYXRoLmZsb29yKHMoYS5tYWtlVXBEYlswXSxhLm1ha2VVcERiWzFdKSksaGlnaFNoZWxmSHo6TWF0aC5mbG9vcihzKGEuaGlnaFNoZWxmSHpbMF0sYS5oaWdoU2hlbGZIelsxXSkpLGhpZ2hTaGVsZkdhaW5EYjpzKGEuaGlnaFNoZWxmR2FpbkRiWzBdLGEuaGlnaFNoZWxmR2FpbkRiWzFdKSxzdGVyZW9TcHJlYWQ6cyhhLnN0ZXJlb1NwcmVhZFswXSxhLnN0ZXJlb1NwcmVhZFsxXSl9fWZ1bmN0aW9uIElhKGUsbil7Y29uc3QgdD1uPT09InNtYWxsIj8uMjpuPT09ImJpZyI/MS4zNToxLGE9TnVtYmVyKGUpLHM9TnVtYmVyLmlzRmluaXRlKGEpP2EqdDowO3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDEscykpfWZ1bmN0aW9uIFh0KGUsbil7cmV0dXJuIE1hdGgubWF4KDAsTnVtYmVyKGUpfHwwKSoobj09PSJzbWFsbCI/Ljc1Om49PT0iYmlnIj8xLjM1OjEpfWNvbnN0IG9pPU9iamVjdC5mcmVlemUoe2ZtQmxpcDE6ImFjb3VzdGljRHJ1bSIsZm1CbGlwMjoicmVzb1BpbmciLHdvb2RCbG9jazoibm9pc2VQZXJjIix0ZWNobm9TdGFiOiJ0b20ifSk7ZnVuY3Rpb24geWUoZSxuLHQ9e30pe3RyeXtpZighZXx8dHlwZW9mIGUudXBkYXRlUGFyYW1zIT0iZnVuY3Rpb24iKXJldHVybjtlLnVwZGF0ZVBhcmFtcyhuLHQpfWNhdGNoe319ZnVuY3Rpb24gcmkoZT17fSl7dHJ5e2NvbnN0IG49ZSYmZS5yaXNlO2lmKCFuKXJldHVybjtjb25zdCB0PV9uKGUpLGE9a24oZSkscz10KFsibG93cGFzcyIsImJhbmRwYXNzIiwiaGlnaHBhc3MiXSksbT1NYXRoLmZsb29yKGEoMTIwLDgwMCkpLHA9TWF0aC5mbG9vcihhKDM4MDAsMTJlMykpLFM9YSguOSwyLjIpLFA9YSguMDEsLjA1KTt5ZShuLHsicmlzZS5maWx0ZXIudHlwZSI6cywicmlzZS5maWx0ZXIuc3RhcnRIeiI6bSwicmlzZS5maWx0ZXIuZW5kSHoiOnAsInJpc2UuZmlsdGVyLnEiOlMsInJpc2Uudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjpQLCJyaXNlLnZvaWNlU3BlY2lmaWMudGFpbFNlY29uZHMiOmEoLjA2LC4xNil9LHtxdWFudGl6ZUJhcnM6MX0pO3RyeXtlLmZsYWdzfHwoZS5mbGFncz17fSksQXJyYXkuaXNBcnJheShlLmZsYWdzLnJpc2VMZWFkU3RlcHNSYW5nZSl8fChlLmZsYWdzLnJpc2VMZWFkU3RlcHNSYW5nZT1bMTYsMzJdKSx0eXBlb2YgZS5mbGFncy5yaXNlQmFyc0FoZWFkIT0ibnVtYmVyIiYmKGUuZmxhZ3MucmlzZUJhcnNBaGVhZD0yKX1jYXRjaHt9fWNhdGNoe319ZnVuY3Rpb24gem4oZSxuLHQsYT1vaSl7dHJ5e2lmKFllKGUpIT09IkIiKXJldHVybnt9O2NvbnN0IHM9YVtuXTtpZighcylyZXR1cm57fTtjb25zdCBtPXt9LHA9YCR7bn0uYCxTPWAke3N9LmA7Zm9yKGNvbnN0W1AsTV1vZiBPYmplY3QuZW50cmllcyh0fHx7fSkpUC5zdGFydHNXaXRoKHApJiYobVtgJHtTfSR7UC5zbGljZShwLmxlbmd0aCl9YF09TSk7cmV0dXJuIG19Y2F0Y2h7cmV0dXJue319fWZ1bmN0aW9uIGpuKGUpe3RyeXtjb25zdCBuPVsia2ljayIsImhpaGF0IiwiZm1CbGlwMSIsImZtQmxpcDIiLCJ3b29kQmxvY2siLCJ0ZWNobm9TdGFiIiwiY2xpY2tzIiwiZmlsdGVyUGluZyIsImJhc3MiLCJhY291c3RpY0RydW0iLCJub2lzZVBlcmMiLCJ0b20iXTtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBhPWUmJmVbdF07IWF8fHR5cGVvZiBhLnVwZGF0ZVBhcmFtcyE9ImZ1bmN0aW9uInx8YS51cGRhdGVQYXJhbXMoe30se3F1YW50aXplQmFyczowfSl9fWNhdGNoe319ZnVuY3Rpb24gamEoZSl7dHJ5e2NvbnN0IG49bmV3IFNldDtmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGV8fHt9KSl0PT09InNpZ25hbCJ8fHQ9PT0iZHJvbmUifHxBcnJheS5pc0FycmF5KGEpJiZhLnNvbWUocz0+ISFzKSYmbi5hZGQodCk7cmV0dXJuIG59Y2F0Y2h7cmV0dXJuIG5ldyBTZXR9fWZ1bmN0aW9uIFFuKGUsbix0KXtyZXR1cm4gTWF0aC5taW4odCxNYXRoLm1heChuLGUpKX1mdW5jdGlvbiAkbihlKXt0cnl7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpcmV0dXJuIE51bWJlcihlKCkpfHwxMjA7Y29uc3Qgbj1OdW1iZXIoZSk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShuKSYmbj4wP246MTIwfWNhdGNoe3JldHVybiAxMjB9fWZ1bmN0aW9uIGxpKGUsbil7Y29uc3QgdD1lO2xldCBhPSgpPT4kbihuKSxzPXtzaGFwZToic2luZSIsYW1vdW50OjAsZnJlcXVlbmN5Oi41LHN5bmM6ITF9O2NvbnN0IG09dC5jcmVhdGVHYWluKCkscD10LmNyZWF0ZVN0ZXJlb1Bhbm5lcigpLFM9dC5jcmVhdGVHYWluKCk7bS5nYWluLnZhbHVlPTEsUy5nYWluLnZhbHVlPTE7bGV0IFA9bnVsbDtjb25zdCBNPXQuY3JlYXRlR2FpbigpO00uZ2Fpbi52YWx1ZT0wO2xldCBUPW51bGw7bS5jb25uZWN0KHApLHAuY29ubmVjdChTKTtmdW5jdGlvbiBHKCl7aWYoUCl7dHJ5e1Auc3RvcCgpfWNhdGNoe310cnl7UC5kaXNjb25uZWN0KCl9Y2F0Y2h7fVA9bnVsbH10cnl7TS5kaXNjb25uZWN0KCl9Y2F0Y2h7fX1mdW5jdGlvbiBFKCl7VCE9bnVsbCYmKGNsZWFySW50ZXJ2YWwoVCksVD1udWxsKX1mdW5jdGlvbiBMKCl7Y29uc3QgZz1OdW1iZXIocy5mcmVxdWVuY3kpLHU9TnVtYmVyLmlzRmluaXRlKGcpP01hdGgubWF4KC4wMDEsZyk6LjU7cmV0dXJuIHMuc3luYz9NYXRoLm1heCgyMCxNYXRoLm1pbigzMDAsJG4oYSkpKS82MCp1OnV9ZnVuY3Rpb24geCgpe0coKSxFKCk7Y29uc3QgZz1RbihzLmFtb3VudCwwLDEpO2lmKHMuc2hhcGU9PT0ic2FtcGxlSG9sZCJ8fGc8PTFlLTQpe3RyeXtwLnBhbi5zZXRUYXJnZXRBdFRpbWUoMCx0LmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7cC5wYW4udmFsdWU9MH1yZXR1cm59Y29uc3QgdT10LmNyZWF0ZU9zY2lsbGF0b3IoKSxiPXMuc2hhcGU9PT0ic2F3Ij8ic2F3dG9vdGgiOnMuc2hhcGU9PT0idHJpYW5nbGUiPyJ0cmlhbmdsZSI6cy5zaGFwZT09PSJzcXVhcmUiPyJzcXVhcmUiOiJzaW5lIjt1LnR5cGU9Yjtjb25zdCBoPUwoKTt0cnl7dS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoaCx0LmN1cnJlbnRUaW1lKX1jYXRjaHt1LmZyZXF1ZW5jeS52YWx1ZT1ofXRyeXtNLmdhaW4uc2V0VmFsdWVBdFRpbWUoZyx0LmN1cnJlbnRUaW1lKX1jYXRjaHtNLmdhaW4udmFsdWU9Z311LmNvbm5lY3QoTSksTS5jb25uZWN0KHAucGFuKSx1LnN0YXJ0KCksUD11fWZ1bmN0aW9uIE8oKXtHKCksRSgpO2NvbnN0IGc9UW4ocy5hbW91bnQsMCwxKSx1PUwoKSxiPU1hdGgubWF4KDEwLE1hdGgucm91bmQoMWUzL3UpKSxoPSgpPT57Y29uc3QgZj0ocigpKjItMSkqZyx5PXQuY3VycmVudFRpbWU7dHJ5e3AucGFuLnNldFZhbHVlQXRUaW1lKGYseSl9Y2F0Y2h7cC5wYW4udmFsdWU9Zn19O2goKSxUPXNldEludGVydmFsKGgsYil9ZnVuY3Rpb24gdygpe3Muc2hhcGU9PT0ic2FtcGxlSG9sZCI/TygpOngoKX1mdW5jdGlvbiBvKGcpe2NvbnN0IHU9ey4uLnN9O2cmJnR5cGVvZiBnPT0ib2JqZWN0IiYmKGcuc2hhcGUmJih1LnNoYXBlPVN0cmluZyhnLnNoYXBlKSksTnVtYmVyLmlzRmluaXRlKGcuYW1vdW50KSYmKHUuYW1vdW50PVFuKE51bWJlcihnLmFtb3VudCksMCwxKSksTnVtYmVyLmlzRmluaXRlKGcuZnJlcXVlbmN5KSYmKHUuZnJlcXVlbmN5PU1hdGgubWF4KC4wMDEsTnVtYmVyKGcuZnJlcXVlbmN5KSkpLHR5cGVvZiBnLnN5bmM9PSJib29sZWFuIiYmKHUuc3luYz0hIWcuc3luYykpLHM9dSx3KCl9ZnVuY3Rpb24gQyhnKXtpZih0eXBlb2YgZz09ImZ1bmN0aW9uIj9hPSgpPT4kbihnKTphPSgpPT4kbihnKSxzLnN5bmMmJlApe2NvbnN0IHU9TCgpO3RyeXtQLmZyZXF1ZW5jeS5zZXRUYXJnZXRBdFRpbWUodSx0LmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7UC5mcmVxdWVuY3kudmFsdWU9dX19fWZ1bmN0aW9uIGMoKXtpZihzLnNoYXBlIT09InNhbXBsZUhvbGQiKXJldHVybjtjb25zdCBnPVFuKHMuYW1vdW50LDAsMSksdT0ocigpKjItMSkqZyxiPXQuY3VycmVudFRpbWU7dHJ5e3AucGFuLnNldFZhbHVlQXRUaW1lKHUsYil9Y2F0Y2h7cC5wYW4udmFsdWU9dX19ZnVuY3Rpb24gZCgpe0coKSxFKCk7dHJ5e20uZGlzY29ubmVjdCgpfWNhdGNoe310cnl7cC5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtTLmRpc2Nvbm5lY3QoKX1jYXRjaHt9fXJldHVybiB3KCkse2lucHV0Om0sb3V0cHV0OlMsdXBkYXRlUGFyYW1zOm8sdXBkYXRlQnBtUmVmOkMsb25UcmlnZ2VyOmMsZGlzcG9zZTpkfX1mdW5jdGlvbiBRdChlLHt0YXBSZXZlcmJGcm9tOm49Im91dHB1dCIsd2l0aFNlbmQyOnQ9ITB9PXt9KXtjb25zdCBhPWUuY3JlYXRlR2FpbigpO2EuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxLGUuY3VycmVudFRpbWUpO2NvbnN0IHM9bGkoZSwoKT0+QXQoMTIwKSksbT1lLmNyZWF0ZUdhaW4oKTttLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxlLmN1cnJlbnRUaW1lKSxtLmNvbm5lY3QoYSk7Y29uc3QgcD1lLmNyZWF0ZUdhaW4oKTtwLmdhaW4uc2V0VmFsdWVBdFRpbWUoMCxlLmN1cnJlbnRUaW1lKTtjb25zdCBTPWUuY3JlYXRlR2FpbigpO3RyeXtTLmdhaW4uc2V0VmFsdWVBdFRpbWUoMCxlLmN1cnJlbnRUaW1lKX1jYXRjaHtTLmdhaW4udmFsdWU9MH1jb25zdCBQPWUuY3JlYXRlR2FpbigpO3RyeXtQLmdhaW4uc2V0VmFsdWVBdFRpbWUoMCxlLmN1cnJlbnRUaW1lKX1jYXRjaHt9ZnVuY3Rpb24gTSgpe3RyeXtzLm91dHB1dC5jb25uZWN0KG0pfWNhdGNoe319ZnVuY3Rpb24gVChMKXtjb25zdCB4PUx8fChuPT09Im91dHB1dCI/YTpudWxsKTtpZih4KXRyeXt4LmNvbm5lY3QocCl9Y2F0Y2h7fX1mdW5jdGlvbiBHKEwpe2NvbnN0IHg9THx8KG49PT0ib3V0cHV0Ij9hOm51bGwpO2lmKHgpdHJ5e3guY29ubmVjdChTKX1jYXRjaHt9fWZ1bmN0aW9uIEUoKXt2YXIgTDt0cnl7KEw9cy5kaXNwb3NlKT09bnVsbHx8TC5jYWxsKHMpfWNhdGNoe310cnl7bS5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtwLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e1MuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7UC5kaXNjb25uZWN0KCl9Y2F0Y2h7fX1yZXR1cm57b3V0cHV0OmEsYXV0b1BhbjpzLGRyeUJ1czptLHNlbmRSZXZlcmI6cCxzZW5kRGVsYXk6UyxzZW5kQnVzMjp0P1A6bnVsbCx3aXJlUGFuOk0sdGFwUmV2ZXJiOlQsdGFwRGVsYXk6RyxkaXNwb3NlSU86RX19ZnVuY3Rpb24gdWkoZSxuLHQsYSl7dmFyIHM7dHJ5e2lmKCF0KXJldHVybjtjb25zdCBtPXt9O25bYCR7ZX0ucGFuTEZPU2hhcGVgXSE9bnVsbCYmKG0uc2hhcGU9U3RyaW5nKG5bYCR7ZX0ucGFuTEZPU2hhcGVgXSkpLG5bYCR7ZX0ucGFuTW9kZWBdIT1udWxsJiYobS5zaGFwZT1TdHJpbmcobltgJHtlfS5wYW5Nb2RlYF0pKSxuW2Ake2V9LnBhbkxGT0Ftb3VudGBdIT1udWxsJiYobS5hbW91bnQ9bltgJHtlfS5wYW5MRk9BbW91bnRgXSksbltgJHtlfS5wYW5EZXB0aGBdIT1udWxsJiYobS5hbW91bnQ9bltgJHtlfS5wYW5EZXB0aGBdKSxuW2Ake2V9LnBhbkxGT0ZycWV1bmN5YF0hPW51bGwmJihtLmZyZXF1ZW5jeT1uW2Ake2V9LnBhbkxGT0ZycWV1bmN5YF0pLG5bYCR7ZX0ucGFuTEZPRnJlcXVlbmN5YF0hPW51bGwmJihtLmZyZXF1ZW5jeT1uW2Ake2V9LnBhbkxGT0ZyZXF1ZW5jeWBdKSxuW2Ake2V9LnBhbkxGT1N5bmNgXSE9bnVsbCYmKG0uc3luYz0hIW5bYCR7ZX0ucGFuTEZPU3luY2BdKSxPYmplY3Qua2V5cyhtKS5sZW5ndGgmJnQudXBkYXRlUGFyYW1zKG0pLChzPXQudXBkYXRlQnBtUmVmKT09bnVsbHx8cy5jYWxsKHQsKCk9PnR5cGVvZiBhPT0iZnVuY3Rpb24iP2EoKTpBdCgxMjApKX1jYXRjaHt9fWZ1bmN0aW9uIHBpKGUsbix0LGEpe3RyeXtpZighdClyZXR1cm47aWYobltgJHtlfS5yZXZlcmJNaXhgXSE9bnVsbCl7Y29uc3Qgcz1sKE51bWJlcihuW2Ake2V9LnJldmVyYk1peGBdKXx8MCwwLDEpO3RyeXt0LmdhaW4uc2V0VGFyZ2V0QXRUaW1lKHMsYS5jdXJyZW50VGltZSwuMDIpfWNhdGNoe3QuZ2Fpbi52YWx1ZT1zfX1pZihuW2Ake2V9LnNlbmRSZXZlcmJgXSE9bnVsbCl7Y29uc3Qgcz1sKE51bWJlcihuW2Ake2V9LnNlbmRSZXZlcmJgXSl8fDAsMCwxKTt0cnl7dC5nYWluLnNldFRhcmdldEF0VGltZShzLGEuY3VycmVudFRpbWUsLjAyKX1jYXRjaHt0LmdhaW4udmFsdWU9c319fWNhdGNoe319ZnVuY3Rpb24gbWkoZSxuLHQsYSl7dHJ5e2lmKCF0KXJldHVybjtpZihuW2Ake2V9LnNlbmREZWxheWBdIT1udWxsKXtjb25zdCBzPWwoTnVtYmVyKG5bYCR7ZX0uc2VuZERlbGF5YF0pfHwwLDAsMSk7dHJ5e3QuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUocyxhLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7dC5nYWluLnZhbHVlPXN9fX1jYXRjaHt9fWZ1bmN0aW9uIGZpKGUsbix0LGEpe3RyeXtpZighdClyZXR1cm47aWYobltgJHtlfS5zZW5kMmBdIT1udWxsKXtjb25zdCBzPWwoTnVtYmVyKG5bYCR7ZX0uc2VuZDJgXSl8fDAsMCwxKTt0cnl7dC5nYWluLnNldFRhcmdldEF0VGltZShzLGEuY3VycmVudFRpbWUsLjAyKX1jYXRjaHt0LmdhaW4udmFsdWU9c319fWNhdGNoe319ZnVuY3Rpb24gJHQoZSxuLHthdXRvUGFuOnQsc2VuZFJldmVyYjphLHNlbmREZWxheTpzLHNlbmRCdXMyOm0sZ2V0QnBtOnAsYXVkaW9Db250ZXh0OlMsZHJ5QnVzOlAsY29tcGVuc2F0ZURyeUJ5RGVsYXlXZXQ6TT0hMX09e30pe3VpKGUsbix0LHApLFMmJnBpKGUsbixhLFMpLFMmJm1pKGUsbixzLFMpLFMmJmZpKGUsbixtLFMpfWZ1bmN0aW9uIGFuKGUse21heFBvbHlwaG9ueTpuPTh9PXt9KXtsZXQgdD1bXTtmdW5jdGlvbiBhKFApe3QucHVzaChQKX1mdW5jdGlvbiBzKFApe2lmKHQubGVuZ3RoPT09MClyZXR1cm47Y29uc3QgTT10WzBdO3RyeXtjb25zdCBUPSh0eXBlb2YgUD09Im51bWJlciI/UDplLmN1cnJlbnRUaW1lKSs1ZS00LEc9TSYmTS5lbnY/TS5lbnYuZ2FpbjpNJiZNLmVudkdhaW4/TS5lbnZHYWluLmdhaW46bnVsbDtpZihHJiZ0eXBlb2YgRy5jYW5jZWxTY2hlZHVsZWRWYWx1ZXM9PSJmdW5jdGlvbiIpe0cuY2FuY2VsU2NoZWR1bGVkVmFsdWVzKFQpO2NvbnN0IEU9TWF0aC5tYXgoRy52YWx1ZXx8MWUtNCwxZS00KTtHLnNldFZhbHVlQXRUaW1lKEUsVCksRy5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsVCsuMDMpfWZvcihjb25zdCBFIG9mKE09PW51bGw/dm9pZCAwOk0uc291cmNlcyl8fFtdKXRyeXtFLnN0b3AoVCsuMDUpfWNhdGNoe31tKE0sVCsuMDUpfWNhdGNoe319ZnVuY3Rpb24gbShQLE0pe2NvbnN0IFQ9TWF0aC5tYXgoMCxNYXRoLnJvdW5kKChNLWUuY3VycmVudFRpbWUpKjFlMykrMjAwKTtzZXRUaW1lb3V0KCgpPT57dmFyIEc7dHJ5eyhHPVAubm9kZXMpPT1udWxsfHxHLmZvckVhY2goRT0+e3RyeXtFLmRpc2Nvbm5lY3QoKX1jYXRjaHt9fSl9Y2F0Y2h7fXQ9dC5maWx0ZXIoRT0+RSE9PVApfSxUKX1mdW5jdGlvbiBwKCl7dC5sZW5ndGg+biYmcyhlLmN1cnJlbnRUaW1lKX1mdW5jdGlvbiBTKFApe2NvbnN0IE09dHlwZW9mIFA9PSJudW1iZXIiP1A6ZS5jdXJyZW50VGltZTtmb3IoY29uc3QgVCBvZiB0LnNsaWNlKCkpdHJ5e2NvbnN0IEc9VCYmVC5lbnY/VC5lbnYuZ2FpbjpUJiZULmVudkdhaW4/VC5lbnZHYWluLmdhaW46bnVsbDtHJiYoRy5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoTSksRy5zZXRWYWx1ZUF0VGltZShNYXRoLm1heChHLnZhbHVlfHwxZS00LDFlLTQpLE0pLEcuZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LE0rLjAzKSk7Zm9yKGNvbnN0IEUgb2YoVD09bnVsbD92b2lkIDA6VC5zb3VyY2VzKXx8W10pdHJ5e0Uuc3RvcChNKy4wNSl9Y2F0Y2h7fW0oVCxNKy4wNSl9Y2F0Y2h7fX1yZXR1cm57YWN0aXZlVm9pY2VzUmVmOigpPT50LGFkZDphLHN0b3BPbGRlc3Q6cyxzY2hlZHVsZUNsZWFudXA6bSxlbmZvcmNlUG9seXBob255OnAsc3RvcEFsbDpTfX1mdW5jdGlvbiBxbihlLG4pe2NvbnN0IHQ9TWF0aC5tYXgoLjAwMSxOdW1iZXIobil8fDEpLGE9TWF0aC5tYXgoMSxNYXRoLmZsb29yKChlLnNhbXBsZVJhdGV8fDQ4ZTMpKnQpKSxzPWUuY3JlYXRlQnVmZmVyKDEsYSxlLnNhbXBsZVJhdGUpLG09cy5nZXRDaGFubmVsRGF0YSgwKTtmb3IobGV0IHA9MDtwPGE7cCsrKW1bcF09TigpKjItMTtyZXR1cm4gc31mdW5jdGlvbiBRYSgpe2NvbnN0IGU9e2F0dGFjazppKC4wMDEsLjAxKSxkZWNheTppKC4xLC4yNSksc3VzdGFpbjppKDAsLjE1KSxyZWxlYXNlOmkoLjAxLC4wNil9LG49e3N0YXJ0RnJlcTppKDg1LDE2NSksZGVjYXk6aSguMDMsLjA5KX0sdD17YmFzZUZyZXE6aSgzOCw2MiksY2xpY2s6e2VuYWJsZWQ6TigpPC41LGdhaW46aSguMDUsLjI1KX0sdGh1bXA6e2VuYWJsZWQ6TigpPC41LGZyZXE6aSg4MCwxNjApLGdhaW46aSguMDUsLjMpfX0sYT17bG93cGFzc0h6OmkoM2UzLDZlMyksaGlnaHBhc3M6e2VuYWJsZWQ6TigpPC41LGh6OmkoMjAsMzUpfX0scz17d2V0OiExLGh6OmkoNjAsMjUwKX0sbT17bGF5ZXJHYWluczp7Ym9keToxLGNsaWNrOjEsdGh1bXA6MX0saHVtYW5pemU6aSguMywuOCksdGVtcG9CcG06MTIwLHNlY29uZHNQZXJTdGVwOi4xMjUsb3V0cHV0R2FpbjppKC4yLC4zNSl9O3JldHVybntlbnZlbG9wZTplLHBpdGNoRW52Om4sdGltYnJlOnQsZmlsdGVyOmEsaGlnaFBhc3NGaWx0ZXI6cyx2b2ljZVNwZWNpZmljOm19fWZ1bmN0aW9uICRhKCl7Y29uc3QgZT17YXR0YWNrOmkoLjAwMiwuMDEyKSxkZWNheTppKC4yMiwuNSksc3VzdGFpbjppKDAsLjEyKSxyZWxlYXNlOmkoLjA1LC4xNCl9LG49e3N0YXJ0RnJlcTppKDgwLDE0MCksZGVjYXk6aSguMDUsLjEyKX0sdD17YmFzZUZyZXE6aSgzNiw1OCksY2xpY2s6e2VuYWJsZWQ6TigpPC4zNSxnYWluOmkoLjAzLC4xOCl9LHRodW1wOntlbmFibGVkOk4oKTwuNixmcmVxOmkoNzAsMTQwKSxnYWluOmkoLjA1LC4yOCl9fSxhPXtsb3dwYXNzSHo6aSgxNjAwLDM4MDApLGhpZ2hwYXNzOntlbmFibGVkOk4oKTwuNCxoejppKDE4LDMyKX19LHM9e3dldDohMSxoejppKDYwLDIyMCl9LG09e2xheWVyR2FpbnM6e2JvZHk6MSxjbGljazoxLHRodW1wOjF9LGh1bWFuaXplOmkoLjMsLjgpLHRlbXBvQnBtOjEyMCxzZWNvbmRzUGVyU3RlcDouMTI1LG91dHB1dEdhaW46aSguMTgsLjMyKX0scD17aW5wdXRCb29zdDoxLjIscHJlRGVsYXlTZWNSYW5nZTpbLjAyLC4wNF0sd2V0VHJpbTouNixnZW5lcmF0aXZlOntudW1CYW5kczp7bWluOjIsbWF4OjR9LGJhc2VIejp7bWluOjYwLG1heDoxNjB9LHJhdGlvczpbMSw0LzMsMy8yLDJdLG9jdGF2ZXM6WzAsMSwyXSxxOnttaW46MyxtYXg6OH0sZ2Fpbjp7bWluOi4zLG1heDouNn0sY29tYkZlZWRiYWNrOnttaW46LjM1LG1heDouNX0sY29tYkRlbGF5TXVsdDp7bWluOjIsbWF4Ojh9LGRhbXBNdWx0aXBsaWVyOjJ9fTtyZXR1cm57ZW52ZWxvcGU6ZSxwaXRjaEVudjpuLHRpbWJyZTp0LGZpbHRlcjphLGhpZ2hQYXNzRmlsdGVyOnMsdm9pY2VTcGVjaWZpYzptLHJlc29uRng6cH19ZnVuY3Rpb24gcGEoZSxuKXtjb25zdCB0PWl0KGUpO2lmKCFuKXJldHVybiB0O2Zvcihjb25zdCBhIG9mWyJlbnZlbG9wZSIsInBpdGNoRW52IiwidGltYnJlIiwiZmlsdGVyIiwiaGlnaFBhc3NGaWx0ZXIiLCJ2b2ljZVNwZWNpZmljIl0pblthXSYmKHRbYV09ey4uLnRbYV0sLi4ublthXX0pO3JldHVybiB0LmVudmVsb3BlLmF0dGFjaz1sKHQuZW52ZWxvcGUuYXR0YWNrLC4wMDEsLjAxKSx0LmVudmVsb3BlLmRlY2F5PWwodC5lbnZlbG9wZS5kZWNheSwuMTIsLjM4KSx0LmVudmVsb3BlLnN1c3RhaW49bCh0LmVudmVsb3BlLnN1c3RhaW4sMCwuMTUpLHQuZW52ZWxvcGUucmVsZWFzZT1sKHQuZW52ZWxvcGUucmVsZWFzZSwuMDMsLjEyKSx0LnBpdGNoRW52LnN0YXJ0RnJlcT1sKHQucGl0Y2hFbnYuc3RhcnRGcmVxLDc1LDIwMCksdC5waXRjaEVudi5kZWNheT1sKHQucGl0Y2hFbnYuZGVjYXksLjAyLC4xMiksdC50aW1icmUuYmFzZUZyZXE9bCh0LnRpbWJyZS5iYXNlRnJlcSwzMCw4MCksdC5maWx0ZXIubG93cGFzc0h6PWwodC5maWx0ZXIubG93cGFzc0h6LDgwMCwxMmUzKSx0LmZpbHRlci5oaWdocGFzcyYmKHQuZmlsdGVyLmhpZ2hwYXNzLmh6PWwodC5maWx0ZXIuaGlnaHBhc3MuaHosMTUsODApKSx0LmhpZ2hQYXNzRmlsdGVyJiYodC5oaWdoUGFzc0ZpbHRlci5oej1sKHQuaGlnaFBhc3NGaWx0ZXIuaHosNjAsMjUwKSx0LmhpZ2hQYXNzRmlsdGVyLndldD0hIXQuaGlnaFBhc3NGaWx0ZXIud2V0KSx0LnZvaWNlU3BlY2lmaWMuaHVtYW5pemU9bCh0LnZvaWNlU3BlY2lmaWMuaHVtYW5pemU/Py41LDAsMSksdC52b2ljZVNwZWNpZmljLmxheWVyR2FpbnMuYm9keT1sKHQudm9pY2VTcGVjaWZpYy5sYXllckdhaW5zLmJvZHk/PzEsMCwxKSx0LnZvaWNlU3BlY2lmaWMubGF5ZXJHYWlucy5jbGljaz1sKHQudm9pY2VTcGVjaWZpYy5sYXllckdhaW5zLmNsaWNrPz8xLDAsMSksdC52b2ljZVNwZWNpZmljLmxheWVyR2FpbnMudGh1bXA9bCh0LnZvaWNlU3BlY2lmaWMubGF5ZXJHYWlucy50aHVtcD8/MSwwLDEpLHQudm9pY2VTcGVjaWZpYy50ZW1wb0JwbT1ndCh0LnZvaWNlU3BlY2lmaWMudGVtcG9CcG0/PyRlLmRlZmF1bHRCcG0pLHQudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcD1sKHQudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcD8/LjEyNSwuMDIsMSksdC52b2ljZVNwZWNpZmljLm91dHB1dEdhaW49bCh0LnZvaWNlU3BlY2lmaWMub3V0cHV0R2Fpbj8/LjI4LDAsMSksdH1mdW5jdGlvbiBoaShlLG4sdD17fSl7Y29uc3QgYT0ia2ljayIscz17YXR0YWNrOiJlbnZlbG9wZS5hdHRhY2siLGRlY2F5OiJlbnZlbG9wZS5kZWNheSIsc3VzdGFpbjoiZW52ZWxvcGUuc3VzdGFpbiIscmVsZWFzZToiZW52ZWxvcGUucmVsZWFzZSIscGl0Y2hTdGFydDoicGl0Y2hFbnYuc3RhcnRGcmVxIixwaXRjaEVudkRlY2F5OiJwaXRjaEVudi5kZWNheSIsYmFzZUZyZXE6InRpbWJyZS5iYXNlRnJlcSIsImVudmVsb3BlLmF0dGFjayI6ImVudmVsb3BlLmF0dGFjayIsImVudmVsb3BlLmRlY2F5IjoiZW52ZWxvcGUuZGVjYXkiLCJlbnZlbG9wZS5zdXN0YWluIjoiZW52ZWxvcGUuc3VzdGFpbiIsImVudmVsb3BlLnJlbGVhc2UiOiJlbnZlbG9wZS5yZWxlYXNlIiwicGl0Y2hFbnYuc3RhcnRGcmVxIjoicGl0Y2hFbnYuc3RhcnRGcmVxIiwicGl0Y2hFbnYuZGVjYXkiOiJwaXRjaEVudi5kZWNheSIsInRpbWJyZS5iYXNlRnJlcSI6InRpbWJyZS5iYXNlRnJlcSIsImZpbHRlci5sb3dwYXNzSHoiOiJmaWx0ZXIubG93cGFzc0h6IiwiZmlsdGVyLmhpZ2hwYXNzLmh6IjoiZmlsdGVyLmhpZ2hwYXNzLmh6IixoaWdoUGFzc0ZpbHRlcldldDoiaGlnaFBhc3NGaWx0ZXIud2V0IixoaWdoUGFzc0ZpbHRlckh6OiJoaWdoUGFzc0ZpbHRlci5oeiIsInZvaWNlU3BlY2lmaWMuaHVtYW5pemUiOiJ2b2ljZVNwZWNpZmljLmh1bWFuaXplIiwidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCI6InZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXAiLCJ2b2ljZVNwZWNpZmljLnRlbXBvQnBtIjoidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSIsInZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6InZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiJ9LHtvdXRwdXQ6bSxhdXRvUGFuOnAsZHJ5QnVzOlMsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHNlbmRCdXMyOlQsd2lyZVBhbjpHLHRhcFJldmVyYjpFLHRhcERlbGF5OkwsZGlzcG9zZUlPOnh9PVF0KGUse30pLE89WWUodCk9PT0iQiI/JGEoKTpRYSgpO2xldCB3PXBhKE8sbik7Y29uc3Qgbz0oKT0+QXQody52b2ljZVNwZWNpZmljLnRlbXBvQnBtKSxDPSgpPT5GdCh3LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXB8fC4xMjUpO3RyeXtHKCl9Y2F0Y2h7fXRyeXtFKG0pfWNhdGNoe310cnl7TChtKX1jYXRjaHt9Y29uc3QgYz00LGQ9YW4oZSx7bWF4UG9seXBob255OmN9KTtmdW5jdGlvbiBnKCl7Y29uc3Qgaz1lLmNyZWF0ZUdhaW4oKTtyZXR1cm4gay5nYWluLnNldFZhbHVlQXRUaW1lKDEsZS5jdXJyZW50VGltZSksa31jb25zdCB1PShrLEEpPT5kLnNjaGVkdWxlQ2xlYW51cChrLEEpO2Z1bmN0aW9uIGIoayxBKXtjb25zdCB6PSh0eXBlb2YgQT09Im51bWJlciI/QTplLmN1cnJlbnRUaW1lKSs1ZS00O3RyeXtrLm1peC5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyh6KTtjb25zdCBVPWsubWl4LmdhaW4udmFsdWU7ay5taXguZ2Fpbi5zZXRWYWx1ZUF0VGltZShVLHopLGsubWl4LmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LHorLjAzKX1jYXRjaHt9Y29uc3QgRD16Ky4wNTtmb3IoY29uc3QgVSBvZiBrLnNvdXJjZXMpdHJ5e1Uuc3RvcChEKX1jYXRjaHt9dShrLEQpfWZ1bmN0aW9uIGgoKXtkLmFjdGl2ZVZvaWNlc1JlZigpLmxlbmd0aD49YyYmZC5zdG9wT2xkZXN0KGUuY3VycmVudFRpbWUpfWNvbnN0IGY9az0+e3RyeXtjb25zdCBBPXQmJnQuZXZlbnRzO0EmJkEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOmt9KSl9Y2F0Y2h7fX07ZnVuY3Rpb24geShrLHthY2NlbnQ6QT0hMSxzdXN0YWluU3RlcHM6ej0wLHZlbG9jaXR5OkQ9MX09e30pe3ZhciBOZTtjb25zdCBVPXR5cGVvZiBrPT0ibnVtYmVyIj9rOmUuY3VycmVudFRpbWUrLjAwMSxSPXcsST1sKFIudm9pY2VTcGVjaWZpYy5odW1hbml6ZSwwLDEpLGo9QT09PSJ3ZWFrIixzZT1BPT09ITA7Zih7dGltZTpVLGFjY2VudDpBLHN1c3RhaW5TdGVwczp6LHZlbG9jaXR5OkR9KTtsZXQgaGU9UWUoUi5lbnZlbG9wZS5hdHRhY2ssaSguMDIsLjAzKSxJKTtjb25zdCBlZT1RZShSLmVudmVsb3BlLmRlY2F5LGkoLjA1LC4wOCksSSk7bGV0IFg9dWEoZWUsbygpKTtjb25zdCBjZT1SLmVudmVsb3BlLnN1c3RhaW47bGV0IEs9dWEoUi5lbnZlbG9wZS5yZWxlYXNlLG8oKSk7aGU9RXQoaGUsdCksWD1JdChYLHQpLEs9anQoSyx0KTtjb25zdCBhZT1RZShSLnBpdGNoRW52LmRlY2F5LC4wNSxJKSxmZT11YShhZSxvKCkpLG1lPVIuZmlsdGVyLmxvd3Bhc3NIejtsZXQgcGU9UWUobWUsaSguMDMsLjA1KSxJKSxvZT1sKEQsMCwxKTtpZihzZSl7Y29uc3QgTWU9aSgxLDIpO29lKj1idChNZSkscGUqPTEuMDZ9aiYmKG9lKj0uOCxwZSo9aSguOSwuOTUpKSxwZSo9Ljk4Ky4wNCpvZTtjb25zdCBCPU1hdGgubWF4KDAseikqQygpO2goKTtjb25zdCB2PWcoKSxGPVtdLFc9W3ZdLFk9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtZLnR5cGU9Imxvd3Bhc3MiLFkuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGwocGUsMjAwLDEyZTMpLFUpLFkuUS5zZXRWYWx1ZUF0VGltZSguOSxVKSxXLnB1c2goWSk7bGV0IEo9djtpZihKLmNvbm5lY3QoWSksSj1ZLFIuZmlsdGVyLmhpZ2hwYXNzJiZSLmZpbHRlci5oaWdocGFzcy5lbmFibGVkKXtjb25zdCBNZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO01lLnR5cGU9ImhpZ2hwYXNzIixNZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobChSLmZpbHRlci5oaWdocGFzcy5oeiwxNSw4MCksVSksTWUuUS5zZXRWYWx1ZUF0VGltZSguNzA3LFUpLFcucHVzaChNZSksSi5jb25uZWN0KE1lKSxKPU1lfWNvbnN0IGllPWUuY3JlYXRlR2FpbigpLHVlPWwoUi52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4yOCwwLDEpO2llLmdhaW4uc2V0VmFsdWVBdFRpbWUob2UqdWUsVSksVy5wdXNoKGllKSxKLmNvbm5lY3QoaWUpO3RyeXsoTmU9cC5vblRyaWdnZXIpPT1udWxsfHxOZS5jYWxsKHApfWNhdGNoe31pZS5jb25uZWN0KHAuaW5wdXQpO3RyeXtpZS5jb25uZWN0KFQpfWNhdGNoe310cnl7aWUuY29ubmVjdChNKX1jYXRjaHt9aWYoUi5oaWdoUGFzc0ZpbHRlciYmUi5oaWdoUGFzc0ZpbHRlci53ZXQpe2NvbnN0IE1lPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7TWUudHlwZT0iaGlnaHBhc3MiLE1lLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShsKFIuaGlnaFBhc3NGaWx0ZXIuaHosNjAsMjUwKSxVKSxNZS5RLnNldFZhbHVlQXRUaW1lKC43MDcsVSksVy5wdXNoKE1lKSxwLm91dHB1dC5jb25uZWN0KE1lKSxNZS5jb25uZWN0KG0pfWVsc2UgcC5vdXRwdXQuY29ubmVjdChtKTtjb25zdCBuZT1lLmNyZWF0ZU9zY2lsbGF0b3IoKTtuZS50eXBlPSJzaW5lIjtjb25zdCB0ZT1lLmNyZWF0ZUdhaW4oKSxaPVUraGUscmU9WitYLGRlPXJlK0IsYmU9ZGUrSyxTZT16PjA/TWF0aC5tYXgoLjE4LGNlKTpjZSx6ZT1sKFIudm9pY2VTcGVjaWZpYy5sYXllckdhaW5zLmJvZHk/PzEsMCwxKTt0ZS5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsVSksdGUuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh6ZSxaKSx0ZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKFNlKnplLHJlKSx0ZS5nYWluLnNldFZhbHVlQXRUaW1lKFNlKnplLGRlKSx0ZS5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMWUtNCxiZSk7Y29uc3QgQmU9bChSLnBpdGNoRW52LnN0YXJ0RnJlcSxSLnRpbWJyZS5iYXNlRnJlcSsxLDVlMyk7bmUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKEJlLFUpO2NvbnN0IFJlPVUrZmU7aWYobmUuZnJlcXVlbmN5LmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoTWF0aC5tYXgoMjAsUi50aW1icmUuYmFzZUZyZXEpLFJlKSxuZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoTWF0aC5tYXgoMjAsUi50aW1icmUuYmFzZUZyZXEpLFJlKzFlLTQpLG5lLmNvbm5lY3QodGUpLHRlLmNvbm5lY3QodiksRi5wdXNoKG5lKSxXLnB1c2godGUpLChSLnRpbWJyZS5jbGljay5lbmFibGVkfHxzZSkmJlIudm9pY2VTcGVjaWZpYy5sYXllckdhaW5zLmNsaWNrPjAmJlIudGltYnJlLmNsaWNrLmdhaW4+MCl7Y29uc3QgTWU9bChoZSouOCwuMDAxNSwuMDE1KSxrZT1NYXRoLm1heCgxLE1hdGguZmxvb3IoZS5zYW1wbGVSYXRlKihNZSsuMDEpKSksX2U9ZS5jcmVhdGVCdWZmZXIoMSxrZSxlLnNhbXBsZVJhdGUpLGxlPV9lLmdldENoYW5uZWxEYXRhKDApO2ZvcihsZXQgSGU9MDtIZTxrZTtIZSsrKWxlW0hlXT1OKCkqMi0xO2NvbnN0IFRlPWUuY3JlYXRlQnVmZmVyU291cmNlKCk7VGUuYnVmZmVyPV9lO2NvbnN0IGdlPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Z2UudHlwZT0iYmFuZHBhc3MiLGdlLlEuc2V0VmFsdWVBdFRpbWUoOCxVKSxnZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobChwZSouOCwxMjAwLDZlMyksVSk7Y29uc3Qgd2U9ZS5jcmVhdGVHYWluKCksT2U9bChSLnRpbWJyZS5jbGljay5nYWluKlIudm9pY2VTcGVjaWZpYy5sYXllckdhaW5zLmNsaWNrLDAsMSk7d2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxZS00LFUpLHdlLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoT2UsVSsuMDAxKSx3ZS5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMWUtNCxVK01lKSxUZS5jb25uZWN0KGdlKSxnZS5jb25uZWN0KHdlKSx3ZS5jb25uZWN0KHYpLFRlLnN0YXJ0KFUpLFRlLnN0b3AoVStNZSsuMDIpLEYucHVzaChUZSksVy5wdXNoKGdlLHdlKX1pZihSLnRpbWJyZS50aHVtcC5lbmFibGVkJiZSLnZvaWNlU3BlY2lmaWMubGF5ZXJHYWlucy50aHVtcD4wJiZSLnRpbWJyZS50aHVtcC5nYWluPjApe2NvbnN0IE1lPWUuY3JlYXRlT3NjaWxsYXRvcigpO01lLnR5cGU9InNpbmUiLE1lLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShsKFIudGltYnJlLnRodW1wLmZyZXEsNjAsMjQwKSxVKTtjb25zdCBrZT1lLmNyZWF0ZUdhaW4oKSxfZT1sKFIudGltYnJlLnRodW1wLmdhaW4qUi52b2ljZVNwZWNpZmljLmxheWVyR2FpbnMudGh1bXAsMCwxKTtrZS5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsVSksa2UuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShfZSxVK2woaGUqLjYsLjAwMSwuMDIpKSxrZS5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMWUtNCxVK2woWCouNSwuMDQsLjIpKTtjb25zdCBsZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO2xlLnR5cGU9ImJhbmRwYXNzIixsZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobChSLnRpbWJyZS50aHVtcC5mcmVxLDYwLDI0MCksVSksbGUuUS5zZXRWYWx1ZUF0VGltZSgxMCxVKSxNZS5jb25uZWN0KGtlKSxrZS5jb25uZWN0KGxlKSxsZS5jb25uZWN0KHYpLEYucHVzaChNZSksVy5wdXNoKGtlLGxlKSxNZS5zdGFydChVKSxNZS5zdG9wKGJlKy4wNSl9bmUuc3RhcnQoVSk7Y29uc3QgdmU9YmUrLjA2O25lLnN0b3AodmUpO2NvbnN0IEdlPXttaXg6dixzb3VyY2VzOkYsbm9kZXM6V307ZC5hZGQoR2UpLHUoR2UsdmUpfWZ1bmN0aW9uIF8oayl7Y29uc3QgQT10eXBlb2Ygaz09Im51bWJlciI/azplLmN1cnJlbnRUaW1lO2QuYWN0aXZlVm9pY2VzUmVmKCkuc2xpY2UoKS5mb3JFYWNoKHo9PmIoeixBKSl9ZnVuY3Rpb24gSChrKXtsZXQgQT17fTtpZighKGsmJnR5cGVvZiBrPT0ib2JqZWN0IikpcmV0dXJuO2NvbnN0IEQ9T2JqZWN0LmtleXMoaykuc29tZShSPT5SLmluY2x1ZGVzKCIuIikpLFU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGssYSk7aWYoRClBPXN0KGEsayxzKTtlbHNlIGlmKFUmJnR5cGVvZiBrW2FdPT0ib2JqZWN0Iil7Y29uc3QgUj1xdChrW2FdLFthXSk7QT1zdChhLFIscyl9ZWxzZSBBPWs7dz1wYSh3LEF8fHt9KSwkdChhLGt8fHt9LHthdXRvUGFuOnAsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHNlbmRCdXMyOlQsZ2V0QnBtOm8sYXVkaW9Db250ZXh0OmV9KX1mdW5jdGlvbiBWKGspe2NvbnN0IEE9a3x8WWUodCk7dz1wYShBPT09IkIiPyRhKCk6UWEoKSx7fSk7Y29uc3Qgej1hdChhLHcscyk7cmV0dXJue25lc3RlZDppdCh3KSxmbGF0Onp9fWZ1bmN0aW9uIFEoKXtyZXR1cm4gYXQoYSx3LHMpfWZ1bmN0aW9uICQoKXt0cnl7eCgpfWNhdGNoe319Y29uc3QgcT17b3V0cHV0Om0sc2VuZEJ1czI6VCxzZW5kUmV2ZXJiOlAsc2VuZERlbGF5Ok0sdHJpZ2dlcjp5LHN0b3A6Xyx1cGRhdGVQYXJhbXM6SCxyZWdlbmVyYXRlUGFyYW1zOlYsZ2V0RmxhdFBhcmFtczpRLGRpc3Bvc2U6JH07cmV0dXJuIHEuc2lkZT0oKT0+WWUodCkscS5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwPTAscX1mdW5jdGlvbiBDYSgpe2NvbnN0IGU9TigpPC4zLG49e2F0dGFjazppKC4wMDMsLjAxMiksZGVjYXlDbG9zZWQ6ZT9pKC4wMDQsLjAxOCk6aSguMDEyLC4wNyksZGVjYXlPcGVuOmU/aSguMSwuMjgpOmkoLjEyLC4zNSksc3VzdGFpbjppKDAsLjEpLHJlbGVhc2U6ZT9pKC4wMDUsLjAyNSk6aSguMDEsLjA0KX0sdD17bW9kZToibm9pc2UifSxhPXtoaWdocGFzc0h6OmkoNTIwMCw4MjAwKSxiYW5kcGFzczp7ZW5hYmxlZDpOKCk8LjYsY2VudGVySHo6aSg4ZTMsMTJlMykscTppKDEuNSw0LjUpfX0scz17aHVtYW5pemU6aSguMzUsLjg1KSx0ZW1wb0JwbToxMjAsc2Vjb25kc1BlclN0ZXA6LjEyNSxtZXRhbGxpY1JhdGlvQmFzZToxLHNob3J0TW9kZTplfTtyZXR1cm57ZW52ZWxvcGU6bix0aW1icmU6dCxmaWx0ZXI6YSx2b2ljZVNwZWNpZmljOnN9fWZ1bmN0aW9uIFVhKCl7Y29uc3QgZT1OKCk8LjM1LG49e2F0dGFjazppKC4wMDMsLjAxMiksZGVjYXlDbG9zZWQ6ZT9pKC4wMDQsLjAxNik6aSguMDEsLjA2KSxkZWNheU9wZW46ZT9pKC4xLC4yNCk6aSguMSwuMjgpLHN1c3RhaW46aSgwLC4wOCkscmVsZWFzZTplP2koLjAwNSwuMDIyKTppKC4wMSwuMDM1KX0sdD17bW9kZToibm9pc2UifSxhPXtoaWdocGFzc0h6OmkoNmUzLDFlNCksYmFuZHBhc3M6e2VuYWJsZWQ6TigpPC41LGNlbnRlckh6OmkoOWUzLDEzZTMpLHE6aSgxLjIsMy41KX19LHM9e2h1bWFuaXplOmkoLjM1LC44NSksdGVtcG9CcG06MTIwLHNlY29uZHNQZXJTdGVwOi4xMjUsbWV0YWxsaWNSYXRpb0Jhc2U6MSxzaG9ydE1vZGU6ZX0sbT17aW5wdXRCb29zdDoxLHByZURlbGF5U2VjUmFuZ2U6Wy4wMSwuMDI1XSx3ZXRUcmltOi41LGdlbmVyYXRpdmU6e251bUJhbmRzOnttaW46NixtYXg6MTJ9LGJhc2VIejp7bWluOjUwMCxtYXg6MTJlM30scmF0aW9zOlsxLE1hdGguU1FSVDIsNS80LDMvMiwyXSxvY3RhdmVzOlstNiwtNSwtNCwtM10scTp7bWluOjEuMixtYXg6MTB9LGdhaW46e21pbjouMyxtYXg6LjV9LGNvbWJGZWVkYmFjazp7bWluOi4yLG1heDouOH0sY29tYkRlbGF5TXVsdDp7bWluOjIsbWF4OjV9LGRhbXBNdWx0aXBsaWVyOjJ9fTtyZXR1cm57ZW52ZWxvcGU6bix0aW1icmU6dCxmaWx0ZXI6YSx2b2ljZVNwZWNpZmljOnMscmVzb25GeDptfX1mdW5jdGlvbiBtYShlLG4pe2NvbnN0IHQ9aXQoZSk7aWYoIW4pcmV0dXJuIHQ7Zm9yKGNvbnN0IGEgb2ZbImVudmVsb3BlIiwidGltYnJlIiwiZmlsdGVyIiwidm9pY2VTcGVjaWZpYyJdKW5bYV0mJih0W2FdPXsuLi50W2FdLC4uLm5bYV19KTtyZXR1cm4gdC5lbnZlbG9wZS5hdHRhY2s9bCh0LmVudmVsb3BlLmF0dGFjaywuMDAzLC4wMTIpLHQuZW52ZWxvcGUuZGVjYXlDbG9zZWQ9bCh0LmVudmVsb3BlLmRlY2F5Q2xvc2VkLC4wMDQsLjA4KSx0LmVudmVsb3BlLmRlY2F5T3Blbj1sKHQuZW52ZWxvcGUuZGVjYXlPcGVuLC4xLC40KSx0LmVudmVsb3BlLnN1c3RhaW49bCh0LmVudmVsb3BlLnN1c3RhaW4sMCwuMSksdC5lbnZlbG9wZS5yZWxlYXNlPWwodC5lbnZlbG9wZS5yZWxlYXNlLC4wMDUsLjA0KSx0LmZpbHRlci5oaWdocGFzc0h6PWwodC5maWx0ZXIuaGlnaHBhc3NIeiw1ZTMsMWU0KSx0LmZpbHRlci5iYW5kcGFzcyYmKHQuZmlsdGVyLmJhbmRwYXNzLmNlbnRlckh6PWwodC5maWx0ZXIuYmFuZHBhc3MuY2VudGVySHosN2UzLDE0ZTMpLHQuZmlsdGVyLmJhbmRwYXNzLnE9bCh0LmZpbHRlci5iYW5kcGFzcy5xPz8yLC41LDIwKSksdC52b2ljZVNwZWNpZmljLmh1bWFuaXplPWwodC52b2ljZVNwZWNpZmljLmh1bWFuaXplPz8uNiwwLDEpLHQudm9pY2VTcGVjaWZpYy50ZW1wb0JwbT1ndCh0LnZvaWNlU3BlY2lmaWMudGVtcG9CcG0/PyRlLmRlZmF1bHRCcG0pLHQudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcD1sKHQudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcD8/LjEyNSwuMDIsMSksdC52b2ljZVNwZWNpZmljLm1ldGFsbGljUmF0aW9CYXNlPWwodC52b2ljZVNwZWNpZmljLm1ldGFsbGljUmF0aW9CYXNlPz8xLC44LDEuMiksdH1mdW5jdGlvbiBkaShlLG4sdD17fSl7Y29uc3QgYT0iaGloYXQiLHM9e2F0dGFjazoiZW52ZWxvcGUuYXR0YWNrIixjbG9zZWREZWNheToiZW52ZWxvcGUuZGVjYXlDbG9zZWQiLG9wZW5EZWNheToiZW52ZWxvcGUuZGVjYXlPcGVuIixzdXN0YWluOiJlbnZlbG9wZS5zdXN0YWluIixyZWxlYXNlOiJlbnZlbG9wZS5yZWxlYXNlIixmaWx0ZXJDdXRvZmY6ImZpbHRlci5oaWdocGFzc0h6IiwiZW52ZWxvcGUuYXR0YWNrIjoiZW52ZWxvcGUuYXR0YWNrIiwiZW52ZWxvcGUuZGVjYXlDbG9zZWQiOiJlbnZlbG9wZS5kZWNheUNsb3NlZCIsImVudmVsb3BlLmRlY2F5T3BlbiI6ImVudmVsb3BlLmRlY2F5T3BlbiIsImVudmVsb3BlLnN1c3RhaW4iOiJlbnZlbG9wZS5zdXN0YWluIiwiZW52ZWxvcGUucmVsZWFzZSI6ImVudmVsb3BlLnJlbGVhc2UiLCJmaWx0ZXIuaGlnaHBhc3NIeiI6ImZpbHRlci5oaWdocGFzc0h6IiwiZmlsdGVyLmJhbmRwYXNzLmNlbnRlckh6IjoiZmlsdGVyLmJhbmRwYXNzLmNlbnRlckh6IiwiZmlsdGVyLmJhbmRwYXNzLnEiOiJmaWx0ZXIuYmFuZHBhc3MucSIsInZvaWNlU3BlY2lmaWMuaHVtYW5pemUiOiJ2b2ljZVNwZWNpZmljLmh1bWFuaXplIiwidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSI6InZvaWNlU3BlY2lmaWMudGVtcG9CcG0iLCJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjoidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCJ9LHtvdXRwdXQ6bSxhdXRvUGFuOnAsZHJ5QnVzOlMsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHNlbmRCdXMyOlQsd2lyZVBhbjpHLHRhcFJldmVyYjpFLHRhcERlbGF5OkwsZGlzcG9zZUlPOnh9PVF0KGUse30pO3RyeXttLmdhaW4uc2V0VmFsdWVBdFRpbWUoLjAyLGUuY3VycmVudFRpbWUpfWNhdGNoe31jb25zdCBPPVllKHQpPT09IkIiP1VhKCk6Q2EoKTtsZXQgdz1tYShPLG4pO2NvbnN0IG89KCk9PkF0KHcudm9pY2VTcGVjaWZpYy50ZW1wb0JwbSksYz1hbihlLHttYXhQb2x5cGhvbnk6OH0pO3RyeXtHKCl9Y2F0Y2h7fXRyeXtFKG0pfWNhdGNoe310cnl7TChtKX1jYXRjaHt9Y29uc3QgZD0ocSxrKT0+Yy5zY2hlZHVsZUNsZWFudXAocSxrKTtmdW5jdGlvbiBnKHEsayl7Y29uc3QgQT0odHlwZW9mIGs9PSJudW1iZXIiP2s6ZS5jdXJyZW50VGltZSkrNWUtNDt0cnl7cS5lbnZHYWluLmdhaW4uY2FuY2VsU2NoZWR1bGVkVmFsdWVzKEEpO2NvbnN0IEQ9TWF0aC5tYXgocS5lbnZHYWluLmdhaW4udmFsdWUsMWUtNCk7cS5lbnZHYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoRCxBKSxxLmVudkdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsQSsuMDMpfWNhdGNoe31jb25zdCB6PUErLjA1O2Zvcihjb25zdCBEIG9mIHEuc291cmNlcyl0cnl7RC5zdG9wKHopfWNhdGNoe31kKHEseil9ZnVuY3Rpb24gdSgpe2Zvcihjb25zdCBxIG9mIGMuYWN0aXZlVm9pY2VzUmVmKCkuc2xpY2UoKSlxLmlzT3BlbiYmZyhxLGUuY3VycmVudFRpbWUpfWZ1bmN0aW9uIGIoKXtjb25zdCBxPWUuY3JlYXRlR2FpbigpO3JldHVybiBxLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxlLmN1cnJlbnRUaW1lKSxxfWNvbnN0IGg9cT0+e3RyeXtjb25zdCBrPXQmJnQuZXZlbnRzO2smJmsuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOnF9KSl9Y2F0Y2h7fX07ZnVuY3Rpb24gZihxLHthY2NlbnQ6az0hMSxzdXN0YWluU3RlcHM6QT0wLHZlbG9jaXR5Ono9MSx2YXJpYW50OkQ9bnVsbCxzdGFydE9mZnNldFNlYzpVPW51bGx9PXt9KXt2YXIgQWU7Y29uc3QgUj10eXBlb2YgcT09Im51bWJlciI/cTplLmN1cnJlbnRUaW1lKy4wMDE7bGV0IEk9MDt0cnl7RD09PSJsb29zZSImJlU9PW51bGw/ST1pKC0uMDA2LC4wMTIpOnR5cGVvZiBVPT0ibnVtYmVyIiYmaXNGaW5pdGUoVSkmJihJPVUpfWNhdGNoe31jb25zdCBqPVIrSSxzZT13LGhlPWwoc2Uudm9pY2VTcGVjaWZpYy5odW1hbml6ZSwwLDEpLGVlPWs9PT0id2VhayIsWD1rPT09ITAsY2U9IWVlJiYoWHx8QT4wKTt0cnl7aWYoRD09PSJjbGljayImJihEPSJjbGlja3kiKSxEIT09ImNsaWNreSImJkQhPT0idWx0cmEiJiZEIT09Imxvb3NlIil7Y29uc3QgdmU9TigpO3ZlPDEvMz9EPSJjbGlja3kiOnZlPDIvMz9EPSJ1bHRyYSI6RD0ibG9vc2UifX1jYXRjaHt9Y2V8fHUoKSxoKHt0aW1lOmosYWNjZW50Omssc3VzdGFpblN0ZXBzOkEsdmVsb2NpdHk6eixpc09wZW46Y2V9KTtsZXQgSz1RZShzZS5lbnZlbG9wZS5hdHRhY2ssaSguMDIsLjAzKSxoZSk7Y29uc3QgYWU9Y2U/c2UuZW52ZWxvcGUuZGVjYXlPcGVuOnNlLmVudmVsb3BlLmRlY2F5Q2xvc2VkLGZlPVFlKGFlLGkoLjA1LC4xKSxoZSk7bGV0IG1lPWZuKGZlLG8oKSk7Y29uc3QgcGU9c2UuZW52ZWxvcGUuc3VzdGFpbjtsZXQgb2U9Zm4oc2UuZW52ZWxvcGUucmVsZWFzZSxvKCkpO0s9RXQoSyx0KSxtZT1JdChtZSx0KSxvZT1qdChvZSx0KTtjb25zdCBCPS4wNyx2PS4yMixGPS4wMzU7bWU9TWF0aC5taW4obWUsY2U/djpCKSxvZT1NYXRoLm1pbihvZSxGKTtsZXQgVz1zZS5maWx0ZXIuaGlnaHBhc3NIejtXPVFlKFcsaSguMDUsLjA4KSxoZSksZWUmJihXKj1pKC45LC45NSkpO2xldCBZPWwoeiwwLDEpO1gmJihZKj1idChpKDEsMikpKSxlZSYmKFkqPS44KTt0cnl7RD09PSJjbGlja3kiP1kqPTQ6RD09PSJ1bHRyYSI/WSo9NC41OkQ9PT0ibG9vc2UiJiYoWSo9Ljk1KX1jYXRjaHt9WT1NYXRoLm1pbihZLDEuNCksVyo9Ljk4Ky4wNCpZO3RyeXtpZihEPT09ImNsaWNreSIpe2NvbnN0IHZlPWZuKGkoLjAwNCwuMDEyKSxvKCkpLEdlPWZuKGkoLjAwNCwuMDEpLG8oKSk7Sz1NYXRoLm1heCguMDAxNSxNYXRoLm1pbiguMDAzNSxLKi42KSksbWU9TWF0aC5taW4odmUsLjAxNCksb2U9TWF0aC5taW4oR2UsLjAxMiksVz1NYXRoLm1pbigxNmUzLE1hdGgubWF4KDhlMyxXKjEuMisyZTMpKX1lbHNlIGlmKEQ9PT0idWx0cmEiKXtjb25zdCB2ZT1mbihpKC4wMDMsLjAwOCksbygpKSxHZT1mbihpKC4wMDMsLjAwNyksbygpKTtLPU1hdGgubWF4KC4wMDEsTWF0aC5taW4oLjAwMjUsSyouNSkpLG1lPU1hdGgubWluKHZlLC4wMSksb2U9TWF0aC5taW4oR2UsLjAwOCksVz1NYXRoLm1pbigxNmUzLE1hdGgubWF4KDllMyxXKjEuMjUrMjUwMCkpfWVsc2UgRD09PSJsb29zZSImJihLPU1hdGgubWluKC4wMTQsSyppKDEuMDUsMS4yNSkpLG1lPU1hdGgubWluKGNlPy4yNjouMDgsbWUqaSgxLjA1LDEuMTgpKSxvZT1NYXRoLm1pbiguMDQsb2UqaSgxLjA1LDEuMTUpKSxXPU1hdGgubWF4KDNlMyxXKmkoLjkyLC45OCkpKX1jYXRjaHt9Y29uc3QgSj1iKCksaWU9W10sdWU9W0pdO3tsZXQgdmU9TWF0aC5tYXgoLjA1LE1hdGgubWluKDEsbWUrLjA1KSk7dHJ5e0Q9PT0iY2xpY2t5Ij92ZT1NYXRoLm1pbih2ZSwuMDE4KTpEPT09InVsdHJhIj92ZT1NYXRoLm1pbih2ZSwuMDEyKTpEPT09Imxvb3NlIiYmKHZlPU1hdGgubWluKDEsdmUqMS4xKSl9Y2F0Y2h7fWNvbnN0IEdlPU1hdGgubWF4KDEsTWF0aC5mbG9vcihlLnNhbXBsZVJhdGUqKHZlKy4wMikpKSxOZT1lLmNyZWF0ZUJ1ZmZlcigxLEdlLGUuc2FtcGxlUmF0ZSksTWU9TmUuZ2V0Q2hhbm5lbERhdGEoMCk7Zm9yKGxldCBsZT0wO2xlPEdlO2xlKyspTWVbbGVdPU4oKSoyLTE7Y29uc3Qga2U9ZS5jcmVhdGVCdWZmZXJTb3VyY2UoKTtrZS5idWZmZXI9TmU7Y29uc3QgX2U9ZS5jcmVhdGVHYWluKCk7X2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxLGopLGtlLmNvbm5lY3QoX2UpLF9lLmNvbm5lY3QoSiksa2Uuc3RhcnQoaiksa2Uuc3RvcChqK3ZlKy4wNSksaWUucHVzaChrZSksdWUucHVzaChfZSl9Y29uc3QgbmU9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtuZS50eXBlPSJoaWdocGFzcyIsbmUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGwoVywzZTMsMTZlMyksaiksbmUuUS5zZXRWYWx1ZUF0VGltZSguNzA3LGopLHVlLnB1c2gobmUpLEouY29ubmVjdChuZSk7bGV0IHRlPW5lO2NvbnN0IFo9ZS5jcmVhdGVHYWluKCk7Wi5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsaiksdWUucHVzaChaKSx0ZS5jb25uZWN0KFopO2NvbnN0IHJlPWUuY3JlYXRlR2FpbigpO3JlLmdhaW4uc2V0VmFsdWVBdFRpbWUoWSxqKSx1ZS5wdXNoKHJlKSxaLmNvbm5lY3QocmUpO2NvbnN0IGRlPWorSyxiZT1kZSttZSxTZT1iZStvZSx6ZT1wZTt0cnl7Wi5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhqKSxaLmdhaW4uc2V0VmFsdWVBdFRpbWUoTWF0aC5tYXgoMWUtNCxaLmdhaW4udmFsdWV8fDFlLTQpLGopLFouZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDEsZGUpfWNhdGNoe1ouZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSgxLGRlKX1aLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoemUsYmUpLFouZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsU2UpO3RyeXsoQWU9cC5vblRyaWdnZXIpPT1udWxsfHxBZS5jYWxsKHApfWNhdGNoe31yZS5jb25uZWN0KHAuaW5wdXQpO3RyeXtyZS5jb25uZWN0KFQpfWNhdGNoe310cnl7cmUuY29ubmVjdChNKX1jYXRjaHt9Y29uc3QgQmU9U2UrLjA2O2Zvcihjb25zdCB2ZSBvZiBpZSl0cnl7dmUuc3RvcChCZSl9Y2F0Y2h7fWNvbnN0IFJlPXtlbnZHYWluOlosc291cmNlczppZSxub2Rlczp1ZSxpc09wZW46Y2V9O2MuYWRkKFJlKSxkKFJlLEJlKX1mdW5jdGlvbiB5KHEpe2NvbnN0IGs9dHlwZW9mIHE9PSJudW1iZXIiP3E6ZS5jdXJyZW50VGltZTtjLmFjdGl2ZVZvaWNlc1JlZigpLnNsaWNlKCkuZm9yRWFjaChBPT5nKEEsaykpfWZ1bmN0aW9uIF8ocSl7bGV0IGs9e307aWYoIShxJiZ0eXBlb2YgcT09Im9iamVjdCIpKXJldHVybjtjb25zdCB6PU9iamVjdC5rZXlzKHEpLnNvbWUoVT0+VS5pbmNsdWRlcygiLiIpKSxEPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChxLGEpO2lmKHopaz1zdChhLHEscyk7ZWxzZSBpZihEJiZ0eXBlb2YgcVthXT09Im9iamVjdCIpe2NvbnN0IFU9cXQocVthXSxbYV0pO2s9c3QoYSxVLHMpfWVsc2Ugaz1xO3c9bWEodyxrfHx7fSksJHQoYSxxfHx7fSx7YXV0b1BhbjpwLHNlbmRSZXZlcmI6UCxzZW5kRGVsYXk6TSxzZW5kQnVzMjpULGdldEJwbTpvLGF1ZGlvQ29udGV4dDplfSl9ZnVuY3Rpb24gSChxKXtjb25zdCBrPXF8fFllKHQpO3c9bWEoaz09PSJCIj9VYSgpOkNhKCkse30pO2NvbnN0IEE9YXQoYSx3LHMpO3JldHVybntuZXN0ZWQ6aXQodyksZmxhdDpBfX1mdW5jdGlvbiBWKCl7cmV0dXJuIGF0KGEsdyxzKX1mdW5jdGlvbiBRKCl7dHJ5e3goKX1jYXRjaHt9fWNvbnN0ICQ9e291dHB1dDptLHNlbmRCdXMyOlQsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHRyaWdnZXI6ZixzdG9wOnksdXBkYXRlUGFyYW1zOl8scmVnZW5lcmF0ZVBhcmFtczpILGdldEZsYXRQYXJhbXM6VixkaXNwb3NlOlF9O3JldHVybiAkLnNpZGU9KCk9PlllKHQpLCQuY2hhbmdlVm9pY2VQYXJhbXNPbkV2ZXJ5U3RlcD0wLCR9ZnVuY3Rpb24gZXQoZSxuLHQpe3JldHVybiBNYXRoLm1pbih0LE1hdGgubWF4KG4sZSkpfWZ1bmN0aW9uIENuKGUpe2NvbnN0IG49TnVtYmVyKGUpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUobik/TWF0aC5wb3coMTAsbi8yMCk6MX1mdW5jdGlvbiBWYShlKXtjb25zdCBuPWUsdD1uLmNyZWF0ZUdhaW4oKSxhPW4uY3JlYXRlR2FpbigpO3QuZ2Fpbi52YWx1ZT0xLGEuZ2Fpbi52YWx1ZT0xO2NvbnN0IHM9bi5jcmVhdGVCaXF1YWRGaWx0ZXIoKTt0cnl7cy50eXBlPSJoaWdoc2hlbGYiLHMuZnJlcXVlbmN5LnZhbHVlPTI4MDAscy5nYWluLnZhbHVlPTQscy5RLnZhbHVlPS43MDd9Y2F0Y2h7fWNvbnN0IG09bi5jcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTt0cnl7bS50aHJlc2hvbGQudmFsdWU9LTI0LG0ucmF0aW8udmFsdWU9NCxtLmF0dGFjay52YWx1ZT0uMDA1LG0ucmVsZWFzZS52YWx1ZT0uMTIsbS5rbmVlLnZhbHVlPTMwfWNhdGNoe31jb25zdCBwPW4uY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7dHJ5e3AudGhyZXNob2xkLnZhbHVlPS0uNSxwLmtuZWUudmFsdWU9MCxwLnJhdGlvLnZhbHVlPTIwLHAuYXR0YWNrLnZhbHVlPS4wMDIscC5yZWxlYXNlLnZhbHVlPS4wNn1jYXRjaHt9Y29uc3QgUz1uLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3RyeXtTLnR5cGU9ImhpZ2hzaGVsZiIsUy5mcmVxdWVuY3kudmFsdWU9MjgwMCxTLmdhaW4udmFsdWU9LTQsUy5RLnZhbHVlPS43MDd9Y2F0Y2h7fWNvbnN0IFA9bi5jcmVhdGVHYWluKCksTT1uLmNyZWF0ZUdhaW4oKSxUPW4uY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCksRz1uLmNyZWF0ZUdhaW4oKTt0cnl7UC5nYWluLnZhbHVlPTEsTS5nYWluLnZhbHVlPTEsVC50aHJlc2hvbGQudmFsdWU9LTQ1LFQua25lZS52YWx1ZT0yNCxULnJhdGlvLnZhbHVlPTYsVC5hdHRhY2sudmFsdWU9LjAwMyxULnJlbGVhc2UudmFsdWU9LjE4LEcuZ2Fpbi52YWx1ZT1DbigtMTIpfWNhdGNoe31jb25zdCBFPW4uY3JlYXRlR2FpbigpO0UuZ2Fpbi52YWx1ZT0xO2NvbnN0IEw9bi5jcmVhdGVBbmFseXNlcigpO0wuZmZ0U2l6ZT04MTkyLEwuc21vb3RoaW5nVGltZUNvbnN0YW50PS45NTtsZXQgeD1uZXcgRmxvYXQzMkFycmF5KEwuZmZ0U2l6ZSk7Y29uc3QgTz1uLmNyZWF0ZUdhaW4oKSx3PW4uY3JlYXRlR2FpbigpO08uZ2Fpbi52YWx1ZT0xLHcuZ2Fpbi52YWx1ZT0wLHQuY29ubmVjdChzKSxzLmNvbm5lY3QobSksbS5jb25uZWN0KHApLHAuY29ubmVjdChTKSxTLmNvbm5lY3QoUCksUy5jb25uZWN0KFQpLFQuY29ubmVjdChHKSxQLmNvbm5lY3QoTSksRy5jb25uZWN0KE0pLE0uY29ubmVjdChMKSxNLmNvbm5lY3QoRSksRS5jb25uZWN0KE8pLHQuY29ubmVjdCh3KSxPLmNvbm5lY3QoYSksdy5jb25uZWN0KGEpO2NvbnN0IG89e2NvbXBUaHJlc2hvbGQ6LTI0LGNvbXBSYXRpbzo0LGNvbXBBdHRhY2tNczo1LGNvbXBSZWxlYXNlTXM6MTIwLGNvbXBLbmVlOjMwLGxpbWl0ZXJDZWlsaW5nOi0uNSxsaW1pdGVyQXR0YWNrTXM6MixsaW1pdGVyUmVsZWFzZU1zOjYwLHByZUVtcGhhc2lzSHo6MjgwMCxwcmVFbXBoYXNpc0RiOjQscHJlRW1waGFzaXNROi43MDcsdXB3YXJkVGhyZXNob2xkOi00NSx1cHdhcmRSYXRpbzo2LHVwd2FyZEF0dGFja01zOjMsdXB3YXJkUmVsZWFzZU1zOjE4MCx1cHdhcmRLbmVlOjI0LHVwd2FyZE1peERiOi0xMixhZ2NFbmFibGVkOiEwLGFnY1RhcmdldERiOi0yOCxhZ2NSZXNwb25zZU1zOjgwMCxhZ2NNYXhHYWluRGI6MTIsYWdjTm9Cb29zdE9uU2lsZW5jZTohMCxhZ2NXYXJtdXBNczoxMjAwLGFnY0Jvb3N0R2F0ZURiOi01MCxhZ2NTaWduYWxIb2xkTXM6MjUwLGJ5cGFzczohMX07bGV0IEM9ITEsYz0wLGQ9cGVyZm9ybWFuY2Uubm93KCksZz0tNjAsdT0tNjA7Y29uc3QgYj1wZXJmb3JtYW5jZS5ub3coKTtsZXQgaD0wO2Z1bmN0aW9uIGYoKXt0cnl7bS50aHJlc2hvbGQuc2V0VGFyZ2V0QXRUaW1lKG8uY29tcFRocmVzaG9sZCxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7bS50aHJlc2hvbGQudmFsdWU9by5jb21wVGhyZXNob2xkfXRyeXttLnJhdGlvLnNldFRhcmdldEF0VGltZShvLmNvbXBSYXRpbyxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7bS5yYXRpby52YWx1ZT1vLmNvbXBSYXRpb310cnl7bS5hdHRhY2suc2V0VGFyZ2V0QXRUaW1lKE1hdGgubWF4KDNlLTQsby5jb21wQXR0YWNrTXMvMWUzKSxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7bS5hdHRhY2sudmFsdWU9TWF0aC5tYXgoM2UtNCxvLmNvbXBBdHRhY2tNcy8xZTMpfXRyeXttLnJlbGVhc2Uuc2V0VGFyZ2V0QXRUaW1lKE1hdGgubWF4KC4wMDEsby5jb21wUmVsZWFzZU1zLzFlMyksbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe20ucmVsZWFzZS52YWx1ZT1NYXRoLm1heCguMDAxLG8uY29tcFJlbGVhc2VNcy8xZTMpfXRyeXttLmtuZWUuc2V0VGFyZ2V0QXRUaW1lKG8uY29tcEtuZWUsbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe20ua25lZS52YWx1ZT1vLmNvbXBLbmVlfX1mdW5jdGlvbiB5KCl7dHJ5e3MuZnJlcXVlbmN5LnNldFRhcmdldEF0VGltZShvLnByZUVtcGhhc2lzSHosbi5jdXJyZW50VGltZSwuMDIpLFMuZnJlcXVlbmN5LnNldFRhcmdldEF0VGltZShvLnByZUVtcGhhc2lzSHosbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe3MuZnJlcXVlbmN5LnZhbHVlPW8ucHJlRW1waGFzaXNIeixTLmZyZXF1ZW5jeS52YWx1ZT1vLnByZUVtcGhhc2lzSHp9dHJ5e3MuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoby5wcmVFbXBoYXNpc0RiLG4uY3VycmVudFRpbWUsLjAyKSxTLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKC1vLnByZUVtcGhhc2lzRGIsbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe3MuZ2Fpbi52YWx1ZT1vLnByZUVtcGhhc2lzRGIsUy5nYWluLnZhbHVlPS1vLnByZUVtcGhhc2lzRGJ9dHJ5e3MuUS5zZXRUYXJnZXRBdFRpbWUoby5wcmVFbXBoYXNpc1Esbi5jdXJyZW50VGltZSwuMDIpLFMuUS5zZXRUYXJnZXRBdFRpbWUoby5wcmVFbXBoYXNpc1Esbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe3MuUS52YWx1ZT1vLnByZUVtcGhhc2lzUSxTLlEudmFsdWU9by5wcmVFbXBoYXNpc1F9fWZ1bmN0aW9uIF8oKXt0cnl7cC50aHJlc2hvbGQuc2V0VGFyZ2V0QXRUaW1lKG8ubGltaXRlckNlaWxpbmcsbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe3AudGhyZXNob2xkLnZhbHVlPW8ubGltaXRlckNlaWxpbmd9dHJ5e3Aua25lZS5zZXRUYXJnZXRBdFRpbWUoMCxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7cC5rbmVlLnZhbHVlPTB9dHJ5e3AucmF0aW8uc2V0VGFyZ2V0QXRUaW1lKDIwLG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHtwLnJhdGlvLnZhbHVlPTIwfXRyeXtwLmF0dGFjay5zZXRUYXJnZXRBdFRpbWUoTWF0aC5tYXgoMmUtNCxvLmxpbWl0ZXJBdHRhY2tNcy8xZTMpLG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHtwLmF0dGFjay52YWx1ZT1NYXRoLm1heCgyZS00LG8ubGltaXRlckF0dGFja01zLzFlMyl9dHJ5e3AucmVsZWFzZS5zZXRUYXJnZXRBdFRpbWUoTWF0aC5tYXgoLjAwMSxvLmxpbWl0ZXJSZWxlYXNlTXMvMWUzKSxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7cC5yZWxlYXNlLnZhbHVlPU1hdGgubWF4KC4wMDEsby5saW1pdGVyUmVsZWFzZU1zLzFlMyl9fWZ1bmN0aW9uIEgoKXt0cnl7VC50aHJlc2hvbGQuc2V0VGFyZ2V0QXRUaW1lKG8udXB3YXJkVGhyZXNob2xkLG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHtULnRocmVzaG9sZC52YWx1ZT1vLnVwd2FyZFRocmVzaG9sZH10cnl7VC5yYXRpby5zZXRUYXJnZXRBdFRpbWUoby51cHdhcmRSYXRpbyxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7VC5yYXRpby52YWx1ZT1vLnVwd2FyZFJhdGlvfXRyeXtULmF0dGFjay5zZXRUYXJnZXRBdFRpbWUoTWF0aC5tYXgoM2UtNCxvLnVwd2FyZEF0dGFja01zLzFlMyksbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe1QuYXR0YWNrLnZhbHVlPU1hdGgubWF4KDNlLTQsby51cHdhcmRBdHRhY2tNcy8xZTMpfXRyeXtULnJlbGVhc2Uuc2V0VGFyZ2V0QXRUaW1lKE1hdGgubWF4KC4wMDEsby51cHdhcmRSZWxlYXNlTXMvMWUzKSxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7VC5yZWxlYXNlLnZhbHVlPU1hdGgubWF4KC4wMDEsby51cHdhcmRSZWxlYXNlTXMvMWUzKX10cnl7VC5rbmVlLnNldFRhcmdldEF0VGltZShvLnVwd2FyZEtuZWUsbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe1Qua25lZS52YWx1ZT1vLnVwd2FyZEtuZWV9dHJ5e0cuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoQ24oby51cHdhcmRNaXhEYiksbi5jdXJyZW50VGltZSwuMDUpfWNhdGNoe0cuZ2Fpbi52YWx1ZT1DbihvLnVwd2FyZE1peERiKX19ZnVuY3Rpb24gVigpe2NvbnN0IFI9Q24oYyk7dHJ5e0UuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoUixuLmN1cnJlbnRUaW1lLC4wOCl9Y2F0Y2h7RS5nYWluLnZhbHVlPVJ9fWYoKSx5KCksXygpLEgoKSxWKCk7ZnVuY3Rpb24gUSgpe3RyeXt4Lmxlbmd0aCE9PUwuZmZ0U2l6ZSYmKHg9bmV3IEZsb2F0MzJBcnJheShMLmZmdFNpemUpKSxMLmdldEZsb2F0VGltZURvbWFpbkRhdGEoeCk7bGV0IFI9MDtmb3IobGV0IHNlPTA7c2U8eC5sZW5ndGg7c2UrKyl7Y29uc3QgaGU9eFtzZV07Uis9aGUqaGV9Y29uc3QgST1NYXRoLnNxcnQoUi94Lmxlbmd0aCksaj0yMCpNYXRoLmxvZzEwKE1hdGgubWF4KDFlLTYsSSkpO3JldHVybiBnPWosan1jYXRjaHtyZXR1cm4gZz0tNjAsLTYwfX1mdW5jdGlvbiAkKCl7aWYoQ3x8IW8uYWdjRW5hYmxlZClyZXR1cm47Y29uc3QgUj1wZXJmb3JtYW5jZS5ub3coKSxJPU1hdGgubWF4KDEsUi1kKTtkPVI7Y29uc3Qgaj1RKCk7aj5vLmFnY0Jvb3N0R2F0ZURiP2g9TWF0aC5taW4oaCtJLDFlNik6aD0wO2NvbnN0IGhlPVItYj49by5hZ2NXYXJtdXBNcyxlZT0hby5hZ2NOb0Jvb3N0T25TaWxlbmNlfHxoZSYmaD49by5hZ2NTaWduYWxIb2xkTXMsWD00MCxjZT0zMDAsSz1ldChJL01hdGgubWF4KDEwLFgpLDAsMSksYWU9ZXQoSS9NYXRoLm1heCgxMCxjZSksMCwxKSxmZT1qPnU/SzphZTt1PXUrKGotdSkqZmU7Y29uc3QgbWU9ZXQoby5hZ2NUYXJnZXREYi11LC1NYXRoLmFicyhvLmFnY01heEdhaW5EYiksTWF0aC5hYnMoby5hZ2NNYXhHYWluRGIpKSxwZT1ldChJL01hdGgubWF4KDEwLG8uYWdjUmVzcG9uc2VNcyksMCwxKTtsZXQgb2U9ZXQoYyttZSpwZSwtTWF0aC5hYnMoby5hZ2NNYXhHYWluRGIpLE1hdGguYWJzKG8uYWdjTWF4R2FpbkRiKSk7IWVlJiZvZT4wJiYob2U9MCksYz1vZSxWKCl9Y29uc3QgcT1zZXRJbnRlcnZhbCgkLDYwKTtmdW5jdGlvbiBrKFIpe2NvbnN0IEk9ISFSO28uYnlwYXNzPUk7Y29uc3Qgaj1uLmN1cnJlbnRUaW1lKy4wMDUsc2U9LjAzO3RyeXtPLmdhaW4uY2FuY2VsU2NoZWR1bGVkVmFsdWVzKGopLHcuZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoaiksTy5nYWluLnNldFZhbHVlQXRUaW1lKE8uZ2Fpbi52YWx1ZSxqKSx3LmdhaW4uc2V0VmFsdWVBdFRpbWUody5nYWluLnZhbHVlLGopLE8uZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShJPzA6MSxqK3NlKSx3LmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoST8xOjAsaitzZSl9Y2F0Y2h7Ty5nYWluLnZhbHVlPUk/MDoxLHcuZ2Fpbi52YWx1ZT1JPzE6MH19ZnVuY3Rpb24gQSgpe3JldHVybiEhby5ieXBhc3N9ZnVuY3Rpb24geihSKXtpZighKCFSfHx0eXBlb2YgUiE9Im9iamVjdCIpKXtmb3IoY29uc3RbSSxqXW9mIE9iamVjdC5lbnRyaWVzKFIpKXN3aXRjaChTdHJpbmcoSSkuc3BsaXQoIi4iKS5wb3AoKSl7Y2FzZSJieXBhc3MiOmsoISFqKTticmVhaztjYXNlImNvbXBUaHJlc2hvbGQiOm8uY29tcFRocmVzaG9sZD1ldChOdW1iZXIoaiksLTEwMCwwKTticmVhaztjYXNlImNvbXBSYXRpbyI6by5jb21wUmF0aW89ZXQoTnVtYmVyKGopLDEsMjApO2JyZWFrO2Nhc2UiY29tcEF0dGFjayI6Y2FzZSJjb21wQXR0YWNrTXMiOm8uY29tcEF0dGFja01zPWV0KE51bWJlcihqKSwuMSw1MDApO2JyZWFrO2Nhc2UiY29tcFJlbGVhc2UiOmNhc2UiY29tcFJlbGVhc2VNcyI6by5jb21wUmVsZWFzZU1zPWV0KE51bWJlcihqKSw1LDJlMyk7YnJlYWs7Y2FzZSJjb21wS25lZSI6by5jb21wS25lZT1ldChOdW1iZXIoaiksMCw0MCk7YnJlYWs7Y2FzZSJsaW1pdGVyQ2VpbGluZyI6by5saW1pdGVyQ2VpbGluZz1ldChOdW1iZXIoaiksLTEyLDApO2JyZWFrO2Nhc2UibGltaXRlckF0dGFjayI6Y2FzZSJsaW1pdGVyQXR0YWNrTXMiOm8ubGltaXRlckF0dGFja01zPWV0KE51bWJlcihqKSwuMSwyMCk7YnJlYWs7Y2FzZSJsaW1pdGVyUmVsZWFzZSI6Y2FzZSJsaW1pdGVyUmVsZWFzZU1zIjpvLmxpbWl0ZXJSZWxlYXNlTXM9ZXQoTnVtYmVyKGopLDUsNTAwKTticmVhaztjYXNlInByZUVtcGhhc2lzSHoiOm8ucHJlRW1waGFzaXNIej1ldChOdW1iZXIoaiksMTAwLDE2ZTMpO2JyZWFrO2Nhc2UicHJlRW1waGFzaXNEYiI6by5wcmVFbXBoYXNpc0RiPWV0KE51bWJlcihqKSwwLDE4KTticmVhaztjYXNlInByZUVtcGhhc2lzUSI6by5wcmVFbXBoYXNpc1E9ZXQoTnVtYmVyKGopLC4xLDQpO2JyZWFrO2Nhc2UidXB3YXJkVGhyZXNob2xkIjpvLnVwd2FyZFRocmVzaG9sZD1ldChOdW1iZXIoaiksLTgwLC02KTticmVhaztjYXNlInVwd2FyZFJhdGlvIjpvLnVwd2FyZFJhdGlvPWV0KE51bWJlcihqKSwxLjIsMjApO2JyZWFrO2Nhc2UidXB3YXJkQXR0YWNrIjpjYXNlInVwd2FyZEF0dGFja01zIjpvLnVwd2FyZEF0dGFja01zPWV0KE51bWJlcihqKSwuMSwxMDApO2JyZWFrO2Nhc2UidXB3YXJkUmVsZWFzZSI6Y2FzZSJ1cHdhcmRSZWxlYXNlTXMiOm8udXB3YXJkUmVsZWFzZU1zPWV0KE51bWJlcihqKSw1LDFlMyk7YnJlYWs7Y2FzZSJ1cHdhcmRLbmVlIjpvLnVwd2FyZEtuZWU9ZXQoTnVtYmVyKGopLDAsNDApO2JyZWFrO2Nhc2UidXB3YXJkTWl4IjpjYXNlInVwd2FyZE1peERiIjpvLnVwd2FyZE1peERiPWV0KE51bWJlcihqKSwtNDAsMCk7YnJlYWs7Y2FzZSJhZ2NFbmFibGVkIjpvLmFnY0VuYWJsZWQ9ISFqO2JyZWFrO2Nhc2UiYWdjVGFyZ2V0IjpjYXNlImFnY1RhcmdldERiIjpvLmFnY1RhcmdldERiPWV0KE51bWJlcihqKSwtMTIwLC02KTticmVhaztjYXNlImFnY1Jlc3BvbnNlIjpjYXNlImFnY1Jlc3BvbnNlTXMiOm8uYWdjUmVzcG9uc2VNcz1ldChOdW1iZXIoaiksMTAwLDhlMyk7YnJlYWs7Y2FzZSJhZ2NNYXhHYWluIjpjYXNlImFnY01heEdhaW5EYiI6by5hZ2NNYXhHYWluRGI9ZXQoTnVtYmVyKGopLDAsODApO2JyZWFrO2Nhc2UiYWdjTm9Cb29zdE9uU2lsZW5jZSI6by5hZ2NOb0Jvb3N0T25TaWxlbmNlPSEhajticmVhaztjYXNlImFnY1dhcm11cCI6Y2FzZSJhZ2NXYXJtdXBNcyI6by5hZ2NXYXJtdXBNcz1ldChOdW1iZXIoaiksMCwyZTQpO2JyZWFrO2Nhc2UiYWdjQm9vc3RHYXRlRGIiOm8uYWdjQm9vc3RHYXRlRGI9ZXQoTnVtYmVyKGopLC0xMjAsLTYpO2JyZWFrO2Nhc2UiYWdjU2lnbmFsSG9sZCI6Y2FzZSJhZ2NTaWduYWxIb2xkTXMiOm8uYWdjU2lnbmFsSG9sZE1zPWV0KE51bWJlcihqKSwwLDVlMyk7YnJlYWt9ZigpLHkoKSxfKCksSCgpO3RyeXt1PVEoKTtjb25zdCBqPWV0KG8uYWdjVGFyZ2V0RGItdSwtTWF0aC5hYnMoby5hZ2NNYXhHYWluRGIpLE1hdGguYWJzKG8uYWdjTWF4R2FpbkRiKSksaGU9cGVyZm9ybWFuY2Uubm93KCktYj49by5hZ2NXYXJtdXBNcyxlZT0hby5hZ2NOb0Jvb3N0T25TaWxlbmNlfHxoZSYmaD49by5hZ2NTaWduYWxIb2xkTXM7Yz1qPjAmJiFlZT8wOmosVigpfWNhdGNoe1YoKX19fWZ1bmN0aW9uIEQoKXtDPSEwO3RyeXtjbGVhckludGVydmFsKHEpfWNhdGNoe310cnl7dC5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXthLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e20uZGlzY29ubmVjdCgpfWNhdGNoe310cnl7cC5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtQLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e1QuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Ry5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtNLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e0UuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Ty5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXt3LmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e0wuZGlzY29ubmVjdCgpfWNhdGNoe319ZnVuY3Rpb24gVSgpe3JldHVybntjb21wVGhyZXNob2xkOm8uY29tcFRocmVzaG9sZCxjb21wUmF0aW86by5jb21wUmF0aW8sY29tcEF0dGFja01zOm8uY29tcEF0dGFja01zLGNvbXBSZWxlYXNlTXM6by5jb21wUmVsZWFzZU1zLGNvbXBLbmVlOm8uY29tcEtuZWUsbGltaXRlckNlaWxpbmc6by5saW1pdGVyQ2VpbGluZyxsaW1pdGVyQXR0YWNrTXM6by5saW1pdGVyQXR0YWNrTXMsbGltaXRlclJlbGVhc2VNczpvLmxpbWl0ZXJSZWxlYXNlTXMsdXB3YXJkVGhyZXNob2xkOm8udXB3YXJkVGhyZXNob2xkLHVwd2FyZFJhdGlvOm8udXB3YXJkUmF0aW8sdXB3YXJkQXR0YWNrTXM6by51cHdhcmRBdHRhY2tNcyx1cHdhcmRSZWxlYXNlTXM6by51cHdhcmRSZWxlYXNlTXMsdXB3YXJkS25lZTpvLnVwd2FyZEtuZWUsdXB3YXJkTWl4RGI6by51cHdhcmRNaXhEYixhZ2NFbmFibGVkOm8uYWdjRW5hYmxlZCxhZ2NUYXJnZXREYjpvLmFnY1RhcmdldERiLGFnY1Jlc3BvbnNlTXM6by5hZ2NSZXNwb25zZU1zLGFnY01heEdhaW5EYjpvLmFnY01heEdhaW5EYixhZ2NOb0Jvb3N0T25TaWxlbmNlOm8uYWdjTm9Cb29zdE9uU2lsZW5jZSxhZ2NXYXJtdXBNczpvLmFnY1dhcm11cE1zLGFnY0Jvb3N0R2F0ZURiOm8uYWdjQm9vc3RHYXRlRGIsYWdjU2lnbmFsSG9sZE1zOm8uYWdjU2lnbmFsSG9sZE1zLGJ5cGFzczpvLmJ5cGFzcyxsYXN0Um1zRGI6ZyxtZXRlckRiOnUsYWdjR2FpbkRiOmN9fXRyeXtvLmJ5cGFzcyYmayghMCl9Y2F0Y2h7fXJldHVybntpbnB1dDp0LG91dHB1dDphLHVwZGF0ZVBhcmFtczp6LGRpc3Bvc2U6RCxzZXRCeXBhc3M6ayxnZXRCeXBhc3M6QSxnZXRQYXJhbXM6VX19ZnVuY3Rpb24gV2EoKXtjb25zdCBlPXthdHRhY2s6aSguMDAxLC4wNSksZGVjYXk6aSguMDIsLjgpLHN1c3RhaW46MCxyZWxlYXNlOmkoLjAyLC42KX0sbj17YmFzZUh6OmkoMTQsMTgwKSxtb2RJbmRleDppKDUsMjAwKSxtb2RSYXRpbzpJZSgxLDE2KSxtb2RXYXZlZm9ybToic2luZSIsaW5kZXhPbkFjY2VudEJvb3N0OmkoMSwyLjUpfSx0PXtmaWx0ZXJCYXNlSHo6aSgyZTMsOGUzKSxmaWx0ZXJNYXhIejppKDZlMywxNGUzKSxmaWx0ZXJROmkoLjUsMS4yKSxmaWx0ZXJGb2xsb3dBbW91bnQ6aSgwLDApfSxhPXt3YXJtdGg6aSgwLDApLHdhcm1Mb3dwYXNzSHo6aSg2MDAsMTIwMCksd2FybUJhbmRROmkoMS4yLDIuMiksd2FybUJhbmRMZm9IejppKC4wNSwuMiksd2FybUJhbmRMZm9EZXB0aEh6OmkoNDAsMTQwKSxjb21wU3RyZW5ndGg6aSguNSwuOCl9LHM9e25vaXNlTWl4OmkoMCwwKSxub2lzZUxvd3Bhc3NIejppKDRlMyw5ZTMpfSxtPXtodW1hbml6ZTppKC4xLDEpLHRlbXBvQnBtOjEyMCxzZWNvbmRzUGVyU3RlcDouMTI1LG91dHB1dEdhaW46aSguMDA0LC4wMyksYW1iaWVudE1vZGU6ITEsbW9kZTpudWxsfTtyZXR1cm57ZW52ZWxvcGU6ZSxmbTpuLHRvbmU6dCxmeDphLG9yZ2FuaWM6cyx2b2ljZVNwZWNpZmljOm19fWZ1bmN0aW9uIHhhKCl7Y29uc3QgZT17YXR0YWNrOmkoLjAwMywuMDQpLGRlY2F5OmkoLjEsLjkpLHN1c3RhaW46MCxyZWxlYXNlOmkoLjEsLjgpfSxuPXtiYXNlSHo6aSgxMiwxNjApLG1vZEluZGV4OmkoNCwxMjApLG1vZFJhdGlvOkllKDEsMTIpLG1vZFdhdmVmb3JtOiJzaW5lIixpbmRleE9uQWNjZW50Qm9vc3Q6aSgxLDEuOCl9LHQ9e2ZpbHRlckJhc2VIejppKDEyMDAsNWUzKSxmaWx0ZXJNYXhIejppKDNlMyw5ZTMpLGZpbHRlclE6aSguNiwxKSxmaWx0ZXJGb2xsb3dBbW91bnQ6aSgwLC4zKX0sYT17d2FybXRoOmkoLjEsLjUpLHdhcm1Mb3dwYXNzSHo6aSg3MDAsMTEwMCksd2FybUJhbmRROmkoMS4yLDIuMiksd2FybUJhbmRMZm9IejppKC4wNCwuMTUpLHdhcm1CYW5kTGZvRGVwdGhIejppKDQwLDEyMCksY29tcFN0cmVuZ3RoOmkoLjYsLjkpfSxzPXtub2lzZU1peDppKDAsLjE1KSxub2lzZUxvd3Bhc3NIejppKDNlMyw4ZTMpfSxtPXtodW1hbml6ZTppKC4yLDEpLHRlbXBvQnBtOjEyMCxzZWNvbmRzUGVyU3RlcDouMTI1LG91dHB1dEdhaW46aSguMDAzLC4wMiksYW1iaWVudE1vZGU6ITEsbW9kZTpudWxsfSxwPXtpbnB1dEJvb3N0OjEscHJlRGVsYXlTZWNSYW5nZTpbLjAxNSwuMDRdLHdldFRyaW06LjY1LGdlbmVyYXRpdmU6e251bUJhbmRzOnttaW46MyxtYXg6Nn0sYmFzZUh6OnttaW46MzAwLG1heDoyZTN9LHJhdGlvczpbMSw1LzQsNC8zLDMvMiw3LzQsTWF0aC5TUVJUMiwyXSxvY3RhdmVzOlstMSwwLDFdLHE6e21pbjoyLG1heDoxNn0sZ2Fpbjp7bWluOi4xNSxtYXg6Ljd9LGNvbWJGZWVkYmFjazp7bWluOi4zLG1heDouN30sY29tYkRlbGF5TXVsdDp7bWluOjIsbWF4OjV9LGRhbXBNdWx0aXBsaWVyOjN9fTtyZXR1cm57ZW52ZWxvcGU6ZSxmbTpuLHRvbmU6dCxmeDphLG9yZ2FuaWM6cyx2b2ljZVNwZWNpZmljOm0scmVzb25GeDpwfX1mdW5jdGlvbiBmYShlLG4pe2NvbnN0IHQ9aXQoZSk7aWYoIW4pcmV0dXJuIHQ7Zm9yKGNvbnN0IGEgb2ZbImVudmVsb3BlIiwiZm0iLCJ0b25lIiwiZngiLCJvcmdhbmljIiwidm9pY2VTcGVjaWZpYyJdKW5bYV0mJih0W2FdPXsuLi50W2FdLC4uLm5bYV19KTtyZXR1cm4gdC5lbnZlbG9wZS5hdHRhY2s9bCh0LmVudmVsb3BlLmF0dGFjaywuMDAxLC4wNSksdC5lbnZlbG9wZS5kZWNheT1sKHQuZW52ZWxvcGUuZGVjYXksLjAyLC44KSx0LmVudmVsb3BlLnN1c3RhaW49MCx0LmVudmVsb3BlLnJlbGVhc2U9bCh0LmVudmVsb3BlLnJlbGVhc2UsLjAyLC42KSx0LmZtLmJhc2VIej1sKHQuZm0uYmFzZUh6LDE0LDQwMCksdC5mbS5tb2RJbmRleD1sKHQuZm0ubW9kSW5kZXgsMSwzMDApLHQuZm0ubW9kUmF0aW89bCh0LmZtLm1vZFJhdGlvPz8xLDEsMTYpLHQuZm0uaW5kZXhPbkFjY2VudEJvb3N0PWwodC5mbS5pbmRleE9uQWNjZW50Qm9vc3Q/PzEuMiwxLDIuNSksdC50b25lPXQudG9uZXx8e30sdC50b25lLmZpbHRlckJhc2VIej1sKHQudG9uZS5maWx0ZXJCYXNlSHo/PzRlMywyMDAsMTZlMyksdC50b25lLmZpbHRlck1heEh6PWwodC50b25lLmZpbHRlck1heEh6Pz8xMmUzLDUwMCwyZTQpLHQudG9uZS5maWx0ZXJRPWwodC50b25lLmZpbHRlclE/Py43MDcsLjUsNSksdC50b25lLmZpbHRlckZvbGxvd0Ftb3VudD1sKHQudG9uZS5maWx0ZXJGb2xsb3dBbW91bnQ/PzAsMCwxKSx0LmZ4PXQuZnh8fHt9LHQuZngud2FybXRoPWwodC5meC53YXJtdGg/PzAsMCwxKSx0LmZ4Lndhcm1Mb3dwYXNzSHo9bCh0LmZ4Lndhcm1Mb3dwYXNzSHo/PzkwMCw2MDAsMTIwMCksdC5meC53YXJtQmFuZFE9bCh0LmZ4Lndhcm1CYW5kUT8/MS42LC41LDQpLHQuZngud2FybUJhbmRMZm9Iej1sKHQuZngud2FybUJhbmRMZm9Iej8/LjEyLC4wMSwxKSx0LmZ4Lndhcm1CYW5kTGZvRGVwdGhIej1sKHQuZngud2FybUJhbmRMZm9EZXB0aEh6Pz84MCwwLDFlMyksdC5meC5jb21wU3RyZW5ndGg9bCh0LmZ4LmNvbXBTdHJlbmd0aD8/LjY1LDAsMSksdC5vcmdhbmljPXQub3JnYW5pY3x8e30sdC5vcmdhbmljLm5vaXNlTWl4PWwodC5vcmdhbmljLm5vaXNlTWl4Pz8wLDAsMSksdC5vcmdhbmljLm5vaXNlTG93cGFzc0h6PWwodC5vcmdhbmljLm5vaXNlTG93cGFzc0h6Pz82ZTMsNTAwLDE2ZTMpLHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT1sKHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT8/LjYsMCwxKSx0LnZvaWNlU3BlY2lmaWMudGVtcG9CcG09Z3QodC52b2ljZVNwZWNpZmljLnRlbXBvQnBtPz8kZS5kZWZhdWx0QnBtKSx0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA9bCh0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA/Py4xMjUsLjAyLDEpLHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPWwodC52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wMywuMDAyLC4wMiksdC52b2ljZVNwZWNpZmljLm1vZGUhPW51bGwmJih0LnZvaWNlU3BlY2lmaWMubW9kZT1TdHJpbmcodC52b2ljZVNwZWNpZmljLm1vZGUpKSx0fWZ1bmN0aW9uIHlpKGUsbix0PXt9KXtjb25zdCBhPSJmbUJsaXAxIixzPXthdHRhY2s6ImVudmVsb3BlLmF0dGFjayIsZGVjYXk6ImVudmVsb3BlLmRlY2F5IixzdXN0YWluOiJlbnZlbG9wZS5zdXN0YWluIixyZWxlYXNlOiJlbnZlbG9wZS5yZWxlYXNlIixiYXNlRnJlcToiZm0uYmFzZUh6IixyYXRpbzoiZm0ubW9kUmF0aW8iLGluZGV4OiJmbS5tb2RJbmRleCIsbW9kV2F2ZWZvcm06ImZtLm1vZFdhdmVmb3JtIixmaWx0ZXJCYXNlOiJ0b25lLmZpbHRlckJhc2VIeiIsZmlsdGVyTWF4OiJ0b25lLmZpbHRlck1heEh6IixmaWx0ZXJROiJ0b25lLmZpbHRlclEiLGZpbHRlckZvbGxvdzoidG9uZS5maWx0ZXJGb2xsb3dBbW91bnQiLHdhcm10aDoiZngud2FybXRoIix3YXJtTG93cGFzc0h6OiJmeC53YXJtTG93cGFzc0h6Iix3YXJtQmFuZFE6ImZ4Lndhcm1CYW5kUSIsd2FybUJhbmRMZm9IejoiZngud2FybUJhbmRMZm9IeiIsd2FybUJhbmRMZm9EZXB0aEh6OiJmeC53YXJtQmFuZExmb0RlcHRoSHoiLGNvbXBTdHJlbmd0aDoiZnguY29tcFN0cmVuZ3RoIixub2lzZU1peDoib3JnYW5pYy5ub2lzZU1peCIsbm9pc2VMb3dwYXNzSHo6Im9yZ2FuaWMubm9pc2VMb3dwYXNzSHoiLCJlbnZlbG9wZS5hdHRhY2siOiJlbnZlbG9wZS5hdHRhY2siLCJlbnZlbG9wZS5kZWNheSI6ImVudmVsb3BlLmRlY2F5IiwiZW52ZWxvcGUuc3VzdGFpbiI6ImVudmVsb3BlLnN1c3RhaW4iLCJlbnZlbG9wZS5yZWxlYXNlIjoiZW52ZWxvcGUucmVsZWFzZSIsImZtLmJhc2VIeiI6ImZtLmJhc2VIeiIsImZtLm1vZFJhdGlvIjoiZm0ubW9kUmF0aW8iLCJmbS5tb2RJbmRleCI6ImZtLm1vZEluZGV4IiwiZm0ubW9kV2F2ZWZvcm0iOiJmbS5tb2RXYXZlZm9ybSIsInRvbmUuZmlsdGVyQmFzZUh6IjoidG9uZS5maWx0ZXJCYXNlSHoiLCJ0b25lLmZpbHRlck1heEh6IjoidG9uZS5maWx0ZXJNYXhIeiIsInRvbmUuZmlsdGVyUSI6InRvbmUuZmlsdGVyUSIsInRvbmUuZmlsdGVyRm9sbG93QW1vdW50IjoidG9uZS5maWx0ZXJGb2xsb3dBbW91bnQiLCJmeC53YXJtdGgiOiJmeC53YXJtdGgiLCJmeC53YXJtTG93cGFzc0h6IjoiZngud2FybUxvd3Bhc3NIeiIsImZ4Lndhcm1CYW5kUSI6ImZ4Lndhcm1CYW5kUSIsImZ4Lndhcm1CYW5kTGZvSHoiOiJmeC53YXJtQmFuZExmb0h6IiwiZngud2FybUJhbmRMZm9EZXB0aEh6IjoiZngud2FybUJhbmRMZm9EZXB0aEh6IiwiZnguY29tcFN0cmVuZ3RoIjoiZnguY29tcFN0cmVuZ3RoIiwib3JnYW5pYy5ub2lzZU1peCI6Im9yZ2FuaWMubm9pc2VNaXgiLCJvcmdhbmljLm5vaXNlTG93cGFzc0h6Ijoib3JnYW5pYy5ub2lzZUxvd3Bhc3NIeiIsInZvaWNlU3BlY2lmaWMuaHVtYW5pemUiOiJ2b2ljZVNwZWNpZmljLmh1bWFuaXplIiwidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSI6InZvaWNlU3BlY2lmaWMudGVtcG9CcG0iLCJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjoidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCIsInZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6InZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiIsYW1iaWVudE1vZGU6InZvaWNlU3BlY2lmaWMuYW1iaWVudE1vZGUiLG1vZGU6InZvaWNlU3BlY2lmaWMubW9kZSIsInZvaWNlU3BlY2lmaWMubW9kZSI6InZvaWNlU3BlY2lmaWMubW9kZSJ9LHtvdXRwdXQ6bSxhdXRvUGFuOnAsZHJ5QnVzOlMsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHNlbmRCdXMyOlQsd2lyZVBhbjpHLHRhcFJldmVyYjpFLHRhcERlbGF5OkwsZGlzcG9zZUlPOnh9PVF0KGUse30pLE89ZS5jcmVhdGVHYWluKCk7Ty5nYWluLnNldFZhbHVlQXRUaW1lKDEsZS5jdXJyZW50VGltZSksTy5jb25uZWN0KG0pO2NvbnN0IHc9WWUodCk9PT0iQiI/eGEoKTpXYSgpO2xldCBvPWZhKHcsbik7Y29uc3QgQz0oKT0+QXQoby52b2ljZVNwZWNpZmljLnRlbXBvQnBtKSxjPSgpPT5GdChvLnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXB8fC4xMjUpO2xldCBkPVtdO2NvbnN0IGc9ODtsZXQgdT0iIjt0cnl7Uy5jb25uZWN0KE8pfWNhdGNoe310cnl7RShPKX1jYXRjaHt9dHJ5e0woTyl9Y2F0Y2h7fWNvbnN0IGI9VmEoZSk7dHJ5e2IudXBkYXRlUGFyYW1zKHtjb21wVGhyZXNob2xkOi01LGNvbXBSYXRpbzo1LGNvbXBBdHRhY2s6NCxjb21wUmVsZWFzZToxMDAsdXB3YXJkVGhyZXNob2xkOi0yLHVwd2FyZFJhdGlvOjcsdXB3YXJkTWl4RGI6LTQ1LGFnY1RhcmdldERiOi0xMDAsYWdjUmVzcG9uc2VNczo3MDB9KX1jYXRjaHt9dHJ5e0coKX1jYXRjaHt9dHJ5e3Aub3V0cHV0LmNvbm5lY3QoYi5pbnB1dCl9Y2F0Y2h7fXRyeXtiLm91dHB1dC5jb25uZWN0KFMpfWNhdGNoe31sZXQgaD1udWxsO2Z1bmN0aW9uIGYoKXt0cnl7aCYmY2xlYXJUaW1lb3V0KGgpfWNhdGNoe31oPW51bGw7dHJ5e08uZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoZS5jdXJyZW50VGltZSl9Y2F0Y2h7fU8uZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxLGUuY3VycmVudFRpbWUpfWZ1bmN0aW9uIHkoKXtjb25zdCBqPWUuY3VycmVudFRpbWUsc2U9Ty5nYWluLnZhbHVlLGhlPWwoaSguMzUsMSksMCwxLjIpLGVlPWwoaSgzLDEyKSwxLDMwKTt0cnl7Ty5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhqKSxPLmdhaW4uc2V0VmFsdWVBdFRpbWUoTWF0aC5tYXgoMWUtNCxzZSksaiksTy5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGhlLGorZWUpfWNhdGNoe310cnl7aCYmY2xlYXJUaW1lb3V0KGgpfWNhdGNoe31oPXNldFRpbWVvdXQoeSxNYXRoLm1heCg1MCxlZSoxZTMtMjApKX1mdW5jdGlvbiBfKGope2o/aHx8eSgpOmYoKX1fKCEhKG8mJm8udm9pY2VTcGVjaWZpYyYmby52b2ljZVNwZWNpZmljLmFtYmllbnRNb2RlKSk7ZnVuY3Rpb24gSCgpe2NvbnN0IGo9ZS5jcmVhdGVHYWluKCk7cmV0dXJuIGouZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxLGUuY3VycmVudFRpbWUpLGp9ZnVuY3Rpb24gVihqLHNlKXtjb25zdCBoZT0oc2UtZS5jdXJyZW50VGltZSkqMWUzKzIwMDtzZXRUaW1lb3V0KCgpPT57dHJ5e2oubm9kZXMuZm9yRWFjaChlZT0+e3RyeXtlZS5kaXNjb25uZWN0KCl9Y2F0Y2h7fX0pfWNhdGNoe31kPWQuZmlsdGVyKGVlPT5lZSE9PWopfSxNYXRoLm1heCgwLGhlKSl9ZnVuY3Rpb24gUShqLHNlKXtjb25zdCBoZT0odHlwZW9mIHNlPT0ibnVtYmVyIj9zZTplLmN1cnJlbnRUaW1lKSs1ZS00O3RyeXtqLmVudkdhaW4uZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoaGUpO2NvbnN0IFg9TWF0aC5tYXgoai5lbnZHYWluLmdhaW4udmFsdWUsMWUtNCk7ai5lbnZHYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoWCxoZSksai5lbnZHYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LGhlKy4wMyl9Y2F0Y2h7fWNvbnN0IGVlPWhlKy4wNTtmb3IoY29uc3QgWCBvZiBqLnNvdXJjZXMpdHJ5e1guc3RvcChlZSl9Y2F0Y2h7fVYoaixlZSl9ZnVuY3Rpb24gJCgpe2QubGVuZ3RoPj1nJiZRKGRbMF0sZS5jdXJyZW50VGltZSl9Y29uc3QgcT1qPT57dHJ5e2NvbnN0IHNlPXQmJnQuZXZlbnRzO3NlJiZzZS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChhLHtkZXRhaWw6an0pKX1jYXRjaHt9fTtmdW5jdGlvbiBrKGose2FjY2VudDpzZT0hMSxzdXN0YWluU3RlcHM6aGU9MCx2ZWxvY2l0eTplZT0xfT17fSl7dmFyIHB0LEN0LFV0LFhlLERlLG10LEJ0LEd0LE90LFBlLHhlLEVlO2NvbnN0IFg9dHlwZW9mIGo9PSJudW1iZXIiP2o6ZS5jdXJyZW50VGltZSsuMDAxLGNlPW8sSz1sKGNlLnZvaWNlU3BlY2lmaWMuaHVtYW5pemUsMCwxKSxhZT0hIWNlLnZvaWNlU3BlY2lmaWMuYW1iaWVudE1vZGUsZmU9c2U9PT0id2VhayIsbWU9c2U9PT0hMDtsZXQgcGU9UWUoY2UuZW52ZWxvcGUuYXR0YWNrLGkoLjA1LC4xKSxLKSxvZT1RZShjZS5lbnZlbG9wZS5kZWNheSxpKC4wNiwuMSksSyksQj1RZShjZS5lbnZlbG9wZS5yZWxlYXNlLGkoLjA0LC4wOCksSyk7Y29uc3Qgdj1NYXRoLm1heCgwLGhlKSpjKCksRj1DKCk7b2U9VHQob2UsRiksQj1UdChCLEYpLHBlPUV0KHBlLHQpLG9lPUl0KG9lLHQpLEI9anQoQix0KTtjb25zdCBXPWwoY2UuZm0uYmFzZUh6LDE4LDQwMCksWT1XKnRuKC4wMSpLKSxKPWwoVytZLDIwLDEyMDApO2xldCBpZT1sKGNlLmZtLm1vZFJhdGlvLDEsMTIpO2llPU1hdGgubWF4KDEsaWUrdG4oLjAyKSpLKTtsZXQgdWU9bChjZS5mbS5tb2RJbmRleCwxLDMwMCk7bWUmJih1ZSo9bChjZS5mbS5pbmRleE9uQWNjZW50Qm9vc3QsMSwyKSksZmUmJih1ZSo9Ljg1KSxxKHt0aW1lOlgsYWNjZW50OnNlLHN1c3RhaW5TdGVwczpoZSx2ZWxvY2l0eTplZSxjYXJyaWVySHo6Sixtb2RSYXRpbzppZSxtb2RJbmRleDp1ZX0pO2xldCBuZT1sKGVlLDAsMSk7bWUmJihuZSo9YnQoaSgxLDIpKSksZmUmJihuZSo9LjgpLG5lKj1sKGNlLnZvaWNlU3BlY2lmaWMub3V0cHV0R2Fpbj8/LjIsMCwxKSxhZSYmZC5sZW5ndGg+MCYmZC5zbGljZSgpLmZvckVhY2gocWU9PlEocWUsWCkpLCQoKTtjb25zdCB0ZT1IKCksWj1bXSxyZT1bdGVdLGRlPWUuY3JlYXRlT3NjaWxsYXRvcigpO2RlLnR5cGU9InNpbmUiO2NvbnN0IGJlPWUuY3JlYXRlT3NjaWxsYXRvcigpLFNlPVN0cmluZyhjZS5mbS5tb2RXYXZlZm9ybXx8InNpbmUiKTtiZS50eXBlPVNlPT09InNxdWFyZSJ8fFNlPT09InNhd3Rvb3RoInx8U2U9PT0idHJpYW5nbGUiP1NlOiJzaW5lIjtjb25zdCB6ZT1lLmNyZWF0ZUdhaW4oKTtkZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoSixYKTtjb25zdCBCZT1sKEoqaWUsMSwxOGUzKTtiZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoQmUsWCk7Y29uc3QgUmU9bChKKi4wMTIsMSwyMjAwKSxBZT1sKHVlKlJlLDEsNGUzKTt6ZS5nYWluLnNldFZhbHVlQXRUaW1lKEFlLFgpLGJlLmNvbm5lY3QoemUpLHplLmNvbm5lY3QoZGUuZnJlcXVlbmN5KTtjb25zdCB2ZT1lLmNyZWF0ZUdhaW4oKTt2ZS5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsWCkscmUucHVzaCh2ZSk7dHJ5e2NvbnN0IHFlPVN0cmluZyh0JiZ0LnNpZGUpLnRvVXBwZXJDYXNlKCk9PT0iQiI/LjA0Oi4wMjtwZT1sKHBlKiguOTgrLjA2Km5lKSwuMDAxLHFlKX1jYXRjaHtwZT1sKHBlKiguOTgrLjA2Km5lKSwuMDAxLC4wMil9Y29uc3QgR2U9WCtwZSxOZT1HZStvZSxrZT1OZSt2LF9lPWtlK0IsbGU9Y2UuZW52ZWxvcGUuc3VzdGFpbixUZT12PjA/TWF0aC5tYXgoLjA4LGxlKTpsZTt2ZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKDEsR2UpLHZlLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoVGUsTmUpLHZlLmdhaW4uc2V0VmFsdWVBdFRpbWUoVGUsa2UpLHZlLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LF9lKTtjb25zdCBnZT1sKCgocHQ9Y2UudG9uZSk9PW51bGw/dm9pZCAwOnB0LmZpbHRlckZvbGxvd0Ftb3VudCk/PzAsMCwxKTtsZXQgd2U9dmUsT2U9bnVsbDtpZihnZT4xZS00KXtPZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpLE9lLnR5cGU9Imxvd3Bhc3MiO2NvbnN0IHFlPWwoKChDdD1jZS50b25lKT09bnVsbD92b2lkIDA6Q3QuZmlsdGVyQmFzZUh6KT8/NGUzLDIwMCwxNmUzKSx0dD1sKCgoVXQ9Y2UudG9uZSk9PW51bGw/dm9pZCAwOlV0LmZpbHRlck1heEh6KT8/MTJlMyw1MDAsMmU0KSxaZT1sKCgoWGU9Y2UudG9uZSk9PW51bGw/dm9pZCAwOlhlLmZpbHRlclEpPz8uNzA3LC41LDUpO09lLlEuc2V0VmFsdWVBdFRpbWUoWmUsWCksT2UuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKHFlLFgpO2NvbnN0IHJ0PWwocWUrZ2UqKHR0LXFlKSw1MCwyZTQpO09lLmZyZXF1ZW5jeS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShydCxHZSksT2UuZnJlcXVlbmN5LmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHFlLE5lKSxPZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUocWUsa2UpLE9lLmZyZXF1ZW5jeS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShNYXRoLm1heCg1MCxxZSouOSksX2UpLHdlPU9lLHJlLnB1c2goT2UpfWNvbnN0IEhlPWwoKChEZT1jZS5meCk9PW51bGw/dm9pZCAwOkRlLndhcm10aCk/PzAsMCwxKTtsZXQgVWU9d2U7aWYoSGU+MWUtNCl7Y29uc3QgcWU9ZS5jcmVhdGVXYXZlU2hhcGVyKCksdHQ9MTAyNCxaZT1uZXcgRmxvYXQzMkFycmF5KHR0KSxydD0yKzE4KkhlO2ZvcihsZXQgbHQ9MDtsdDx0dDtsdCsrKXtjb25zdCBvdD1sdC8odHQtMSkqMi0xO1plW2x0XT0oMStydCkqb3QvKDErcnQqTWF0aC5hYnMob3QpKX1xZS5jdXJ2ZT1aZSxxZS5vdmVyc2FtcGxlPSIyeCIsd2UuY29ubmVjdChxZSk7Y29uc3QgZHQ9bCgoKG10PWNlLmZ4KT09bnVsbD92b2lkIDA6bXQud2FybUxvd3Bhc3NIeik/PzkwMCw2MDAsMTIwMCksY3Q9bCgoKEJ0PWNlLmZ4KT09bnVsbD92b2lkIDA6QnQud2FybUJhbmRRKT8/MS42LC41LDQpLGZ0PWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7ZnQudHlwZT0iYmFuZHBhc3MiLGZ0LmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShkdCxYKSxmdC5RLnNldFZhbHVlQXRUaW1lKGN0LFgpO2NvbnN0IG50PWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7bnQudHlwZT0iYmFuZHBhc3MiLG50LmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShkdCxYKSxudC5RLnNldFZhbHVlQXRUaW1lKGN0LFgpLHFlLmNvbm5lY3QoZnQpLGZ0LmNvbm5lY3QobnQpLFVlPW50LHJlLnB1c2gocWUsZnQsbnQpO2NvbnN0IFB0PWwoKChHdD1jZS5meCk9PW51bGw/dm9pZCAwOkd0Lndhcm1CYW5kTGZvSHopPz8uMTIsLjAxLDEpLEplPWwoKChPdD1jZS5meCk9PW51bGw/dm9pZCAwOk90Lndhcm1CYW5kTGZvRGVwdGhIeik/PzgwLDAsMWUzKSxodD1kdC02MDAsdnQ9MTIwMC1kdCxIdD1NYXRoLm1heCgwLE1hdGgubWluKEplLGh0LHZ0KSk7aWYoSHQ+LjUmJlB0PjApe2NvbnN0IGx0PWUuY3JlYXRlT3NjaWxsYXRvcigpO2x0LnR5cGU9InNpbmUiLGx0LmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShQdCxYKTtjb25zdCBvdD1lLmNyZWF0ZUdhaW4oKTtvdC5nYWluLnNldFZhbHVlQXRUaW1lKEh0LFgpLGx0LmNvbm5lY3Qob3QpO3RyeXtvdC5jb25uZWN0KGZ0LmZyZXF1ZW5jeSl9Y2F0Y2h7fXRyeXtvdC5jb25uZWN0KG50LmZyZXF1ZW5jeSl9Y2F0Y2h7fWx0LnN0YXJ0KFgpO2NvbnN0IGt0PV9lKy4wNjt0cnl7bHQuc3RvcChrdCl9Y2F0Y2h7fVoucHVzaChsdCkscmUucHVzaChvdCl9fWRlLmNvbm5lY3QodmUpLFVlLmNvbm5lY3QodGUpLHJlLnB1c2goemUpLFoucHVzaChkZSxiZSk7Y29uc3QgV2U9bCgoKFBlPWNlLm9yZ2FuaWMpPT1udWxsP3ZvaWQgMDpQZS5ub2lzZU1peCk/PzAsMCwxKTtpZihXZT4xZS00KXtjb25zdCBxZT1lLmNyZWF0ZUJ1ZmZlcigxLE1hdGgubWF4KDEsTWF0aC5mbG9vcihlLnNhbXBsZVJhdGUpKSxlLnNhbXBsZVJhdGUpLHR0PXFlLmdldENoYW5uZWxEYXRhKDApO2ZvcihsZXQgdnQ9MDt2dDx0dC5sZW5ndGg7dnQrKyl0dFt2dF09TigpKjItMTtjb25zdCBaZT1lLmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO1plLmJ1ZmZlcj1xZSxaZS5sb29wPSEwO2NvbnN0IHJ0PWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7cnQudHlwZT0ibG93cGFzcyI7Y29uc3QgZHQ9bCgoKHhlPWNlLm9yZ2FuaWMpPT1udWxsP3ZvaWQgMDp4ZS5ub2lzZUxvd3Bhc3NIeik/PzZlMywyMDAsMTZlMyk7cnQuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGR0LFgpO2NvbnN0IGN0PWUuY3JlYXRlR2FpbigpLGZ0PU1hdGgubWF4KDFlLTQsQWUqV2UpO2N0LmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxYKSxaZS5jb25uZWN0KHJ0KSxydC5jb25uZWN0KGN0KTt0cnl7Y3QuY29ubmVjdChkZS5mcmVxdWVuY3kpfWNhdGNoe31jb25zdCBudD1YK01hdGgubWF4KDVlLTQscGUqLjYpLFB0PW50K01hdGgubWF4KC4wMDUsb2UqLjgpLEplPWtlLGh0PV9lO2N0LmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZnQsbnQpLGN0LmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoTWF0aC5tYXgoMWUtNCxmdCouMyksUHQpLGN0LmdhaW4uc2V0VmFsdWVBdFRpbWUoTWF0aC5tYXgoMWUtNCxmdCouMyksSmUpLGN0LmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LGh0KSxaZS5zdGFydChYKSxaZS5zdG9wKGh0Ky4wNiksWi5wdXNoKFplKSxyZS5wdXNoKHJ0LGN0KX1jb25zdCBWZT1lLmNyZWF0ZUdhaW4oKTtWZS5nYWluLnNldFZhbHVlQXRUaW1lKG5lLFgpLHRlLmNvbm5lY3QoVmUpO3RyeXsoRWU9cC5vblRyaWdnZXIpPT1udWxsfHxFZS5jYWxsKHApfWNhdGNoe31WZS5jb25uZWN0KHAuaW5wdXQpO3RyeXtWZS5jb25uZWN0KFQpfWNhdGNoe310cnl7VmUuY29ubmVjdChNKX1jYXRjaHt9cmUucHVzaChWZSksZGUuc3RhcnQoWCksYmUuc3RhcnQoWCk7bGV0IGplPV9lKy4wNjtkZS5zdG9wKGplKSxiZS5zdG9wKGplKTtjb25zdCB1dD17ZW52R2Fpbjp2ZSxzb3VyY2VzOlosbm9kZXM6cmV9O2QucHVzaCh1dCksVih1dCxqZSl9ZnVuY3Rpb24gQShqKXtjb25zdCBzZT10eXBlb2Ygaj09Im51bWJlciI/ajplLmN1cnJlbnRUaW1lO2Quc2xpY2UoKS5mb3JFYWNoKGhlPT5RKGhlLHNlKSksZigpfWZ1bmN0aW9uIHooail7dmFyIGNlO2xldCBzZT17fTtpZighKGomJnR5cGVvZiBqPT0ib2JqZWN0IikpcmV0dXJuO2NvbnN0IGVlPU9iamVjdC5rZXlzKGopLnNvbWUoSz0+Sy5pbmNsdWRlcygiLiIpKSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChqLGEpO2lmKGVlKXNlPXN0KGEsaixzKTtlbHNlIGlmKFgmJnR5cGVvZiBqW2FdPT0ib2JqZWN0Iil7Y29uc3QgSz1xdChqW2FdLFthXSk7c2U9c3QoYSxLLHMpfWVsc2Ugc2U9ajtvPWZhKG8sc2V8fHt9KTt0cnl7bGV0IEs9KGNlPW89PW51bGw/dm9pZCAwOm8udm9pY2VTcGVjaWZpYyk9PW51bGw/dm9pZCAwOmNlLm1vZGUsYWU9W107QXJyYXkuaXNBcnJheShLKT9hZT1LOnR5cGVvZiBLPT0ic3RyaW5nIiYmKGFlPUsuc3BsaXQoL1tccyx8XSsvKS5maWx0ZXIoQm9vbGVhbikpO2NvbnN0IGZlPWFlLm1hcChtZT0+U3RyaW5nKG1lKS50b0xvd2VyQ2FzZSgpKS5zb3J0KCkuam9pbigifCIpO2lmKGZlJiZmZSE9PXUpe2NvbnN0IG1lPXBlPT57Y29uc3Qgb2U9U3RyaW5nKHBlKS50b0xvd2VyQ2FzZSgpO29lPT09Imhhcm1vbmljIj8oby5mbS5tb2RXYXZlZm9ybT1bInRyaWFuZ2xlIiwic2F3dG9vdGgiLCJzcXVhcmUiXVtNYXRoLmZsb29yKE4oKSozKV0sby5meC53YXJtdGg9by5meC53YXJtdGg/Py4xK04oKSouMixvLnRvbmUuZmlsdGVyRm9sbG93QW1vdW50PU1hdGgubWF4KG8udG9uZS5maWx0ZXJGb2xsb3dBbW91bnQ/PzAsLjE1K04oKSouMjUpLG8ub3JnYW5pYy5ub2lzZU1peD1vLm9yZ2FuaWMubm9pc2VNaXg/Py4wNStOKCkqLjEpOm9lPT09Indhcm0iPyhvLmZ4Lndhcm10aD1NYXRoLm1heChvLmZ4Lndhcm10aD8/MCwuNDUrTigpKi4zNSksby5meC53YXJtTG93cGFzc0h6PTY1MCtNYXRoLmZsb29yKE4oKSoyMDApLG8uZngud2FybUJhbmRRPTEuNCtOKCkqMSxvLmZ4Lndhcm1CYW5kTGZvSHo9LjA1K04oKSouMTMsby5meC53YXJtQmFuZExmb0RlcHRoSHo9NDArTigpKjEwMCxvLnRvbmUuZmlsdGVyRm9sbG93QW1vdW50PS4wNStOKCkqLjA4LG8udG9uZS5maWx0ZXJCYXNlSHo9ODAwK04oKSo0MDAsby50b25lLmZpbHRlck1heEh6PTE2MDArTigpKjgwMCxvLmZtLm1vZEluZGV4PWwoKG8uZm0ubW9kSW5kZXg/PzgwKSouNTUsMSwzMDApLG8udm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPWwoKG8udm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPz8uMDEpKi4zNSwuMDAyLC4wMjUpKTpvZT09PSJwZXJjdXNzaXZlIj8oby50b25lLmZpbHRlckZvbGxvd0Ftb3VudD1NYXRoLm1heChvLnRvbmUuZmlsdGVyRm9sbG93QW1vdW50Pz8wLC42K04oKSouMzUpLG8udG9uZS5maWx0ZXJCYXNlSHo9M2UzK04oKSozZTMsby50b25lLmZpbHRlck1heEh6PTllMytOKCkqNWUzLG8udG9uZS5maWx0ZXJRPS43K04oKSouNSxvLmVudmVsb3BlLmF0dGFjaz1sKChvLmVudmVsb3BlLmF0dGFjaz8/LjAxKSouNiwuMDAxLC4wMiksby5lbnZlbG9wZS5kZWNheT1sKChvLmVudmVsb3BlLmRlY2F5Pz8uMikqLjYsLjAxLC4yNSksby5meC53YXJtdGg9by5meC53YXJtdGg/Py4wNStOKCkqLjE1LG8uZm0uYmFzZUh6PWwoKG8uZm0uYmFzZUh6Pz8xMjApKi43LDE4LDQwMCksby52b2ljZVNwZWNpZmljLm91dHB1dEdhaW49bCgoby52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wMTIpKi44LC4wMDIsLjAyNSkpOm9lPT09Im9yZ2FuaWMiJiYoby5vcmdhbmljLm5vaXNlTWl4PU1hdGgubWF4KG8ub3JnYW5pYy5ub2lzZU1peD8/MCwuMTgrTigpKi4yMiksby5vcmdhbmljLm5vaXNlTG93cGFzc0h6PTQ1MDArTigpKjM1MDAsby5meC53YXJtdGg9TWF0aC5tYXgoby5meC53YXJtdGg/PzAsLjI1K04oKSouMzUpLG8uZngud2FybUxvd3Bhc3NIej03NTArTWF0aC5mbG9vcihOKCkqMjUwKSxvLmZ4Lndhcm1CYW5kUT1vLmZ4Lndhcm1CYW5kUT8/MS4yK04oKSouOCxvLmZ4Lndhcm1CYW5kTGZvSHo9by5meC53YXJtQmFuZExmb0h6Pz8uMDQrTigpKi4xLG8uZngud2FybUJhbmRMZm9EZXB0aEh6PW8uZngud2FybUJhbmRMZm9EZXB0aEh6Pz81MCtOKCkqMTIwLG8udG9uZS5maWx0ZXJGb2xsb3dBbW91bnQ9TWF0aC5tYXgoby50b25lLmZpbHRlckZvbGxvd0Ftb3VudD8/MCwuMTUrTigpKi4yNSkpfTthZS5mb3JFYWNoKG1lKSx1PWZlfWVsc2UgZmV8fCh1PSIiKX1jYXRjaHt9JHQoYSxqfHx7fSx7YXV0b1BhbjpwLHNlbmRSZXZlcmI6UCxzZW5kRGVsYXk6TSxzZW5kQnVzMjpULGdldEJwbTpDLGF1ZGlvQ29udGV4dDplfSk7dHJ5e18oISFvLnZvaWNlU3BlY2lmaWMuYW1iaWVudE1vZGUpfWNhdGNoe319ZnVuY3Rpb24gRChqKXtjb25zdCBzZT1qfHxZZSh0KTtvPWZhKHNlPT09IkIiP3hhKCk6V2EoKSx7fSk7Y29uc3QgaGU9YXQoYSxvLHMpO3JldHVybntuZXN0ZWQ6aXQobyksZmxhdDpoZX19ZnVuY3Rpb24gVSgpe3JldHVybiBhdChhLG8scyl9ZnVuY3Rpb24gUigpe3RyeXtmKCl9Y2F0Y2h7fXRyeXt4KCl9Y2F0Y2h7fX1jb25zdCBJPXtvdXRwdXQ6bSxzZW5kQnVzMjpULHNlbmRSZXZlcmI6UCxzZW5kRGVsYXk6TSx0cmlnZ2VyOmssc3RvcDpBLHVwZGF0ZVBhcmFtczp6LHJlZ2VuZXJhdGVQYXJhbXM6RCxnZXRGbGF0UGFyYW1zOlUsZGlzcG9zZTpSLGF1dG9NaXg6Yn07cmV0dXJuIEkuc2lkZT0oKT0+WWUodCksSS5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwPTAsSX1mdW5jdGlvbiBLYSgpe2NvbnN0IGU9e2FtcDp7YXR0YWNrOmkoLjAwMSwuMDMpLGRlY2F5OmkoLjEsLjUpLHN1c3RhaW46aSgwLC4yKSxyZWxlYXNlOmkoLjAzLC40KX0sZm1JbmRleDp7YXR0YWNrOi4wMDEsZGVjYXk6aSguMDYsLjQpLHN1c3RhaW46MCxyZWxlYXNlOmkoLjAyLC4zKX19LG49e2NhcnJpZXJIejppKDEyLDE2MCksbW9kUmF0aW86aSgxLjUsOCksZm1JbmRleFN0YXJ0OmkoMjAsMTUwKSxtb2RXYXZlZm9ybToic2luZSJ9LHQ9e2xvd3Bhc3NIejppKDJlMywxMmUzKSxxOmkoLjUsMil9LGE9e2ZpbHRlckJhc2VIejppKDJlMyw4ZTMpLGZpbHRlck1heEh6OmkoNmUzLDE0ZTMpLGZpbHRlclE6aSguNSwxLjIpLGZpbHRlckZvbGxvd0Ftb3VudDppKDAsMCl9LHM9e3dhcm10aDppKDAsMCksd2FybUxvd3Bhc3NIejppKDYwMCwxMjAwKSx3YXJtQmFuZFE6aSgxLjIsMi4yKSx3YXJtQmFuZExmb0h6OmkoLjA1LC4yKSx3YXJtQmFuZExmb0RlcHRoSHo6aSg0MCwxNDApLGNvbXBTdHJlbmd0aDppKC41LC44KX0sbT17bm9pc2VNaXg6aSgwLDApLG5vaXNlTG93cGFzc0h6OmkoNGUzLDllMyl9LHA9e2h1bWFuaXplOmkoLjEsMSksdGVtcG9CcG06MTIwLHNlY29uZHNQZXJTdGVwOi4xMjUsYWNjZW50QnJpZ2h0bmVzc0ZhY3RvcjppKDEuMDUsMiksdmVsb2NpdHlHYWluU2NhbGU6aSguNSwyLjUpLG91dHB1dEdhaW46aSguMDA4LC4wNiksYW1iaWVudE1vZGU6ITEsbW9kZTpudWxsfTtyZXR1cm57ZW52ZWxvcGU6ZSx0aW1icmU6bixmaWx0ZXI6dCx0b25lOmEsZng6cyxvcmdhbmljOm0sdm9pY2VTcGVjaWZpYzpwfX1mdW5jdGlvbiBZYSgpe2NvbnN0IGU9e2FtcDp7YXR0YWNrOmkoLjAwMiwuMDI1KSxkZWNheTppKC4xMiwuNiksc3VzdGFpbjppKDAsLjE4KSxyZWxlYXNlOmkoLjA2LC41KX0sZm1JbmRleDp7YXR0YWNrOi4wMDEsZGVjYXk6aSguMDgsLjQ1KSxzdXN0YWluOjAscmVsZWFzZTppKC4wNSwuMzUpfX0sbj17Y2Fycmllckh6OmkoMTAsMTQwKSxtb2RSYXRpbzppKDEuNSw2KSxmbUluZGV4U3RhcnQ6aSgxOCwxMjApLG1vZFdhdmVmb3JtOiJzaW5lIn0sdD17bG93cGFzc0h6OmkoMTUwMCw4ZTMpLHE6aSguNSwxLjYpfSxhPXtmaWx0ZXJCYXNlSHo6aSgxNTAwLDZlMyksZmlsdGVyTWF4SHo6aSgzZTMsMWU0KSxmaWx0ZXJROmkoLjYsMS4yKSxmaWx0ZXJGb2xsb3dBbW91bnQ6aSgwLC4zKX0scz17d2FybXRoOmkoLjEyLC42KSx3YXJtTG93cGFzc0h6OmkoNzAwLDExMDApLHdhcm1CYW5kUTppKDEuMiwyLjIpLHdhcm1CYW5kTGZvSHo6aSguMDQsLjE1KSx3YXJtQmFuZExmb0RlcHRoSHo6aSg0MCwxMjApLGNvbXBTdHJlbmd0aDppKC42LC45KX0sbT17bm9pc2VNaXg6aSgwLC4xNSksbm9pc2VMb3dwYXNzSHo6aSgzZTMsOGUzKX0scD17aHVtYW5pemU6aSguMiwxKSx0ZW1wb0JwbToxMjAsc2Vjb25kc1BlclN0ZXA6LjEyNSxhY2NlbnRCcmlnaHRuZXNzRmFjdG9yOmkoMS4wNSwxLjYpLHZlbG9jaXR5R2FpblNjYWxlOmkoLjUsMiksb3V0cHV0R2FpbjppKC4wMDYsLjAzNSksYW1iaWVudE1vZGU6ITEsbW9kZTpudWxsfSxTPXtpbnB1dEJvb3N0OjEscHJlRGVsYXlTZWNSYW5nZTpbLjAxMiwuMDRdLHdldFRyaW06LjY1LGdlbmVyYXRpdmU6e251bUJhbmRzOnttaW46MyxtYXg6Nn0sYmFzZUh6OnttaW46MjUwLG1heDoxNTAwfSxyYXRpb3M6WzEsNS80LDQvMywzLzIsNy80LE1hdGguU1FSVDIsMl0sb2N0YXZlczpbLTEsMCwxXSxxOnttaW46MixtYXg6MTZ9LGdhaW46e21pbjouMTUsbWF4Oi43fSxjb21iRmVlZGJhY2s6e21pbjouMyxtYXg6Ljd9LGNvbWJEZWxheU11bHQ6e21pbjoyLG1heDo1fSxkYW1wTXVsdGlwbGllcjozfX07cmV0dXJue2VudmVsb3BlOmUsdGltYnJlOm4sZmlsdGVyOnQsdG9uZTphLGZ4OnMsb3JnYW5pYzptLHZvaWNlU3BlY2lmaWM6cCxyZXNvbkZ4OlN9fWZ1bmN0aW9uIGhhKGUsbil7Y29uc3QgdD1pdChlKTtpZighbilyZXR1cm4gdDtmb3IoY29uc3QgYSBvZlsiZW52ZWxvcGUiLCJ0aW1icmUiLCJmaWx0ZXIiLCJ0b25lIiwiZngiLCJvcmdhbmljIiwidm9pY2VTcGVjaWZpYyJdKW5bYV0mJih0W2FdPXsuLi50W2FdLC4uLm5bYV19KTtyZXR1cm4gdC5lbnZlbG9wZS5hbXAuYXR0YWNrPWwodC5lbnZlbG9wZS5hbXAuYXR0YWNrLC4wMDEsLjAzKSx0LmVudmVsb3BlLmFtcC5kZWNheT1sKHQuZW52ZWxvcGUuYW1wLmRlY2F5LC4xLC41KSx0LmVudmVsb3BlLmFtcC5zdXN0YWluPWwodC5lbnZlbG9wZS5hbXAuc3VzdGFpbiwwLC4yKSx0LmVudmVsb3BlLmFtcC5yZWxlYXNlPWwodC5lbnZlbG9wZS5hbXAucmVsZWFzZSwuMDMsLjQpLHQuZW52ZWxvcGUuZm1JbmRleC5hdHRhY2s9bCh0LmVudmVsb3BlLmZtSW5kZXguYXR0YWNrLDVlLTQsLjAxKSx0LmVudmVsb3BlLmZtSW5kZXguZGVjYXk9bCh0LmVudmVsb3BlLmZtSW5kZXguZGVjYXksLjA2LC40KSx0LmVudmVsb3BlLmZtSW5kZXguc3VzdGFpbj0wLHQuZW52ZWxvcGUuZm1JbmRleC5yZWxlYXNlPWwodC5lbnZlbG9wZS5mbUluZGV4LnJlbGVhc2UsLjAyLC4zKSx0LnRpbWJyZS5jYXJyaWVySHo9bCh0LnRpbWJyZS5jYXJyaWVySHosMTIsMjAwKSx0LnRpbWJyZS5tb2RSYXRpbz1sKHQudGltYnJlLm1vZFJhdGlvLDEuNSw4KSx0LnRpbWJyZS5mbUluZGV4U3RhcnQ9bCh0LnRpbWJyZS5mbUluZGV4U3RhcnQsMjAsMTUwKSx0LnRvbmU9dC50b25lfHx7fSx0LnRvbmUuZmlsdGVyQmFzZUh6PWwodC50b25lLmZpbHRlckJhc2VIej8/NGUzLDIwMCwxNmUzKSx0LnRvbmUuZmlsdGVyTWF4SHo9bCh0LnRvbmUuZmlsdGVyTWF4SHo/PzEyZTMsNTAwLDJlNCksdC50b25lLmZpbHRlclE9bCh0LnRvbmUuZmlsdGVyUT8/LjcwNywuNSw1KSx0LnRvbmUuZmlsdGVyRm9sbG93QW1vdW50PWwodC50b25lLmZpbHRlckZvbGxvd0Ftb3VudD8/MCwwLDEpLHQuZmlsdGVyLmxvd3Bhc3NIej1sKHQuZmlsdGVyLmxvd3Bhc3NIej8/NmUzLDJlMywxMmUzKSx0LmZpbHRlci5xPWwodC5maWx0ZXIucT8/LjcwNywuNSwyKSx0LmZ4PXQuZnh8fHt9LHQuZngud2FybXRoPWwodC5meC53YXJtdGg/PzAsMCwxKSx0LmZ4Lndhcm1Mb3dwYXNzSHo9bCh0LmZ4Lndhcm1Mb3dwYXNzSHo/PzkwMCw2MDAsMTIwMCksdC5meC53YXJtQmFuZFE9bCh0LmZ4Lndhcm1CYW5kUT8/MS42LC41LDQpLHQuZngud2FybUJhbmRMZm9Iej1sKHQuZngud2FybUJhbmRMZm9Iej8/LjEyLC4wMSwxKSx0LmZ4Lndhcm1CYW5kTGZvRGVwdGhIej1sKHQuZngud2FybUJhbmRMZm9EZXB0aEh6Pz84MCwwLDFlMyksdC5meC5jb21wU3RyZW5ndGg9bCh0LmZ4LmNvbXBTdHJlbmd0aD8/LjY1LDAsMSksdC5vcmdhbmljPXQub3JnYW5pY3x8e30sdC5vcmdhbmljLm5vaXNlTWl4PWwodC5vcmdhbmljLm5vaXNlTWl4Pz8wLDAsMSksdC5vcmdhbmljLm5vaXNlTG93cGFzc0h6PWwodC5vcmdhbmljLm5vaXNlTG93cGFzc0h6Pz82ZTMsNTAwLDE2ZTMpLHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT1sKHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT8/LjYsMCwxKSx0LnZvaWNlU3BlY2lmaWMudGVtcG9CcG09Z3QodC52b2ljZVNwZWNpZmljLnRlbXBvQnBtPz8kZS5kZWZhdWx0QnBtKSx0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA9bCh0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA/Py4xMjUsLjAyLDEpLHQudm9pY2VTcGVjaWZpYy5hY2NlbnRCcmlnaHRuZXNzRmFjdG9yPWwodC52b2ljZVNwZWNpZmljLmFjY2VudEJyaWdodG5lc3NGYWN0b3I/PzEuMiwxLjA1LDIpLHQudm9pY2VTcGVjaWZpYy52ZWxvY2l0eUdhaW5TY2FsZT1sKHQudm9pY2VTcGVjaWZpYy52ZWxvY2l0eUdhaW5TY2FsZT8/MSwuNSwyLjUpLHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPWwodC52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wOSwuMDA4LC4wNiksdC52b2ljZVNwZWNpZmljLm1vZGUhPW51bGwmJih0LnZvaWNlU3BlY2lmaWMubW9kZT1TdHJpbmcodC52b2ljZVNwZWNpZmljLm1vZGUpKSx0fWZ1bmN0aW9uIGdpKGUsbix0PXt9KXtjb25zdCBhPSJmbUJsaXAyIixzPXthdHRhY2s6ImVudmVsb3BlLmFtcC5hdHRhY2siLGRlY2F5OiJlbnZlbG9wZS5hbXAuZGVjYXkiLHN1c3RhaW46ImVudmVsb3BlLmFtcC5zdXN0YWluIixyZWxlYXNlOiJlbnZlbG9wZS5hbXAucmVsZWFzZSIsYmFzZUZyZXE6InRpbWJyZS5jYXJyaWVySHoiLHJhdGlvOiJ0aW1icmUubW9kUmF0aW8iLGluZGV4OiJ0aW1icmUuZm1JbmRleFN0YXJ0Iixtb2RXYXZlZm9ybToidGltYnJlLm1vZFdhdmVmb3JtIiwiZW52ZWxvcGUuYW1wLmF0dGFjayI6ImVudmVsb3BlLmFtcC5hdHRhY2siLCJlbnZlbG9wZS5hbXAuZGVjYXkiOiJlbnZlbG9wZS5hbXAuZGVjYXkiLCJlbnZlbG9wZS5hbXAuc3VzdGFpbiI6ImVudmVsb3BlLmFtcC5zdXN0YWluIiwiZW52ZWxvcGUuYW1wLnJlbGVhc2UiOiJlbnZlbG9wZS5hbXAucmVsZWFzZSIsImVudmVsb3BlLmZtSW5kZXguYXR0YWNrIjoiZW52ZWxvcGUuZm1JbmRleC5hdHRhY2siLCJlbnZlbG9wZS5mbUluZGV4LmRlY2F5IjoiZW52ZWxvcGUuZm1JbmRleC5kZWNheSIsImVudmVsb3BlLmZtSW5kZXguc3VzdGFpbiI6ImVudmVsb3BlLmZtSW5kZXguc3VzdGFpbiIsImVudmVsb3BlLmZtSW5kZXgucmVsZWFzZSI6ImVudmVsb3BlLmZtSW5kZXgucmVsZWFzZSIsInRpbWJyZS5jYXJyaWVySHoiOiJ0aW1icmUuY2Fycmllckh6IiwidGltYnJlLm1vZFJhdGlvIjoidGltYnJlLm1vZFJhdGlvIiwidGltYnJlLmZtSW5kZXhTdGFydCI6InRpbWJyZS5mbUluZGV4U3RhcnQiLCJ0aW1icmUubW9kV2F2ZWZvcm0iOiJ0aW1icmUubW9kV2F2ZWZvcm0iLCJmaWx0ZXIubG93cGFzc0h6IjoiZmlsdGVyLmxvd3Bhc3NIeiIsImZpbHRlci5xIjoiZmlsdGVyLnEiLGZpbHRlckJhc2U6InRvbmUuZmlsdGVyQmFzZUh6IixmaWx0ZXJNYXg6InRvbmUuZmlsdGVyTWF4SHoiLGZpbHRlclE6InRvbmUuZmlsdGVyUSIsZmlsdGVyRm9sbG93OiJ0b25lLmZpbHRlckZvbGxvd0Ftb3VudCIsd2FybXRoOiJmeC53YXJtdGgiLHdhcm1Mb3dwYXNzSHo6ImZ4Lndhcm1Mb3dwYXNzSHoiLHdhcm1CYW5kUToiZngud2FybUJhbmRRIix3YXJtQmFuZExmb0h6OiJmeC53YXJtQmFuZExmb0h6Iix3YXJtQmFuZExmb0RlcHRoSHo6ImZ4Lndhcm1CYW5kTGZvRGVwdGhIeiIsY29tcFN0cmVuZ3RoOiJmeC5jb21wU3RyZW5ndGgiLG5vaXNlTWl4OiJvcmdhbmljLm5vaXNlTWl4Iixub2lzZUxvd3Bhc3NIejoib3JnYW5pYy5ub2lzZUxvd3Bhc3NIeiIsInZvaWNlU3BlY2lmaWMuaHVtYW5pemUiOiJ2b2ljZVNwZWNpZmljLmh1bWFuaXplIiwidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSI6InZvaWNlU3BlY2lmaWMudGVtcG9CcG0iLCJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjoidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCIsInZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6InZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiIsYW1iaWVudE1vZGU6InZvaWNlU3BlY2lmaWMuYW1iaWVudE1vZGUiLG1vZGU6InZvaWNlU3BlY2lmaWMubW9kZSIsInZvaWNlU3BlY2lmaWMubW9kZSI6InZvaWNlU3BlY2lmaWMubW9kZSJ9LHtvdXRwdXQ6bSxhdXRvUGFuOnAsZHJ5QnVzOlMsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHNlbmRCdXMyOlQsd2lyZVBhbjpHLHRhcFJldmVyYjpFLHRhcERlbGF5OkwsZGlzcG9zZUlPOnh9PVF0KGUse30pLE89ZS5jcmVhdGVHYWluKCk7Ty5nYWluLnNldFZhbHVlQXRUaW1lKDEsZS5jdXJyZW50VGltZSksTy5jb25uZWN0KG0pO2NvbnN0IHc9WWUodCk9PT0iQiI/WWEoKTpLYSgpO2xldCBvPWhhKHcsbik7dHJ5e2NvbnN0IEk9byYmby52b2ljZVNwZWNpZmljJiZvLnZvaWNlU3BlY2lmaWMubW9kZTtpZihJPT1udWxsfHwoQXJyYXkuaXNBcnJheShJKT9JLmxlbmd0aD09PTA6U3RyaW5nKEkpLnRyaW0oKT09PSIiKSl7by50aW1icmUuY2Fycmllckh6PWwoKG8udGltYnJlLmNhcnJpZXJIej8/MTIwKSouNiwxMiw2MCk7dHJ5e28uZW52ZWxvcGU9by5lbnZlbG9wZXx8e30sby5lbnZlbG9wZS5hbXA9by5lbnZlbG9wZS5hbXB8fHt9LG8uZW52ZWxvcGUuZm1JbmRleD1vLmVudmVsb3BlLmZtSW5kZXh8fHt9LG8uZW52ZWxvcGUuYW1wLmF0dGFjaz1sKChvLmVudmVsb3BlLmFtcC5hdHRhY2s/Py4wMSkqLjQsLjAwMSwuMDA4KSxvLmVudmVsb3BlLmFtcC5kZWNheT1sKChvLmVudmVsb3BlLmFtcC5kZWNheT8/LjIpKi41LC4xLC4yKSxvLmVudmVsb3BlLmFtcC5zdXN0YWluPWwoKG8uZW52ZWxvcGUuYW1wLnN1c3RhaW4/PzApKi4yLDAsLjA4KSxvLmVudmVsb3BlLmFtcC5yZWxlYXNlPWwoKG8uZW52ZWxvcGUuYW1wLnJlbGVhc2U/Py4xMikqLjUsLjAzLC4xKSxvLmVudmVsb3BlLmZtSW5kZXguZGVjYXk9bCgoby5lbnZlbG9wZS5mbUluZGV4LmRlY2F5Pz8uMTUpKi43LC4wNiwuMiksby5lbnZlbG9wZS5mbUluZGV4LnJlbGVhc2U9bCgoby5lbnZlbG9wZS5mbUluZGV4LnJlbGVhc2U/Py4wNikqLjcsLjAyLC4xMil9Y2F0Y2h7fX19Y2F0Y2h7fWNvbnN0IEM9KCk9PkF0KG8udm9pY2VTcGVjaWZpYy50ZW1wb0JwbSksYz0oKT0+RnQoby52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwfHwuMTI1KTtsZXQgZD1bXTtjb25zdCBnPTg7bGV0IHU9IiI7dHJ5e1MuY29ubmVjdChPKX1jYXRjaHt9dHJ5e0UoTyl9Y2F0Y2h7fXRyeXtMKE8pfWNhdGNoe31jb25zdCBiPVZhKGUpO2IudXBkYXRlUGFyYW1zKHtjb21wVGhyZXNob2xkOi01LGNvbXBSYXRpbzo1LGNvbXBBdHRhY2s6NCxjb21wUmVsZWFzZToxMDAsdXB3YXJkVGhyZXNob2xkOi0yLHVwd2FyZFJhdGlvOjcsdXB3YXJkTWl4RGI6LTQ1LGFnY1RhcmdldERiOi0xMDAsYWdjUmVzcG9uc2VNczo3MDB9KTt0cnl7RygpfWNhdGNoe310cnl7cC5vdXRwdXQuY29ubmVjdChiLmlucHV0KX1jYXRjaHt9dHJ5e2Iub3V0cHV0LmNvbm5lY3QoUyl9Y2F0Y2h7fWxldCBoPW51bGw7ZnVuY3Rpb24gZigpe3RyeXtoJiZjbGVhclRpbWVvdXQoaCl9Y2F0Y2h7fWg9bnVsbDt0cnl7Ty5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhlLmN1cnJlbnRUaW1lKX1jYXRjaHt9Ty5nYWluLnNldFZhbHVlQXRUaW1lKDEsZS5jdXJyZW50VGltZSl9ZnVuY3Rpb24geSgpe2NvbnN0IEk9ZS5jdXJyZW50VGltZSxqPU8uZ2Fpbi52YWx1ZSxzZT1sKGkoLjM1LDEpLDAsMS4yKSxoZT1sKGkoMywxMiksMSwzMCk7dHJ5e08uZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoSSksTy5nYWluLnNldFZhbHVlQXRUaW1lKE1hdGgubWF4KDFlLTQsaiksSSksTy5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHNlLEkraGUpfWNhdGNoe310cnl7aCYmY2xlYXJUaW1lb3V0KGgpfWNhdGNoe31oPXNldFRpbWVvdXQoeSxNYXRoLm1heCg1MCxoZSoxZTMtMjApKX1mdW5jdGlvbiBfKEkpe0k/aHx8eSgpOmYoKX1fKCEhKG8mJm8udm9pY2VTcGVjaWZpYyYmby52b2ljZVNwZWNpZmljLmFtYmllbnRNb2RlKSk7ZnVuY3Rpb24gSChJLGope2NvbnN0IHNlPShqLWUuY3VycmVudFRpbWUpKjFlMysyMDA7c2V0VGltZW91dCgoKT0+e3RyeXtJLm5vZGVzLmZvckVhY2goaGU9Pnt0cnl7aGUuZGlzY29ubmVjdCgpfWNhdGNoe319KX1jYXRjaHt9ZD1kLmZpbHRlcihoZT0+aGUhPT1JKX0sTWF0aC5tYXgoMCxzZSkpfWZ1bmN0aW9uIFYoSSxqKXtjb25zdCBzZT0odHlwZW9mIGo9PSJudW1iZXIiP2o6ZS5jdXJyZW50VGltZSkrNWUtNDt0cnl7SS5hbXAuZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoc2UpO2NvbnN0IGVlPU1hdGgubWF4KEkuYW1wLmdhaW4udmFsdWUsMWUtNCk7SS5hbXAuZ2Fpbi5zZXRWYWx1ZUF0VGltZShlZSxzZSksSS5hbXAuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsc2UrLjAzKX1jYXRjaHt9Y29uc3QgaGU9c2UrLjA1O2Zvcihjb25zdCBlZSBvZiBJLnNvdXJjZXMpdHJ5e2VlLnN0b3AoaGUpfWNhdGNoe31IKEksaGUpfWZ1bmN0aW9uIFEoKXtkLmxlbmd0aD49ZyYmVihkWzBdLGUuY3VycmVudFRpbWUpfWNvbnN0ICQ9ST0+e3RyeXtjb25zdCBqPXQmJnQuZXZlbnRzO2omJmouZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOkl9KSl9Y2F0Y2h7fX07ZnVuY3Rpb24gcShJLHthY2NlbnQ6aj0hMSxzdXN0YWluU3RlcHM6c2U9MCx2ZWxvY2l0eTpoZT0xfT17fSl7dmFyIFBlLHhlLEVlLHFlLHR0LFplLHJ0LGR0LGN0LGZ0LG50LFB0O2xldCBlZT10eXBlb2YgST09Im51bWJlciI/STplLmN1cnJlbnRUaW1lKy4wMDE7KCFOdW1iZXIuaXNGaW5pdGUoZWUpfHxlZTw9MCkmJihlZT1lLmN1cnJlbnRUaW1lKy4wMDEpO2NvbnN0IFg9byxjZT1sKFgudm9pY2VTcGVjaWZpYy5odW1hbml6ZSwwLDEpLEs9ISFYLnZvaWNlU3BlY2lmaWMuYW1iaWVudE1vZGUsYWU9aj09PSJ3ZWFrIixmZT1qPT09ITA7bGV0IG1lPVFlKFguZW52ZWxvcGUuYW1wLmF0dGFjaywuMDUsY2UpLHBlPVFlKFguZW52ZWxvcGUuYW1wLmRlY2F5LC4xLGNlKTtjb25zdCBvZT1sKFguZW52ZWxvcGUuYW1wLnN1c3RhaW4sMCwxKTtsZXQgQj1RZShYLmVudmVsb3BlLmFtcC5yZWxlYXNlLC4wOCxjZSk7Y29uc3Qgdj1OdW1iZXIuaXNGaW5pdGUoQygpKT9DKCk6MTIwO3BlPVR0KHBlLHYpLEI9VHQoQix2KSxtZT1FdChtZSx0KSxwZT1JdChwZSx0KSxCPWp0KEIsdCk7Y29uc3QgRj1sKFguZW52ZWxvcGUuZm1JbmRleC5hdHRhY2ssNWUtNCwuMDIpO2xldCBXPVFlKFguZW52ZWxvcGUuZm1JbmRleC5kZWNheSwuMDgsY2UpLFk9UWUoWC5lbnZlbG9wZS5mbUluZGV4LnJlbGVhc2UsLjA4LGNlKTtmZSYmKFcqPS45MiksVz1UdChXLHYpLFk9VHQoWSx2KTtsZXQgSj1sKFgudGltYnJlLmNhcnJpZXJIeiwxNSw4MDApO051bWJlci5pc0Zpbml0ZShKKXx8KEo9MjIwKTtsZXQgaWU9bChYLnRpbWJyZS5tb2RSYXRpbywxLDYpO051bWJlci5pc0Zpbml0ZShpZSl8fChpZT0yKTtjb25zdCB1ZT1RZShwZSwuMSxjZSksbmU9UWUoWC50aW1icmUuZm1JbmRleFN0YXJ0LC4wOCxjZSk7bGV0IHRlPVFlKFguZmlsdGVyLmxvd3Bhc3NIeiwuMDUsY2UpLFo9bChuZSooZmU/WC52b2ljZVNwZWNpZmljLmFjY2VudEJyaWdodG5lc3NGYWN0b3I6MSksMSw0MDApO051bWJlci5pc0Zpbml0ZShaKXx8KFo9NTApLGFlJiYoWio9LjkyKSxhZSYmKHRlKj1pKC45LC45NSkpLGZlJiYodGUqPWkoMS4wNCwxLjEpKTtsZXQgcmU9bChoZSwwLDEpKmwoWC52b2ljZVNwZWNpZmljLnZlbG9jaXR5R2FpblNjYWxlPz8xLC4yLDIpO2ZlJiYocmUqPWJ0KDEpKSxhZSYmKHJlKj0uOCkscmUqPWwoWC52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4yNCwwLDEpLHRlKj0uOTgrLjA0KmwoaGUsMCwxKSwkKHt0aW1lOmVlLGFjY2VudDpqLHN1c3RhaW5TdGVwczpzZSx2ZWxvY2l0eTpoZSxjYXJyaWVySHo6Sixtb2RSYXRpbzppZSxmbUluZGV4U3RhcnQ6Wn0pLFEoKTtjb25zdCBkZT1lLmNyZWF0ZUdhaW4oKTtkZS5nYWluLnNldFZhbHVlQXRUaW1lKDEsZWUpO2NvbnN0IGJlPVtdLFNlPVtkZV0semU9ZS5jcmVhdGVPc2NpbGxhdG9yKCk7emUudHlwZT0ic2luZSIsemUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKEosZWUpO2NvbnN0IEJlPWUuY3JlYXRlT3NjaWxsYXRvcigpLFJlPVN0cmluZyhYLnRpbWJyZS5tb2RXYXZlZm9ybXx8InNpbmUiKTtCZS50eXBlPVJlPT09InNxdWFyZSJ8fFJlPT09InNhd3Rvb3RoInx8UmU9PT0idHJpYW5nbGUiP1JlOiJzaW5lIixCZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobChKKmllLDEsMThlMyksZWUpO2NvbnN0IEFlPWUuY3JlYXRlR2FpbigpLHZlPWwoSiouMDEyLC41LDIyMDApO2xldCBHZT1sKFoqdmUsMSw2ZTMpOyghTnVtYmVyLmlzRmluaXRlKEdlKXx8R2U8PTApJiYoR2U9MSksQWUuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxZS00LGVlKSxCZS5jb25uZWN0KEFlKSxBZS5jb25uZWN0KHplLmZyZXF1ZW5jeSk7Y29uc3QgTmU9ZWUrRixNZT1OZStXLGtlPU1lLF9lPWtlK1k7aWYoIU51bWJlci5pc0Zpbml0ZShOZSl8fCFOdW1iZXIuaXNGaW5pdGUoTWUpKXJldHVybjtBZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKE1hdGgubWF4KDFlLTQsR2UpLE5lKSxBZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsTWUpLEFlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxrZSksQWUuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxZS00LF9lKTtjb25zdCBsZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO2xlLnR5cGU9Imxvd3Bhc3MiO2NvbnN0IFRlPWwoWC5maWx0ZXIucSwuNSw1KSxnZT1sKHRlLDUwMCwxNmUzKTtsZS5RLnNldFZhbHVlQXRUaW1lKE51bWJlci5pc0Zpbml0ZShUZSk/VGU6LjcwNyxlZSksbGUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKE51bWJlci5pc0Zpbml0ZShnZSk/Z2U6NmUzLGVlKTtjb25zdCB3ZT1lLmNyZWF0ZUdhaW4oKTt3ZS5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsZWUpLHplLmNvbm5lY3QobGUpLGxlLmNvbm5lY3Qod2UpO2NvbnN0IE9lPWwoKChQZT1YLnRvbmUpPT1udWxsP3ZvaWQgMDpQZS5maWx0ZXJGb2xsb3dBbW91bnQpPz8wLDAsMSk7bGV0IEhlPXdlO2lmKE9lPjFlLTQpe2NvbnN0IEplPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7SmUudHlwZT0ibG93cGFzcyI7Y29uc3QgaHQ9bCgoKHhlPVgudG9uZSk9PW51bGw/dm9pZCAwOnhlLmZpbHRlckJhc2VIeik/PzRlMywyMDAsMTZlMyksdnQ9bCgoKEVlPVgudG9uZSk9PW51bGw/dm9pZCAwOkVlLmZpbHRlck1heEh6KT8/MTJlMyw1MDAsMmU0KSxIdD1sKCgocWU9WC50b25lKT09bnVsbD92b2lkIDA6cWUuZmlsdGVyUSk/Py43MDcsLjUsNSk7SmUuUS5zZXRWYWx1ZUF0VGltZShIdCxlZSksSmUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGh0LGVlKTtjb25zdCBsdD1lZSttZSxvdD1sdCt1ZSxrdD1OdW1iZXIuaXNGaW5pdGUoYygpKSYmYygpPjA/YygpOi4xMjUsX3Q9TWF0aC5tYXgoMCxzZSkqa3Qsc249b3QrX3QsVG49c24rQixwbj1sKGh0K09lKih2dC1odCksNTAsMmU0KTtKZS5mcmVxdWVuY3kubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUocG4sbHQpLEplLmZyZXF1ZW5jeS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShodCxvdCksSmUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGh0LHNuKSxKZS5mcmVxdWVuY3kubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoTWF0aC5tYXgoNTAsaHQqLjkpLFRuKSxIZS5jb25uZWN0KEplKSxIZT1KZSxTZS5wdXNoKEplKX1jb25zdCBVZT1sKCgodHQ9WC5meCk9PW51bGw/dm9pZCAwOnR0Lndhcm10aCk/PzAsMCwxKTtsZXQgV2U9SGU7aWYoVWU+MWUtNCl7Y29uc3QgSmU9ZS5jcmVhdGVXYXZlU2hhcGVyKCksaHQ9MTAyNCx2dD1uZXcgRmxvYXQzMkFycmF5KGh0KSxIdD0yKzE4KlVlO2ZvcihsZXQgRHQ9MDtEdDxodDtEdCsrKXtjb25zdCBLdD1EdC8oaHQtMSkqMi0xO3Z0W0R0XT0oMStIdCkqS3QvKDErSHQqTWF0aC5hYnMoS3QpKX1KZS5jdXJ2ZT12dCxKZS5vdmVyc2FtcGxlPSIyeCIsSGUuY29ubmVjdChKZSk7Y29uc3QgbHQ9bCgoKFplPVguZngpPT1udWxsP3ZvaWQgMDpaZS53YXJtTG93cGFzc0h6KT8/OTAwLDYwMCwxMjAwKSxvdD1sKCgocnQ9WC5meCk9PW51bGw/dm9pZCAwOnJ0Lndhcm1CYW5kUSk/PzEuNiwuNSw0KSxrdD1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO2t0LnR5cGU9ImJhbmRwYXNzIixrdC5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobHQsZWUpLGt0LlEuc2V0VmFsdWVBdFRpbWUob3QsZWUpO2NvbnN0IF90PWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7X3QudHlwZT0iYmFuZHBhc3MiLF90LmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShsdCxlZSksX3QuUS5zZXRWYWx1ZUF0VGltZShvdCxlZSksSmUuY29ubmVjdChrdCksa3QuY29ubmVjdChfdCksV2U9X3QsU2UucHVzaChKZSxrdCxfdCk7Y29uc3Qgc249bCgoKGR0PVguZngpPT1udWxsP3ZvaWQgMDpkdC53YXJtQmFuZExmb0h6KT8/LjEyLC4wMSwxKSxUbj1sKCgoY3Q9WC5meCk9PW51bGw/dm9pZCAwOmN0Lndhcm1CYW5kTGZvRGVwdGhIeik/PzgwLDAsMWUzKSxwbj1sdC02MDAsbW49MTIwMC1sdCxPYT1NYXRoLm1heCgwLE1hdGgubWluKFRuLHBuLG1uKSk7aWYoT2E+LjUmJnNuPjApe2NvbnN0IER0PWUuY3JlYXRlT3NjaWxsYXRvcigpO0R0LnR5cGU9InNpbmUiLER0LmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShzbixlZSk7Y29uc3QgS3Q9ZS5jcmVhdGVHYWluKCk7S3QuZ2Fpbi5zZXRWYWx1ZUF0VGltZShPYSxlZSksRHQuY29ubmVjdChLdCk7dHJ5e0t0LmNvbm5lY3Qoa3QuZnJlcXVlbmN5KX1jYXRjaHt9dHJ5e0t0LmNvbm5lY3QoX3QuZnJlcXVlbmN5KX1jYXRjaHt9RHQuc3RhcnQoZWUpO2NvbnN0IEVzPWVlK21lK3VlLElzPU51bWJlci5pc0Zpbml0ZShjKCkpJiZjKCk+MD9jKCk6LjEyNSxqcz1NYXRoLm1heCgwLHNlKSpJcyxRcz1FcytqcytCKy4wNjt0cnl7RHQuc3RvcChRcyl9Y2F0Y2h7fWJlLnB1c2goRHQpLFNlLnB1c2goS3QpfX1XZS5jb25uZWN0KGRlKTtjb25zdCBWZT1lZSttZSxqZT1WZSt1ZSx1dD1NYXRoLm1heCguMDgsb2UpLHB0PU51bWJlci5pc0Zpbml0ZSh1dCk/dXQ6LjE7d2UuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSgxLFZlKSx3ZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHB0LGplKTtjb25zdCBDdD1OdW1iZXIuaXNGaW5pdGUoYygpKSYmYygpPjA/YygpOi4xMjUsVXQ9TWF0aC5tYXgoMCxzZSkqQ3QsWGU9amUrVXQsRGU9WGUrQjtpZighTnVtYmVyLmlzRmluaXRlKFZlKXx8IU51bWJlci5pc0Zpbml0ZShqZSl8fCFOdW1iZXIuaXNGaW5pdGUoWGUpfHwhTnVtYmVyLmlzRmluaXRlKERlKSlyZXR1cm47d2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZShwdCxYZSksd2UuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsRGUpLGJlLnB1c2goemUsQmUpLFNlLnB1c2goQWUsbGUsd2UpO2NvbnN0IG10PWwoKChmdD1YLm9yZ2FuaWMpPT1udWxsP3ZvaWQgMDpmdC5ub2lzZU1peCk/PzAsMCwxKTtpZihtdD4xZS00KXtjb25zdCBKZT1lLmNyZWF0ZUJ1ZmZlcigxLE1hdGgubWF4KDEsTWF0aC5mbG9vcihlLnNhbXBsZVJhdGUpKSxlLnNhbXBsZVJhdGUpLGh0PUplLmdldENoYW5uZWxEYXRhKDApO2ZvcihsZXQgbW49MDttbjxodC5sZW5ndGg7bW4rKylodFttbl09TigpKjItMTtjb25zdCB2dD1lLmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO3Z0LmJ1ZmZlcj1KZSx2dC5sb29wPSEwO2NvbnN0IEh0PWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7SHQudHlwZT0ibG93cGFzcyI7Y29uc3QgbHQ9bCgoKG50PVgub3JnYW5pYyk9PW51bGw/dm9pZCAwOm50Lm5vaXNlTG93cGFzc0h6KT8/NmUzLDIwMCwxNmUzKTtIdC5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobHQsZWUpO2NvbnN0IG90PWUuY3JlYXRlR2FpbigpLGt0PU1hdGgubWF4KDFlLTQsR2UqbXQpO290LmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxlZSksdnQuY29ubmVjdChIdCksSHQuY29ubmVjdChvdCk7dHJ5e290LmNvbm5lY3QoemUuZnJlcXVlbmN5KX1jYXRjaHt9Y29uc3QgX3Q9ZWUrTWF0aC5tYXgoNWUtNCxGKi42KSxzbj1fdCtNYXRoLm1heCguMDA1LFcqLjgpLFRuPWtlLHBuPV9lO290LmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoa3QsX3QpLG90LmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoTWF0aC5tYXgoMWUtNCxrdCouMyksc24pLG90LmdhaW4uc2V0VmFsdWVBdFRpbWUoTWF0aC5tYXgoMWUtNCxrdCouMyksVG4pLG90LmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LHBuKSx2dC5zdGFydChlZSksdnQuc3RvcChwbisuMDYpLGJlLnB1c2godnQpLFNlLnB1c2goSHQsb3QpfWNvbnN0IEJ0PWUuY3JlYXRlR2FpbigpO0J0LmdhaW4uc2V0VmFsdWVBdFRpbWUocmUsZWUpLGRlLmNvbm5lY3QoQnQpO3RyeXsoUHQ9cC5vblRyaWdnZXIpPT1udWxsfHxQdC5jYWxsKHApfWNhdGNoe31CdC5jb25uZWN0KHAuaW5wdXQpO3RyeXtCdC5jb25uZWN0KFQpfWNhdGNoe310cnl7QnQuY29ubmVjdChNKX1jYXRjaHt9U2UucHVzaChCdCksSyYmZC5sZW5ndGg+MCYmZC5zbGljZSgpLmZvckVhY2goSmU9PlYoSmUsZWUpKSx6ZS5zdGFydChlZSksQmUuc3RhcnQoZWUpO2xldCBHdD1EZSsuMDY7emUuc3RvcChHdCksQmUuc3RvcChHdCk7Y29uc3QgT3Q9e2FtcDp3ZSxzb3VyY2VzOmJlLG5vZGVzOlNlfTtkLnB1c2goT3QpLEgoT3QsR3QpfWZ1bmN0aW9uIGsoSSl7Y29uc3Qgaj10eXBlb2YgST09Im51bWJlciI/STplLmN1cnJlbnRUaW1lO2Quc2xpY2UoKS5mb3JFYWNoKHNlPT5WKHNlLGopKSxmKCl9ZnVuY3Rpb24gQShJKXt2YXIgWDtsZXQgaj17fTtpZighKEkmJnR5cGVvZiBJPT0ib2JqZWN0IikpcmV0dXJuO2NvbnN0IGhlPU9iamVjdC5rZXlzKEkpLnNvbWUoY2U9PmNlLmluY2x1ZGVzKCIuIikpLGVlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChJLGEpO2lmKGhlKWo9c3QoYSxJLHMpO2Vsc2UgaWYoZWUmJnR5cGVvZiBJW2FdPT0ib2JqZWN0Iil7Y29uc3QgY2U9cXQoSVthXSxbYV0pO2o9c3QoYSxjZSxzKX1lbHNlIGo9STtvPWhhKG8sanx8e30pO3RyeXtsZXQgY2U9KFg9bz09bnVsbD92b2lkIDA6by52b2ljZVNwZWNpZmljKT09bnVsbD92b2lkIDA6WC5tb2RlLEs9W107QXJyYXkuaXNBcnJheShjZSk/Sz1jZTp0eXBlb2YgY2U9PSJzdHJpbmciJiYoSz1jZS5zcGxpdCgvW1xzLHxdKy8pLmZpbHRlcihCb29sZWFuKSk7Y29uc3QgYWU9Sy5tYXAoZmU9PlN0cmluZyhmZSkudG9Mb3dlckNhc2UoKSkuc29ydCgpLmpvaW4oInwiKTtpZihhZSYmYWUhPT11KXtjb25zdCBmZT1tZT0+e2NvbnN0IHBlPVN0cmluZyhtZSkudG9Mb3dlckNhc2UoKTtwZT09PSJoYXJtb25pYyI/KG8udGltYnJlLm1vZFdhdmVmb3JtPVsidHJpYW5nbGUiLCJzYXd0b290aCIsInNxdWFyZSJdW01hdGguZmxvb3IoTigpKjMpXSxvLmZ4Lndhcm10aD1vLmZ4Lndhcm10aD8/LjErTigpKi4yLG8udG9uZS5maWx0ZXJGb2xsb3dBbW91bnQ9TWF0aC5tYXgoby50b25lLmZpbHRlckZvbGxvd0Ftb3VudD8/MCwuMStOKCkqLjI1KSxvLm9yZ2FuaWMubm9pc2VNaXg9by5vcmdhbmljLm5vaXNlTWl4Pz8uMDUrTigpKi4xKTpwZT09PSJ3YXJtIj8oby5meC53YXJtdGg9TWF0aC5tYXgoby5meC53YXJtdGg/PzAsLjQ1K04oKSouMzUpLG8uZngud2FybUxvd3Bhc3NIej02NTArTWF0aC5mbG9vcihOKCkqMjAwKSxvLmZ4Lndhcm1CYW5kUT0xLjQrTigpKjEsby5meC53YXJtQmFuZExmb0h6PS4wNStOKCkqLjEzLG8uZngud2FybUJhbmRMZm9EZXB0aEh6PTQwK04oKSoxMDAsby50b25lLmZpbHRlckZvbGxvd0Ftb3VudD0uMDQrTigpKi4wOCxvLnRvbmUuZmlsdGVyQmFzZUh6PTcwMCtOKCkqNDAwLG8udG9uZS5maWx0ZXJNYXhIej0xNTAwK04oKSo4MDAsby50aW1icmUuZm1JbmRleFN0YXJ0PWwoKG8udGltYnJlLmZtSW5kZXhTdGFydD8/NzApKi41NSwxLDQwMCksby52b2ljZVNwZWNpZmljLm91dHB1dEdhaW49bCgoby52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wMikqLjM1LC4wMDgsLjA2KSk6cGU9PT0icGVyY3Vzc2l2ZSI/KG8udG9uZS5maWx0ZXJGb2xsb3dBbW91bnQ9TWF0aC5tYXgoby50b25lLmZpbHRlckZvbGxvd0Ftb3VudD8/MCwuNitOKCkqLjM1KSxvLnRvbmUuZmlsdGVyQmFzZUh6PTNlMytOKCkqM2UzLG8udG9uZS5maWx0ZXJNYXhIej05ZTMrTigpKjVlMyxvLnRvbmUuZmlsdGVyUT0uNytOKCkqLjUsby5lbnZlbG9wZS5hbXAuYXR0YWNrPWwoKG8uZW52ZWxvcGUuYW1wLmF0dGFjaz8/LjAxKSouNywuMDAxLC4wMTUpLG8uZW52ZWxvcGUuYW1wLmRlY2F5PWwoKG8uZW52ZWxvcGUuYW1wLmRlY2F5Pz8uMikqLjY1LC4wNCwuMyksby5meC53YXJtdGg9by5meC53YXJtdGg/Py4wNStOKCkqLjE1LG8udGltYnJlLmNhcnJpZXJIej1sKChvLnRpbWJyZS5jYXJyaWVySHo/PzEyMCkqLjc1LDE1LDIwMCksby52b2ljZVNwZWNpZmljLm91dHB1dEdhaW49bCgoby52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wMikqLjgsLjAwOCwuMDYpKTpwZT09PSJvcmdhbmljIiYmKG8ub3JnYW5pYy5ub2lzZU1peD1NYXRoLm1heChvLm9yZ2FuaWMubm9pc2VNaXg/PzAsLjE4K04oKSouMjIpLG8ub3JnYW5pYy5ub2lzZUxvd3Bhc3NIej00NTAwK04oKSozNTAwLG8uZngud2FybXRoPU1hdGgubWF4KG8uZngud2FybXRoPz8wLC4yNStOKCkqLjM1KSxvLmZ4Lndhcm1Mb3dwYXNzSHo9NzUwK01hdGguZmxvb3IoTigpKjI1MCksby5meC53YXJtQmFuZFE9by5meC53YXJtQmFuZFE/PzEuMitOKCkqLjgsby5meC53YXJtQmFuZExmb0h6PW8uZngud2FybUJhbmRMZm9Iej8/LjA0K04oKSouMSxvLmZ4Lndhcm1CYW5kTGZvRGVwdGhIej1vLmZ4Lndhcm1CYW5kTGZvRGVwdGhIej8/NTArTigpKjEyMCxvLnRvbmUuZmlsdGVyRm9sbG93QW1vdW50PU1hdGgubWF4KG8udG9uZS5maWx0ZXJGb2xsb3dBbW91bnQ/PzAsLjErTigpKi4yNSkpfTtLLmZvckVhY2goZmUpLHU9YWV9ZWxzZSBpZighYWUpe3U9IiI7dHJ5e28udGltYnJlLmNhcnJpZXJIej1sKChvLnRpbWJyZS5jYXJyaWVySHo/PzEyMCkqLjYsMTIsNjApfWNhdGNoe310cnl7by5lbnZlbG9wZT1vLmVudmVsb3BlfHx7fSxvLmVudmVsb3BlLmFtcD1vLmVudmVsb3BlLmFtcHx8e30sby5lbnZlbG9wZS5mbUluZGV4PW8uZW52ZWxvcGUuZm1JbmRleHx8e30sby5lbnZlbG9wZS5hbXAuYXR0YWNrPWwoKG8uZW52ZWxvcGUuYW1wLmF0dGFjaz8/LjAxKSouNCwuMDAxLC4wMDgpLG8uZW52ZWxvcGUuYW1wLmRlY2F5PWwoKG8uZW52ZWxvcGUuYW1wLmRlY2F5Pz8uMikqLjUsLjEsLjIpLG8uZW52ZWxvcGUuYW1wLnN1c3RhaW49bCgoby5lbnZlbG9wZS5hbXAuc3VzdGFpbj8/MCkqLjIsMCwuMDgpLG8uZW52ZWxvcGUuYW1wLnJlbGVhc2U9bCgoby5lbnZlbG9wZS5hbXAucmVsZWFzZT8/LjEyKSouNSwuMDMsLjEpLG8uZW52ZWxvcGUuZm1JbmRleC5kZWNheT1sKChvLmVudmVsb3BlLmZtSW5kZXguZGVjYXk/Py4xNSkqLjcsLjA2LC4yKSxvLmVudmVsb3BlLmZtSW5kZXgucmVsZWFzZT1sKChvLmVudmVsb3BlLmZtSW5kZXgucmVsZWFzZT8/LjA2KSouNywuMDIsLjEyKX1jYXRjaHt9fX1jYXRjaHt9JHQoYSxJfHx7fSx7YXV0b1BhbjpwLHNlbmRSZXZlcmI6UCxzZW5kRGVsYXk6TSxzZW5kQnVzMjpULGdldEJwbTpDLGF1ZGlvQ29udGV4dDplfSk7dHJ5e18oISFvLnZvaWNlU3BlY2lmaWMuYW1iaWVudE1vZGUpfWNhdGNoe319ZnVuY3Rpb24geihJKXtjb25zdCBqPUl8fFllKHQpO289aGEoaj09PSJCIj9ZYSgpOkthKCkse30pO2NvbnN0IHNlPWF0KGEsbyxzKTtyZXR1cm57bmVzdGVkOml0KG8pLGZsYXQ6c2V9fWZ1bmN0aW9uIEQoKXtyZXR1cm4gYXQoYSxvLHMpfWZ1bmN0aW9uIFUoKXt0cnl7ZigpfWNhdGNoe310cnl7eCgpfWNhdGNoe319Y29uc3QgUj17b3V0cHV0Om0sc2VuZEJ1czI6VCxzZW5kUmV2ZXJiOlAsc2VuZERlbGF5Ok0sdHJpZ2dlcjpxLHN0b3A6ayx1cGRhdGVQYXJhbXM6QSxyZWdlbmVyYXRlUGFyYW1zOnosZ2V0RmxhdFBhcmFtczpELGRpc3Bvc2U6VSxhdXRvTWl4OmJ9O3JldHVybiBSLnNpZGU9KCk9PlllKHQpLFIuY2hhbmdlVm9pY2VQYXJhbXNPbkV2ZXJ5U3RlcD0wLFJ9ZnVuY3Rpb24gWGEoKXtjb25zdCBlPXthdHRhY2s6aSguMDAxLC4wMSksZGVjYXk6aSguMDIsLjE1KSxzdXN0YWluOjAscmVsZWFzZTppKC4wMSwuMTIpfSxuPWkoODAsMzAwKSx0PWkoLjQsLjkpLGE9aSguMSwuNSkscz1pKC4wMiwuMjUpLG09dCthK3MscD17YmFzZUh6Om4sb3NjVHlwZXM6e29zYzE6WyJzaW5lIiwidHJpYW5nbGUiLCJzcXVhcmUiLCJzYXd0b290aCJdW01hdGguZmxvb3IoTigpKjQpXSxvc2MyOlsic2luZSIsInRyaWFuZ2xlIiwic3F1YXJlIiwic2F3dG9vdGgiXVtNYXRoLmZsb29yKE4oKSo0KV0sb3NjMzpbInNpbmUiLCJ0cmlhbmdsZSIsInNxdWFyZSIsInNhd3Rvb3RoIl1bTWF0aC5mbG9vcihOKCkqNCldfSxvc2NNaXg6e29zYzE6dC9tKi41LG9zYzI6YS9tKi40LG9zYzM6cy9tKi4zNX0sb3NjMkRldHVuZUNlbnRzOmkoMiwzNSksb3NjMk5vaXNlTW9kOntlbmFibGVkOiEwLGRldHVuZUppdHRlckNlbnRzOmkoLjEsMyksYW1EZXB0aDppKC4wMDUsLjA4KX19LFM9e2xvd3Bhc3NIejppKDgwMCwxMmUzKSxlbnZBbW91bnQ6aSguMDUsLjY1KSxxOmkoLjMsMi41KX0sUD17aHVtYW5pemU6aSguMiwuOTUpLHRlbXBvQnBtOjEyMCxzZWNvbmRzUGVyU3RlcDouMTI1LG91dHB1dEdhaW46aSguMDEsLjA3KX0sTT17ZW5hYmxlZDpOKCk8Ljg1LHN0YXJ0UmF0aW86aSgxLjA1LDMuNSksZGVjYXlTZWNvbmRzOmkoNWUtNCwuMDA4KX0sVD17Y2xpY2tMZXZlbDppKDAsLjM1KSxkZWNheVNlY29uZHM6aSguMDA0LC4wMzUpfTtyZXR1cm57ZW52ZWxvcGU6ZSx0aW1icmU6cCxmaWx0ZXI6Uyx2b2ljZVNwZWNpZmljOlAscGl0Y2hFbnY6TSx0cmFuc2llbnQ6VH19ZnVuY3Rpb24gSmEoKXtjb25zdCBlPXthdHRhY2s6aSguMDAxLC4wMDgpLGRlY2F5OmkoLjAxNSwuMTIpLHN1c3RhaW46MCxyZWxlYXNlOmkoLjAwOCwuMSl9LG49aSg3MCwyODApLHQ9aSguNDUsLjg1KSxhPWkoLjEyLC40NSkscz1pKC4wMiwuMjIpLG09dCthK3MscD17YmFzZUh6Om4sb3NjVHlwZXM6e29zYzE6WyJzaW5lIiwidHJpYW5nbGUiLCJzcXVhcmUiLCJzYXd0b290aCJdW01hdGguZmxvb3IoTigpKjQpXSxvc2MyOlsic2luZSIsInRyaWFuZ2xlIiwic3F1YXJlIiwic2F3dG9vdGgiXVtNYXRoLmZsb29yKE4oKSo0KV0sb3NjMzpbInNpbmUiLCJ0cmlhbmdsZSIsInNxdWFyZSIsInNhd3Rvb3RoIl1bTWF0aC5mbG9vcihOKCkqNCldfSxvc2NNaXg6e29zYzE6dC9tKi40OCxvc2MyOmEvbSouMzgsb3NjMzpzL20qLjN9LG9zYzJEZXR1bmVDZW50czppKDUsNDUpLG9zYzJOb2lzZU1vZDp7ZW5hYmxlZDohMCxkZXR1bmVKaXR0ZXJDZW50czppKC4yLDIuNSksYW1EZXB0aDppKC4wMDUsLjA2KX19LFM9e2xvd3Bhc3NIejppKDcwMCw5ZTMpLGVudkFtb3VudDppKC4wNSwuNTUpLHE6aSguNCwyKX0sUD17aHVtYW5pemU6aSguMiwuOTUpLHRlbXBvQnBtOjEyMCxzZWNvbmRzUGVyU3RlcDouMTI1LG91dHB1dEdhaW46aSguMDEsLjA1KX0sTT17ZW5hYmxlZDpOKCk8Ljg1LHN0YXJ0UmF0aW86aSgxLjA1LDIuOCksZGVjYXlTZWNvbmRzOmkoNWUtNCwuMDA2KX0sVD17Y2xpY2tMZXZlbDppKDAsLjI1KSxkZWNheVNlY29uZHM6aSguMDA0LC4wMyl9LEc9e2lucHV0Qm9vc3Q6MSxwcmVEZWxheVNlY1JhbmdlOlsuMDEyLC4wM10sd2V0VHJpbTouNjUsZ2VuZXJhdGl2ZTp7bnVtQmFuZHM6e21pbjoyLG1heDo1fSxiYXNlSHo6e21pbjo1MDAsbWF4OjNlM30scmF0aW9zOlsxLDUvNCw0LzMsMy8yLDJdLG9jdGF2ZXM6Wy0xLDAsMV0scTp7bWluOjEsbWF4OjEwfSxnYWluOnttaW46LjE1LG1heDouNn0sY29tYkZlZWRiYWNrOnttaW46LjMsbWF4Oi43fSxjb21iRGVsYXlNdWx0OnttaW46MixtYXg6NH0sZGFtcE11bHRpcGxpZXI6M319O3JldHVybntlbnZlbG9wZTplLHRpbWJyZTpwLGZpbHRlcjpTLHZvaWNlU3BlY2lmaWM6UCxwaXRjaEVudjpNLHRyYW5zaWVudDpULHJlc29uRng6R319ZnVuY3Rpb24gZGEoZSxuKXtjb25zdCB0PWl0KGUpO2lmKCFuKXJldHVybiB0O2Zvcihjb25zdCBhIG9mWyJlbnZlbG9wZSIsInRpbWJyZSIsImZpbHRlciIsInZvaWNlU3BlY2lmaWMiLCJwaXRjaEVudiIsInRyYW5zaWVudCJdKW5bYV0mJih0W2FdPXsuLi50W2FdLC4uLm5bYV19KTtpZih0LmVudmVsb3BlLmF0dGFjaz1sKHQuZW52ZWxvcGUuYXR0YWNrLC4wMDEsLjAxKSx0LmVudmVsb3BlLmRlY2F5PWwodC5lbnZlbG9wZS5kZWNheSwuMDIsLjE1KSx0LmVudmVsb3BlLnN1c3RhaW49MCx0LmVudmVsb3BlLnJlbGVhc2U9bCh0LmVudmVsb3BlLnJlbGVhc2UsLjAxLC4xMiksdC50aW1icmUuYmFzZUh6PWwodC50aW1icmUuYmFzZUh6LDYwLDQwMCksdC50aW1icmUub3NjMkRldHVuZUNlbnRzPWwodC50aW1icmUub3NjMkRldHVuZUNlbnRzLDEsNTApLHQudGltYnJlLm9zY1R5cGVzKXtjb25zdCBhPXM9Plsic2luZSIsInRyaWFuZ2xlIiwic3F1YXJlIiwic2F3dG9vdGgiXS5pbmNsdWRlcyhTdHJpbmcocykpP1N0cmluZyhzKToic2luZSI7dC50aW1icmUub3NjVHlwZXM9e29zYzE6YSh0LnRpbWJyZS5vc2NUeXBlcy5vc2MxKSxvc2MyOmEodC50aW1icmUub3NjVHlwZXMub3NjMiksb3NjMzphKHQudGltYnJlLm9zY1R5cGVzLm9zYzMpfX1yZXR1cm4gdC50aW1icmUub3NjMk5vaXNlTW9kJiYodC50aW1icmUub3NjMk5vaXNlTW9kLmRldHVuZUppdHRlckNlbnRzPWwodC50aW1icmUub3NjMk5vaXNlTW9kLmRldHVuZUppdHRlckNlbnRzPz8uNiwwLDgpLHQudGltYnJlLm9zYzJOb2lzZU1vZC5hbURlcHRoPWwodC50aW1icmUub3NjMk5vaXNlTW9kLmFtRGVwdGg/Py4wMiwwLC4zKSksdC5maWx0ZXIubG93cGFzc0h6PWwodC5maWx0ZXIubG93cGFzc0h6LDUwMCwxNmUzKSx0LmZpbHRlci5lbnZBbW91bnQ9bCh0LmZpbHRlci5lbnZBbW91bnQ/Py4yNSwwLDEpLHQuZmlsdGVyLnE9bCh0LmZpbHRlci5xPz8xLC4yLDYpLHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT1sKHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT8/LjYsMCwxKSx0LnZvaWNlU3BlY2lmaWMudGVtcG9CcG09Z3QodC52b2ljZVNwZWNpZmljLnRlbXBvQnBtPz8kZS5kZWZhdWx0QnBtKSx0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA9bCh0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA/Py4xMjUsLjAyLDEpLHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPWwodC52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wNywwLDEpLHQucGl0Y2hFbnY9dC5waXRjaEVudnx8e2VuYWJsZWQ6ITAsc3RhcnRSYXRpbzoxLjIsZGVjYXlTZWNvbmRzOi4wMDh9LHQucGl0Y2hFbnYuZW5hYmxlZD0hIXQucGl0Y2hFbnYuZW5hYmxlZCx0LnBpdGNoRW52LnN0YXJ0UmF0aW89bCh0LnBpdGNoRW52LnN0YXJ0UmF0aW8/PzEuMiwxLDUpLHQucGl0Y2hFbnYuZGVjYXlTZWNvbmRzPWwodC5waXRjaEVudi5kZWNheVNlY29uZHM/Py4wMDgsNWUtNCwuMDEpLHQudHJhbnNpZW50PXQudHJhbnNpZW50fHx7Y2xpY2tMZXZlbDowLGRlY2F5U2Vjb25kczouMDJ9LHQudHJhbnNpZW50LmNsaWNrTGV2ZWw9bCh0LnRyYW5zaWVudC5jbGlja0xldmVsPz8wLDAsMSksdC50cmFuc2llbnQuZGVjYXlTZWNvbmRzPWwodC50cmFuc2llbnQuZGVjYXlTZWNvbmRzPz8uMDIsLjAwMiwuMTUpLHR9ZnVuY3Rpb24gYmkoZSxuLHQ9e30pe2NvbnN0IGE9Indvb2RibG9jayIscz17YXR0YWNrOiJlbnZlbG9wZS5hdHRhY2siLGRlY2F5OiJlbnZlbG9wZS5kZWNheSIsc3VzdGFpbjoiZW52ZWxvcGUuc3VzdGFpbiIscmVsZWFzZToiZW52ZWxvcGUucmVsZWFzZSIsZnJlcToidGltYnJlLmJhc2VIeiIsZGV0dW5lQ2VudHM6InRpbWJyZS5vc2MyRGV0dW5lQ2VudHMiLGZpbHRlckN1dG9mZjoiZmlsdGVyLmxvd3Bhc3NIeiIsb3NjV2F2ZTE6InRpbWJyZS5vc2NUeXBlcy5vc2MxIixvc2NXYXZlMjoidGltYnJlLm9zY1R5cGVzLm9zYzIiLG9zY1dhdmUzOiJ0aW1icmUub3NjVHlwZXMub3NjMyIsInBpdGNoRW52LmVuYWJsZWQiOiJwaXRjaEVudi5lbmFibGVkIiwicGl0Y2hFbnYuc3RhcnRSYXRpbyI6InBpdGNoRW52LnN0YXJ0UmF0aW8iLCJwaXRjaEVudi5kZWNheSI6InBpdGNoRW52LmRlY2F5U2Vjb25kcyIsInBpdGNoRW52LmRlY2F5U2Vjb25kcyI6InBpdGNoRW52LmRlY2F5U2Vjb25kcyIsInRyYW5zaWVudC5jbGlja0xldmVsIjoidHJhbnNpZW50LmNsaWNrTGV2ZWwiLCJ0cmFuc2llbnQuZGVjYXkiOiJ0cmFuc2llbnQuZGVjYXlTZWNvbmRzIiwidHJhbnNpZW50LmRlY2F5U2Vjb25kcyI6InRyYW5zaWVudC5kZWNheVNlY29uZHMiLCJlbnZlbG9wZS5hdHRhY2siOiJlbnZlbG9wZS5hdHRhY2siLCJlbnZlbG9wZS5kZWNheSI6ImVudmVsb3BlLmRlY2F5IiwiZW52ZWxvcGUuc3VzdGFpbiI6ImVudmVsb3BlLnN1c3RhaW4iLCJlbnZlbG9wZS5yZWxlYXNlIjoiZW52ZWxvcGUucmVsZWFzZSIsInRpbWJyZS5iYXNlSHoiOiJ0aW1icmUuYmFzZUh6IiwidGltYnJlLm9zYzJEZXR1bmVDZW50cyI6InRpbWJyZS5vc2MyRGV0dW5lQ2VudHMiLCJmaWx0ZXIubG93cGFzc0h6IjoiZmlsdGVyLmxvd3Bhc3NIeiIsInZvaWNlU3BlY2lmaWMuaHVtYW5pemUiOiJ2b2ljZVNwZWNpZmljLmh1bWFuaXplIiwidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSI6InZvaWNlU3BlY2lmaWMudGVtcG9CcG0iLCJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjoidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCIsInZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6InZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiJ9LHtvdXRwdXQ6bSxhdXRvUGFuOnAsZHJ5QnVzOlMsc2VuZFJldmVyYjpQLHNlbmRCdXMyOk0sd2lyZVBhbjpULHRhcFJldmVyYjpHLGRpc3Bvc2VJTzpFfT1RdChlLHt3aXRoU2VuZDI6ITF9KSxMPVllKHQpPT09IkIiP0phKCk6WGEoKTtsZXQgeD1kYShMLG4pO2NvbnN0IE89KCk9PkF0KHgudm9pY2VTcGVjaWZpYy50ZW1wb0JwbSk7bGV0IHc9W107Y29uc3Qgbz02O3RyeXtUKCl9Y2F0Y2h7fXRyeXtHKG0pfWNhdGNoe31mdW5jdGlvbiBDKCl7Y29uc3QgUT1lLmNyZWF0ZUdhaW4oKTtyZXR1cm4gUS5nYWluLnNldFZhbHVlQXRUaW1lKDEsZS5jdXJyZW50VGltZSksUX1mdW5jdGlvbiBjKFEsJCl7Y29uc3QgcT0oJC1lLmN1cnJlbnRUaW1lKSoxZTMrMjAwO3NldFRpbWVvdXQoKCk9Pnt0cnl7US5ub2Rlcy5mb3JFYWNoKGs9Pnt0cnl7ay5kaXNjb25uZWN0KCl9Y2F0Y2h7fX0pfWNhdGNoe313PXcuZmlsdGVyKGs9PmshPT1RKX0sTWF0aC5tYXgoMCxxKSl9ZnVuY3Rpb24gZChRLCQpe2NvbnN0IHE9KHR5cGVvZiAkPT0ibnVtYmVyIj8kOmUuY3VycmVudFRpbWUpKzVlLTQ7dHJ5e1EuZW52R2Fpbi5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhxKTtjb25zdCBBPU1hdGgubWF4KFEuZW52R2Fpbi5nYWluLnZhbHVlLDFlLTQpO1EuZW52R2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKEEscSksUS5lbnZHYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LHErLjAzKX1jYXRjaHt9Y29uc3Qgaz1xKy4wNTtmb3IoY29uc3QgQSBvZiBRLnNvdXJjZXMpdHJ5e0Euc3RvcChrKX1jYXRjaHt9YyhRLGspfWZ1bmN0aW9uIGcoKXt3Lmxlbmd0aD49byYmZCh3WzBdLGUuY3VycmVudFRpbWUpfWNvbnN0IHU9UT0+e3RyeXtjb25zdCAkPXQmJnQuZXZlbnRzOyQmJiQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOlF9KSl9Y2F0Y2h7fX07ZnVuY3Rpb24gYihRLHthY2NlbnQ6JD0hMSxzdXN0YWluU3RlcHM6cT0wLHZlbG9jaXR5Oms9MX09e30pe3ZhciBOZSxNZTtjb25zdCBBPXR5cGVvZiBRPT0ibnVtYmVyIj9ROmUuY3VycmVudFRpbWUrLjAwMSx6PXgsRD1sKHoudm9pY2VTcGVjaWZpYy5odW1hbml6ZSwwLDEpLFU9JD09PSJ3ZWFrIixSPSQ9PT0hMDt1KHt0aW1lOkEsYWNjZW50OiQsc3VzdGFpblN0ZXBzOnEsdmVsb2NpdHk6a30pO2xldCBJPVFlKHouZW52ZWxvcGUuYXR0YWNrLC4wNSxEKSxqPVFlKHouZW52ZWxvcGUuZGVjYXksLjA1LEQpLHNlPVFlKHouZW52ZWxvcGUucmVsZWFzZSwuMDUsRCk7Y29uc3QgaGU9MStNYXRoLm1heCgwLHEpKi4zNTtqKj1oZSxzZSo9aGU7Y29uc3QgZWU9TygpO2xldCBYPVR0KGosZWUpLGNlPVR0KHNlLGVlKTtJPUV0KEksdCksWD1JdChYLHQpLGNlPWp0KGNlLHQpO2xldCBLPVFlKHouZmlsdGVyLmxvd3Bhc3NIeiwuMDMsRCk7UiYmKEsqPWkoMS4xLDEuMikpLFUmJihLKj1pKC45LC45NSkpO2xldCBhZT1sKGssMCwxKSouNjtSJiYoYWUqPWJ0KGkoMSwyKSkpLFUmJihhZSo9LjgpLGFlKj1sKHoudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPz8uMjIsMCwxKSxLKj0uOTgrLjA0KmFlLGcoKTtjb25zdCBmZT1DKCksbWU9W10scGU9W2ZlXSxvZT1lLmNyZWF0ZU9zY2lsbGF0b3IoKTtvZS50eXBlPSJzaW5lIjtjb25zdCBCPWUuY3JlYXRlR2FpbigpO29lLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShsKHoudGltYnJlLmJhc2VIeiw0MCw1MDApLEEpLEIuZ2Fpbi5zZXRWYWx1ZUF0VGltZShsKHoudGltYnJlLm9zY01peC5vc2MxLDAsMSksQSksb2UuY29ubmVjdChCKSxCLmNvbm5lY3QoZmUpLHBlLnB1c2goQiksbWUucHVzaChvZSk7Y29uc3Qgdj1lLmNyZWF0ZU9zY2lsbGF0b3IoKTt2LnR5cGU9InNpbmUiO2NvbnN0IEY9ZS5jcmVhdGVHYWluKCksVz16LnRpbWJyZS5vc2MyRGV0dW5lQ2VudHMqKDErdG4oLjAyKSpEKSxZPWwoei50aW1icmUuYmFzZUh6LDQwLDUwMCksSj16LnBpdGNoRW52LmVuYWJsZWQ/TWF0aC5tYXgoLjUsWSpsKHoucGl0Y2hFbnYuc3RhcnRSYXRpbywxLDUpKTpZLGllPVR0KGwoei5waXRjaEVudi5kZWNheVNlY29uZHMsLjAwMSwuMDIpLGVlKTtpZih2LmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShKLEEpLHoucGl0Y2hFbnYuZW5hYmxlZCl0cnl7di5mcmVxdWVuY3kuZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShZLEEraWUpfWNhdGNoe3RyeXt2LmZyZXF1ZW5jeS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShZLEEraWUpfWNhdGNoe319aWYodi5kZXR1bmUmJnYuZGV0dW5lLnNldFZhbHVlQXRUaW1lKFcsQSksRi5nYWluLnNldFZhbHVlQXRUaW1lKGwoei50aW1icmUub3NjTWl4Lm9zYzIsMCwxKSxBKSx6LnRpbWJyZS5vc2MyTm9pc2VNb2QmJih6LnRpbWJyZS5vc2MyTm9pc2VNb2QuYW1EZXB0aD4wfHx6LnRpbWJyZS5vc2MyTm9pc2VNb2QuZGV0dW5lSml0dGVyQ2VudHM+MCkpe2NvbnN0IGtlPU1hdGgubWF4KC4wNSxYK2NlKy4wNSksX2U9cW4oZSxrZSsuMDIpLGxlPWUuY3JlYXRlQnVmZmVyU291cmNlKCk7aWYobGUuYnVmZmVyPV9lLHoudGltYnJlLm9zYzJOb2lzZU1vZC5hbURlcHRoPjApe2NvbnN0IFRlPWUuY3JlYXRlQ29uc3RhbnRTb3VyY2UoKTtUZS5vZmZzZXQuc2V0VmFsdWVBdFRpbWUobCh6LnRpbWJyZS5vc2NNaXgub3NjMiwwLDEpLEEpO2NvbnN0IGdlPWUuY3JlYXRlR2FpbigpO2dlLmdhaW4uc2V0VmFsdWVBdFRpbWUobCh6LnRpbWJyZS5vc2MyTm9pc2VNb2QuYW1EZXB0aCwwLC4yKSxBKSxUZS5jb25uZWN0KEYuZ2FpbiksbGUuY29ubmVjdChnZSkuY29ubmVjdChGLmdhaW4pLHBlLnB1c2goVGUsZ2UpLFRlLnN0YXJ0KEEpLG1lLnB1c2goVGUpfWlmKHYuZGV0dW5lJiZ6LnRpbWJyZS5vc2MyTm9pc2VNb2QuZGV0dW5lSml0dGVyQ2VudHM+MCl7Y29uc3QgVGU9ZS5jcmVhdGVHYWluKCk7VGUuZ2Fpbi5zZXRWYWx1ZUF0VGltZShsKHoudGltYnJlLm9zYzJOb2lzZU1vZC5kZXR1bmVKaXR0ZXJDZW50cywwLDUpLEEpLGxlLmNvbm5lY3QoVGUpLmNvbm5lY3Qodi5kZXR1bmUpLHBlLnB1c2goVGUpfWxlLnN0YXJ0KEEpLGxlLnN0b3AoQStrZSsuMDIpLG1lLnB1c2gobGUpfXYuY29ubmVjdChGKSxGLmNvbm5lY3QoZmUpLHBlLnB1c2goRiksbWUucHVzaCh2KTtjb25zdCB1ZT1lLmNyZWF0ZU9zY2lsbGF0b3IoKTt1ZS50eXBlPSgoTmU9ei50aW1icmUub3NjVHlwZXMpPT1udWxsP3ZvaWQgMDpOZS5vc2MzKXx8InNpbmUiO2NvbnN0IG5lPWUuY3JlYXRlR2FpbigpLHRlPWwoei50aW1icmUuYmFzZUh6KjQsODAsODAwKSxaPXoucGl0Y2hFbnYuZW5hYmxlZD9NYXRoLm1heCguNSx0ZSpsKHoucGl0Y2hFbnYuc3RhcnRSYXRpbywxLDUpKTp0ZTtpZih1ZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoWixBKSx6LnBpdGNoRW52LmVuYWJsZWQpdHJ5e3VlLmZyZXF1ZW5jeS5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKHRlLEEraWUpfWNhdGNoe3RyeXt1ZS5mcmVxdWVuY3kubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUodGUsQStpZSl9Y2F0Y2h7fX1uZS5nYWluLnNldFZhbHVlQXRUaW1lKGwoei50aW1icmUub3NjTWl4Lm9zYzMsMCwxKSxBKSx1ZS5jb25uZWN0KG5lKSxuZS5jb25uZWN0KGZlKSxwZS5wdXNoKG5lKSxtZS5wdXNoKHVlKTtjb25zdCByZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3JlLnR5cGU9Imxvd3Bhc3MiLHJlLlEuc2V0VmFsdWVBdFRpbWUobCh6LmZpbHRlci5xLC4yLDYpLEEpO2NvbnN0IGRlPWwoSyooMStsKHouZmlsdGVyLmVudkFtb3VudCwwLDEpKSwyMDAsMmU0KSxiZT1sKEssMTAwLDJlNCk7cmUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGJlLEEpLHJlLmZyZXF1ZW5jeS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShkZSxBK0kpLHJlLmZyZXF1ZW5jeS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShiZSxBK0krWCksZmUuY29ubmVjdChyZSkscGUucHVzaChyZSk7Y29uc3QgU2U9ZS5jcmVhdGVHYWluKCk7U2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxZS00LEEpLHJlLmNvbm5lY3QoU2UpLHBlLnB1c2goU2UpO2NvbnN0IHplPUErSSxSZT16ZStYK2NlO1NlLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoMSx6ZSksU2UuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSgxZS00LFJlKTtjb25zdCBBZT1lLmNyZWF0ZUdhaW4oKTtBZS5nYWluLnNldFZhbHVlQXRUaW1lKGFlLEEpLFNlLmNvbm5lY3QoQWUpO3RyeXsoTWU9cC5vblRyaWdnZXIpPT1udWxsfHxNZS5jYWxsKHApfWNhdGNoe31pZihBZS5jb25uZWN0KHAuaW5wdXQpLHBlLnB1c2goQWUpLCh6LnRyYW5zaWVudC5jbGlja0xldmVsPz8wKT4uMDAxKXRyeXtjb25zdCBrZT1xbihlLE1hdGgubWluKC4xLHoudHJhbnNpZW50LmRlY2F5U2Vjb25kcysuMDA1KSksX2U9ZS5jcmVhdGVCdWZmZXJTb3VyY2UoKTtfZS5idWZmZXI9a2U7Y29uc3QgbGU9ZS5jcmVhdGVHYWluKCksVGU9bCh6LnRyYW5zaWVudC5jbGlja0xldmVsLDAsMSkqLjYsZ2U9bCh6LnRyYW5zaWVudC5kZWNheVNlY29uZHMsLjAwMiwuMTUpO2xlLmdhaW4uc2V0VmFsdWVBdFRpbWUoVGUsQSksbGUuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsQStnZSksX2UuY29ubmVjdChsZSkuY29ubmVjdChmZSksX2Uuc3RhcnQoQSksX2Uuc3RvcChBK2dlKy4wMiksbWUucHVzaChfZSkscGUucHVzaChsZSl9Y2F0Y2h7fW9lLnN0YXJ0KEEpLHYuc3RhcnQoQSksdWUuc3RhcnQoQSk7Y29uc3QgdmU9UmUrLjA4O29lLnN0b3AodmUpLHYuc3RvcCh2ZSksdWUuc3RvcCh2ZSk7Y29uc3QgR2U9e2VudkdhaW46U2Usc291cmNlczptZSxub2RlczpwZX07dy5wdXNoKEdlKSxjKEdlLHZlKX1mdW5jdGlvbiBoKFEpe2NvbnN0ICQ9dHlwZW9mIFE9PSJudW1iZXIiP1E6ZS5jdXJyZW50VGltZTt3LnNsaWNlKCkuZm9yRWFjaChxPT5kKHEsJCkpfWZ1bmN0aW9uIGYoUSl7bGV0ICQ9e307aWYoIShRJiZ0eXBlb2YgUT09Im9iamVjdCIpKXJldHVybjtjb25zdCBrPU9iamVjdC5rZXlzKFEpLnNvbWUoej0+ei5pbmNsdWRlcygiLiIpKSxBPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChRLGEpO2lmKGspJD1zdChhLFEscyk7ZWxzZSBpZihBJiZ0eXBlb2YgUVthXT09Im9iamVjdCIpe2NvbnN0IHo9cXQoUVthXSxbYV0pOyQ9c3QoYSx6LHMpfWVsc2UgJD1RO3g9ZGEoeCwkfHx7fSksJHQoYSxRfHx7fSx7YXV0b1BhbjpwLHNlbmRSZXZlcmI6UCxzZW5kQnVzMjpNLGdldEJwbTpPLGF1ZGlvQ29udGV4dDplfSl9ZnVuY3Rpb24geShRKXtjb25zdCAkPVF8fFllKHQpO3g9ZGEoJD09PSJCIj9KYSgpOlhhKCkse30pO2NvbnN0IHE9YXQoYSx4LHMpO3JldHVybntuZXN0ZWQ6aXQoeCksZmxhdDpxfX1mdW5jdGlvbiBfKCl7cmV0dXJuIGF0KGEseCxzKX1mdW5jdGlvbiBIKCl7dHJ5e0UoKX1jYXRjaHt9fWNvbnN0IFY9e291dHB1dDptLHNlbmRSZXZlcmI6UCx0cmlnZ2VyOmIsc3RvcDpoLHVwZGF0ZVBhcmFtczpmLHJlZ2VuZXJhdGVQYXJhbXM6eSxnZXRGbGF0UGFyYW1zOl8sZGlzcG9zZTpIfTtyZXR1cm4gVi5zaWRlPSgpPT5ZZSh0KSxWLmNoYW5nZVZvaWNlUGFyYW1zT25FdmVyeVN0ZXA9MCxWfWZ1bmN0aW9uIFphKCl7Y29uc3QgZT17YXR0YWNrOmkoLjAwMywuMDE1KSxkZWNheTppKC4zLDEuOCksc3VzdGFpbjppKDAsLjE1KSxyZWxlYXNlOmkoLjA1LC4yNSl9LG49e2Jhc2VGcmVxOmkoMTgwLDYwMCksbm9pc2VBbW91bnQ6aSguMSwuNikscGlja1Bvc2l0aW9uOmkoLjEsLjgpLGRhbXBpbmc6aSguNCwuOSksdG9uZUxvd3Bhc3NIejppKDE1MDAsNmUzKX0sdD17aHVtYW5pemU6aSguMjUsLjg1KSx0ZW1wb0JwbToxMjAsc2Vjb25kc1BlclN0ZXA6LjAwNzUsb3V0cHV0R2FpbjppKC4yNSwuMzUpLHZlbG9jaXR5R2FpblNjYWxlOmkoLjcsMS41KX07cmV0dXJue2VudmVsb3BlOmUsa2FycGx1czpuLHZvaWNlU3BlY2lmaWM6dH19ZnVuY3Rpb24gZXMoKXtjb25zdCBlPXthdHRhY2s6aSguMDA0LC4wMTgpLGRlY2F5OmkoLjYsMi40KSxzdXN0YWluOmkoMCwuMTgpLHJlbGVhc2U6aSguMSwuMzUpfSxuPXtiYXNlRnJlcTppKDE2MCw1MjApLG5vaXNlQW1vdW50OmkoLjEyLC42NSkscGlja1Bvc2l0aW9uOmkoLjE1LC44NSksZGFtcGluZzppKC43LC44OCksdG9uZUxvd3Bhc3NIejppKDEzMDAsNWUzKX0sdD17aHVtYW5pemU6aSguMjUsLjg1KSx0ZW1wb0JwbToxMjAsc2Vjb25kc1BlclN0ZXA6LjAwNzUsb3V0cHV0R2FpbjppKC4wNCwuMTIpLHZlbG9jaXR5R2FpblNjYWxlOmkoLjcsMS41KX0sYT17aW5wdXRCb29zdDoxLHByZURlbGF5U2VjUmFuZ2U6Wy4wMTIsLjAzNV0sd2V0VHJpbTouNyxnZW5lcmF0aXZlOntudW1CYW5kczp7bWluOjIsbWF4OjZ9LGJhc2VIejp7bWluOjIwMCxtYXg6MTIwMH0scmF0aW9zOlsxLDUvNCw0LzMsMy8yLDJdLG9jdGF2ZXM6Wy0xLDAsMV0scTp7bWluOjIsbWF4OjEyfSxnYWluOnttaW46LjI1LG1heDouN30sY29tYkZlZWRiYWNrOnttaW46LjMsbWF4Oi41NX0sY29tYkRlbGF5TXVsdDp7bWluOjIsbWF4OjZ9LGRhbXBNdWx0aXBsaWVyOjJ9fTtyZXR1cm57ZW52ZWxvcGU6ZSxrYXJwbHVzOm4sdm9pY2VTcGVjaWZpYzp0LHJlc29uRng6YX19ZnVuY3Rpb24geWEoZSxuKXtjb25zdCB0PWl0KGUpO2lmKCFuKXJldHVybiB0O2Zvcihjb25zdCBhIG9mWyJlbnZlbG9wZSIsImthcnBsdXMiLCJ2b2ljZVNwZWNpZmljIl0pblthXSYmKHRbYV09ey4uLnRbYV0sLi4ublthXX0pO3JldHVybiB0LmVudmVsb3BlLmF0dGFjaz1sKHQuZW52ZWxvcGUuYXR0YWNrLC4wMDMsLjAxNSksdC5lbnZlbG9wZS5kZWNheT1sKHQuZW52ZWxvcGUuZGVjYXksLjMsMS44KSx0LmVudmVsb3BlLnN1c3RhaW49bCh0LmVudmVsb3BlLnN1c3RhaW4sMCwuMTUpLHQuZW52ZWxvcGUucmVsZWFzZT1sKHQuZW52ZWxvcGUucmVsZWFzZSwuMDUsLjI1KSx0LmthcnBsdXMuYmFzZUZyZXE9bCh0LmthcnBsdXMuYmFzZUZyZXEsNDAsODAwKSx0LmthcnBsdXMubm9pc2VBbW91bnQ9bCh0LmthcnBsdXMubm9pc2VBbW91bnQsMCwxKSx0LmthcnBsdXMucGlja1Bvc2l0aW9uPWwodC5rYXJwbHVzLnBpY2tQb3NpdGlvbiwwLDEpLHQua2FycGx1cy5kYW1waW5nPWwodC5rYXJwbHVzLmRhbXBpbmcsMCwxKSx0LmthcnBsdXMudG9uZUxvd3Bhc3NIej1sKHQua2FycGx1cy50b25lTG93cGFzc0h6LDUwMCwxMmUzKSx0fWZ1bmN0aW9uIHZpKGUsbix0PXt9KXtjb25zdCBhPSJrYXJwbHVzIixzPXthdHRhY2s6ImVudmVsb3BlLmF0dGFjayIsZGVjYXk6ImVudmVsb3BlLmRlY2F5IixzdXN0YWluOiJlbnZlbG9wZS5zdXN0YWluIixyZWxlYXNlOiJlbnZlbG9wZS5yZWxlYXNlIixiYXNlRnJlcToia2FycGx1cy5iYXNlRnJlcSIsbm9pc2VBbW91bnQ6ImthcnBsdXMubm9pc2VBbW91bnQiLHBpY2tQb3NpdGlvbjoia2FycGx1cy5waWNrUG9zaXRpb24iLGRhbXBpbmc6ImthcnBsdXMuZGFtcGluZyIsdG9uZUxvd3Bhc3NIejoia2FycGx1cy50b25lTG93cGFzc0h6IiwiZW52ZWxvcGUuYXR0YWNrIjoiZW52ZWxvcGUuYXR0YWNrIiwiZW52ZWxvcGUuZGVjYXkiOiJlbnZlbG9wZS5kZWNheSIsImVudmVsb3BlLnN1c3RhaW4iOiJlbnZlbG9wZS5zdXN0YWluIiwiZW52ZWxvcGUucmVsZWFzZSI6ImVudmVsb3BlLnJlbGVhc2UiLCJrYXJwbHVzLmJhc2VGcmVxIjoia2FycGx1cy5iYXNlRnJlcSIsImthcnBsdXMubm9pc2VBbW91bnQiOiJrYXJwbHVzLm5vaXNlQW1vdW50Iiwia2FycGx1cy5waWNrUG9zaXRpb24iOiJrYXJwbHVzLnBpY2tQb3NpdGlvbiIsImthcnBsdXMuZGFtcGluZyI6ImthcnBsdXMuZGFtcGluZyIsImthcnBsdXMudG9uZUxvd3Bhc3NIeiI6ImthcnBsdXMudG9uZUxvd3Bhc3NIeiIsInZvaWNlU3BlY2lmaWMuaHVtYW5pemUiOiJ2b2ljZVNwZWNpZmljLmh1bWFuaXplIiwidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSI6InZvaWNlU3BlY2lmaWMudGVtcG9CcG0iLCJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjoidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCIsInZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6InZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiIsInZvaWNlU3BlY2lmaWMudmVsb2NpdHlHYWluU2NhbGUiOiJ2b2ljZVNwZWNpZmljLnZlbG9jaXR5R2FpblNjYWxlIn0se291dHB1dDptLGF1dG9QYW46cCxkcnlCdXM6UyxzZW5kUmV2ZXJiOlAsc2VuZERlbGF5Ok0sc2VuZEJ1czI6VCx3aXJlUGFuOkcsdGFwUmV2ZXJiOkUsdGFwRGVsYXk6TCxkaXNwb3NlSU86eH09UXQoZSx7d2l0aFNlbmQyOiExfSksTz1ZZSh0KT09PSJCIj9lcygpOlphKCk7bGV0IHc9eWEoTyxuKTtjb25zdCBvPSgpPT5BdCh3LnZvaWNlU3BlY2lmaWMudGVtcG9CcG0pLEM9KCk9PkZ0KHcudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcHx8LjEyNSksYz04LGQ9YW4oZSx7bWF4UG9seXBob255OmN9KTt0cnl7RygpfWNhdGNoe310cnl7RShtKX1jYXRjaHt9dHJ5e0wobSl9Y2F0Y2h7fWNvbnN0IGc9cT0+e3RyeXtjb25zdCBrPXQmJnQuZXZlbnRzO2smJmsuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOnF9KSl9Y2F0Y2h7fX0sdT0ocSxrKT0+ZC5zY2hlZHVsZUNsZWFudXAocSxrKTtmdW5jdGlvbiBiKHEsayl7Y29uc3QgQT0odHlwZW9mIGs9PSJudW1iZXIiP2s6ZS5jdXJyZW50VGltZSkrNWUtNDt0cnl7cS5lbnZHYWluLmdhaW4uY2FuY2VsU2NoZWR1bGVkVmFsdWVzKEEpO2NvbnN0IEQ9TWF0aC5tYXgocS5lbnZHYWluLmdhaW4udmFsdWUsMWUtNCk7cS5lbnZHYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoRCxBKSxxLmVudkdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsQSsuMDMpfWNhdGNoe310cnl7cS5mZWVkYmFjay5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhBKSxxLmZlZWRiYWNrLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKDAsQSwuMDEpfWNhdGNoe31jb25zdCB6PUErLjA1O2Zvcihjb25zdCBEIG9mIHEuc291cmNlcyl0cnl7RC5zdG9wKHopfWNhdGNoe311KHEseil9ZnVuY3Rpb24gaCgpe2QuYWN0aXZlVm9pY2VzUmVmKCkubGVuZ3RoPj1jJiZkLnN0b3BPbGRlc3QoZS5jdXJyZW50VGltZSl9ZnVuY3Rpb24gZihxLHthY2NlbnQ6az0hMSxzdXN0YWluU3RlcHM6QT0wLHZlbG9jaXR5Ono9MX09e30pe3ZhciBXZTtsZXQgRD10eXBlb2YgcT09Im51bWJlciI/cTplLmN1cnJlbnRUaW1lKy4wMDE7KCFOdW1iZXIuaXNGaW5pdGUoRCl8fEQ8PTApJiYoRD1lLmN1cnJlbnRUaW1lKy4wMDEpO2NvbnN0IFU9ZS5jdXJyZW50VGltZTtEPFUrLjAxNSYmKEQ9VSsuMDE1KTtjb25zdCBSPXcsST1sKFIudm9pY2VTcGVjaWZpYy5odW1hbml6ZSwwLDEpLGo9az09PSJ3ZWFrIixzZT1rPT09ITA7Zyh7dGltZTpELGFjY2VudDprLHN1c3RhaW5TdGVwczpBLHZlbG9jaXR5Onp9KTtsZXQgaGU9bChRZShSLmVudmVsb3BlLmF0dGFjaywuMDUsSSksLjAxLC4wNCksZWU9UWUoUi5lbnZlbG9wZS5kZWNheSwuMDgsSSksWD1RZShSLmVudmVsb3BlLnJlbGVhc2UsLjA2LEkpO2NvbnN0IGNlPWwoUi5lbnZlbG9wZS5zdXN0YWluLDAsMSk7c2UmJihlZSo9MS4xKTtjb25zdCBLPU51bWJlci5pc0Zpbml0ZShvKCkpP28oKToxMjA7ZWU9VHQoZWUsSyksWD1UdChYLEspLGhlPUV0KGhlLHQpLGVlPUl0KGVlLHQpLFg9anQoWCx0KTtsZXQgYWU9UWUoUi5rYXJwbHVzLnRvbmVMb3dwYXNzSHosLjA1LEkpO3NlJiYoYWUqPWkoMS4wNSwxLjEpKSxqJiYoYWUqPWkoLjkyLC45OCkpO2xldCBmZT1sKHosMCwxKSpsKFIudm9pY2VTcGVjaWZpYy52ZWxvY2l0eUdhaW5TY2FsZT8/MSwuMiwyKTtzZSYmKGZlKj1idCgxKSksaiYmKGZlKj0uOCksZmUqPWwoUi52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wOCwwLDEpLGFlKj0uOTgrLjA0KmwoeiwwLDEpO2NvbnN0IG1lPWwoUi5rYXJwbHVzLmJhc2VGcmVxLDQwLDRlMykscGU9TWF0aC5tYXgoMS9NYXRoLm1heCg0MCxtZSksMS80ZTMpLG9lPWwoUi5rYXJwbHVzLnBpY2tQb3NpdGlvbiwwLDEpLEI9bChwZSpvZSwwLC4yNSksdj1sKFIua2FycGx1cy5kYW1waW5nLDAsMSksRj1sKC45Ny12Ki41LC40LC45NyksVz1sKFIua2FycGx1cy5ub2lzZUFtb3VudCwwLDEpO2goKTtjb25zdCBZPVtdLEo9W10saWU9TWF0aC5tYXgoMzIsTWF0aC5mbG9vcihlLnNhbXBsZVJhdGUqTWF0aC5taW4ocGUsLjA1KSkpLHVlPWUuY3JlYXRlQnVmZmVyKDEsaWUsZS5zYW1wbGVSYXRlKSxuZT11ZS5nZXRDaGFubmVsRGF0YSgwKSx0ZT1NYXRoLm1heCg0LE1hdGgubWluKDY0LE1hdGguZmxvb3IoaWUqLjEpKSk7Zm9yKGxldCBWZT0wO1ZlPGllO1ZlKyspe2xldCBqZT1OKCkqMi0xO2lmKFZlPHRlKXtjb25zdCB1dD0oVmUrLjUpL3RlLHB0PS41LS41Kk1hdGguY29zKE1hdGguUEkqdXQpO2plKj1wdH1pZihWZT49aWUtdGUpe2NvbnN0IHV0PShWZS0oaWUtdGUpKy41KS90ZSxwdD0xLSguNS0uNSpNYXRoLmNvcyhNYXRoLlBJKnV0KSk7amUqPU1hdGgubWF4KDAscHQpfW5lW1ZlXT1qZX1jb25zdCBaPWUuY3JlYXRlQnVmZmVyU291cmNlKCk7Wi5idWZmZXI9dWUsWi5wbGF5YmFja1JhdGUuc2V0VmFsdWVBdFRpbWUoMSxEKTtjb25zdCByZT1lLmNyZWF0ZUdhaW4oKTtyZS5nYWluLnNldFZhbHVlQXRUaW1lKDAsRCkscmUuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSgxLEQrLjAwMTUpO2NvbnN0IGRlPWUuY3JlYXRlRGVsYXkoNCk7dHJ5e2RlLmRlbGF5VGltZS5zZXRWYWx1ZUF0VGltZShwZSxEKX1jYXRjaHtkZS5kZWxheVRpbWUudmFsdWU9cGV9Y29uc3QgYmU9ZS5jcmVhdGVHYWluKCk7dHJ5e2JlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMCxEKSxiZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKEYsRCsuMDA0KX1jYXRjaHtiZS5nYWluLnZhbHVlPUZ9Y29uc3QgU2U9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTt0cnl7U2UudHlwZT0ibG93cGFzcyJ9Y2F0Y2h7fXRyeXtTZS5RLnNldFZhbHVlQXRUaW1lKC43MDcsRCl9Y2F0Y2h7fXRyeXtTZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobChhZSwyMDAsMmU0KSxEKX1jYXRjaHtTZS5mcmVxdWVuY3kudmFsdWU9bChhZSwyMDAsMmU0KX1yZS5jb25uZWN0KGRlKSxkZS5jb25uZWN0KGJlKSxiZS5jb25uZWN0KFNlKSxTZS5jb25uZWN0KHJlKTtjb25zdCB6ZT1lLmNyZWF0ZUdhaW4oKTt6ZS5nYWluLnNldFZhbHVlQXRUaW1lKDEsRCk7Y29uc3QgQmU9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTt0cnl7QmUudHlwZT0iaGlnaHBhc3MiLEJlLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZSg0NSxEKSxCZS5RLnNldFZhbHVlQXRUaW1lKC43MDcsRCl9Y2F0Y2h7fWRlLmNvbm5lY3QoemUpLHplLmNvbm5lY3QoQmUpO2NvbnN0IFJlPWUuY3JlYXRlR2FpbigpO1JlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxEKTtjb25zdCBBZT1lLmNyZWF0ZUdhaW4oKTtBZS5nYWluLnNldFZhbHVlQXRUaW1lKE1hdGgubWF4KDAsMS1vZSksRCk7Y29uc3QgdmU9ZS5jcmVhdGVHYWluKCk7dmUuZ2Fpbi5zZXRWYWx1ZUF0VGltZShsKG9lLDAsMSksRCk7Y29uc3QgR2U9ZS5jcmVhdGVEZWxheSguMjUpO3RyeXtHZS5kZWxheVRpbWUuc2V0VmFsdWVBdFRpbWUoQixEKX1jYXRjaHtHZS5kZWxheVRpbWUudmFsdWU9Qn1aLmNvbm5lY3QoQWUpLmNvbm5lY3QoUmUpLFouY29ubmVjdChHZSkuY29ubmVjdCh2ZSkuY29ubmVjdChSZSk7Y29uc3QgTmU9ZS5jcmVhdGVHYWluKCk7TmUuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLEQpLE5lLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobChXLDAsMSksRCsuMDAxNSksUmUuY29ubmVjdChOZSkuY29ubmVjdChyZSk7Y29uc3QgTWU9ZS5jcmVhdGVHYWluKCk7TWUuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxZS00LEQpLEJlLmNvbm5lY3QoTWUpO2NvbnN0IGtlPWUuY3JlYXRlR2FpbigpO2tlLmdhaW4uc2V0VmFsdWVBdFRpbWUoZmUsRCksTWUuY29ubmVjdChrZSk7dHJ5eyhXZT1wLm9uVHJpZ2dlcik9PW51bGx8fFdlLmNhbGwocCl9Y2F0Y2h7fWtlLmNvbm5lY3QocC5pbnB1dCk7dHJ5e2tlLmNvbm5lY3QoTSl9Y2F0Y2h7fUoucHVzaChyZSxkZSxiZSxTZSx6ZSxCZSxSZSxBZSx2ZSxHZSxOZSxNZSxrZSksWS5wdXNoKFopO2NvbnN0IF9lPUQraGUsbGU9X2UrZWUsVGU9TnVtYmVyLmlzRmluaXRlKEMoKSkmJkMoKT4wP0MoKTouMTI1LGdlPU1hdGgubWF4KDAsQSkqVGUsd2U9bGUrZ2UsT2U9d2UrWDtNZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKDEsX2UpLE1lLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoY2UsbGUpLE1lLmdhaW4uc2V0VmFsdWVBdFRpbWUoY2Usd2UpLE1lLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LE9lKSxaLnN0YXJ0KEQpO2NvbnN0IEhlPU9lKy4wNjt0cnl7Wi5zdG9wKEQrTWF0aC5taW4ocGUqMS4xLC4wNikpfWNhdGNoe31jb25zdCBVZT17ZW52R2FpbjpNZSxmZWVkYmFjazpiZSxzb3VyY2VzOlksbm9kZXM6Sn07ZC5hZGQoVWUpLHUoVWUsSGUpfWZ1bmN0aW9uIHkocSl7Y29uc3Qgaz10eXBlb2YgcT09Im51bWJlciI/cTplLmN1cnJlbnRUaW1lO2QuYWN0aXZlVm9pY2VzUmVmKCkuc2xpY2UoKS5mb3JFYWNoKEE9PmIoQSxrKSl9ZnVuY3Rpb24gXyhxKXtsZXQgaz17fTtpZighKHEmJnR5cGVvZiBxPT0ib2JqZWN0IikpcmV0dXJuO2NvbnN0IHo9T2JqZWN0LmtleXMocSkuc29tZShVPT5VLmluY2x1ZGVzKCIuIikpLEQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsYSk7aWYoeilrPXN0KGEscSxzKTtlbHNlIGlmKEQmJnR5cGVvZiBxW2FdPT0ib2JqZWN0Iil7Y29uc3QgVT1xdChxW2FdLFthXSk7az1zdChhLFUscyl9ZWxzZSBrPXE7dz15YSh3LGt8fHt9KSwkdChhLHF8fHt9LHthdXRvUGFuOnAsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHNlbmRCdXMyOlQsZ2V0QnBtOm8sYXVkaW9Db250ZXh0OmV9KX1mdW5jdGlvbiBIKHEpe2NvbnN0IGs9cXx8WWUodCk7dz15YShrPT09IkIiP2VzKCk6WmEoKSx7fSk7Y29uc3QgQT1hdChhLHcscyk7cmV0dXJue25lc3RlZDppdCh3KSxmbGF0OkF9fWZ1bmN0aW9uIFYoKXtyZXR1cm4gYXQoYSx3LHMpfWZ1bmN0aW9uIFEoKXt0cnl7eCgpfWNhdGNoe319Y29uc3QgJD17b3V0cHV0Om0sc2VuZFJldmVyYjpQLHRyaWdnZXI6ZixzdG9wOnksdXBkYXRlUGFyYW1zOl8scmVnZW5lcmF0ZVBhcmFtczpILGdldEZsYXRQYXJhbXM6VixkaXNwb3NlOlF9O3JldHVybiAkLnNpZGU9KCk9PlllKHQpLCQuY2hhbmdlVm9pY2VQYXJhbXNPbkV2ZXJ5U3RlcD0wLCR9ZnVuY3Rpb24gdHMoKXtjb25zdCBlPXthdHRhY2s6aSguMDAxLC4wMiksZGVjYXk6aSgxLDIpLHN1c3RhaW46MCxyZWxlYXNlOi4wMDN9LG49e2xvd3Bhc3NIejppKDUwMCwxZTMpLHE6LjYsbW9kRGVwdGg6MX0sdD17dm9pY2VzOjMsc3ByZWFkQ2VudHM6aSgxLDEwKX0sYT17YmFzZUZyZXFIejppKDEyMDAsMmUzKX0scz17b3NjVHlwZTpbInNhd3Rvb3RoIiwic3F1YXJlIiwidHJpYW5nbGUiXVtJZSgwLDIpXSxzdWJMZXZlbDppKDAsLjIpLG5vaXNlTGV2ZWw6aSgwLC4wNSksZmlsdGVyVHlwZTpOKCk8LjI/ImJhbmRwYXNzIjoibG93cGFzcyIsYnJpZ2h0TGltaXRIejppKDJlMywzMjAwKSxsb3dDdXRIejppKDE1MCwyNjApLGhpZ2hDdXRIejppKDE2MDAsMjQwMCksZmlsdGVyRW52QW1vdW50OmkoMCwuNTUpLGZpbHRlckVudlRpbWVNdWx0OmkoLjgsMS4yKX0sW20scF09RHMoMyksUz17bWlkaTE6bSxtaWRpMjpwfSxQPXtodW1hbml6ZTppKC4zNSwuODUpLHRlbXBvQnBtOjEyMCxzZWNvbmRzUGVyU3RlcDouMTI1LG91dHB1dEdhaW46aSguMDA4LC4wMil9O3JldHVybntlbnZlbG9wZTplLGZpbHRlcjpuLHVuaXNvbjp0LGJhc2U6YSx0b25lOnMsbm90ZXM6Uyx2b2ljZVNwZWNpZmljOlB9fWZ1bmN0aW9uIG5zKCl7Y29uc3QgZT17YXR0YWNrOmkoLjAwNiwuMDMpLGRlY2F5OmkoMS4yLDIuNiksc3VzdGFpbjowLHJlbGVhc2U6LjAwNX0sbj17bG93cGFzc0h6OmkoMTUwLDM4MCkscTouNixtb2REZXB0aDoxfSx0PXt2b2ljZXM6MyxzcHJlYWRDZW50czppKDIsMTIpfSxhPXtiYXNlRnJlcUh6OmkoNDAwLDE2MDApfSxbcyxtXT1EcygzKSxwPXttaWRpMTpzLG1pZGkyOm19LFM9e2h1bWFuaXplOmkoLjM1LC44NSksdGVtcG9CcG06MTIwLHNlY29uZHNQZXJTdGVwOi4xMjUsb3V0cHV0R2FpbjppKC4wMTUsLjA0KX0sUD17b3NjVHlwZTpbInNhd3Rvb3RoIiwic3F1YXJlIiwidHJpYW5nbGUiXVtJZSgwLDIpXSxzdWJMZXZlbDppKC4wNSwuMjUpLG5vaXNlTGV2ZWw6aSgwLC4wNiksZmlsdGVyVHlwZTpOKCk8LjM/ImJhbmRwYXNzIjoibG93cGFzcyIsYnJpZ2h0TGltaXRIejppKDE4MDAsM2UzKSxsb3dDdXRIejppKDE1MCwyNjApLGhpZ2hDdXRIejppKDE1MDAsMjMwMCksZmlsdGVyRW52QW1vdW50OmkoLjA1LC42NSksZmlsdGVyRW52VGltZU11bHQ6aSguODUsMS4zNSl9LE09e2lucHV0Qm9vc3Q6MSxwcmVEZWxheVNlY1JhbmdlOlsuMDE1LC4wNF0sd2V0VHJpbTouNjUsZ2VuZXJhdGl2ZTp7bnVtQmFuZHM6e21pbjoyLG1heDo2fSxiYXNlSHo6e21pbjoyMDAsbWF4OjFlM30scmF0aW9zOlsxLDUvNCw0LzMsMy8yLDcvNCwyXSxvY3RhdmVzOlstMSwwLDFdLHE6e21pbjoyLG1heDoxMH0sZ2Fpbjp7bWluOi4yNSxtYXg6Ljd9LGNvbWJGZWVkYmFjazp7bWluOi4zLG1heDouNTV9LGNvbWJEZWxheU11bHQ6e21pbjoyLG1heDo2fSxkYW1wTXVsdGlwbGllcjoyfX07cmV0dXJue2VudmVsb3BlOmUsZmlsdGVyOm4sdW5pc29uOnQsYmFzZTphLHRvbmU6UCxub3RlczpwLHZvaWNlU3BlY2lmaWM6UyxyZXNvbkZ4Ok19fWZ1bmN0aW9uIGdhKGUsbil7Y29uc3QgdD1pdChlKTtpZighbilyZXR1cm4gdDtmb3IoY29uc3QgUyBvZlsiZW52ZWxvcGUiLCJmaWx0ZXIiLCJ1bmlzb24iLCJiYXNlIiwidG9uZSIsIm5vdGVzIiwidm9pY2VTcGVjaWZpYyJdKW5bU10mJih0W1NdPXsuLi50W1NdLC4uLm5bU119KTt0LmVudmVsb3BlLmF0dGFjaz1sKHQuZW52ZWxvcGUuYXR0YWNrLC4wMDEsLjAyKSx0LmVudmVsb3BlLmRlY2F5PWwodC5lbnZlbG9wZS5kZWNheSwxLDMpLHQuZW52ZWxvcGUuc3VzdGFpbj0wLHQuZW52ZWxvcGUucmVsZWFzZT1sKHQuZW52ZWxvcGUucmVsZWFzZSwuMDAzLC4wNSksdC5maWx0ZXIubG93cGFzc0h6PWwodC5maWx0ZXIubG93cGFzc0h6LDEyMCwxZTMpLHQuZmlsdGVyLnE9LjYsdC5maWx0ZXIubW9kRGVwdGg9bCh0LmZpbHRlci5tb2REZXB0aD8/LjE1LDAsMSksdC51bmlzb24udm9pY2VzPTMsdC51bmlzb24uc3ByZWFkQ2VudHM9bCh0LnVuaXNvbi5zcHJlYWRDZW50cz8/MTAsMCw1MCksdC5iYXNlLmJhc2VGcmVxSHo9bCh0LmJhc2UuYmFzZUZyZXFIej8/MTEwLDIwLDJlMyksdC50b25lfHwodC50b25lPXt9KTtjb25zdCBhPW5ldyBTZXQoWyJzYXd0b290aCIsInNxdWFyZSIsInRyaWFuZ2xlIl0pO3QudG9uZS5vc2NUeXBlPWEuaGFzKHQudG9uZS5vc2NUeXBlKT90LnRvbmUub3NjVHlwZToic2F3dG9vdGgiLHQudG9uZS5zdWJMZXZlbD1sKHQudG9uZS5zdWJMZXZlbD8/MCwwLC41KSx0LnRvbmUubm9pc2VMZXZlbD1sKHQudG9uZS5ub2lzZUxldmVsPz8wLDAsLjIpLHQudG9uZS5maWx0ZXJUeXBlPXQudG9uZS5maWx0ZXJUeXBlPT09ImJhbmRwYXNzIj8iYmFuZHBhc3MiOiJsb3dwYXNzIix0LnRvbmUuYnJpZ2h0TGltaXRIej1sKHQudG9uZS5icmlnaHRMaW1pdEh6Pz8yNTAwLDgwMCw1ZTMpLHQudG9uZS5sb3dDdXRIej1sKHQudG9uZS5sb3dDdXRIej8/MjAwLDQwLDYwMCksdC50b25lLmhpZ2hDdXRIej1sKHQudG9uZS5oaWdoQ3V0SHo/PzJlMyw4MDAsNWUzKSx0LnRvbmUuZmlsdGVyRW52QW1vdW50PWwodC50b25lLmZpbHRlckVudkFtb3VudD8/MCwwLDEpLHQudG9uZS5maWx0ZXJFbnZUaW1lTXVsdD1sKHQudG9uZS5maWx0ZXJFbnZUaW1lTXVsdD8/MSwuMywyKSx0Lm5vdGVzfHwodC5ub3Rlcz17fSk7Y29uc3Qgcz0yNCxtPTQ4O3Qubm90ZXMubWlkaTE9bChNYXRoLnJvdW5kKHQubm90ZXMubWlkaTE/PzM2KSxzLG0pLHQubm90ZXMubWlkaTI9bChNYXRoLnJvdW5kKHQubm90ZXMubWlkaTI/PzQzKSxzLG0pO2xldCBwPU1hdGguYWJzKHQubm90ZXMubWlkaTItdC5ub3Rlcy5taWRpMSk7cmV0dXJuIHA8MyYmKHQubm90ZXMubWlkaTI9bCh0Lm5vdGVzLm1pZGkxKzMscyxtKSxwPU1hdGguYWJzKHQubm90ZXMubWlkaTItdC5ub3Rlcy5taWRpMSkpLHA+PTEyJiYodC5ub3Rlcy5taWRpMj1sKHQubm90ZXMubWlkaTErMTEscyxtKSxwPU1hdGguYWJzKHQubm90ZXMubWlkaTItdC5ub3Rlcy5taWRpMSkpLHA9PT02JiYodC5ub3Rlcy5taWRpMj1sKHQubm90ZXMubWlkaTIrMSxzLG0pKSx0LnZvaWNlU3BlY2lmaWMuaHVtYW5pemU9bCh0LnZvaWNlU3BlY2lmaWMuaHVtYW5pemU/Py42LDAsMSksdC52b2ljZVNwZWNpZmljLnRlbXBvQnBtPWd0KHQudm9pY2VTcGVjaWZpYy50ZW1wb0JwbT8/JGUuZGVmYXVsdEJwbSksdC52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwPWwodC52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwPz8uMTI1LC4wMiwxKSx0LnZvaWNlU3BlY2lmaWMub3V0cHV0R2Fpbj1sKHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPz8uMDYsMCwxKSx0fWZ1bmN0aW9uIGFzKGUpe3JldHVybiA0NDAqTWF0aC5wb3coMiwoZS02OSkvMTIpfWZ1bmN0aW9uIERzKGU9NSl7Y29uc3QgYT1JZSgxMiwzNik7bGV0IHM9SWUoMTIsMzYpLG09MDtmdW5jdGlvbiBwKFMsUCl7Y29uc3QgTT1NYXRoLmFicyhTLVApO3JldHVybiBNPj1lJiZNPDEyJiZNIT09Nn1mb3IoOyFwKGEscykmJm0rKzw2NDspcz1JZSgxMiwzNik7aWYoIXAoYSxzKSl7Y29uc3QgUz1bYSs3LGErNSxhKzMsYS0zLGEtNSxhLTddO2Zvcihjb25zdCBQIG9mIFMpe2NvbnN0IE09TWF0aC5tYXgoMTIsTWF0aC5taW4oMzYsUCkpO2lmKHAoYSxNKSl7cz1NO2JyZWFrfX19cmV0dXJuW2Esc119ZnVuY3Rpb24gU2koZSl7cmV0dXJuIE51bWJlcihlKXx8MH1jb25zdCBNaT1be25hbWU6InRpZ2h0IixhOlsuMDAxLC4wMDRdLGQ6WzEsMS4yNV0scjpbLjAwMywuMDFdLHdlaWdodDouMzV9LHtuYW1lOiJtZWRpdW0iLGE6Wy4wMDMsLjAxXSxkOlsxLjIsMS44XSxyOlsuMDA0LC4wMTVdLHdlaWdodDouM30se25hbWU6IndpZGUiLGE6Wy4wMDYsLjAxNV0sZDpbMS42LDIuNF0scjpbLjAwNCwuMDJdLHdlaWdodDouMn0se25hbWU6InN3ZWxsIixhOlsuMDEsLjAyXSxkOlsxLjIsMi42XSxyOlsuMDA1LC4wMjVdLHdlaWdodDouMTV9XTtmdW5jdGlvbiBiYShlLG4pe3JldHVybiBlK04oKSoobi1lKX1mdW5jdGlvbiBCaShlKXtjb25zdCBuPU1pLm1hcChzPT4oey4uLnN9KSk7aWYoZSlmb3IoY29uc3QgcyBvZiBuKShzLm5hbWU9PT0id2lkZSJ8fHMubmFtZT09PSJzd2VsbCIpJiYocy53ZWlnaHQqPTEuMTUpLHMubmFtZT09PSJ0aWdodCImJihzLndlaWdodCo9LjkpO2NvbnN0IHQ9bi5yZWR1Y2UoKHMsbSk9PnMrKG0ud2VpZ2h0fHwxKSwwKTtsZXQgYT1OKCkqdDtmb3IoY29uc3QgcyBvZiBuKWlmKGEtPXMud2VpZ2h0fHwxLGE8PTApcmV0dXJuIHM7cmV0dXJuIG5bMF19ZnVuY3Rpb24ga2koZSxuLHQpe2xldCBhPWJhKGUuYVswXSxlLmFbMV0pLHM9YmEoZS5kWzBdLGUuZFsxXSksbT1iYShlLnJbMF0sZS5yWzFdKTtyZXR1cm4gYT1RZShhLC4wNixuKSxzPVFlKHMsLjEsbiksbT1RZShtLC4xLG4pLHQmJihzKj1pKDEsMS4xKSksYT1sKGEsLjAwMSwuMDIpLHM9bChzLDEsMyksbT1sKG0sLjAwMywuMDUpLHthdHRhY2s6YSxkZWNheTpzLHJlbGVhc2U6bX19ZnVuY3Rpb24gX2koZSxuLHQ9e30pe2NvbnN0IGE9InRlY2hub1N0YWIiLHM9e2F0dGFjazoiZW52ZWxvcGUuYXR0YWNrIixkZWNheToiZW52ZWxvcGUuZGVjYXkiLHN1c3RhaW46ImVudmVsb3BlLnN1c3RhaW4iLHJlbGVhc2U6ImVudmVsb3BlLnJlbGVhc2UiLGZpbHRlckN1dG9mZjoiZmlsdGVyLmxvd3Bhc3NIeiIsZmlsdGVyUToiZmlsdGVyLnEiLGZpbHRlck1vZERlcHRoOiJmaWx0ZXIubW9kRGVwdGgiLHVuaXNvblZvaWNlczoidW5pc29uLnZvaWNlcyIsdW5pc29uU3ByZWFkOiJ1bmlzb24uc3ByZWFkQ2VudHMiLGJhc2VGcmVxOiJiYXNlLmJhc2VGcmVxSHoiLG1pZGkxOiJub3Rlcy5taWRpMSIsbWlkaTI6Im5vdGVzLm1pZGkyIiwiZW52ZWxvcGUuYXR0YWNrIjoiZW52ZWxvcGUuYXR0YWNrIiwiZW52ZWxvcGUuZGVjYXkiOiJlbnZlbG9wZS5kZWNheSIsImVudmVsb3BlLnN1c3RhaW4iOiJlbnZlbG9wZS5zdXN0YWluIiwiZW52ZWxvcGUucmVsZWFzZSI6ImVudmVsb3BlLnJlbGVhc2UiLCJmaWx0ZXIubG93cGFzc0h6IjoiZmlsdGVyLmxvd3Bhc3NIeiIsImZpbHRlci5xIjoiZmlsdGVyLnEiLCJmaWx0ZXIubW9kRGVwdGgiOiJmaWx0ZXIubW9kRGVwdGgiLCJ1bmlzb24udm9pY2VzIjoidW5pc29uLnZvaWNlcyIsInVuaXNvbi5zcHJlYWRDZW50cyI6InVuaXNvbi5zcHJlYWRDZW50cyIsImJhc2UuYmFzZUZyZXFIeiI6ImJhc2UuYmFzZUZyZXFIeiIsIm5vdGVzLm1pZGkxIjoibm90ZXMubWlkaTEiLCJub3Rlcy5taWRpMiI6Im5vdGVzLm1pZGkyIixvc2NUeXBlOiJ0b25lLm9zY1R5cGUiLHN1YkxldmVsOiJ0b25lLnN1YkxldmVsIixub2lzZUxldmVsOiJ0b25lLm5vaXNlTGV2ZWwiLGZpbHRlclR5cGU6InRvbmUuZmlsdGVyVHlwZSIsYnJpZ2h0TGltaXRIejoidG9uZS5icmlnaHRMaW1pdEh6IixmaWx0ZXJFbnZBbW91bnQ6InRvbmUuZmlsdGVyRW52QW1vdW50IixmaWx0ZXJFbnZUaW1lTXVsdDoidG9uZS5maWx0ZXJFbnZUaW1lTXVsdCIsInRvbmUub3NjVHlwZSI6InRvbmUub3NjVHlwZSIsInRvbmUuc3ViTGV2ZWwiOiJ0b25lLnN1YkxldmVsIiwidG9uZS5ub2lzZUxldmVsIjoidG9uZS5ub2lzZUxldmVsIiwidG9uZS5maWx0ZXJUeXBlIjoidG9uZS5maWx0ZXJUeXBlIiwidG9uZS5icmlnaHRMaW1pdEh6IjoidG9uZS5icmlnaHRMaW1pdEh6IiwidG9uZS5sb3dDdXRIeiI6InRvbmUubG93Q3V0SHoiLCJ0b25lLmhpZ2hDdXRIeiI6InRvbmUuaGlnaEN1dEh6IiwidG9uZS5maWx0ZXJFbnZBbW91bnQiOiJ0b25lLmZpbHRlckVudkFtb3VudCIsInRvbmUuZmlsdGVyRW52VGltZU11bHQiOiJ0b25lLmZpbHRlckVudlRpbWVNdWx0Iiwidm9pY2VTcGVjaWZpYy5odW1hbml6ZSI6InZvaWNlU3BlY2lmaWMuaHVtYW5pemUiLCJ2b2ljZVNwZWNpZmljLnRlbXBvQnBtIjoidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSIsInZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXAiOiJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIiwidm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjoidm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIn0se291dHB1dDptLGF1dG9QYW46cCxkcnlCdXM6UyxzZW5kUmV2ZXJiOlAsc2VuZERlbGF5Ok0sc2VuZEJ1czI6VCx3aXJlUGFuOkcsdGFwUmV2ZXJiOkUsdGFwRGVsYXk6TCxkaXNwb3NlSU86eH09UXQoZSx7fSk7bGV0IE89Z2EoWWUodCk9PT0iQiI/bnMoKTp0cygpLG4pO2NvbnN0IHc9KCk9PkF0KE8udm9pY2VTcGVjaWZpYy50ZW1wb0JwbSksbz0oKT0+RnQoTy52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwfHwuMTI1KSxDPTgsYz1hbihlLHttYXhQb2x5cGhvbnk6Q30pO3RyeXtHKCl9Y2F0Y2h7fXRyeXtFKG0pfWNhdGNoe310cnl7TChtKX1jYXRjaHt9Y29uc3QgZD0oeixEKT0+Yy5zY2hlZHVsZUNsZWFudXAoeixEKTtmdW5jdGlvbiBnKHosRCl7Y29uc3QgVT0odHlwZW9mIEQ9PSJudW1iZXIiP0Q6ZS5jdXJyZW50VGltZSkrNWUtNDt0cnl7ei5lbnYuZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoVSk7Y29uc3QgST1NYXRoLm1heCh6LmVudi5nYWluLnZhbHVlLDFlLTQpO3ouZW52LmdhaW4uc2V0VmFsdWVBdFRpbWUoSSxVKSx6LmVudi5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMWUtNCxVKy4wMyl9Y2F0Y2h7fWNvbnN0IFI9VSsuMDU7Zm9yKGNvbnN0IEkgb2Ygei5zb3VyY2VzKXRyeXtJLnN0b3AoUil9Y2F0Y2h7fWQoeixSKX1mdW5jdGlvbiB1KCl7Yy5hY3RpdmVWb2ljZXNSZWYoKS5sZW5ndGg+PUMmJmMuc3RvcE9sZGVzdChlLmN1cnJlbnRUaW1lKX1jb25zdCBiPXo9Pnt0cnl7Y29uc3QgRD10JiZ0LmV2ZW50cztEJiZELmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGEse2RldGFpbDp6fSkpfWNhdGNoe319O2Z1bmN0aW9uIGgoeixELFUsUil7Y29uc3QgST1lLmNyZWF0ZUdhaW4oKTtJLmdhaW4uc2V0VmFsdWVBdFRpbWUoVSxSKTtjb25zdCBqPVtdLHNlPVtJXSxoZT1bLUQsMCwrRF0sZWU9W2koLS45LC0uNCksaSgtLjE1LC4xNSksaSguNCwuOSldO2ZvcihsZXQgWD0wO1g8MztYKyspe2NvbnN0IGNlPWUuY3JlYXRlT3NjaWxsYXRvcigpO3RyeXtjZS50eXBlPVN0cmluZyhPJiZPLnRvbmUmJk8udG9uZS5vc2NUeXBlfHwic2F3dG9vdGgiKX1jYXRjaHtjZS50eXBlPSJzYXd0b290aCJ9Y2UuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGwoeiwxMCwyZTQpLFIpLGNlLmRldHVuZSYmY2UuZGV0dW5lLnNldFZhbHVlQXRUaW1lKFNpKGhlW1hdKSxSKTtsZXQgSz1udWxsO3RyeXtpZihlLmNyZWF0ZVN0ZXJlb1Bhbm5lcil7Sz1lLmNyZWF0ZVN0ZXJlb1Bhbm5lcigpO3RyeXtLLnBhbi5zZXRWYWx1ZUF0VGltZShlZVtYXSxSKX1jYXRjaHtLLnBhbi52YWx1ZT1lZVtYXX1jZS5jb25uZWN0KEspLEsuY29ubmVjdChJKSxzZS5wdXNoKEspfWVsc2UgY2UuY29ubmVjdChJKX1jYXRjaHt0cnl7Y2UuY29ubmVjdChJKX1jYXRjaHt9fWoucHVzaChjZSl9cmV0dXJue2dyb3VwR2FpbjpJLHNvdXJjZXM6aixub2RlczpzZX19ZnVuY3Rpb24gZih6LEQsVSl7Y29uc3QgUj1sKER8fDAsMCwxKTtpZihSPD0xZS00KXJldHVybntzb3VyY2U6bnVsbCxub2RlOm51bGx9O2NvbnN0IEk9ZS5jcmVhdGVHYWluKCk7SS5nYWluLnNldFZhbHVlQXRUaW1lKFIsVSk7Y29uc3Qgaj1lLmNyZWF0ZU9zY2lsbGF0b3IoKTtyZXR1cm4gai50eXBlPSJzaW5lIixqLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShsKHoqLjUsMTAsMmU0KSxVKSxqLmNvbm5lY3QoSSkse3NvdXJjZTpqLG5vZGU6SX19ZnVuY3Rpb24geSh6LEQsVSl7Y29uc3QgUj1sKHp8fDAsMCwxKTtpZihSPD0xZS00KXJldHVybntzb3VyY2U6bnVsbCxub2RlOm51bGx9O2NvbnN0IEk9ZS5jcmVhdGVHYWluKCk7SS5nYWluLnNldFZhbHVlQXRUaW1lKFIsRCk7Y29uc3Qgaj1NYXRoLm1heCgxLE1hdGguZmxvb3IoKFV8fC4wNSkqZS5zYW1wbGVSYXRlKSksc2U9ZS5jcmVhdGVCdWZmZXIoMSxqLGUuc2FtcGxlUmF0ZSksaGU9c2UuZ2V0Q2hhbm5lbERhdGEoMCk7Zm9yKGxldCBYPTA7WDxqO1grKyloZVtYXT0oTigpKjItMSkqLjY7Y29uc3QgZWU9ZS5jcmVhdGVCdWZmZXJTb3VyY2UoKTtyZXR1cm4gZWUuYnVmZmVyPXNlLGVlLmNvbm5lY3QoSSkse3NvdXJjZTplZSxub2RlOkl9fWZ1bmN0aW9uIF8oeix7YWNjZW50OkQ9ITEsc3VzdGFpblN0ZXBzOlU9MCx2ZWxvY2l0eTpSPTF9PXt9KXt2YXIgdXQscHQsQ3QsVXQsWGUsRGUsbXQsQnQsR3QsT3QsUGU7Y29uc3QgST10eXBlb2Ygej09Im51bWJlciI/ejplLmN1cnJlbnRUaW1lKy4wMDEsaj1PLHNlPWwoai52b2ljZVNwZWNpZmljLmh1bWFuaXplLDAsMSksaGU9RD09PSJ3ZWFrIixlZT1EPT09ITAsWD1sKE1hdGgucm91bmQoai5ub3Rlcy5taWRpMSksMTIsMzYpLGNlPWwoTWF0aC5yb3VuZChqLm5vdGVzLm1pZGkyKSwxMiwzNiksSz1hcyhYKSxhZT1hcyhjZSk7Yih7dGltZTpJLGFjY2VudDpELHN1c3RhaW5TdGVwczpVLHZlbG9jaXR5OlIsbWlkaTE6WCxtaWRpMjpjZSxmcmVxMUh6OkssZnJlcTJIejphZX0pO2NvbnN0IGZlPUJpKGVlKTtsZXR7YXR0YWNrOm1lLGRlY2F5OnBlLHJlbGVhc2U6b2V9PWtpKGZlLHNlLGVlKTttZT1sKG1lKmkoLjksMS4xKStqLmVudmVsb3BlLmF0dGFjayppKDAsLjIpLC4wMDEsLjAyKSxwZT1sKHBlKmkoLjksMS4xKStqLmVudmVsb3BlLmRlY2F5KmkoMCwuMiksMSwzKSxvZT1sKG9lKmkoLjksMS4xKStqLmVudmVsb3BlLnJlbGVhc2UqaSgwLC4yKSwuMDAzLC4wNSksbWU9RXQobWUsdCkscGU9SXQocGUsdCksb2U9anQob2UsdCk7Y29uc3QgQj1sKGouZmlsdGVyLnEsLjEsMTApO2xldCB2PWwoUiwwLDEpO2VlJiYodio9YnQoMSkpLGhlJiYodio9LjgpLHYqPWwoai52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4xLDAsMSk7Y29uc3QgRj1NYXRoLm1heCgwLFUpKm8oKTt1KCk7Y29uc3QgVz1bXSxZPVtdLEo9ZS5jcmVhdGVHYWluKCk7Si5nYWluLnNldFZhbHVlQXRUaW1lKDEsSSksWS5wdXNoKEopO2NvbnN0IGllPWwoai51bmlzb24uc3ByZWFkQ2VudHMsMCw1MCksdWU9aChLLGllLC41LEkpLG5lPWgoYWUsaWUsLjUsSSk7dWUuZ3JvdXBHYWluLmNvbm5lY3QoSiksbmUuZ3JvdXBHYWluLmNvbm5lY3QoSiksVy5wdXNoKC4uLnVlLnNvdXJjZXMsLi4ubmUuc291cmNlcyksWS5wdXNoKC4uLnVlLm5vZGVzLC4uLm5lLm5vZGVzKTtjb25zdCB0ZT1mKEssKCh1dD1qLnRvbmUpPT1udWxsP3ZvaWQgMDp1dC5zdWJMZXZlbCl8fDAsSSksWj1mKGFlLCgocHQ9ai50b25lKT09bnVsbD92b2lkIDA6cHQuc3ViTGV2ZWwpfHwwLEkpO3RlLm5vZGUmJih0ZS5ub2RlLmNvbm5lY3QoSiksWS5wdXNoKHRlLm5vZGUpLHRlLnNvdXJjZSYmVy5wdXNoKHRlLnNvdXJjZSkpLFoubm9kZSYmKFoubm9kZS5jb25uZWN0KEopLFkucHVzaChaLm5vZGUpLFouc291cmNlJiZXLnB1c2goWi5zb3VyY2UpKTtjb25zdCByZT1NYXRoLm1pbiguMTIsTWF0aC5tYXgoLjAyLG1lKy4wMikpLGRlPXkoKChDdD1qLnRvbmUpPT1udWxsP3ZvaWQgMDpDdC5ub2lzZUxldmVsKXx8MCxJLHJlKTtkZS5ub2RlJiYoZGUubm9kZS5jb25uZWN0KEopLFkucHVzaChkZS5ub2RlKSxkZS5zb3VyY2UmJlcucHVzaChkZS5zb3VyY2UpKTtjb25zdCBiZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO2JlLnR5cGU9ImhpZ2hwYXNzIjtjb25zdCBTZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO1NlLnR5cGU9KChVdD1qLnRvbmUpPT1udWxsP3ZvaWQgMDpVdC5maWx0ZXJUeXBlKT09PSJiYW5kcGFzcyI/ImJhbmRwYXNzIjoibG93cGFzcyI7Y29uc3QgemU9bCgoKFhlPWoudG9uZSk9PW51bGw/dm9pZCAwOlhlLmJyaWdodExpbWl0SHopPz8zZTMsODAwLDVlMyksQmU9bCgoKERlPWoudG9uZSk9PW51bGw/dm9pZCAwOkRlLmxvd0N1dEh6KT8/MjAwLDQwLDYwMCksUmU9bCgoKG10PWoudG9uZSk9PW51bGw/dm9pZCAwOm10LmhpZ2hDdXRIeik/PzJlMyw4MDAsNWUzKSxBZT1sKEJlKmkoLjksMS4xNSksNjAsNjAwKSx2ZT1NYXRoLm1pbihSZSppKC45LDEuMSksemUpO2JlLlEuc2V0VmFsdWVBdFRpbWUoLjcwNyxJKSxTZS5RLnNldFZhbHVlQXRUaW1lKEIsSSksYmUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKEFlLEkpO2NvbnN0IEdlPWwoai5iYXNlLmJhc2VGcmVxSHosNDAsMmU0KSxOZT1NYXRoLm1pbihHZSx2ZSk7U2UuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKE5lLEkpO2NvbnN0IE1lPWwoai5maWx0ZXIubW9kRGVwdGg/PzEsMCwxKTtsZXQga2U9aSgwLE1lKTtlZSYmKGtlPU1hdGgubWluKDEsa2UqaSgxLjA1LDEuMSkpKSxoZSYmKGtlPU1hdGgubWF4KDAsa2UqaSguOTIsLjk4KSkpO2NvbnN0IF9lPWwoTmUqKDEra2UpLDQwLHZlKSxsZT1sKCgoQnQ9ai50b25lKT09bnVsbD92b2lkIDA6QnQuZmlsdGVyRW52QW1vdW50KT8/MCwwLDEpLFRlPWwoKChHdD1qLnRvbmUpPT1udWxsP3ZvaWQgMDpHdC5maWx0ZXJFbnZUaW1lTXVsdCk/PzEsLjMsMik7dHJ5e1NlLmZyZXF1ZW5jeS5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoSSl9Y2F0Y2h7fWlmKGxlPjFlLTQpe2NvbnN0IHhlPU1hdGgubWluKF9lKigxK2xlKSx2ZSksRWU9SStNYXRoLm1heCguMDIscGUqVGUpO1NlLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZSh4ZSxJKTt0cnl7U2UuZnJlcXVlbmN5LmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoTWF0aC5tYXgoNDAsX2UpLEVlKX1jYXRjaHtTZS5mcmVxdWVuY3kubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoTWF0aC5tYXgoNDAsX2UpLEVlKX19ZWxzZSBTZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoX2UsSSk7Si5jb25uZWN0KGJlKSxiZS5jb25uZWN0KFNlKSxZLnB1c2goYmUsU2UpO2NvbnN0IGdlPWUuY3JlYXRlR2FpbigpO2dlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxJKSxTZS5jb25uZWN0KGdlKSxZLnB1c2goZ2UpO2NvbnN0IHdlPUkrbWUsT2U9d2UrcGUsSGU9T2UrRixVZT1IZStvZTtnZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKDEsd2UpLGdlLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LE9lKSxnZS5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsSGUpLGdlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxVZSk7Y29uc3QgV2U9ZS5jcmVhdGVHYWluKCk7V2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZSh2LEkpLGdlLmNvbm5lY3QoV2UpLFkucHVzaChXZSk7dHJ5eyhPdD1wLm9uVHJpZ2dlcik9PW51bGx8fE90LmNhbGwocCl9Y2F0Y2h7fVdlLmNvbm5lY3QocC5pbnB1dCk7dHJ5e1dlLmNvbm5lY3QoVCl9Y2F0Y2h7fXRyeXtXZS5jb25uZWN0KFApfWNhdGNoe310cnl7V2UuY29ubmVjdChNKX1jYXRjaHt9Zm9yKGNvbnN0IHhlIG9mIFcpKFBlPXhlLnN0YXJ0KT09bnVsbHx8UGUuY2FsbCh4ZSxJKTtjb25zdCBWZT1VZSsuMDY7Zm9yKGNvbnN0IHhlIG9mIFcpdHJ5e3hlLnN0b3AoVmUpfWNhdGNoe31jb25zdCBqZT17ZW52OmdlLHNvdXJjZXM6Vyxub2RlczpZfTtjLmFkZChqZSksZChqZSxWZSl9ZnVuY3Rpb24gSCh6KXtjb25zdCBEPXR5cGVvZiB6PT0ibnVtYmVyIj96OmUuY3VycmVudFRpbWU7Yy5hY3RpdmVWb2ljZXNSZWYoKS5zbGljZSgpLmZvckVhY2goVT0+ZyhVLEQpKX1mdW5jdGlvbiBWKHopeyR0KGEsenx8e30se2F1dG9QYW46cCxzZW5kUmV2ZXJiOlAsc2VuZERlbGF5Ok0sc2VuZEJ1czI6VCxnZXRCcG06dyxhdWRpb0NvbnRleHQ6ZX0pfWZ1bmN0aW9uIFEoeil7bGV0IEQ9e307aWYoISh6JiZ0eXBlb2Ygej09Im9iamVjdCIpKXJldHVybjtjb25zdCBSPU9iamVjdC5rZXlzKHopLnNvbWUoaj0+ai5pbmNsdWRlcygiLiIpKSxJPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LGEpO2lmKFIpRD1zdChhLHoscyk7ZWxzZSBpZihJJiZ0eXBlb2YgelthXT09Im9iamVjdCIpe2NvbnN0IGo9cXQoelthXSxbYV0pO0Q9c3QoYSxqLHMpfWVsc2UgRD16O089Z2EoTyxEfHx7fSksVih6fHx7fSl9ZnVuY3Rpb24gJCh6KXtjb25zdCBEPXp8fFllKHQpO089Z2EoRD09PSJCIj9ucygpOnRzKCkse30pO2NvbnN0IFU9YXQoYSxPLHMpO3JldHVybntuZXN0ZWQ6aXQoTyksZmxhdDpVfX1mdW5jdGlvbiBxKCl7cmV0dXJuIGF0KGEsTyxzKX1mdW5jdGlvbiBrKCl7dHJ5e3goKX1jYXRjaHt9fWNvbnN0IEE9e291dHB1dDptLHNlbmRCdXMyOlQsc2VuZERlbGF5Ok0sc2VuZFJldmVyYjpQLHRyaWdnZXI6XyxzdG9wOkgsdXBkYXRlUGFyYW1zOlEscmVnZW5lcmF0ZVBhcmFtczokLGdldEZsYXRQYXJhbXM6cSxkaXNwb3NlOmt9O3JldHVybiBBLnNpZGU9KCk9PlllKHQpLEEuY2hhbmdlVm9pY2VQYXJhbXNPbkV2ZXJ5U3RlcD0wLEF9ZnVuY3Rpb24gc3MoKXtjb25zdCBlPXthdHRhY2s6aSg4ZS00LC4wMDYpLGRlY2F5OmkoLjAxNSwuMSksc3VzdGFpbjowLHJlbGVhc2U6aSguMDIsLjA4KX0sbj17dXNlQmFuZHBhc3M6TigpPC43LGNlbnRlckh6OmkoM2UzLDllMykscTppKC44LDMpLGhwSHo6aSgxNTAwLDRlMyksbHBIejppKDdlMywxM2UzKSxhY2NlbnRUb25lQm9vc3Q6aSgxLjA1LDEuMjUpLHZlcnlDbGlja3lQcm9iOk4oKSouMTIrLjEsc2luZVBvcFByb2I6TigpKi4xKy4wNixsYXllck5vaXNlUHJvYjpOKCkqLjI1Ky4xNX0sdD17aHVtYW5pemU6aSguMzUsLjg1KSx0ZW1wb0JwbToxMjAsc2Vjb25kc1BlclN0ZXA6LjEyNSxvdXRwdXRHYWluOmkoLjAzLC4wNil9O3JldHVybntlbnZlbG9wZTplLGNsaWNrOm4sdm9pY2VTcGVjaWZpYzp0fX1mdW5jdGlvbiBpcygpe2NvbnN0IGU9e2F0dGFjazppKDhlLTQsLjAwNyksZGVjYXk6aSguMDE4LC4xMiksc3VzdGFpbjowLHJlbGVhc2U6aSguMDIsLjEpfSxuPXt1c2VCYW5kcGFzczpOKCk8LjYsY2VudGVySHo6aSgyNTAwLDdlMykscTppKC43LDIuNSksaHBIejppKDEyMDAsMzIwMCksbHBIejppKDU1MDAsMTFlMyksYWNjZW50VG9uZUJvb3N0OmkoMS4wNSwxLjIpLHZlcnlDbGlja3lQcm9iOk4oKSouMDgrLjA2LHNpbmVQb3BQcm9iOk4oKSouMDgrLjA0LGxheWVyTm9pc2VQcm9iOk4oKSouMjUrLjJ9LHQ9e2h1bWFuaXplOmkoLjM1LC44NSksdGVtcG9CcG06MTIwLHNlY29uZHNQZXJTdGVwOi4xMjUsb3V0cHV0R2FpbjppKC4wMjgsLjA1KX0sYT17aW5wdXRCb29zdDoxLHByZURlbGF5U2VjUmFuZ2U6Wy4wMSwuMDI1XSx3ZXRUcmltOi43LGdlbmVyYXRpdmU6e251bUJhbmRzOnttaW46MixtYXg6Nn0sYmFzZUh6OnttaW46MTUwMCxtYXg6NmUzfSxyYXRpb3M6WzEsTWF0aC5TUVJUMiw1LzQsMy8yLDJdLG9jdGF2ZXM6Wy0xLDAsMV0scTp7bWluOjMsbWF4OjEyfSxnYWluOnttaW46LjIsbWF4Oi42fSxjb21iRmVlZGJhY2s6e21pbjouMyxtYXg6LjU1fSxjb21iRGVsYXlNdWx0OnttaW46MixtYXg6NX0sZGFtcE11bHRpcGxpZXI6M319O3JldHVybntlbnZlbG9wZTplLGNsaWNrOm4sdm9pY2VTcGVjaWZpYzp0LHJlc29uRng6YX19ZnVuY3Rpb24gdmEoZSxuKXtjb25zdCB0PWl0KGUpO2lmKCFuKXJldHVybiB0O2Zvcihjb25zdCBhIG9mWyJlbnZlbG9wZSIsImNsaWNrIiwidm9pY2VTcGVjaWZpYyJdKW5bYV0mJih0W2FdPXsuLi50W2FdLC4uLm5bYV19KTtpZih0LmVudmVsb3BlLmF0dGFjaz1sKHQuZW52ZWxvcGUuYXR0YWNrLDVlLTQsLjAxKSx0LmVudmVsb3BlLmRlY2F5PWwodC5lbnZlbG9wZS5kZWNheSwuMDEsLjIpLHQuZW52ZWxvcGUuc3VzdGFpbj0wLHQuZW52ZWxvcGUucmVsZWFzZT1sKHQuZW52ZWxvcGUucmVsZWFzZSwuMDE1LC4yKSx0LmNsaWNrLnVzZUJhbmRwYXNzPSEhdC5jbGljay51c2VCYW5kcGFzcyx0LmNsaWNrLmNlbnRlckh6PWwodC5jbGljay5jZW50ZXJIeiwxZTMsMTRlMyksdC5jbGljay5xPWwodC5jbGljay5xLC41LDYpLHQuY2xpY2suaHBIej1sKHQuY2xpY2suaHBIeiwyMDAsMWU0KSx0LmNsaWNrLmxwSHo9bCh0LmNsaWNrLmxwSHosMWUzLDE4ZTMpLHQuY2xpY2suaHBIej49dC5jbGljay5scEh6KXtjb25zdCBhPSh0LmNsaWNrLmhwSHordC5jbGljay5scEh6KSouNTt0LmNsaWNrLmhwSHo9bChhKi44LDIwMCwxMmUzKSx0LmNsaWNrLmxwSHo9bChhKjEuMiwxZTMsMmU0KX1yZXR1cm4gdC5jbGljay5hY2NlbnRUb25lQm9vc3Q9bCh0LmNsaWNrLmFjY2VudFRvbmVCb29zdD8/MS4xLDEsMS42KSx0LmNsaWNrLnZlcnlDbGlja3lQcm9iPWwodC5jbGljay52ZXJ5Q2xpY2t5UHJvYj8/LjE0LDAsMSksdC5jbGljay5zaW5lUG9wUHJvYj1sKHQuY2xpY2suc2luZVBvcFByb2I/Py4xLDAsMSksdC5jbGljay5sYXllck5vaXNlUHJvYj1sKHQuY2xpY2subGF5ZXJOb2lzZVByb2I/Py4yNSwwLDEpLHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT1sKHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT8/LjYsMCwxKSx0LnZvaWNlU3BlY2lmaWMudGVtcG9CcG09Z3QodC52b2ljZVNwZWNpZmljLnRlbXBvQnBtPz8kZS5kZWZhdWx0QnBtKSx0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA9bCh0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA/Py4xMjUsLjAyLDEpLHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPWwodC52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wMywwLDEpLHR9ZnVuY3Rpb24gVGkoZSxuLHQ9e30pe2NvbnN0IGE9ImNsaWNrcyIscz17YXR0YWNrOiJlbnZlbG9wZS5hdHRhY2siLGRlY2F5OiJlbnZlbG9wZS5kZWNheSIsc3VzdGFpbjoiZW52ZWxvcGUuc3VzdGFpbiIscmVsZWFzZToiZW52ZWxvcGUucmVsZWFzZSIsY2VudGVySHo6ImNsaWNrLmNlbnRlckh6IixxOiJjbGljay5xIixocEh6OiJjbGljay5ocEh6IixscEh6OiJjbGljay5scEh6Iix1c2VCYW5kcGFzczoiY2xpY2sudXNlQmFuZHBhc3MiLCJlbnZlbG9wZS5hdHRhY2siOiJlbnZlbG9wZS5hdHRhY2siLCJlbnZlbG9wZS5kZWNheSI6ImVudmVsb3BlLmRlY2F5IiwiZW52ZWxvcGUuc3VzdGFpbiI6ImVudmVsb3BlLnN1c3RhaW4iLCJlbnZlbG9wZS5yZWxlYXNlIjoiZW52ZWxvcGUucmVsZWFzZSIsImNsaWNrLmNlbnRlckh6IjoiY2xpY2suY2VudGVySHoiLCJjbGljay5xIjoiY2xpY2sucSIsImNsaWNrLmhwSHoiOiJjbGljay5ocEh6IiwiY2xpY2subHBIeiI6ImNsaWNrLmxwSHoiLCJjbGljay51c2VCYW5kcGFzcyI6ImNsaWNrLnVzZUJhbmRwYXNzIiwidm9pY2VTcGVjaWZpYy5odW1hbml6ZSI6InZvaWNlU3BlY2lmaWMuaHVtYW5pemUiLCJ2b2ljZVNwZWNpZmljLnRlbXBvQnBtIjoidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSIsInZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXAiOiJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIiwidm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjoidm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIn0se291dHB1dDptLGF1dG9QYW46cCxkcnlCdXM6UyxzZW5kUmV2ZXJiOlAsc2VuZERlbGF5Ok0sc2VuZEJ1czI6VCx3aXJlUGFuOkcsdGFwUmV2ZXJiOkUsdGFwRGVsYXk6TCxkaXNwb3NlSU86eH09UXQoZSx7fSk7bGV0IE89dmEoWWUodCk9PT0iQiI/aXMoKTpzcygpLG4pO2NvbnN0IHc9KCk9PkF0KE8udm9pY2VTcGVjaWZpYy50ZW1wb0JwbSksbz0oKT0+RnQoTy52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwfHwuMTI1KSxDPTEyLGM9YW4oZSx7bWF4UG9seXBob255OkN9KTt0cnl7RygpfWNhdGNoe310cnl7RShtKX1jYXRjaHt9dHJ5e0wobSl9Y2F0Y2h7fWZ1bmN0aW9uIGQoKXtjb25zdCBxPWUuY3JlYXRlR2FpbigpO3JldHVybiBxLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxlLmN1cnJlbnRUaW1lKSxxfWNvbnN0IGc9KHEsayk9PmMuc2NoZWR1bGVDbGVhbnVwKHEsayk7ZnVuY3Rpb24gdShxLGspe2NvbnN0IEE9KHR5cGVvZiBrPT0ibnVtYmVyIj9rOmUuY3VycmVudFRpbWUpKzVlLTQ7dHJ5e3EuZW52R2Fpbi5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhBKTtjb25zdCBEPU1hdGgubWF4KHEuZW52R2Fpbi5nYWluLnZhbHVlLDFlLTQpO3EuZW52R2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKEQsQSkscS5lbnZHYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LEErLjAzKX1jYXRjaHt9Y29uc3Qgej1BKy4wNTtmb3IoY29uc3QgRCBvZiBxLnNvdXJjZXMpdHJ5e0Quc3RvcCh6KX1jYXRjaHt9ZyhxLHopfWZ1bmN0aW9uIGIoKXtjLmFjdGl2ZVZvaWNlc1JlZigpLmxlbmd0aD49QyYmYy5zdG9wT2xkZXN0KGUuY3VycmVudFRpbWUpfWNvbnN0IGg9cT0+e3RyeXtjb25zdCBrPXQmJnQuZXZlbnRzO2smJmsuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOnF9KSl9Y2F0Y2h7fX07ZnVuY3Rpb24gZihxLHthY2NlbnQ6az0hMSxzdXN0YWluU3RlcHM6QT0wLHZlbG9jaXR5Ono9MX09e30pe3ZhciBrZTtjb25zdCBEPXR5cGVvZiBxPT0ibnVtYmVyIj9xOmUuY3VycmVudFRpbWUrLjAwMSxVPU8sUj1sKFUudm9pY2VTcGVjaWZpYy5odW1hbml6ZSwwLDEpLEk9az09PSJ3ZWFrIixqPWs9PT0hMDtsZXQgc2U9UWUoVS5lbnZlbG9wZS5hdHRhY2ssaSguMDUsLjEyKSxSKSxoZT1RZShVLmVudmVsb3BlLmRlY2F5LGkoLjA2LC4xMiksUiksZWU9UWUoVS5lbnZlbG9wZS5yZWxlYXNlLGkoLjA1LC4xKSxSKTtjb25zdCBYPU1hdGgubWF4KDAsQSkqbygpLGNlPXcoKTtoZT1UdChoZSxjZSksZWU9VHQoZWUsY2UpLHNlPUV0KHNlLHQpLGhlPUl0KGhlLHQpLGVlPWp0KGVlLHQpO2NvbnN0IEs9bChVLmNsaWNrLmNlbnRlckh6K3RuKC4wMykqVS5jbGljay5jZW50ZXJIeipSLDUwMCwxNmUzKSxhZT1sKFUuY2xpY2sucSt0biguMDYpKlIsLjUsMTApO2xldCBmZT1sKFUuY2xpY2suaHBIeit0biguMDgpKlUuY2xpY2suaHBIeipSLDIwMCwxNGUzKSxtZT1sKFUuY2xpY2subHBIeit0biguMDgpKlUuY2xpY2subHBIeipSLDFlMywyZTQpO2lmKGZlPj1tZSl7Y29uc3QgX2U9KGZlK21lKSouNTtmZT1sKF9lKi44NSwyMDAsMTRlMyksbWU9bChfZSoxLjE1LDFlMywyZTQpfWNvbnN0IHBlPSEhVS5jbGljay51c2VCYW5kcGFzcyxvZT1OKCksQj1sKFUuY2xpY2sudmVyeUNsaWNreVByb2IsMCwxKSx2PUIrbChVLmNsaWNrLnNpbmVQb3BQcm9iLDAsMSksRj1vZTxCPyJ2ZXJ5IjpvZTx2PyJzaW5lIjoibm9pc2UiLFc9TigpPGwoVS5jbGljay5sYXllck5vaXNlUHJvYiwwLDEpO2xldCBZPWwoeiwwLDEpO2omJihZKj1idChpKDEsMikpKSxJJiYoWSo9Ljg1KTtjb25zdCBKPWo/bChVLmNsaWNrLmFjY2VudFRvbmVCb29zdCwxLDEuNik6MTtZKj1sKFUudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPz8uMDMsMCwxKSxoKHt0aW1lOkQsYWNjZW50Omssc3VzdGFpblN0ZXBzOkEsdmVsb2NpdHk6eixjZW50ZXJIejpLLGhwSHo6ZmUsbHBIejptZSxxOmFlLHVzZUJhbmRwYXNzOnBlfSksYigpO2NvbnN0IGllPWQoKSx1ZT1bXSxuZT1baWVdO0Y9PT0idmVyeSI/KHNlPWwoc2UqLjUsM2UtNCwuMDAyKSxoZT1sKGhlKi41LC4wMDQsLjAxOCksZWU9bChlZSouNiwuMDE1LC4wNikpOkY9PT0ic2luZSImJihzZT1sKHNlKi42LDVlLTQsLjAwMyksaGU9bChoZSouNywuMDA2LC4wMjgpLGVlPWwoZWUqLjgsLjAxNSwuMDcpKTtsZXQgdGU9bnVsbCxaPW51bGwscmU9bnVsbDtpZihGPT09InNpbmUiKXtjb25zdCBfZT1lLmNyZWF0ZU9zY2lsbGF0b3IoKTtfZS50eXBlPSJzaW5lIjtjb25zdCBsZT1sKEsqSiooMS4yK04oKSouNCksMTUwMCwxOGUzKSxUZT1sKGxlKiguNitOKCkqLjI1KSwxZTMsMTZlMyk7X2UuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGxlLEQpLF9lLmZyZXF1ZW5jeS5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKE1hdGgubWF4KDIwLFRlKSxEK01hdGgubWluKC4wMixzZStoZSkpO2NvbnN0IGdlPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Z2UudHlwZT0iaGlnaHBhc3MiLGdlLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShNYXRoLm1heCgxMjAwLGZlKi44KSxEKSxnZS5RLnNldFZhbHVlQXRUaW1lKC43MDcsRCksdGU9Z2UsWj1nZSxyZT1fZX1lbHNle2NvbnN0IF9lPU1hdGgubWF4KC4wMixzZStoZStlZStYKSsuMDQsbGU9cW4oZSxfZSksVGU9ZS5jcmVhdGVCdWZmZXJTb3VyY2UoKTtpZihUZS5idWZmZXI9bGUsVGUubG9vcD0hMSxyZT1UZSxGPT09InZlcnkiKXtjb25zdCBnZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO2dlLnR5cGU9ImJhbmRwYXNzIjtjb25zdCB3ZT1sKEsqKDEuNStOKCkqLjcpLDRlMywxNmUzKSpKLE9lPWwoYWUqKDIuNStOKCkqMi41KSwyLDE4KTtnZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUod2UsRCksZ2UuUS5zZXRWYWx1ZUF0VGltZShPZSxEKSx0ZT1nZSxaPWdlfWVsc2UgaWYocGUpe2NvbnN0IGdlPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Z2UudHlwZT0iYmFuZHBhc3MiLGdlLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShLKkosRCksZ2UuUS5zZXRWYWx1ZUF0VGltZShhZSxEKSx0ZT1nZSxaPWdlfWVsc2V7Y29uc3QgZ2U9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtnZS50eXBlPSJoaWdocGFzcyIsZ2UuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGZlKkosRCksZ2UuUS5zZXRWYWx1ZUF0VGltZSguNzA3LEQpO2NvbnN0IHdlPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7d2UudHlwZT0ibG93cGFzcyIsd2UuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKG1lKkosRCksd2UuUS5zZXRWYWx1ZUF0VGltZSguNzA3LEQpLHRlPWdlLFo9d2UsZ2UuY29ubmVjdCh3ZSl9fWNvbnN0IGRlPWUuY3JlYXRlR2FpbigpO2RlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxEKSxuZS5wdXNoKGRlKTt0cnl7Y29uc3QgX2U9U3RyaW5nKHQmJnQuc2lkZSkudG9VcHBlckNhc2UoKT09PSJCIj8uMDM6LjAxNTtzZT1sKHNlKiguOTgrLjA2KlkpLDVlLTQsX2UpfWNhdGNoe3NlPWwoc2UqKC45OCsuMDYqWSksNWUtNCwuMDE1KX1jb25zdCBiZT1EK3NlLFNlPWJlK2hlLEJlPVNlK1gsUmU9QmUrZWUsQWU9VS5lbnZlbG9wZS5zdXN0YWluLHZlPVg+MD9NYXRoLm1heCguMDUsQWUpOkFlO2lmKGRlLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoMSxiZSksZGUuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh2ZSxTZSksZGUuZ2Fpbi5zZXRWYWx1ZUF0VGltZSh2ZSxCZSksZGUuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsUmUpLHJlLmNvbm5lY3QodGUpLFouY29ubmVjdChkZSksZGUuY29ubmVjdChpZSksbmUucHVzaCh0ZSksdGUhPT1aJiZuZS5wdXNoKFopLHVlLnB1c2gocmUpLFcpe2NvbnN0IF9lPU1hdGgubWF4KC4wMDgsTWF0aC5taW4oLjAyLChzZStoZSkqLjkpKSxsZT1xbihlLF9lKy4wMSksVGU9ZS5jcmVhdGVCdWZmZXJTb3VyY2UoKTtUZS5idWZmZXI9bGUsVGUubG9vcD0hMTtjb25zdCBnZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO2dlLnR5cGU9ImhpZ2hwYXNzIixnZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoTWF0aC5tYXgoNGUzLGZlKjEuMiksRCksZ2UuUS5zZXRWYWx1ZUF0VGltZSguOSxEKTtjb25zdCB3ZT1lLmNyZWF0ZUdhaW4oKSxPZT01ZS00LEhlPU1hdGgubWluKC4wMTIsTWF0aC5tYXgoLjAwNCxoZSouNSkpLFVlPUQrT2UsV2U9VWUrSGU7d2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxZS00LEQpLHdlLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoLjYsVWUpLHdlLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LFdlKSxUZS5jb25uZWN0KGdlKSxnZS5jb25uZWN0KHdlKSx3ZS5jb25uZWN0KGllKSx1ZS5wdXNoKFRlKSxuZS5wdXNoKGdlKSxuZS5wdXNoKHdlKTt0cnl7VGUuc3RhcnQoRCksVGUuc3RvcChXZSsuMDIpfWNhdGNoe319Y29uc3QgR2U9ZS5jcmVhdGVHYWluKCk7R2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZShZLEQpLGllLmNvbm5lY3QoR2UpO3RyeXsoa2U9cC5vblRyaWdnZXIpPT1udWxsfHxrZS5jYWxsKHApfWNhdGNoe31HZS5jb25uZWN0KHAuaW5wdXQpLG5lLnB1c2goR2UpO3RyeXtHZS5jb25uZWN0KFQpfWNhdGNoe310cnl7R2UuY29ubmVjdChNKX1jYXRjaHt9cmUuc3RhcnQoRCk7Y29uc3QgTmU9UmUrLjA2O3RyeXtyZS5zdG9wKE5lKX1jYXRjaHt9Y29uc3QgTWU9e2VudkdhaW46ZGUsc291cmNlczp1ZSxub2RlczpuZX07Yy5hZGQoTWUpLGcoTWUsTmUpfWZ1bmN0aW9uIHkocSl7Y29uc3Qgaz10eXBlb2YgcT09Im51bWJlciI/cTplLmN1cnJlbnRUaW1lO2MuYWN0aXZlVm9pY2VzUmVmKCkuc2xpY2UoKS5mb3JFYWNoKEE9PnUoQSxrKSl9ZnVuY3Rpb24gXyhxKXtsZXQgaz17fTtpZighKHEmJnR5cGVvZiBxPT0ib2JqZWN0IikpcmV0dXJuO2NvbnN0IHo9T2JqZWN0LmtleXMocSkuc29tZShVPT5VLmluY2x1ZGVzKCIuIikpLEQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsYSk7aWYoeilrPXN0KGEscSxzKTtlbHNlIGlmKEQmJnR5cGVvZiBxW2FdPT0ib2JqZWN0Iil7Y29uc3QgVT1xdChxW2FdLFthXSk7az1zdChhLFUscyl9ZWxzZSBrPXE7Tz12YShPLGt8fHt9KSwkdChhLHF8fHt9LHthdXRvUGFuOnAsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHNlbmRCdXMyOlQsZ2V0QnBtOncsYXVkaW9Db250ZXh0OmV9KX1mdW5jdGlvbiBIKHEpe2NvbnN0IGs9cXx8WWUodCk7Tz12YShrPT09IkIiP2lzKCk6c3MoKSx7fSk7Y29uc3QgQT1hdChhLE8scyk7cmV0dXJue25lc3RlZDppdChPKSxmbGF0OkF9fWZ1bmN0aW9uIFYoKXtyZXR1cm4gYXQoYSxPLHMpfWZ1bmN0aW9uIFEoKXt0cnl7eCgpfWNhdGNoe319Y29uc3QgJD17b3V0cHV0Om0sc2VuZEJ1czI6VCxzZW5kUmV2ZXJiOlAsc2VuZERlbGF5Ok0sdHJpZ2dlcjpmLHN0b3A6eSx1cGRhdGVQYXJhbXM6XyxyZWdlbmVyYXRlUGFyYW1zOkgsZ2V0RmxhdFBhcmFtczpWLGRpc3Bvc2U6UX07cmV0dXJuICQuc2lkZT0oKT0+WWUodCksJC5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwPTAsJH1mdW5jdGlvbiBjcygpe2NvbnN0IGU9e2F0dGFjazppKC4wMDEsLjAxKSxkZWNheTppKC4wNiwuNyksc3VzdGFpbjowLHJlbGVhc2U6aSguMDUsLjcpfSxuPXtjZW50ZXJIejppKDEyMCw4MDApLGJhc2VGcmVxdWVuY3k6aSgxMjAsODAwKSxvY3RhdmVTaGlmdDowLGZyZXF1ZW5jeVJhbmdlOlsxMjAsODAwXSxxOmkoNiwzMCkscGl0Y2hEcm9wUmF0aW86aSguNzUsMS4yKSxwaXRjaEVudlNlY29uZHM6aSguMDIsLjMpLHR5cGU6TigpPC4yPyJwZWFraW5nIjoiYmFuZHBhc3MiLHBlYWtpbmdHYWluRGI6aSgtMyw5KSxib2R5TG93cGFzc011bHRpcGxpZXI6aSgyLDgpLGJvZHlCeXBhc3M6TigpPC4xfSx0PXtub2lzZU1zOkllKDEsMTIpLHByZUdhaW46aSguOSwxLjgpfSxhPXtodW1hbml6ZTppKC4zNSwuODUpLHRlbXBvQnBtOjEyMCxzZWNvbmRzUGVyU3RlcDouMTI1LHZlbG9jaXR5R2FpblNjYWxlOmkoMS4yLDEuNSksYWNjZW50UUJvb3N0OmkoMS4wNSwxLjIpLGFjY2VudExldmVsRGI6aSguOCwxLjgpLG91dHB1dEdhaW46aSguNzUsMS41KX07cmV0dXJue2VudmVsb3BlOmUscmVzb25hdG9yOm4sZXhjaXRlcjp0LHZvaWNlU3BlY2lmaWM6YX19ZnVuY3Rpb24gb3MoKXtjb25zdCBlPXthdHRhY2s6aSguMDAxLC4wMTIpLGRlY2F5OmkoLjEsLjkpLHN1c3RhaW46MCxyZWxlYXNlOmkoLjA2LC45KX0sbj17Y2VudGVySHo6aSgxNTAsMWUzKSxiYXNlRnJlcXVlbmN5OmkoMTUwLDFlMyksb2N0YXZlU2hpZnQ6MCxmcmVxdWVuY3lSYW5nZTpbMTIwLDJlM10scTppKDEwLDMwKSxwaXRjaERyb3BSYXRpbzppKC43LDEuMSkscGl0Y2hFbnZTZWNvbmRzOmkoLjA0LC40KSx0eXBlOk4oKTwuMz8icGVha2luZyI6ImJhbmRwYXNzIixwZWFraW5nR2FpbkRiOmkoLTEsMTIpLGJvZHlMb3dwYXNzTXVsdGlwbGllcjppKDIsNiksYm9keUJ5cGFzczpOKCk8LjA1fSx0PXtub2lzZU1zOkllKDEsMTIpLHByZUdhaW46aSguOSwxLjYpfSxhPXtodW1hbml6ZTppKC4zNSwuODUpLHRlbXBvQnBtOjEyMCxzZWNvbmRzUGVyU3RlcDouMTI1LHZlbG9jaXR5R2FpblNjYWxlOmkoMS4xLDEuNCksYWNjZW50UUJvb3N0OmkoMS4xLDEuMyksYWNjZW50TGV2ZWxEYjppKC44LDEuNiksb3V0cHV0R2FpbjppKC43LDEuNCl9LHM9e2lucHV0Qm9vc3Q6MSxwcmVEZWxheVNlY1JhbmdlOlsuMDEyLC4wM10sd2V0VHJpbTouNyxnZW5lcmF0aXZlOntudW1CYW5kczp7bWluOjIsbWF4OjZ9LGJhc2VIejp7bWluOjIwMCxtYXg6MTIwMH0scmF0aW9zOlsxLDUvNCw0LzMsMy8yLDcvNCwyXSxvY3RhdmVzOlstMSwwLDFdLHE6e21pbjoyLG1heDoxMn0sZ2Fpbjp7bWluOi4yNSxtYXg6Ljd9LGNvbWJGZWVkYmFjazp7bWluOi4zLG1heDouNTV9LGNvbWJEZWxheU11bHQ6e21pbjoyLG1heDo2fSxkYW1wTXVsdGlwbGllcjoyfX07cmV0dXJue2VudmVsb3BlOmUscmVzb25hdG9yOm4sZXhjaXRlcjp0LHZvaWNlU3BlY2lmaWM6YSxyZXNvbkZ4OnN9fWZ1bmN0aW9uIFNhKGUsbil7Y29uc3QgdD1pdChlKTtpZighbilyZXR1cm4gdDtmb3IoY29uc3QgYSBvZlsiZW52ZWxvcGUiLCJyZXNvbmF0b3IiLCJleGNpdGVyIiwidm9pY2VTcGVjaWZpYyJdKW5bYV0mJih0W2FdPXsuLi50W2FdLC4uLm5bYV19KTt0LmVudmVsb3BlLmF0dGFjaz1sKHQuZW52ZWxvcGUuYXR0YWNrLC4wMDEsLjAyKSx0LmVudmVsb3BlLmRlY2F5PWwodC5lbnZlbG9wZS5kZWNheSwuMDMsMS41KSx0LmVudmVsb3BlLnN1c3RhaW49MCx0LmVudmVsb3BlLnJlbGVhc2U9bCh0LmVudmVsb3BlLnJlbGVhc2UsLjAzLDEuNSksdC5yZXNvbmF0b3IuY2VudGVySHo9bCh0LnJlc29uYXRvci5jZW50ZXJIeiw0MCwxNmUzKSx0LnJlc29uYXRvci5iYXNlRnJlcXVlbmN5PT1udWxsJiYodC5yZXNvbmF0b3IuYmFzZUZyZXF1ZW5jeT00NDApLHQucmVzb25hdG9yLmJhc2VGcmVxdWVuY3k9bCh0LnJlc29uYXRvci5iYXNlRnJlcXVlbmN5LDIwLDE2ZTMpLHQucmVzb25hdG9yLm9jdGF2ZVNoaWZ0PWwodC5yZXNvbmF0b3Iub2N0YXZlU2hpZnQ/PzAsLTQsNik7e2NvbnN0IGE9dC5yZXNvbmF0b3IuZnJlcXVlbmN5UmFuZ2U7bGV0IHM9MjAsbT0xNmUzO0FycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoPj0yJiYocz1sKE51bWJlcihhWzBdKXx8MjAsMjAsMmU0KSxtPWwoTnVtYmVyKGFbMV0pfHwxNmUzLDIwLDJlNCksbTxzJiYoW3MsbV09W20sc10pKSx0LnJlc29uYXRvci5mcmVxdWVuY3lSYW5nZT1bcyxtXX10LnJlc29uYXRvci5xPWwodC5yZXNvbmF0b3IucSwuNSwxNSksdC5yZXNvbmF0b3IucGl0Y2hEcm9wUmF0aW89bCh0LnJlc29uYXRvci5waXRjaERyb3BSYXRpbz8/LjkyLC4zLDEuNyksdC5yZXNvbmF0b3IucGl0Y2hFbnZTZWNvbmRzPWwodC5yZXNvbmF0b3IucGl0Y2hFbnZTZWNvbmRzPz8uMDYsLjAwNSwyKTt7Y29uc3QgYT1TdHJpbmcodC5yZXNvbmF0b3IudHlwZXx8ImJhbmRwYXNzIik7dC5yZXNvbmF0b3IudHlwZT1hPT09InBlYWtpbmciPyJwZWFraW5nIjoiYmFuZHBhc3MifXJldHVybiB0LnJlc29uYXRvci5wZWFraW5nR2FpbkRiPWwodC5yZXNvbmF0b3IucGVha2luZ0dhaW5EYj8/MCwtMjQsMjQpLHQucmVzb25hdG9yLmJvZHlMb3dwYXNzTXVsdGlwbGllcj1sKHQucmVzb25hdG9yLmJvZHlMb3dwYXNzTXVsdGlwbGllcj8/NCwxLDE2KSx0LnJlc29uYXRvci5ib2R5QnlwYXNzPSEhdC5yZXNvbmF0b3IuYm9keUJ5cGFzcyx0LmV4Y2l0ZXIubm9pc2VNcz1sKHQuZXhjaXRlci5ub2lzZU1zPz8zLDEsNTApLHQuZXhjaXRlci5wcmVHYWluPWwodC5leGNpdGVyLnByZUdhaW4/PzEuMiwuMDUsMyksdC52b2ljZVNwZWNpZmljLmh1bWFuaXplPWwodC52b2ljZVNwZWNpZmljLmh1bWFuaXplPz8uNiwwLDEpLHQudm9pY2VTcGVjaWZpYy50ZW1wb0JwbT1ndCh0LnZvaWNlU3BlY2lmaWMudGVtcG9CcG0/PyRlLmRlZmF1bHRCcG0pLHQudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcD1sKHQudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcD8/LjEyNSwuMDIsMSksdC52b2ljZVNwZWNpZmljLnZlbG9jaXR5R2FpblNjYWxlPWwodC52b2ljZVNwZWNpZmljLnZlbG9jaXR5R2FpblNjYWxlPz8xLC4yLDIpLHQudm9pY2VTcGVjaWZpYy5hY2NlbnRRQm9vc3Q9bCh0LnZvaWNlU3BlY2lmaWMuYWNjZW50UUJvb3N0Pz8xLjEsMSwxLjYpLHQudm9pY2VTcGVjaWZpYy5hY2NlbnRMZXZlbERiPWwodC52b2ljZVNwZWNpZmljLmFjY2VudExldmVsRGI/PzEuMiwwLDYpLHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPWwodC52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4wOCwwLDEpLHR9ZnVuY3Rpb24gd2koZSxuLHQ9e30pe2NvbnN0IGE9ImZpbHRlclBpbmciLHM9e2F0dGFjazoiZW52ZWxvcGUuYXR0YWNrIixkZWNheToiZW52ZWxvcGUuZGVjYXkiLHN1c3RhaW46ImVudmVsb3BlLnN1c3RhaW4iLHJlbGVhc2U6ImVudmVsb3BlLnJlbGVhc2UiLGNlbnRlckh6OiJyZXNvbmF0b3IuY2VudGVySHoiLGJhc2VGcmVxdWVuY3k6InJlc29uYXRvci5iYXNlRnJlcXVlbmN5IixvY3RhdmVTaGlmdDoicmVzb25hdG9yLm9jdGF2ZVNoaWZ0IixmcmVxdWVuY3lSYW5nZToicmVzb25hdG9yLmZyZXF1ZW5jeVJhbmdlIixxOiJyZXNvbmF0b3IucSIscGl0Y2hEcm9wUmF0aW86InJlc29uYXRvci5waXRjaERyb3BSYXRpbyIscGl0Y2hHbGlkZVJhdGlvOiJyZXNvbmF0b3IucGl0Y2hEcm9wUmF0aW8iLHBpdGNoRW52U2Vjb25kczoicmVzb25hdG9yLnBpdGNoRW52U2Vjb25kcyIsdHlwZToicmVzb25hdG9yLnR5cGUiLHBlYWtpbmdHYWluRGI6InJlc29uYXRvci5wZWFraW5nR2FpbkRiIixib2R5TG93cGFzc011bHRpcGxpZXI6InJlc29uYXRvci5ib2R5TG93cGFzc011bHRpcGxpZXIiLGJvZHlCeXBhc3M6InJlc29uYXRvci5ib2R5QnlwYXNzIixub2lzZU1zOiJleGNpdGVyLm5vaXNlTXMiLHByZUdhaW46ImV4Y2l0ZXIucHJlR2FpbiIsImVudmVsb3BlLmF0dGFjayI6ImVudmVsb3BlLmF0dGFjayIsImVudmVsb3BlLmRlY2F5IjoiZW52ZWxvcGUuZGVjYXkiLCJlbnZlbG9wZS5zdXN0YWluIjoiZW52ZWxvcGUuc3VzdGFpbiIsImVudmVsb3BlLnJlbGVhc2UiOiJlbnZlbG9wZS5yZWxlYXNlIiwicmVzb25hdG9yLmNlbnRlckh6IjoicmVzb25hdG9yLmNlbnRlckh6IiwicmVzb25hdG9yLmJhc2VGcmVxdWVuY3kiOiJyZXNvbmF0b3IuYmFzZUZyZXF1ZW5jeSIsInJlc29uYXRvci5vY3RhdmVTaGlmdCI6InJlc29uYXRvci5vY3RhdmVTaGlmdCIsInJlc29uYXRvci5mcmVxdWVuY3lSYW5nZSI6InJlc29uYXRvci5mcmVxdWVuY3lSYW5nZSIsInJlc29uYXRvci5xIjoicmVzb25hdG9yLnEiLCJyZXNvbmF0b3IucGl0Y2hEcm9wUmF0aW8iOiJyZXNvbmF0b3IucGl0Y2hEcm9wUmF0aW8iLCJyZXNvbmF0b3IucGl0Y2hHbGlkZVJhdGlvIjoicmVzb25hdG9yLnBpdGNoRHJvcFJhdGlvIiwicmVzb25hdG9yLnBpdGNoRW52U2Vjb25kcyI6InJlc29uYXRvci5waXRjaEVudlNlY29uZHMiLCJyZXNvbmF0b3IudHlwZSI6InJlc29uYXRvci50eXBlIiwicmVzb25hdG9yLnBlYWtpbmdHYWluRGIiOiJyZXNvbmF0b3IucGVha2luZ0dhaW5EYiIsInJlc29uYXRvci5ib2R5TG93cGFzc011bHRpcGxpZXIiOiJyZXNvbmF0b3IuYm9keUxvd3Bhc3NNdWx0aXBsaWVyIiwicmVzb25hdG9yLmJvZHlCeXBhc3MiOiJyZXNvbmF0b3IuYm9keUJ5cGFzcyIsImV4Y2l0ZXIubm9pc2VNcyI6ImV4Y2l0ZXIubm9pc2VNcyIsImV4Y2l0ZXIucHJlR2FpbiI6ImV4Y2l0ZXIucHJlR2FpbiIsInZvaWNlU3BlY2lmaWMuaHVtYW5pemUiOiJ2b2ljZVNwZWNpZmljLmh1bWFuaXplIiwidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSI6InZvaWNlU3BlY2lmaWMudGVtcG9CcG0iLCJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjoidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCIsInZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6InZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiJ9LHtvdXRwdXQ6bSxhdXRvUGFuOnAsZHJ5QnVzOlMsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHNlbmRCdXMyOlQsd2lyZVBhbjpHLHRhcFJldmVyYjpFLHRhcERlbGF5OkwsZGlzcG9zZUlPOnh9PVF0KGUse30pLE89WWUodCk9PT0iQiI/b3MoKTpjcygpO2xldCB3PVNhKE8sbik7Y29uc3Qgbz0oKT0+QXQody52b2ljZVNwZWNpZmljLnRlbXBvQnBtKSxDPSgpPT5GdCh3LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXB8fC4xMjUpLGM9OCxkPWFuKGUse21heFBvbHlwaG9ueTpjfSksZz1WYShlKTt0cnl7Zy51cGRhdGVQYXJhbXMoe2NvbXBUaHJlc2hvbGQ6LTgwLGNvbXBSYXRpbzo0LjUsY29tcEF0dGFjazozLGNvbXBSZWxlYXNlOjEyMCx1cHdhcmRUaHJlc2hvbGQ6LTEwLHVwd2FyZFJhdGlvOjYuNSx1cHdhcmRNaXhEYjotMTgsYWdjVGFyZ2V0RGI6LTI2LGFnY1Jlc3BvbnNlTXM6ODAwLGFnY01heEdhaW5EYjo5fSl9Y2F0Y2h7fXRyeXtHKCl9Y2F0Y2h7fXRyeXtnLm91dHB1dC5jb25uZWN0KFMpfWNhdGNoe31jb25zdCB1PShrLEEpPT5kLnNjaGVkdWxlQ2xlYW51cChrLEEpO2Z1bmN0aW9uIGIoayxBKXtjb25zdCB6PSh0eXBlb2YgQT09Im51bWJlciI/QTplLmN1cnJlbnRUaW1lKSs1ZS00O3RyeXtrLmVudi5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyh6KTtjb25zdCBVPU1hdGgubWF4KGsuZW52LmdhaW4udmFsdWUsMWUtNCk7ay5lbnYuZ2Fpbi5zZXRWYWx1ZUF0VGltZShVLHopLGsuZW52LmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LHorLjAzKX1jYXRjaHt9Y29uc3QgRD16Ky4wNTtmb3IoY29uc3QgVSBvZiBrLnNvdXJjZXMpdHJ5e1Uuc3RvcChEKX1jYXRjaHt9dShrLEQpfWZ1bmN0aW9uIGgoKXtkLmFjdGl2ZVZvaWNlc1JlZigpLmxlbmd0aD49YyYmZC5zdG9wT2xkZXN0KGUuY3VycmVudFRpbWUpfWNvbnN0IGY9az0+e3RyeXtjb25zdCBBPXQmJnQuZXZlbnRzO0EmJkEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOmt9KSl9Y2F0Y2h7fX07ZnVuY3Rpb24geShrLHthY2NlbnQ6QT0hMSxzdXN0YWluU3RlcHM6ej0wLHZlbG9jaXR5OkQ9MX09e30pe3ZhciBWZTtjb25zdCBVPXR5cGVvZiBrPT0ibnVtYmVyIj9rOmUuY3VycmVudFRpbWUrLjAwMSxSPXcsST1sKFIudm9pY2VTcGVjaWZpYy5odW1hbml6ZSwwLDEpLGo9QT09PSJ3ZWFrIixzZT1BPT09ITA7bGV0IGhlPVFlKFIuZW52ZWxvcGUuYXR0YWNrLC4wNixJKSxlZT1RZShSLmVudmVsb3BlLmRlY2F5LC4xLEkpO2NvbnN0IFg9MDtsZXQgY2U9UWUoUi5lbnZlbG9wZS5yZWxlYXNlLC4wOCxJKTtjb25zdCBLPW8oKTtlZT1UdChlZSxLKSxjZT1UdChjZSxLKSxoZT1FdChoZSx0KSxlZT1JdChlZSx0KSxjZT1qdChjZSx0KTtjb25zdCBhZT1sKFIucmVzb25hdG9yLmJhc2VGcmVxdWVuY3k/P1IucmVzb25hdG9yLmNlbnRlckh6Pz80NDAsMjAsMmU0KSxmZT1sKFIucmVzb25hdG9yLm9jdGF2ZVNoaWZ0Pz8wLC00LDYpLG1lPWFlKk1hdGgucG93KDIsZmUpLHBlPUFycmF5LmlzQXJyYXkoUi5yZXNvbmF0b3IuZnJlcXVlbmN5UmFuZ2UpJiZSLnJlc29uYXRvci5mcmVxdWVuY3lSYW5nZS5sZW5ndGg+PTI/W051bWJlcihSLnJlc29uYXRvci5mcmVxdWVuY3lSYW5nZVswXSksTnVtYmVyKFIucmVzb25hdG9yLmZyZXF1ZW5jeVJhbmdlWzFdKV06WzIwLDJlNF07bGV0IG9lPWwocGVbMF0/PzIwLDIwLDJlNCksQj1sKHBlWzFdPz8yZTQsMjAsMmU0KTtpZihCPG9lKXtjb25zdCBqZT1vZTtvZT1CLEI9amV9bGV0IHY9bChtZSxvZSxCKTtOdW1iZXIuaXNGaW5pdGUoUi5yZXNvbmF0b3IuY2VudGVySHopJiYodj1sKFIucmVzb25hdG9yLmNlbnRlckh6LDQwLDJlNCkpO2xldCBGPWwoUi5yZXNvbmF0b3IucSwuNSwyMCk7c2UmJihGKj1sKFIudm9pY2VTcGVjaWZpYy5hY2NlbnRRQm9vc3QsMSwxLjYpKSxqJiYoRio9LjkyKSxGPWwoRiwuNSwyMCk7Y29uc3QgVz1sKFIucmVzb25hdG9yLnBpdGNoRHJvcFJhdGlvLC4zLDEuNyksWT1sKFIucmVzb25hdG9yLnBpdGNoRW52U2Vjb25kcywuMDA1LDIpLEo9bCh2KlcsMjAsMmU0KSxpZT1sKChSLmV4Y2l0ZXIubm9pc2VNc3x8MykvMWUzLDVlLTQsLjA1KSx1ZT1sKFIuZXhjaXRlci5wcmVHYWlufHwxLjIsLjA1LDEuOCk7bGV0IG5lPWwoRCwwLDEpKmwoUi52b2ljZVNwZWNpZmljLnZlbG9jaXR5R2FpblNjYWxlPz8xLC4yLDIpO3NlJiYobmUqPWJ0KGwoUi52b2ljZVNwZWNpZmljLmFjY2VudExldmVsRGI/PzEuMiwwLDYpKSksaiYmKG5lKj0uOCk7Y29uc3QgdGU9MS9NYXRoLnBvdyhNYXRoLm1heCguNSxGKSwuODUpO25lKj10ZTtjb25zdCBaPXVlKk1hdGguc3FydChNYXRoLm1heCgxLEYvNikpO1o+MSYmKG5lLz1aKSxuZT1NYXRoLm1pbihuZSwuNDIpLG5lKj1sKFIudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPz8uMTIsMCwxKSxmKHt0aW1lOlUsYWNjZW50OkEsc3VzdGFpblN0ZXBzOnosdmVsb2NpdHk6RCxjZW50ZXJIejp2LHE6Rn0pLGgoKTtjb25zdCByZT1lLmNyZWF0ZUdhaW4oKTtyZS5nYWluLnNldFZhbHVlQXRUaW1lKDEsVSk7Y29uc3QgZGU9W10sYmU9W3JlXSxTZT1NYXRoLm1heCgxLE1hdGguZmxvb3IoZS5zYW1wbGVSYXRlKmllKSksemU9ZS5jcmVhdGVCdWZmZXIoMSxTZSxlLnNhbXBsZVJhdGUpLEJlPXplLmdldENoYW5uZWxEYXRhKDApO2ZvcihsZXQgamU9MDtqZTxTZTtqZSsrKXtjb25zdCB1dD1qZS9TZSxwdD1NYXRoLnNpbihNYXRoLlBJKnV0KTtCZVtqZV09KE4oKSoyLTEpKnB0fWNvbnN0IFJlPWUuY3JlYXRlQnVmZmVyU291cmNlKCk7UmUuYnVmZmVyPXplLFJlLmxvb3A9ITE7Y29uc3QgQWU9ZS5jcmVhdGVHYWluKCk7QWUuZ2Fpbi5zZXRWYWx1ZUF0VGltZSh1ZSxVKTtjb25zdCB2ZT1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpLEdlPVIucmVzb25hdG9yLnR5cGU9PT0icGVha2luZyI/InBlYWtpbmciOiJiYW5kcGFzcyI7aWYodmUudHlwZT1HZSx2ZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUodixVKSx2ZS5RLnNldFZhbHVlQXRUaW1lKEYsVSksR2U9PT0icGVha2luZyIpdHJ5e3ZlLmdhaW4uc2V0VmFsdWVBdFRpbWUobChSLnJlc29uYXRvci5wZWFraW5nR2FpbkRiPz8wLC0yNCwyNCksVSl9Y2F0Y2h7fWNvbnN0IE5lPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7TmUudHlwZT0ibG93cGFzcyI7Y29uc3QgTWU9bChSLnJlc29uYXRvci5ib2R5TG93cGFzc011bHRpcGxpZXI/PzQsMSwxNik7TmUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKE1hdGgubWluKDE2ZTMsdipNZSksVSksTmUuUS5zZXRWYWx1ZUF0VGltZSguNzA3LFUpO2NvbnN0IGtlPWUuY3JlYXRlR2FpbigpO2tlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxVKSxSZS5jb25uZWN0KEFlKSxBZS5jb25uZWN0KHZlKSxSLnJlc29uYXRvci5ib2R5QnlwYXNzP3ZlLmNvbm5lY3Qoa2UpOih2ZS5jb25uZWN0KE5lKSxOZS5jb25uZWN0KGtlKSksa2UuY29ubmVjdChyZSk7dHJ5e3ZlLmZyZXF1ZW5jeS5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoVSksdmUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKHYsVSksdmUuZnJlcXVlbmN5LmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoTWF0aC5tYXgoMSxKKSxVK1kpfWNhdGNoe31oZT1sKGhlLC4wMDEsLjAzKTtjb25zdCBfZT1VK2hlLGxlPV9lK2VlLFRlPU1hdGgubWF4KDAseikqQygpLGdlPWxlK1RlLHdlPWdlK2NlLE9lPVg7a2UuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSgxLF9lKSxrZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKE9lLGxlKSxrZS5nYWluLnNldFZhbHVlQXRUaW1lKE9lLGdlKSxrZS5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMWUtNCx3ZSk7Y29uc3QgSGU9ZS5jcmVhdGVHYWluKCk7SGUuZ2Fpbi5zZXRWYWx1ZUF0VGltZShuZSxVKSxyZS5jb25uZWN0KEhlKTt0cnl7KFZlPXAub25UcmlnZ2VyKT09bnVsbHx8VmUuY2FsbChwKX1jYXRjaHt9SGUuY29ubmVjdChwLmlucHV0KSxiZS5wdXNoKEFlLHZlLE5lLGtlLEhlKSxkZS5wdXNoKFJlKTt0cnl7SGUuY29ubmVjdChUKX1jYXRjaHt9dHJ5e0hlLmNvbm5lY3QoTSl9Y2F0Y2h7fVJlLnN0YXJ0KFUpO2NvbnN0IFVlPXdlKy4wNjtSZS5zdG9wKFUraWUrLjAyKTtjb25zdCBXZT17ZW52OmtlLHNvdXJjZXM6ZGUsbm9kZXM6YmV9O2QuYWRkKFdlKSx1KFdlLFVlKX1mdW5jdGlvbiBfKGspe2NvbnN0IEE9dHlwZW9mIGs9PSJudW1iZXIiP2s6ZS5jdXJyZW50VGltZTtkLmFjdGl2ZVZvaWNlc1JlZigpLnNsaWNlKCkuZm9yRWFjaCh6PT5iKHosQSkpfWZ1bmN0aW9uIEgoayl7bGV0IEE9e307aWYoIShrJiZ0eXBlb2Ygaz09Im9iamVjdCIpKXJldHVybjtjb25zdCBEPU9iamVjdC5rZXlzKGspLnNvbWUoUj0+Ui5pbmNsdWRlcygiLiIpKSxVPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrLGEpO2lmKEQpQT1zdChhLGsscyk7ZWxzZSBpZihVJiZ0eXBlb2Yga1thXT09Im9iamVjdCIpe2NvbnN0IFI9cXQoa1thXSxbYV0pO0E9c3QoYSxSLHMpfWVsc2UgQT1rO3c9U2EodyxBfHx7fSksJHQoYSxrfHx7fSx7YXV0b1BhbjpwLHNlbmRSZXZlcmI6UCxzZW5kRGVsYXk6TSxzZW5kQnVzMjpULGdldEJwbTpvLGF1ZGlvQ29udGV4dDplLGRyeUJ1czpTLGNvbXBlbnNhdGVEcnlCeURlbGF5V2V0OiEwfSl9ZnVuY3Rpb24gVihrKXtjb25zdCBBPWt8fFllKHQpO3c9U2EoQT09PSJCIj9vcygpOmNzKCkse30pO2NvbnN0IHo9YXQoYSx3LHMpO3JldHVybntuZXN0ZWQ6aXQodyksZmxhdDp6fX1mdW5jdGlvbiBRKCl7cmV0dXJuIGF0KGEsdyxzKX1mdW5jdGlvbiAkKCl7dmFyIGs7dHJ5eyhrPWcuZGlzcG9zZSk9PW51bGx8fGsuY2FsbChnKX1jYXRjaHt9dHJ5e3goKX1jYXRjaHt9fWNvbnN0IHE9e291dHB1dDptLHNlbmRCdXMyOlQsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHRyaWdnZXI6eSxzdG9wOl8sdXBkYXRlUGFyYW1zOkgscmVnZW5lcmF0ZVBhcmFtczpWLGdldEZsYXRQYXJhbXM6USxkaXNwb3NlOiQsYXV0b01peDpnfTtyZXR1cm4gcS5zaWRlPSgpPT5ZZSh0KSxxLmNoYW5nZVZvaWNlUGFyYW1zT25FdmVyeVN0ZXA9MCxxfWZ1bmN0aW9uIHJzKCl7Y29uc3QgZT17YXR0YWNrOmkoLjAwMiwuMDIpLGRlY2F5OmkoLjE1LC42KSxzdXN0YWluOmkoLjI1LC43KSxyZWxlYXNlOmkoLjEyLC41NSl9LG49e2xvd3Bhc3NIejppKDE0MCwzODApLHE6Ljd9LHQ9e3dhdmU6TigpPC4zMz8ic2luZSI6TigpPC41PyJ0cmlhbmdsZSI6InNhd3Rvb3RoIixyYXRlU3RlcHM6MixzdWJkaXZpc2lvbjoic3RyYWlnaHQiLGRlcHRoOjB9LGE9e2h1bWFuaXplOmkoLjI1LC42NSksdGVtcG9CcG06QXQoMTIwKSxzZWNvbmRzUGVyU3RlcDpGdCguMTI1KSxvdXRwdXRHYWluOmkoLjA4LC4yKSxwbGF5TW9kZToibm9ybWFsIn07cmV0dXJue2VudmVsb3BlOmUsZmlsdGVyOm4sbGZvOnQsdm9pY2VTcGVjaWZpYzphfX1mdW5jdGlvbiBscygpe2NvbnN0IGU9e2F0dGFjazppKC4wMDYsLjA0KSxkZWNheTppKC4yLC44KSxzdXN0YWluOmkoLjMsLjc1KSxyZWxlYXNlOmkoLjE4LC43KX0sbj17bG93cGFzc0h6OmkoMTIwLDMyMCkscTouN30sdD17d2F2ZTpOKCk8LjMzPyJzaW5lIjpOKCk8LjU/InRyaWFuZ2xlIjoic2F3dG9vdGgiLHJhdGVTdGVwczoyLHN1YmRpdmlzaW9uOiJzdHJhaWdodCIsZGVwdGg6MH0sYT17aHVtYW5pemU6aSguMjUsLjY1KSx0ZW1wb0JwbTpBdCgxMjApLHNlY29uZHNQZXJTdGVwOkZ0KC4xMjUpLG91dHB1dEdhaW46aSguMDgsLjE4KSxwbGF5TW9kZToibm9ybWFsIn0scz17aW5wdXRCb29zdDoxLHByZURlbGF5U2VjUmFuZ2U6Wy4wMTIsLjAzXSx3ZXRUcmltOi43LGdlbmVyYXRpdmU6e251bUJhbmRzOnttaW46MixtYXg6NX0sYmFzZUh6OnttaW46ODAsbWF4OjIyMH0scmF0aW9zOlsxLDUvNCw0LzMsMy8yLDJdLG9jdGF2ZXM6Wy0xLDAsMV0scTp7bWluOjIsbWF4OjEwfSxnYWluOnttaW46LjMsbWF4Oi43fSxjb21iRmVlZGJhY2s6e21pbjouMzUsbWF4Oi42fSxjb21iRGVsYXlNdWx0OnttaW46MixtYXg6Nn0sZGFtcE11bHRpcGxpZXI6Mn19O3JldHVybntlbnZlbG9wZTplLGZpbHRlcjpuLGxmbzp0LHZvaWNlU3BlY2lmaWM6YSxyZXNvbkZ4OnN9fWZ1bmN0aW9uIE1hKGUsbil7Y29uc3QgdD1pdChlKTtpZihuJiZ0eXBlb2Ygbj09Im9iamVjdCIpZm9yKGNvbnN0IGEgb2ZbImVudmVsb3BlIiwiZmlsdGVyIiwibGZvIiwidm9pY2VTcGVjaWZpYyJdKW5bYV0mJih0W2FdPXsuLi50W2FdLC4uLm5bYV19KTtyZXR1cm4gdC5lbnZlbG9wZS5hdHRhY2s9bCh0LmVudmVsb3BlLmF0dGFjaywuMDAxLC4wNSksdC5lbnZlbG9wZS5kZWNheT1sKHQuZW52ZWxvcGUuZGVjYXksLjA1LDEuNSksdC5lbnZlbG9wZS5zdXN0YWluPWwodC5lbnZlbG9wZS5zdXN0YWluLDAsLjkpLHQuZW52ZWxvcGUucmVsZWFzZT1sKHQuZW52ZWxvcGUucmVsZWFzZSwuMDUsMS41KSx0LmZpbHRlci5sb3dwYXNzSHo9bCh0LmZpbHRlci5sb3dwYXNzSHosNjAsMTIwMCksdC5maWx0ZXIucT1sKHQuZmlsdGVyLnE/Py43LC4xLDIpLHQubGZvfHwodC5sZm89e30pLHQubGZvLndhdmU9dC5sZm8ud2F2ZT09PSJzaW5lInx8dC5sZm8ud2F2ZT09PSJ0cmlhbmdsZSJ8fHQubGZvLndhdmU9PT0ic2F3dG9vdGgiP3QubGZvLndhdmU6InNpbmUiLHQubGZvLnJhdGVTdGVwcz1sKE51bWJlcih0Lmxmby5yYXRlU3RlcHMpfHwyLC4yNSwzMiksdC5sZm8uc3ViZGl2aXNpb249dC5sZm8uc3ViZGl2aXNpb249PT0ic3RyYWlnaHQifHx0Lmxmby5zdWJkaXZpc2lvbj09PSJkb3R0ZWQifHx0Lmxmby5zdWJkaXZpc2lvbj09PSJ0cmlwbGV0Ij90Lmxmby5zdWJkaXZpc2lvbjoic3RyYWlnaHQiLHQubGZvLmRlcHRoPWwoTnVtYmVyKHQubGZvLmRlcHRoKXx8MCwwLDEpLHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT1sKHQudm9pY2VTcGVjaWZpYy5odW1hbml6ZT8/LjUsMCwxKSx0LnZvaWNlU3BlY2lmaWMudGVtcG9CcG09Z3QodC52b2ljZVNwZWNpZmljLnRlbXBvQnBtPz8kZS5kZWZhdWx0QnBtKSx0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA9bCh0LnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXA/Py4xMjUsLjAyLDEpLHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPWwodC52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4/Py4xMiwwLDEpLHQudm9pY2VTcGVjaWZpYy5wbGF5TW9kZT10LnZvaWNlU3BlY2lmaWMucGxheU1vZGU9PT0iaG9sZG5vdGUiPyJob2xkbm90ZSI6Im5vcm1hbCIsdH1mdW5jdGlvbiBBaShlKXtyZXR1cm4gZT09PSJkb3R0ZWQiPzEuNTplPT09InRyaXBsZXQiPzIvMzoxfWNvbnN0IFBpPU1hdGgucG93KDIsLTUvMTIpO2Z1bmN0aW9uIHppKGUsbix0PXt9KXtjb25zdCBhPSJiYXNzIixzPXthdHRhY2s6ImVudmVsb3BlLmF0dGFjayIsZGVjYXk6ImVudmVsb3BlLmRlY2F5IixzdXN0YWluOiJlbnZlbG9wZS5zdXN0YWluIixyZWxlYXNlOiJlbnZlbG9wZS5yZWxlYXNlIixmaWx0ZXJDdXRvZmY6ImZpbHRlci5sb3dwYXNzSHoiLGZpbHRlclE6ImZpbHRlci5xIixsZm9XYXZlOiJsZm8ud2F2ZSIsbGZvUmF0ZVN0ZXBzOiJsZm8ucmF0ZVN0ZXBzIixsZm9TdWJkaXZpc2lvbjoibGZvLnN1YmRpdmlzaW9uIixsZm9EZXB0aDoibGZvLmRlcHRoIixwbGF5TW9kZToidm9pY2VTcGVjaWZpYy5wbGF5TW9kZSIsb3V0cHV0R2Fpbjoidm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIix0ZW1wb0JwbToidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSIsc2Vjb25kc1BlclN0ZXA6InZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXAifSx7b3V0cHV0Om0sYXV0b1BhbjpwLGRyeUJ1czpTLHNlbmRSZXZlcmI6UCxzZW5kRGVsYXk6TSxzZW5kQnVzMjpULHdpcmVQYW46Ryx0YXBSZXZlcmI6RSx0YXBEZWxheTpMLGRpc3Bvc2VJTzp4fT1RdChlLHt9KTtsZXQgTz1NYShZZSh0KT09PSJCIj9scygpOnJzKCksbik7Y29uc3Qgdz0oKT0+QXQoTy52b2ljZVNwZWNpZmljLnRlbXBvQnBtKSxvPSgpPT5GdChPLnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXB8fC4xMjUpO3RyeXtHKCl9Y2F0Y2h7fXRyeXtFKG0pfWNhdGNoe310cnl7TChtKX1jYXRjaHt9Y29uc3QgQz1hbihlLHttYXhQb2x5cGhvbnk6OH0pO2xldCBjPW51bGw7Y29uc3QgZD0oayxBKT0+e0Muc2NoZWR1bGVDbGVhbnVwKGssQSksc2V0VGltZW91dCgoKT0+e2M9PT1rJiYoYz1udWxsKX0sTWF0aC5tYXgoMCxNYXRoLnJvdW5kKChBLWUuY3VycmVudFRpbWUpKjFlMykrMjEwKSl9O2Z1bmN0aW9uIGcoayxBKXtjb25zdCB6PSh0eXBlb2YgQT09Im51bWJlciI/QTplLmN1cnJlbnRUaW1lKSs1ZS00O3RyeXtrLmVudi5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyh6KTtjb25zdCBVPU1hdGgubWF4KGsuZW52LmdhaW4udmFsdWUsMWUtNCk7ay5lbnYuZ2Fpbi5zZXRWYWx1ZUF0VGltZShVLHopLGsuZW52LmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LHorLjA2KX1jYXRjaHt9Y29uc3QgRD16Ky4wODtmb3IoY29uc3QgVSBvZiBrLnNvdXJjZXMpdHJ5e1Uuc3RvcChEKX1jYXRjaHt9ZChrLEQpfWZ1bmN0aW9uIHUoayl7YyYmKGcoYyxrKSxjPW51bGwpfWNvbnN0IGI9az0+e3RyeXtjb25zdCBBPXQmJnQuZXZlbnRzO0EmJkEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOmt9KSl9Y2F0Y2h7fX07ZnVuY3Rpb24gaCgpe2NvbnN0IGs9TWF0aC5tYXgoLjI1LE51bWJlcihPLmxmby5yYXRlU3RlcHMpfHwyKSxBPW8oKSx6PUFpKE8ubGZvLnN1YmRpdmlzaW9uKTtyZXR1cm4gMS9NYXRoLm1heCguMDAxLGsqQSp6KX1mdW5jdGlvbiBmKGsse2FjY2VudDpBPSExLHN1c3RhaW5TdGVwczp6PTAsdmVsb2NpdHk6RD0xLGtpY2tCYXNlSHo6VT1udWxsfT17fSl7dmFyIFo7Y29uc3QgUj10eXBlb2Ygaz09Im51bWJlciI/azplLmN1cnJlbnRUaW1lKy4wMDEsST1PO2xldCBqPU51bWJlcihVKTsoIU51bWJlci5pc0Zpbml0ZShqKXx8ajw9MCkmJihqPTUwKTtjb25zdCBzZT1sKGoqUGksMjAsNDAwKTtJLnZvaWNlU3BlY2lmaWMucGxheU1vZGU9PT0iaG9sZG5vdGUiJiZ1KFIpO2NvbnN0IGhlPUV0KEkuZW52ZWxvcGUuYXR0YWNrLHQpLGVlPUl0KEkuZW52ZWxvcGUuZGVjYXksdCksWD1JLmVudmVsb3BlLnN1c3RhaW4sY2U9anQoSS5lbnZlbG9wZS5yZWxlYXNlLHQpLEs9SS52b2ljZVNwZWNpZmljLnBsYXlNb2RlPT09Im5vcm1hbCI/TWF0aC5tYXgoMCx6KSpvKCk6NjA7bGV0IGFlPWwoRCwwLDEpO0E9PT0hMCYmKGFlKj1idCgxKSksQT09PSJ3ZWFrIiYmKGFlKj0uODUpLGFlKj1sKEkudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPz8uMTIsMCwxKTtjb25zdCBmZT1bXSxtZT1bXSxwZT1lLmNyZWF0ZU9zY2lsbGF0b3IoKTtwZS50eXBlPSJ0cmlhbmdsZSIscGUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKHNlLFIpLG1lLnB1c2gocGUpO2NvbnN0IG9lPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7b2UudHlwZT0ibG93cGFzcyIsb2UuUS5zZXRWYWx1ZUF0VGltZShsKEkuZmlsdGVyLnEsLjEsMiksUiksb2UuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGwoSS5maWx0ZXIubG93cGFzc0h6LDYwLDEyMDApLFIpLGZlLnB1c2gob2UpLHBlLmNvbm5lY3Qob2UpO2NvbnN0IEI9ZS5jcmVhdGVHYWluKCk7Qi5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsUiksZmUucHVzaChCKSxvZS5jb25uZWN0KEIpO2NvbnN0IHY9UitoZSxGPXYrZWUsVz1GK0ssWT1XK2NlO0IuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSgxLHYpLEIuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShYLEYpLEIuZ2Fpbi5zZXRWYWx1ZUF0VGltZShYLFcpLEIuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsWSk7Y29uc3QgSj1lLmNyZWF0ZUdhaW4oKTtKLmdhaW4uc2V0VmFsdWVBdFRpbWUoYWUsUiksZmUucHVzaChKKSxCLmNvbm5lY3QoSik7Y29uc3QgaWU9ZS5jcmVhdGVHYWluKCksdWU9bChJLmxmby5kZXB0aCwwLDEpO2lmKGllLmdhaW4uc2V0VmFsdWVBdFRpbWUoMS11ZSouNSxSKSxmZS5wdXNoKGllKSxKLmNvbm5lY3QoaWUpLHVlPjFlLTQpe2NvbnN0IHJlPWUuY3JlYXRlT3NjaWxsYXRvcigpO3JlLnR5cGU9SS5sZm8ud2F2ZT09PSJ0cmlhbmdsZSJ8fEkubGZvLndhdmU9PT0ic2F3dG9vdGgifHxJLmxmby53YXZlPT09InNpbmUiP0kubGZvLndhdmU6InNpbmUiO3RyeXtyZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoaCgpLFIpfWNhdGNoe31yZS5faXNMZm89ITA7Y29uc3QgZGU9ZS5jcmVhdGVHYWluKCksYmU9TWF0aC5taW4oLjAzLE1hdGgubWF4KC4wMDUsaGUpKTtkZS5nYWluLnNldFZhbHVlQXRUaW1lKDAsUiksZGUuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh1ZSouNSxSK2JlKSxyZS5jb25uZWN0KGRlKTt0cnl7ZGUuY29ubmVjdChpZS5nYWluKX1jYXRjaHt9ZmUucHVzaChkZSksbWUucHVzaChyZSl9dHJ5eyhaPXAub25UcmlnZ2VyKT09bnVsbHx8Wi5jYWxsKHApfWNhdGNoe31pZS5jb25uZWN0KHAuaW5wdXQpO3RyeXtpZS5jb25uZWN0KFQpfWNhdGNoe310cnl7aWUuY29ubmVjdChNKX1jYXRjaHt9Y29uc3QgbmU9WSsuMTtmb3IoY29uc3QgcmUgb2YgbWUpdHJ5e3JlLnN0YXJ0KFIpfWNhdGNoe31mb3IoY29uc3QgcmUgb2YgbWUpdHJ5e3JlLnN0b3AobmUpfWNhdGNoe31jb25zdCB0ZT17ZW52OkIsc291cmNlczptZSxub2RlczpmZX07Qy5hZGQodGUpLE8udm9pY2VTcGVjaWZpYy5wbGF5TW9kZT09PSJob2xkbm90ZSImJihjPXRlKSxkKHRlLG5lKSxiKHt0aW1lOlIsYWNjZW50OkEsc3VzdGFpblN0ZXBzOnosdmVsb2NpdHk6RCxiYXNzSHo6c2Usa2lja0Jhc2VIejpqLHBsYXlNb2RlOkkudm9pY2VTcGVjaWZpYy5wbGF5TW9kZX0pfWZ1bmN0aW9uIHkoayl7dShrKTtjb25zdCBBPXR5cGVvZiBrPT0ibnVtYmVyIj9rOmUuY3VycmVudFRpbWU7Qy5hY3RpdmVWb2ljZXNSZWYoKS5zbGljZSgpLmZvckVhY2goej0+Zyh6LEEpKX1mdW5jdGlvbiBfKGspeyR0KGEsa3x8e30se2F1dG9QYW46cCxzZW5kUmV2ZXJiOlAsc2VuZERlbGF5Ok0sc2VuZEJ1czI6VCxnZXRCcG06dyxhdWRpb0NvbnRleHQ6ZX0pfWZ1bmN0aW9uIEgoayl7dmFyIFI7bGV0IEE9e307aWYoIShrJiZ0eXBlb2Ygaz09Im9iamVjdCIpKXJldHVybjtjb25zdCBEPU9iamVjdC5rZXlzKGspLnNvbWUoST0+SS5pbmNsdWRlcygiLiIpKSxVPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrLGEpO2lmKEQpQT1zdChhLGsscyk7ZWxzZSBpZihVJiZ0eXBlb2Yga1thXT09Im9iamVjdCIpe2NvbnN0IEk9cXQoa1thXSxbYV0pO0E9c3QoYSxJLHMpfWVsc2UgQT1rO089TWEoTyxBfHx7fSksXyhrfHx7fSk7dHJ5e2NvbnN0IEk9aCgpO2Zvcihjb25zdCBqIG9mIGFjdGl2ZVZvaWNlcylmb3IoY29uc3Qgc2Ugb2Ygai5zb3VyY2VzKWlmKHNlJiZzZS5faXNMZm8mJnR5cGVvZigoUj1zZS5mcmVxdWVuY3kpPT1udWxsP3ZvaWQgMDpSLnNldFZhbHVlQXRUaW1lKT09ImZ1bmN0aW9uIil0cnl7c2UuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKEksZS5jdXJyZW50VGltZSsuMDAxKX1jYXRjaHt9fWNhdGNoe319ZnVuY3Rpb24gVihrKXtjb25zdCBBPWt8fFllKHQpO089TWEoQT09PSJCIj9scygpOnJzKCkse30pO2NvbnN0IHo9YXQoYSxPLHMpO3JldHVybntuZXN0ZWQ6aXQoTyksZmxhdDp6fX1mdW5jdGlvbiBRKCl7cmV0dXJuIGF0KGEsTyxzKX1mdW5jdGlvbiAkKCl7dHJ5e3goKX1jYXRjaHt9fWNvbnN0IHE9e291dHB1dDptLHNlbmRCdXMyOlQsc2VuZFJldmVyYjpQLHNlbmREZWxheTpNLHRyaWdnZXI6ZixzdG9wOnksdXBkYXRlUGFyYW1zOkgscmVnZW5lcmF0ZVBhcmFtczpWLGdldEZsYXRQYXJhbXM6USxkaXNwb3NlOiR9O3JldHVybiBxLnNpZGU9KCk9PlllKHQpLHEuY2hhbmdlVm9pY2VQYXJhbXNPbkV2ZXJ5U3RlcD0wLHF9Y2xhc3MgUml7Y29uc3RydWN0b3Iobix0LGE9e30pe2NuKHRoaXMsIl90aWNrIiwoKT0+e2lmKHRoaXMuc3RvcHBlZClyZXR1cm47Y29uc3Qgbj10aGlzLmF1ZGlvQ3R4LmN1cnJlbnRUaW1lO2Zvcihjb25zdCB0IG9mIHRoaXMucGFydGlhbHMpbj49dC5uZXh0VGFyZ2V0QXQmJnRoaXMuX3NjaGVkdWxlTmV3VGFyZ2V0KHQsbil9KTt0aGlzLmF1ZGlvQ3R4PW4sdGhpcy5kZXN0aW5hdGlvbj10O2NvbnN0IHM9bi5zYW1wbGVSYXRlKi41LG09ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcihOKCkqKDE4LTMrMSkpKzN9KCk7dGhpcy5vcHRpb25zPU9iamVjdC5hc3NpZ24oe251bVBhcnRpYWxzOm0sZnJlcVBvd2VyOjIsZnJlcU9mZnNldDoxMCxtaW5IejoyMCxtYXhIejpNYXRoLm1heCg4ZTMscy01MDApLHF1YW50aXplMTJURVQ6ITAsdHVuaW5nQTRIejo0NDAsaG9sZFNlY29uZHM6Myxob2xkTWluU2Vjb25kczouMTIsaG9sZE1heFNlY29uZHM6MjIsaG9sZERyaWZ0Oi42NSx0aW1lck1zOjkwLGJhc2VHYWluRmFsbG9mZlBvd2VyOjEuMTUsYmFzZUdhaW5zU3VtOi4yLGhpZ2hDdXRIejo2ZTMsbWFzdGVyVHJpbTouMjUsZmFkZUluU2Vjb25kczouNzUsZmFkZU91dFNlY29uZHM6LjMscGFuU3ByZWFkOi4yfSxhKSx0aGlzLnN1bU5vZGU9bi5jcmVhdGVHYWluKCksdGhpcy5zdW1Ob2RlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxuLmN1cnJlbnRUaW1lKSx0aGlzLmhpZ2hQYXNzPW4uY3JlYXRlQmlxdWFkRmlsdGVyKCksdGhpcy5oaWdoUGFzcy50eXBlPSJoaWdocGFzcyIsdGhpcy5oaWdoUGFzcy5RLnNldFZhbHVlQXRUaW1lKC43MDcsbi5jdXJyZW50VGltZSksdGhpcy5oaWdoUGFzcy5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoMjUwLG4uY3VycmVudFRpbWUpLHRoaXMubG93UGFzcz1uLmNyZWF0ZUJpcXVhZEZpbHRlcigpLHRoaXMubG93UGFzcy50eXBlPSJsb3dwYXNzIix0aGlzLmxvd1Bhc3MuUS5zZXRWYWx1ZUF0VGltZSguNzA3LG4uY3VycmVudFRpbWUpO2NvbnN0IHA9TWF0aC5tYXgoMjAwLE1hdGgubWluKHRoaXMub3B0aW9ucy5oaWdoQ3V0SHosdGhpcy5vcHRpb25zLm1heEh6KSk7dGhpcy5sb3dQYXNzLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShwLG4uY3VycmVudFRpbWUpLHRoaXMubWFzdGVyR2Fpbj1uLmNyZWF0ZUdhaW4oKSx0aGlzLm1hc3RlckdhaW4uZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxZS02LG4uY3VycmVudFRpbWUpLHRoaXMuc3VtTm9kZS5jb25uZWN0KHRoaXMuaGlnaFBhc3MpLHRoaXMuaGlnaFBhc3MuY29ubmVjdCh0aGlzLmxvd1Bhc3MpLHRoaXMubG93UGFzcy5jb25uZWN0KHRoaXMubWFzdGVyR2FpbiksdGhpcy5kZXN0aW5hdGlvbiYmdGhpcy5tYXN0ZXJHYWluLmNvbm5lY3QodGhpcy5kZXN0aW5hdGlvbiksdGhpcy5wYXJ0aWFscz1bXSx0aGlzLnN0YXJ0ZWQ9ITEsdGhpcy5zdG9wcGVkPSExLHRoaXMuX3RpY2tUaW1lcj1udWxsO2NvbnN0IFM9dGhpcy5fY29tcHV0ZUJhc2VHYWlucyh0aGlzLm9wdGlvbnMubnVtUGFydGlhbHMsdGhpcy5vcHRpb25zLmJhc2VHYWluRmFsbG9mZlBvd2VyLHRoaXMub3B0aW9ucy5iYXNlR2FpbnNTdW0pLFA9LjAwMixNPTYsVD1uLmN1cnJlbnRUaW1lLEc9ZnVuY3Rpb24oTCl7Y29uc3QgeD1NYXRoLm1heCgwLE51bWJlcihMLm51bVBhcnRpYWxzKXx8MCk7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMSxOdW1iZXIoTC5wYW5TcHJlYWQpfHwwKSk8PTFlLTQ/ITE6eDw9MTJ9KHRoaXMub3B0aW9ucyk7bGV0IEU9MDtmb3IobGV0IEw9MDtMPHRoaXMub3B0aW9ucy5udW1QYXJ0aWFscztMKyspe2NvbnN0IHg9dGhpcy5fY29tcHV0ZUZyZXF1ZW5jeUZvckluZGV4KEwpLE89bi5jcmVhdGVPc2NpbGxhdG9yKCk7Ty50eXBlPSJzaW5lIixPLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZSh4LFQpO2NvbnN0IHc9bi5jcmVhdGVHYWluKCksbz1OKCk7dy5nYWluLnNldFZhbHVlQXRUaW1lKHRoaXMuX2NsYW1wMDEobyksVCk7Y29uc3QgQz1uLmNyZWF0ZUdhaW4oKSxjPVNbTF07aWYoIShFPE0pJiZjPFApe3RyeXtPLmRpc2Nvbm5lY3QoKX1jYXRjaHt9Y29udGludWV9RSs9MSxDLmdhaW4uc2V0VmFsdWVBdFRpbWUoYyxUKTtsZXQgZD1udWxsO2lmKEcpe2Q9bi5jcmVhdGVTdGVyZW9QYW5uZXIoKTtjb25zdCBoPU1hdGgubWF4KDAsTWF0aC5taW4oMSxOdW1iZXIodGhpcy5vcHRpb25zLnBhblNwcmVhZCl8fDApKSxmPShOKCkqMi0xKSpoO2QucGFuLnNldFZhbHVlQXRUaW1lKGYsVCl9Ty5jb25uZWN0KHcpLHcuY29ubmVjdChDKSxkPyhDLmNvbm5lY3QoZCksZC5jb25uZWN0KHRoaXMuc3VtTm9kZSkpOkMuY29ubmVjdCh0aGlzLnN1bU5vZGUpO2NvbnN0IGc9dGhpcy5fc2FtcGxlSG9sZFNlY29uZHMoKSx1PU4oKSpnLGI9VCt1O3RoaXMucGFydGlhbHMucHVzaCh7b3NjOk8sbW9kR2Fpbjp3LGJhc2VHYWluTm9kZTpDLHBhbm5lcjpkLGJhc2VHYWluOmMsbGFzdFRhcmdldDpvLGxhc3RTdGFydFRpbWU6VCxsYXN0RW5kVGltZTpULG5leHRUYXJnZXRBdDpiLGhvbGRTZWM6Z30pfX1fY2xhbXAwMShuKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxLG4pKX1fY29tcHV0ZUZyZXF1ZW5jeUZvckluZGV4KG4pe2NvbnN0e2ZyZXFQb3dlcjp0LGZyZXFPZmZzZXQ6YSxtaW5IejpzLG1heEh6Om0scXVhbnRpemUxMlRFVDpwfT10aGlzLm9wdGlvbnMsUz1NYXRoLnBvdyhhK24sdCk7cmV0dXJuIHA/dGhpcy5fcXVhbnRpemVUbzEyVEVUKFMscyxtKTpNYXRoLm1heChzLE1hdGgubWluKG0sUykpfV9xdWFudGl6ZVRvMTJURVQobix0LGEpe2NvbnN0IHM9dGhpcy5vcHRpb25zLnR1bmluZ0E0SHo+MD90aGlzLm9wdGlvbnMudHVuaW5nQTRIejo0NDAsbT0xMipNYXRoLmxvZzIoTWF0aC5tYXgoMWUtOSxuKS9zKSxwPU1hdGguY2VpbCgxMipNYXRoLmxvZzIoTWF0aC5tYXgoMWUtOSx0KS9zKSksUz1NYXRoLmZsb29yKDEyKk1hdGgubG9nMihNYXRoLm1heCgxZS05LGEpL3MpKSxQPU1hdGgubWF4KHAsTWF0aC5taW4oUyxNYXRoLnJvdW5kKG0pKSk7cmV0dXJuIHMqTWF0aC5wb3coMixQLzEyKX1fY29tcHV0ZUJhc2VHYWlucyhuLHQsYSl7Y29uc3Qgcz1uZXcgQXJyYXkobik7bGV0IG09MDtmb3IobGV0IFM9MDtTPG47UysrKXtjb25zdCBQPTEvTWF0aC5wb3coUysxLHQpO3NbU109UCxtKz1QfWNvbnN0IHA9KGE+MD9NYXRoLm1pbiguNSxhKTouNDUpLyhtfHwxKTtyZXR1cm4gcy5tYXAoUz0+UypwKX1fc2FtcGxlSG9sZFNlY29uZHMobil7Y29uc3QgdD1NYXRoLm1heCguMDIsTnVtYmVyKHRoaXMub3B0aW9ucy5ob2xkTWluU2Vjb25kcz8/dGhpcy5vcHRpb25zLmhvbGRTZWNvbmRzPz8uNSkpLGE9TWF0aC5tYXgodCxOdW1iZXIodGhpcy5vcHRpb25zLmhvbGRNYXhTZWNvbmRzPz90aGlzLm9wdGlvbnMuaG9sZFNlY29uZHM/PzMpKSxzPU1hdGgubG9nKHQpLG09TWF0aC5sb2coYSkscD1NYXRoLmV4cChzKyhtLXMpKnRoaXMuX2NsYW1wMDEoTigpKSksUz10aGlzLl9jbGFtcDAxKE51bWJlcih0aGlzLm9wdGlvbnMuaG9sZERyaWZ0Pz8uNjUpKTtyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIiJiZOdW1iZXIuaXNGaW5pdGUobik/TWF0aC5tYXgoLjAyLG4qUytwKigxLVMpKTpNYXRoLm1heCguMDIscCl9X3NjaGVkdWxlTmV3VGFyZ2V0KG4sdCl7Y29uc3QgYT1NYXRoLm1heCguMDIsTnVtYmVyKG4uaG9sZFNlYyl8fHRoaXMuX3NhbXBsZUhvbGRTZWNvbmRzKCkpLHM9dGhpcy5fY2xhbXAwMShOKCkpO3RyeXtuLm1vZEdhaW4uZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXModCl9Y2F0Y2h7fWNvbnN0IG09bi5sYXN0VGFyZ2V0O24ubW9kR2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKG0sdCksbi5tb2RHYWluLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUocyx0K2EpLG4ubGFzdFRhcmdldD1zLG4ubGFzdFN0YXJ0VGltZT10LG4ubGFzdEVuZFRpbWU9dCthLG4uaG9sZFNlYz10aGlzLl9zYW1wbGVIb2xkU2Vjb25kcyhhKSxuLm5leHRUYXJnZXRBdD1uLmxhc3RFbmRUaW1lfXN0YXJ0KG49MCl7aWYodGhpcy5zdGFydGVkfHx0aGlzLnN0b3BwZWQpcmV0dXJuO2NvbnN0IHQ9TWF0aC5tYXgodGhpcy5hdWRpb0N0eC5jdXJyZW50VGltZSxuKTtmb3IoY29uc3QgbSBvZiB0aGlzLnBhcnRpYWxzKW0ub3NjLnN0YXJ0KHQpO3RyeXt0aGlzLm1hc3RlckdhaW4uZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXModCl9Y2F0Y2h7fWNvbnN0IGE9MWUtNixzPXRoaXMuX2NsYW1wMDEodGhpcy5vcHRpb25zLm1hc3RlclRyaW0pO3RoaXMubWFzdGVyR2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKGEsdCksdGhpcy5tYXN0ZXJHYWluLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUocyx0K01hdGgubWF4KC4wNSx0aGlzLm9wdGlvbnMuZmFkZUluU2Vjb25kcykpLHRoaXMuX3RpY2soKSx0aGlzLl90aWNrVGltZXI9c2V0SW50ZXJ2YWwodGhpcy5fdGljayxNYXRoLm1heCgyMCxNYXRoLm1pbigyZTMsdGhpcy5vcHRpb25zLnRpbWVyTXMpKSksdGhpcy5zdGFydGVkPSEwfXN0b3Aobj0wKXtpZih0aGlzLnN0b3BwZWQpcmV0dXJuO2NvbnN0IHQ9TWF0aC5tYXgodGhpcy5hdWRpb0N0eC5jdXJyZW50VGltZSxuKTt0aGlzLl90aWNrVGltZXImJihjbGVhckludGVydmFsKHRoaXMuX3RpY2tUaW1lciksdGhpcy5fdGlja1RpbWVyPW51bGwpO2NvbnN0IGE9TWF0aC5tYXgoLjA1LHRoaXMub3B0aW9ucy5mYWRlT3V0U2Vjb25kcyk7dHJ5e3RoaXMubWFzdGVyR2Fpbi5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyh0KX1jYXRjaHt9Y29uc3Qgcz10aGlzLm1hc3RlckdhaW4uZ2Fpbi52YWx1ZTt0aGlzLm1hc3RlckdhaW4uZ2Fpbi5zZXRWYWx1ZUF0VGltZShzLHQpLHRoaXMubWFzdGVyR2Fpbi5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKDFlLTYsdCthKTtmb3IoY29uc3QgbSBvZiB0aGlzLnBhcnRpYWxzKXRyeXttLm9zYy5zdG9wKHQrYSsuMDUpfWNhdGNoe31zZXRUaW1lb3V0KCgpPT50aGlzLmRpc3Bvc2UoKSwoYSsuMTUpKjFlMyksdGhpcy5zdG9wcGVkPSEwfWRpc3Bvc2UoKXtmb3IoY29uc3QgbiBvZiB0aGlzLnBhcnRpYWxzKXt0cnl7bi5vc2MuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7bi5tb2RHYWluLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e24uYmFzZUdhaW5Ob2RlLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e24ucGFubmVyLmRpc2Nvbm5lY3QoKX1jYXRjaHt9fXRyeXt0aGlzLmxvd1Bhc3MuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7dGhpcy5oaWdoUGFzcy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXt0aGlzLm1hc3RlckdhaW4uZGlzY29ubmVjdCgpfWNhdGNoe310cnl7dGhpcy5zdW1Ob2RlLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dGhpcy5wYXJ0aWFscz1bXX1zZXRQYW5TcHJlYWQobix0PSEwKXtjb25zdCBhPU1hdGgubWF4KDAsTWF0aC5taW4oMSxOdW1iZXIobikpKTtpZih0aGlzLm9wdGlvbnMucGFuU3ByZWFkPWEsIXQpcmV0dXJuO2NvbnN0IHM9dGhpcy5hdWRpb0N0eC5jdXJyZW50VGltZTtmb3IoY29uc3QgbSBvZiB0aGlzLnBhcnRpYWxzKXtjb25zdCBwPShOKCkqMi0xKSphO3RyeXttLnBhbm5lci5wYW4uc2V0VmFsdWVBdFRpbWUocCxzKX1jYXRjaHt9fX19bGV0IHd0PW51bGw7ZnVuY3Rpb24gSGkoZSxuLHQ9e30pe3JldHVybiB3dHx8KHd0PW5ldyBSaShlLG4sdCksd3QpfWZ1bmN0aW9uIHFpKGUsbix0PXt9KXtjb25zdCBhPUhpKGUsbix0KTt0cnl7biYmYS5tYXN0ZXJHYWluJiYoYS5tYXN0ZXJHYWluLmRpc2Nvbm5lY3QoKSxhLm1hc3RlckdhaW4uY29ubmVjdChuKSl9Y2F0Y2h7fXJldHVybiBhLnN0YXJ0KCksYX1mdW5jdGlvbiB1cygpe3d0JiYod3Quc3RvcCgpLHd0PW51bGwpfWZ1bmN0aW9uIEdpKCl7cmV0dXJuISF3dCYmd3Quc3RhcnRlZCYmIXd0LnN0b3BwZWR9ZnVuY3Rpb24gVmkoZSl7aWYoIXd0KXJldHVybjtjb25zdCBuPU1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSk7d3QubWFzdGVyR2Fpbi5nYWluLnNldFZhbHVlQXRUaW1lKG4sd3QuYXVkaW9DdHguY3VycmVudFRpbWUpfWZ1bmN0aW9uIEZpKGUsbj0hMCl7aWYoIXd0KXJldHVybjtjb25zdCB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSxOdW1iZXIoZSkpKTt3dC5zZXRQYW5TcHJlYWQodCxuKX1mdW5jdGlvbiBwcyhlLG4sdD17fSl7Y29uc3QgYT1lLmNyZWF0ZUdhaW4oKTthLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxlLmN1cnJlbnRUaW1lKTtsZXQgcz0hMTtmdW5jdGlvbiBtKEcpe3N8fHFpKGUsYSxPaShuKSl9ZnVuY3Rpb24gcChHKXtzfHx1cygpfWZ1bmN0aW9uIFMoKXtyZXR1cm4gR2koKX1mdW5jdGlvbiBQKEcpe2lmKCEoIUd8fHR5cGVvZiBHIT0ib2JqZWN0Iikpe3RyeXtjb25zdCBFPUdbImRyb25lLnZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiJdPz9HWyJ2b2ljZVNwZWNpZmljLm91dHB1dEdhaW4iXT8/Ry5vdXRwdXRHYWluO3R5cGVvZiBFPT0ibnVtYmVyIiYmVmkoTWF0aC5tYXgoMCxNYXRoLm1pbigxLEUpKSl9Y2F0Y2h7fXRyeXtjb25zdCBFPUdbImRyb25lLnBhblNwcmVhZCJdPz9HLnBhblNwcmVhZDt0eXBlb2YgRT09Im51bWJlciImJkZpKEUsITApfWNhdGNoe319fWZ1bmN0aW9uIE0oKXtyZXR1cm57ImRyb25lLnZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6LjMsImRyb25lLnBhblNwcmVhZCI6LjJ9fWZ1bmN0aW9uIFQoKXtpZighcyl7dHJ5e3VzKCl9Y2F0Y2h7fXRyeXthLmRpc2Nvbm5lY3QoKX1jYXRjaHt9cz0hMH19cmV0dXJue291dHB1dDphLHN0YXJ0Om0sc3RvcDpwLHVwZGF0ZVBhcmFtczpQLGdldEZsYXRQYXJhbXM6TSxkaXNwb3NlOlQsaXNSdW5uaW5nOlN9fWZ1bmN0aW9uIE9pKGUpe2NvbnN0IG49e307dHJ5e2NvbnN0IHQ9ZSYmZS52b2ljZVNwZWNpZmljfHx7fTt0eXBlb2YgdC5vdXRwdXRHYWluPT0ibnVtYmVyIiYmKG4ubWFzdGVyVHJpbT1NYXRoLm1heCgwLE1hdGgubWluKDEsdC5vdXRwdXRHYWluKSkpLHR5cGVvZiB0LmZhZGVJblNlY29uZHM9PSJudW1iZXIiJiYobi5mYWRlSW5TZWNvbmRzPU1hdGgubWF4KC4wNSx0LmZhZGVJblNlY29uZHMpKSx0eXBlb2YgdC5mYWRlT3V0U2Vjb25kcz09Im51bWJlciImJihuLmZhZGVPdXRTZWNvbmRzPU1hdGgubWF4KC4wNSx0LmZhZGVPdXRTZWNvbmRzKSl9Y2F0Y2h7fXJldHVybiBufWZ1bmN0aW9uIEZhKGU9Til7Y29uc3Qgbj1uZXcgU2V0O2Zvcig7bi5zaXplPDM7KW4uYWRkKE1hdGguZmxvb3IoZSgpKjEyKSk7cmV0dXJuIEFycmF5LmZyb20obikuc29ydCgoYSxzKT0+YS1zKS5tYXAoYT0+TWF0aC5wb3coMixhLzEyKSl9ZnVuY3Rpb24gbXMoKXtjb25zdCBlPXthdHRhY2s6aSgyZS00LC4wMDQpLGRlY2F5OmkoLjI4LC43KSxzdXN0YWluOjAscmVsZWFzZTppKC4wNiwuMil9LG49e2Jhc2VGcmVxSHo6aSgyMDAsNTAwKSxudW1QYXJ0aWFsczpJZSgzLDYpLHJhdGlvczpGYSgpLHBhcnRpYWxTcHJlYWREYjotaSgxMiwyMil9LHQ9e3ByZUxvd2N1dEh6OmkoNjAsMTQwKSxwb3N0TG93cGFzc0h6OmkoOGUzLDE0ZTMpLHBvc3RMb3dwYXNzUTppKC42LDEuMil9LGE9e2VudlBjdDppKC4wMywuMDUpLHBhcnRpYWxQY3Q6aSguMDMsLjA1KX0scz17bm9pc2VNaXg6aSgwLC4xNSksbm9pc2VMb3dwYXNzSHo6aSg2ZTMsMTJlMyl9LG09e3RyZW1vbG9EZXB0aDppKDAsLjQ1KSx0cmVtb2xvSHo6aSguNiw2KSx0cmVtb2xvU3luYzohMX0scD17b3V0cHV0R2FpbjppKC4wMiwuMDQpLGh1bWFuaXplOmkoLjM1LC43NSksdGVtcG9CcG06JGUuZGVmYXVsdEJwbSxzZWNvbmRzUGVyU3RlcDouMTI1fSxTPXtyZXZlcmJNaXg6aSguMTgsLjQyKSxyZXZlcmJEZWNheTppKDIuNSw2LjUpLHJldmVyYk1ha2VVcEdhaW46MCxyZXZlcmJQcmVEZWxheU1zOjI0LHJldmVyYk5vaXNlQ29sb3I6IndoaXRlIixyZXZlcmJTdGVyZW9TcHJlYWQ6LjAyfTtyZXR1cm57ZW52ZWxvcGU6ZSxhZGRpdGl2ZTpuLHRvbmU6dCxtaWNyb1ZhcjphLG9yZ2FuaWM6cyxtb3Rpb246bSx2b2ljZVNwZWNpZmljOnAsZng6U319ZnVuY3Rpb24gZnMoKXtjb25zdCBlPXthdHRhY2s6aSgyZS00LC4wMDQpLGRlY2F5OmkoLjI4LC43KSxzdXN0YWluOjAscmVsZWFzZTppKC4wNiwuMil9LG49e2Jhc2VGcmVxSHo6aSgxMDAsMjUwKSxudW1QYXJ0aWFsczpJZSg2LDEyKSxyYXRpb3M6RmEoKSxwYXJ0aWFsU3ByZWFkRGI6LWkoMTIsMjIpfSx0PXtwcmVMb3djdXRIejppKDYwLDE0MCkscG9zdExvd3Bhc3NIejppKDhlMywxNGUzKSxwb3N0TG93cGFzc1E6aSguNiwxLjIpfSxhPXtlbnZQY3Q6aSguMDMsLjA1KSxwYXJ0aWFsUGN0OmkoLjAzLC4wNSl9LHM9e25vaXNlTWl4OmkoMCwuMTUpLG5vaXNlTG93cGFzc0h6OmkoNmUzLDEyZTMpfSxtPXt0cmVtb2xvRGVwdGg6aSgwLC40NSksdHJlbW9sb0h6OmkoLjYsNiksdHJlbW9sb1N5bmM6ITF9LHA9e291dHB1dEdhaW46aSguMDEsLjAyKSxodW1hbml6ZTppKC4zNSwuNzUpLHRlbXBvQnBtOiRlLmRlZmF1bHRCcG0sc2Vjb25kc1BlclN0ZXA6LjEyNX0sUz17cmV2ZXJiTWl4OmkoLjE4LC40MikscmV2ZXJiRGVjYXk6aSgyLjUsNi41KSxyZXZlcmJNYWtlVXBHYWluOjAscmV2ZXJiUHJlRGVsYXlNczoyNCxyZXZlcmJOb2lzZUNvbG9yOiJ3aGl0ZSIscmV2ZXJiU3RlcmVvU3ByZWFkOi4wMn07cmV0dXJue2VudmVsb3BlOmUsYWRkaXRpdmU6bix0b25lOnQsbWljcm9WYXI6YSxvcmdhbmljOnMsbW90aW9uOm0sdm9pY2VTcGVjaWZpYzpwLGZ4OlN9fWZ1bmN0aW9uIEJhKGUsbil7Y29uc3QgdD1pdChlKTtpZighbilyZXR1cm4gdDtmb3IoY29uc3QgYSBvZlsiZW52ZWxvcGUiLCJhZGRpdGl2ZSIsInRvbmUiLCJtaWNyb1ZhciIsIm9yZ2FuaWMiLCJtb3Rpb24iLCJ2b2ljZVNwZWNpZmljIiwiZngiXSluW2FdJiYodFthXT17Li4udFthXSwuLi5uW2FdfSk7cmV0dXJuIHQuZW52ZWxvcGUuYXR0YWNrPWwodC5lbnZlbG9wZS5hdHRhY2ssMWUtNCwuMDEpLHQuZW52ZWxvcGUuZGVjYXk9bCh0LmVudmVsb3BlLmRlY2F5LC4yLDEuMiksdC5lbnZlbG9wZS5zdXN0YWluPTAsdC5lbnZlbG9wZS5yZWxlYXNlPWwodC5lbnZlbG9wZS5yZWxlYXNlLC4wNSwuMzUpLHQuYWRkaXRpdmUuYmFzZUZyZXFIej1sKHQuYWRkaXRpdmUuYmFzZUZyZXFIeiw1MCw0ZTMpLHQuYWRkaXRpdmUubnVtUGFydGlhbHM9MyxBcnJheS5pc0FycmF5KHQuYWRkaXRpdmUucmF0aW9zKXx8KHQuYWRkaXRpdmUucmF0aW9zPVtdKSx0LmFkZGl0aXZlLnBhcnRpYWxTcHJlYWREYj1sKHQuYWRkaXRpdmUucGFydGlhbFNwcmVhZERiLC0xOCwtMyksdC50b25lPXQudG9uZXx8e30sdC50b25lLnByZUxvd2N1dEh6PWwodC50b25lLnByZUxvd2N1dEh6Pz85MCwyMCw1MDApLHQudG9uZS5wb3N0TG93cGFzc0h6PWwodC50b25lLnBvc3RMb3dwYXNzSHo/PzExZTMsMWUzLDJlNCksdC50b25lLnBvc3RMb3dwYXNzUT1sKHQudG9uZS5wb3N0TG93cGFzc1E/Py43MDcsLjUsMi41KSx0Lm1pY3JvVmFyLmVudlBjdD1sKHQubWljcm9WYXIuZW52UGN0LDAsLjIpLHQubWljcm9WYXIucGFydGlhbFBjdD1sKHQubWljcm9WYXIucGFydGlhbFBjdCwwLC4yKSx0Lm9yZ2FuaWM9dC5vcmdhbmljfHx7fSx0Lm9yZ2FuaWMubm9pc2VNaXg9bCh0Lm9yZ2FuaWMubm9pc2VNaXg/PzAsMCwxKSx0Lm9yZ2FuaWMubm9pc2VMb3dwYXNzSHo9bCh0Lm9yZ2FuaWMubm9pc2VMb3dwYXNzSHo/PzllMyw1MDAsMTZlMyksdC5tb3Rpb249dC5tb3Rpb258fHt9LHQubW90aW9uLnRyZW1vbG9EZXB0aD1sKHQubW90aW9uLnRyZW1vbG9EZXB0aD8/MCwwLDEpLHQubW90aW9uLnRyZW1vbG9Iej1sKHQubW90aW9uLnRyZW1vbG9Iej8/MiwuMSwyMCksdC5tb3Rpb24udHJlbW9sb1N5bmM9ISF0Lm1vdGlvbi50cmVtb2xvU3luYyx0LnZvaWNlU3BlY2lmaWMub3V0cHV0R2Fpbj1sKHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPz8uMjIsMCwxKSx0LnZvaWNlU3BlY2lmaWMuaHVtYW5pemU9bCh0LnZvaWNlU3BlY2lmaWMuaHVtYW5pemU/Py42LDAsMSksdC52b2ljZVNwZWNpZmljLnRlbXBvQnBtPWd0KHQudm9pY2VTcGVjaWZpYy50ZW1wb0JwbT8/JGUuZGVmYXVsdEJwbSksdC52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwPWwodC52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwPz8uMTI1LC4wMiwxKSx0LmZ4PXQuZnh8fHt9LHQuZngucmV2ZXJiTWl4PWwodC5meC5yZXZlcmJNaXg/Py4zNSwwLDEpLHQuZngucmV2ZXJiRGVjYXk9bCh0LmZ4LnJldmVyYkRlY2F5Pz80LjUsLjEsMjApLHQuZngucmV2ZXJiTWFrZVVwR2Fpbj1sKHQuZngucmV2ZXJiTWFrZVVwR2Fpbj8/MCwtMjQsMjQpLHQuZngucmV2ZXJiUHJlRGVsYXlNcz1sKHQuZngucmV2ZXJiUHJlRGVsYXlNcz8/MjgsMCwxZTMpLHQuZngucmV2ZXJiTm9pc2VDb2xvcj10LmZ4LnJldmVyYk5vaXNlQ29sb3J8fCJ3aGl0ZSIsdC5meC5yZXZlcmJTdGVyZW9TcHJlYWQ9bCh0LmZ4LnJldmVyYlN0ZXJlb1NwcmVhZD8/LjAyLDAsLjA1KSx0fWZ1bmN0aW9uIERpKGUsbix0PXt9KXtjb25zdCBhPSJzaWduYWwiLHM9e2F0dGFjazoiZW52ZWxvcGUuYXR0YWNrIixkZWNheToiZW52ZWxvcGUuZGVjYXkiLHN1c3RhaW46ImVudmVsb3BlLnN1c3RhaW4iLHJlbGVhc2U6ImVudmVsb3BlLnJlbGVhc2UiLGJhc2VGcmVxSHo6ImFkZGl0aXZlLmJhc2VGcmVxSHoiLG51bVBhcnRpYWxzOiJhZGRpdGl2ZS5udW1QYXJ0aWFscyIscmF0aW9zOiJhZGRpdGl2ZS5yYXRpb3MiLHBhcnRpYWxTcHJlYWREYjoiYWRkaXRpdmUucGFydGlhbFNwcmVhZERiIixsb3djdXRIejoidG9uZS5wcmVMb3djdXRIeiIsbG93cGFzc0h6OiJ0b25lLnBvc3RMb3dwYXNzSHoiLGxvd3Bhc3NROiJ0b25lLnBvc3RMb3dwYXNzUSIsIm1pY3JvVmFyLmVudlBjdCI6Im1pY3JvVmFyLmVudlBjdCIsIm1pY3JvVmFyLnBhcnRpYWxQY3QiOiJtaWNyb1Zhci5wYXJ0aWFsUGN0IixvdXRwdXRHYWluOiJ2b2ljZVNwZWNpZmljLm91dHB1dEdhaW4iLCJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjoidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCIsInZvaWNlU3BlY2lmaWMudGVtcG9CcG0iOiJ2b2ljZVNwZWNpZmljLnRlbXBvQnBtIn0sbT17YmFuZEJhc2VIejoiYWRkaXRpdmUuYmFzZUZyZXFIeiIsYmFuZFE6ImFkZGl0aXZlLnBhcnRpYWxTcHJlYWREYiJ9LHtvdXRwdXQ6cCxhdXRvUGFuOlMsZHJ5QnVzOlAsc2VuZFJldmVyYjpNLHNlbmREZWxheTpULHNlbmRCdXMyOkcsd2lyZVBhbjpFLHRhcFJldmVyYjpMLHRhcERlbGF5OngsZGlzcG9zZUlPOk99PVF0KGUse30pLHc9WWUodCk9PT0iQiI/ZnMoKTptcygpO2xldCBvPUJhKHcsbik7Y29uc3QgQz0oKT0+QXQoby52b2ljZVNwZWNpZmljLnRlbXBvQnBtKSxjPSgpPT5GdChvLnZvaWNlU3BlY2lmaWMuc2Vjb25kc1BlclN0ZXB8fC4xMjUpO3RyeXtFKCl9Y2F0Y2h7fXRyeXtMKHApfWNhdGNoe310cnl7eChwKX1jYXRjaHt9Y29uc3QgZD0yLGc9YW4oZSx7bWF4UG9seXBob255OmR9KSx1PShBLHopPT5nLnNjaGVkdWxlQ2xlYW51cChBLHopO2Z1bmN0aW9uIGIoQSx6KXtjb25zdCBEPSh0eXBlb2Ygej09Im51bWJlciI/ejplLmN1cnJlbnRUaW1lKSs1ZS00O3RyeXtBLmVudi5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhEKTtjb25zdCBSPU1hdGgubWF4KEEuZW52LmdhaW4udmFsdWUsMWUtNCk7QS5lbnYuZ2Fpbi5zZXRWYWx1ZUF0VGltZShSLEQpLEEuZW52LmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LEQrLjAzKX1jYXRjaHt9Y29uc3QgVT1EKy4wNTtmb3IoY29uc3QgUiBvZiBBLnNvdXJjZXMpdHJ5e1Iuc3RvcChVKX1jYXRjaHt9dShBLFUpfWZ1bmN0aW9uIGgoKXtnLmFjdGl2ZVZvaWNlc1JlZigpLmxlbmd0aD49ZCYmZy5zdG9wT2xkZXN0KGUuY3VycmVudFRpbWUpfWNvbnN0IGY9QT0+e3RyeXtjb25zdCB6PXQmJnQuZXZlbnRzO3omJnouZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoYSx7ZGV0YWlsOkF9KSl9Y2F0Y2h7fX07ZnVuY3Rpb24geShBLHthY2NlbnQ6ej0hMSxzdXN0YWluU3RlcHM6RD0wLHZlbG9jaXR5OlU9MX09e30pe3ZhciBiZSxTZSx6ZSxCZSxSZSxBZSx2ZSxHZSxOZTtjb25zdCBSPXR5cGVvZiBBPT0ibnVtYmVyIj9BOmUuY3VycmVudFRpbWUrLjAwMSxJPW8saj1sKEkudm9pY2VTcGVjaWZpYy5odW1hbml6ZSwwLDEpO2xldCBzZT1RZShJLmVudmVsb3BlLmF0dGFjayxJLm1pY3JvVmFyLmVudlBjdCxqKSxoZT1RZShJLmVudmVsb3BlLmRlY2F5LEkubWljcm9WYXIuZW52UGN0LGopLGVlPVFlKEkuZW52ZWxvcGUucmVsZWFzZSxJLm1pY3JvVmFyLmVudlBjdCxqKTtzZT1FdChzZSx0KSxoZT1JdChoZSx0KSxlZT1qdChlZSx0KTtjb25zdCBYPU1hdGgubWF4KDAsRCkqYygpLGNlPWhlLEs9ZWU7bGV0IGFlPUkuYWRkaXRpdmUubnVtUGFydGlhbHMsZmU9MDt6PT09ITAmJihhZTw9NSYmSS5hZGRpdGl2ZS5yYXRpb3MubGVuZ3RoPmFlP2FlKz0xOmZlKz1pKDEsMikpLGYoe3RpbWU6UixhY2NlbnQ6eixzdXN0YWluU3RlcHM6RCx2ZWxvY2l0eTpVLG51bVBhcnRpYWxzOmFlfSksaCgpO2NvbnN0IG1lPWUuY3JlYXRlR2FpbigpO21lLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxSKTtjb25zdCBwZT1lLmNyZWF0ZUdhaW4oKTtwZS5nYWluLnNldFZhbHVlQXRUaW1lKDEsUik7Y29uc3Qgb2U9ZS5jcmVhdGVHYWluKCksQj1sKEkudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPz8uMjIsMCwxKSx2PS42KmwoVSwwLDEpKkIqYnQoZmUpO29lLmdhaW4uc2V0VmFsdWVBdFRpbWUodixSKTtjb25zdCBGPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Ri50eXBlPSJoaWdocGFzcyIsRi5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobCgoKGJlPUkudG9uZSk9PW51bGw/dm9pZCAwOmJlLnByZUxvd2N1dEh6KT8/OTAsMjAsNTAwKSxSKSxGLlEuc2V0VmFsdWVBdFRpbWUoLjcwNyxSKTtjb25zdCBXPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Vy50eXBlPSJsb3dwYXNzIixXLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShsKCgoU2U9SS50b25lKT09bnVsbD92b2lkIDA6U2UucG9zdExvd3Bhc3NIeik/PzExZTMsMWUzLDJlNCksUiksVy5RLnNldFZhbHVlQXRUaW1lKGwoKCh6ZT1JLnRvbmUpPT1udWxsP3ZvaWQgMDp6ZS5wb3N0TG93cGFzc1EpPz8uNzA3LC41LDIuNSksUiksbWUuY29ubmVjdChGKSxGLmNvbm5lY3QoVyksVy5jb25uZWN0KHBlKSxwZS5jb25uZWN0KG9lKTt0cnl7KEJlPVMub25UcmlnZ2VyKT09bnVsbHx8QmUuY2FsbChTKX1jYXRjaHt9b2UuY29ubmVjdChTLmlucHV0KTt0cnl7b2UuY29ubmVjdChHKX1jYXRjaHt9dHJ5e29lLmNvbm5lY3QoVCl9Y2F0Y2h7fWNvbnN0IFk9W10sSj1bbWUsRixXLHBlLG9lXSxpZT1BcnJheS5pc0FycmF5KEkuYWRkaXRpdmUucmF0aW9zKSYmSS5hZGRpdGl2ZS5yYXRpb3MubGVuZ3RoPj0zP0kuYWRkaXRpdmUucmF0aW9zLnNsaWNlKDAsMyk6RmEoKSx1ZT0zLG5lPWwoSS5hZGRpdGl2ZS5wYXJ0aWFsU3ByZWFkRGIsLTE4LC0zKSx0ZT0tOCxaPW5lO2ZvcihsZXQgTWU9MDtNZTx1ZTtNZSsrKXtjb25zdCBrZT1lLmNyZWF0ZU9zY2lsbGF0b3IoKTtrZS50eXBlPSJzaW5lIjtjb25zdCBfZT1NYXRoLm1heCgyMCxJLmFkZGl0aXZlLmJhc2VGcmVxSHoqaWVbTWVdKTtrZS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoX2UsUik7Y29uc3QgbGU9ZS5jcmVhdGVHYWluKCksVGU9TWUvKHVlLTEpLGdlPXRlKyhaLXRlKSpUZSx3ZT1idChnZSksT2U9UWUod2UsSS5taWNyb1Zhci5wYXJ0aWFsUGN0LGopO2xlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxSKSxrZS5jb25uZWN0KGxlKSxsZS5jb25uZWN0KG1lKTtjb25zdCBIZT1SK3NlLFVlPUhlK1gsV2U9UWUoY2UsSS5taWNyb1Zhci5lbnZQY3QsaiksVmU9UWUoSyxJLm1pY3JvVmFyLmVudlBjdCxqKSxqZT1VZStXZSx1dD1qZStWZTtsZS5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKE9lLEhlKSxsZS5nYWluLnNldFZhbHVlQXRUaW1lKE9lLFVlKSxsZS5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMWUtNCxqZSksbGUuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxZS00LGplKSxsZS5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoNWUtNSx1dCksa2Uuc3RhcnQoUik7Y29uc3QgcHQ9dXQrLjA2O2tlLnN0b3AocHQpLFkucHVzaChrZSksSi5wdXNoKGxlKX10cnl7Y29uc3QgTWU9bCgoKFJlPUkub3JnYW5pYyk9PW51bGw/dm9pZCAwOlJlLm5vaXNlTWl4KT8/MCwwLDEpO2lmKE1lPjFlLTQpe2NvbnN0IGtlPU1hdGgubWF4KC4wNSxzZStYK2NlK0srLjA1KSxfZT1xbihlLGtlKSxsZT1lLmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO2xlLmJ1ZmZlcj1fZSxsZS5sb29wPSExO2NvbnN0IFRlPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7VGUudHlwZT0ibG93cGFzcyI7Y29uc3QgZ2U9bCgoKEFlPUkub3JnYW5pYyk9PW51bGw/dm9pZCAwOkFlLm5vaXNlTG93cGFzc0h6KT8/OWUzLDUwMCwxNmUzKTt0cnl7VGUuZnJlcXVlbmN5LnNldFZhbHVlQXRUaW1lKGdlLFIpfWNhdGNoe1RlLmZyZXF1ZW5jeS52YWx1ZT1nZX1jb25zdCB3ZT1lLmNyZWF0ZUdhaW4oKSxPZT1sKE1lLDAsMSkqLjI1O3dlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxSKTtjb25zdCBIZT1SK01hdGgubWluKC4wMixzZSouNiksVWU9SGUrTWF0aC5taW4oLjA0LFgpLFdlPVVlK01hdGgubWluKC4yLGNlKi41KSxWZT1XZStNYXRoLm1pbiguMTUsSyouNSk7d2UuZ2Fpbi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShPZSxIZSksd2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZShPZSxVZSksd2UuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsV2UpLHdlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxXZSksd2UuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDVlLTUsVmUpLGxlLmNvbm5lY3QoVGUpLmNvbm5lY3Qod2UpLmNvbm5lY3QobWUpLGxlLnN0YXJ0KFIpLGxlLnN0b3AoUitrZSsuMDIpLFkucHVzaChsZSksSi5wdXNoKFRlLHdlKX19Y2F0Y2h7fXRyeXtjb25zdCBNZT1sKCgodmU9SS5tb3Rpb24pPT1udWxsP3ZvaWQgMDp2ZS50cmVtb2xvRGVwdGgpPz8wLDAsMSksa2U9ISEoKEdlPUkubW90aW9uKSE9bnVsbCYmR2UudHJlbW9sb1N5bmMpLF9lPU1hdGgubWF4KC4xLE51bWJlcigoTmU9SS5tb3Rpb24pPT1udWxsP3ZvaWQgMDpOZS50cmVtb2xvSHopfHwyKTtpZihNZT4xZS00KXtjb25zdCBsZT0xLU1lKi41LFRlPWUuY3JlYXRlT3NjaWxsYXRvcigpO1RlLnR5cGU9InNpbmUiO2NvbnN0IGdlPWtlP01hdGgubWF4KDIwLE1hdGgubWluKDMwMCx0eXBlb2YgQz09ImZ1bmN0aW9uIj9DKCk6MTIwKSkvNjAqX2U6X2U7dHJ5e1RlLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShnZSxSKX1jYXRjaHtUZS5mcmVxdWVuY3kudmFsdWU9Z2V9Y29uc3Qgd2U9ZS5jcmVhdGVHYWluKCk7d2UuZ2Fpbi5zZXRWYWx1ZUF0VGltZShNZSouNSxSKTtjb25zdCBPZT1lLmNyZWF0ZUNvbnN0YW50U291cmNlKCk7T2Uub2Zmc2V0LnNldFZhbHVlQXRUaW1lKGxlLFIpLFRlLmNvbm5lY3Qod2UpLHdlLmNvbm5lY3QocGUuZ2FpbiksT2UuY29ubmVjdChwZS5nYWluKSxUZS5zdGFydChSKSxPZS5zdGFydChSKTtjb25zdCBIZT1SK3NlK1grY2UrSysuMTtUZS5zdG9wKEhlKSxPZS5zdG9wKEhlKSxZLnB1c2goVGUsT2UpLEoucHVzaCh3ZSl9fWNhdGNoe31jb25zdCByZT1SK3NlK1grY2UrSysuMDgsZGU9e2VudjpwZSxzb3VyY2VzOlksbm9kZXM6Sn07Zy5hZGQoZGUpLHUoZGUscmUpfWZ1bmN0aW9uIF8oQSl7Y29uc3Qgej10eXBlb2YgQT09Im51bWJlciI/QTplLmN1cnJlbnRUaW1lO2cuYWN0aXZlVm9pY2VzUmVmKCkuc2xpY2UoKS5mb3JFYWNoKEQ9PmIoRCx6KSl9ZnVuY3Rpb24gSChBKXtjb25zdCB6PXsuLi5BfTtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQSxgJHthfS5iYW5kUWApKXtjb25zdCBEPU51bWJlcihBW2Ake2F9LmJhbmRRYF0pO2lmKE51bWJlci5pc0Zpbml0ZShEKSl7Y29uc3QgVT1NYXRoLm1heCgwLE1hdGgubWluKDEsKEQtOCkvTWF0aC5tYXgoMSwxMCkpKTt6W2Ake2F9LnBhcnRpYWxTcHJlYWREYmBdPS0xNCs4KigxLVUpfWRlbGV0ZSB6W2Ake2F9LmJhbmRRYF19cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChBLGAke2F9LmJhbmRCYXNlSHpgKSYmKHpbYCR7YX0uYmFzZUZyZXFIemBdPUFbYCR7YX0uYmFuZEJhc2VIemBdLGRlbGV0ZSB6W2Ake2F9LmJhbmRCYXNlSHpgXSksen1mdW5jdGlvbiBWKEEpe2xldCB6PXt9O2lmKCEoQSYmdHlwZW9mIEE9PSJvYmplY3QiKSlyZXR1cm47Y29uc3QgVT1PYmplY3Qua2V5cyhBKS5zb21lKGo9PmouaW5jbHVkZXMoIi4iKSksUj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQSxhKTtsZXQgST1BO2lmKFUmJihJPUgoQSkpLFUpej1zdChhLEksey4uLnMsLi4ubX0pO2Vsc2UgaWYoUiYmdHlwZW9mIEFbYV09PSJvYmplY3QiKXtjb25zdCBqPXF0KEFbYV0sW2FdKTt6PXN0KGEsaix7Li4ucywuLi5tfSl9ZWxzZSB6PUE7bz1CYShvLHp8fHt9KSwkdChhLEF8fHt9LHthdXRvUGFuOlMsc2VuZFJldmVyYjpNLHNlbmREZWxheTpULHNlbmRCdXMyOkcsZ2V0QnBtOkMsYXVkaW9Db250ZXh0OmV9KX1mdW5jdGlvbiBRKEEpe2NvbnN0IEQ9KEF8fFllKHQpKT09PSJCIj9mcygpOm1zKCk7bz1CYShELHt9KTtjb25zdCBVPWF0KGEsbyxzKTt0cnl7Y29uc3QgUj1pKC4yLC41NSk7dHJ5e00uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoUixlLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7TS5nYWluLnZhbHVlPVJ9fWNhdGNoe310cnl7Y29uc3QgST1OKCk8LjM1P2koLjA2LC4yMik6MH1jYXRjaHt9cmV0dXJue25lc3RlZDppdChvKSxmbGF0OlV9fWZ1bmN0aW9uICQoKXtyZXR1cm4gYXQoYSxvLHMpfWZ1bmN0aW9uIHEoKXt0cnl7TygpfWNhdGNoe319Y29uc3Qgaz17b3V0cHV0OnAsc2VuZEJ1czI6RyxzZW5kUmV2ZXJiOk0sc2VuZERlbGF5OlQsdHJpZ2dlcjp5LHN0b3A6Xyx1cGRhdGVQYXJhbXM6VixyZWdlbmVyYXRlUGFyYW1zOlEsZ2V0RmxhdFBhcmFtczokLGRpc3Bvc2U6cX07cmV0dXJuIGsuc2lkZT0oKT0+WWUodCksay5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwPTAsa31mdW5jdGlvbiBocygpe2NvbnN0IGU9e3R5cGU6ZnVuY3Rpb24oKXtjb25zdCBzPVsibG93cGFzcyIsImhpZ2hwYXNzIiwiYmFuZHBhc3MiXTtyZXR1cm4gc1tNYXRoLmZsb29yKE4oKSpzLmxlbmd0aCldfHwibG93cGFzcyJ9KCksc3RhcnRIejppKDEyMCwxODAwKSxlbmRIejppKDNlMywxNGUzKSxxOmkoLjcsMi4yKX07aWYoZS5zdGFydEh6PmUuZW5kSHope2NvbnN0IHM9ZS5zdGFydEh6O2Uuc3RhcnRIej1lLmVuZEh6LGUuZW5kSHo9c31jb25zdCBuPXt0ZW1wb0JwbTokZS5kZWZhdWx0QnBtLHNlY29uZHNQZXJTdGVwOi4xMjUsb3V0cHV0R2FpbjppKC4wMiwuMDQpLHRhaWxTZWNvbmRzOmkoLjA0LC4xMil9LHQ9Im5vaXNlIixhPXtzZWVkOk1hdGguZmxvb3IoTigpKjFlOSksbWluSHo6MTAwLG1heEh6OjQwMCxudW1NaW46MyxudW1NYXg6NixnYWluTXVsdDoxLjh9O3JldHVybntmaWx0ZXI6ZSx2b2ljZVNwZWNpZmljOm4sa2luZDp0LHNpbmU6YX19ZnVuY3Rpb24ga2EoZSxuKXtjb25zdCB0PWl0KGUpO2lmKG4mJnR5cGVvZiBuPT0ib2JqZWN0Iilmb3IoY29uc3QgYSBvZlsiZmlsdGVyIiwidm9pY2VTcGVjaWZpYyIsInNpbmUiXSluW2FdJiYodFthXT17Li4udFthXSwuLi5uW2FdfSk7aWYodC5maWx0ZXI9dC5maWx0ZXJ8fHt9LHQuZmlsdGVyLnR5cGU9WyJsb3dwYXNzIiwiaGlnaHBhc3MiLCJiYW5kcGFzcyJdLmluY2x1ZGVzKHQuZmlsdGVyLnR5cGUpP3QuZmlsdGVyLnR5cGU6Imxvd3Bhc3MiLHQuZmlsdGVyLnN0YXJ0SHo9bChOdW1iZXIodC5maWx0ZXIuc3RhcnRIeil8fDQwMCwyMCwxNmUzKSx0LmZpbHRlci5lbmRIej1sKE51bWJlcih0LmZpbHRlci5lbmRIeil8fDhlMyw1MCwyZTQpLHQuZmlsdGVyLnN0YXJ0SHo+dC5maWx0ZXIuZW5kSHope2NvbnN0IGE9KHQuZmlsdGVyLnN0YXJ0SHordC5maWx0ZXIuZW5kSHopKi41O3QuZmlsdGVyLnN0YXJ0SHo9bChhKi44LDIwLDE2ZTMpLHQuZmlsdGVyLmVuZEh6PWwoYSoxLjIsNTAsMmU0KX1yZXR1cm4gdC5maWx0ZXIucT1sKE51bWJlcih0LmZpbHRlci5xKXx8MSwuNSwxMiksdC52b2ljZVNwZWNpZmljLnRlbXBvQnBtPWd0KHQudm9pY2VTcGVjaWZpYy50ZW1wb0JwbT8/JGUuZGVmYXVsdEJwbSksdC52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwPWwoTnVtYmVyKHQudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCl8fC4xMjUsLjAyLDEpLHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluPWwoTnVtYmVyKHQudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluKXx8LjA2LDAsMSksdC52b2ljZVNwZWNpZmljLnRhaWxTZWNvbmRzPWwoTnVtYmVyKHQudm9pY2VTcGVjaWZpYy50YWlsU2Vjb25kcyl8fC4wOCwuMDEsLjYpLHQuc2luZT10LnNpbmV8fHt9LHQuc2luZS5zZWVkPU51bWJlci5pc0Zpbml0ZShOdW1iZXIodC5zaW5lLnNlZWQpKT9OdW1iZXIodC5zaW5lLnNlZWQpOk1hdGguZmxvb3IoTigpKjFlOSksdC5zaW5lLm1pbkh6PWwoTnVtYmVyKHQuc2luZS5taW5Ieil8fDEwMCwyMCwxZTMpLHQuc2luZS5tYXhIej1sKE51bWJlcih0LnNpbmUubWF4SHopfHwzMDAsKHQuc2luZS5taW5Ienx8MTAwKSsxLDJlMyksdC5zaW5lLm51bU1pbj1NYXRoLm1heCgxLE1hdGguZmxvb3IoTnVtYmVyKHQuc2luZS5udW1NaW4pfHwzKSksdC5zaW5lLm51bU1heD1NYXRoLm1heCh0LnNpbmUubnVtTWluLE1hdGguZmxvb3IoTnVtYmVyKHQuc2luZS5udW1NYXgpfHw2KSksdC5zaW5lLmdhaW5NdWx0PWwoTnVtYmVyKHQuc2luZS5nYWluTXVsdCl8fDEuOCwuMSwxMCksdH1mdW5jdGlvbiBMaShlLG4sdD17fSl7Y29uc3QgYT0icmlzZSIscz17a2luZDoia2luZCIsInNpbmUuc2VlZCI6InNpbmUuc2VlZCIsInNpbmUubWluSHoiOiJzaW5lLm1pbkh6Iiwic2luZS5tYXhIeiI6InNpbmUubWF4SHoiLCJzaW5lLm51bU1pbiI6InNpbmUubnVtTWluIiwic2luZS5udW1NYXgiOiJzaW5lLm51bU1heCIsInNpbmUuZ2Fpbk11bHQiOiJzaW5lLmdhaW5NdWx0IiwiZmlsdGVyLnR5cGUiOiJmaWx0ZXIudHlwZSIsImZpbHRlci5zdGFydEh6IjoiZmlsdGVyLnN0YXJ0SHoiLCJmaWx0ZXIuZW5kSHoiOiJmaWx0ZXIuZW5kSHoiLCJmaWx0ZXIucSI6ImZpbHRlci5xIiwidm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjoidm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIiwidm9pY2VTcGVjaWZpYy50ZW1wb0JwbSI6InZvaWNlU3BlY2lmaWMudGVtcG9CcG0iLCJ2b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjoidm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCIsInZvaWNlU3BlY2lmaWMudGFpbFNlY29uZHMiOiJ2b2ljZVNwZWNpZmljLnRhaWxTZWNvbmRzIn0sbT1lLmNyZWF0ZUdhaW4oKTttLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxlLmN1cnJlbnRUaW1lKTtjb25zdCBwPWUuY3JlYXRlR2FpbigpO3RyeXtwLmdhaW4uc2V0VmFsdWVBdFRpbWUoMCxlLmN1cnJlbnRUaW1lKX1jYXRjaHtwLmdhaW4udmFsdWU9MH1sZXQgUz1rYShocygpLG4pO2NvbnN0IFA9KCk9PkZ0KFMudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcHx8LjEyNSk7bGV0IE09W107ZnVuY3Rpb24gVChjLGQpe2NvbnN0IGc9TWF0aC5tYXgoMCxNYXRoLnJvdW5kKChkLWUuY3VycmVudFRpbWUpKjFlMykrMTIwKTtzZXRUaW1lb3V0KCgpPT57dHJ5e2Mubm9kZXMuZm9yRWFjaCh1PT57dHJ5e3UuZGlzY29ubmVjdCgpfWNhdGNoe319KX1jYXRjaHt9TT1NLmZpbHRlcih1PT51IT09Yyl9LGcpfWZ1bmN0aW9uIEcoYyx7ZHVyYXRpb25TZWM6ZCxraW5kOmd9PXt9KXtjb25zdCB1PXR5cGVvZiBjPT0ibnVtYmVyIj9jOmUuY3VycmVudFRpbWUrLjAxLGI9UyxoPVAoKSxmPWwoTnVtYmVyKGQpfHw0KmgsLjEsMTIpO3JldHVybiBTdHJpbmcoZ3x8Yi5raW5kfHwibm9pc2UiKS50b0xvd2VyQ2FzZSgpPT09InNpbmUiP0wodSxmLGIpOkUodSxmLGIpfWZ1bmN0aW9uIEUoYyxkLGcpe2NvbnN0IHU9TWF0aC5tYXgoMSxNYXRoLmZsb29yKGUuc2FtcGxlUmF0ZSooZCtnLnZvaWNlU3BlY2lmaWMudGFpbFNlY29uZHMrLjA0KSkpLGI9ZS5jcmVhdGVCdWZmZXIoMSx1LGUuc2FtcGxlUmF0ZSksaD1iLmdldENoYW5uZWxEYXRhKDApO2ZvcihsZXQgaz0wO2s8dTtrKyspaFtrXT1OKCkqMi0xO2NvbnN0IGY9ZS5jcmVhdGVCdWZmZXJTb3VyY2UoKTtmLmJ1ZmZlcj1iLGYubG9vcD0hMTtjb25zdCB5PWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7dHJ5e3kudHlwZT1nLmZpbHRlci50eXBlfWNhdGNoe310cnl7eS5RLnNldFZhbHVlQXRUaW1lKGcuZmlsdGVyLnEsYyl9Y2F0Y2h7fWNvbnN0IF89bChnLmZpbHRlci5zdGFydEh6LDIwLDE2ZTMpLEg9bChnLmZpbHRlci5lbmRIeiw1MCwyZTQpO3RyeXt5LmZyZXF1ZW5jeS5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoYykseS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoTWF0aC5tYXgoMSxfKSxjKTt0cnl7eS5mcmVxdWVuY3kuZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShNYXRoLm1heCgxLEgpLGMrZCl9Y2F0Y2h7eS5mcmVxdWVuY3kubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoSCxjK2QpfX1jYXRjaHt0cnl7eS5mcmVxdWVuY3kudmFsdWU9SH1jYXRjaHt9fWNvbnN0IFY9ZS5jcmVhdGVHYWluKCk7Vi5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsYyk7Y29uc3QgUT1sKGcudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluLDAsMSk7dHJ5e2NvbnN0IGs9TWF0aC5tYXgoMmUtNCxRKTt0cnl7Vi5nYWluLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhjKX1jYXRjaHt9Vi5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsYyk7Y29uc3QgQT0yNTYsej0zK04oKSoyLEQ9bmV3IEZsb2F0MzJBcnJheShBKSxVPTFlLTQ7Zm9yKGxldCBSPTA7UjxBO1IrKyl7Y29uc3QgST1SLyhBLTEpLGo9TWF0aC5wb3coSSx6KTtEW1JdPVUrKGstVSkqan10cnl7Vi5nYWluLnNldFZhbHVlQ3VydmVBdFRpbWUoRCxjLGQpfWNhdGNoe3RyeXtWLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoayxjK2QpfWNhdGNoe319Vi5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMWUtNCxjK2QrZy52b2ljZVNwZWNpZmljLnRhaWxTZWNvbmRzKX1jYXRjaHt9Zi5jb25uZWN0KHkpLHkuY29ubmVjdChWKSxWLmNvbm5lY3QobSk7dHJ5e1YuY29ubmVjdChwKX1jYXRjaHt9Y29uc3QgJD1jK2QrZy52b2ljZVNwZWNpZmljLnRhaWxTZWNvbmRzKy4wMjt0cnl7Zi5zdGFydChjKX1jYXRjaHt9dHJ5e2Yuc3RvcCgkKX1jYXRjaHt9Y29uc3QgcT17bm9kZXM6W2YseSxWXX07TS5wdXNoKHEpLFQocSwkKX1mdW5jdGlvbiBMKGMsZCxnKXt2YXIgUixJLGosc2UsaGUsZWU7Y29uc3QgdT1NYXRoLm1heCgxLE1hdGguZmxvb3IoTnVtYmVyKChSPWc9PW51bGw/dm9pZCAwOmcuc2luZSk9PW51bGw/dm9pZCAwOlIubnVtTWluKXx8MykpLGI9TWF0aC5tYXgodSxNYXRoLmZsb29yKE51bWJlcigoST1nPT1udWxsP3ZvaWQgMDpnLnNpbmUpPT1udWxsP3ZvaWQgMDpJLm51bU1heCl8fDYpKSxoPWwoTnVtYmVyKChqPWc9PW51bGw/dm9pZCAwOmcuc2luZSk9PW51bGw/dm9pZCAwOmoubWluSHopfHwxMDAsMjAsMWUzKSxmPWwoTnVtYmVyKChzZT1nPT1udWxsP3ZvaWQgMDpnLnNpbmUpPT1udWxsP3ZvaWQgMDpzZS5tYXhIeil8fDMwMCxoKzEsMmUzKSx5PU51bWJlcigoaGU9Zz09bnVsbD92b2lkIDA6Zy5zaW5lKT09bnVsbD92b2lkIDA6aGUuc2VlZCl8fE1hdGguZmxvb3IoTigpKjFlOSk7ZnVuY3Rpb24gXyhYLGNlKXtjb25zdCBLPU1hdGguc2luKChYK2NlKjc4LjIzMykqMTIuOTg5OCkqNDM3NTguNTQ1MyxhZT1LLU1hdGguZmxvb3IoSyk7cmV0dXJuIGFlPDA/YWUrMTphZX1jb25zdCBIPXUrTWF0aC5mbG9vcihfKHksMCkqKGItdSsxKSksVj1YPT42OSsxMipNYXRoLmxvZzIoTWF0aC5tYXgoMWUtNixYLzQ0MCkpLFE9WD0+NDQwKk1hdGgucG93KDIsKFgtNjkpLzEyKSwkPVg9Pk1hdGgubWF4KGgsTWF0aC5taW4oZixYKSkscT1YPT57Y29uc3QgY2U9TWF0aC5yb3VuZChWKFgpKTtyZXR1cm4gJChRKGNlKSl9LGs9ZS5jcmVhdGVHYWluKCk7ay5nYWluLnNldFZhbHVlQXRUaW1lKDFlLTQsYyk7Y29uc3QgQT1sKGcudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluLDAsMSk7dHJ5e2NvbnN0IFg9bChOdW1iZXIoKGVlPWc9PW51bGw/dm9pZCAwOmcuc2luZSk9PW51bGw/dm9pZCAwOmVlLmdhaW5NdWx0KXx8MS44LC4xLDEwKSxjZT1NYXRoLm1heCgyZS00LE1hdGgubWluKC45LEEqWCkpO3RyeXtrLmdhaW4uY2FuY2VsU2NoZWR1bGVkVmFsdWVzKGMpfWNhdGNoe31rLmdhaW4uc2V0VmFsdWVBdFRpbWUoMWUtNCxjKTtjb25zdCBLPTI1NixhZT0zK04oKSoxLGZlPW5ldyBGbG9hdDMyQXJyYXkoSyksbWU9MWUtNDtmb3IobGV0IHBlPTA7cGU8SztwZSsrKXtjb25zdCBvZT1wZS8oSy0xKSxCPU1hdGgucG93KG9lLGFlKTtmZVtwZV09bWUrKGNlLW1lKSpCfXRyeXtrLmdhaW4uc2V0VmFsdWVDdXJ2ZUF0VGltZShmZSxjLGQpfWNhdGNoe3RyeXtrLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoY2UsYytkKX1jYXRjaHt9fWsuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDFlLTQsYytkK2cudm9pY2VTcGVjaWZpYy50YWlsU2Vjb25kcyl9Y2F0Y2h7fWsuY29ubmVjdChtKTt0cnl7ay5jb25uZWN0KHApfWNhdGNoe31jb25zdCB6PVtrXTtmb3IobGV0IFg9MDtYPEg7WCsrKXtjb25zdCBjZT1lLmNyZWF0ZU9zY2lsbGF0b3IoKTt0cnl7Y2UudHlwZT0ic2luZSJ9Y2F0Y2h7fWNvbnN0IEs9aCtfKHksWCsxKSooZi1oKTtsZXQgYWU9cShLKTtjb25zdCBmZT1NYXRoLnJvdW5kKFYoYWUpKSxtZT1NYXRoLnJvdW5kKFYoZikpLHBlPTIrTWF0aC5mbG9vcihfKHksWCsxMSkqNiksb2U9TWF0aC5taW4obWUsZmUrcGUrTWF0aC5mbG9vcihfKHksWCsyMSkqMykpO2xldCBCPSQoUShvZSkpO0I9cShCKTtjb25zdCB2PV8oeSxYKzMxKSoxMC01LEY9ZS5jcmVhdGVHYWluKCk7dHJ5e2NlLmRldHVuZS5zZXRWYWx1ZUF0VGltZSh2LGMpfWNhdGNoe31jb25zdCBXPWUuY3JlYXRlR2FpbigpLFk9TWF0aC5tYXgoLjEyLDEuMjUvKEgrLjQpKTt0cnl7Vy5nYWluLnNldFZhbHVlQXRUaW1lKFksYyl9Y2F0Y2h7fXRyeXtjZS5mcmVxdWVuY3kuY2FuY2VsU2NoZWR1bGVkVmFsdWVzKGMpLGNlLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZShNYXRoLm1heCgxLGFlKSxjKTt0cnl7Y2UuZnJlcXVlbmN5LmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoTWF0aC5tYXgoMSxCKSxjK2QpfWNhdGNoe2NlLmZyZXF1ZW5jeS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShCLGMrZCl9fWNhdGNoe31jZS5jb25uZWN0KFcpLFcuY29ubmVjdChrKTt0cnl7Y2Uuc3RhcnQoYytYKi4wMDEpfWNhdGNoe316LnB1c2goY2UsVyxGKX1jb25zdCBEPWMrZCtnLnZvaWNlU3BlY2lmaWMudGFpbFNlY29uZHMrLjAyO2Zvcihjb25zdCBYIG9mIHopdHJ5e3R5cGVvZiBYLnN0b3A9PSJmdW5jdGlvbiImJlguc3RvcChEKX1jYXRjaHt9Y29uc3QgVT17bm9kZXM6en07TS5wdXNoKFUpLFQoVSxEKX1mdW5jdGlvbiB4KGMpe2NvbnN0IGQ9dHlwZW9mIGM9PSJudW1iZXIiP2M6ZS5jdXJyZW50VGltZSsuMDAxO00uc2xpY2UoKS5mb3JFYWNoKGc9Pnt0cnl7Y29uc3QgdT1nLm5vZGVzLmZpbmQoYj0+dHlwZW9mIGIuc3RvcD09ImZ1bmN0aW9uIik7dSYmdS5zdG9wKGQrLjAxKX1jYXRjaHt9fSl9ZnVuY3Rpb24gTyhjKXtsZXQgZD17fTtpZighKGMmJnR5cGVvZiBjPT0ib2JqZWN0IikpcmV0dXJuO2NvbnN0IHU9T2JqZWN0LmtleXMoYykuc29tZShoPT5oLmluY2x1ZGVzKCIuIikpLGI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsYSk7aWYodSlkPXN0KGEsYyxzKTtlbHNlIGlmKGImJnR5cGVvZiBjW2FdPT0ib2JqZWN0Iil7Y29uc3QgaD1xdChjW2FdLFthXSk7ZD1zdChhLGgscyl9ZWxzZSBkPWM7Uz1rYShTLGR8fHt9KTt0cnl7Y29uc3QgaD1jfHx7fTtsZXQgZj1udWxsO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLCJyaXNlLnNlbmRSZXZlcmIiKT9mPU51bWJlcihoWyJyaXNlLnNlbmRSZXZlcmIiXSk6YiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGgucmlzZXx8e30sInNlbmRSZXZlcmIiKSYmKGY9TnVtYmVyKGgucmlzZS5zZW5kUmV2ZXJiKSksTnVtYmVyLmlzRmluaXRlKGYpKXtjb25zdCB5PU1hdGgubWF4KDAsTWF0aC5taW4oMSxmKSk7dHJ5e3AuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoeSxlLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7cC5nYWluLnZhbHVlPXl9fX1jYXRjaHt9fWZ1bmN0aW9uIHcoKXtTPWthKGhzKCkse30pO2NvbnN0IGM9YXQoYSxTLHMpO3JldHVybntuZXN0ZWQ6aXQoUyksZmxhdDpjfX1mdW5jdGlvbiBvKCl7cmV0dXJuIGF0KGEsUyxzKX1mdW5jdGlvbiBDKCl7dHJ5e3goKX1jYXRjaHt9dHJ5e20uZGlzY29ubmVjdCgpfWNhdGNoe310cnl7cC5kaXNjb25uZWN0KCl9Y2F0Y2h7fU09W119cmV0dXJue291dHB1dDptLHNlbmRSZXZlcmI6cCx0cmlnZ2VyOkcsc3RvcDp4LHVwZGF0ZVBhcmFtczpPLHJlZ2VuZXJhdGVQYXJhbXM6dyxnZXRGbGF0UGFyYW1zOm8sZGlzcG9zZTpDfX1mdW5jdGlvbiBOaShlKXtjb25zdCBuPWUuY3JlYXRlR2FpbigpLHQ9ZS5jcmVhdGVHYWluKCk7dC5nYWluLnZhbHVlPS44O2NvbnN0IGE9MjAwLHM9NGUzLG09ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTttLnR5cGU9Imxvd3Bhc3MiLG0uZnJlcXVlbmN5LnZhbHVlPWEsbS5RLnZhbHVlPS43MDc7Y29uc3QgcD1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3AudHlwZT0ibG93cGFzcyIscC5mcmVxdWVuY3kudmFsdWU9YSxwLlEudmFsdWU9LjcwNztjb25zdCBTPWUuY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7Uy50aHJlc2hvbGQudmFsdWU9LTEyLFMua25lZS52YWx1ZT02LFMucmF0aW8udmFsdWU9MyxTLmF0dGFjay52YWx1ZT0uMDEsUy5yZWxlYXNlLnZhbHVlPS4yNTtjb25zdCBQPWUuY3JlYXRlR2FpbigpO1AuZ2Fpbi52YWx1ZT1idCgwKTtjb25zdCBNPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7TS50eXBlPSJoaWdocGFzcyIsTS5mcmVxdWVuY3kudmFsdWU9YSxNLlEudmFsdWU9LjcwNztjb25zdCBUPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7VC50eXBlPSJoaWdocGFzcyIsVC5mcmVxdWVuY3kudmFsdWU9YSxULlEudmFsdWU9LjcwNztjb25zdCBHPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Ry50eXBlPSJsb3dwYXNzIixHLmZyZXF1ZW5jeS52YWx1ZT1zLEcuUS52YWx1ZT0uNzA3O2NvbnN0IEU9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtFLnR5cGU9Imxvd3Bhc3MiLEUuZnJlcXVlbmN5LnZhbHVlPXMsRS5RLnZhbHVlPS43MDc7Y29uc3QgTD1lLmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpO0wudGhyZXNob2xkLnZhbHVlPS00MCxMLmtuZWUudmFsdWU9NixMLnJhdGlvLnZhbHVlPTIuNSxMLmF0dGFjay52YWx1ZT0uMDA1LEwucmVsZWFzZS52YWx1ZT0uMjtjb25zdCB4PWUuY3JlYXRlR2FpbigpO3guZ2Fpbi52YWx1ZT1idCg2KTtjb25zdCBPPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Ty50eXBlPSJoaWdocGFzcyIsTy5mcmVxdWVuY3kudmFsdWU9cyxPLlEudmFsdWU9LjcwNztjb25zdCB3PWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7dy50eXBlPSJoaWdocGFzcyIsdy5mcmVxdWVuY3kudmFsdWU9cyx3LlEudmFsdWU9LjcwNztjb25zdCBvPWUuY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7by50aHJlc2hvbGQudmFsdWU9LTMwLG8ua25lZS52YWx1ZT02LG8ucmF0aW8udmFsdWU9MixvLmF0dGFjay52YWx1ZT0uMDAzLG8ucmVsZWFzZS52YWx1ZT0uMTU7Y29uc3QgQz1lLmNyZWF0ZUdhaW4oKTtDLmdhaW4udmFsdWU9YnQoNik7Y29uc3QgYz1lLmNyZWF0ZUdhaW4oKTtjLmdhaW4udmFsdWU9MSxuLmNvbm5lY3QobSksbS5jb25uZWN0KHApLHAuY29ubmVjdChTKSxTLmNvbm5lY3QoUCksUC5jb25uZWN0KGMpLG4uY29ubmVjdChNKSxNLmNvbm5lY3QoVCksVC5jb25uZWN0KEcpLEcuY29ubmVjdChFKSxFLmNvbm5lY3QoTCksTC5jb25uZWN0KHgpLHguY29ubmVjdChjKSxuLmNvbm5lY3QoTyksTy5jb25uZWN0KHcpLHcuY29ubmVjdChvKSxvLmNvbm5lY3QoQyksQy5jb25uZWN0KGMpO2NvbnN0IGQ9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtkLnR5cGU9ImhpZ2hzaGVsZiIsZC5mcmVxdWVuY3kudmFsdWU9NWUzO3RyeXtkLlEudmFsdWU9LjcwN31jYXRjaHt9ZC5nYWluLnZhbHVlPTAsYy5jb25uZWN0KHQpLHQuY29ubmVjdChkKSxkLmNvbm5lY3QoZS5kZXN0aW5hdGlvbik7ZnVuY3Rpb24gZygpe3RyeXtuLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e20uZGlzY29ubmVjdCgpfWNhdGNoe310cnl7cC5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtTLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e1AuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7TS5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtULmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e0cuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7RS5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtMLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e3guZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Ty5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXt3LmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e28uZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Qy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtkLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e2MuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7dC5kaXNjb25uZWN0KCl9Y2F0Y2h7fX1yZXR1cm57bWFzdGVyQnVzSW5wdXQ6bixtYXN0ZXJCdXNPdXRwdXQ6dCxkaXNwb3NlOmcsdG9uZUhpZ2hTaGVsZjpkLG11bHRpYmFuZDp7Y3Jvc3NvdmVyczp7Z2V0IGxvd0h6KCl7cmV0dXJuIG0uZnJlcXVlbmN5LnZhbHVlfSxzZXQgbG93SHoodSl7dHJ5e20uZnJlcXVlbmN5LnZhbHVlPXUscC5mcmVxdWVuY3kudmFsdWU9dX1jYXRjaHt9fSxnZXQgaGlnaEh6KCl7cmV0dXJuIE8uZnJlcXVlbmN5LnZhbHVlfSxzZXQgaGlnaEh6KHUpe3RyeXtPLmZyZXF1ZW5jeS52YWx1ZT11LHcuZnJlcXVlbmN5LnZhbHVlPXUsRy5mcmVxdWVuY3kudmFsdWU9dSxFLmZyZXF1ZW5jeS52YWx1ZT11fWNhdGNoe319fSxsb3c6e2NvbXA6UyxnYWluOlB9LG1pZDp7Y29tcDpMLGdhaW46eH0saGlnaDp7Y29tcDpvLGdhaW46Q319fX1mdW5jdGlvbiBFaShlKXtjb25zdCBuPWUuY3JlYXRlR2FpbigpLHQ9ZS5jcmVhdGVHYWluKCk7dC5nYWluLnZhbHVlPS44O2NvbnN0IGE9MjAwLHM9NmUzLG09ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTttLnR5cGU9Imxvd3Bhc3MiLG0uZnJlcXVlbmN5LnZhbHVlPWEsbS5RLnZhbHVlPS43MDc7Y29uc3QgcD1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3AudHlwZT0ibG93cGFzcyIscC5mcmVxdWVuY3kudmFsdWU9YSxwLlEudmFsdWU9LjcwNztjb25zdCBTPWUuY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7Uy50aHJlc2hvbGQudmFsdWU9LTI1LFMua25lZS52YWx1ZT02LFMucmF0aW8udmFsdWU9MyxTLmF0dGFjay52YWx1ZT0uMDEsUy5yZWxlYXNlLnZhbHVlPS4yNTtjb25zdCBQPWUuY3JlYXRlR2FpbigpO1AuZ2Fpbi52YWx1ZT1idCgwKTtjb25zdCBNPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7TS50eXBlPSJoaWdocGFzcyIsTS5mcmVxdWVuY3kudmFsdWU9YSxNLlEudmFsdWU9LjcwNztjb25zdCBUPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7VC50eXBlPSJoaWdocGFzcyIsVC5mcmVxdWVuY3kudmFsdWU9YSxULlEudmFsdWU9LjcwNztjb25zdCBHPWUuY3JlYXRlQmlxdWFkRmlsdGVyKCk7Ry50eXBlPSJsb3dwYXNzIixHLmZyZXF1ZW5jeS52YWx1ZT1zLEcuUS52YWx1ZT0uNzA3O2NvbnN0IEU9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtFLnR5cGU9Imxvd3Bhc3MiLEUuZnJlcXVlbmN5LnZhbHVlPXMsRS5RLnZhbHVlPS43MDc7Y29uc3QgTD1lLmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpO0wudGhyZXNob2xkLnZhbHVlPS0zNSxMLmtuZWUudmFsdWU9NixMLnJhdGlvLnZhbHVlPTIuNSxMLmF0dGFjay52YWx1ZT0uMDA1LEwucmVsZWFzZS52YWx1ZT0uMDI7Y29uc3QgeD1lLmNyZWF0ZUdhaW4oKTt4LmdhaW4udmFsdWU9YnQoMyk7Y29uc3QgTz1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO08udHlwZT0iaGlnaHBhc3MiLE8uZnJlcXVlbmN5LnZhbHVlPXMsTy5RLnZhbHVlPS43MDc7Y29uc3Qgdz1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3cudHlwZT0iaGlnaHBhc3MiLHcuZnJlcXVlbmN5LnZhbHVlPXMsdy5RLnZhbHVlPS43MDc7Y29uc3Qgbz1lLmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpO28udGhyZXNob2xkLnZhbHVlPS0yMCxvLmtuZWUudmFsdWU9NixvLnJhdGlvLnZhbHVlPTIsby5hdHRhY2sudmFsdWU9LjAwMyxvLnJlbGVhc2UudmFsdWU9LjE1O2NvbnN0IEM9ZS5jcmVhdGVHYWluKCk7Qy5nYWluLnZhbHVlPWJ0KDUpO2NvbnN0IGM9ZS5jcmVhdGVHYWluKCk7Yy5nYWluLnZhbHVlPTE7Y29uc3QgZD1lLmNyZWF0ZVdhdmVTaGFwZXIoKTtkLmN1cnZlPUlpKDEpO3RyeXtkLm92ZXJzYW1wbGU9Im5vbmUifWNhdGNoe31jb25zdCBnPWUuY3JlYXRlR2FpbigpO2cuZ2Fpbi52YWx1ZT0uMDU7Y29uc3QgdT1lLmNyZWF0ZUdhaW4oKTt1LmdhaW4udmFsdWU9Ljk1O2NvbnN0IGI9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtiLnR5cGU9ImhpZ2hzaGVsZiIsYi5mcmVxdWVuY3kudmFsdWU9NWUzO3RyeXtiLlEudmFsdWU9LjcwN31jYXRjaHt9Yi5nYWluLnZhbHVlPTEuNTtjb25zdCBoPWUuY3JlYXRlV2F2ZVNoYXBlcigpO2guY3VydmU9amkoOSk7Y29uc3QgZj1lLmNyZWF0ZUdhaW4oKTtmLmdhaW4udmFsdWU9LjE7Y29uc3QgeT1lLmNyZWF0ZUdhaW4oKTt5LmdhaW4udmFsdWU9Ljk7Y29uc3QgXz1lLmNyZWF0ZUdhaW4oKTtfLmdhaW4udmFsdWU9MSxuLmNvbm5lY3QobSksbS5jb25uZWN0KHApLHAuY29ubmVjdChTKSxTLmNvbm5lY3QoUCksUC5jb25uZWN0KGMpLG4uY29ubmVjdChNKSxNLmNvbm5lY3QoVCksVC5jb25uZWN0KEcpLEcuY29ubmVjdChFKSxFLmNvbm5lY3QoTCksTC5jb25uZWN0KHgpLHguY29ubmVjdChjKSxuLmNvbm5lY3QoTyksTy5jb25uZWN0KHcpLHcuY29ubmVjdChvKSxvLmNvbm5lY3QoQyksQy5jb25uZWN0KGMpO2NvbnN0IEg9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTtILnR5cGU9ImhpZ2hzaGVsZiIsSC5mcmVxdWVuY3kudmFsdWU9NWUzO3RyeXtILlEudmFsdWU9LjcwN31jYXRjaHt9SC5nYWluLnZhbHVlPTA7Y29uc3QgVj1lLmNyZWF0ZUdhaW4oKTtWLmdhaW4udmFsdWU9YnQoMiksYy5jb25uZWN0KHUpLHUuY29ubmVjdCh0KSxjLmNvbm5lY3QoZCksZC5jb25uZWN0KGcpLGcuY29ubmVjdCh0KSx0LmNvbm5lY3QoeSkseS5jb25uZWN0KF8pLHQuY29ubmVjdChoKSxoLmNvbm5lY3QoZiksZi5jb25uZWN0KF8pLF8uY29ubmVjdChiKSxiLmNvbm5lY3QoSCksSC5jb25uZWN0KFYpLFYuY29ubmVjdChlLmRlc3RpbmF0aW9uKTtmdW5jdGlvbiBRKCl7dHJ5e24uZGlzY29ubmVjdCgpfWNhdGNoe310cnl7bS5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtwLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e1MuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7UC5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtNLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e1QuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Ry5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtFLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e0wuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7eC5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtPLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e3cuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7by5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtDLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e2IuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7aC5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtmLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e3kuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Xy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtILmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e2MuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7dC5kaXNjb25uZWN0KCl9Y2F0Y2h7fX1yZXR1cm57bWFzdGVyQnVzSW5wdXQ6bixtYXN0ZXJCdXNPdXRwdXQ6dCxkaXNwb3NlOlEsc2F0dXJhdGlvbjpkLGJpdENydXNoZXI6aCx0b25lSGlnaFNoZWxmOkgsbXVsdGliYW5kOntjcm9zc292ZXJzOntnZXQgbG93SHooKXtyZXR1cm4gbS5mcmVxdWVuY3kudmFsdWV9LHNldCBsb3dIeigkKXt0cnl7bS5mcmVxdWVuY3kudmFsdWU9JCxwLmZyZXF1ZW5jeS52YWx1ZT0kfWNhdGNoe319LGdldCBoaWdoSHooKXtyZXR1cm4gTy5mcmVxdWVuY3kudmFsdWV9LHNldCBoaWdoSHooJCl7dHJ5e08uZnJlcXVlbmN5LnZhbHVlPSQsdy5mcmVxdWVuY3kudmFsdWU9JCxHLmZyZXF1ZW5jeS52YWx1ZT0kLEUuZnJlcXVlbmN5LnZhbHVlPSR9Y2F0Y2h7fX19LGxvdzp7Y29tcDpTLGdhaW46UH0sbWlkOntjb21wOkwsZ2Fpbjp4fSxoaWdoOntjb21wOm8sZ2FpbjpDfX19fWZ1bmN0aW9uIElpKGUpe2NvbnN0IG49TWF0aC5tYXgoMSxOdW1iZXIoZSl8fDMpLHQ9NDQxMDAsYT1uZXcgRmxvYXQzMkFycmF5KHQpO2ZvcihsZXQgcz0wO3M8dDtzKyspe2NvbnN0IG09cyoyL3QtMTthW3NdPU1hdGgudGFuaChuKm0pL01hdGgudGFuaChuKX1yZXR1cm4gYX1mdW5jdGlvbiBqaShlKXtjb25zdCB0PW5ldyBGbG9hdDMyQXJyYXkoNDQxMDApLGE9TWF0aC5tYXgoMSxNYXRoLm1pbigxNixNYXRoLmZsb29yKE51bWJlcihlKXx8OCkpKSxtPTIvKE1hdGgucG93KDIsYSktMSk7Zm9yKGxldCBwPTA7cDw0NDEwMDtwKyspe2NvbnN0IFM9cCoyLzQ0MTAwLTEsUD1NYXRoLnJvdW5kKFMvbSkqbTt0W3BdPU1hdGgubWF4KC0xLE1hdGgubWluKDEsUCkpfXJldHVybiB0fWZ1bmN0aW9uIFFpKGU9e30pe3RyeXtyZXR1cm4gU3RyaW5nKGUmJmUuc2lkZSkudG9VcHBlckNhc2UoKT09PSJCIn1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gJGkoZSxuPXt9KXtyZXR1cm4gUWkobik/RWkoZSk6TmkoZSl9ZnVuY3Rpb24gSnQoZSxuLHQpe3JldHVybiBNYXRoLm1pbih0LE1hdGgubWF4KG4sZSkpfWZ1bmN0aW9uIF9hKGUpe2NvbnN0IG49TnVtYmVyKGUpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUobik/TWF0aC5wb3coMTAsbi8yMCk6MX1mdW5jdGlvbiBkcyhlLG4sdD17fSl7Y29uc3QgYT1KdChOdW1iZXIobil8fDEuOCwuMDUsMzApLHM9ZS5zYW1wbGVSYXRlfHw0OGUzLG09TWF0aC5tYXgoMSxNYXRoLmZsb29yKHMqYSkpLHA9ZS5jcmVhdGVCdWZmZXIoMixtLHMpLFM9TWF0aC5tYXgoLjAwMSxhKSxQPXQubm9pc2VDb2xvcnx8IndoaXRlIixNPUp0KHQuc3RlcmVvU3ByZWFkPz8uMDIsMCwuMDUpO2ZvcihsZXQgVD0wO1Q8MjtUKyspe2NvbnN0IEc9cC5nZXRDaGFubmVsRGF0YShUKTtmb3IobGV0IEw9MDtMPG07TCsrKXtjb25zdCB4PUwvcyxPPU1hdGguZXhwKC14L1MpO2xldCB3PU4oKSoyLTE7aWYoUD09PSJwaW5rIj9HW0xdPSgoTD4wP0dbTC0xXTowKSooMS0uMDIpK3cqLjAyKSpPOkdbTF09dypPLE0+MCYmVD09PTEmJkw+MCl7Y29uc3Qgbz1HW0wtMV07R1tMXT1HW0xdKigxLU0pK28qTX19Y29uc3QgRT1NYXRoLm1pbigyNTYsbSk7Zm9yKGxldCBMPTA7TDxFO0wrKyl7Y29uc3QgeD0oRS1MKS9FO0dbbS0xLUxdKj14Knh9fXJldHVybiBwfWZ1bmN0aW9uIHlzKGUpe2NvbnN0IG49ZSx0PW4uY3JlYXRlR2FpbigpLGE9bi5jcmVhdGVHYWluKCk7dC5nYWluLnZhbHVlPTEsYS5nYWluLnZhbHVlPTE7Y29uc3Qgcz1uLmNyZWF0ZUdhaW4oKTtzLmdhaW4udmFsdWU9X2EoNik7Y29uc3QgbT1uLmNyZWF0ZURlbGF5KDEpO20uZGVsYXlUaW1lLnZhbHVlPS4wMjg7Y29uc3QgcD1uLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3RyeXtwLnR5cGU9ImhpZ2hwYXNzIixwLmZyZXF1ZW5jeS52YWx1ZT02MCxwLlEudmFsdWU9LjcwN31jYXRjaHt9Y29uc3QgUz1uLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3RyeXtTLnR5cGU9ImhpZ2hzaGVsZiIsUy5mcmVxdWVuY3kudmFsdWU9MzgwMCxTLmdhaW4udmFsdWU9LTh9Y2F0Y2h7fWNvbnN0IFA9bi5jcmVhdGVHYWluKCk7UC5nYWluLnZhbHVlPTE7bGV0IE09e2RlY2F5OjIuNSxwcmVEZWxheU1zOjI4LG1ha2VVcERiOjYsbm9pc2VDb2xvcjoid2hpdGUiLHN0ZXJlb1NwcmVhZDouMDIsaGlnaFNoZWxmSHo6MzgwMCxoaWdoU2hlbGZHYWluRGI6LTh9LFQ9ITEsRz1uLmNyZWF0ZUNvbnZvbHZlcigpO3RyeXtHLm5vcm1hbGl6ZT0hMH1jYXRjaHt9dHJ5e0cuYnVmZmVyPWRzKG4sTS5kZWNheSx7bm9pc2VDb2xvcjpNLm5vaXNlQ29sb3Isc3RlcmVvU3ByZWFkOk0uc3RlcmVvU3ByZWFkfSl9Y2F0Y2h7fXQuY29ubmVjdChzKSxzLmNvbm5lY3QobSksbS5jb25uZWN0KEcpLEcuY29ubmVjdChwKS5jb25uZWN0KFMpLmNvbm5lY3QoUCkuY29ubmVjdChhKTtmdW5jdGlvbiBFKHcpe1Q9ISF3O2NvbnN0IG89VD8wOjE7dHJ5e1AuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUobyxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7UC5nYWluLnZhbHVlPW99fWZ1bmN0aW9uIEwodz17fSl7Y29uc3Qgbz1OdW1iZXIuaXNGaW5pdGUody5kZWNheSk/SnQody5kZWNheSwuMDUsMzApOk0uZGVjYXksQz1OdW1iZXIuaXNGaW5pdGUody5wcmVEZWxheU1zKT9KdCh3LnByZURlbGF5TXMsMCwxZTMpOk0ucHJlRGVsYXlNcyxjPU51bWJlci5pc0Zpbml0ZSh3Lm1ha2VVcERiKT9KdCh3Lm1ha2VVcERiLC0yNCwyNCk6TS5tYWtlVXBEYixkPXR5cGVvZiB3Lm5vaXNlQ29sb3I9PSJzdHJpbmciP3cubm9pc2VDb2xvcjpNLm5vaXNlQ29sb3IsZz1OdW1iZXIuaXNGaW5pdGUody5zdGVyZW9TcHJlYWQpP0p0KHcuc3RlcmVvU3ByZWFkLDAsLjA1KTpNLnN0ZXJlb1NwcmVhZCx1PU51bWJlci5pc0Zpbml0ZSh3LmhpZ2hTaGVsZkh6KT9KdCh3LmhpZ2hTaGVsZkh6LDUwMCwyZTQpOk0uaGlnaFNoZWxmSHosYj1OdW1iZXIuaXNGaW5pdGUody5oaWdoU2hlbGZHYWluRGIpP0p0KHcuaGlnaFNoZWxmR2FpbkRiLC0zMCwwKTpNLmhpZ2hTaGVsZkdhaW5EYixoPW8hPT1NLmRlY2F5LGY9ZCE9PU0ubm9pc2VDb2xvcix5PWchPT1NLnN0ZXJlb1NwcmVhZDtNLmRlY2F5PW8sTS5wcmVEZWxheU1zPUMsTS5tYWtlVXBEYj1jLE0ubm9pc2VDb2xvcj1kLE0uc3RlcmVvU3ByZWFkPWcsTS5oaWdoU2hlbGZIej11LE0uaGlnaFNoZWxmR2FpbkRiPWI7dHJ5e20uZGVsYXlUaW1lLnNldFRhcmdldEF0VGltZSgoTS5wcmVEZWxheU1zfHwwKS8xZTMsbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe20uZGVsYXlUaW1lLnZhbHVlPShNLnByZURlbGF5TXN8fDApLzFlM310cnl7cy5nYWluLnNldFRhcmdldEF0VGltZShfYShNLm1ha2VVcERiKSxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7cy5nYWluLnZhbHVlPV9hKE0ubWFrZVVwRGIpfXRyeXtTLmZyZXF1ZW5jeS5zZXRUYXJnZXRBdFRpbWUoTS5oaWdoU2hlbGZIeixuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7dHJ5e1MuZnJlcXVlbmN5LnZhbHVlPU0uaGlnaFNoZWxmSHp9Y2F0Y2h7fX10cnl7Uy5nYWluLnNldFRhcmdldEF0VGltZShNLmhpZ2hTaGVsZkdhaW5EYixuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7dHJ5e1MuZ2Fpbi52YWx1ZT1NLmhpZ2hTaGVsZkdhaW5EYn1jYXRjaHt9fWlmKGh8fGZ8fHkpe2NvbnN0IF89bi5jcmVhdGVDb252b2x2ZXIoKTt0cnl7Xy5ub3JtYWxpemU9ITB9Y2F0Y2h7fXRyeXtfLmJ1ZmZlcj1kcyhuLE0uZGVjYXkse25vaXNlQ29sb3I6TS5ub2lzZUNvbG9yLHN0ZXJlb1NwcmVhZDpNLnN0ZXJlb1NwcmVhZH0pfWNhdGNoe31jb25zdCBIPUcsVj1uLmNyZWF0ZUdhaW4oKTtWLmdhaW4udmFsdWU9MCxtLmNvbm5lY3QoXyksXy5jb25uZWN0KFYpLmNvbm5lY3QocCk7Y29uc3QgUT1uLmN1cnJlbnRUaW1lKy4wMDUsJD0uMDY7dHJ5e1YuZ2Fpbi5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoUSksVi5nYWluLnNldFZhbHVlQXRUaW1lKDAsUSksVi5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKDEsUSskKX1jYXRjaHtWLmdhaW4udmFsdWU9MX1zZXRUaW1lb3V0KCgpPT57dHJ5e20uZGlzY29ubmVjdChIKX1jYXRjaHt9dHJ5e0guZGlzY29ubmVjdCgpfWNhdGNoe310cnl7SC5idWZmZXI9bnVsbH1jYXRjaHt9dHJ5e1YuZGlzY29ubmVjdCgpfWNhdGNoe319LE1hdGguY2VpbCgkKjFlMykrMjApLEc9X319ZnVuY3Rpb24geCgpe3RyeXt0LmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e2EuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7cy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXttLmRpc2Nvbm5lY3QoRyl9Y2F0Y2h7fXRyeXtHLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e3AuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Uy5kaXNjb25uZWN0KCl9Y2F0Y2h7fX1jb25zdCBPPXtpbnB1dDp0LG91dHB1dDphLHVwZGF0ZVBhcmFtczpMLGRpc3Bvc2U6eCxzZXRNdXRlZDpFfTt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIm11dGVkIix7Z2V0OigpPT5ULHNldDp3PT5FKCEhdyl9KX1jYXRjaHt9cmV0dXJuIE99ZnVuY3Rpb24gV3QoZSxuLHQpe2NvbnN0IGE9TnVtYmVyKGUpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUoYSk/TWF0aC5taW4odCxNYXRoLm1heChuLGEpKTpufWZ1bmN0aW9uIGdzKGUpe2NvbnN0IG49ZSx0PW4uY3JlYXRlR2FpbigpLGE9bi5jcmVhdGVHYWluKCk7dC5nYWluLnZhbHVlPTEsYS5nYWluLnZhbHVlPTE7Y29uc3Qgcz1uLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3RyeXtzLnR5cGU9ImhpZ2hwYXNzIixzLmZyZXF1ZW5jeS52YWx1ZT0xMjAscy5RLnZhbHVlPS43MDd9Y2F0Y2h7fWNvbnN0IG09bi5jcmVhdGVCaXF1YWRGaWx0ZXIoKTt0cnl7bS50eXBlPSJsb3dwYXNzIixtLmZyZXF1ZW5jeS52YWx1ZT0xNGUzLG0uUS52YWx1ZT0uNzA3fWNhdGNoe31jb25zdCBwPW4uY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKDIpLFM9bi5jcmVhdGVDaGFubmVsTWVyZ2VyKDIpLFA9MixNPW4uY3JlYXRlRGVsYXkoUCksVD1uLmNyZWF0ZURlbGF5KFApO00uZGVsYXlUaW1lLnZhbHVlPS4zLFQuZGVsYXlUaW1lLnZhbHVlPS4zO2NvbnN0IEc9bi5jcmVhdGVHYWluKCk7Ry5nYWluLnZhbHVlPS4zNTtjb25zdCBFPW4uY3JlYXRlR2FpbigpO0UuZ2Fpbi52YWx1ZT0uMzU7Y29uc3QgTD1uLmNyZWF0ZUdhaW4oKTtMLmdhaW4udmFsdWU9MDtjb25zdCB4PW4uY3JlYXRlR2FpbigpO3guZ2Fpbi52YWx1ZT0wO2NvbnN0IE89bi5jcmVhdGVHYWluKCk7Ty5nYWluLnZhbHVlPTE7Y29uc3Qgdz1uLmNyZWF0ZUdhaW4oKTt3LmdhaW4udmFsdWU9MSx0LmNvbm5lY3Qocykscy5jb25uZWN0KG0pLG0uY29ubmVjdChwKSxwLmNvbm5lY3QoTSwwKSxwLmNvbm5lY3QoVCwxKSxNLmNvbm5lY3QoRykuY29ubmVjdChNKSxULmNvbm5lY3QoRSkuY29ubmVjdChUKSxNLmNvbm5lY3QoeCkuY29ubmVjdChUKSxULmNvbm5lY3QoTCkuY29ubmVjdChNKSxNLmNvbm5lY3QoTykuY29ubmVjdChTLDAsMCksVC5jb25uZWN0KHcpLmNvbm5lY3QoUywwLDEpLFMuY29ubmVjdChhKTtsZXQgbz17bW9kZToibm9ybWFsIixmZWVkYmFjazouMzUsdGltZVNlYzouMyxtYXN0ZXJHYWluOi41LHN5bmNlZDohMSx0ZW1wb0JwbToxMjB9LEM9ITE7ZnVuY3Rpb24gYyhmLHkpe3RyeXtjb25zdCBIPTYwL1d0KHksMjAsMzAwKSxRPVs0LDIsMSwuNSwuMjUsLjEyNSwuMDYyNV0ubWFwKHo9PnoqSCksJD1RLm1hcCh6PT56KjEuNSkscT1RLmNvbmNhdCgkKS5maWx0ZXIoej0+ej49LjAyJiZ6PD0xLjUpO2lmKHEubGVuZ3RoPT09MClyZXR1cm4gV3QoZiwuMDIsMS41KTtsZXQgaz1xWzBdLEE9TWF0aC5hYnMoay1mKTtmb3IobGV0IHo9MTt6PHEubGVuZ3RoO3orKyl7Y29uc3QgRD1xW3pdLFU9TWF0aC5hYnMoRC1mKTtVPEEmJihrPUQsQT1VKX1yZXR1cm4ga31jYXRjaHtyZXR1cm4gV3QoZiwuMDIsMS41KX19ZnVuY3Rpb24gZCgpe2NvbnN0IGY9V3Qoby50aW1lU2VjLC4wMiwxLjUpLHk9by5zeW5jZWQ/YyhmLG8udGVtcG9CcG0pOmYsXz1XdChvLmZlZWRiYWNrLDAsLjk1KTt0cnl7TS5kZWxheVRpbWUuc2V0VGFyZ2V0QXRUaW1lKHksbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe00uZGVsYXlUaW1lLnZhbHVlPXl9dHJ5e1QuZGVsYXlUaW1lLnNldFRhcmdldEF0VGltZSh5LG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHtULmRlbGF5VGltZS52YWx1ZT15fXRyeXtHLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKF8sbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe0cuZ2Fpbi52YWx1ZT1ffXRyeXtFLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKF8sbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe0UuZ2Fpbi52YWx1ZT1ffWlmKG8ubW9kZT09PSJwaW5ncG9uZyIpe3RyeXtMLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKF8sbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe0wuZ2Fpbi52YWx1ZT1ffXRyeXt4LmdhaW4uc2V0VGFyZ2V0QXRUaW1lKF8sbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe3guZ2Fpbi52YWx1ZT1ffXRyeXtHLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKF8qLjI1LG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHtHLmdhaW4udmFsdWU9XyouMjV9dHJ5e0UuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoXyouMjUsbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe0UuZ2Fpbi52YWx1ZT1fKi4yNX10cnl7bS5mcmVxdWVuY3kuc2V0VGFyZ2V0QXRUaW1lKDEyZTMsbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe20uZnJlcXVlbmN5LnZhbHVlPTEyZTN9fWVsc2UgaWYoby5tb2RlPT09ImR1YiIpe3RyeXttLmZyZXF1ZW5jeS5zZXRUYXJnZXRBdFRpbWUoNmUzLG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHttLmZyZXF1ZW5jeS52YWx1ZT02ZTN9dHJ5e1QuZGVsYXlUaW1lLnNldFRhcmdldEF0VGltZShNYXRoLm1pbih5Ky4wMDcsUCksbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe1QuZGVsYXlUaW1lLnZhbHVlPU1hdGgubWluKHkrLjAwNyxQKX10cnl7TC5nYWluLnNldFRhcmdldEF0VGltZSgwLG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHtMLmdhaW4udmFsdWU9MH10cnl7eC5nYWluLnNldFRhcmdldEF0VGltZSgwLG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHt4LmdhaW4udmFsdWU9MH19ZWxzZXt0cnl7bS5mcmVxdWVuY3kuc2V0VGFyZ2V0QXRUaW1lKDE0ZTMsbi5jdXJyZW50VGltZSwuMDIpfWNhdGNoe20uZnJlcXVlbmN5LnZhbHVlPTE0ZTN9dHJ5e0wuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoMCxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7TC5nYWluLnZhbHVlPTB9dHJ5e3guZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoMCxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7eC5nYWluLnZhbHVlPTB9fX1mdW5jdGlvbiBnKGYpe0M9ISFmO2NvbnN0IHk9Qz8wOjE7dHJ5e08uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoeSxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7Ty5nYWluLnZhbHVlPXl9dHJ5e3cuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoeSxuLmN1cnJlbnRUaW1lLC4wMil9Y2F0Y2h7dy5nYWluLnZhbHVlPXl9fWZ1bmN0aW9uIHUoZj17fSl7Y29uc3QgeT10eXBlb2YgZi5tb2RlPT0ic3RyaW5nIj9mLm1vZGU6by5tb2RlLF89TnVtYmVyLmlzRmluaXRlKGYuZmVlZGJhY2spP1d0KGYuZmVlZGJhY2ssMCwuOTUpOm8uZmVlZGJhY2ssSD1OdW1iZXIuaXNGaW5pdGUoZi50aW1lU2VjKT9XdChmLnRpbWVTZWMsLjAyLDEuNSk6by50aW1lU2VjLFY9TnVtYmVyLmlzRmluaXRlKGYubWFzdGVyR2Fpbik/V3QoZi5tYXN0ZXJHYWluLDAsMik6by5tYXN0ZXJHYWluLFE9dHlwZW9mIGYuc3luY2VkPT0iYm9vbGVhbiI/Zi5zeW5jZWQ6by5zeW5jZWQsJD1OdW1iZXIuaXNGaW5pdGUoZi50ZW1wb0JwbSk/V3QoZi50ZW1wb0JwbSwyMCwzMDApOm8udGVtcG9CcG07bz17bW9kZTp5LGZlZWRiYWNrOl8sdGltZVNlYzpILG1hc3RlckdhaW46VixzeW5jZWQ6USx0ZW1wb0JwbTokfSxkKCk7dHJ5e2EuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoby5tYXN0ZXJHYWluLG4uY3VycmVudFRpbWUsLjAyKX1jYXRjaHthLmdhaW4udmFsdWU9by5tYXN0ZXJHYWlufX1kKCk7dHJ5e2EuZ2Fpbi5zZXRWYWx1ZUF0VGltZShvLm1hc3RlckdhaW4sbi5jdXJyZW50VGltZSl9Y2F0Y2h7YS5nYWluLnZhbHVlPW8ubWFzdGVyR2Fpbn1mdW5jdGlvbiBiKCl7dHJ5e3QuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7YS5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtwLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e1MuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7TS5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtULmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e0cuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7RS5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtMLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e3guZGlzY29ubmVjdCgpfWNhdGNoe310cnl7cy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXttLmRpc2Nvbm5lY3QoKX1jYXRjaHt9fWNvbnN0IGg9e2lucHV0OnQsb3V0cHV0OmEsdXBkYXRlUGFyYW1zOnUsc2V0TXV0ZWQ6ZyxkaXNwb3NlOmJ9O3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwibXV0ZWQiLHtnZXQ6KCk9PkMsc2V0OmY9PmcoISFmKX0pfWNhdGNoe31yZXR1cm4gaH1jb25zdCBicz17c3RyYWlnaHQ6e3N0cmFpZ2h0Oi43MyxicmVhazouMSxicmVha2JlYXQ6LjEsYW1iaWVudDouMSxmbHV4R3JpZDouMSxwYXVzZTouMTV9LGJyZWFrOntzdHJhaWdodDouMSxicmVhazouNSxicmVha2JlYXQ6LjEsYW1iaWVudDouMSxmbHV4R3JpZDouMSxwYXVzZTouMTV9LGJyZWFrYmVhdDp7c3RyYWlnaHQ6LjEsYnJlYWs6LjEsYnJlYWtiZWF0Oi43MyxhbWJpZW50Oi4xLGZsdXhHcmlkOi4xLHBhdXNlOi4xNX0sYW1iaWVudDp7c3RyYWlnaHQ6LjEsYnJlYWs6LjEsYnJlYWtiZWF0Oi4xLGFtYmllbnQ6LjYsZmx1eEdyaWQ6LjEscGF1c2U6LjE1fSxmbHV4R3JpZDp7c3RyYWlnaHQ6LjEsYnJlYWs6LjEsYnJlYWtiZWF0Oi4xLGFtYmllbnQ6LjEsZmx1eEdyaWQ6LjczLHBhdXNlOi4xNX0scGF1c2U6e3N0cmFpZ2h0Oi41LGJyZWFrOi4xLGJyZWFrYmVhdDouMSxhbWJpZW50Oi4xLGZsdXhHcmlkOi4xLHBhdXNlOjFlLTR9fTtmdW5jdGlvbiBDaShlKXtjb25zdCBuPUFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoYT0+TnVtYmVyKGEpfHwwKTpbXSx0PW4ucmVkdWNlKChhLHMpPT5hK3MsMCk7aWYodDw9MCl7Y29uc3QgYT1uLmxlbmd0aDtpZihhPT09MClyZXR1cm5bXTtjb25zdCBzPTEvYTtyZXR1cm4gbi5tYXAoKCk9PnMpfXJldHVybiBuLm1hcChhPT5hL3QpfWZ1bmN0aW9uIHZzKGUsbil7Y29uc3QgdD1NYXRoLm1heCgwLE1hdGgubWluKDEsTnVtYmVyKG4pfHwwKSk7aWYodDw9MClyZXR1cm4gZTtjb25zdCBhPWUubWFwKHM9Pk1hdGgubWF4KDAscysoTigpKjItMSkqdCpzKSk7cmV0dXJuIENpKGEpfWZ1bmN0aW9uIFNzKGUpe2xldCBuPTA7Y29uc3QgdD1OKCk7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspaWYobis9ZVthXSx0PD1uKXJldHVybiBhO3JldHVybiBlLmxlbmd0aC0xfWZ1bmN0aW9uIFVpKHtzdGF0ZXM6ZSxtYXRyaXg6bixpbml0aWFsU3RhdGU6dCxpbml0aWFsSW5kZXg6YSxqaXR0ZXI6c309e30sbT17fSl7Y29uc3QgcD1BcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wP2Uuc2xpY2UoKTpbInN0cmFpZ2h0IiwiYnJlYWsiLCJicmVha2JlYXQiLCJhbWJpZW50IiwiZmx1eEdyaWQiLCJwYXVzZSJdO2Z1bmN0aW9uIFMoTyl7aWYoTyYmIUFycmF5LmlzQXJyYXkoTykmJnR5cGVvZiBPPT0ib2JqZWN0Iil7Y29uc3Qgdz17fTtmb3IoY29uc3QgbyBvZiBwKXtjb25zdCBDPU8mJk9bb118fHt9LGM9e307Zm9yKGNvbnN0IGQgb2YgcCljW2RdPU51bWJlcihDW2RdKXx8MDt3W29dPWN9cmV0dXJuIHd9aWYoQXJyYXkuaXNBcnJheShPKSl7Y29uc3Qgdz17fTtmb3IobGV0IG89MDtvPHAubGVuZ3RoO28rKyl7Y29uc3QgQz1PW29dfHxbXSxjPXt9O2ZvcihsZXQgZD0wO2Q8cC5sZW5ndGg7ZCsrKWNbcFtkXV09TnVtYmVyKENbZF0pfHwwO3dbcFtvXV09Y31yZXR1cm4gd31yZXR1cm4gUyhicyl9Y29uc3QgUD1TKG4/P2JzKTtsZXQgTT1NYXRoLm1heCgwLE1hdGgubWluKDEsTnVtYmVyKHMpfHwwKSksVD0tMTtOdW1iZXIuaXNJbnRlZ2VyKGEpJiZhPj0wJiZhPHAubGVuZ3RoP1Q9YTp0JiZwLmluY2x1ZGVzKHQpP1Q9cC5pbmRleE9mKHQpOihUPXAuaW5kZXhPZigiYnJlYWtiZWF0IiksVDwwJiYoVD0wKSk7ZnVuY3Rpb24gRyhPKXtjb25zdCB3PXBbT118fHBbMF0sbz1QJiZQW3ddfHx7fSxDPW5ldyBBcnJheShwLmxlbmd0aCkuZmlsbCgwKTtsZXQgYz0wO2ZvcihsZXQgZz0wO2c8cC5sZW5ndGg7ZysrKXtjb25zdCB1PXBbZ10sYj1OdW1iZXIob1t1XSl8fDA7Q1tnXT1iLGMrPWJ9aWYoYzw9MClyZXR1cm4gQ1tPXT0xLEM7Y29uc3QgZD1wLmluZGV4T2YoInBhdXNlIik7aWYoZD49MCYmcFtPXSE9PSJwYXVzZSIpe2NvbnN0IHU9TWF0aC5tYXgoMCwuOSk7Zm9yKGxldCBiPTA7YjxDLmxlbmd0aDtiKyspQ1tiXT1DW2JdL2MqdTtyZXR1cm4gQ1tkXT0oQ1tkXXx8MCkrLjEsQ31mb3IobGV0IGc9MDtnPEMubGVuZ3RoO2crKylDW2ddPUNbZ10vYztyZXR1cm4gQ31mdW5jdGlvbiBFKE8pe2NvbnN0IHc9dHlwZW9mIE89PSJzdHJpbmciP3AuaW5kZXhPZihPKTpULG89dz49MCYmdzxwLmxlbmd0aD93OjAsQz1HKG8pLGM9dnMoQyxNKSxkPVNzKGMpO3JldHVybiBUPWQscFtkXX1mdW5jdGlvbiBMKE8pe2NvbnN0IHc9dHlwZW9mIE89PSJzdHJpbmciP3AuaW5kZXhPZihPKTpULG89dz49MCYmdzxwLmxlbmd0aD93OjAsQz1HKG8pLGM9dnMoQyxNKSxkPVNzKGMpO3JldHVybiBwW2RdfWZ1bmN0aW9uIHgoTyl7Y29uc3Qgdz1wLmluZGV4T2YoTyk7dz49MCYmKFQ9dyl9cmV0dXJue25leHQ6RSxwZWVrOkwsc2V0Q3VycmVudDp4fX1mdW5jdGlvbiBXaShlKXtjb25zdCBuPShlPT1udWxsP3ZvaWQgMDplLnNpZGUpPT09IkIiPyJCIjoiQSI7S2koZSksWWkoZSxuKX1mdW5jdGlvbiB4aShlKXt0cnl7Y29uc3QgdD0oKGU9PW51bGw/dm9pZCAwOmUucil8fE4pKCk7cmV0dXJuIHQ8LjU/InBlcmN1c3NpdmUiOnQ8Ljc/Indhcm0iOnQ8Ljg1PyJvcmdhbmljIjp0PC45NT8iaGFybW9uaWMiOiIifWNhdGNoe3JldHVybiIifX1mdW5jdGlvbiBNcyhlLG4sdD0uNSl7dHJ5e2NvbnN0IGE9ZT09bnVsbD92b2lkIDA6ZVtuXTtpZighYXx8KChlPT1udWxsP3ZvaWQgMDplLnIpfHxOKSgpPj10KXJldHVybjtjb25zdCBtPXhpKGUpLHA9e307cFtgJHtufS5tb2RlYF09bSxTdHJpbmcobSkudG9Mb3dlckNhc2UoKT09PSJwZXJjdXNzaXZlIiYmKHBbYCR7bn0udm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluYF09LjAwMyksbj09PSJmbUJsaXAxIiYmU3RyaW5nKG0pLnRvTG93ZXJDYXNlKCk9PT0iaGFybW9uaWMiJiYocFtgJHtufS52b2ljZVNwZWNpZmljLm91dHB1dEdhaW5gXT0uMDA0KSx5ZShhLHAse3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fX1mdW5jdGlvbiBLaShlKXt2YXIgYSxzLG07am4oZSk7Y29uc3R7bm93Om4sdHJhY2tzOnR9PWU7dHJ5e2NvbnN0IHA9ZSYmZS5tYXN0ZXJCdXMsUz1wJiZwLm1hc3RlckJ1c091dHB1dCYmcC5tYXN0ZXJCdXNPdXRwdXQuZ2FpbjtTJiZOdW1iZXIuaXNGaW5pdGUobikmJlMuc2V0VmFsdWVBdFRpbWUoLjgsbil9Y2F0Y2h7fXRyeXtmb3IoY29uc3QgcCBvZlsiaGloYXQiLCJmbUJsaXAxIiwiZm1CbGlwMiIsIndvb2RCbG9jayIsInRlY2hub1N0YWIiLCJjbGlja3MiLCJmaWx0ZXJQaW5nIiwiYmFzcyIsImthcnBsdXMiXSl7Y29uc3QgUz1lW3BdO1MmJihTLmNoYW5nZVZvaWNlUGFyYW1zT25FdmVyeVN0ZXA9MCl9fWNhdGNoe31mb3IoY29uc3QgcCBvZiBPYmplY3Qua2V5cyh0KSl0cnl7dFtwXS5nYWluLnNldFZhbHVlQXRUaW1lKDEsbil9Y2F0Y2h7fXRyeXtpZihlLnNpZ25hbCYmKChhPWUucik9PW51bGw/dm9pZCAwOmEuY2FsbChlKSk8LjIyKXtjb25zdHtmbGF0OnB9PSgobT0ocz1lLnNpZ25hbCkucmVnZW5lcmF0ZVBhcmFtcyk9PW51bGw/dm9pZCAwOm0uY2FsbChzKSl8fHtmbGF0Om51bGx9O3AmJnllKGUuc2lnbmFsLHAse3F1YW50aXplQmFyczoxfSksc2lkZT09PSJBIj95ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kUSI6KE51bWJlcihwPT1udWxsP3ZvaWQgMDpwWyJzaWduYWwuYmFuZFEiXSl8fDEwKSoxLjA1fSx7cXVhbnRpemVCYXJzOjF9KTp5ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kUSI6KE51bWJlcihwPT1udWxsP3ZvaWQgMDpwWyJzaWduYWwuYmFuZFEiXSl8fDEwKSouOTZ9LHtxdWFudGl6ZUJhcnM6MX0pLHllKGUuc2lnbmFsLHsic2lnbmFsLmJhbmRCYXNlSHoiOjUwMCwic2lnbmFsLnNlbmRSZXZlcmIiOi4zNX0se3F1YW50aXplQmFyczoxfSl9fWNhdGNoe319ZnVuY3Rpb24gWWkoZSxuKXt2YXIgYyxkLGcsdTtjb25zdCB0PV9uKGUpLGE9a24oZSkse25vdzpzLHI6bSx0ZW1wb0JwbTpwLHRyYWNrczpTLGtpY2s6UCxoaWhhdDpNLGZtQmxpcDE6VCxmbUJsaXAyOkcsd29vZEJsb2NrOkUsa2FycGx1czpMLHRlY2hub1N0YWI6eCxjbGlja3M6TyxmaWx0ZXJQaW5nOncsYmFzczpvfT1lO2xldCBDPSJkcnlHcm9vdmUiO3RyeXtjb25zdCBiPShlPT1udWxsP3ZvaWQgMDplLnIpfHxOLGg9ZSYmZS5mbGFncz9lLmZsYWdzLm1vZGVWYXJpYW50c3x8KGUuZmxhZ3MubW9kZVZhcmlhbnRzPXt9KTpudWxsO2lmKGgmJnR5cGVvZiBoLnN0cmFpZ2h0PT0ic3RyaW5nIilDPWguc3RyYWlnaHQ7ZWxzZXtjb25zdCBmPVsiZHJ5R3Jvb3ZlIiwic3BhY2V5Um9vbSIsImthcnBsdXNGZWF0dXJlIiwiZGFya0R1YiJdO0M9ZltNYXRoLmZsb29yKGIoKSpmLmxlbmd0aCldLGgmJihoLnN0cmFpZ2h0PUMpfX1jYXRjaHt9ZS5fX3ZhcmlhbnRTdHJhaWdodD1DO3RyeXtpZihTJiZTLmhpaGF0JiZTLmhpaGF0LmdhaW4pe2NvbnN0IGI9YSguNywuODUpO1MuaGloYXQuZ2Fpbi5zZXRWYWx1ZUF0VGltZShiLHMpfX1jYXRjaHt9dHJ5e2lmKFMmJlMuYmFzcyYmUy5iYXNzLmdhaW4pe2NvbnN0IGI9YSguOTUsMS4xNSk7Uy5iYXNzLmdhaW4uc2V0VmFsdWVBdFRpbWUoYixzKX19Y2F0Y2h7fXRyeXt5ZShvLHsiYmFzcy5zZW5kUmV2ZXJiIjowfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e3llKFAseyJraWNrLmhpZ2hQYXNzRmlsdGVyV2V0IjohMX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXt5ZShULHsiZm1CbGlwMS5hbWJpZW50TW9kZSI6ITF9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7eWUoRyx7ImZtQmxpcDIuYW1iaWVudE1vZGUiOiExfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e00mJnllKE0seyJoaWhhdC5zZW5kMSI6MH0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCBiPUM9PT0ic3BhY2V5Um9vbSI/YSguMDMsLjEpOmEoLjAxLC4wNik7eWUoUCx7ImtpY2suc2VuZFJldmVyYiI6Yn0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXt5ZShNLHsiaGloYXQuc2VuZFJldmVyYiI6MH0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCBiPXsiZm1CbGlwMS5zZW5kUmV2ZXJiIjpDPT09InNwYWNleVJvb20iP2EoLjA4LC4yKTphKC4wMiwuMSksImZtQmxpcDEudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjphKC4wMSwuMDE4KX07eWUoVCxiLHtxdWFudGl6ZUJhcnM6MX0pLE1zKGUsImZtQmxpcDEiLC41KX1jYXRjaHt9dHJ5e2NvbnN0IGI9eyJmbUJsaXAyLnNlbmRSZXZlcmIiOkM9PT0ic3BhY2V5Um9vbSI/YSguMTIsLjI1KTphKC4wNCwuMTIpLCJmbUJsaXAyLnZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6YSguMDEsLjAxOCl9O3llKEcsYix7cXVhbnRpemVCYXJzOjF9KSxNcyhlLCJmbUJsaXAyIiwuNSl9Y2F0Y2h7fXRyeXt5ZShFLHsid29vZGJsb2NrLnRpbWJyZS5iYXNlSHoiOk1hdGguZmxvb3IoYSg4MCwxNjApKSwid29vZGJsb2NrLnNlbmRSZXZlcmIiOkM9PT0ic3BhY2V5Um9vbSI/YSguMDUsLjEyKTowLCJ3b29kYmxvY2sudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjphKC4xLC4xNil9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7eWUoeCx7InRlY2hub1N0YWIuc2VuZFJldmVyYiI6Qz09PSJzcGFjZXlSb29tIj9hKC4wNiwuMTQpOmEoMCwuMDgpLCJ0ZWNobm9TdGFiLnRvbmUubG93Q3V0SHoiOk1hdGguZmxvb3IoYSgyNjAsNDIwKSksInRlY2hub1N0YWIudG9uZS5oaWdoQ3V0SHoiOk1hdGguZmxvb3IoYSgxNDAwLDJlMykpLCJ0ZWNobm9TdGFiLnRvbmUuYnJpZ2h0TGltaXRIeiI6TWF0aC5mbG9vcihhKDE4MDAsMjYwMCkpLCJ0ZWNobm9TdGFiLnZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6YSguMDA2LC4wMTIpfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e3llKE8seyJjbGlja3Muc2VuZFJldmVyYiI6Qz09PSJzcGFjZXlSb29tIj9hKC4wOCwuMTgpOmEoLjAyLC4xKX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXt5ZShPLHsiY2xpY2tzLnZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6YSguMDI4LC4wNDUpfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e3llKG8seyJiYXNzLnBsYXlNb2RlIjoibm9ybWFsIiwiYmFzcy5sZm9EZXB0aCI6MH0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtpZihMKXtjb25zdCBiPU1hdGguZmxvb3IoYSg1NSwxMDApKSxoPShlPT1udWxsP3ZvaWQgMDplLnIpfHxOO3llKEwseyJrYXJwbHVzLmJhc2VGcmVxIjpiLCJrYXJwbHVzLnZvaWNlU3BlY2lmaWMub3V0cHV0R2FpbiI6LjA4NSwia2FycGx1cy52b2ljZVNwZWNpZmljLnZlbG9jaXR5R2FpblNjYWxlIjouOCwia2FycGx1cy5zZW5kUmV2ZXJiIjpDPT09InNwYWNleVJvb20iP2EoLjEsLjI1KTphKC4wMiwuMSksImthcnBsdXMucGFuTEZPU2hhcGUiOnQoWyJzaW5lIiwidHJpYW5nbGUiLCJzYW1wbGVIb2xkIl0pLCJrYXJwbHVzLnBhbkxGT0Ftb3VudCI6YSguMiwuNiksImthcnBsdXMucGFuTEZPU3luYyI6ITAsImthcnBsdXMucGFuTEZPRnJlcXVlbmN5IjphKC4wNSwuNCl9LHtxdWFudGl6ZUJhcnM6MX0pfX1jYXRjaHt9dHJ5e2NvbnN0IGI9Im1vZGU6c3RyYWlnaHQiO2Uuc25hcHNob3RzJiZ0eXBlb2YgZS5zbmFwc2hvdHMucmVzdG9yZT09ImZ1bmN0aW9uIiYmKChkPShjPWUuc25hcHNob3RzKS5oYXMpIT1udWxsJiZkLmNhbGwoYyxiKT9lLnNuYXBzaG90cy5yZXN0b3JlKGIse3F1YW50aXplQmFyczowfSk6KHU9KGc9ZS5zbmFwc2hvdHMpLmNhcHR1cmUpPT1udWxsfHx1LmNhbGwoZyxiKSl9Y2F0Y2h7fXRyeXtjb25zdCBiPShlPT1udWxsP3ZvaWQgMDplLnIpfHxOO1AmJmIoKTwuNSYmeWUoUCx7ImtpY2sudGltYnJlLmJhc2VGcmVxIjpNYXRoLmZsb29yKGEoMzYsNjIpKX0se3F1YW50aXplQmFyczoxfSksVCYmYigpPC41JiZ5ZShULHsiZm1CbGlwMS5mbS5iYXNlSHoiOmEoMTgsMTgwKX0se3F1YW50aXplQmFyczoxfSksRyYmYigpPC41JiZ5ZShHLHsiZm1CbGlwMi5iYXNlRnJlcSI6YSgxNSwyMDApfSx7cXVhbnRpemVCYXJzOjF9KSx4JiZiKCk8LjUmJnllKHgseyJ0ZWNobm9TdGFiLmJhc2UuYmFzZUZyZXFIeiI6TWF0aC5mbG9vcihhKDQwMCwxNjAwKSl9LHtxdWFudGl6ZUJhcnM6MX0pLE0mJmIoKTwuNSYmeWUoTSx7ImhpaGF0LmZpbHRlci5oaWdocGFzc0h6IjpNYXRoLmZsb29yKGEoNTIwMCwxZTQpKX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCBiPWUuc2VuZERlbGF5O2lmKGImJnR5cGVvZiBiLnVwZGF0ZVBhcmFtcz09ImZ1bmN0aW9uIil7Y29uc3QgXz10KFsibm9ybWFsIiwicGluZ3BvbmciLCJkdWIiXSksSD1hKC4yOCwuNjUpLFY9YSguMTIsLjYpO249PT0iQiI/Yi51cGRhdGVQYXJhbXMoe21vZGU6XyxmZWVkYmFjazpILHRpbWVTZWM6VixzeW5jZWQ6ITB9KTpiLnVwZGF0ZVBhcmFtcyh7bW9kZTpfLGZlZWRiYWNrOkgsdGltZVNlYzpWLHN5bmNlZDohMH0pfWNvbnN0IGg9W1siaGloYXQiLE1dLFsiZm1CbGlwMSIsVF0sWyJmbUJsaXAyIixHXSxbIndvb2RibG9jayIsRV0sWyJ0ZWNobm9TdGFiIix4XSxbImNsaWNrcyIsT10sWyJmaWx0ZXJQaW5nIix3XSxbImthcnBsdXMiLExdXS5maWx0ZXIoKFtfLEhdKT0+SCksZj1oLnNvcnQoKCk9Pnt2YXIgXztyZXR1cm4oKChfPWUucik9PW51bGw/dm9pZCAwOl8uY2FsbChlKSl8fE4oKSktLjV9KSx5PU1hdGgubWF4KDEsTWF0aC5taW4oNCxNYXRoLmZsb29yKGEoMSw1KSkpKTtmb3IoY29uc3RbXyxIXW9mIGgpeWUoSCx7W2Ake199LnNlbmREZWxheWBdOjB9LHtxdWFudGl6ZUJhcnM6MX0pO2ZvcihsZXQgXz0wO188TWF0aC5taW4oeSxmLmxlbmd0aCk7XysrKXtjb25zdFtILFZdPWZbX10sUT1TdHJpbmcoZT09bnVsbD92b2lkIDA6ZS5zaWRlKS50b1VwcGVyQ2FzZSgpPT09IkIiLCQ9SD09PSJoaWhhdCJ8fEg9PT0iY2xpY2tzIj9RPzA6YSguMDAxLC4wMik6YSguMSwuNDUpO3llKFYse1tgJHtIfS5zZW5kRGVsYXlgXTokfSx7cXVhbnRpemVCYXJzOjF9KX19Y2F0Y2h7fWlmKG49PT0iQiImJihlIT1udWxsJiZlLnJlc29uYXRvcikpdHJ5e2UucmVzb25hdG9yLnNldEdlbmVyYXRpdmVDb25maWcoe251bUJhbmRzOnttaW46MSxtYXg6NH0sYmFzZUh6OnttaW46MWUzLG1heDo4ZTN9LHJhdGlvczpbMSxNYXRoLlNRUlQyLDUvNCw0LzMsMy8yLDJdLG9jdGF2ZXM6Wy0yLC0xLDBdLHE6e21pbjo2LG1heDoxNH0sZ2Fpbjp7bWluOi4yLG1heDouNn0sY29tYkZlZWRiYWNrOnttaW46LjMsbWF4Oi41NX0sY29tYkRlbGF5TXVsdDp7bWluOjIsbWF4OjV9LGRhbXBNdWx0aXBsaWVyOjN9KSxlLnJlc29uYXRvci5yZWdlbmVyYXRlUGFyYW1zKCksZS5yZXNvbmF0b3IudXBkYXRlUGFyYW1zKHtyZXNvbk9uOiEwLHJlc29uTWl4OjF9KX1jYXRjaHt9fWZ1bmN0aW9uIFhpKGUpe2NvbnN0IG49KGU9PW51bGw/dm9pZCAwOmUuc2lkZSk9PT0iQiI/IkIiOiJBIjtKaShlKTt0cnl7aWYoZS5mbGFnc3x8KGUuZmxhZ3M9e30pLGUuZmxhZ3MuZmx1eEdyaWR8fChlLmZsYWdzLmZsdXhHcmlkPXt9KSwhZS5mbGFncy5mbHV4R3JpZC5yZXZlcmJCaWFzKXtjb25zdCB0PV9uKGUpO2UuZmxhZ3MuZmx1eEdyaWQucmV2ZXJiQmlhcz10KFsic21hbGwiLCJtaWQiLCJiaWciXSl9fWNhdGNoe31aaShlLG4pfWZ1bmN0aW9uIEppKGUpe3ZhciBuLHQsYTtqbihlKTt0cnl7Y29uc3Qgcz1lJiZlLm5vdyxtPWUmJmUubWFzdGVyQnVzLHA9bSYmbS5tYXN0ZXJCdXNPdXRwdXQmJm0ubWFzdGVyQnVzT3V0cHV0LmdhaW47cCYmTnVtYmVyLmlzRmluaXRlKHMpJiZwLnNldFZhbHVlQXRUaW1lKC44LHMpfWNhdGNoe310cnl7aWYoZS5zaWduYWwmJigobj1lLnIpPT1udWxsP3ZvaWQgMDpuLmNhbGwoZSkpPC4xOCl7Y29uc3R7ZmxhdDpzfT0oKGE9KHQ9ZS5zaWduYWwpLnJlZ2VuZXJhdGVQYXJhbXMpPT1udWxsP3ZvaWQgMDphLmNhbGwodCkpfHx7ZmxhdDpudWxsfTtzJiZ5ZShlLnNpZ25hbCxzLHtxdWFudGl6ZUJhcnM6MX0pLCgoZT09bnVsbD92b2lkIDA6ZS5zaWRlKT09PSJCIj8iQiI6IkEiKT09PSJBIj95ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kUSI6KE51bWJlcihzPT1udWxsP3ZvaWQgMDpzWyJzaWduYWwuYmFuZFEiXSl8fDEwKSoxLjA1fSx7cXVhbnRpemVCYXJzOjF9KTp5ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kUSI6KE51bWJlcihzPT1udWxsP3ZvaWQgMDpzWyJzaWduYWwuYmFuZFEiXSl8fDEwKSouOTZ9LHtxdWFudGl6ZUJhcnM6MX0pLHllKGUuc2lnbmFsLHsic2lnbmFsLmJhbmRCYXNlSHoiOjUwMCwic2lnbmFsLnNlbmRSZXZlcmIiOi41fSx7cXVhbnRpemVCYXJzOjF9KX19Y2F0Y2h7fX1mdW5jdGlvbiBaaShlLG4pe3ZhciB3LG8sQyxjO2NvbnN0IHQ9X24oZSksYT1HYShlKSxzPWtuKGUpLHtub3c6bSxraWNrOnAsYmFzczpTLGhpaGF0OlAsd29vZEJsb2NrOk0sa2FycGx1czpULGNsaWNrczpHLGZtQmxpcDE6RSxmbUJsaXAyOkwsdGVjaG5vU3RhYjp4LGZpbHRlclBpbmc6T309ZTt0cnl7eWUocCx7ImtpY2suc2VuZFJldmVyYiI6MCwia2ljay5zZW5kMSI6cyguMSwuNSl9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7eWUocCx7ImtpY2suaGlnaFBhc3NGaWx0ZXJXZXQiOiExfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e2NvbnN0IGQ9U3RyaW5nKGU9PW51bGw/dm9pZCAwOmUuc2lkZSkudG9VcHBlckNhc2UoKT09PSJCIixnPXsiYmFzcy5sZm9XYXZlIjp0KFsic2luZSIsInRyaWFuZ2xlIiwic2F3dG9vdGgiXSksImJhc3MubGZvUmF0ZVN0ZXBzIjphKFsyLDQsNiw4LDEyLDE2LDE4LDI0LDMyXSksImJhc3MubGZvU3ViZGl2aXNpb24iOiJzdHJhaWdodCIsImJhc3Mub3V0cHV0R2FpbiI6cyguMTgsLjI4KSwiYmFzcy5zZW5kUmV2ZXJiIjowLCJiYXNzLnNlbmQxIjpzKC4xNSwuNSl9O2Q/T2JqZWN0LmFzc2lnbihnLHsiYmFzcy5wbGF5TW9kZSI6Im5vcm1hbCIsImJhc3MubGZvRGVwdGgiOnMoLjIsLjYpfSk6T2JqZWN0LmFzc2lnbihnLHsiYmFzcy5wbGF5TW9kZSI6ImhvbGRub3RlIiwiYmFzcy5sZm9EZXB0aCI6cyguNCwxKX0pLHllKFMsZyx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e2NvbnN0IGc9U3RyaW5nKGU9PW51bGw/dm9pZCAwOmUuc2lkZSkudG9VcHBlckNhc2UoKT09PSJCIj9zKC45LDEuMDgpOnMoMS4wNSwxLjIyKTtpZihlLnRyYWNrcyYmZS50cmFja3MuaGloYXQmJmUudHJhY2tzLmhpaGF0LmdhaW4pe2NvbnN0IHU9ZS5ub3d8fGUuYXVkaW9Db250ZXh0JiZlLmF1ZGlvQ29udGV4dC5jdXJyZW50VGltZXx8MDtlLnRyYWNrcy5oaWhhdC5nYWluLnNldFZhbHVlQXRUaW1lKGcsdSl9fWNhdGNoe310cnl7Y29uc3QgZD0ibW9kZTpmbHV4R3JpZCI7aWYoZS5zbmFwc2hvdHMmJnR5cGVvZiBlLnNuYXBzaG90cy5yZXN0b3JlPT0iZnVuY3Rpb24iKWlmKChvPSh3PWUuc25hcHNob3RzKS5oYXMpIT1udWxsJiZvLmNhbGwodyxkKSl7ZS5zbmFwc2hvdHMucmVzdG9yZShkLHtxdWFudGl6ZUJhcnM6MH0pO3RyeXt5ZShULHsia2FycGx1cy52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4iOnMoLjA2LC4xMil9LHtxdWFudGl6ZUJhcnM6MH0pfWNhdGNoe319ZWxzZXt0cnl7eWUoVCx7ImthcnBsdXMudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjpzKC4wNiwuMTIpfSx7cXVhbnRpemVCYXJzOjB9KX1jYXRjaHt9KGM9KEM9ZS5zbmFwc2hvdHMpLmNhcHR1cmUpPT1udWxsfHxjLmNhbGwoQyxkKX1pZighaXNCKXt0cnl7Y29uc3QgZz1lLnNlbmREZWxheTtpZihnJiZ0eXBlb2YgZy51cGRhdGVQYXJhbXM9PSJmdW5jdGlvbiIpe2NvbnN0IHU9cygwLDEpPC42PyJwaW5ncG9uZyI6Im5vcm1hbCIsYj1zKC40LC43KSxoPXMoLjEsLjM1KTtnLnVwZGF0ZVBhcmFtcyh7bW9kZTp1LGZlZWRiYWNrOmIsdGltZVNlYzpoLHN5bmNlZDohMH0pfX1jYXRjaHt9dHJ5e2lmKGUuc2VuZFJldmVyYiYmdHlwZW9mIGUuc2VuZFJldmVyYi51cGRhdGVQYXJhbXM9PSJmdW5jdGlvbiIpe2NvbnN0IGc9WXQoZSksdT1FYShzLGcpO2Uuc2VuZFJldmVyYi51cGRhdGVQYXJhbXModSl9fWNhdGNoe319fWNhdGNoe310cnl7aWYoIShTdHJpbmcoZT09bnVsbD92b2lkIDA6ZS5zaWRlKS50b1VwcGVyQ2FzZSgpPT09IkIiKSl7Y29uc3QgZz1bWyJraWNrIiwuMDUsLjJdLFsiaGloYXQiLC4yNSwuNl0sWyJmbUJsaXAxIiwuNSwuODVdLFsiZm1CbGlwMiIsLjUsLjg1XSxbIndvb2RCbG9jayIsLjQ1LC44XSxbImthcnBsdXMiLC40NSwuOF0sWyJ0ZWNobm9TdGFiIiwuMzUsLjddLFsiY2xpY2tzIiwuMzUsLjddLFsiZmlsdGVyUGluZyIsLjM1LC43XSxbImJhc3MiLC4xLC4zXV07Zm9yKGNvbnN0W3UsYixoXW9mIGcpdHJ5e2NvbnN0IGY9ZVt1XTtpZighZiljb250aW51ZTtjb25zdCB5PVl0KGUpLF89SWEocyhiLGgpLHkpLEg9e307SFtgJHt1fS5zZW5kUmV2ZXJiYF09Xyx5ZShmLEgse3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fX19Y2F0Y2h7fXRyeXtlLmZsYWdzfHwoZS5mbGFncz17fSksZS5mbGFncy5mbHV4R3JpZHx8KGUuZmxhZ3MuZmx1eEdyaWQ9e30pO2NvbnN0IGQ9ISFlLmZsYWdzLmZsdXhHcmlkLndhc0FjdGl2ZTt0cnl7ZS5mbGFncy5mbHV4R3JpZC53YXNBY3RpdmU9ITAsZS5mbGFncy5mbHV4R3JpZC5sYXN0QmFyU3RhcnRBdWRpb1RpbWU9ZS5iYXJTdGFydEF1ZGlvVGltZX1jYXRjaHt9Y29uc3QgZz1lLnJ8fE47aWYoZCl7Y29uc3QgdT1bWyJraWNrIixwLCJraWNrLnRpbWJyZS5iYXNlRnJlcSIsKCk9Pk1hdGguZmxvb3IocygzNiw2MikpXSxbImhpaGF0IixQLCJoaWhhdC5maWx0ZXIuaGlnaHBhc3NIeiIsKCk9Pk1hdGguZmxvb3Iocyg1ZTMsMWU0KSldLFsiYmFzcyIsUywiYmFzcy5maWx0ZXJDdXRvZmYiLCgpPT5zKDEyMCwzODApXSxbImZtQmxpcDEiLEUsImZtQmxpcDEuZm0uYmFzZUh6IiwoKT0+cygxOCwxODApXSxbImZtQmxpcDIiLEwsImZtQmxpcDIuYmFzZUZyZXEiLCgpPT5zKDE1LDIwMCldLFsid29vZGJsb2NrIixNLCJ3b29kYmxvY2sudGltYnJlLmJhc2VIeiIsKCk9Pk1hdGguZmxvb3Iocyg2MCwxODApKV0sWyJrYXJwbHVzIixULCJrYXJwbHVzLmJhc2VGcmVxIiwoKT0+cyg0MCw5MDApXSxbImthcnBsdXMiLFQsImthcnBsdXMuZGFtcGluZyIsKCk9PnMoLjM1LC45MildLFsia2FycGx1cyIsVCwia2FycGx1cy50b25lTG93cGFzc0h6IiwoKT0+cyg5MDAsOWUzKV0sWyJ0ZWNobm9TdGFiIix4LCJ0ZWNobm9TdGFiLmJhc2UuYmFzZUZyZXFIeiIsKCk9Pk1hdGguZmxvb3Iocyg0MDAsMTYwMCkpXSxbImZpbHRlclBpbmciLE8sImZpbHRlclBpbmcuYmFzZUZyZXF1ZW5jeSIsKCk9PnMoMTUwLDFlMyldXTtmb3IoY29uc3RbYixoLGYseV1vZiB1KXRyeXtpZighaCljb250aW51ZTtpZigoZygpfHxOKCkpPC41KXtjb25zdCBfPXt9O19bZl09eSgpLHllKGgsXyx7cXVhbnRpemVCYXJzOjF9KX19Y2F0Y2h7fX19Y2F0Y2h7fXRyeXtpZihTdHJpbmcoZT09bnVsbD92b2lkIDA6ZS5zaWRlKS50b1VwcGVyQ2FzZSgpPT09IkIiKXt0cnl7aWYoZS5zZW5kUmV2ZXJiJiZ0eXBlb2YgZS5zZW5kUmV2ZXJiLnVwZGF0ZVBhcmFtcz09ImZ1bmN0aW9uIil7Y29uc3QgdT1ZdChlKSxiPUVhKHMsdSk7ZS5zZW5kUmV2ZXJiLnVwZGF0ZVBhcmFtcyhiKX19Y2F0Y2h7fXRyeXtjb25zdCB1PWUuc2VuZERlbGF5O2lmKHUmJnR5cGVvZiB1LnVwZGF0ZVBhcmFtcz09ImZ1bmN0aW9uIil7Y29uc3QgYj1zKDAsMSk8LjY/InBpbmdwb25nIjoibm9ybWFsIixoPXMoLjMsLjU1KSxmPXMoLjEsLjMpO3UudXBkYXRlUGFyYW1zKHttb2RlOmIsZmVlZGJhY2s6aCx0aW1lU2VjOmYsc3luY2VkOiEwfSl9fWNhdGNoe31jb25zdCBnPVtbImtpY2siLC4yNSwuNTVdLFsiaGloYXQiLC4zNSwuN10sWyJmbUJsaXAxIiwuNzUsMV0sWyJmbUJsaXAyIiwuNzUsMV0sWyJ3b29kQmxvY2siLC42NSwuOTVdLFsia2FycGx1cyIsLjY1LC45Ml0sWyJ0ZWNobm9TdGFiIiwuNTUsLjldLFsiY2xpY2tzIiwuNTUsLjg1XSxbImZpbHRlclBpbmciLC41NSwuODVdLFsiYmFzcyIsLjQsLjddXTtmb3IoY29uc3RbdSxiLGhdb2YgZyl0cnl7Y29uc3QgZj1lW3VdO2lmKCFmKWNvbnRpbnVlO2NvbnN0IHk9WXQoZSksXz1JYShzKGIsaCkseSksSD17fTtIW2Ake3V9LnNlbmRSZXZlcmJgXT1fLHllKGYsSCx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e2NvbnN0IHU9W1siaGloYXQiLFBdLFsiZm1CbGlwMSIsRV0sWyJmbUJsaXAyIixMXSxbIndvb2RibG9jayIsTV0sWyJrYXJwbHVzIixUXSxbInRlY2hub1N0YWIiLHhdLFsiY2xpY2tzIixHXSxbImZpbHRlclBpbmciLE9dXS5maWx0ZXIoKFtmLHldKT0+eSk7Zm9yKGNvbnN0W2YseV1vZiB1KXllKHkse1tgJHtmfS5zZW5kRGVsYXlgXTowfSx7cXVhbnRpemVCYXJzOjF9KTtjb25zdCBiPXUuc29ydCgoKT0+e3ZhciBmO3JldHVybigoKGY9ZS5yKT09bnVsbD92b2lkIDA6Zi5jYWxsKGUpKXx8TigpKS0uNX0pLGg9TWF0aC5mbG9vcihzKDEsNSkpO2ZvcihsZXQgZj0wO2Y8TWF0aC5taW4oaCxiLmxlbmd0aCk7ZisrKXtjb25zdFt5LF9dPWJbZl0sSD15PT09ImhpaGF0Inx8eT09PSJjbGlja3MiPzA6cyguMSwuNDUpO3llKF8se1tgJHt5fS5zZW5kRGVsYXlgXTpIfSx7cXVhbnRpemVCYXJzOjF9KX19Y2F0Y2h7fXRyeXtpZihFKXtjb25zdCB1PVl0KGUpLGI9WHQocyguMywuNyksdSksaD1YdChzKC4yNSwuNTUpLHUpO3llKEUseyJmbUJsaXAxLmFtYmllbnRNb2RlIjohMCwiZm1CbGlwMS5tb2RlIjpbIndhcm0iLCJvcmdhbmljIl0sImZtQmxpcDEuZW52ZWxvcGUuZGVjYXkiOmIsImZtQmxpcDEuZW52ZWxvcGUucmVsZWFzZSI6aH0se3F1YW50aXplQmFyczoxfSk7dHJ5e0UuY2hhbmdlVm9pY2VQYXJhbXNPbkV2ZXJ5U3RlcD10KFszLDQsNV0pfWNhdGNoe319fWNhdGNoe310cnl7aWYoTCl7Y29uc3QgdT1ZdChlKSxiPVh0KHMoLjI1LC40NSksdSksaD1YdChzKC4yLC4zOCksdSk7eWUoTCx7ImZtQmxpcDIuYW1iaWVudE1vZGUiOiEwLCJmbUJsaXAyLm1vZGUiOlsid2FybSIsIm9yZ2FuaWMiXSwiZm1CbGlwMi5lbnZlbG9wZS5hbXAuZGVjYXkiOmIsImZtQmxpcDIuZW52ZWxvcGUuYW1wLnJlbGVhc2UiOmh9LHtxdWFudGl6ZUJhcnM6MX0pO3RyeXtMLmNoYW5nZVZvaWNlUGFyYW1zT25FdmVyeVN0ZXA9dChbMyw0LDVdKX1jYXRjaHt9fX1jYXRjaHt9dHJ5e2lmKE0pe2NvbnN0IHU9WXQoZSksYj1YdCguMTIsdSksaD1YdCguMSx1KTt5ZShNLHsid29vZGJsb2NrLmVudmVsb3BlLmRlY2F5IjpiLCJ3b29kYmxvY2suZW52ZWxvcGUucmVsZWFzZSI6aCwid29vZGJsb2NrLnBhbkxGT1NoYXBlIjoic2luZSIsIndvb2RibG9jay5wYW5MRk9BbW91bnQiOnMoLjE1LC40NSksIndvb2RibG9jay5wYW5MRk9TeW5jIjohMCwid29vZGJsb2NrLnBhbkxGT0ZyZXF1ZW5jeSI6cyguMDMsLjEpfSx7cXVhbnRpemVCYXJzOjF9KTt0cnl7TS5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwPXQoWzQsNV0pfWNhdGNoe319fWNhdGNoe310cnl7Y29uc3QgdT1ZdChlKSxiPXMoLjAwMywuMDEpLGg9WHQocyguMSwuMjUpLHUpLGY9cyguMTUsLjM1KSx5PVh0KHMoLjA4LC4xOCksdSk7eWUoUyx7ImJhc3MubGZvRGVwdGgiOjAsImJhc3MubGZvUmF0ZVN0ZXBzIjo0LCJiYXNzLnBsYXlNb2RlIjoibm9ybWFsIiwiYmFzcy5hdHRhY2siOmIsImJhc3MuZGVjYXkiOmgsImJhc3Muc3VzdGFpbiI6ZiwiYmFzcy5yZWxlYXNlIjp5LCJiYXNzLm91dHB1dEdhaW4iOnMoLjI4LC40KSwiYmFzcy5maWx0ZXJDdXRvZmYiOnMoMTQwLDI2MCksImJhc3MuZmlsdGVyUSI6cyguNywxLjIpfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9fX1jYXRjaHt9aWYobj09PSJCIiYmKGUhPW51bGwmJmUucmVzb25hdG9yKSl0cnl7ZS5yZXNvbmF0b3Iuc2V0R2VuZXJhdGl2ZUNvbmZpZyh7bnVtQmFuZHM6e21pbjoxLG1heDo0fSxiYXNlSHo6e21pbjo2MDAsbWF4OjEyZTN9LHJhdGlvczpbMSxNYXRoLlNRUlQyLDUvNCw0LzMsMy8yLDJdLG9jdGF2ZXM6Wy0zLC0yLC0xLDAsMV0scTp7bWluOjYsbWF4OjE2fSxnYWluOnttaW46LjI1LG1heDouN30sY29tYkZlZWRiYWNrOnttaW46LjQsbWF4Oi43fSxjb21iRGVsYXlNdWx0OnttaW46MixtYXg6NX0sZGFtcE11bHRpcGxpZXI6M30pLGUucmVzb25hdG9yLnJlZ2VuZXJhdGVQYXJhbXMoKSxlLnJlc29uYXRvci51cGRhdGVQYXJhbXMoe3Jlc29uT246ITAscmVzb25NaXg6MX0pfWNhdGNoe319ZnVuY3Rpb24gZWMoZSl7Y29uc3Qgbj0oZT09bnVsbD92b2lkIDA6ZS5zaWRlKT09PSJCIj8iQiI6IkEiO3RjKGUpLG5jKGUsbil9ZnVuY3Rpb24gdGMoZSl7dmFyIG4sdCxhO2puKGUpO3RyeXtjb25zdHt0cmFja3M6cyxub3c6bX09ZTt0cnl7Y29uc3QgcD1lJiZlLm1hc3RlckJ1cyxTPXAmJnAubWFzdGVyQnVzT3V0cHV0JiZwLm1hc3RlckJ1c091dHB1dC5nYWluO1MmJk51bWJlci5pc0Zpbml0ZShtKSYmUy5zZXRWYWx1ZUF0VGltZSguOTIsbSl9Y2F0Y2h7fXRyeXtzLmtpY2suZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxLjEsbSl9Y2F0Y2h7fXRyeXtzLmhpaGF0LmdhaW4uc2V0VmFsdWVBdFRpbWUoLjYsbSl9Y2F0Y2h7fXRyeXtzLmZtQmxpcDEuZ2Fpbi5zZXRWYWx1ZUF0VGltZSguMjIsbSl9Y2F0Y2h7fXRyeXtzLmZtQmxpcDIuZ2Fpbi5zZXRWYWx1ZUF0VGltZSguNSxtKX1jYXRjaHt9dHJ5e3Mud29vZEJsb2NrLmdhaW4uc2V0VmFsdWVBdFRpbWUoLjU1LG0pfWNhdGNoe310cnl7cy50ZWNobm9TdGFiLmdhaW4uc2V0VmFsdWVBdFRpbWUoLjYsbSl9Y2F0Y2h7fXRyeXtzLmNsaWNrcy5nYWluLnNldFZhbHVlQXRUaW1lKC40NSxtKX1jYXRjaHt9dHJ5e3MuZmlsdGVyUGluZy5nYWluLnNldFZhbHVlQXRUaW1lKC42NSxtKX1jYXRjaHt9fWNhdGNoe310cnl7Zm9yKGNvbnN0IHMgb2ZbImhpaGF0IiwiZm1CbGlwMSIsImZtQmxpcDIiLCJ3b29kQmxvY2siLCJ0ZWNobm9TdGFiIiwiY2xpY2tzIiwiZmlsdGVyUGluZyIsImJhc3MiXSl7Y29uc3QgbT1lJiZlW3NdO3RyeXttJiYobS5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwPTEpfWNhdGNoe319fWNhdGNoe310cnl7aWYoZS5zaWduYWwmJigobj1lLnIpPT1udWxsP3ZvaWQgMDpuLmNhbGwoZSkpPC4yMil7Y29uc3R7ZmxhdDpzfT0oKGE9KHQ9ZS5zaWduYWwpLnJlZ2VuZXJhdGVQYXJhbXMpPT1udWxsP3ZvaWQgMDphLmNhbGwodCkpfHx7ZmxhdDpudWxsfTtzJiZ5ZShlLnNpZ25hbCxzLHtxdWFudGl6ZUJhcnM6MX0pLCgoZT09bnVsbD92b2lkIDA6ZS5zaWRlKT09PSJCIj8iQiI6IkEiKT09PSJBIj95ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kUSI6KE51bWJlcihzPT1udWxsP3ZvaWQgMDpzWyJzaWduYWwuYmFuZFEiXSl8fDEwKSoxLjA1fSx7cXVhbnRpemVCYXJzOjF9KTp5ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kUSI6KE51bWJlcihzPT1udWxsP3ZvaWQgMDpzWyJzaWduYWwuYmFuZFEiXSl8fDEwKSouOTZ9LHtxdWFudGl6ZUJhcnM6MX0pLHllKGUuc2lnbmFsLHsic2lnbmFsLmJhbmRCYXNlSHoiOjUwMCwic2lnbmFsLnNlbmRSZXZlcmIiOi4zNX0se3F1YW50aXplQmFyczoxfSl9fWNhdGNoe319ZnVuY3Rpb24gbmMoZSxuKXt2YXIgeCxPO2NvbnN0IHQ9a24oZSkse2tpY2s6YSxoaWhhdDpzLGZtQmxpcDE6bSxmbUJsaXAyOnAsd29vZEJsb2NrOlMsa2FycGx1czpQLHRlY2hub1N0YWI6TSxjbGlja3M6VCxmaWx0ZXJQaW5nOkcsYmFzczpFLHNpZ25hbDpMfT1lO3RyeXtjb25zdCB3PWUmJmUucGF0dGVybnMmJnR5cGVvZiBlLnBhdHRlcm5zPT0ib2JqZWN0IiYmZS5wYXR0ZXJucy5fYW1iaWVudEJpYXM/ZS5wYXR0ZXJucy5fYW1iaWVudEJpYXM6KGU9PW51bGw/dm9pZCAwOmUuYW1iaWVudEJpYXMpfHwibWlkIixvPXc9PT0idmVyeWxvb3NlInx8dz09PSJtaWQiLEM9W1siZm1CbGlwMSIsbV0sWyJmbUJsaXAyIixwXSxbInRlY2hub1N0YWIiLE1dLFsiZmlsdGVyUGluZyIsR11dO2Zvcihjb25zdFtjLGRdb2YgQyl7aWYoIWQpY29udGludWU7Y29uc3QgZz1vP3QoLjM1LC45KTp0KC4xMiwuNDUpLHU9bz90KC40NSwuNyk6dCguMTUsLjQpO3RyeXtkLnVwZGF0ZVBhcmFtcyh7W2Ake2N9LnNlbmREZWxheWBdOnQoLjEyLC42NSl9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7KE89KHg9ZS5zZW5kRGVsYXkpPT1udWxsP3ZvaWQgMDp4LnVwZGF0ZVBhcmFtcyk9PW51bGx8fE8uY2FsbCh4LHttb2RlOiJub3JtYWwiLHRpbWVTZWM6ZyxmZWVkYmFjazp1LHN5bmNlZDohMX0pfWNhdGNoe319fWNhdGNoe310cnl7Y29uc3Qgdz0oZT09bnVsbD92b2lkIDA6ZS5yKXx8TixvPU1hdGgubWF4KDMwLE1hdGgubWluKDQ4LE1hdGguZmxvb3IodygpKjE2KSszMCkpO3llKGEseyJraWNrLmhpZ2hQYXNzRmlsdGVyV2V0IjohMSwia2ljay50aW1icmUuYmFzZUZyZXEiOm8sImtpY2sudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjouMzJ9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7Y29uc3Qgdz17ImhpaGF0LnJldmVyYkRlY2F5Ijp0KDYsMTYpLCJoaWhhdC5zZW5kUmV2ZXJiIjp0KC4zNSwuODUpfTt5ZShzLHcse3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCB3PXsid29vZGJsb2NrLnRpbWJyZS5iYXNlSHoiOk1hdGguZmxvb3IodCg0MCwzMDApKSwid29vZGJsb2NrLnNlbmRSZXZlcmIiOjEsIndvb2RibG9jay5wYW5MRk9TaGFwZSI6InNpbmUiLCJ3b29kYmxvY2sucGFuTEZPQW1vdW50Ijp0KC4xLC45KSwid29vZGJsb2NrLnBhbkxGT1N5bmMiOiEwLCJ3b29kYmxvY2sucGFuTEZPRnJlcXVlbmN5Ijp0KC4wMSwuMil9O2lmKHllKFMsdyx7cXVhbnRpemVCYXJzOjF9KSxuPT09IkIiKXtjb25zdCBvPXpuKGUsIndvb2RCbG9jayIsdyk7T2JqZWN0LmtleXMobykubGVuZ3RoJiZ5ZShlLm5vaXNlUGVyYyxvLHtxdWFudGl6ZUJhcnM6MX0pfX1jYXRjaHt9dHJ5e2NvbnN0IHc9eyJmbUJsaXAxLmFtYmllbnRNb2RlIjohMCwiZm1CbGlwMS5iYXNlRnJlcSI6TWF0aC5mbG9vcih0KDI1LDEyMCkpLCJmbUJsaXAxLnNlbmRSZXZlcmIiOjEsImZtQmxpcDEudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIjouMDA0LCJmbUJsaXAxLnBhbkxGT1NoYXBlIjoic2FtcGxlSG9sZCIsImZtQmxpcDEucGFuTEZPQW1vdW50Ijp0KC4xLC45KSwiZm1CbGlwMS5wYW5MRk9TeW5jIjohMCwiZm1CbGlwMS5wYW5MRk9GcmVxdWVuY3kiOnQoLjA4LC45NSl9O2lmKHllKG0sdyx7cXVhbnRpemVCYXJzOjF9KSxuPT09IkIiKXtjb25zdCBvPXpuKGUsImZtQmxpcDEiLHcpO09iamVjdC5rZXlzKG8pLmxlbmd0aCYmeWUoZS5hY291c3RpY0RydW0sbyx7cXVhbnRpemVCYXJzOjF9KX19Y2F0Y2h7fXRyeXtjb25zdCB3PXsiZm1CbGlwMi5hbWJpZW50TW9kZSI6ITAsImZtQmxpcDIuYmFzZUZyZXEiOk1hdGguZmxvb3IodCgyMCwxMTApKSwiZm1CbGlwMi5zZW5kUmV2ZXJiIjp0KC43LDEpLCJmbUJsaXAyLnBhbkxGT1NoYXBlIjoic2FtcGxlSG9sZCIsImZtQmxpcDIucGFuTEZPQW1vdW50Ijp0KC4xLC45KSwiZm1CbGlwMi5wYW5MRk9TeW5jIjohMCwiZm1CbGlwMi5wYW5MRk9GcmVxdWVuY3kiOnQoLjA4LC45NSl9O2lmKHllKHAsdyx7cXVhbnRpemVCYXJzOjF9KSxuPT09IkIiKXtjb25zdCBvPXpuKGUsImZtQmxpcDIiLHcpO09iamVjdC5rZXlzKG8pLmxlbmd0aCYmeWUoZS5yZXNvUGluZyxvLHtxdWFudGl6ZUJhcnM6MX0pfX1jYXRjaHt9dHJ5e2NvbnN0IHc9eyJrYXJwbHVzLnNlbmRSZXZlcmIiOnQoLjY1LDEpfTt5ZShQLHcse3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCB3PXsidGVjaG5vU3RhYi5zZW5kUmV2ZXJiIjp0KC41LC45NSksInRlY2hub1N0YWIucGFuTEZPU2hhcGUiOiJzYW1wbGVIb2xkIiwidGVjaG5vU3RhYi5wYW5MRk9BbW91bnQiOnQoLjEsLjgpLCJ0ZWNobm9TdGFiLnBhbkxGT1N5bmMiOiEwLCJ0ZWNobm9TdGFiLnBhbkxGT0ZyZXF1ZW5jeSI6dCguMDgsLjk1KX07aWYoeWUoTSx3LHtxdWFudGl6ZUJhcnM6MX0pLG49PT0iQiIpe2NvbnN0IG89em4oZSwidGVjaG5vU3RhYiIsdyk7T2JqZWN0LmtleXMobykubGVuZ3RoJiZ5ZShlLnRvbSxvLHtxdWFudGl6ZUJhcnM6MX0pfX1jYXRjaHt9dHJ5e2NvbnN0IHc9eyJjbGlja3Muc2VuZFJldmVyYiI6dCguNDUsLjk1KSwiY2xpY2tzLnBhbkxGT1NoYXBlIjoic2FtcGxlSG9sZCIsImNsaWNrcy5wYW5MRk9BbW91bnQiOnQoLjEsLjgpLCJjbGlja3MucGFuTEZPU3luYyI6ITAsImNsaWNrcy5wYW5MRk9GcmVxdWVuY3kiOnQoLjA4LC45NSl9O3llKFQsdyx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e2NvbnN0IHc9eyJmaWx0ZXJQaW5nLnNlbmRSZXZlcmIiOnQoLjQ1LC45NSksImZpbHRlclBpbmcucGFuTEZPU2hhcGUiOiJzYW1wbGVIb2xkIiwiZmlsdGVyUGluZy5wYW5MRk9BbW91bnQiOnQoLjEsLjgpLCJmaWx0ZXJQaW5nLnBhbkxGT1N5bmMiOiEwLCJmaWx0ZXJQaW5nLnBhbkxGT0ZyZXF1ZW5jeSI6dCguMDgsLjk1KX07eWUoRyx3LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7eWUoYSx7ImtpY2suc2VuZFJldmVyYiI6dCguMTUsLjM1KX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXt5ZShFLHsiYmFzcy5zZW5kUmV2ZXJiIjp0KC4xLC4zKX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXt5ZShMLHsic2lnbmFsLnNlbmRSZXZlcmIiOnQoLjYsLjk1KX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtlIT1udWxsJiZlLnJpc2UmJnllKGUucmlzZSx7InJpc2Uuc2VuZFJldmVyYiI6dCguMzUsLjc1KX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCB3PWUuc2VuZERlbGF5O2lmKHcmJnR5cGVvZiB3LnVwZGF0ZVBhcmFtcz09ImZ1bmN0aW9uIil7Y29uc3QgZD10KDAsMSk8LjQ/ImR1YiI6Im5vcm1hbCIsZz10KC4zLC42KSx1PXQoLjE4LC44KSxiPVN0cmluZyhlPT1udWxsP3ZvaWQgMDplLnNpZGUpLnRvVXBwZXJDYXNlKCk9PT0iQiI7dy51cGRhdGVQYXJhbXMoe21vZGU6ZCxmZWVkYmFjazpnLHRpbWVTZWM6dSxzeW5jZWQ6ITF9KX1jb25zdCBvPVtbImhpaGF0IixzXSxbImZtQmxpcDEiLG1dLFsiZm1CbGlwMiIscF0sWyJ3b29kYmxvY2siLFNdLFsidGVjaG5vU3RhYiIsTV0sWyJjbGlja3MiLFRdLFsiZmlsdGVyUGluZyIsR10sWyJrYXJwbHVzIixQXV0uZmlsdGVyKChbZCxnXSk9PmcpO2Zvcihjb25zdFtkLGddb2Ygbyl5ZShnLHtbYCR7ZH0uc2VuZERlbGF5YF06MH0se3F1YW50aXplQmFyczoxfSk7Y29uc3QgQz1vLnNvcnQoKCk9Pnt2YXIgZDtyZXR1cm4oKChkPWUucik9PW51bGw/dm9pZCAwOmQuY2FsbChlKSl8fE4oKSktLjV9KSxjPU1hdGguZmxvb3IodCgxLDUpKTtmb3IobGV0IGQ9MDtkPE1hdGgubWluKGMsQy5sZW5ndGgpO2QrKyl7Y29uc3RbZyx1XT1DW2RdLGI9Zz09PSJoaWhhdCJ8fGc9PT0iY2xpY2tzIj90KC4wMDMsLjA0KTp0KC4xNSwuNzUpO3llKHUse1tgJHtnfS5zZW5kRGVsYXlgXTpifSx7cXVhbnRpemVCYXJzOjF9KX19Y2F0Y2h7fWlmKG49PT0iQiImJihlIT1udWxsJiZlLnJlc29uYXRvcikpdHJ5e2UucmVzb25hdG9yLnNldEdlbmVyYXRpdmVDb25maWcoe251bUJhbmRzOnttaW46NSxtYXg6MTR9LGJhc2VIejp7bWluOjUwMCxtYXg6MTRlM30scmF0aW9zOlsxLE1hdGguU1FSVDIsNS80LDQvMywzLzIsMl0sb2N0YXZlczpbLTUsLTQsLTMsLTIsLTEsMCwxXSxxOnttaW46NSxtYXg6MTh9LGdhaW46e21pbjouMixtYXg6Ljg1fSxjb21iRmVlZGJhY2s6e21pbjouMzUsbWF4Oi43NX0sY29tYkRlbGF5TXVsdDp7bWluOjIsbWF4OjZ9LGRhbXBNdWx0aXBsaWVyOjR9KSxlLnJlc29uYXRvci5yZWdlbmVyYXRlUGFyYW1zKCksZS5yZXNvbmF0b3IudXBkYXRlUGFyYW1zKHtyZXNvbk9uOiEwLHJlc29uTWl4OjF9KX1jYXRjaHt9fWZ1bmN0aW9uIGFjKGUpe2NvbnN0IG49KGU9PW51bGw/dm9pZCAwOmUuc2lkZSk9PT0iQiI/IkIiOiJBIjtzYyhlKSxpYyhlLG4pfWZ1bmN0aW9uIHNjKGUpe3ZhciB4LE8sdztqbihlKTtjb25zdHtub3c6bixyOnQsdHJhY2tzOmEsa2ljazpzLGhpaGF0Om0sZm1CbGlwMTpwLGZtQmxpcDI6Uyx3b29kQmxvY2s6UCx0ZWNobm9TdGFiOk0sY2xpY2tzOlQsZmlsdGVyUGluZzpHLGJhc3M6RX09ZTt0cnl7Y29uc3Qgbz1lJiZlLm1hc3RlckJ1cyxDPW8mJm8ubWFzdGVyQnVzT3V0cHV0JiZvLm1hc3RlckJ1c091dHB1dC5nYWluO0MmJk51bWJlci5pc0Zpbml0ZShuKSYmQy5zZXRWYWx1ZUF0VGltZSguOCxuKX1jYXRjaHt9bGV0IEw9ImFpcnkiO3RyeXtjb25zdCBvPWUmJmUuZmxhZ3M/ZS5mbGFncy5tb2RlVmFyaWFudHN8fChlLmZsYWdzLm1vZGVWYXJpYW50cz17fSk6bnVsbCxDPShlPT1udWxsP3ZvaWQgMDplLnIpfHxOO2lmKG8mJnR5cGVvZiBvLmJyZWFrPT0ic3RyaW5nIilMPW8uYnJlYWs7ZWxzZXtjb25zdCBjPVsiYWlyeSIsImRlbnNlSGF0Iiwid29iYmxlQmFzcyIsImRyeU1pbmltYWwiXTtMPWNbTWF0aC5mbG9vcihDKCkqYy5sZW5ndGgpXSxvJiYoby5icmVhaz1MKX19Y2F0Y2h7fWUuX192YXJpYW50QnJlYWs9TDt0cnl7bSYmKG0uY2hhbmdlVm9pY2VQYXJhbXNPbkV2ZXJ5U3RlcD0wKX1jYXRjaHt9Zm9yKGNvbnN0IG8gb2ZbcCxTLFAsTSxULEcsRV0pdHJ5e28mJihvLmNoYW5nZVZvaWNlUGFyYW1zT25FdmVyeVN0ZXA9MCl9Y2F0Y2h7fXRyeXthLmtpY2suZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxLG4pLGEuaGloYXQuZ2Fpbi5zZXRWYWx1ZUF0VGltZShlLl9fdmFyaWFudEJyZWFrPT09ImRlbnNlSGF0Ij8uOTouNzgsbiksYS5mbUJsaXAxLmdhaW4uc2V0VmFsdWVBdFRpbWUoLjcyLG4pLGEuZm1CbGlwMi5nYWluLnNldFZhbHVlQXRUaW1lKC43MixuKSxhLndvb2RCbG9jay5nYWluLnNldFZhbHVlQXRUaW1lKC43MixuKSxhLnRlY2hub1N0YWIuZ2Fpbi5zZXRWYWx1ZUF0VGltZSguNyxuKSxhLmZpbHRlclBpbmcuZ2Fpbi5zZXRWYWx1ZUF0VGltZSguNzIsbil9Y2F0Y2h7fXRyeXtpZihlLnNpZ25hbCYmKCh4PWUucik9PW51bGw/dm9pZCAwOnguY2FsbChlKSk8LjIpe2NvbnN0e2ZsYXQ6b309KCh3PShPPWUuc2lnbmFsKS5yZWdlbmVyYXRlUGFyYW1zKT09bnVsbD92b2lkIDA6dy5jYWxsKE8pKXx8e2ZsYXQ6bnVsbH07byYmeWUoZS5zaWduYWwsbyx7cXVhbnRpemVCYXJzOjF9KSwoKGU9PW51bGw/dm9pZCAwOmUuc2lkZSk9PT0iQiI/IkIiOiJBIik9PT0iQSI/eWUoZS5zaWduYWwseyJzaWduYWwuYmFuZFEiOihOdW1iZXIobz09bnVsbD92b2lkIDA6b1sic2lnbmFsLmJhbmRRIl0pfHwxMCkqMS4wNX0se3F1YW50aXplQmFyczoxfSk6eWUoZS5zaWduYWwseyJzaWduYWwuYmFuZFEiOihOdW1iZXIobz09bnVsbD92b2lkIDA6b1sic2lnbmFsLmJhbmRRIl0pfHwxMCkqLjk2fSx7cXVhbnRpemVCYXJzOjF9KSx5ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kQmFzZUh6Ijo1MDAsInNpZ25hbC5zZW5kUmV2ZXJiIjouMzV9LHtxdWFudGl6ZUJhcnM6MX0pfX1jYXRjaHt9fWZ1bmN0aW9uIGljKGUsbil7dmFyIG8sQyxjO2NvbnN0IHQ9X24oZSksYT1HYShlKSxzPWtuKGUpLHt0ZW1wb0JwbTptLGtpY2s6cCxoaWhhdDpTLGZtQmxpcDE6UCxmbUJsaXAyOk0sd29vZEJsb2NrOlQsa2FycGx1czpHLHRlY2hub1N0YWI6RSxjbGlja3M6TCxmaWx0ZXJQaW5nOngsYmFzczpPfT1lLHc9ZS5fX3ZhcmlhbnRCcmVha3x8ImFpcnkiO3RyeXt5ZShwLHsia2ljay5oaWdoUGFzc0ZpbHRlcldldCI6ITB9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7eWUoUCx7ImZtQmxpcDEuYW1iaWVudE1vZGUiOiExfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e3llKE0seyJmbUJsaXAyLmFtYmllbnRNb2RlIjohMX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCBkPShlPT1udWxsP3ZvaWQgMDplLnIpfHxOO3llKFMseyJoaWhhdC5zZW5kUmV2ZXJiIjowfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e2xldCBnPS4wOCsoKGU9PW51bGw/dm9pZCAwOmUucil8fE4pKCkqLjE0O3llKHgseyJmaWx0ZXJQaW5nLnNlbmRSZXZlcmIiOmd9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7eWUoTyx7ImJhc3MucGxheU1vZGUiOiJob2xkbm90ZSIsImJhc3MubGZvV2F2ZSI6dChbInNpbmUiLCJ0cmlhbmdsZSIsInNhd3Rvb3RoIl0pLCJiYXNzLmxmb1JhdGVTdGVwcyI6YSh3PT09IndvYmJsZUJhc3MiP1szLDQsNiw4XTpbMiwzLDQsNiw4LDEyXSksImJhc3MubGZvU3ViZGl2aXNpb24iOnc9PT0id29iYmxlQmFzcyI/dChbInN0cmFpZ2h0IiwiZG90dGVkIl0pOiJzdHJhaWdodCIsImJhc3MubGZvRGVwdGgiOnModz09PSJ3b2JibGVCYXNzIj8uNzU6LjYsMSl9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7Y29uc3QgZD0oZT09bnVsbD92b2lkIDA6ZS5yKXx8Tjt5ZShFLHsidGVjaG5vU3RhYi5zZW5kUmV2ZXJiIjp3PT09ImFpcnkiPy4yODouMjJ9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7Y29uc3QgZD0oZT09bnVsbD92b2lkIDA6ZS5yKXx8TjtHJiZkKCk8LjcmJnllKEcseyJrYXJwbHVzLnNlbmRSZXZlcmIiOi4wMitkKCkqLjA2LCJrYXJwbHVzLnBhbkxGT0Ftb3VudCI6LjIrZCgpKi4zLCJrYXJwbHVzLnBhbkxGT1N5bmMiOiEwLCJrYXJwbHVzLnBhbkxGT1NoYXBlIjoidHJpYW5nbGUiLCJrYXJwbHVzLnBhbkxGT0ZyZXF1ZW5jeSI6LjIrZCgpKi4zfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e2NvbnN0IGQ9ZS5zZW5kRGVsYXk7aWYoZCYmdHlwZW9mIGQudXBkYXRlUGFyYW1zPT0iZnVuY3Rpb24iKXtjb25zdCBoPSgobz1lLnIpPT1udWxsP3ZvaWQgMDpvLmNhbGwoZSkpfHxOKCksZj1oPC40PyJwaW5ncG9uZyI6ImR1YiIseT1oKi4zNSsuMzUsXz1oKi4yKy4xNjtkLnVwZGF0ZVBhcmFtcyh7bW9kZTpmLGZlZWRiYWNrOnksdGltZVNlYzpfLHN5bmNlZDohMX0pfWNvbnN0IGc9W1siaGloYXQiLFNdLFsiZm1CbGlwMSIsUF0sWyJmbUJsaXAyIixNXSxbIndvb2RibG9jayIsVF0sWyJ0ZWNobm9TdGFiIixFXSxbImNsaWNrcyIsTF0sWyJmaWx0ZXJQaW5nIix4XSxbImthcnBsdXMiLEddXS5maWx0ZXIoKFtoLGZdKT0+Zik7Zm9yKGNvbnN0W2gsZl1vZiBnKXllKGYse1tgJHtofS5zZW5kRGVsYXlgXTowfSx7cXVhbnRpemVCYXJzOjF9KTtjb25zdCB1PWcuc29ydCgoKT0+e3ZhciBoO3JldHVybigoKGg9ZS5yKT09bnVsbD92b2lkIDA6aC5jYWxsKGUpKXx8TigpKS0uNX0pLGI9TWF0aC5mbG9vcigoKChDPWUucik9PW51bGw/dm9pZCAwOkMuY2FsbChlKSl8fE4oKSkqNCkrMTtmb3IobGV0IGg9MDtoPE1hdGgubWluKGIsdS5sZW5ndGgpO2grKyl7Y29uc3RbZix5XT11W2hdLF89U3RyaW5nKGU9PW51bGw/dm9pZCAwOmUuc2lkZSkudG9VcHBlckNhc2UoKT09PSJCIixIPSgoYz1lLnIpPT1udWxsP3ZvaWQgMDpjLmNhbGwoZSkpfHxOKCksVj1mPT09ImhpaGF0Inx8Zj09PSJjbGlja3MiP18/MDouMDAxK0gqLjAxOTouMTIrSCouMzg7eWUoeSx7W2Ake2Z9LnNlbmREZWxheWBdOlZ9LHtxdWFudGl6ZUJhcnM6MX0pfX1jYXRjaHt9aWYobj09PSJCIiYmKGUhPW51bGwmJmUucmVzb25hdG9yKSl0cnl7ZS5yZXNvbmF0b3Iuc2V0R2VuZXJhdGl2ZUNvbmZpZyh7bnVtQmFuZHM6e21pbjoxLG1heDo0fSxiYXNlSHo6e21pbjoyMDAsbWF4OjNlM30scmF0aW9zOlsxLDUvNCw0LzMsMy8yLDJdLG9jdGF2ZXM6Wy0yLC0xLDBdLHE6e21pbjo2LG1heDoxNn0sZ2Fpbjp7bWluOi4yNSxtYXg6LjY1fSxjb21iRmVlZGJhY2s6e21pbjouMzUsbWF4Oi41OH0sY29tYkRlbGF5TXVsdDp7bWluOjIsbWF4OjZ9LGRhbXBNdWx0aXBsaWVyOjN9KSxlLnJlc29uYXRvci5yZWdlbmVyYXRlUGFyYW1zKCksZS5yZXNvbmF0b3IudXBkYXRlUGFyYW1zKHtyZXNvbk9uOiEwLHJlc29uTWl4OjF9KX1jYXRjaHt9fWZ1bmN0aW9uIGNjKGUpe2NvbnN0IG49KGU9PW51bGw/dm9pZCAwOmUuc2lkZSk9PT0iQiI/IkIiOiJBIjtvYyhlKSxyYyhlLG4pfWZ1bmN0aW9uIG9jKGUpe3ZhciBFLEwseDtqbihlKTtjb25zdHtub3c6bix0cmFja3M6dCxraWNrOmEsaGloYXQ6cyxmbUJsaXAxOm0sZm1CbGlwMjpwLHdvb2RCbG9jazpTLHRlY2hub1N0YWI6UCxjbGlja3M6TSxmaWx0ZXJQaW5nOlQsYmFzczpHfT1lO3RyeXtjb25zdCBPPWUmJmUubWFzdGVyQnVzLHc9TyYmTy5tYXN0ZXJCdXNPdXRwdXQmJk8ubWFzdGVyQnVzT3V0cHV0LmdhaW47dyYmTnVtYmVyLmlzRmluaXRlKG4pJiZ3LnNldFZhbHVlQXRUaW1lKC44LG4pfWNhdGNoe310cnl7Zm9yKGNvbnN0IE8gb2ZbcyxtLHAsUyxQLE0sVCxHXSlPJiYoTy5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwPTApfWNhdGNoe310cnl7dC5raWNrLmdhaW4uc2V0VmFsdWVBdFRpbWUoMS4wNSxuKSx0LmhpaGF0LmdhaW4uc2V0VmFsdWVBdFRpbWUoLjc4LG4pLHQuZm1CbGlwMS5nYWluLnNldFZhbHVlQXRUaW1lKC43NSxuKSx0LmZtQmxpcDIuZ2Fpbi5zZXRWYWx1ZUF0VGltZSguNzUsbiksdC53b29kQmxvY2suZ2Fpbi5zZXRWYWx1ZUF0VGltZSguMyxuKSx0LnRlY2hub1N0YWIuZ2Fpbi5zZXRWYWx1ZUF0VGltZSguNyxuKSx0LmNsaWNrcy5nYWluLnNldFZhbHVlQXRUaW1lKC40NSxuKSx0LmZpbHRlclBpbmcuZ2Fpbi5zZXRWYWx1ZUF0VGltZSguNixuKX1jYXRjaHt9dHJ5e2lmKGUuc2lnbmFsJiYoKEU9ZS5yKT09bnVsbD92b2lkIDA6RS5jYWxsKGUpKTwuMil7Y29uc3R7ZmxhdDpPfT0oKHg9KEw9ZS5zaWduYWwpLnJlZ2VuZXJhdGVQYXJhbXMpPT1udWxsP3ZvaWQgMDp4LmNhbGwoTCkpfHx7ZmxhdDpudWxsfTtPJiZ5ZShlLnNpZ25hbCxPLHtxdWFudGl6ZUJhcnM6MX0pLCgoZT09bnVsbD92b2lkIDA6ZS5zaWRlKT09PSJCIj8iQiI6IkEiKT09PSJBIj95ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kUSI6KE51bWJlcihPPT1udWxsP3ZvaWQgMDpPWyJzaWduYWwuYmFuZFEiXSl8fDEwKSoxLjA1fSx7cXVhbnRpemVCYXJzOjF9KTp5ZShlLnNpZ25hbCx7InNpZ25hbC5iYW5kUSI6KE51bWJlcihPPT1udWxsP3ZvaWQgMDpPWyJzaWduYWwuYmFuZFEiXSl8fDEwKSouOTZ9LHtxdWFudGl6ZUJhcnM6MX0pLHllKGUuc2lnbmFsLHsic2lnbmFsLmJhbmRCYXNlSHoiOjUwMCwic2lnbmFsLnNlbmRSZXZlcmIiOi4zNX0se3F1YW50aXplQmFyczoxfSl9fWNhdGNoe319ZnVuY3Rpb24gcmMoZSxuKXt2YXIgdyxvLEMsYztjb25zdCB0PV9uKGUpLGE9R2EoZSkscz1rbihlKSx7dGVtcG9CcG06bSxraWNrOnAsaGloYXQ6UyxmbUJsaXAxOlAsZm1CbGlwMjpNLHdvb2RCbG9jazpULGthcnBsdXM6Ryx0ZWNobm9TdGFiOkUsY2xpY2tzOkwsZmlsdGVyUGluZzp4LGJhc3M6T309ZTt0cnl7Y29uc3QgZD0oZT09bnVsbD92b2lkIDA6ZS5yKXx8TixnPU1hdGgubWF4KDMwLE1hdGgubWluKDU4LE1hdGguZmxvb3IoZCgpKjIzKSszNikpO3llKHAseyJraWNrLmhpZ2hQYXNzRmlsdGVyV2V0IjohMSwia2ljay50aW1icmUuYmFzZUZyZXEiOmd9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7eWUoUCx7ImZtQmxpcDEuYW1iaWVudE1vZGUiOiExLCJmbUJsaXAxLm1vZGUiOiJwZXJjdXNzaXZlIiwiZm1CbGlwMS5mbS5iYXNlSHoiOjE4MCtzKDAsMTIwKSwiZm1CbGlwMS5lbnZlbG9wZS5hdHRhY2siOnMoNWUtNCwuMDAyKSwiZm1CbGlwMS5lbnZlbG9wZS5kZWNheSI6cyguMDA4LC4wMjUpLCJmbUJsaXAxLmVudmVsb3BlLnJlbGVhc2UiOnMoLjAxLC4wMyl9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7eWUoTSx7ImZtQmxpcDIuYW1iaWVudE1vZGUiOiExLCJmbUJsaXAyLm1vZGUiOiJwZXJjdXNzaXZlIiwiZm1CbGlwMi50aW1icmUuY2Fycmllckh6IjoxNTArcygwLDEwMCksImZtQmxpcDIuZW52ZWxvcGUuYW1wLmF0dGFjayI6cyg1ZS00LC4wMDIpLCJmbUJsaXAyLmVudmVsb3BlLmFtcC5kZWNheSI6cyguMDEsLjAzKSwiZm1CbGlwMi5lbnZlbG9wZS5hbXAucmVsZWFzZSI6cyguMDEyLC4wMzUpfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e3llKE8seyJiYXNzLnNlbmRSZXZlcmIiOjB9LHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7Y29uc3QgZD1TdHJpbmcoZT09bnVsbD92b2lkIDA6ZS5zaWRlKS50b1VwcGVyQ2FzZSgpPT09IkIiLGc9eyJiYXNzLmxmb1dhdmUiOnQoWyJzaW5lIiwidHJpYW5nbGUiLCJzYXd0b290aCJdKSwiYmFzcy5sZm9SYXRlU3RlcHMiOmEoWzIsMyw0LDYsOCwxMiwxNiwyNF0pLCJiYXNzLmxmb1N1YmRpdmlzaW9uIjp0KFsic3RyYWlnaHQiLCJkb3R0ZWQiLCJ0cmlwbGV0Il0pfTtkP09iamVjdC5hc3NpZ24oZyx7ImJhc3MucGxheU1vZGUiOiJub3JtYWwiLCJiYXNzLmxmb0RlcHRoIjpzKC4yLC42KSwiYmFzcy5vdXRwdXRHYWluIjpzKC4xOCwuMyl9KTpPYmplY3QuYXNzaWduKGcseyJiYXNzLnBsYXlNb2RlIjoiaG9sZG5vdGUiLCJiYXNzLmxmb0RlcHRoIjpzKC40LDEpLCJiYXNzLm91dHB1dEdhaW4iOnMoLjE4LC4yOCl9KSx5ZShPLGcse3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCBkPXsiaGloYXQuc2VuZFJldmVyYiI6MCwiaGloYXQucGFuTEZPU2hhcGUiOiJzaW5lIiwiaGloYXQucGFuTEZPQW1vdW50IjpzKC4yLC41KSwiaGloYXQucGFuTEZPU3luYyI6ITAsImhpaGF0LnBhbkxGT0ZyZXF1ZW5jeSI6cyguMDUsLjI1KX07eWUoUyxkLHtxdWFudGl6ZUJhcnM6MX0pfWNhdGNoe310cnl7RyYmeWUoRyx7ImthcnBsdXMuc2VuZFJldmVyYiI6cyguMDIsLjA4KSwia2FycGx1cy5wYW5MRk9TaGFwZSI6InRyaWFuZ2xlIiwia2FycGx1cy5wYW5MRk9BbW91bnQiOnMoLjIsLjUpLCJrYXJwbHVzLnBhbkxGT1N5bmMiOiEwLCJrYXJwbHVzLnBhbkxGT0ZyZXF1ZW5jeSI6cyguMDgsLjM1KX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCBkPWUuc2VuZERlbGF5O2lmKGQmJnR5cGVvZiBkLnVwZGF0ZVBhcmFtcz09ImZ1bmN0aW9uIil7Y29uc3QgaD1zKDAsMSk8LjU/Im5vcm1hbCI6InBpbmdwb25nIixmPXMoLjMsLjYpLHk9cyguMDgsLjQpO2QudXBkYXRlUGFyYW1zKHttb2RlOmgsZmVlZGJhY2s6Zix0aW1lU2VjOnksc3luY2VkOiExfSl9Y29uc3QgZz1bWyJoaWhhdCIsU10sWyJmbUJsaXAxIixQXSxbImZtQmxpcDIiLE1dLFsid29vZGJsb2NrIixUXSxbInRlY2hub1N0YWIiLEVdLFsiY2xpY2tzIixMXSxbImZpbHRlclBpbmciLHhdLFsia2FycGx1cyIsR11dLmZpbHRlcigoW2gsZl0pPT5mKTtmb3IoY29uc3RbaCxmXW9mIGcpeWUoZix7W2Ake2h9LnNlbmREZWxheWBdOjB9LHtxdWFudGl6ZUJhcnM6MX0pO2NvbnN0IHU9Zy5zb3J0KCgpPT57dmFyIGg7cmV0dXJuKCgoaD1lLnIpPT1udWxsP3ZvaWQgMDpoLmNhbGwoZSkpfHxOKCkpLS41fSksYj1NYXRoLmZsb29yKHMoMSw1KSk7Zm9yKGxldCBoPTA7aDxNYXRoLm1pbihiLHUubGVuZ3RoKTtoKyspe2NvbnN0W2YseV09dVtoXSxfPVN0cmluZyhlPT1udWxsP3ZvaWQgMDplLnNpZGUpLnRvVXBwZXJDYXNlKCk9PT0iQiIsSD1mPT09ImhpaGF0Inx8Zj09PSJjbGlja3MiP18/MDpzKC4wMDEsLjAyKTpzKC4wOCwuMzUpO3llKHkse1tgJHtmfS5zZW5kRGVsYXlgXTpIfSx7cXVhbnRpemVCYXJzOjF9KX19Y2F0Y2h7fXRyeXtpZihQJiZ0eXBlb2YgUC5nZXRGbGF0UGFyYW1zPT0iZnVuY3Rpb24iKXtjb25zdCBkPVAuZ2V0RmxhdFBhcmFtcygpLGc9ZCYmZFsiZm1CbGlwMS5tb2RlIl07aWYoQXJyYXkuaXNBcnJheShnKT9nLnNvbWUoYj0+U3RyaW5nKGIpLnRvTG93ZXJDYXNlKCk9PT0id2FybSIpOnR5cGVvZiBnPT0ic3RyaW5nIiYmU3RyaW5nKGcpLnRvTG93ZXJDYXNlKCk9PT0id2FybSIpe2NvbnN0IGI9TnVtYmVyKGRbImZtQmxpcDEudm9pY2VTcGVjaWZpYy5vdXRwdXRHYWluIl0pLGg9TnVtYmVyLmlzRmluaXRlKGIpP01hdGgubWF4KC4wMDIsYiouNik6LjAwNDt5ZShQLHsiZm1CbGlwMS52b2ljZVNwZWNpZmljLm91dHB1dEdhaW4iOmh9LHtxdWFudGl6ZUJhcnM6MX0pfX19Y2F0Y2h7fXRyeXtjb25zdCBkPXsidGVjaG5vU3RhYi5yZXZlcmJEZWNheSI6LjgsInRlY2hub1N0YWIucmV2ZXJiTWl4IjouMDgsInRlY2hub1N0YWIucmV2ZXJiTWFrZVVwR2FpbiI6NH07aWYoeWUoRSxkLHtxdWFudGl6ZUJhcnM6MX0pLG49PT0iQiIpe2NvbnN0IGc9em4oZSwidGVjaG5vU3RhYiIsZCk7T2JqZWN0LmtleXMoZykubGVuZ3RoJiZ5ZShlLnRvbSxnLHtxdWFudGl6ZUJhcnM6MX0pfX1jYXRjaHt9dHJ5e3llKEwseyJjbGlja3Muc2VuZFJldmVyYiI6cyguMDIsLjA4KSwiY2xpY2tzLnBhbkxGT1NoYXBlIjoic2luZSIsImNsaWNrcy5wYW5MRk9BbW91bnQiOnMoLjE1LC40NSksImNsaWNrcy5wYW5MRk9TeW5jIjohMCwiY2xpY2tzLnBhbkxGT0ZyZXF1ZW5jeSI6cyguMDUsLjIpfSx7cXVhbnRpemVCYXJzOjF9KX1jYXRjaHt9dHJ5e3llKHgseyJmaWx0ZXJQaW5nLmRlY2F5IjpzKC4zLC41NSksImZpbHRlclBpbmcucmVsZWFzZSI6cyguMiwuNSksImZpbHRlclBpbmcucGl0Y2hFbnZTZWNvbmRzIjpzKC4wOCwuMiksImZpbHRlclBpbmcucGl0Y2hEcm9wUmF0aW8iOnMoLjc4LC45NSksImZpbHRlclBpbmcuc2VuZFJldmVyYiI6cyguMDQsLjEyKX0se3F1YW50aXplQmFyczoxfSl9Y2F0Y2h7fXRyeXtjb25zdCBkPSJtb2RlOmJyZWFrYmVhdCI7ZS5zbmFwc2hvdHMmJnR5cGVvZiBlLnNuYXBzaG90cy5yZXN0b3JlPT0iZnVuY3Rpb24iJiYoKG89KHc9ZS5zbmFwc2hvdHMpLmhhcykhPW51bGwmJm8uY2FsbCh3LGQpP2Uuc25hcHNob3RzLnJlc3RvcmUoZCx7cXVhbnRpemVCYXJzOjB9KTooYz0oQz1lLnNuYXBzaG90cykuY2FwdHVyZSk9PW51bGx8fGMuY2FsbChDLGQpKX1jYXRjaHt9aWYobj09PSJCIiYmKGUhPW51bGwmJmUucmVzb25hdG9yKSl0cnl7ZS5yZXNvbmF0b3Iuc2V0R2VuZXJhdGl2ZUNvbmZpZyh7bnVtQmFuZHM6e21pbjoxLG1heDozfSxiYXNlSHo6e21pbjozMDAsbWF4OjZlM30scmF0aW9zOlsxLDQvMywzLzIsTWF0aC5TUVJUMiwyXSxvY3RhdmVzOlstMiwtMSwwLDFdLHE6e21pbjo4LG1heDoxOH0sZ2Fpbjp7bWluOi4yNSxtYXg6Ljd9LGNvbWJGZWVkYmFjazp7bWluOi4zNSxtYXg6LjZ9LGNvbWJEZWxheU11bHQ6e21pbjoyLG1heDo2fSxkYW1wTXVsdGlwbGllcjozfSksZS5yZXNvbmF0b3IucmVnZW5lcmF0ZVBhcmFtcygpLGUucmVzb25hdG9yLnVwZGF0ZVBhcmFtcyh7cmVzb25PbjohMCxyZXNvbk1peDoxfSl9Y2F0Y2h7fX1jb25zdCBvbj17YW1iaWVudE91dDp7c291bmRSZWdlbmVyYXRpb246Ljksdm9pY2VSZWdlbmVyYXRpb246LjgsZWZmZWN0czp7cmV2ZXJiOiExfX0sYnJlYWtPdXQ6e3NvdW5kUmVnZW5lcmF0aW9uOi4yNSx2b2ljZVJlZ2VuZXJhdGlvbjouMjUsZWZmZWN0czp7cmV2ZXJiOiEwfX0sYnJlYWtiZWF0T3V0Ontzb3VuZFJlZ2VuZXJhdGlvbjouMjUsdm9pY2VSZWdlbmVyYXRpb246LjIsZWZmZWN0czp7cmV2ZXJiOiEwfX0sc3RyYWlnaHRPdXQ6e3NvdW5kUmVnZW5lcmF0aW9uOi4yNSx2b2ljZVJlZ2VuZXJhdGlvbjouMixlZmZlY3RzOntyZXZlcmI6ITB9fSxzZWxmOntzb3VuZFJlZ2VuZXJhdGlvbjowLHZvaWNlUmVnZW5lcmF0aW9uOjAsZWZmZWN0czp7cmV2ZXJiOiEwfX19LGxjPXticmVha2JlYXQ6e2VmZmVjdHM6e3JldmVyYjohMX19LHN0cmFpZ2h0Ontzb3VuZFJlZ2VuZXJhdGlvbjouMTUsdm9pY2VSZWdlbmVyYXRpb246LjI1fX0sdWM9e2JyZWFrOntzb3VuZFJlZ2VuZXJhdGlvbjouMix2b2ljZVJlZ2VuZXJhdGlvbjouM30sYnJlYWtiZWF0Ontzb3VuZFJlZ2VuZXJhdGlvbjouMjUsdm9pY2VSZWdlbmVyYXRpb246LjM1fSxzdHJhaWdodDp7c291bmRSZWdlbmVyYXRpb246LjIsdm9pY2VSZWdlbmVyYXRpb246LjN9fTtmdW5jdGlvbiBwYyhlKXtjb25zdCBuPU1hdGgubWluKDEsTWF0aC5tYXgoMCxOdW1iZXIoZT09bnVsbD92b2lkIDA6ZS5zb3VuZFJlZ2VuZXJhdGlvbil8fDApKSx0PU1hdGgubWluKDEsTWF0aC5tYXgoMCxOdW1iZXIoZT09bnVsbD92b2lkIDA6ZS52b2ljZVJlZ2VuZXJhdGlvbil8fDApKSxzPSgoZT09bnVsbD92b2lkIDA6ZS5lZmZlY3RzKXx8e30pLnJldmVyYiE9PSExO3JldHVybntzb3VuZFJlZ2VuZXJhdGlvbjpuLHZvaWNlUmVnZW5lcmF0aW9uOnQsZWZmZWN0czp7cmV2ZXJiOnN9fX1mdW5jdGlvbiBtYyhlLG4sdD17fSl7Y29uc3QgYT10JiZ0LmZsYWdzJiZ0LmZsYWdzLnRyYW5zaXRpb25NYXRyaXh8fG51bGwscz1SbixtPXthbWJpZW50Om9uLmFtYmllbnRPdXQsYnJlYWs6b24uYnJlYWtPdXQsYnJlYWtiZWF0Om9uLmJyZWFrYmVhdE91dCxzdHJhaWdodDpvbi5zdHJhaWdodE91dCxmbHV4R3JpZDpvbi5zdHJhaWdodE91dH0scD17fTtmb3IoY29uc3QgTSBvZiBzKXtwW01dPXt9O2Zvcihjb25zdCBUIG9mIHMpaWYoTT09PVQpe2NvbnN0IEc9b24uc2VsZixFPWxjW01dfHx7fTtwW01dW1RdPXtzb3VuZFJlZ2VuZXJhdGlvbjpFLnNvdW5kUmVnZW5lcmF0aW9uPz9HLnNvdW5kUmVnZW5lcmF0aW9uLHZvaWNlUmVnZW5lcmF0aW9uOkUudm9pY2VSZWdlbmVyYXRpb24/P0cudm9pY2VSZWdlbmVyYXRpb24sZWZmZWN0czp7cmV2ZXJiOkUuZWZmZWN0cyYmInJldmVyYiJpbiBFLmVmZmVjdHM/RS5lZmZlY3RzLnJldmVyYjpHLmVmZmVjdHMucmV2ZXJifX19ZWxzZSBpZihUPT09ImFtYmllbnQiKXtjb25zdCBHPXtzb3VuZFJlZ2VuZXJhdGlvbjouMix2b2ljZVJlZ2VuZXJhdGlvbjouMyxlZmZlY3RzOntyZXZlcmI6ITB9fSxFPXVjW01dfHx7fTtwW01dW1RdPXtzb3VuZFJlZ2VuZXJhdGlvbjpFLnNvdW5kUmVnZW5lcmF0aW9uPz9HLnNvdW5kUmVnZW5lcmF0aW9uLHZvaWNlUmVnZW5lcmF0aW9uOkUudm9pY2VSZWdlbmVyYXRpb24/P0cudm9pY2VSZWdlbmVyYXRpb24sZWZmZWN0czp7cmV2ZXJiOiEwfX19ZWxzZXtjb25zdCBHPW1bTV18fG9uLnN0cmFpZ2h0T3V0O3BbTV1bVF09e3NvdW5kUmVnZW5lcmF0aW9uOkcuc291bmRSZWdlbmVyYXRpb24sdm9pY2VSZWdlbmVyYXRpb246Ry52b2ljZVJlZ2VuZXJhdGlvbixlZmZlY3RzOntyZXZlcmI6Ry5lZmZlY3RzLnJldmVyYn19fX1jb25zdCBQPSgoYT09bnVsbD92b2lkIDA6YVtlXSl8fHBbZV18fHt9KVtuXXx8e3NvdW5kUmVnZW5lcmF0aW9uOjAsdm9pY2VSZWdlbmVyYXRpb246MCxlZmZlY3RzOntyZXZlcmI6ITB9fTtyZXR1cm4gcGMoUCl9Y29uc3QgZmM9e2FtYmllbnQ6ZWMsYnJlYWs6YWMsYnJlYWtiZWF0OmNjLHN0cmFpZ2h0OldpLGZsdXhHcmlkOlhpfSxMcz1lPT5bWyJraWNrIixlLmtpY2tdLFsiaGloYXQiLGUuaGloYXRdLFsiZm1CbGlwMSIsZS5mbUJsaXAxXSxbImZtQmxpcDIiLGUuZm1CbGlwMl0sWyJ3b29kYmxvY2siLGUud29vZEJsb2NrXSxbImthcnBsdXMiLGUua2FycGx1c10sWyJ0ZWNobm9TdGFiIixlLnRlY2hub1N0YWJdLFsiY2xpY2tzIixlLmNsaWNrc10sWyJmaWx0ZXJQaW5nIixlLmZpbHRlclBpbmddLFsiYmFzcyIsZS5iYXNzXSxbImFjb3VzdGljRHJ1bSIsZS5hY291c3RpY0RydW1dLFsicmVzb1BpbmciLGUucmVzb1BpbmddLFsibm9pc2VQZXJjIixlLm5vaXNlUGVyY10sWyJ0b20iLGUudG9tXV0saGM9ZT0+W1siaGloYXQiLGUuaGloYXRdLFsiZm1CbGlwMSIsZS5mbUJsaXAxXSxbImZtQmxpcDIiLGUuZm1CbGlwMl0sWyJ3b29kYmxvY2siLGUud29vZEJsb2NrXSxbImthcnBsdXMiLGUua2FycGx1c10sWyJ0ZWNobm9TdGFiIixlLnRlY2hub1N0YWJdLFsiY2xpY2tzIixlLmNsaWNrc11dLGRjPVsiaGloYXQiLCJmbUJsaXAxIiwiZm1CbGlwMiIsIndvb2RibG9jayIsImthcnBsdXMiLCJ0ZWNobm9TdGFiIiwiY2xpY2tzIiwiZmlsdGVyUGluZyIsImJhc3MiXTtmdW5jdGlvbiBMdChlLG4sdCl7dmFyIGE7dHJ5eyhhPWU9PW51bGw/dm9pZCAwOmUudXBkYXRlUGFyYW1zKT09bnVsbHx8YS5jYWxsKGUsbix0KX1jYXRjaHt9fWZ1bmN0aW9uIHljKGUpe2NvbnN0e2F1ZGlvQ29udGV4dDpuLHI6dCwuLi5hfT1lfHx7fTtyZXR1cm57Li4uYSxhdWRpb0NvbnRleHQ6bixub3c6bj09bnVsbD92b2lkIDA6bi5jdXJyZW50VGltZSxyOnQsYnBtOmNpKGUpPz8xMjB9fWZ1bmN0aW9uIGdjKGUpe3ZhciBuLHQsYSxzO3RyeXtjb25zdHtzZWN0aW9uTW9kZTptLGZtQmxpcDE6cCxmbUJsaXAyOlMsYmFzczpQLHI6TX09ZTtpZihtPT09ImZsdXhHcmlkIiYmKEx0KHAseyJmbUJsaXAxLmFtYmllbnRNb2RlIjohMH0pLEx0KFMseyJmbUJsaXAyLmFtYmllbnRNb2RlIjohMH0pKSxQKWlmKFN0cmluZyhlPT1udWxsP3ZvaWQgMDplLnNlY3Rpb25Nb2RlKT09PSJzdHJhaWdodCIpTHQoUCx7ImJhc3MucGxheU1vZGUiOiJub3JtYWwiLCJiYXNzLmxmb0RlcHRoIjowfSk7ZWxzZXtjb25zdCBHPVN0cmluZyhlPT1udWxsP3ZvaWQgMDplLnNpZGUpLnRvVXBwZXJDYXNlKCk9PT0iQiIsRT1HP01hdGgubWF4KDAsTWF0aC5taW4oLjYsTnVtYmVyKCh0PShuPVA9PW51bGw/dm9pZCAwOlAucGFyYW1zKT09bnVsbD92b2lkIDA6bi5iYXNzKT09bnVsbD92b2lkIDA6dC5sZm9EZXB0aCl8fC40KSk6TWF0aC5tYXgoLjQsTnVtYmVyKChzPShhPVA9PW51bGw/dm9pZCAwOlAucGFyYW1zKT09bnVsbD92b2lkIDA6YS5iYXNzKT09bnVsbD92b2lkIDA6cy5sZm9EZXB0aCl8fC40KTtpZihMdChQLHsiYmFzcy5wbGF5TW9kZSI6Rz8ibm9ybWFsIjoiaG9sZG5vdGUiLCJiYXNzLmxmb0RlcHRoIjpFfSkseHQoTSwuMzUpKXtjb25zdCBMPVsic2luZSIsInRyaWFuZ2xlIiwic2F3dG9vdGgiXSx4PUc/Im5vcm1hbCI6eHQoTSwuNik/ImhvbGRub3RlIjoibm9ybWFsIjtMdChQLHsiYmFzcy5wbGF5TW9kZSI6eCwiYmFzcy5sZm9XYXZlIjpLZShMKSwiYmFzcy5sZm9SYXRlU3RlcHMiOktlKFsyLDQsNiw4LDEyLDE2LDI0XSksImJhc3MubGZvU3ViZGl2aXNpb24iOiJzdHJhaWdodCIsImJhc3MubGZvRGVwdGgiOkc/aSguMiwuNik6aSguMjUsMSl9KX19aWYocCYmeHQoTSwuMTgpJiZMdChwLHsiZm1CbGlwMS5hbWJpZW50TW9kZSI6eHQoTSwuNSl9KSxTJiZ4dChNLC4xOCkmJkx0KFMseyJmbUJsaXAyLmFtYmllbnRNb2RlIjp4dChNLC41KX0pLG09PT0iZmx1eEdyaWQiKWZvcihjb25zdFtULEddb2ZbWyJiYXNzIixlLmJhc3NdLFsiY2xpY2tzIixlLmNsaWNrc11dKUcmJnh0KE0sLjMpJiZMdChHLHtbYCR7VH0uc2VuZDJgXTppKDAsLjE1KX0pO2Vsc2UgaWYobSE9PSJicmVha2JlYXQiKXtjb25zdCBUPVtbImZtQmxpcDEiLGUuZm1CbGlwMV0sWyJmbUJsaXAyIixlLmZtQmxpcDJdLFsid29vZGJsb2NrIixlLndvb2RCbG9ja10sWyJ0ZWNobm9TdGFiIixlLnRlY2hub1N0YWJdLFsiY2xpY2tzIixlLmNsaWNrc10sWyJiYXNzIixlLmJhc3NdXTtmb3IoY29uc3RbRyxFXW9mIFQpaWYoRSYmeHQoTSwuMykpe2NvbnN0IEw9bT09PSJzdHJhaWdodCImJkc9PT0iYmFzcyI/LjE1Oi4zNTtMdChFLHtbYCR7R30uc2VuZDJgXTppKDAsTCl9KX19fWNhdGNoe319ZnVuY3Rpb24gYmMoZSl7dHJ5e2lmKGUuc2VjdGlvbk1vZGU9PT0iZmx1eEdyaWQifHxlLnNlY3Rpb25Nb2RlPT09ImJyZWFrYmVhdCIpcmV0dXJuO2Zvcihjb25zdCBuIG9mIGRjKWVbbl0mJmUuc2VjdGlvbk1vZGV9Y2F0Y2h7fX1mdW5jdGlvbiB2YyhlKXt0cnl7Zm9yKGNvbnN0W24sdF1vZiBoYyhlKSl0JiZ4dChlLnIsLjIpJiZMdCh0LHtbYCR7bn0ucGFuTEZPU2hhcGVgXTpLZShbInNpbmUiLCJ0cmlhbmdsZSIsInNxdWFyZSIsInNhbXBsZUhvbGQiXSksW2Ake259LnBhbkxGT0Ftb3VudGBdOmkoLjIsLjgpLFtgJHtufS5wYW5MRk9TeW5jYF06ITAsW2Ake259LnBhbkxGT0ZyZXF1ZW5jeWBdOmkoLjA1LDEpfSl9Y2F0Y2h7fX1mdW5jdGlvbiBTYyhlLG49Mil7dHJ5e2NvbnN0IHQ9THMoZSkubWFwKChbLHNdKT0+cykuZmlsdGVyKHM9PihOdW1iZXIocz09bnVsbD92b2lkIDA6cy5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwKXx8MCk+MCk7aWYodC5sZW5ndGg8PW4pcmV0dXJuO2NvbnN0IGE9U3QodC5zbGljZSgpKTtmb3IobGV0IHM9bjtzPGEubGVuZ3RoO3MrKyl0cnl7YVtzXS5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwPTB9Y2F0Y2h7fX1jYXRjaHt9fWZ1bmN0aW9uIE1jKGUpe3RyeXtjb25zdCBuPWUuZnhQb2xpY3kmJmUuZnhQb2xpY3kuZWZmZWN0cztpZighbilyZXR1cm47Y29uc3R7cmV2ZXJiOnR9PW47Zm9yKGNvbnN0W2Esc11vZiBMcyhlKSl7aWYoIXMpY29udGludWU7Y29uc3QgbT17fTt0PT09ITEmJihtW2Ake2F9LnNlbmRSZXZlcmJgXT0wKSxPYmplY3Qua2V5cyhtKS5sZW5ndGgmJkx0KHMsbSx7cXVhbnRpemVCYXJzOjB9KX19Y2F0Y2h7fX1mdW5jdGlvbiBCYyhlKXtjb25zdCBuPXljKGUpLHQ9ZmNbbi5zZWN0aW9uTW9kZV07dCYmdChuKSxnYyhuKSxiYyhuKSx2YyhuKSxTYyhuLDIpLE1jKG4pfWZ1bmN0aW9uIFZ0KGUsLi4ubil7dmFyIHQ7dHJ5e2NvbnN0IGE9TWF0aC5tYXgoMCxOdW1iZXIoZSl8fDApO2Zvcihjb25zdCBzIG9mIG4pe2lmKCFzKWNvbnRpbnVlO2NvbnN0IG09TWF0aC5tYXgoMCxOdW1iZXIocy5jaGFuZ2VWb2ljZVBhcmFtc09uRXZlcnlTdGVwKXx8MCk7aWYobT4wJiZhJW09PT0wKXRyeXsodD1zLnJlZ2VuZXJhdGVQYXJhbXMpPT1udWxsfHx0LmNhbGwocyl9Y2F0Y2h7fX19Y2F0Y2h7fX1mdW5jdGlvbiBrYyhlKXtyZXR1cm4hIWUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gQnMoZSx7b21pdFBhdHRlcm46bixvbWl0S2V5c1NldDp0fT17fSl7aWYoIWtjKGUpKXJldHVybnt9O2NvbnN0IGE9e307Zm9yKGNvbnN0W3MsbV1vZiBPYmplY3QuZW50cmllcyhlKSluJiZuLnRlc3Qocyl8fHQmJnQuaGFzKHMpfHwoYVtzXT1tKTtyZXR1cm4gYX1mdW5jdGlvbiBfYyhlKXtjb25zdCBuPXt9LHQ9e307dHJ5e2Zvcihjb25zdFthLHNdb2YgT2JqZWN0LmVudHJpZXMoZXx8e30pKWlmKCEoIXN8fHR5cGVvZiBzLmdldEZsYXRQYXJhbXMhPSJmdW5jdGlvbiIpKXRyeXtjb25zdCBtPXMuZ2V0RmxhdFBhcmFtcygpfHx7fTtuW2FdPW07Zm9yKGNvbnN0W3AsU11vZiBPYmplY3QuZW50cmllcyhtKSl0W3BdPVN9Y2F0Y2h7fX1jYXRjaHt9cmV0dXJue3BlclZvaWNlOm4sbWVyZ2VkOnR9fWZ1bmN0aW9uIFRjKGU9e30pe2NvbnN0IG49bmV3IE1hcDtmdW5jdGlvbiB0KFAsTSxUPXt9KXtjb25zdCBHPVN0cmluZyhNfHxlJiZlLnNlY3Rpb25Nb2RlfHwiZGVmYXVsdCIpLHtvbWl0Rng6RT0hMSxvbWl0UGF0dGVybjpMPW51bGwsb21pdEtleXM6eD1bXX09VHx8e30sTz1FPy8oXC58XilcdyoocmV2ZXJifGRlbGF5fGhhbGwpXHcqL2k6bnVsbCx3PUwgaW5zdGFuY2VvZiBSZWdFeHA/TDpudWxsLG89bmV3IFNldChBcnJheS5pc0FycmF5KHgpP3g6W10pLHtwZXJWb2ljZTpDLG1lcmdlZDpjfT1fYyhQKSxkPXt9O3RyeXtmb3IoY29uc3RbdSxiXW9mIE9iamVjdC5lbnRyaWVzKEMpKWRbdV09QnMoYix7b21pdFBhdHRlcm46d3x8TyxvbWl0S2V5c1NldDpvfSl9Y2F0Y2h7fWNvbnN0IGc9QnMoYyx7b21pdFBhdHRlcm46d3x8TyxvbWl0S2V5c1NldDpvfSk7cmV0dXJuIG4uc2V0KEcse3RpbWVzdGFtcDpEYXRlLm5vdygpLHBlclZvaWNlOmQsbWVyZ2VkOmd9KSxHfWZ1bmN0aW9uIGEoUCxNLFQ9e30pe2NvbnN0IEc9U3RyaW5nKE18fGUmJmUuc2VjdGlvbk1vZGV8fCJkZWZhdWx0Iik7aWYoIW4uaGFzKEcpKXJldHVybiExO2NvbnN0IEU9bi5nZXQoRykse3BlclZvaWNlOkx9PUV8fHt9LHtxdWFudGl6ZUJhcnM6eD0xLGltbWVkaWF0ZTpPPSExLHVzZU1lcmdlZDp3PSExfT1UfHx7fSxvPXtxdWFudGl6ZUJhcnM6Tz8wOnh9O3RyeXtpZih3KXtjb25zdCBDPUUubWVyZ2VkfHx7fTtmb3IoY29uc3RbYyxkXW9mIE9iamVjdC5lbnRyaWVzKFB8fHt9KSlpZighKCFkfHx0eXBlb2YgZC51cGRhdGVQYXJhbXMhPSJmdW5jdGlvbiIpKXRyeXtkLnVwZGF0ZVBhcmFtcyhDLG8pfWNhdGNoe31yZXR1cm4hMH1mb3IoY29uc3RbQyxjXW9mIE9iamVjdC5lbnRyaWVzKEx8fHt9KSl7Y29uc3QgZD1QJiZQW0NdfHxudWxsO2lmKCEoIWR8fHR5cGVvZiBkLnVwZGF0ZVBhcmFtcyE9ImZ1bmN0aW9uIikpdHJ5e2QudXBkYXRlUGFyYW1zKGMsbyl9Y2F0Y2h7fX1yZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gcyhQKXtyZXR1cm4gdHlwZW9mIFA9PSJzdHJpbmciPyhuLmRlbGV0ZShQKSwhMCk6KG4uY2xlYXIoKSwhMCl9ZnVuY3Rpb24gbShQKXtyZXR1cm4gbi5oYXMoU3RyaW5nKFApKX1mdW5jdGlvbiBwKCl7cmV0dXJuIEFycmF5LmZyb20obi5rZXlzKCkpfWZ1bmN0aW9uIFMoUCl7cmV0dXJuIG4uZ2V0KFN0cmluZyhQKSl9cmV0dXJue2NhcHR1cmU6dCxyZXN0b3JlOmEsY2xlYXI6cyxoYXM6bSxsaXN0OnAsZ2V0OlN9fWZ1bmN0aW9uIHl0KGUsbix0KXtyZXR1cm4gTWF0aC5taW4odCxNYXRoLm1heChuLE51bWJlcihlKSkpfWZ1bmN0aW9uIGtzKGUsbil7cmV0dXJuIGVbTWF0aC5mbG9vcigodHlwZW9mIG49PSJmdW5jdGlvbiI/bjpOKSgpKmUubGVuZ3RoKV18fGVbMF19ZnVuY3Rpb24gd2MoZSxuPSEwKXtjb25zdCB0PWUuY3JlYXRlR2FpbigpO3QuZ2Fpbi52YWx1ZT0xO2NvbnN0IGE9ZS5jcmVhdGVCaXF1YWRGaWx0ZXIoKTt0cnl7YS50eXBlPSJiYW5kcGFzcyJ9Y2F0Y2h7fWEuZnJlcXVlbmN5LnZhbHVlPTQ0MCxhLlEudmFsdWU9Njtjb25zdCBzPWUuY3JlYXRlR2FpbigpO3MuZ2Fpbi52YWx1ZT0wO2NvbnN0IG09ZS5jcmVhdGVEZWxheSguMjUpLHA9ZS5jcmVhdGVHYWluKCk7cC5nYWluLnZhbHVlPTA7Y29uc3QgUz1lLmNyZWF0ZUJpcXVhZEZpbHRlcigpO3RyeXtTLnR5cGU9Imxvd3Bhc3MiLFMuZnJlcXVlbmN5LnZhbHVlPThlMyxTLlEudmFsdWU9LjcwN31jYXRjaHt9Y29uc3QgUD1lLmNyZWF0ZUdhaW4oKTtQLmdhaW4udmFsdWU9Ljk7Y29uc3QgTT1lLmNyZWF0ZUdhaW4oKTtyZXR1cm4gTS5nYWluLnZhbHVlPTEsdC5jb25uZWN0KGEpLGEuY29ubmVjdChzKSxzLmNvbm5lY3QoTSksbiYmcy5jb25uZWN0KG0pLG0uY29ubmVjdChQKSxtLmNvbm5lY3QocCkscC5jb25uZWN0KFMpLFMuY29ubmVjdChtKSx7aW5wdXQ6dCxmaWx0ZXI6YSxnYWluOnMsY29tYkRlbGF5Om0sY29tYkZiOnAsY29tYkRhbXA6Uyxjb21iT3V0OlAsZGlyZWN0T3V0Ok0sY29ubmVjdERpcmVjdChUKXt0cnl7TS5jb25uZWN0KFQpfWNhdGNoe319LGNvbm5lY3RDb21iKFQpe3RyeXtQLmNvbm5lY3QoVCl9Y2F0Y2h7fX0sZGlzcG9zZSgpe3RyeXt0LmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e2EuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7cy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXttLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e3AuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Uy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtQLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e00uZGlzY29ubmVjdCgpfWNhdGNoe319fX1mdW5jdGlvbiBfcyhlLG49e30pe2NvbnN0IHQ9ZSxhPXQuY3JlYXRlR2FpbigpO2EuZ2Fpbi52YWx1ZT0xO2NvbnN0IHM9dC5jcmVhdGVHYWluKCk7cy5nYWluLnZhbHVlPTA7Y29uc3QgbT10LmNyZWF0ZUdhaW4oKTt0cnl7Y29uc3QgZj1OdW1iZXIobj09bnVsbD92b2lkIDA6bi5pbnB1dEJvb3N0KTttLmdhaW4udmFsdWU9TnVtYmVyLmlzRmluaXRlKGYpP01hdGgubWF4KC4xLE1hdGgubWluKDgsZikpOjEuMn1jYXRjaHttLmdhaW4udmFsdWU9MS4yfWNvbnN0IHA9dC5jcmVhdGVEZWxheSguNSk7dHJ5e2NvbnN0IGY9bj09bnVsbD92b2lkIDA6bi5wcmVEZWxheVNlY1JhbmdlO2lmKGYmJkFycmF5LmlzQXJyYXkoZikmJmYubGVuZ3RoPT09Mil7Y29uc3QgeT1NYXRoLm1heCgwLE51bWJlcihmWzBdKXx8MCksXz1NYXRoLm1heCh5LE51bWJlcihmWzFdKXx8eSksSD10eXBlb2Yobj09bnVsbD92b2lkIDA6bi5yKT09ImZ1bmN0aW9uIj9uLnI6TixWPXkrSCgpKihfLXkpO3AuZGVsYXlUaW1lLnZhbHVlPU1hdGgubWF4KDAsTWF0aC5taW4oLjUsVikpfWVsc2UgcC5kZWxheVRpbWUudmFsdWU9LjAzOH1jYXRjaHtwLmRlbGF5VGltZS52YWx1ZT0uMDN9YS5jb25uZWN0KG0pLG0uY29ubmVjdChwKTtjb25zdCBTPXQuY3JlYXRlR2FpbigpO1MuZ2Fpbi52YWx1ZT0xO2NvbnN0IFA9dC5jcmVhdGVHYWluKCk7dHJ5e2NvbnN0IGY9TnVtYmVyKChuPT1udWxsP3ZvaWQgMDpuLndldFRyaW0pPz8uNyk7UC5nYWluLnZhbHVlPU51bWJlci5pc0Zpbml0ZShmKT9NYXRoLm1heCguMDUsTWF0aC5taW4oMixmKSk6Ljd9Y2F0Y2h7UC5nYWluLnZhbHVlPS43fWNvbnN0IE09dC5jcmVhdGVXYXZlU2hhcGVyKCk7dHJ5e2NvbnN0IHk9bmV3IEZsb2F0MzJBcnJheSgyNTYpLF89Mi4yO2ZvcihsZXQgSD0wO0g8MjU2O0grKyl7Y29uc3QgVj1ILzI1NSoyLTE7eVtIXT0oMStfKSpWLygxK18qTWF0aC5hYnMoVikpfU0uY3VydmU9eSxNLm92ZXJzYW1wbGU9Im5vbmUifWNhdGNoe31TLmNvbm5lY3QoUCksUC5jb25uZWN0KE0pLE0uY29ubmVjdChzKTtsZXQgVD1uLnJ8fE4sRz0obj09bnVsbD92b2lkIDA6bi5nZW5lcmF0aXZlKXx8e30sRT17cmVzb25PbjohMSxyZXNvbk1peDowLHJlc29uRnJlcXM6W10scmVzb25ROltdLHJlc29uR2FpbjpbXSxudW1CYW5kczozfSxMPVtdO2Z1bmN0aW9uIHgoKXtmb3IoY29uc3QgZiBvZiBMKXRyeXtmLmRpc3Bvc2UoKX1jYXRjaHt9TD1bXX1mdW5jdGlvbiBPKGY9e30pe2NvbnN0IHk9R3x8e30sXz0oUSwkLHEpPT57Y29uc3Qgaz1OdW1iZXIoKFE9PW51bGw/dm9pZCAwOlEubWluKT8/KEFycmF5LmlzQXJyYXkoUSk/UVswXTokKSksQT1OdW1iZXIoKFE9PW51bGw/dm9pZCAwOlEubWF4KT8/KEFycmF5LmlzQXJyYXkoUSk/UVsxXTpxKSksej1OdW1iZXIuaXNGaW5pdGUoayk/azokLEQ9TnVtYmVyLmlzRmluaXRlKEEpP0E6cTtyZXR1cm57bWluOk1hdGgubWluKHosRCksbWF4Ok1hdGgubWF4KHosRCl9fSxWPXsuLi57bnVtQmFuZHM6e21pbjoxLG1heDo0fSxiYXNlSHo6e21pbjoxMjAsbWF4OjgwMH0scmF0aW9zOlsxLDUvNCw0LzMsMy8yLDcvNCxNYXRoLlNRUlQyLDJdLG9jdGF2ZXM6Wy0xLDAsMV0scTp7bWluOjIsbWF4OjEyfSxnYWluOnttaW46LjIsbWF4Oi44fSxjb21iRmVlZGJhY2s6e21pbjouMzUsbWF4Oi42fSxjb21iRGVsYXlNdWx0OnttaW46MixtYXg6NX0sZGFtcE11bHRpcGxpZXI6Mn0sLi4uZn07cmV0dXJue251bUJhbmRzOl8oeS5udW1CYW5kcz8/Vi5udW1CYW5kcyxWLm51bUJhbmRzLm1pbixWLm51bUJhbmRzLm1heCksYmFzZUh6Ol8oeS5iYXNlSHo/P1YuYmFzZUh6LFYuYmFzZUh6Lm1pbixWLmJhc2VIei5tYXgpLHJhdGlvczpBcnJheS5pc0FycmF5KHkucmF0aW9zKSYmeS5yYXRpb3MubGVuZ3RoP3kucmF0aW9zLnNsaWNlKCk6Vi5yYXRpb3Msb2N0YXZlczpBcnJheS5pc0FycmF5KHkub2N0YXZlcykmJnkub2N0YXZlcy5sZW5ndGg/eS5vY3RhdmVzLnNsaWNlKCk6Vi5vY3RhdmVzLHE6Xyh5LnE/P1YucSxWLnEubWluLFYucS5tYXgpLGdhaW46Xyh5LmdhaW4/P1YuZ2FpbixWLmdhaW4ubWluLFYuZ2Fpbi5tYXgpLGNvbWJGZWVkYmFjazpfKHkuY29tYkZlZWRiYWNrPz9WLmNvbWJGZWVkYmFjayxWLmNvbWJGZWVkYmFjay5taW4sVi5jb21iRmVlZGJhY2subWF4KSxjb21iRGVsYXlNdWx0Ol8oeS5jb21iRGVsYXlNdWx0Pz9WLmNvbWJEZWxheU11bHQsVi5jb21iRGVsYXlNdWx0Lm1pbixWLmNvbWJEZWxheU11bHQubWF4KSxkYW1wTXVsdGlwbGllcjpOdW1iZXIuaXNGaW5pdGUoeS5kYW1wTXVsdGlwbGllcik/eS5kYW1wTXVsdGlwbGllcjpWLmRhbXBNdWx0aXBsaWVyfX1mdW5jdGlvbiB3KCl7eCgpO2NvbnN0IGY9TygpLHk9eXQoRS5udW1CYW5kc3x8MiwxLDQpfDAsXz15dChOdW1iZXIoZi5udW1CYW5kcy5taW4pfHx5LDEsNCl8MCxIPXl0KE51bWJlcihmLm51bUJhbmRzLm1heCl8fHksMSw0KXwwLFY9TWF0aC5taW4oSCxNYXRoLm1heChfLHkpKTtmb3IobGV0IFE9MDtRPFY7USsrKXtjb25zdCAkPVE8MyxxPXdjKHQsJCk7dHJ5e3AuY29ubmVjdChxLmlucHV0KX1jYXRjaHt9cS5jb25uZWN0RGlyZWN0KFMpLHEuY29ubmVjdENvbWIoUyksTC5wdXNoKHEpfW8oKX1mdW5jdGlvbiBvKCl7Y29uc3QgZj10LmN1cnJlbnRUaW1lLHk9TygpO2ZvcihsZXQgXz0wO188TC5sZW5ndGg7XysrKXtjb25zdCBIPUxbX10sVj15dChFLnJlc29uRnJlcXNbX118fDQ0MCw0MCwxOGUzKSxRPXl0KEUucmVzb25RW19dfHw4LC41LDQwKSwkPXl0KEUucmVzb25HYWluW19dfHwuMywwLDEpO3RyeXtILmZpbHRlci5mcmVxdWVuY3kuc2V0VGFyZ2V0QXRUaW1lKFYsZiwuMDIpfWNhdGNoe0guZmlsdGVyLmZyZXF1ZW5jeS52YWx1ZT1WfXRyeXtILmZpbHRlci5RLnNldFRhcmdldEF0VGltZShRLGYsLjAyKX1jYXRjaHtILmZpbHRlci5RLnZhbHVlPVF9dHJ5e0guZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSgkLGYsLjAyKX1jYXRjaHtILmdhaW4uZ2Fpbi52YWx1ZT0kfWNvbnN0IHE9MS9NYXRoLm1heCg4MCxNYXRoLm1pbig4ZTMsVikpLGs9TWF0aC5tYXgoMSxNYXRoLmZsb29yKHkuY29tYkRlbGF5TXVsdC5taW58fDIpKSxBPU1hdGgubWF4KGssTWF0aC5mbG9vcih5LmNvbWJEZWxheU11bHQubWF4fHw1KSksRD1rK01hdGguZmxvb3IoKHR5cGVvZiBUPT0iZnVuY3Rpb24iP1Q6TikoKSpNYXRoLm1heCgxLEEtaysxKSksVT15dChxKkQsLjAxLC4wNSk7dHJ5e0guY29tYkRlbGF5LmRlbGF5VGltZS5zZXRUYXJnZXRBdFRpbWUoVSxmLC4wMil9Y2F0Y2h7SC5jb21iRGVsYXkuZGVsYXlUaW1lLnZhbHVlPVV9Y29uc3QgUj15dChOdW1iZXIoeS5jb21iRmVlZGJhY2subWluKT8/LjIsMCwuOTgpLEk9eXQoTnVtYmVyKHkuY29tYkZlZWRiYWNrLm1heCk/Py44LDAsLjk4KSxzZT15dChSKyh0eXBlb2YgVD09ImZ1bmN0aW9uIj9UOk4pKCkqTWF0aC5tYXgoMCxJLVIpLDAsLjk4KTt0cnl7SC5jb21iRmIuZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoc2UsZiwuMDIpfWNhdGNoe0guY29tYkZiLmdhaW4udmFsdWU9c2V9Y29uc3QgaGU9eXQoViooTnVtYmVyKHkuZGFtcE11bHRpcGxpZXIpfHwyKSwxZTMsOGUzKTt0cnl7SC5jb21iRGFtcC5mcmVxdWVuY3kuc2V0VGFyZ2V0QXRUaW1lKGhlLGYsLjAyKX1jYXRjaHtILmNvbWJEYW1wLmZyZXF1ZW5jeS52YWx1ZT1oZX19YygpfWZ1bmN0aW9uIEMoZil7Y29uc3QgeT1PKGYpLF89TWF0aC5tYXgoMSxNYXRoLm1pbig0LHkubnVtQmFuZHMubWlufDApKSxIPU1hdGgubWF4KF8sTWF0aC5taW4oNCx5Lm51bUJhbmRzLm1heHwwKSksVj1NYXRoLm1heChfLE1hdGgubWluKEgsXytNYXRoLmZsb29yKCh0eXBlb2YgVD09ImZ1bmN0aW9uIj9UKCk6TigpKSpNYXRoLm1heCgxLEgtXysxKSkpKTtFLm51bUJhbmRzPVY7Y29uc3QgUT15dCh5LmJhc2VIei5taW4rKHR5cGVvZiBUPT0iZnVuY3Rpb24iP1QoKTpOKCkpKk1hdGgubWF4KDAseS5iYXNlSHoubWF4LXkuYmFzZUh6Lm1pbiksMjAsMTZlMyksJD15LnJhdGlvcyYmeS5yYXRpb3MubGVuZ3RoP3kucmF0aW9zOlsxXSxxPXkub2N0YXZlcyYmeS5vY3RhdmVzLmxlbmd0aD95Lm9jdGF2ZXM6WzBdLGs9W10sQT1bXSx6PVtdO2ZvcihsZXQgRD0wO0Q8VjtEKyspe2NvbnN0IFU9a3MoJCxUKSxSPWtzKHEsVCksST1NYXRoLnBvdygyLE51bWJlci5pc0Zpbml0ZShSKT9SOjApLGo9eXQoUSpVKkksNDAsMTZlMyk7ay5wdXNoKGopO2NvbnN0IHNlPU1hdGgubWF4KC41LE51bWJlcih5LnEubWluKXx8MiksaGU9TWF0aC5tYXgoc2UsTnVtYmVyKHkucS5tYXgpfHwyMCksZWU9TWF0aC5tYXgoMCxOdW1iZXIoeS5nYWluLm1pbil8fC4yKSxYPU1hdGgubWF4KGVlLE51bWJlcih5LmdhaW4ubWF4KXx8LjgpO0EucHVzaCh5dCgodHlwZW9mIFQ9PSJmdW5jdGlvbiI/VCgpOk4oKSkqKGhlLXNlKStzZSwuNSw0MCkpLHoucHVzaCh5dCgodHlwZW9mIFQ9PSJmdW5jdGlvbiI/VCgpOk4oKSkqKFgtZWUpK2VlLDAsMikpfUUucmVzb25GcmVxcz1rLEUucmVzb25RPUEsRS5yZXNvbkdhaW49en1mdW5jdGlvbiBjKCl7Y29uc3QgeT0hIUUucmVzb25Pbj95dChFLnJlc29uTWl4fHwwLDAsMSk6MDt0cnl7cy5nYWluLnNldFRhcmdldEF0VGltZSh5LHQuY3VycmVudFRpbWUsLjAyKX1jYXRjaHtzLmdhaW4udmFsdWU9eX19ZnVuY3Rpb24gZChmPXt9KXtjb25zdCB5PXsuLi5FfTt0eXBlb2YgZi5yZXNvbk9uPT0iYm9vbGVhbiImJih5LnJlc29uT249ISFmLnJlc29uT24pLE51bWJlci5pc0Zpbml0ZShmLnJlc29uTWl4KSYmKHkucmVzb25NaXg9eXQoZi5yZXNvbk1peCwwLDEpKSxBcnJheS5pc0FycmF5KGYucmVzb25GcmVxcykmJih5LnJlc29uRnJlcXM9Zi5yZXNvbkZyZXFzLnNsaWNlKCkpLEFycmF5LmlzQXJyYXkoZi5yZXNvblEpJiYoeS5yZXNvblE9Zi5yZXNvblEuc2xpY2UoKSksQXJyYXkuaXNBcnJheShmLnJlc29uR2FpbikmJih5LnJlc29uR2Fpbj1mLnJlc29uR2Fpbi5zbGljZSgpKSxOdW1iZXIuaXNGaW5pdGUoZi5udW1CYW5kcykmJih5Lm51bUJhbmRzPXl0KGYubnVtQmFuZHMsMSw0KXwwKTtjb25zdCBfPSh5Lm51bUJhbmRzfDApIT09KEUubnVtQmFuZHN8MCk7RT15LF8/dygpOm8oKX1mdW5jdGlvbiBnKGYpe3JldHVybiBDKGYpLHcoKSxiKCl9ZnVuY3Rpb24gdShmKXtHPWZ8fHt9fWZ1bmN0aW9uIGIoKXtyZXR1cm57cmVzb25PbjohIUUucmVzb25PbixyZXNvbk1peDp5dChFLnJlc29uTWl4fHwwLDAsMSkscmVzb25GcmVxczpFLnJlc29uRnJlcXMuc2xpY2UoKSxyZXNvblE6RS5yZXNvblEuc2xpY2UoKSxyZXNvbkdhaW46RS5yZXNvbkdhaW4uc2xpY2UoKSxudW1CYW5kczpFLm51bUJhbmRzfDB9fWZ1bmN0aW9uIGgoKXt0cnl7YS5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXttLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e3AuZGlzY29ubmVjdCgpfWNhdGNoe310cnl7Uy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXRyeXtQLmRpc2Nvbm5lY3QoKX1jYXRjaHt9dHJ5e00uZGlzY29ubmVjdCgpfWNhdGNoe310cnl7cy5kaXNjb25uZWN0KCl9Y2F0Y2h7fXgoKX1yZXR1cm4gZygpLGQoe3Jlc29uT246ITEscmVzb25NaXg6MH0pLHtpbnB1dDphLG91dHB1dDpzLHVwZGF0ZVBhcmFtczpkLHJlZ2VuZXJhdGVQYXJhbXM6ZyxzZXRHZW5lcmF0aXZlQ29uZmlnOnUsZ2V0UGFyYW1zOmIsZGlzcG9zZTpofX1mdW5jdGlvbiBUcyhlLG4pe3RyeXtlJiZlLmV2ZW50cyYmZS5ldmVudHMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoWXMse2RldGFpbDpufSkpfWNhdGNoe319Y29uc3QgTXQ9e3NjaGVkdWxlTGVhZDouMzUsdGltZXJNczoxNSxtYXhUaWNrQnVkZ2V0TXM6NyxtYXhTdGVwc1BlclRpY2s6MyxmbHV4OntyZXZlcmJFdmVyeTo4fSxyZXZlcmJSYW5kb21FbmFibGVkOiExLGJyZWFrTGVuU3RlcHM6WzMyLDQwLDQ4LDU2LDY0LDcyLDgwLDg4LDk2LDEwNCwxMTIsMTIwXSxhbWJpZW50TGVuU3RlcHM6WzY0LDgwLDk2LDExMiwxMjgsMTQ0LDE2MCwxNzYsMTkyXSxyZXNvbmF0b3I6e2VuYWJsZU9uTW9kZXM6WyJicmVha2JlYXQiLCJmbHV4R3JpZCIsInN0cmFpZ2h0IiwiYnJlYWsiLCJhbWJpZW50Il0saGlIYXRGb3JjZU1peDouOH0sYnVyc3RSZXZlcmI6e2VuYWJsZU9uTW9kZXM6WyJzdHJhaWdodCIsImJyZWFrIiwiYnJlYWtiZWF0Il0sZW5hYmxlUHJvYmFiaWxpdHk6LjgscGlja1ZvaWNlc1JhbmdlOlsxLDNdLGV2ZXJ5UmFuZ2U6WzMsOF0sdGFpbFNlY29uZHM6LjZ9fSx3cz1bImtpY2siLCJoaWhhdCIsImZtQmxpcDEiLCJmbUJsaXAyIiwid29vZEJsb2NrIiwia2FycGx1cyIsInRlY2hub1N0YWIiLCJjbGlja3MiLCJmaWx0ZXJQaW5nIiwiYmFzcyIsInNpZ25hbCIsInJpc2UiXTtmdW5jdGlvbiBBYyh7YnBtOmUscGF1c2U6bixzY2hlZHVsZUxlYWQ6dD1NdC5zY2hlZHVsZUxlYWQsaW50ZXJ2YWxNczphPU10LnRpbWVyTXN9PXt9LHM9e30pe2Z1bmN0aW9uIG0oQix2KXtjb25zdCBGPXYmJnYucmFuZCYmdHlwZW9mIHYucmFuZC5yPT0iZnVuY3Rpb24iP3YucmFuZC5yOk4sVz1TdHJpbmcodiYmdi5zaWRlKS50b1VwcGVyQ2FzZSgpPT09IkIiLFk9dHlwZW9mIEIuYnBtPT0ibnVtYmVyIiYmTnVtYmVyLmlzRmluaXRlKEIuYnBtKSYmQi5icG0+MD9ndChCLmJwbSk6TnVtYmVyLmlzRmluaXRlKE51bWJlcih2JiZ2LmJwbSkpJiZOdW1iZXIodi5icG0pPjA/Z3QoTnVtYmVyKHYuYnBtKSk6Z3QoTWF0aC5mbG9vcihGKCkqKCRlLnN0YXJ0TWF4QnBtLSRlLnN0YXJ0TWluQnBtKzEpKSskZS5zdGFydE1pbkJwbSksSj02MC9ZLGllPUovNCx1ZT1NYXRoLm1heCguMSxOdW1iZXIoQi5zY2hlZHVsZUxlYWQ/P010LnNjaGVkdWxlTGVhZCl8fE10LnNjaGVkdWxlTGVhZCksbmU9TWF0aC5tYXgoMTAsTWF0aC5mbG9vcihOdW1iZXIoQi5pbnRlcnZhbE1zPz9NdC50aW1lck1zKXx8TXQudGltZXJNcykpO3JldHVybntyYW5kOkYsaXNCOlcsYnBtOlksc2Vjb25kc1BlckJlYXQ6SixzZWNvbmRzUGVyU3RlcDppZSxzY2hlZHVsZUFoZWFkVGltZTp1ZSxzY2hlZHVsZXJJbnRlcnZhbE1zOm5lLGlzUnVubmluZzohMSxwYXVzZWQ6ITEsc2NoZWR1bGVySWQ6bnVsbCxuZXh0U3RlcFRpbWU6MCxjdXJyZW50U3RlcDowLGxvb3BMZW5ndGhTdGVwczoxNixzZWN0aW9uTW9kZToic3RyYWlnaHQiLHNlY3Rpb25SZW1haW5pbmdTdGVwczowLG1vZGlmaWNhdGlvblBoYXNlOm51bGwsbGFzdExvb3BQYXJhbXNGbGF0Om51bGwscHJlQW1iaWVudFBhcmFtc0ZsYXQ6bnVsbCxsb29wc0luQ3VycmVudE1vZGU6MCxzaWduYWxUcmlnZ2VyQXJtZWQ6ITEscmh5dGhtOm51bGwsdHJpZ2dlckNvdW50czp7a2ljazowLGhpaGF0OjAsZm1CbGlwMTowLGZtQmxpcDI6MCx3b29kQmxvY2s6MCxrYXJwbHVzOjAsdGVjaG5vU3RhYjowLGNsaWNrczowLGZpbHRlclBpbmc6MCxiYXNzOjB9LGZsdXhSZXZlcmJTd2l0Y2g6e2V2ZXJ5Ok10LmZsdXgucmV2ZXJiRXZlcnksY291bnRlcjowLHRvZ2dsZTohMX0sZHJvbmVHYXRlOnttb2RlOm51bGwsYWxsb3c6ITB9LGJ1cnN0UmV2ZXJiOntlbmFibGVkOiExLGJ5Vm9pY2U6e30sdGFpbFNlYzpNdC5idXJzdFJldmVyYi50YWlsU2Vjb25kc319fWZ1bmN0aW9uIHAoQil7Y29uc3Qgdj1zJiZzLmFwaXMmJnMuYXBpcy5BdWRpb0NvbnRleHRDdG9yP3MuYXBpcy5BdWRpb0NvbnRleHRDdG9yOmdsb2JhbFRoaXMuQXVkaW9Db250ZXh0fHxnbG9iYWxUaGlzLndlYmtpdEF1ZGlvQ29udGV4dCxGPW5ldyB2LFc9JGkoRixzKSxZPXlzKEYpO3RyeXtZLl9fbGFzdFBhcmFtcz17ZGVjYXk6Mi41LHByZURlbGF5TXM6MjgsbWFrZVVwRGI6Nixub2lzZUNvbG9yOiJ3aGl0ZSIsc3RlcmVvU3ByZWFkOi4wMixoaWdoU2hlbGZIejozODAwLGhpZ2hTaGVsZkdhaW5EYjotOH07Y29uc3QgQmU9WS51cGRhdGVQYXJhbXM7WS51cGRhdGVQYXJhbXM9ZnVuY3Rpb24oUmU9e30pe3RyeXtPYmplY3QuYXNzaWduKFkuX19sYXN0UGFyYW1zLFJlKX1jYXRjaHt9dHJ5e3JldHVybiBCZS5jYWxsKFksUmUpfWNhdGNoe319fWNhdGNoe31jb25zdCBKPUYuY3JlYXRlR2FpbigpO0ouZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxLEYuY3VycmVudFRpbWUpO3RyeXtKLmNvbm5lY3QoWS5pbnB1dCl9Y2F0Y2h7fXRyeXtZLm91dHB1dC5jb25uZWN0KFcubWFzdGVyQnVzSW5wdXQpfWNhdGNoe31jb25zdCBpZT1ncyhGKTt0cnl7aWUuX19sYXN0UGFyYW1zPXttb2RlOiJub3JtYWwiLGZlZWRiYWNrOi4zNSx0aW1lU2VjOi4zLG1hc3RlckdhaW46LjUsc3luY2VkOiExLHRlbXBvQnBtOkIuYnBtfTtjb25zdCBCZT1pZS51cGRhdGVQYXJhbXM7aWUudXBkYXRlUGFyYW1zPWZ1bmN0aW9uKFJlPXt9KXt0cnl7T2JqZWN0LmFzc2lnbihpZS5fX2xhc3RQYXJhbXMsUmUpfWNhdGNoe310cnl7cmV0dXJuIEJlLmNhbGwoaWUsUmUpfWNhdGNoe319fWNhdGNoe31jb25zdCB1ZT1GLmNyZWF0ZUdhaW4oKTt1ZS5nYWluLnNldFZhbHVlQXRUaW1lKDEsRi5jdXJyZW50VGltZSk7dHJ5e3VlLmNvbm5lY3QoaWUuaW5wdXQpfWNhdGNoe310cnl7aWUub3V0cHV0LmNvbm5lY3QoVy5tYXN0ZXJCdXNJbnB1dCl9Y2F0Y2h7fXRyeXtpZS51cGRhdGVQYXJhbXMoe3RlbXBvQnBtOkIuYnBtfSl9Y2F0Y2h7fXRyeXtzLm1hc3RlckJ1cz1XLHMuc2VuZFJldmVyYj1ZLHMuc2VuZERlbGF5PWllfWNhdGNoe31jb25zdCBuZT1CLmlzQj93cy5jb25jYXQoWyJkcm9uZSJdKTp3cy5zbGljZSgpLHRlPXt9LFo9e30scmU9e30sZGU9e307Zm9yKGNvbnN0IEJlIG9mIG5lKXt0ZVtCZV09Ri5jcmVhdGVHYWluKCksdGVbQmVdLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxGLmN1cnJlbnRUaW1lKSxaW0JlXT1GLmNyZWF0ZUdhaW4oKSxaW0JlXS5nYWluLnNldFZhbHVlQXRUaW1lKDEsRi5jdXJyZW50VGltZSk7dHJ5e3RlW0JlXS5jb25uZWN0KFpbQmVdKSxaW0JlXS5jb25uZWN0KFcubWFzdGVyQnVzSW5wdXQpfWNhdGNoe31yZVtCZV09Ri5jcmVhdGVHYWluKCkscmVbQmVdLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSxGLmN1cnJlbnRUaW1lKTt0cnl7cmVbQmVdLmNvbm5lY3QoSil9Y2F0Y2h7fWRlW0JlXT1GLmNyZWF0ZUdhaW4oKSxkZVtCZV0uZ2Fpbi5zZXRWYWx1ZUF0VGltZSgxLEYuY3VycmVudFRpbWUpO3RyeXtkZVtCZV0uY29ubmVjdCh1ZSl9Y2F0Y2h7fX1sZXQgYmU9bnVsbCxTZT1udWxsO2NvbnN0IHplPXt9O2lmKEIuaXNCKXRyeXtiZT1fcyhGKSxTZT1GLmNyZWF0ZUdhaW4oKSxTZS5nYWluLnNldFZhbHVlQXRUaW1lKDEsRi5jdXJyZW50VGltZSksU2UuY29ubmVjdChiZS5pbnB1dCksYmUub3V0cHV0LmNvbm5lY3QoVy5tYXN0ZXJCdXNJbnB1dCk7Zm9yKGNvbnN0IEJlIG9mIE9iamVjdC5rZXlzKHRlKSl7Y29uc3QgUmU9Ri5jcmVhdGVHYWluKCk7UmUuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLEYuY3VycmVudFRpbWUpLHplW0JlXT1SZTt0cnl7dGVbQmVdLmNvbm5lY3QoUmUpLFJlLmNvbm5lY3QoU2UpfWNhdGNoe319fWNhdGNoe31yZXR1cm57YXVkaW9Db250ZXh0OkYsbWFzdGVyQnVzOlcsc2VuZFJldmVyYjpZLHJldmVyYklucHV0QnVzOkosc2VuZERlbGF5OmllLGRlbGF5SW5wdXRCdXM6dWUsdHJhY2tzOnRlLHNvbG9HYXRlczpaLHJldkdhdGVzOnJlLGRseUdhdGVzOmRlLHJlc29uYXRvcjpiZSxyZXNvbklucHV0QnVzOlNlLHJlc29uR2F0ZXM6emV9fWZ1bmN0aW9uIFMoQix2KXtjb25zdCBGPXt2b2ljZVNwZWNpZmljOnt0ZW1wb0JwbTpCLmJwbSxzZWNvbmRzUGVyU3RlcDpCLnNlY29uZHNQZXJTdGVwfX0sVz17a2ljazpoaSh2LmF1ZGlvQ29udGV4dCxGLHMpLGhpaGF0OmRpKHYuYXVkaW9Db250ZXh0LEYscyksZm1CbGlwMTp5aSh2LmF1ZGlvQ29udGV4dCxGLHMpLGZtQmxpcDI6Z2kodi5hdWRpb0NvbnRleHQsRixzKSx3b29kQmxvY2s6Ymkodi5hdWRpb0NvbnRleHQsRixzKSxrYXJwbHVzOnZpKHYuYXVkaW9Db250ZXh0LEYscyksdGVjaG5vU3RhYjpfaSh2LmF1ZGlvQ29udGV4dCxGLHMpLGNsaWNrczpUaSh2LmF1ZGlvQ29udGV4dCxGLHMpLGZpbHRlclBpbmc6d2kodi5hdWRpb0NvbnRleHQsRixzKSxiYXNzOnppKHYuYXVkaW9Db250ZXh0LEYscykscmlzZTpMaSh2LmF1ZGlvQ29udGV4dCxGLHMpLHNpZ25hbDpEaSh2LmF1ZGlvQ29udGV4dCx7c2lnbmFsOntvdXRwdXRHYWluOi4yNn19LHMpfTtyZXR1cm4gQi5pc0ImJihXLmRyb25lPXBzKHYuYXVkaW9Db250ZXh0LEYscykpLFd9ZnVuY3Rpb24gUChCLHYsRil7Zm9yKGNvbnN0W1csWV1vZiBPYmplY3QuZW50cmllcyhGKSlpZih2LnRyYWNrc1tXXSl7dHJ5e1kub3V0cHV0LmNvbm5lY3Qodi50cmFja3NbV10pfWNhdGNoe310cnl7WS5zZW5kUmV2ZXJiJiZ2LnJldkdhdGVzJiZ2LnJldkdhdGVzW1ddJiZZLnNlbmRSZXZlcmIuY29ubmVjdCh2LnJldkdhdGVzW1ddKX1jYXRjaHt9dHJ5e1kuc2VuZERlbGF5JiZ2LmRseUdhdGVzJiZ2LmRseUdhdGVzW1ddJiZZLnNlbmREZWxheS5jb25uZWN0KHYuZGx5R2F0ZXNbV10pfWNhdGNoe319fWZ1bmN0aW9uIE0oQil7dmFyIHY7dHJ5e2Zvcihjb25zdFtGLFddb2YgT2JqZWN0LmVudHJpZXMoQnx8e30pKXRyeXtjb25zdCBZPXt9O1lbYCR7Rn0uc2VuZFJldmVyYmBdPTAsWVtgJHtGfS5zZW5kRGVsYXlgXT0wLCh2PVc9PW51bGw/dm9pZCAwOlcudXBkYXRlUGFyYW1zKT09bnVsbHx8di5jYWxsKFcsWSl9Y2F0Y2h7fX1jYXRjaHt9fWZ1bmN0aW9uIFQoQix2LEYsVz17fSl7QmMoe2F1ZGlvQ29udGV4dDp2LmF1ZGlvQ29udGV4dCxzZWN0aW9uTW9kZTpCLnNlY3Rpb25Nb2RlLHI6Qi5yYW5kLGZsYWdzOnMmJnMuZmxhZ3N8fHt9LHNpZGU6cyYmcy5zaWRlfHwiQSIsbWFzdGVyQnVzOnYubWFzdGVyQnVzLHNlbmRSZXZlcmI6di5zZW5kUmV2ZXJiLHRyYWNrczp2LnRyYWNrcyxyZXNvbmF0b3I6di5yZXNvbmF0b3Isc2Vjb25kc1BlclN0ZXA6Qi5zZWNvbmRzUGVyU3RlcCxsb29wTGVuZ3RoU3RlcHM6Qi5sb29wTGVuZ3RoU3RlcHMsYmFyU3RhcnRBdWRpb1RpbWU6Qi5uZXh0U3RlcFRpbWUscGF0dGVybnM6Qi5yaHl0aG0mJnR5cGVvZiBCLnJoeXRobS5nZXRQYXR0ZXJuc1NuYXBzaG90PT0iZnVuY3Rpb24iP0Iucmh5dGhtLmdldFBhdHRlcm5zU25hcHNob3QoKTpudWxsLGFjdGl2ZVZvaWNlczpCLnJoeXRobSYmdHlwZW9mIEIucmh5dGhtLmdldFBhdHRlcm5zU25hcHNob3Q9PSJmdW5jdGlvbiI/ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGphKEIucmh5dGhtLmdldFBhdHRlcm5zU25hcHNob3QoKSl9Y2F0Y2h7cmV0dXJuIG5ldyBTZXR9fSgpOm5ldyBTZXQsc25hcHNob3RzOntjYXB0dXJlOihZLEopPT57dHJ5e3JldHVybiBkLmNhcHR1cmUoRixZLEopfWNhdGNoe3JldHVybiBudWxsfX0scmVzdG9yZTooWSxKKT0+e3RyeXtyZXR1cm4gZC5yZXN0b3JlKEYsWSxKKX1jYXRjaHtyZXR1cm4hMX19LGhhczpZPT57dHJ5e3JldHVybiBkLmhhcyhZKX1jYXRjaHtyZXR1cm4hMX19LGxpc3Q6KCk9Pnt0cnl7cmV0dXJuIGQubGlzdCgpfWNhdGNoe3JldHVybltdfX0sZ2V0Olk9Pnt0cnl7cmV0dXJuIGQuZ2V0KFkpfWNhdGNoe3JldHVybiBudWxsfX19LC4uLkYsZnhQb2xpY3k6Vy5meFBvbGljeX0pfWZ1bmN0aW9uIEcoQil7aWYoQi5zZWN0aW9uTW9kZT09PSJicmVhayJ8fEIuc2VjdGlvbk1vZGU9PT0iYnJlYWtiZWF0Iil7Y29uc3Qgdj1NdC5icmVha0xlblN0ZXBzO2lmKEIuc2VjdGlvbk1vZGU9PT0iYnJlYWsiJiZCLmlzQil7Y29uc3QgRj1NYXRoLm1heCgxLE1hdGguZmxvb3Iodi5sZW5ndGgvMikpLFc9di5zbGljZSgwLEYpO3JldHVybiBXW01hdGguZmxvb3IoQi5yYW5kKCkqVy5sZW5ndGgpXX1yZXR1cm4gdltNYXRoLmZsb29yKEIucmFuZCgpKnYubGVuZ3RoKV19cmV0dXJuIEIuc2VjdGlvbk1vZGU9PT0iYW1iaWVudCI/TXQuYW1iaWVudExlblN0ZXBzW01hdGguZmxvb3IoQi5yYW5kKCkqTXQuYW1iaWVudExlblN0ZXBzLmxlbmd0aCldOkIubG9vcExlbmd0aFN0ZXBzfWZ1bmN0aW9uIEUoQix2KXt2YXIgRixXLFk7dHJ5e2NvbnN0IEo9Qi5pc0ImJkIuc2VjdGlvbk1vZGUhPT0iYnJlYWsiO0IuZHJvbmVHYXRlLm1vZGU9Qi5zZWN0aW9uTW9kZSxCLmRyb25lR2F0ZS5hbGxvdz0hIUIuaXNCO2NvbnN0IGllPSgpPT57aWYoIXYuZHJvbmUpdHJ5e2NvbnN0IG5lPXt2b2ljZVNwZWNpZmljOnt0ZW1wb0JwbTpCLmJwbSxzZWNvbmRzUGVyU3RlcDpCLnNlY29uZHNQZXJTdGVwfX0sdGU9cHMoZy5hdWRpb0NvbnRleHQsbmUscyk7di5kcm9uZT10ZTt0cnl7dGUub3V0cHV0LmNvbm5lY3QoZy50cmFja3MuZHJvbmUpfWNhdGNoe319Y2F0Y2h7fX0sdWU9KFc9KEY9di5kcm9uZSk9PW51bGw/dm9pZCAwOkYuaXNSdW5uaW5nKT09bnVsbD92b2lkIDA6Vy5jYWxsKEYpO2lmKEomJiF1ZSl7aWUoKTt0cnl7KFk9di5kcm9uZSk9PW51bGx8fFkuc3RhcnQoKX1jYXRjaHt9fWVsc2UgaWYoIUope2lmKHVlKXRyeXt2LmRyb25lLnN0b3AoKX1jYXRjaHt9c2V0VGltZW91dCgoKT0+e3ZhciBuZSx0ZTt0cnl7Y29uc3QgWj12LmRyb25lO2lmKFomJiEoKG5lPVouaXNSdW5uaW5nKSE9bnVsbCYmbmUuY2FsbChaKSkpe3RyeXsodGU9Wi5kaXNwb3NlKT09bnVsbHx8dGUuY2FsbChaKX1jYXRjaHt9di5kcm9uZT1udWxsfX1jYXRjaHt9fSwxNTAwKX19Y2F0Y2h7fX1mdW5jdGlvbiBMKEIsdil7dmFyIEYsVyxZLEosaWUsdWU7dHJ5e2lmKCEoQi5pc0ImJk10LnJlc29uYXRvci5lbmFibGVPbk1vZGVzLmluY2x1ZGVzKEIuc2VjdGlvbk1vZGUpJiZCLnNlY3Rpb25Nb2RlIT09ImJyZWFrIikpe3RyeXsoVz0oRj12LnJlc29uYXRvcik9PW51bGw/dm9pZCAwOkYudXBkYXRlUGFyYW1zKT09bnVsbHx8Vy5jYWxsKEYse3Jlc29uT246ITEscmVzb25NaXg6MH0pfWNhdGNoe31pZih2LnJlc29uYXRvcil7dHJ5eyhKPShZPXYucmVzb25hdG9yKS5kaXNwb3NlKT09bnVsbHx8Si5jYWxsKFkpfWNhdGNoe312LnJlc29uYXRvcj1udWxsfXJldHVybn1pZighdi5yZXNvbmF0b3IpdHJ5e2NvbnN0IFo9X3Modi5hdWRpb0NvbnRleHQpO3YucmVzb25hdG9yPVo7dHJ5e3YucmVzb25JbnB1dEJ1cyYmdi5yZXNvbklucHV0QnVzLmNvbm5lY3QoWi5pbnB1dCl9Y2F0Y2h7fXRyeXtaLm91dHB1dCYmdi5tYXN0ZXJCdXMmJnYubWFzdGVyQnVzLm1hc3RlckJ1c0lucHV0JiZaLm91dHB1dC5jb25uZWN0KHYubWFzdGVyQnVzLm1hc3RlckJ1c0lucHV0KX1jYXRjaHt9fWNhdGNoe310cnl7KHVlPShpZT12LnJlc29uYXRvcik9PW51bGw/dm9pZCAwOmllLnVwZGF0ZVBhcmFtcyk9PW51bGx8fHVlLmNhbGwoaWUse3Jlc29uT246ITAscmVzb25NaXg6MX0pfWNhdGNoe319Y2F0Y2h7fX1mdW5jdGlvbiB4KEIsdil7dmFyIEYsVyxZLEosaWUsdWUsbmUsdGUsWixyZTt0cnl7aWYoQi5pc0ImJkIuc2VjdGlvbk1vZGU9PT0iYnJlYWsiKXt0cnl7KFc9KEY9di5zZW5kUmV2ZXJiKT09bnVsbD92b2lkIDA6Ri51cGRhdGVQYXJhbXMpPT1udWxsfHxXLmNhbGwoRix7bWFrZVVwRGI6MH0pfWNhdGNoe310cnl7KEo9KFk9di5zZW5kUmV2ZXJiKT09bnVsbD92b2lkIDA6WS5kaXNwb3NlKT09bnVsbHx8Si5jYWxsKFkpfWNhdGNoe312LnNlbmRSZXZlcmI9bnVsbDt0cnl7KHVlPShpZT12LnNlbmREZWxheSk9PW51bGw/dm9pZCAwOmllLnVwZGF0ZVBhcmFtcyk9PW51bGx8fHVlLmNhbGwoaWUse2ZlZWRiYWNrOjB9KX1jYXRjaHt9dHJ5eyh0ZT0obmU9di5zZW5kRGVsYXkpPT1udWxsP3ZvaWQgMDpuZS5kaXNwb3NlKT09bnVsbHx8dGUuY2FsbChuZSl9Y2F0Y2h7fXYuc2VuZERlbGF5PW51bGw7cmV0dXJufWlmKCF2LnNlbmRSZXZlcmIpdHJ5e3Yuc2VuZFJldmVyYj15cyh2LmF1ZGlvQ29udGV4dCk7dHJ5e3YucmV2ZXJiSW5wdXRCdXMmJnYuc2VuZFJldmVyYi5pbnB1dCYmdi5yZXZlcmJJbnB1dEJ1cy5jb25uZWN0KHYuc2VuZFJldmVyYi5pbnB1dCl9Y2F0Y2h7fXRyeXt2LnNlbmRSZXZlcmIub3V0cHV0JiZ2Lm1hc3RlckJ1cyYmdi5tYXN0ZXJCdXMubWFzdGVyQnVzSW5wdXQmJnYuc2VuZFJldmVyYi5vdXRwdXQuY29ubmVjdCh2Lm1hc3RlckJ1cy5tYXN0ZXJCdXNJbnB1dCl9Y2F0Y2h7fX1jYXRjaHt9aWYoIXYuc2VuZERlbGF5KXRyeXt2LnNlbmREZWxheT1ncyh2LmF1ZGlvQ29udGV4dCk7dHJ5e3YuZGVsYXlJbnB1dEJ1cyYmdi5zZW5kRGVsYXkuaW5wdXQmJnYuZGVsYXlJbnB1dEJ1cy5jb25uZWN0KHYuc2VuZERlbGF5LmlucHV0KX1jYXRjaHt9dHJ5e3Yuc2VuZERlbGF5Lm91dHB1dCYmdi5tYXN0ZXJCdXMmJnYubWFzdGVyQnVzLm1hc3RlckJ1c0lucHV0JiZ2LnNlbmREZWxheS5vdXRwdXQuY29ubmVjdCh2Lm1hc3RlckJ1cy5tYXN0ZXJCdXNJbnB1dCl9Y2F0Y2h7fXRyeXsocmU9KFo9di5zZW5kRGVsYXkpLnVwZGF0ZVBhcmFtcyk9PW51bGx8fHJlLmNhbGwoWix7dGVtcG9CcG06Qi5icG19KX1jYXRjaHt9fWNhdGNoe319Y2F0Y2h7fX1mdW5jdGlvbiBPKEIsdixGKXt2YXIgVyxZLEosaWUsdWUsbmU7dHJ5e2NvbnN0IHRlPUIuaXNCJiZCLnNlY3Rpb25Nb2RlPT09ImJyZWFrIjt0cnl7Ri5mbUJsaXAxJiZGLmZtQmxpcDEuYXV0b01peCYmdHlwZW9mIEYuZm1CbGlwMS5hdXRvTWl4LnNldEJ5cGFzcz09ImZ1bmN0aW9uIiYmRi5mbUJsaXAxLmF1dG9NaXguc2V0QnlwYXNzKCEhdGUpfWNhdGNoe310cnl7Ri5mbUJsaXAyJiZGLmZtQmxpcDIuYXV0b01peCYmdHlwZW9mIEYuZm1CbGlwMi5hdXRvTWl4LnNldEJ5cGFzcz09ImZ1bmN0aW9uIiYmRi5mbUJsaXAyLmF1dG9NaXguc2V0QnlwYXNzKCEhdGUpfWNhdGNoe310cnl7KEo9KFk9KFc9Ri5mbUJsaXAxKT09bnVsbD92b2lkIDA6Vy5hdXRvTWl4KT09bnVsbD92b2lkIDA6WS51cGRhdGVQYXJhbXMpPT1udWxsfHxKLmNhbGwoWSx7YWdjRW5hYmxlZDohdGV9KX1jYXRjaHt9dHJ5eyhuZT0odWU9KGllPUYuZm1CbGlwMik9PW51bGw/dm9pZCAwOmllLmF1dG9NaXgpPT1udWxsP3ZvaWQgMDp1ZS51cGRhdGVQYXJhbXMpPT1udWxsfHxuZS5jYWxsKHVlLHthZ2NFbmFibGVkOiF0ZX0pfWNhdGNoe31jb25zdCBaPXRlPzA6MTt0cnl7Zm9yKGNvbnN0IHJlIG9mIE9iamVjdC52YWx1ZXModi5yZXZHYXRlc3x8e30pKXRyeXtyZS5nYWluLnNldFZhbHVlQXRUaW1lKFosdi5hdWRpb0NvbnRleHQuY3VycmVudFRpbWUpfWNhdGNoe319Y2F0Y2h7fXRyeXtmb3IoY29uc3QgcmUgb2YgT2JqZWN0LnZhbHVlcyh2LmRseUdhdGVzfHx7fSkpdHJ5e3JlLmdhaW4uc2V0VmFsdWVBdFRpbWUoWix2LmF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSl9Y2F0Y2h7fX1jYXRjaHt9fWNhdGNoe319ZnVuY3Rpb24gdygpe3RyeXtyZXR1cm4gZ2xvYmFsVGhpcy5fX0RPTTNfRlhfU1lOQ19ffHwoZ2xvYmFsVGhpcy5fX0RPTTNfRlhfU1lOQ19fPXtBOm51bGx9KSxnbG9iYWxUaGlzLl9fRE9NM19GWF9TWU5DX199Y2F0Y2h7cmV0dXJue0E6bnVsbH19fWZ1bmN0aW9uIG8oQix2KXt0cnl7aWYoIXYpcmV0dXJuO2NvbnN0IEY9dygpO2lmKEIuaXNCKXtjb25zdCBXPUYmJkYuQTtpZihXKXt0cnl7Vy5yZXZlcmImJnYuc2VuZFJldmVyYiYmdHlwZW9mIHYuc2VuZFJldmVyYi51cGRhdGVQYXJhbXM9PSJmdW5jdGlvbiImJnYuc2VuZFJldmVyYi51cGRhdGVQYXJhbXMoVy5yZXZlcmIpfWNhdGNoe310cnl7aWYoVy5kZWxheSYmdi5zZW5kRGVsYXkmJnR5cGVvZiB2LnNlbmREZWxheS51cGRhdGVQYXJhbXM9PSJmdW5jdGlvbiIpe2NvbnN0IFk9ey4uLlcuZGVsYXksdGVtcG9CcG06Qi5icG19O3Yuc2VuZERlbGF5LnVwZGF0ZVBhcmFtcyhZKX19Y2F0Y2h7fX19ZWxzZSB0cnl7Y29uc3QgVz12LnNlbmRSZXZlcmImJnYuc2VuZFJldmVyYi5fX2xhc3RQYXJhbXM/ey4uLnYuc2VuZFJldmVyYi5fX2xhc3RQYXJhbXN9Om51bGwsWT12LnNlbmREZWxheSYmdi5zZW5kRGVsYXkuX19sYXN0UGFyYW1zP3suLi52LnNlbmREZWxheS5fX2xhc3RQYXJhbXMsdGVtcG9CcG06Qi5icG19Om51bGw7KFd8fFkpJiYoRi5BPXtyZXZlcmI6VyxkZWxheTpZfSl9Y2F0Y2h7fX1jYXRjaHt9fWZ1bmN0aW9uIEMoQix2LEYsVyxZPSExKXt2YXIgbmUsdGUsWixyZSxkZSxiZSxTZSx6ZSxCZSxSZSxBZSx2ZSxHZSxOZSxNZSxrZSxfZTtjb25zdCBKPVhzKFcpP1c6ImJyZWFrYmVhdCI7aWYoIVkmJko9PT1CLnNlY3Rpb25Nb2RlKXJldHVybjtjb25zdCBpZT1CLnNlY3Rpb25Nb2RlO0Iuc2VjdGlvbk1vZGU9SixCLmxvb3BzSW5DdXJyZW50TW9kZT0wO3RyeXsodGU9KG5lPUYucmlzZSk9PW51bGw/dm9pZCAwOm5lLnVwZGF0ZVBhcmFtcyk9PW51bGx8fHRlLmNhbGwobmUseyJyaXNlLnNlbmRSZXZlcmIiOjB9KX1jYXRjaHt9dHJ5e0IuZHJvbmVHYXRlLm1vZGU9bnVsbCxCLmRyb25lR2F0ZS5hbGxvdz0hMH1jYXRjaHt9Qi5zaWduYWxUcmlnZ2VyQXJtZWQ9ITA7dHJ5e2NvbnN0IGxlPXYuYXVkaW9Db250ZXh0LFRlPUIuc2Vjb25kc1BlclN0ZXAsZ2U9Qi5uZXh0U3RlcFRpbWUrVigwLEIuc2Vjb25kc1BlckJlYXQpLHdlPVEoQi5sb29wTGVuZ3RoU3RlcHMsVGUpLE9lPWdlO3RyeXtpZihGLnJpc2Upe3RyeXsocmU9KFo9Ri5yaXNlKS5yZWdlbmVyYXRlUGFyYW1zKT09bnVsbHx8cmUuY2FsbChaKX1jYXRjaHt9dHJ5eyhiZT0oZGU9Ri5yaXNlKS51cGRhdGVQYXJhbXMpPT1udWxsfHxiZS5jYWxsKGRlLHsicmlzZS52b2ljZVNwZWNpZmljLnRlbXBvQnBtIjpCLmJwbSwicmlzZS52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjpCLnNlY29uZHNQZXJTdGVwfSl9Y2F0Y2h7fX19Y2F0Y2h7fWxldCBIZT1udWxsO3RyeXt0cnl7cy5mbGFnc3x8KHMuZmxhZ3M9e30pLEFycmF5LmlzQXJyYXkocy5mbGFncy5yaXNlTGVhZFN0ZXBzUmFuZ2UpfHwocy5mbGFncy5yaXNlTGVhZFN0ZXBzUmFuZ2U9WzE2LDMyXSl9Y2F0Y2h7fWNvbnN0IFZlPShTZT1zPT1udWxsP3ZvaWQgMDpzLmZsYWdzKT09bnVsbD92b2lkIDA6U2UucmlzZUxlYWRTdGVwc1JhbmdlO2lmKEFycmF5LmlzQXJyYXkoVmUpJiZWZS5sZW5ndGg9PT0yKXtjb25zdCBqZT1NYXRoLm1heCgxLE1hdGguZmxvb3IoTnVtYmVyKFZlWzBdKXx8MSkpLHV0PU1hdGgubWF4KGplLE1hdGguZmxvb3IoTnVtYmVyKFZlWzFdKXx8amUpKSxwdD1qZStNYXRoLmZsb29yKEIucmFuZCgpKih1dC1qZSsxKSk7SGU9TWF0aC5tYXgoLjA1LHB0KlRlKX19Y2F0Y2h7fWlmKCFIZSl7Y29uc3QgVmU9Qi5yYW5kfHxOLGplPU1hdGgubWF4KC4xLE1hdGgubWluKC44NSwuMitWZSgpKi41KSk7SGU9TWF0aC5tYXgoLjEyLHdlKmplKX1sZXQgVWU9T2UtSGUsV2U9SGU7VWU8PWxlLmN1cnJlbnRUaW1lKy4wMDUmJihVZT1sZS5jdXJyZW50VGltZSsuMDEsV2U9TWF0aC5tYXgoLjA2LE1hdGgubWF4KC4wMixPZS1VZSkpKTt0cnl7Y29uc3QgVmU9KChCZT0oemU9Ri5yaXNlKT09bnVsbD92b2lkIDA6emUuZ2V0RmxhdFBhcmFtcyk9PW51bGw/dm9pZCAwOkJlLmNhbGwoemUpKXx8e30samU9TWF0aC5tYXgoMCxOdW1iZXIoVmVbInJpc2Uudm9pY2VTcGVjaWZpYy50YWlsU2Vjb25kcyJdKXx8MCk7V2U9TWF0aC5tYXgoLjAyLE1hdGgubWF4KC4wMixPZS1VZS1qZSkpfWNhdGNoe31pZihGLnJpc2UmJk51bWJlci5pc0Zpbml0ZShVZSkmJlVlPmxlLmN1cnJlbnRUaW1lKy4wMDUmJk51bWJlci5pc0Zpbml0ZShXZSkmJldlPi4wMil7Ri5yaXNlLnRyaWdnZXIoVWUse2R1cmF0aW9uU2VjOldlfSk7dHJ5eyhBZT0oUmU9Ri5yaXNlKS5zdG9wKT09bnVsbHx8QWUuY2FsbChSZSxPZSl9Y2F0Y2h7fX19Y2F0Y2h7fXRyeXtCLnJoeXRobSYmdHlwZW9mIEIucmh5dGhtLnNldE1vZGU9PSJmdW5jdGlvbiImJkIucmh5dGhtLnNldE1vZGUoQi5zZWN0aW9uTW9kZSl9Y2F0Y2h7fXRyeXtiLnNldEN1cnJlbnQoQi5zZWN0aW9uTW9kZSl9Y2F0Y2h7fWNvbnN0IHVlPW1jKGllLEIuc2VjdGlvbk1vZGUscyk7dHJ5e0IubW9kaWZpY2F0aW9uUGhhc2U9bnVsbH1jYXRjaHt9dHJ5e2QucmVzdG9yZShGLCJmYWN0b3J5OmFsbCIse2ltbWVkaWF0ZTohMH0pfWNhdGNoe310cnl7Zm9yKGNvbnN0WyxsZV1vZiBPYmplY3QuZW50cmllcyhGKSl0cnl7KHZlPWxlPT1udWxsP3ZvaWQgMDpsZS5yZWdlbmVyYXRlUGFyYW1zKT09bnVsbHx8dmUuY2FsbChsZSl9Y2F0Y2h7fX1jYXRjaHt9dHJ5e2NvbnN0IGxlPXt2b2ljZVNwZWNpZmljOnt0ZW1wb0JwbTpCLmJwbSxzZWNvbmRzUGVyU3RlcDpCLnNlY29uZHNQZXJTdGVwfX07Zm9yKGNvbnN0WyxUZV1vZiBPYmplY3QuZW50cmllcyhGKSl0cnl7KEdlPVRlPT1udWxsP3ZvaWQgMDpUZS51cGRhdGVQYXJhbXMpPT1udWxsfHxHZS5jYWxsKFRlLGxlKX1jYXRjaHt9fWNhdGNoe31NKEYpO3RyeXsoTWU9KE5lPUYuc2lnbmFsKT09bnVsbD92b2lkIDA6TmUucmVnZW5lcmF0ZVBhcmFtcyk9PW51bGx8fE1lLmNhbGwoTmUpfWNhdGNoe310cnl7cmkoey4uLnMsLi4uRixtYXN0ZXJCdXM6di5tYXN0ZXJCdXMsdHJhY2tzOnYudHJhY2tzLHNpZGU6cyYmcy5zaWRlfHwoQi5pc0I/IkIiOiJBIil9KX1jYXRjaHt9VChCLHYsRix7ZnhQb2xpY3k6dWV9KTt0cnl7JChCLHYpfWNhdGNoe310cnl7eChCLHYpfWNhdGNoe310cnl7byhCLHYpfWNhdGNoe31FKEIsRik7dHJ5e0EoQix2KX1jYXRjaHt9aWYoUihCLHYpLE8oQix2LEYpLEIuc2VjdGlvblJlbWFpbmluZ1N0ZXBzPUcoQiksIUIubW9kaWZpY2F0aW9uUGhhc2UpdHJ5e2QuY2FwdHVyZShGLGBtb2RlOiR7Qi5zZWN0aW9uTW9kZX1gKX1jYXRjaHt9dHJ5e2lmKHVlLnNvdW5kUmVnZW5lcmF0aW9uPjAmJk4oKTx1ZS5zb3VuZFJlZ2VuZXJhdGlvbil7bGV0IGxlPVtGLmhpaGF0LEYuZm1CbGlwMSxGLmZtQmxpcDIsRi53b29kQmxvY2ssRi5rYXJwbHVzLEYudGVjaG5vU3RhYixGLmNsaWNrcyxGLmZpbHRlclBpbmcsRi5iYXNzXS5maWx0ZXIoQm9vbGVhbik7Y29uc3QgVGU9TWF0aC5tYXgoMCxNYXRoLmZsb29yKGxlLmxlbmd0aCpNYXRoLm1pbigxLE1hdGgubWF4KDAsdWUudm9pY2VSZWdlbmVyYXRpb24pKSkpO2ZvcihsZXQgZ2U9bGUubGVuZ3RoLTE7Z2U+MDtnZS0tKXtjb25zdCB3ZT1NYXRoLmZsb29yKE4oKSooZ2UrMSkpLE9lPWxlW2dlXTtsZVtnZV09bGVbd2VdLGxlW3dlXT1PZX1mb3IobGV0IGdlPTA7Z2U8VGU7Z2UrKyl0cnl7KF9lPShrZT1sZVtnZV0pLnJlZ2VuZXJhdGVQYXJhbXMpPT1udWxsfHxfZS5jYWxsKGtlKX1jYXRjaHt9fX1jYXRjaHt9dHJ5e2YoKX1jYXRjaHt9fWNvbnN0IGM9bSh7YnBtOmUsc2NoZWR1bGVMZWFkOnQsaW50ZXJ2YWxNczphfSxzKSxkPVRjKHMpLGc9cChjKSx1PVMoYyxnKTt0cnl7ZC5jYXB0dXJlKHUsImZhY3Rvcnk6YWxsIil9Y2F0Y2h7fVAoYyxnLHUpO2NvbnN0IGI9VWkoe3N0YXRlczpbInN0cmFpZ2h0IiwiYnJlYWsiLCJicmVha2JlYXQiLCJhbWJpZW50IiwiZmx1eEdyaWQiXSxpbml0aWFsU3RhdGU6ImJyZWFrYmVhdCJ9LHMpO2xldCBoPW51bGw7ZnVuY3Rpb24gZigpe3RyeXtjb25zdCBCPWcuYXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lO2Zvcihjb25zdCB2IG9mIE9iamVjdC5rZXlzKGcuc29sb0dhdGVzfHx7fSkpe2NvbnN0IEY9Zy5zb2xvR2F0ZXNbdl0mJmcuc29sb0dhdGVzW3ZdLmdhaW47aWYoIUYpY29udGludWU7Y29uc3QgVz0haHx8aD09PXY7dHJ5e0YuY2FuY2VsU2NoZWR1bGVkVmFsdWVzKEIpfWNhdGNoe310cnl7Ri5zZXRUYXJnZXRBdFRpbWUoVz8xOjAsQiwuMDIpfWNhdGNoe3RyeXtGLnZhbHVlPVc/MTowfWNhdGNoe319fWZvcihjb25zdCB2IG9mIE9iamVjdC5rZXlzKGcucmV2R2F0ZXN8fHt9KSl7Y29uc3QgRj1nLnJldkdhdGVzW3ZdJiZnLnJldkdhdGVzW3ZdLmdhaW47aWYoIUYpY29udGludWU7Y29uc3QgVz0haHx8aD09PXY7dHJ5e0YuY2FuY2VsU2NoZWR1bGVkVmFsdWVzKEIpfWNhdGNoe310cnl7Ri5zZXRUYXJnZXRBdFRpbWUoVz8xOjAsQiwuMDIpfWNhdGNoe3RyeXtGLnZhbHVlPVc/MTowfWNhdGNoe319fWZvcihjb25zdCB2IG9mIE9iamVjdC5rZXlzKGcuZGx5R2F0ZXN8fHt9KSl7Y29uc3QgRj1nLmRseUdhdGVzW3ZdJiZnLmRseUdhdGVzW3ZdLmdhaW47aWYoIUYpY29udGludWU7Y29uc3QgVz0haHx8aD09PXY7dHJ5e0YuY2FuY2VsU2NoZWR1bGVkVmFsdWVzKEIpfWNhdGNoe310cnl7Ri5zZXRUYXJnZXRBdFRpbWUoVz8xOjAsQiwuMDIpfWNhdGNoe3RyeXtGLnZhbHVlPVc/MTowfWNhdGNoe319fX1jYXRjaHt9fWZ1bmN0aW9uIHkoQil7aD1CfHxudWxsLGYoKX1mdW5jdGlvbiBfKCl7aD1udWxsLGYoKX1mdW5jdGlvbiBIKEIsdil7cmV0dXJuIFpzKEIsdixzPT1udWxsP3ZvaWQgMDpzLnNodWZmbGUpfWZ1bmN0aW9uIFYoQix2KXtyZXR1cm4gZWkoQix2LHM9PW51bGw/dm9pZCAwOnMuc3dpbmcpfWZ1bmN0aW9uIFEoQix2KXtsZXQgRj0wO2NvbnN0IFc9TWF0aC5tYXgoMCxNYXRoLmZsb29yKEIpKTtmb3IobGV0IFk9MDtZPFc7WSsrKUYrPUgoWSx2KTtyZXR1cm4gRn1mdW5jdGlvbiAkKEIsdil7dHJ5e2lmKCF2fHwhdi5zZW5kUmV2ZXJifHx0eXBlb2Ygdi5zZW5kUmV2ZXJiLnVwZGF0ZVBhcmFtcyE9ImZ1bmN0aW9uIilyZXR1cm47Y29uc3QgRj1CLnNlY3Rpb25Nb2RlPT09InN0cmFpZ2h0Ij85OjY7di5zZW5kUmV2ZXJiLnVwZGF0ZVBhcmFtcyh7bWFrZVVwRGI6Rn0pfWNhdGNoe319ZnVuY3Rpb24gcShCKXtyZXR1cm57YXBwbHlMb25nUmV2VG9IaUhhdDohMSxhcHBseUxvbmdSZXZUb0thcnBsdXM6ITF9fWZ1bmN0aW9uIGsoQil7cmV0dXJuITB9ZnVuY3Rpb24gQShCLHYpe3ZhciBGLFcsWSxKO3RyeXtjb25zdCBpZT1NdC5idXJzdFJldmVyYix1ZT1CLnNlY3Rpb25Nb2RlLHRlPUFycmF5LmlzQXJyYXkoaWUuZW5hYmxlT25Nb2RlcykmJmllLmVuYWJsZU9uTW9kZXMuaW5jbHVkZXModWUpJiZCLnJhbmQoKTwoaWUuZW5hYmxlUHJvYmFiaWxpdHk/Py40KTtCLmJ1cnN0UmV2ZXJiLmVuYWJsZWQ9ISF0ZSxCLmJ1cnN0UmV2ZXJiLmJ5Vm9pY2U9e30sQi5idXJzdFJldmVyYi50YWlsU2VjPU51bWJlci5pc0Zpbml0ZShpZS50YWlsU2Vjb25kcyk/aWUudGFpbFNlY29uZHM6LjY7dHJ5e2Zvcihjb25zdFtBZSx2ZV1vZiBPYmplY3QuZW50cmllcyh2LnJldkdhdGVzfHx7fSkpdHJ5e3ZlLmdhaW4uc2V0VmFsdWVBdFRpbWUoMSx2LmF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSl9Y2F0Y2h7fX1jYXRjaHt9aWYoIXRlKXJldHVybjtsZXQgWj1udWxsO3RyeXtjb25zdCBBZT1CLnJoeXRobSYmdHlwZW9mIEIucmh5dGhtLmdldFBhdHRlcm5zU25hcHNob3Q9PSJmdW5jdGlvbiI/Qi5yaHl0aG0uZ2V0UGF0dGVybnNTbmFwc2hvdCgpOm51bGw7QWUmJihaPWphKEFlKSl9Y2F0Y2h7fWxldCBkZT1bImtpY2siLCJoaWhhdCIsImJhc3MiLCJmbUJsaXAxIiwiZm1CbGlwMiIsIndvb2RCbG9jayIsImthcnBsdXMiLCJ0ZWNobm9TdGFiIiwiY2xpY2tzIiwiZmlsdGVyUGluZyJdLmZpbHRlcihBZT0+ISF2LnJldkdhdGVzW0FlXSk7WiYmWi5zaXplPjAmJihkZT1kZS5maWx0ZXIoQWU9PlouaGFzKEFlKSkpO2ZvcihsZXQgQWU9ZGUubGVuZ3RoLTE7QWU+MDtBZS0tKXtjb25zdCB2ZT1NYXRoLmZsb29yKEIucmFuZCgpKihBZSsxKSksR2U9ZGVbQWVdO2RlW0FlXT1kZVt2ZV0sZGVbdmVdPUdlfWNvbnN0IGJlPU1hdGgubWF4KDEsTWF0aC5mbG9vcigoKEY9aWUucGlja1ZvaWNlc1JhbmdlKT09bnVsbD92b2lkIDA6RlswXSk/PzEpKSxTZT1NYXRoLm1heChiZSxNYXRoLmZsb29yKCgoVz1pZS5waWNrVm9pY2VzUmFuZ2UpPT1udWxsP3ZvaWQgMDpXWzFdKT8/YmUpKSx6ZT1NYXRoLm1heChiZSxNYXRoLm1pbihTZSxiZStNYXRoLmZsb29yKEIucmFuZCgpKihTZS1iZSsxKSkpKSxCZT1NYXRoLm1heCgxLE1hdGguZmxvb3IoKChZPWllLmV2ZXJ5UmFuZ2UpPT1udWxsP3ZvaWQgMDpZWzBdKT8/MykpLFJlPU1hdGgubWF4KEJlLE1hdGguZmxvb3IoKChKPWllLmV2ZXJ5UmFuZ2UpPT1udWxsP3ZvaWQgMDpKWzFdKT8/OCkpO2ZvcihsZXQgQWU9MDtBZTxNYXRoLm1pbih6ZSxkZS5sZW5ndGgpO0FlKyspe2NvbnN0IHZlPWRlW0FlXSxHZT1CZStNYXRoLmZsb29yKEIucmFuZCgpKihSZS1CZSsxKSk7Qi5idXJzdFJldmVyYi5ieVZvaWNlW3ZlXT17ZXZlcnk6R2UsY291bnRlcjowfTt0cnl7di5yZXZHYXRlc1t2ZV0uZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLHYuYXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lKX1jYXRjaHt9fX1jYXRjaHt9fWZ1bmN0aW9uIHooQix2LEYsVyl7dmFyIFksSixpZSx1ZTt0cnl7aWYoISgoWT1CLmJ1cnN0UmV2ZXJiKSE9bnVsbCYmWS5lbmFibGVkKSlyZXR1cm47Y29uc3QgbmU9KEo9Qi5idXJzdFJldmVyYi5ieVZvaWNlKT09bnVsbD92b2lkIDA6SltGXTtpZighbmV8fChuZS5jb3VudGVyKz0xLG5lLmNvdW50ZXIlTWF0aC5tYXgoMSxuZS5ldmVyeSkhPT0wKSlyZXR1cm47Y29uc3QgdGU9KHVlPShpZT12LnJldkdhdGVzKT09bnVsbD92b2lkIDA6aWVbRl0pPT1udWxsP3ZvaWQgMDp1ZS5nYWluO2lmKCF0ZSlyZXR1cm47Y29uc3QgWj1OdW1iZXIuaXNGaW5pdGUoVyk/Vzp2LmF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSsuMDAxLHJlPVorTWF0aC5tYXgoLjEsQi5idXJzdFJldmVyYi50YWlsU2VjfHwuNik7dHJ5e3RlLmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhaKX1jYXRjaHt9dHJ5e3RlLnNldFZhbHVlQXRUaW1lKDAsWiksdGUubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoMSxaKy4wMSksdGUuc2V0VmFsdWVBdFRpbWUoMSxaKy4wNSksdGUuZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgxZS00LHJlKX1jYXRjaHt9fWNhdGNoe319ZnVuY3Rpb24gRChCKXtpZighQnx8Yy5zZWN0aW9uTW9kZT09PSJhbWJpZW50IilyZXR1cm4gQjtpZihjLnNlY3Rpb25Nb2RlPT09ImJyZWFrIil7Y29uc3Qgdj17fTtmb3IoY29uc3QgRiBvZiBPYmplY3Qua2V5cyhCKSl7Y29uc3QgVz1CW0ZdfHx7fSxZPXsuLi5XfTtZLnZlbG9jaXR5PUhuKFcudmVsb2NpdHk9PW51bGw/MTpXLnZlbG9jaXR5KSxXLmFjY2VudD09PSEwJiYoWS5hY2NlbnQ9TigpPC43PyExOiJ3ZWFrIiksdltGXT1ZfXJldHVybiB2fXJldHVybiBjLnNlY3Rpb25Nb2RlPT09ImJyZWFrYmVhdCI/ey4uLkJ9OkJ9ZnVuY3Rpb24gVSgpe3ZhciBZLEosaWUsdWUsbmUsdGUsWixyZSxkZSxiZSxTZSx6ZSxCZSxSZSxBZSx2ZSxHZSxOZSxNZSxrZSxfZSxsZSxUZSxnZSx3ZSxPZSxIZSxVZSxXZSxWZSxqZTtpZighYy5yaHl0aG0pcmV0dXJuO2NvbnN0IEI9Zy5hdWRpb0NvbnRleHQuY3VycmVudFRpbWU7KCFOdW1iZXIuaXNGaW5pdGUoYy5uZXh0U3RlcFRpbWUpfHxjLm5leHRTdGVwVGltZTw9MCkmJihjLm5leHRTdGVwVGltZT1CKy4wMDEpO2NvbnN0IHY9TnVtYmVyLmlzRmluaXRlKGMuc2Vjb25kc1BlclN0ZXApJiZjLnNlY29uZHNQZXJTdGVwPjA/Yy5zZWNvbmRzUGVyU3RlcDpNYXRoLm1heCguMDMxMjUsNjAvTWF0aC5tYXgoMjAsYy5icG0pLzQpLEY9dHlwZW9mIHBlcmZvcm1hbmNlPCJ1IiYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93KCk7bGV0IFc9MDtmb3IoO2MubmV4dFN0ZXBUaW1lPEIrYy5zY2hlZHVsZUFoZWFkVGltZTspe2xldCBtdD1mdW5jdGlvbihQZSl7cmV0dXJuIWh8fFBlPT09aH07aWYoKHR5cGVvZiBwZXJmb3JtYW5jZTwidSImJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZS5ub3coKTpEYXRlLm5vdygpKS1GPk10Lm1heFRpY2tCdWRnZXRNc3x8Vz49TXQubWF4U3RlcHNQZXJUaWNrKWJyZWFrO2NvbnN0IHB0PWMucmh5dGhtLmdldEV2ZW50c0F0U3RlcChjLmN1cnJlbnRTdGVwKSxDdD1IKGMuY3VycmVudFN0ZXAsdiksVXQ9VihjLmN1cnJlbnRTdGVwLGMuc2Vjb25kc1BlckJlYXQpLFhlPWMubmV4dFN0ZXBUaW1lK1V0LERlPUQocHQpO2xldCBCdD0hMSxHdD0hMTt7Y29uc3QgUGU9cSgpO0J0PVBlLmFwcGx5TG9uZ1JldlRvSGlIYXQsR3Q9UGUuYXBwbHlMb25nUmV2VG9LYXJwbHVzfWNvbnN0IE90PWsoYy5jdXJyZW50U3RlcCk7aWYobXQoImtpY2siKSYmRGUua2ljayl7bGV0IFBlPW51bGw7dHJ5e2NvbnN0IEVlPXR5cGVvZiB1LmtpY2suZ2V0RmxhdFBhcmFtcz09ImZ1bmN0aW9uIj91LmtpY2suZ2V0RmxhdFBhcmFtcygpOm51bGw7RWUmJih0eXBlb2YgRWVbImtpY2sudGltYnJlLmJhc2VGcmVxIl09PSJudW1iZXIiP1BlPUVlWyJraWNrLnRpbWJyZS5iYXNlRnJlcSJdOnR5cGVvZiBFZVsia2ljay5iYXNlRnJlcSJdPT0ibnVtYmVyIiYmKFBlPUVlWyJraWNrLmJhc2VGcmVxIl0pKX1jYXRjaHt9aWYoYy5zZWN0aW9uTW9kZT09PSJhbWJpZW50Iil7Y29uc3QgRWU9e3N1c3RhaW5TdGVwczoyLHZlbG9jaXR5OkRlLmtpY2sudmVsb2NpdHk/Py45NSxhY2NlbnQ6RGUua2ljay5hY2NlbnQ/PyExfTt1LmtpY2sudHJpZ2dlcihYZSxFZSl9ZWxzZXt0cnl7Yy50cmlnZ2VyQ291bnRzLmtpY2srPTEsVnQoYy50cmlnZ2VyQ291bnRzLmtpY2ssdS5raWNrKX1jYXRjaHt9dS5raWNrLnRyaWdnZXIoWGUsRGUua2ljayl9aWYoIShjLnNlY3Rpb25Nb2RlPT09InN0cmFpZ2h0Inx8Yy5pc0ImJihjLnNlY3Rpb25Nb2RlPT09ImZsdXhHcmlkInx8Yy5zZWN0aW9uTW9kZT09PSJicmVha2JlYXQiKSkmJmMuc2VjdGlvbk1vZGUhPT0iYW1iaWVudCIpe3RyeXtjLnRyaWdnZXJDb3VudHMuYmFzcys9MSxWdChjLnRyaWdnZXJDb3VudHMuYmFzcyx1LmJhc3MpfWNhdGNoe310cnl7dS5iYXNzLnRyaWdnZXIoWGUsey4uLkRlLmtpY2ssa2lja0Jhc2VIejpQZX0pfWNhdGNoe319fWlmKG10KCJiYXNzIikmJmMuc2VjdGlvbk1vZGU9PT0iYW1iaWVudCImJkRlLmJhc3Mpe3RyeXtjLnRyaWdnZXJDb3VudHMuYmFzcys9MSxWdChjLnRyaWdnZXJDb3VudHMuYmFzcyx1LmJhc3MpfWNhdGNoe310cnl7dS5iYXNzLnRyaWdnZXIoWGUsRGUuYmFzcyl9Y2F0Y2h7fX1pZihtdCgiYmFzcyIpJiYoYy5zZWN0aW9uTW9kZT09PSJzdHJhaWdodCJ8fGMuaXNCJiYoYy5zZWN0aW9uTW9kZT09PSJmbHV4R3JpZCJ8fGMuc2VjdGlvbk1vZGU9PT0iYnJlYWtiZWF0IikpJiZEZS5iYXNzKXt0cnl7Yy50cmlnZ2VyQ291bnRzLmJhc3MrPTEsVnQoYy50cmlnZ2VyQ291bnRzLmJhc3MsdS5iYXNzKX1jYXRjaHt9dHJ5e3UuYmFzcy50cmlnZ2VyKFhlLHsuLi5EZS5iYXNzfSl9Y2F0Y2h7fXRyeXt6KGMsZywiYmFzcyIsWGUpfWNhdGNoe319aWYobXQoImhpaGF0IikmJkRlLmhpaGF0JiZPdCl7dHJ5e2MudHJpZ2dlckNvdW50cy5oaWhhdCs9MSxWdChjLnRyaWdnZXJDb3VudHMuaGloYXQsdS5oaWhhdCl9Y2F0Y2h7fWlmKEJ0KXRyeXtjb25zdCBQZT0uMTIrTigpKi4xNjt1LmhpaGF0LnVwZGF0ZVBhcmFtcyh7ImhpaGF0LnNlbmRSZXZlcmIiOlBlfSl9Y2F0Y2h7fXUuaGloYXQudHJpZ2dlcihYZSxjLnNlY3Rpb25Nb2RlPT09ImFtYmllbnQiP3suLi5EZS5oaWhhdCxzdXN0YWluU3RlcHM6TWF0aC5tYXgoMixEZS5oaWhhdC5zdXN0YWluU3RlcHN8fDApfTpEZS5oaWhhdCk7dHJ5e3ooYyxnLCJoaWhhdCIsWGUpfWNhdGNoe319aWYobXQoImZtQmxpcDEiKSYmRGUuZm1CbGlwMSl7dHJ5e2MudHJpZ2dlckNvdW50cy5mbUJsaXAxKz0xLFZ0KGMudHJpZ2dlckNvdW50cy5mbUJsaXAxLHUuZm1CbGlwMSl9Y2F0Y2h7fXUuZm1CbGlwMS50cmlnZ2VyKFhlLGMuc2VjdGlvbk1vZGU9PT0iYW1iaWVudCI/ey4uLkRlLmZtQmxpcDEsc3VzdGFpblN0ZXBzOk1hdGgubWF4KDQsTWF0aC5taW4oMTYsRGUuZm1CbGlwMS5zdXN0YWluU3RlcHN8fDB8fDQpKX06RGUuZm1CbGlwMSk7dHJ5e3ooYyxnLCJmbUJsaXAxIixYZSl9Y2F0Y2h7fX1pZihtdCgiZm1CbGlwMiIpJiZEZS5mbUJsaXAyKXt0cnl7Yy50cmlnZ2VyQ291bnRzLmZtQmxpcDIrPTEsVnQoYy50cmlnZ2VyQ291bnRzLmZtQmxpcDIsdS5mbUJsaXAyKX1jYXRjaHt9dS5mbUJsaXAyLnRyaWdnZXIoWGUsYy5zZWN0aW9uTW9kZT09PSJhbWJpZW50Ij97Li4uRGUuZm1CbGlwMixzdXN0YWluU3RlcHM6TWF0aC5tYXgoNCxNYXRoLm1pbigxNixEZS5mbUJsaXAyLnN1c3RhaW5TdGVwc3x8MHx8NCkpfTpEZS5mbUJsaXAyKTt0cnl7eihjLGcsImZtQmxpcDIiLFhlKX1jYXRjaHt9fWlmKG10KCJ3b29kQmxvY2siKSYmRGUud29vZEJsb2NrKXt0cnl7Yy50cmlnZ2VyQ291bnRzLndvb2RCbG9jays9MSxWdChjLnRyaWdnZXJDb3VudHMud29vZEJsb2NrLHUud29vZEJsb2NrKX1jYXRjaHt9dS53b29kQmxvY2sudHJpZ2dlcihYZSxjLnNlY3Rpb25Nb2RlPT09ImFtYmllbnQiP3suLi5EZS53b29kQmxvY2ssc3VzdGFpblN0ZXBzOk1hdGgubWF4KDgsRGUud29vZEJsb2NrLnN1c3RhaW5TdGVwc3x8MCl9OkRlLndvb2RCbG9jayk7dHJ5e3ooYyxnLCJ3b29kQmxvY2siLFhlKX1jYXRjaHt9fWlmKG10KCJrYXJwbHVzIikmJkRlLmthcnBsdXMpe3RyeXtjLnRyaWdnZXJDb3VudHMua2FycGx1cys9MSxWdChjLnRyaWdnZXJDb3VudHMua2FycGx1cyx1LmthcnBsdXMpfWNhdGNoe31pZihHdCl0cnl7Y29uc3QgUGU9LjI4K04oKSouMjt1LmthcnBsdXMudXBkYXRlUGFyYW1zKHsia2FycGx1cy5zZW5kUmV2ZXJiIjpQZX0pfWNhdGNoe311LmthcnBsdXMudHJpZ2dlcihYZSxjLnNlY3Rpb25Nb2RlPT09ImFtYmllbnQiP3suLi5EZS5rYXJwbHVzLHN1c3RhaW5TdGVwczpNYXRoLm1heCg0LE1hdGgubWluKDE2LERlLmthcnBsdXMuc3VzdGFpblN0ZXBzfHwwfHw0KSl9OkRlLmthcnBsdXMpO3RyeXt6KGMsZywia2FycGx1cyIsWGUpfWNhdGNoe319aWYobXQoInRlY2hub1N0YWIiKSYmRGUudGVjaG5vU3RhYiYmYy5zZWN0aW9uTW9kZSE9PSJmbHV4R3JpZCIpe3RyeXtjLnRyaWdnZXJDb3VudHMudGVjaG5vU3RhYis9MSxWdChjLnRyaWdnZXJDb3VudHMudGVjaG5vU3RhYix1LnRlY2hub1N0YWIpfWNhdGNoe311LnRlY2hub1N0YWIudHJpZ2dlcihYZSxjLnNlY3Rpb25Nb2RlPT09ImFtYmllbnQiP3suLi5EZS50ZWNobm9TdGFiLHN1c3RhaW5TdGVwczpNYXRoLm1heCg0LE1hdGgubWluKDE2LERlLnRlY2hub1N0YWIuc3VzdGFpblN0ZXBzfHwwfHw0KSl9OkRlLnRlY2hub1N0YWIpO3RyeXt6KGMsZywidGVjaG5vU3RhYiIsWGUpfWNhdGNoe319aWYobXQoImNsaWNrcyIpJiZEZS5jbGlja3Mpe3RyeXtjLnRyaWdnZXJDb3VudHMuY2xpY2tzKz0xLFZ0KGMudHJpZ2dlckNvdW50cy5jbGlja3MsdS5jbGlja3MpfWNhdGNoe311LmNsaWNrcy50cmlnZ2VyKFhlLGMuc2VjdGlvbk1vZGU9PT0iYW1iaWVudCI/ey4uLkRlLmNsaWNrcyxzdXN0YWluU3RlcHM6TWF0aC5tYXgoNCxNYXRoLm1pbigxNixEZS5jbGlja3Muc3VzdGFpblN0ZXBzfHwwfHw0KSl9OkRlLmNsaWNrcyk7dHJ5e3ooYyxnLCJjbGlja3MiLFhlKX1jYXRjaHt9fWlmKG10KCJmaWx0ZXJQaW5nIikmJkRlLmZpbHRlclBpbmcmJk90KXt0cnl7Yy50cmlnZ2VyQ291bnRzLmZpbHRlclBpbmcrPTEsVnQoYy50cmlnZ2VyQ291bnRzLmZpbHRlclBpbmcsdS5maWx0ZXJQaW5nKX1jYXRjaHt9dS5maWx0ZXJQaW5nLnRyaWdnZXIoWGUsYy5zZWN0aW9uTW9kZT09PSJhbWJpZW50Ij97Li4uRGUuZmlsdGVyUGluZyxzdXN0YWluU3RlcHM6TWF0aC5tYXgoNCxNYXRoLm1pbigxNixEZS5maWx0ZXJQaW5nLnN1c3RhaW5TdGVwc3x8MHx8NCkpfTpEZS5maWx0ZXJQaW5nKTt0cnl7eihjLGcsImZpbHRlclBpbmciLFhlKX1jYXRjaHt9fWlmKGMuY3VycmVudFN0ZXA9PT0wJiZjLnNpZ25hbFRyaWdnZXJBcm1lZCl7dHJ5e3Uuc2lnbmFsLnRyaWdnZXIoWGUse2FjY2VudDohMCxzdXN0YWluU3RlcHM6NCx2ZWxvY2l0eTouNzV9KX1jYXRjaHt9Yy5zaWduYWxUcmlnZ2VyQXJtZWQ9ITF9aWYoYy5jdXJyZW50U3RlcCs9MSxjLmN1cnJlbnRTdGVwPj1jLmxvb3BMZW5ndGhTdGVwcyl7Yy5jdXJyZW50U3RlcD0wO3RyeXtjb25zdCBQZT17fTt0cnl7T2JqZWN0LmFzc2lnbihQZSwoKEo9KFk9dS5raWNrKS5nZXRGbGF0UGFyYW1zKT09bnVsbD92b2lkIDA6Si5jYWxsKFkpKXx8e30pfWNhdGNoe310cnl7T2JqZWN0LmFzc2lnbihQZSwoKHVlPShpZT11LmhpaGF0KS5nZXRGbGF0UGFyYW1zKT09bnVsbD92b2lkIDA6dWUuY2FsbChpZSkpfHx7fSl9Y2F0Y2h7fXRyeXtPYmplY3QuYXNzaWduKFBlLCgodGU9KG5lPXUuZm1CbGlwMSkuZ2V0RmxhdFBhcmFtcyk9PW51bGw/dm9pZCAwOnRlLmNhbGwobmUpKXx8e30pfWNhdGNoe310cnl7T2JqZWN0LmFzc2lnbihQZSwoKHJlPShaPXUuZm1CbGlwMikuZ2V0RmxhdFBhcmFtcyk9PW51bGw/dm9pZCAwOnJlLmNhbGwoWikpfHx7fSl9Y2F0Y2h7fXRyeXtPYmplY3QuYXNzaWduKFBlLCgoYmU9KGRlPXUud29vZEJsb2NrKS5nZXRGbGF0UGFyYW1zKT09bnVsbD92b2lkIDA6YmUuY2FsbChkZSkpfHx7fSl9Y2F0Y2h7fXRyeXtPYmplY3QuYXNzaWduKFBlLCgoemU9KFNlPXUua2FycGx1cykuZ2V0RmxhdFBhcmFtcyk9PW51bGw/dm9pZCAwOnplLmNhbGwoU2UpKXx8e30pfWNhdGNoe310cnl7T2JqZWN0LmFzc2lnbihQZSwoKFJlPShCZT11LnRlY2hub1N0YWIpLmdldEZsYXRQYXJhbXMpPT1udWxsP3ZvaWQgMDpSZS5jYWxsKEJlKSl8fHt9KX1jYXRjaHt9dHJ5e09iamVjdC5hc3NpZ24oUGUsKCh2ZT0oQWU9dS5jbGlja3MpLmdldEZsYXRQYXJhbXMpPT1udWxsP3ZvaWQgMDp2ZS5jYWxsKEFlKSl8fHt9KX1jYXRjaHt9dHJ5e09iamVjdC5hc3NpZ24oUGUsKChOZT0oR2U9dS5maWx0ZXJQaW5nKS5nZXRGbGF0UGFyYW1zKT09bnVsbD92b2lkIDA6TmUuY2FsbChHZSkpfHx7fSl9Y2F0Y2h7fXRyeXtPYmplY3QuYXNzaWduKFBlLCgoa2U9KE1lPXUuYmFzcykuZ2V0RmxhdFBhcmFtcyk9PW51bGw/dm9pZCAwOmtlLmNhbGwoTWUpKXx8e30pfWNhdGNoe31jLmxhc3RMb29wUGFyYW1zRmxhdD1QZX1jYXRjaHt9e2NvbnN0IFBlPWMuc2VjdGlvbk1vZGU7bGV0IHhlPWMuc2VjdGlvbk1vZGU7dHJ5e3hlPWIubmV4dChjLnNlY3Rpb25Nb2RlKX1jYXRjaHt9aWYoeGUhPT1jLnNlY3Rpb25Nb2RlKXtpZihjLm1vZGlmaWNhdGlvblBoYXNlPW51bGwseGU9PT0iYW1iaWVudCImJihjLnByZUFtYmllbnRQYXJhbXNGbGF0PWMubGFzdExvb3BQYXJhbXNGbGF0P3suLi5jLmxhc3RMb29wUGFyYW1zRmxhdH06bnVsbCksQyhjLGcsdSx4ZSksUGU9PT0iYW1iaWVudCImJmMucHJlQW1iaWVudFBhcmFtc0ZsYXQpe2NvbnN0IEVlPXt9O3RyeXtmb3IoY29uc3RbcWUsdHRdb2YgT2JqZWN0LmVudHJpZXMoYy5wcmVBbWJpZW50UGFyYW1zRmxhdCkpL1wuKHJldmVyYnxkZWxheXxoYWxsKS8udGVzdChxZSl8fChFZVtxZV09dHQpfWNhdGNoe310cnl7dS5raWNrLnVwZGF0ZVBhcmFtcyhFZSl9Y2F0Y2h7fXRyeXt1LmhpaGF0LnVwZGF0ZVBhcmFtcyhFZSl9Y2F0Y2h7fXRyeXt1LmZtQmxpcDEudXBkYXRlUGFyYW1zKEVlKX1jYXRjaHt9dHJ5e3UuZm1CbGlwMi51cGRhdGVQYXJhbXMoRWUpfWNhdGNoe310cnl7dS53b29kQmxvY2sudXBkYXRlUGFyYW1zKEVlKX1jYXRjaHt9dHJ5e3UudGVjaG5vU3RhYi51cGRhdGVQYXJhbXMoRWUpfWNhdGNoe310cnl7dS5jbGlja3MudXBkYXRlUGFyYW1zKEVlKX1jYXRjaHt9dHJ5e3UuZmlsdGVyUGluZy51cGRhdGVQYXJhbXMoRWUpfWNhdGNoe310cnl7dS5iYXNzLnVwZGF0ZVBhcmFtcyhFZSl9Y2F0Y2h7fX10cnl7Yy5yaHl0aG0ubmV4dEJhcigpfWNhdGNoe31jLmxvb3BMZW5ndGhTdGVwcz1jLnJoeXRobS5nZXRMb29wTGVuZ3RoKCksVChjLGcsdSl9ZWxzZXtjLnNlY3Rpb25SZW1haW5pbmdTdGVwcz1NYXRoLm1heCgwLGMuc2VjdGlvblJlbWFpbmluZ1N0ZXBzLWMubG9vcExlbmd0aFN0ZXBzKSxjLm1vZGlmaWNhdGlvblBoYXNlPW51bGw7dHJ5e2Mucmh5dGhtLm5leHRCYXIoKX1jYXRjaHt9aWYoYy5sb29wTGVuZ3RoU3RlcHM9Yy5yaHl0aG0uZ2V0TG9vcExlbmd0aCgpLFQoYyxnLHUpLGMuc2VjdGlvbk1vZGU9PT0iYnJlYWsifHxjLnNlY3Rpb25Nb2RlPT09ImJyZWFrYmVhdCIpe2xldCBFZT0hMTt0cnl7Zm9yKGNvbnN0WyxxZV1vZiBPYmplY3QuZW50cmllcyh1KSl0cnl7Yy5yYW5kKCk8LjUmJigoX2U9cWU9PW51bGw/dm9pZCAwOnFlLnJlZ2VuZXJhdGVQYXJhbXMpPT1udWxsfHxfZS5jYWxsKHFlKSxFZT0hMCl9Y2F0Y2h7fX1jYXRjaHt9aWYoRWUpdHJ5e2NvbnN0IHFlPXt2b2ljZVNwZWNpZmljOnt0ZW1wb0JwbTpjLmJwbSxzZWNvbmRzUGVyU3RlcDpjLnNlY29uZHNQZXJTdGVwfX07Zm9yKGNvbnN0Wyx0dF1vZiBPYmplY3QuZW50cmllcyh1KSl0cnl7KGxlPXR0PT1udWxsP3ZvaWQgMDp0dC51cGRhdGVQYXJhbXMpPT1udWxsfHxsZS5jYWxsKHR0LHFlKX1jYXRjaHt9VChjLGcsdSksUihjLGcsdSl9Y2F0Y2h7fX10cnl7Y29uc3QgRWU9Zy5hdWRpb0NvbnRleHQscWU9Yy5uZXh0U3RlcFRpbWUrVigwLGMuc2Vjb25kc1BlckJlYXQpLHR0PU1hdGgubWF4KEVlLmN1cnJlbnRUaW1lKy4wMDUscWUpO3RyeXtjb25zdCBaZT0oZ2U9KFRlPXUuc2lnbmFsKT09bnVsbD92b2lkIDA6VGUuc2VuZFJldmVyYik9PW51bGw/dm9pZCAwOmdlLmdhaW47aWYoWmUpe2NvbnN0IHJ0PU51bWJlci5pc0Zpbml0ZShaZS52YWx1ZSk/WmUudmFsdWU6bnVsbDt0cnl7WmUuY2FuY2VsU2NoZWR1bGVkVmFsdWVzKEVlLmN1cnJlbnRUaW1lKX1jYXRjaHt9dHJ5e1plLnNldFZhbHVlQXRUaW1lKDAsdHQpfWNhdGNoe1plLnZhbHVlPTB9aWYocnQhPT1udWxsKXtjb25zdCBkdD10dCsuMjI7dHJ5e1plLnNldFZhbHVlQXRUaW1lKHJ0LGR0KX1jYXRjaHtaZS52YWx1ZT1ydH19fX1jYXRjaHt9dHJ5e3Uuc2lnbmFsLnRyaWdnZXIodHQse2FjY2VudDohMSxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTouOTV9KX1jYXRjaHt9dHJ5e3Uuc2lnbmFsLnN0b3AodHQrLjE4KX1jYXRjaHt9fWNhdGNoe310cnl7Y29uc3QgRWU9Zy5hdWRpb0NvbnRleHQscWU9Yy5zZWNvbmRzUGVyU3RlcCx0dD1jLm5leHRTdGVwVGltZStWKDAsYy5zZWNvbmRzUGVyQmVhdCksWmU9UShjLmxvb3BMZW5ndGhTdGVwcyxxZSkscnQ9dHQrWmU7dHJ5eyhPZT0od2U9dS5yaXNlKT09bnVsbD92b2lkIDA6d2UudXBkYXRlUGFyYW1zKT09bnVsbHx8T2UuY2FsbCh3ZSx7InJpc2Uudm9pY2VTcGVjaWZpYy50ZW1wb0JwbSI6Yy5icG0sInJpc2Uudm9pY2VTcGVjaWZpYy5zZWNvbmRzUGVyU3RlcCI6Yy5zZWNvbmRzUGVyU3RlcH0pfWNhdGNoe31sZXQgZHQ9bnVsbDt0cnl7Y29uc3QgbnQ9KChIZT1zPT1udWxsP3ZvaWQgMDpzLmZsYWdzKT09bnVsbD92b2lkIDA6SGUucmlzZUxlYWRTdGVwc1JhbmdlU3RheSl8fFsyLDEyXTtpZihBcnJheS5pc0FycmF5KG50KSYmbnQubGVuZ3RoPT09Mil7Y29uc3QgUHQ9TWF0aC5tYXgoMSxNYXRoLmZsb29yKE51bWJlcihudFswXSl8fDEpKSxKZT1NYXRoLm1heChQdCxNYXRoLmZsb29yKE51bWJlcihudFsxXSl8fFB0KSksaHQ9UHQrTWF0aC5mbG9vcihjLnJhbmQoKSooSmUtUHQrMSkpO2R0PU1hdGgubWF4KC4wNSxodCpxZSl9fWNhdGNoe31kdHx8KGR0PU1hdGgubWF4KC4xMiwxMipxZSkpO2xldCBjdD1ydC1kdCxmdD1kdDtjdDw9RWUuY3VycmVudFRpbWUrLjAwNSYmKGN0PUVlLmN1cnJlbnRUaW1lKy4wMSxmdD1NYXRoLm1heCguMDYsTWF0aC5tYXgoLjAyLHJ0LWN0KSkpO3RyeXtjb25zdCBudD0oKFdlPShVZT11LnJpc2UpPT1udWxsP3ZvaWQgMDpVZS5nZXRGbGF0UGFyYW1zKT09bnVsbD92b2lkIDA6V2UuY2FsbChVZSkpfHx7fSxQdD1NYXRoLm1heCgwLE51bWJlcihudFsicmlzZS52b2ljZVNwZWNpZmljLnRhaWxTZWNvbmRzIl0pfHwwKTtmdD1NYXRoLm1heCguMDIsTWF0aC5tYXgoLjAyLHJ0LWN0LVB0KSl9Y2F0Y2h7fWlmKHUucmlzZSYmTnVtYmVyLmlzRmluaXRlKGN0KSYmY3Q+RWUuY3VycmVudFRpbWUrLjAwNSYmTnVtYmVyLmlzRmluaXRlKGZ0KSYmZnQ+LjAyKXt1LnJpc2UudHJpZ2dlcihjdCx7ZHVyYXRpb25TZWM6ZnQsa2luZDoic2luZSJ9KTt0cnl7KGplPShWZT11LnJpc2UpLnN0b3ApPT1udWxsfHxqZS5jYWxsKFZlLHJ0KX1jYXRjaHt9fX1jYXRjaHt9fX10cnl7Yy5sb29wc0luQ3VycmVudE1vZGUrPTE7Y29uc3QgUGU9Yy5tb2RpZmljYXRpb25QaGFzZT9TdHJpbmcoYy5tb2RpZmljYXRpb25QaGFzZSkudG9Mb3dlckNhc2UoKToibm8gbW9kZSJ9Y2F0Y2h7fXRyeXtjb25zdCBQZT1jLm5leHRTdGVwVGltZStWKDAsYy5zZWNvbmRzUGVyQmVhdCkseGU9UShjLmxvb3BMZW5ndGhTdGVwcyx2KSxFZT1QZSt4ZSxxZT1NYXRoLm1heCgwLE1hdGgucm91bmQoKEVlLUIpKjFlMykpO1RzKHMscWUpfWNhdGNoe319Yy5uZXh0U3RlcFRpbWUrPUN0LFcrPTF9fWZ1bmN0aW9uIFIoQix2LEYpe3RyeXtMKEIsdik7Zm9yKGNvbnN0IG5lIG9mIE9iamVjdC5rZXlzKHYucmVzb25HYXRlc3x8e30pKXRyeXt2LnJlc29uR2F0ZXNbbmVdLmdhaW4uc2V0VmFsdWVBdFRpbWUoMCx2LmF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSl9Y2F0Y2h7fWlmKCFCLmlzQnx8IXYucmVzb25hdG9yfHxCLnNlY3Rpb25Nb2RlPT09ImJyZWFrInx8IU10LnJlc29uYXRvci5lbmFibGVPbk1vZGVzLmluY2x1ZGVzKEIuc2VjdGlvbk1vZGUpKXJldHVybjtjb25zdCBXPVsia2ljayIsImhpaGF0IiwiZm1CbGlwMSIsImZtQmxpcDIiLCJ3b29kQmxvY2siLCJ0ZWNobm9TdGFiIiwiY2xpY2tzIiwiZmlsdGVyUGluZyIsImthcnBsdXMiLCJiYXNzIl0sWT1CLnNlY3Rpb25Nb2RlPT09ImZsdXhHcmlkInx8Qi5zZWN0aW9uTW9kZT09PSJzdHJhaWdodCI7aWYodi5yZXNvbkdhdGVzLmhpaGF0KXtjb25zdCBuZT1NYXRoLm1heCguMTUsTWF0aC5taW4oLjYsTXQucmVzb25hdG9yLmhpSGF0Rm9yY2VNaXh8fC41KSk7dHJ5e3YucmVzb25HYXRlcy5oaWhhdC5nYWluLnNldFZhbHVlQXRUaW1lKG5lLHYuYXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lKX1jYXRjaHt9fWNvbnN0IGllPShuZT0+e2NvbnN0IHRlPW5lLnNsaWNlKCk7Zm9yKGxldCBaPXRlLmxlbmd0aC0xO1o+MDtaLS0pe2NvbnN0IHJlPU1hdGguZmxvb3IoTigpKihaKzEpKSxkZT10ZVtaXTt0ZVtaXT10ZVtyZV0sdGVbcmVdPWRlfXJldHVybiB0ZX0pKFcuZmlsdGVyKG5lPT5uZSE9PSJoaWhhdCImJnYucmVzb25HYXRlc1tuZV0pKSx1ZT1NYXRoLm1heCgxLE1hdGgubWluKDQsMitNYXRoLmZsb29yKE4oKSozKSkpO2ZvcihsZXQgbmU9MDtuZTxNYXRoLm1pbih1ZSxpZS5sZW5ndGgpO25lKyspe2NvbnN0IHRlPWllW25lXSxaPVk/LjY6LjIscmU9WT8xOi43LGRlPVorTigpKihyZS1aKTt0cnl7di5yZXNvbkdhdGVzW3RlXS5nYWluLnNldFZhbHVlQXRUaW1lKGRlLHYuYXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lKX1jYXRjaHt9fX1jYXRjaHt9fWFzeW5jIGZ1bmN0aW9uIEkoKXt2YXIgQix2LEYsVyxZLEosaWU7aWYoIWMuaXNSdW5uaW5nKXtpZighYy5yaHl0aG0pdGhyb3cgbmV3IEVycm9yKCJObyByaHl0aG0gc2V0LiBDYWxsIHNldFJoeXRobShyaHl0aG1UZWNobm8pIGZpcnN0LiIpO2lmKGcuYXVkaW9Db250ZXh0LnN0YXRlIT09InJ1bm5pbmciKXRyeXthd2FpdCBnLmF1ZGlvQ29udGV4dC5yZXN1bWUoKX1jYXRjaHt9aWYoYy5pc1J1bm5pbmc9ITAsYy5wYXVzZWQ9ITEsYy5sb29wTGVuZ3RoU3RlcHM9Yy5yaHl0aG0uZ2V0TG9vcExlbmd0aCgpLGMuY3VycmVudFN0ZXA9MCxjLm5leHRTdGVwVGltZT1nLmF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSsuMDUsTSh1KSxUKGMsZyx1KSxjLm1vZGlmaWNhdGlvblBoYXNlPW51bGwsIWMubW9kaWZpY2F0aW9uUGhhc2UpdHJ5e2QuY2FwdHVyZSh1LGBtb2RlOiR7Yy5zZWN0aW9uTW9kZX1gKX1jYXRjaHt9KCFjLnNlY3Rpb25Nb2RlfHx0eXBlb2YgYy5zZWN0aW9uTW9kZSE9InN0cmluZyIpJiYoYy5zZWN0aW9uTW9kZT0ic3RyYWlnaHQiKSxjLnNlY3Rpb25SZW1haW5pbmdTdGVwczw9MCYmKGMuc2VjdGlvblJlbWFpbmluZ1N0ZXBzPUcoYykpO3RyeXtiLnNldEN1cnJlbnQoYy5zZWN0aW9uTW9kZSl9Y2F0Y2h7fXRyeXskKGMsZyl9Y2F0Y2h7fXRyeXt4KGMsZyl9Y2F0Y2h7fXRyeXtvKGMsZyl9Y2F0Y2h7fXRyeXtjb25zdCB1ZT1jLm5leHRTdGVwVGltZStjLmxvb3BMZW5ndGhTdGVwcypjLnNlY29uZHNQZXJTdGVwLG5lPU1hdGgubWF4KDAsTWF0aC5yb3VuZCgodWUtZy5hdWRpb0NvbnRleHQuY3VycmVudFRpbWUpKjFlMykpO1RzKHMsbmUpfWNhdGNoe310cnl7Y29uc3QgdWU9Zy5hdWRpb0NvbnRleHQsbmU9Yy5zZWNvbmRzUGVyU3RlcCx0ZT1jLm5leHRTdGVwVGltZStWKDAsYy5zZWNvbmRzUGVyQmVhdCksWj1RKGMubG9vcExlbmd0aFN0ZXBzLG5lKSxyZT10ZStaO3RyeXsodj0oQj11LnJpc2UpPT1udWxsP3ZvaWQgMDpCLnVwZGF0ZVBhcmFtcyk9PW51bGx8fHYuY2FsbChCLHsicmlzZS52b2ljZVNwZWNpZmljLnRlbXBvQnBtIjpjLmJwbSwicmlzZS52b2ljZVNwZWNpZmljLnNlY29uZHNQZXJTdGVwIjpjLnNlY29uZHNQZXJTdGVwfSl9Y2F0Y2h7fWxldCBkZT1udWxsO3RyeXtjb25zdCB6ZT0oKEY9cz09bnVsbD92b2lkIDA6cy5mbGFncyk9PW51bGw/dm9pZCAwOkYucmlzZUxlYWRTdGVwc1JhbmdlU3RheSl8fFsyLDEyXTtpZihBcnJheS5pc0FycmF5KHplKSYmemUubGVuZ3RoPT09Mil7Y29uc3QgQmU9TWF0aC5tYXgoMSxNYXRoLmZsb29yKE51bWJlcih6ZVswXSl8fDEpKSxSZT1NYXRoLm1heChCZSxNYXRoLmZsb29yKE51bWJlcih6ZVsxXSl8fEJlKSksQWU9QmUrTWF0aC5mbG9vcihjLnJhbmQoKSooUmUtQmUrMSkpO2RlPU1hdGgubWF4KC4wNSxBZSpuZSl9fWNhdGNoe31kZXx8KGRlPU1hdGgubWF4KC4xMiwxMipuZSkpO2xldCBiZT1yZS1kZSxTZT1kZTtiZTw9dWUuY3VycmVudFRpbWUrLjAwNSYmKGJlPXVlLmN1cnJlbnRUaW1lKy4wMSxTZT1NYXRoLm1heCguMDYsTWF0aC5tYXgoLjAyLHJlLWJlKSkpO3RyeXtjb25zdCB6ZT0oKFk9KFc9dS5yaXNlKT09bnVsbD92b2lkIDA6Vy5nZXRGbGF0UGFyYW1zKT09bnVsbD92b2lkIDA6WS5jYWxsKFcpKXx8e30sQmU9TWF0aC5tYXgoMCxOdW1iZXIoemVbInJpc2Uudm9pY2VTcGVjaWZpYy50YWlsU2Vjb25kcyJdKXx8MCk7U2U9TWF0aC5tYXgoLjAyLE1hdGgubWF4KC4wMixyZS1iZS1CZSkpfWNhdGNoe31pZih1LnJpc2UmJk51bWJlci5pc0Zpbml0ZShiZSkmJmJlPnVlLmN1cnJlbnRUaW1lKy4wMDUmJk51bWJlci5pc0Zpbml0ZShTZSkmJlNlPi4wMil7dS5yaXNlLnRyaWdnZXIoYmUse2R1cmF0aW9uU2VjOlNlLGtpbmQ6InNpbmUifSk7dHJ5eyhpZT0oSj11LnJpc2UpLnN0b3ApPT1udWxsfHxpZS5jYWxsKEoscmUpfWNhdGNoe319fWNhdGNoe31jLnNjaGVkdWxlcklkPXNldEludGVydmFsKFUsYy5zY2hlZHVsZXJJbnRlcnZhbE1zKTt0cnl7Yy5kcm9uZUdhdGUubW9kZT1udWxsLGMuZHJvbmVHYXRlLmFsbG93PSEwfWNhdGNoe31FKGMsdSksUihjLGcpLE8oYyxnLHUpO3RyeXtzJiZzLmZsYWdzJiZzLmZsYWdzLnNvbG9GbUJsaXAxP3koImZtQmxpcDEiKTpfKCl9Y2F0Y2h7XygpfX19ZnVuY3Rpb24gaigpe3ZhciBCO2lmKGMuaXNSdW5uaW5nKXtjLmlzUnVubmluZz0hMSxjLnBhdXNlZD0hMSxjLnNjaGVkdWxlcklkJiYoY2xlYXJJbnRlcnZhbChjLnNjaGVkdWxlcklkKSxjLnNjaGVkdWxlcklkPW51bGwpO3RyeXt1LmtpY2suc3RvcCgpfWNhdGNoe310cnl7dS5oaWhhdC5zdG9wKCl9Y2F0Y2h7fXRyeXt1LmZtQmxpcDEuc3RvcCgpfWNhdGNoe310cnl7dS5mbUJsaXAyLnN0b3AoKX1jYXRjaHt9dHJ5e3Uud29vZEJsb2NrLnN0b3AoKX1jYXRjaHt9dHJ5e3Uua2FycGx1cy5zdG9wKCl9Y2F0Y2h7fXRyeXt1LnRlY2hub1N0YWIuc3RvcCgpfWNhdGNoe310cnl7dS5jbGlja3Muc3RvcCgpfWNhdGNoe310cnl7dS5maWx0ZXJQaW5nLnN0b3AoKX1jYXRjaHt9dHJ5e3UuYmFzcy5zdG9wKCl9Y2F0Y2h7fXRyeXt1LnJpc2Uuc3RvcCgpfWNhdGNoe310cnl7dS5zaWduYWwuc3RvcCgpfWNhdGNoe310cnl7KEI9dS5kcm9uZSk9PW51bGx8fEIuc3RvcCgpfWNhdGNoe319fWZ1bmN0aW9uIHNlKCl7Yy5pc1J1bm5pbmcmJihjLmlzUnVubmluZz0hMSxjLnBhdXNlZD0hMCxjLnNjaGVkdWxlcklkJiYoY2xlYXJJbnRlcnZhbChjLnNjaGVkdWxlcklkKSxjLnNjaGVkdWxlcklkPW51bGwpKX1hc3luYyBmdW5jdGlvbiBoZSgpe2lmKCEoYy5pc1J1bm5pbmd8fCFjLnBhdXNlZCkpe3RyeXtnLmF1ZGlvQ29udGV4dC5zdGF0ZSE9PSJydW5uaW5nIiYmYXdhaXQgZy5hdWRpb0NvbnRleHQucmVzdW1lKCl9Y2F0Y2h7fWMucGF1c2VkPSExLGMuaXNSdW5uaW5nPSEwLGMubmV4dFN0ZXBUaW1lPWcuYXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lKy4wNSxjLnNjaGVkdWxlcklkPXNldEludGVydmFsKFUsYy5zY2hlZHVsZXJJbnRlcnZhbE1zKSxFKGMsdSl9fWZ1bmN0aW9uIGVlKCl7dmFyIEIsdixGLFcsWSxKLGllLHVlLG5lLHRlLFoscmUsZGUsYmUsU2UsemUsQmUsUmUsQWUsdmUsR2UsTmUsTWUsa2UsX2UsbGUsVGUsZ2Usd2UsT2U7dHJ5e2ooKX1jYXRjaHt9dHJ5eyh2PShCPWcubWFzdGVyQnVzKS5kaXNwb3NlKT09bnVsbHx8di5jYWxsKEIpfWNhdGNoe310cnl7KFc9KEY9dS5raWNrKS5kaXNwb3NlKT09bnVsbHx8Vy5jYWxsKEYpfWNhdGNoe310cnl7KEo9KFk9dS5oaWhhdCkuZGlzcG9zZSk9PW51bGx8fEouY2FsbChZKX1jYXRjaHt9dHJ5eyh1ZT0oaWU9dS5mbUJsaXAxKS5kaXNwb3NlKT09bnVsbHx8dWUuY2FsbChpZSl9Y2F0Y2h7fXRyeXsodGU9KG5lPXUuZm1CbGlwMikuZGlzcG9zZSk9PW51bGx8fHRlLmNhbGwobmUpfWNhdGNoe310cnl7KHJlPShaPXUud29vZEJsb2NrKS5kaXNwb3NlKT09bnVsbHx8cmUuY2FsbChaKX1jYXRjaHt9dHJ5eyhiZT0oZGU9dS50ZWNobm9TdGFiKS5kaXNwb3NlKT09bnVsbHx8YmUuY2FsbChkZSl9Y2F0Y2h7fXRyeXsoemU9KFNlPXUuY2xpY2tzKS5kaXNwb3NlKT09bnVsbHx8emUuY2FsbChTZSl9Y2F0Y2h7fXRyeXsoUmU9KEJlPXUuZmlsdGVyUGluZykuZGlzcG9zZSk9PW51bGx8fFJlLmNhbGwoQmUpfWNhdGNoe310cnl7KHZlPShBZT11LmJhc3MpLmRpc3Bvc2UpPT1udWxsfHx2ZS5jYWxsKEFlKX1jYXRjaHt9dHJ5eyhOZT0oR2U9dS5yaXNlKS5kaXNwb3NlKT09bnVsbHx8TmUuY2FsbChHZSl9Y2F0Y2h7fXRyeXsoa2U9KE1lPXUuc2lnbmFsKS5kaXNwb3NlKT09bnVsbHx8a2UuY2FsbChNZSl9Y2F0Y2h7fXRyeXsobGU9KF9lPXUuZHJvbmUpPT1udWxsP3ZvaWQgMDpfZS5kaXNwb3NlKT09bnVsbHx8bGUuY2FsbChfZSl9Y2F0Y2h7fXRyeXtPYmplY3QudmFsdWVzKGcudHJhY2tzKS5mb3JFYWNoKEhlPT57dHJ5e0hlLmRpc2Nvbm5lY3QoKX1jYXRjaHt9fSl9Y2F0Y2h7fXRyeXtnLnJlc29uYXRvciYmKChnZT0oVGU9Zy5yZXNvbmF0b3IpLmRpc3Bvc2UpPT1udWxsfHxnZS5jYWxsKFRlKSxnLnJlc29uYXRvcj1udWxsKX1jYXRjaHt9dHJ5e2cucmVzb25JbnB1dEJ1cyYmKGcucmVzb25JbnB1dEJ1cy5kaXNjb25uZWN0KCksZy5yZXNvbklucHV0QnVzPW51bGwpfWNhdGNoe310cnl7KE9lPSh3ZT1nLmF1ZGlvQ29udGV4dCkuY2xvc2UpPT1udWxsfHxPZS5jYWxsKHdlKX1jYXRjaHt9fWZ1bmN0aW9uIFgoQil7dmFyIEY7Yy5icG09Z3QoQiksYy5zZWNvbmRzUGVyQmVhdD02MC9jLmJwbSxjLnNlY29uZHNQZXJTdGVwPWMuc2Vjb25kc1BlckJlYXQvNDtjb25zdCB2PXt2b2ljZVNwZWNpZmljOnt0ZW1wb0JwbTpjLmJwbSxzZWNvbmRzUGVyU3RlcDpjLnNlY29uZHNQZXJTdGVwfX07dHJ5e3Uua2ljay51cGRhdGVQYXJhbXModil9Y2F0Y2h7fXRyeXt1LmhpaGF0LnVwZGF0ZVBhcmFtcyh2KX1jYXRjaHt9dHJ5e3UuZm1CbGlwMS51cGRhdGVQYXJhbXModil9Y2F0Y2h7fXRyeXt1LmZtQmxpcDIudXBkYXRlUGFyYW1zKHYpfWNhdGNoe310cnl7dS53b29kQmxvY2sudXBkYXRlUGFyYW1zKHYpfWNhdGNoe310cnl7dS5rYXJwbHVzLnVwZGF0ZVBhcmFtcyh2KX1jYXRjaHt9dHJ5e3UudGVjaG5vU3RhYi51cGRhdGVQYXJhbXModil9Y2F0Y2h7fXRyeXt1LmNsaWNrcy51cGRhdGVQYXJhbXModil9Y2F0Y2h7fXRyeXt1LmZpbHRlclBpbmcudXBkYXRlUGFyYW1zKHYpfWNhdGNoe310cnl7dS5iYXNzLnVwZGF0ZVBhcmFtcyh2KX1jYXRjaHt9dHJ5e3UucmlzZS51cGRhdGVQYXJhbXModil9Y2F0Y2h7fXRyeXsoRj11LmRyb25lKT09bnVsbHx8Ri51cGRhdGVQYXJhbXModil9Y2F0Y2h7fXRyeXtjLnJoeXRobSYmdHlwZW9mIGMucmh5dGhtLnNldFRlbXBvPT0iZnVuY3Rpb24iJiYoYy5yaHl0aG0uc2V0VGVtcG8oYy5icG0pLGMubG9vcExlbmd0aFN0ZXBzPWMucmh5dGhtLmdldExvb3BMZW5ndGgoKSl9Y2F0Y2h7fXRyeXtnLnNlbmREZWxheS51cGRhdGVQYXJhbXMoe3RlbXBvQnBtOmMuYnBtfSl9Y2F0Y2h7fXRyeXtvKGMsZyl9Y2F0Y2h7fX1mdW5jdGlvbiBjZShCKXt2YXIgdjt0cnl7dS5raWNrLnVwZGF0ZVBhcmFtcyhCKX1jYXRjaHt9dHJ5e3UuaGloYXQudXBkYXRlUGFyYW1zKEIpfWNhdGNoe310cnl7dS5mbUJsaXAxLnVwZGF0ZVBhcmFtcyhCKX1jYXRjaHt9dHJ5e3UuZm1CbGlwMi51cGRhdGVQYXJhbXMoQil9Y2F0Y2h7fXRyeXt1Lndvb2RCbG9jay51cGRhdGVQYXJhbXMoQil9Y2F0Y2h7fXRyeXt1LmJhc3MudXBkYXRlUGFyYW1zKEIpfWNhdGNoe310cnl7dS5yaXNlLnVwZGF0ZVBhcmFtcyhCKX1jYXRjaHt9dHJ5eyh2PXUuZHJvbmUpPT1udWxsfHx2LnVwZGF0ZVBhcmFtcyhCKX1jYXRjaHt9fWZ1bmN0aW9uIEsoQix2KXt2YXIgRjtzd2l0Y2goQil7Y2FzZSJraWNrIjp1LmtpY2sudXBkYXRlUGFyYW1zKHYpO2JyZWFrO2Nhc2UiaGloYXQiOnUuaGloYXQudXBkYXRlUGFyYW1zKHYpO2JyZWFrO2Nhc2UiZm1CbGlwMSI6dS5mbUJsaXAxLnVwZGF0ZVBhcmFtcyh2KTticmVhaztjYXNlImZtQmxpcDIiOnUuZm1CbGlwMi51cGRhdGVQYXJhbXModik7YnJlYWs7Y2FzZSJ3b29kQmxvY2siOnUud29vZEJsb2NrLnVwZGF0ZVBhcmFtcyh2KTticmVhaztjYXNlImthcnBsdXMiOnUua2FycGx1cy51cGRhdGVQYXJhbXModik7YnJlYWs7Y2FzZSJ0ZWNobm9TdGFiIjp1LnRlY2hub1N0YWIudXBkYXRlUGFyYW1zKHYpO2JyZWFrO2Nhc2UiY2xpY2tzIjp1LmNsaWNrcy51cGRhdGVQYXJhbXModik7YnJlYWs7Y2FzZSJmaWx0ZXJQaW5nIjp1LmZpbHRlclBpbmcudXBkYXRlUGFyYW1zKHYpO2JyZWFrO2Nhc2UiYmFzcyI6dS5iYXNzLnVwZGF0ZVBhcmFtcyh2KTticmVhaztjYXNlInNpZ25hbCI6dS5zaWduYWwudXBkYXRlUGFyYW1zKHYpO2JyZWFrO2Nhc2UiZHJvbmUiOnRyeXsoRj11LmRyb25lKT09bnVsbHx8Ri51cGRhdGVQYXJhbXModil9Y2F0Y2h7fWJyZWFrfX1mdW5jdGlvbiBhZSgpe3RyeXt1LmtpY2sucmVnZW5lcmF0ZVBhcmFtcygpfWNhdGNoe310cnl7dS5oaWhhdC5yZWdlbmVyYXRlUGFyYW1zKCl9Y2F0Y2h7fXRyeXt1LmZtQmxpcDEucmVnZW5lcmF0ZVBhcmFtcygpfWNhdGNoe310cnl7dS5mbUJsaXAyLnJlZ2VuZXJhdGVQYXJhbXMoKX1jYXRjaHt9dHJ5e3Uud29vZEJsb2NrLnJlZ2VuZXJhdGVQYXJhbXMoKX1jYXRjaHt9dHJ5e3Uua2FycGx1cy5yZWdlbmVyYXRlUGFyYW1zKCl9Y2F0Y2h7fXRyeXt1LnRlY2hub1N0YWIucmVnZW5lcmF0ZVBhcmFtcygpfWNhdGNoe310cnl7dS5jbGlja3MucmVnZW5lcmF0ZVBhcmFtcygpfWNhdGNoe310cnl7dS5maWx0ZXJQaW5nLnJlZ2VuZXJhdGVQYXJhbXMoKX1jYXRjaHt9dHJ5e3UuYmFzcy5yZWdlbmVyYXRlUGFyYW1zKCl9Y2F0Y2h7fXRyeXtUKGMsZyx1KX1jYXRjaHt9UihjLGcpfWZ1bmN0aW9uIGZlKEIpe2Mucmh5dGhtPUIsYy5yaHl0aG0mJihjLmxvb3BMZW5ndGhTdGVwcz1jLnJoeXRobS5nZXRMb29wTGVuZ3RoKCkpO3RyeXtjLnJoeXRobSYmdHlwZW9mIGMucmh5dGhtLmdldE1vZGU9PSJmdW5jdGlvbiImJihjLnNlY3Rpb25Nb2RlPWMucmh5dGhtLmdldE1vZGUoKSl9Y2F0Y2h7fXRyeXtiLnNldEN1cnJlbnQoYy5zZWN0aW9uTW9kZSl9Y2F0Y2h7fXRyeXtpZihjLnJoeXRobSYmdHlwZW9mIGMucmh5dGhtLnNldFRlbXBvPT0iZnVuY3Rpb24iKXtjb25zdCB2PU51bWJlcihzJiZzLmJwbSk7TnVtYmVyLmlzRmluaXRlKHYpJiZ2PT09Yy5icG18fGMucmh5dGhtLnNldFRlbXBvKGMuYnBtKX19Y2F0Y2h7fU0odSksVChjLGcsdSksYy5zZWN0aW9uUmVtYWluaW5nU3RlcHM9RyhjKSxSKGMsZyk7dHJ5e3goYyxnKX1jYXRjaHt9dHJ5e28oYyxnKX1jYXRjaHt9TyhjLGcsdSl9ZnVuY3Rpb24gbWUoKXtyZXR1cm4gYy5icG19ZnVuY3Rpb24gcGUoKXtyZXR1cm4gYy5zZWNvbmRzUGVyU3RlcH1mdW5jdGlvbiBvZSgpe3JldHVybnthdWRpb0NvbnRleHQ6Zy5hdWRpb0NvbnRleHQsc3RhdGU6YyxzdGFydDpJLHN0b3A6aixwYXVzZTpzZSxyZXN1bWU6aGUsZGlzcG9zZTplZSxtYXN0ZXJCdXM6Zy5tYXN0ZXJCdXMsZm1CbGlwMTp1LmZtQmxpcDEsZm1CbGlwMjp1LmZtQmxpcDIsZmlsdGVyUGluZzp1LmZpbHRlclBpbmcsc2lnbmFsOnUuc2lnbmFsLHNldEJwbTpYLHNldFBhcmFtczpjZSxzZXRWb2ljZVBhcmFtczpLLHJlZ2VuZXJhdGU6YWUsc2V0Umh5dGhtOmZlLHNldE1vZGU6Qj0+QyhjLGcsdSxCLCEwKSxnZXRNb2RlOigpPT5jLnNlY3Rpb25Nb2RlLGdldEJwbTptZSxnZXRTZWNvbmRzUGVyU3RlcDpwZSxyZXNvbmF0b3I6Zy5yZXNvbmF0b3Isc25hcHNob3RzOntjYXB0dXJlOihCLHYpPT57dHJ5e3JldHVybiBkLmNhcHR1cmUodSxCLHYpfWNhdGNoe3JldHVybiBudWxsfX0scmVzdG9yZTooQix2KT0+e3RyeXtyZXR1cm4gZC5yZXN0b3JlKHUsQix2KX1jYXRjaHtyZXR1cm4hMX19LGxpc3Q6KCk9Pnt0cnl7cmV0dXJuIGQubGlzdCgpfWNhdGNoe3JldHVybltdfX0saGFzOkI9Pnt0cnl7cmV0dXJuIGQuaGFzKEIpfWNhdGNoe3JldHVybiExfX0sY2xlYXI6Qj0+e3RyeXtyZXR1cm4gZC5jbGVhcihCKX1jYXRjaHtyZXR1cm4hMH19fSxzZXRTb2xvT25seTp5LGNsZWFyU29sbzpffX1yZXR1cm4gb2UoKX1jb25zdCBBcz1uZXcgTWFwO2Z1bmN0aW9uIFBjKGUpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO2NvbnN0IG49bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3QgYT1lW3RdO25bdF09YT97Li4uYX06bnVsbH1yZXR1cm4gbn1mdW5jdGlvbiB6YyhlKXtpZighZXx8dHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiBlO2NvbnN0IG49e307Zm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhlKSluW3RdPVBjKGEpO3JldHVybiBufWNvbnN0IFBzPXtBOntraWNrOntwaHJhc2VMZW46WzI0LDMyLDQ4XX0saGloYXQ6e29mZk9wZW5Qcm9iOi4yNixub25PZmZPcGVuUHJvYjouMTJ9LGJhc3M6e3BocmFzZUxlbjpbMjQsMzIsNDhdLHBlckJhck1pbjoxLHBlckJhck1heDoyLHN1c3RhaW5Qcm9iOi4yMixwcmVmZXJPZmZiZWF0Oi43NSxhdm9pZEtpY2tQcm9iOi43fSxmbUJsaXAyOntwaHJhc2VMZW46WzI0LDMyLDQ4XSxzdXN0YWluUHJvYjouMyxiYXJIaXRQcm9iOi42Mn0sZm1CbGlwMTp7ZWlnaHRoUHJvYjouNjIsYmFySGl0UHJvYjouNzJ9LHdvb2RCbG9jazp7ZGVuc2l0eUxvbmc6LjEyLGRlbnNpdHlTaG9ydDouMTgsYmFySGl0UHJvYjouNDh9LGthcnBsdXM6e2JhckhpdFByb2I6LjQyfSx0ZWNobm9TdGFiOntwaHJhc2VMZW46WzI0LDMyLDQ4XX0sY2xpY2tzOntwaHJhc2VMZW46WzE2LDI0LDMyLDQ4XSxtYXhQZXIxNjo0fX0sQjp7a2ljazp7cGhyYXNlTGVuOlsyNCwzMiw0OF19LGhpaGF0OntvZmZPcGVuUHJvYjouMixub25PZmZPcGVuUHJvYjouMDl9LGJhc3M6e3BocmFzZUxlbjpbMjQsMzIsNDhdLHBlckJhck1pbjoxLHBlckJhck1heDoyLHN1c3RhaW5Qcm9iOi4xOCxwcmVmZXJPZmZiZWF0Oi43LGF2b2lkS2lja1Byb2I6Ljd9LGZtQmxpcDI6e3BocmFzZUxlbjpbMjQsMzIsNDhdLHN1c3RhaW5Qcm9iOi4yNixiYXJIaXRQcm9iOi41NX0sZm1CbGlwMTp7ZWlnaHRoUHJvYjouNTgsYmFySGl0UHJvYjouNjV9LHdvb2RCbG9jazp7ZGVuc2l0eUxvbmc6LjEsZGVuc2l0eVNob3J0Oi4xNSxiYXJIaXRQcm9iOi40fSxrYXJwbHVzOntiYXJIaXRQcm9iOi4zNn0sdGVjaG5vU3RhYjp7cGhyYXNlTGVuOlsyNCwzMiw0OF19LGNsaWNrczp7cGhyYXNlTGVuOlsxNiwyNCwzMiw0OF0sbWF4UGVyMTY6NH19fTtmdW5jdGlvbiBSYyh7bGVuOmUsc2lkZTpuPSJBIixyOnR9KXtjb25zdCBhPVBzW25dfHxQcy5BLHM9WyJoaWhhdCIsImZtQmxpcDEiLCJmbUJsaXAyIiwid29vZEJsb2NrIiwia2FycGx1cyIsInRlY2hub1N0YWIiLCJjbGlja3MiLCJmaWx0ZXJQaW5nIl07U3Qocyk7Y29uc3QgbT1JZSg1LDcpLHA9bmV3IFNldChzLnNsaWNlKDAsbSkpLFM9RmUoZSksUD1GZShlKSxNPUZlKGUpLFQ9RmUoZSksRz1GZShlKSxFPUZlKGUpLEw9RmUoZSkseD1GZShlKSxPPUZlKGUpLHc9RmUoZSksbz1GZShlKTtpZihOKCk8LjM1KXtjb25zdCBkPUtlKGEua2ljay5waHJhc2VMZW4pLGc9bmV3IEFycmF5KGQpLmZpbGwobnVsbCksYj1bWzAsNCw4LDEyLDExXSxbMCw2LDgsMTJdLFswLDEsOCwxMl0sWzE1LDAsOF0sWzAsNiw4LDE0XSxbMCw0LDUsMTJdXS5zbGljZSgpO1N0KGIpO2NvbnN0IGg9SWUoMiw0KSxmPWIuc2xpY2UoMCxoKTtsZXQgeT0wO2Zvcig7eTxkOylmb3IobGV0IF89MDtfPGYubGVuZ3RoJiZ5PGQ7XysrKXtjb25zdCBIPWZbX107Zm9yKGNvbnN0IFYgb2YgSCl7Y29uc3QgUT15K1YlMTY7aWYoUT49ZClicmVhaztjb25zdCAkPVYlMTY9PT0wLHE9ViUxNj09PTgsaz0kPzE6cT8uOTg6aSguOSwuOTcpLEE9JHx8cT8hMDppKDAsMSk8LjE1PyJ3ZWFrIjohMTtnW1FdPXthY2NlbnQ6QSxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTprfX15Kz0xNn1mb3IobGV0IF89MDtfPGU7XysrKXtjb25zdCBIPWdbXyVkXTtIJiYoU1tfXT17Li4uSH0pfX1lbHNlIGZvcihsZXQgZD0wO2Q8ZTtkKyspaWYoZCU0PT09MCl7Y29uc3QgZz1kJTE2LHU9Zz09PTA7U1tkXT17YWNjZW50OnU/ITA6Zz09PTgsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6dT8xOi45OH19aWYocC5oYXMoImhpaGF0IikpZm9yKGxldCBjPTA7YzxlO2MrKyl7Y29uc3QgZD1jJTE2LGc9ZCU0PT09Mix1PWQ9PT0zfHxkPT09N3x8ZD09PTExfHxkPT09MTUsYj1nP2EuaGloYXQub2ZmT3BlblByb2I6YS5oaWhhdC5ub25PZmZPcGVuUHJvYixoPWkoMCwxKTxiJiZkIT09MCxmPWc/ITA6dT8id2VhayI6ITEseT1oPzI6MCxfPWc/MTp1Py44NTouOTU7UFtjXT17YWNjZW50OmYsc3VzdGFpblN0ZXBzOnksdmVsb2NpdHk6X319e2xldCB1PWZ1bmN0aW9uKGIpe2NvbnN0IGg9TWF0aC5tYXgoMCxiLTIpLGY9TWF0aC5taW4oZC0xLGIrMik7Zm9yKGxldCB5PWg7eTw9Zjt5KyspaWYoZ1t5XSlyZXR1cm4hMTtyZXR1cm4hMH07Y29uc3QgYz1hLmJhc3N8fHtwaHJhc2VMZW46WzI0LDMyXSxwZXJCYXJNaW46MSxwZXJCYXJNYXg6MixzdXN0YWluUHJvYjouMixwcmVmZXJPZmZiZWF0Oi43LGF2b2lkS2lja1Byb2I6Ljd9LGQ9S2UoYy5waHJhc2VMZW4pLGc9bmV3IEFycmF5KGQpLmZpbGwobnVsbCk7Zm9yKGxldCBiPTA7YjxkO2IrPTE2KXtjb25zdCBoPUllKGMucGVyQmFyTWluLGMucGVyQmFyTWF4KSxmPVsyLDYsMTAsMTRdLHk9WzAsMiw0LDYsOCwxMCwxMiwxNF0sVj0oaSgwLDEpPGMucHJlZmVyT2ZmYmVhdD9mLnNsaWNlKCk6eS5zbGljZSgpKS5tYXAoJD0+YiskKTtTdChWKTtsZXQgUT0wO2ZvcihsZXQgJD0wOyQ8Vi5sZW5ndGgmJlE8aDskKyspe2NvbnN0IHE9VlskXSxrPXElMTY7aWYoayU0PT09MCYmaSgwLDEpPGMuYXZvaWRLaWNrUHJvYnx8IXUocSkpY29udGludWU7Y29uc3Qgej1rJTQ9PT0yLEQ9aSgwLDEpPGMuc3VzdGFpblByb2I/MTowLFU9ej9pKC45LC45OCk6aSguODQsLjkyKSxSPXo/ITA6aSgwLDEpPC4yNT8id2VhayI6ITE7Z1txXT17YWNjZW50OlIsc3VzdGFpblN0ZXBzOkQsdmVsb2NpdHk6VX0sUSsrfX1mb3IobGV0IGI9MDtiPGU7YisrKXtjb25zdCBoPWdbYiVkXTtoJiYoU1tiXSYmaSgwLDEpPGMuYXZvaWRLaWNrUHJvYnx8KE1bYl09ey4uLmh9KSl9fWlmKHAuaGFzKCJmbUJsaXAyIikpe2NvbnN0IGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLE51bWJlcihhLmZtQmxpcDIuYmFySGl0UHJvYil8fC41KSk7Zm9yKGxldCBkPTA7ZDxlO2QrPTE2KWlmKGkoMCwxKTxjKXtjb25zdCBnPVsyLDYsMTAsMTRdLHU9WzAsNCw4LDEyXSxoPU4oKTwuOD9nOnUsZj1LZShoKSx5PWYlND09PTIsXz1mJTI9PT0wLEg9Zj09PTA/ITA6ISF5LFY9aSgwLDEpPGEuZm1CbGlwMi5zdXN0YWluUHJvYj8xOjAsUT15P2koLjg4LC45OCk6Xz9pKC43OCwuOTIpOmkoLjcsLjg1KTtHW2QrZl09e2FjY2VudDpILHN1c3RhaW5TdGVwczpWLHZlbG9jaXR5OlF9fX1pZihwLmhhcygiZm1CbGlwMSIpKXtjb25zdCBjPU1hdGgubWF4KDAsTWF0aC5taW4oMSxOdW1iZXIoYS5mbUJsaXAxLmJhckhpdFByb2IpfHwuNikpO2ZvcihsZXQgZD0wO2Q8ZTtkKz0xNilpZihpKDAsMSk8Yyl7Y29uc3QgZz1bMiw2LDEwLDE0XSx1PVswLDQsOCwxMl0sYj1OKCk8Ljg1LGg9S2UoYj9nOnUpLGY9aCU0PT09Mix5PWY/Ljk1Oi45O1RbZCtoXT17YWNjZW50OiEhZixzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTp5fX19aWYocC5oYXMoIndvb2RCbG9jayIpKXtjb25zdCBjPU1hdGgubWF4KDAsTWF0aC5taW4oMSxOdW1iZXIoYS53b29kQmxvY2suYmFySGl0UHJvYil8fC4zNSkpO2ZvcihsZXQgZD0wO2Q8ZTtkKz0xNilpZihpKDAsMSk8Yyl7Y29uc3QgZz1bMiw2LDEwLDE0XSx1PU4oKTwuOD9nOlswXSxiPUtlKHUpLGg9YiU0PT09MixmPWg/aSguODUsLjk1KTppKC44LC45KSx5PWgmJmkoMCwxKTwuNTtFW2QrYl09e2FjY2VudDohIXksc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6Zn19fWlmKHAuaGFzKCJrYXJwbHVzIikpe2NvbnN0IGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLE51bWJlcihhLmthcnBsdXMuYmFySGl0UHJvYil8fC4zNSkpO2ZvcihsZXQgZD0wO2Q8ZTtkKz0xNilpZihpKDAsMSk8Yyl7Y29uc3QgZz1bMywxMV0sdT1bNywxNV0sYj1OKCk8Ljg/Zzp1LGg9S2UoYiksZj1OKCk8LjQ1PyEwOk4oKTwuMjU/IndlYWsiOiExLHk9aSguODIsLjk4KTtMW2QraF09e2FjY2VudDpmLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5Onl9fX1pZihwLmhhcygidGVjaG5vU3RhYiIpKXtsZXQgZz1mdW5jdGlvbihiKXtjb25zdCBoPWIlMTYsZj1oJTQ9PT0yLHk9aD09PTAsXz15PyEwOiEhZixIPXk/MTpmP2koLjkyLC45OCk6aSguODgsLjk0KTtkW2JdPXthY2NlbnQ6XyxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTpIfX0sdT1mdW5jdGlvbihiLGgpe3JldHVybiBiLmZpbHRlcihmPT5NYXRoLmFicyhmLWgpPj00KX07Y29uc3QgYz1LZShhLnRlY2hub1N0YWIucGhyYXNlTGVuKSxkPW5ldyBBcnJheShjKS5maWxsKG51bGwpO2ZvcihsZXQgYj0wO2I8YztiKz0xNil7Y29uc3QgaD1JZSgwLDIpO2lmKGg9PT0wKWNvbnRpbnVlO2NvbnN0IGY9WzAsNCw4LDEyXSx5PVsyLDYsMTAsMTRdLF89WzAsMiw0LDYsOCwxMCwxMiwxNF07aWYoaD09PTEpe2NvbnN0IEg9S2UoXyk7ZyhiK0gpfWVsc2V7Y29uc3QgSD1OKCk8LjU/Zi5zbGljZSgpOnkuc2xpY2UoKSxWPUtlKEgpLFE9dShILmZpbHRlcigkPT4kIT09ViksVik7aWYoUS5sZW5ndGg+MCl7Y29uc3QgJD1LZShRKTtnKGIrViksZyhiKyQpfWVsc2UgZyhiK1YpfX1mb3IobGV0IGI9MDtiPGU7YisrKXtjb25zdCBoPWRbYiVjXTtoJiYoeFtiXT17Li4uaH0pfX1pZihwLmhhcygiY2xpY2tzIikpe2NvbnN0IGM9S2UoYS5jbGlja3MucGhyYXNlTGVuKSxkPW5ldyBBcnJheShjKS5maWxsKG51bGwpLGc9YS5jbGlja3MubWF4UGVyMTY7Zm9yKGxldCB1PTA7dTxjO3UrPTE2KXtjb25zdCBiPU1hdGgubWluKGMsdSsxNiksaD1JZSgwLGcpLGY9W107Zm9yKGxldCBfPXU7XzxiO18rKylmLnB1c2goXyk7U3QoZik7bGV0IHk9MDtmb3IobGV0IF89MDtfPGYubGVuZ3RoJiZ5PGg7XysrKXtjb25zdCBIPWZbX10sVj1IJTE2O2lmKFY9PT0wJiZpKDAsMSk8LjUpY29udGludWU7Y29uc3QgUT1WPT09OD8hMDppKDAsMSk8LjE1PyJ3ZWFrIjohMSwkPWkoLjU1LC43OCk7ZFtIXT17YWNjZW50OlEsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6JH0seSsrfX1mb3IobGV0IHU9MDt1PGU7dSsrKXtjb25zdCBiPWRbdSVjXTtiJiYoT1t1XT17Li4uYn0pfX1pZihwLmhhcygiZmlsdGVyUGluZyIpKXtmb3IobGV0IGQ9MDtkPGU7ZCs9MTYpaWYoaSgwLDEpPC41NSl7Y29uc3QgZz1LZShbNCwxMl0pLHU9aSguODgsLjk4KTt3W2QrZ109e2FjY2VudDohMCxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTp1fX19dHJ5e2NvbnN0IGM9YCR7U3RyaW5nKG4pfXwke2V8MH1gLGQ9QXMuZ2V0KGMpO2lmKGQmJnR5cGVvZiBkPT0ib2JqZWN0Iil7Y29uc3QgZz1bImtpY2siLCJmbUJsaXAxIiwiZm1CbGlwMiIsIndvb2RCbG9jayIsImthcnBsdXMiLCJmaWx0ZXJQaW5nIiwic2lnbmFsIl07Zm9yKGNvbnN0IHUgb2YgZyl7aWYoKHU9PT0iZm1CbGlwMSJ8fHU9PT0iZm1CbGlwMiJ8fHU9PT0id29vZEJsb2NrInx8dT09PSJrYXJwbHVzInx8dT09PSJmaWx0ZXJQaW5nIikmJiFwLmhhcyh1KSljb250aW51ZTtjb25zdCBiPWRbdV07aWYoQXJyYXkuaXNBcnJheShiKSYmYi5sZW5ndGg9PT1lJiZOKCk8LjUpe2NvbnN0IGg9dT09PSJraWNrIj9TOnU9PT0iZm1CbGlwMSI/VDp1PT09ImZtQmxpcDIiP0c6dT09PSJ3b29kQmxvY2siP0U6dT09PSJrYXJwbHVzIj9MOnU9PT0iZmlsdGVyUGluZyI/dzp1PT09InNpZ25hbCI/bzpudWxsO2lmKGgpZm9yKGxldCBmPTA7ZjxlO2YrKyloW2ZdPWJbZl0/ey4uLmJbZl19Om51bGx9fX19Y2F0Y2h7fWNvbnN0IEM9e2tpY2s6UyxoaWhhdDpQLGJhc3M6TSxmbUJsaXAxOlQsZm1CbGlwMjpHLHdvb2RCbG9jazpFLGthcnBsdXM6TCx0ZWNobm9TdGFiOngsY2xpY2tzOk8sZmlsdGVyUGluZzp3LHNpZ25hbDpvfTt0cnl7Y29uc3QgYz1gJHtTdHJpbmcobil9fCR7ZXwwfWA7QXMuc2V0KGMsemMoQykpfWNhdGNoe31yZXR1cm57Li4uQ319Y29uc3QgenM9e0E6e2Jhc3NEb3duYmVhdFByb2I6LjUsaGloYXQ6e3BocmFzZUxlbnM6WzMyLDQ4LDY0LDgwLDk2XSxvZmZPcGVuUHJvYjouMyx3ZWFrUHJvYjouMX0sd29vZEJsb2NrOntwZXJCYXJNYXg6MSxvZmZBY2NlbnRQcm9iOi4zfSxmbUJsaXAxOntwZXJCYXJNYXg6MX0sZm1CbGlwMjp7cGVyQmFyTWF4OjEsc3VzdGFpblByb2I6LjI1fSx0ZWNobm9TdGFiOntwZXJpb2RNaW46MzIscGVyaW9kTWF4Ojk2LGZpcmVQcm9iOi4yNX0sY2xpY2tzOntwZXJCYXJNYXg6MSx3ZWFrUHJvYjouMX0sZmlsdGVyUGluZzp7cGVyaW9kTWluOjMyLHBlcmlvZE1heDo5NixmaXJlUHJvYjouMzUsc3VzdGFpblByb2I6LjYsd2Vha1Byb2I6LjEyfX0sQjp7YmFzc0Rvd25iZWF0UHJvYjouNCxoaWhhdDp7cGhyYXNlTGVuczpbNDgsNjQsODAsOTZdLG9mZk9wZW5Qcm9iOi4yMix3ZWFrUHJvYjouMX0sd29vZEJsb2NrOntwZXJCYXJNYXg6MSxvZmZBY2NlbnRQcm9iOi4yNX0sZm1CbGlwMTp7cGVyQmFyTWF4OjF9LGZtQmxpcDI6e3BlckJhck1heDoxLHN1c3RhaW5Qcm9iOi4yMn0sdGVjaG5vU3RhYjp7cGVyaW9kTWluOjQwLHBlcmlvZE1heDo5NixmaXJlUHJvYjouMn0sY2xpY2tzOntwZXJCYXJNYXg6MSx3ZWFrUHJvYjouMDh9LGZpbHRlclBpbmc6e3BlcmlvZE1pbjo0MCxwZXJpb2RNYXg6OTYsZmlyZVByb2I6LjMsc3VzdGFpblByb2I6LjUsd2Vha1Byb2I6LjF9fX07ZnVuY3Rpb24gSGMoe2xlbjplLHNpZGU6bj0iQSIscjp0LGJpYXM6YT0idmVyeWxvb3NlIn0pe2NvbnN0IHM9enNbbl18fHpzLkE7ZnVuY3Rpb24gbShoKXtzd2l0Y2goU3RyaW5nKGgpKXtjYXNlInZlcnlsb29zZSI6cmV0dXJuIC4zO2Nhc2UibG9vc2UiOnJldHVybiAuNjtjYXNlImRlbnNlIjpyZXR1cm4gMS41O2RlZmF1bHQ6cmV0dXJuIDF9fVN0cmluZyhuKS50b1VwcGVyQ2FzZSgpO2NvbnN0IHA9YT09bnVsbHx8YT09PSJyYW5kb20ifHxhPT09ImF1dG8iP0tlKFsidmVyeWxvb3NlIiwibG9vc2UiLCJtaWQiLCJkZW5zZSJdKTphLFM9bShwKSxQPWg9Pk1hdGgubWF4KDAsTWF0aC5taW4oMSxOdW1iZXIoaCl8fDApKSxNPShoLGY9MCx5PTFlOSk9Pk1hdGgubWF4KGYsTWF0aC5taW4oeSxNYXRoLnJvdW5kKE51bWJlcihoKXx8MCkpKSxUPShoLGY9MSx5PTFlOSk9Pk1hdGgubWF4KGYsTWF0aC5taW4oeSxNYXRoLnJvdW5kKE51bWJlcihoKXx8MSkpKTtmdW5jdGlvbiBHKGgpe2NvbnN0IGY9Uz4wPzEvUzoxLHk9KHosRCk9Pntjb25zdCBVPVQoeipmLDQpLFI9VChEKmYsVSk7cmV0dXJuW1UsTWF0aC5tYXgoVSxSKV19LF89ej0+UCh6KlMpLEg9ej0+TSh6KlMsMCksUT1NYXRoLm1heCgwLE1hdGgubWluKDYsSCgyKSkpLFskLHFdPXkoaC50ZWNobm9TdGFiLnBlcmlvZE1pbixoLnRlY2hub1N0YWIucGVyaW9kTWF4KSxbayxBXT15KGguZmlsdGVyUGluZy5wZXJpb2RNaW4saC5maWx0ZXJQaW5nLnBlcmlvZE1heCk7cmV0dXJue2Jhc3NEb3duYmVhdFByb2I6XyhoLmJhc3NEb3duYmVhdFByb2IpLGhpaGF0OntwaHJhc2VMZW5zOmguaGloYXQucGhyYXNlTGVucy5zbGljZSgpLG9mZk9wZW5Qcm9iOl8oaC5oaWhhdC5vZmZPcGVuUHJvYiksd2Vha1Byb2I6XyhoLmhpaGF0LndlYWtQcm9iKSxtYXhQZXJCYXI6UX0sd29vZEJsb2NrOntwZXJCYXJNYXg6TWF0aC5tYXgoMCxNYXRoLm1pbig2LEgoaC53b29kQmxvY2sucGVyQmFyTWF4KSkpLG9mZkFjY2VudFByb2I6XyhoLndvb2RCbG9jay5vZmZBY2NlbnRQcm9iKX0sZm1CbGlwMTp7cGVyQmFyTWF4Ok1hdGgubWF4KDAsTWF0aC5taW4oNixIKGguZm1CbGlwMS5wZXJCYXJNYXgpKSl9LGZtQmxpcDI6e3BlckJhck1heDpNYXRoLm1heCgwLE1hdGgubWluKDYsSChoLmZtQmxpcDIucGVyQmFyTWF4KSkpLHN1c3RhaW5Qcm9iOl8oaC5mbUJsaXAyLnN1c3RhaW5Qcm9iKX0sdGVjaG5vU3RhYjp7cGVyaW9kTWluOiQscGVyaW9kTWF4OnEsZmlyZVByb2I6XyhoLnRlY2hub1N0YWIuZmlyZVByb2IpfSxjbGlja3M6e3BlckJhck1heDpNYXRoLm1heCgwLE1hdGgubWluKDYsSChoLmNsaWNrcy5wZXJCYXJNYXgpKSksd2Vha1Byb2I6XyhoLmNsaWNrcy53ZWFrUHJvYil9LGZpbHRlclBpbmc6e3BlcmlvZE1pbjprLHBlcmlvZE1heDpBLGZpcmVQcm9iOl8oaC5maWx0ZXJQaW5nLmZpcmVQcm9iKSxzdXN0YWluUHJvYjpfKGguZmlsdGVyUGluZy5zdXN0YWluUHJvYiksd2Vha1Byb2I6XyhoLmZpbHRlclBpbmcud2Vha1Byb2IpfX19Y29uc3QgRT1HKHMpLEw9RmUoZSkseD1GZShlKSxPPUZlKGUpLHc9RmUoZSksbz1GZShlKSxDPUZlKGUpLGM9RmUoZSksZD1GZShlKSxnPUZlKGUpLHU9RmUoZSk7aWYoU3RyaW5nKHApIT09InZlcnlsb29zZSIpe2NvbnN0IGg9SWUocy50ZWNobm9TdGFiLnBlcmlvZE1pbixzLnRlY2hub1N0YWIucGVyaW9kTWF4KTtmb3IobGV0IGY9MDtmPGU7Zis9aClmJTE2PT09MCYmaSgwLDEpPHMuYmFzc0Rvd25iZWF0UHJvYiYmKE9bZl09e2FjY2VudDohMCxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTouOX0pfXtjb25zdCBoPUtlKHMuaGloYXQucGhyYXNlTGVucyksZj1uZXcgQXJyYXkoaCkuZmlsbChudWxsKTtmb3IobGV0IHk9MDt5PGg7eSs9MTYpe2NvbnN0IF89TnVtYmVyLmlzRmluaXRlKEUuaGloYXQubWF4UGVyQmFyKT9FLmhpaGF0Lm1heFBlckJhcjoyLEg9SWUoMCxNYXRoLm1heCgwLF8pKSxWPVtdO2ZvcihsZXQgJD15OyQ8TWF0aC5taW4oaCx5KzE2KTskKyspVi5wdXNoKCQpO1N0KFYpO2xldCBRPTA7Zm9yKGxldCAkPTA7JDxWLmxlbmd0aCYmUTxIOyQrKyl7Y29uc3QgcT1WWyRdLEE9cSUxNiU0PT09Mix6PUEmJmkoMCwxKTxFLmhpaGF0Lm9mZk9wZW5Qcm9iPzI6MCxEPUE/aSguODUsLjk4KTppKC43OCwuOTIpO2ZbcV09e2FjY2VudDpBPyEwOmkoMCwxKTxFLmhpaGF0LndlYWtQcm9iPyJ3ZWFrIjohMSxzdXN0YWluU3RlcHM6eix2ZWxvY2l0eTpEfSxRKyt9fWZvcihsZXQgeT0wO3k8ZTt5Kyspe2NvbnN0IF89Zlt5JWhdO18mJih4W3ldPXsuLi5ffSl9fWZvcihsZXQgaD0wO2g8ZTtoKz0xNil7Y29uc3QgZj1JZSgwLEUud29vZEJsb2NrLnBlckJhck1heCk7Zm9yKGxldCB5PTA7eTxmO3krKyl7Y29uc3QgXz1oK0llKDAsMTUpLEg9XyUxNiU0PT09MixWPUg/aSguODUsLjk1KTppKC44LC45KSxRPUgmJmkoMCwxKTxFLndvb2RCbG9jay5vZmZBY2NlbnRQcm9iO0NbX109e2FjY2VudDohIVEsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6Vn19fWZvcihsZXQgaD0wO2g8ZTtoKz0xNil7Y29uc3QgZj1JZSgwLEUuZm1CbGlwMS5wZXJCYXJNYXgpO2ZvcihsZXQgeT0wO3k8Zjt5Kyspe2NvbnN0IF89aCtJZSgwLDE1KSxIPV8lMTYlND09PTIsVj1IPy45MjouODU7d1tfXT17YWNjZW50OiEhSCxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTpWfX19Zm9yKGxldCBoPTA7aDxlO2grPTE2KXtjb25zdCBmPUllKDAsRS5mbUJsaXAyLnBlckJhck1heCk7Zm9yKGxldCB5PTA7eTxmO3krKyl7Y29uc3QgXz1oK0llKDAsMTUpLEg9XyUxNiUyPT09MCxWPV8lMTYlND09PTIsUT1pKDAsMSk8RS5mbUJsaXAyLnN1c3RhaW5Qcm9iPzE6MCwkPVY/aSguODgsLjk2KTpIP2koLjc4LC45KTppKC43LC44NSk7b1tfXT17YWNjZW50OiEhVixzdXN0YWluU3RlcHM6USx2ZWxvY2l0eTokfX19e2NvbnN0IGg9SWUoRS50ZWNobm9TdGFiLnBlcmlvZE1pbixFLnRlY2hub1N0YWIucGVyaW9kTWF4KTtmb3IobGV0IGY9MDtmPGU7Zis9aClpZihpKDAsMSk8RS50ZWNobm9TdGFiLmZpcmVQcm9iKXtjb25zdCB5PWYlMTYsXz15PT09MHx8eT09PTg/ITA6aSgwLDEpPC4xNT8id2VhayI6ITEsSD1pKC44MiwuOTgpO2NbZl09e2FjY2VudDpfLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5Okh9fX1mb3IobGV0IGg9MDtoPGU7aCs9MTYpe2NvbnN0IGY9SWUoMCxFLmNsaWNrcy5wZXJCYXJNYXgpO2ZvcihsZXQgeT0wO3k8Zjt5Kyspe2NvbnN0IF89aCtJZSgwLDE1KSxIPV8lMTY9PT04PyEwOmkoMCwxKTxFLmNsaWNrcy53ZWFrUHJvYj8id2VhayI6ITEsVj1pKC41LC43KTtkW19dPXthY2NlbnQ6SCxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTpWfX19e2NvbnN0IGg9SWUoRS5maWx0ZXJQaW5nLnBlcmlvZE1pbixFLmZpbHRlclBpbmcucGVyaW9kTWF4KTtmb3IobGV0IGY9MDtmPGU7Zis9aClpZihpKDAsMSk8RS5maWx0ZXJQaW5nLmZpcmVQcm9iKXtjb25zdCB5PWYlMTYsXz15JTQ9PT0yLEg9eT09PTh8fF8/ITA6aSgwLDEpPEUuZmlsdGVyUGluZy53ZWFrUHJvYj8id2VhayI6ITEsVj1pKDAsMSk8RS5maWx0ZXJQaW5nLnN1c3RhaW5Qcm9iPzI6MCxRPV8/aSguODgsLjk4KTppKC44LC45NCk7Z1tmXT17YWNjZW50Okgsc3VzdGFpblN0ZXBzOlYsdmVsb2NpdHk6UX19fWNvbnN0IGI9e2tpY2s6TCxoaWhhdDp4LGJhc3M6TyxmbUJsaXAxOncsZm1CbGlwMjpvLHdvb2RCbG9jazpDLHRlY2hub1N0YWI6YyxjbGlja3M6ZCxmaWx0ZXJQaW5nOmcsc2lnbmFsOnV9O3RyeXtiLl9hbWJpZW50Qmlhcz1wfWNhdGNoe31yZXR1cm57Li4uYn19bGV0IGhuPXtzaWRlOm51bGwscGF0dGVybnM6bnVsbH07Y29uc3QgUnM9e0E6e2tpY2s6e2VuYWJsZVByb2I6LjYscGVyaW9kTWluOjgscGVyaW9kTWF4OjI0fSxoaWhhdDp7c3RlcHM6WzQsNiw4LDE2XSxvcGVuUHJvYjouMTUsb2ZmYmVhdEFjY2VudFByb2I6LjR9LHdvb2RCbG9jazp7ZGVuc2l0eUxvbmc6LjA2LGRlbnNpdHlTaG9ydDouMX0sa2FycGx1czp7cGVyaW9kTWluOjI0LHBlcmlvZE1heDo2NCxmaXJlUHJvYjouMzUsc3VzdGFpblByb2I6LjV9LHRlY2hub1N0YWI6e3BlcmlvZE1pbjoyNCxwZXJpb2RNYXg6NDgsZmlyZVByb2I6LjN9LGZpbHRlclBpbmc6e3BlcmlvZE1pbjoyNCxwZXJpb2RNYXg6NjQsZmlyZVByb2I6LjQ1LHN1c3RhaW5Qcm9iOi41fX0sQjp7a2ljazp7ZW5hYmxlUHJvYjouNTUscGVyaW9kTWluOjEyLHBlcmlvZE1heDoyOH0saGloYXQ6e3N0ZXBzOls2LDgsMTZdLG9wZW5Qcm9iOi4xMixvZmZiZWF0QWNjZW50UHJvYjouMzV9LHdvb2RCbG9jazp7ZGVuc2l0eUxvbmc6LjA1LGRlbnNpdHlTaG9ydDouMDh9LGthcnBsdXM6e3BlcmlvZE1pbjoyOCxwZXJpb2RNYXg6NzIsZmlyZVByb2I6LjMsc3VzdGFpblByb2I6LjR9LHRlY2hub1N0YWI6e3BlcmlvZE1pbjoyOCxwZXJpb2RNYXg6NTYsZmlyZVByb2I6LjI1fSxmaWx0ZXJQaW5nOntwZXJpb2RNaW46MjgscGVyaW9kTWF4OjcyLGZpcmVQcm9iOi40LHN1c3RhaW5Qcm9iOi40NX19fTtmdW5jdGlvbiBxYyh7bGVuOmUsc2lkZTpuPSJBIixyOnQscHJldjphPW51bGwsc3RheUluU2FtZU1vZGU6cz0hMSxjaGFuZ2VSYXRpbzptPS41fSl7Y29uc3QgcD1Sc1tuXXx8UnMuQSxTPUZlKGUpLFA9RmUoZSksTT1GZShlKSxUPUZlKGUpLEc9RmUoZSksRT1GZShlKSxMPUZlKGUpLHg9RmUoZSksTz1GZShlKSx3PVN0cmluZyhuKS50b1VwcGVyQ2FzZSgpO2lmKGkoMCwxKTxwLmtpY2suZW5hYmxlUHJvYil7Y29uc3QgaD1JZShwLmtpY2sucGVyaW9kTWluLE1hdGgubWF4KHAua2ljay5wZXJpb2RNaW4sTWF0aC5taW4ocC5raWNrLnBlcmlvZE1heCxlKSkpO2ZvcihsZXQgZj0wO2Y8ZTtmKz1oKXtjb25zdCB5PVRhKGYpO1NbZl09e2FjY2VudDohIXksc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6eT8xOi45NX19fWNvbnN0IEM9S2UocC5oaWhhdC5zdGVwcyk7Zm9yKGxldCBoPTA7aDxlO2grKylpZihoJUM9PT0wKXtjb25zdCBmPWglMTYseT15bihoKSxfPXkmJmkoMCwxKTxwLmhpaGF0Lm9wZW5Qcm9iPzE6MCxIPSEhKHkmJmkoMCwxKTxwLmhpaGF0Lm9mZmJlYXRBY2NlbnRQcm9iKSxRPXk/MTpmPT09M3x8Zj09PTd8fGY9PT0xMXx8Zj09PTE1Py44NTouOTU7UFtoXT17YWNjZW50Okgsc3VzdGFpblN0ZXBzOl8sdmVsb2NpdHk6UX19Y29uc3QgYz1LZShbNiw4LDksMTJdKSxkPUtlKFs2LDgsOSwxMl0pO2ZvcihsZXQgaD0wO2g8ZTtoKyspe2lmKGglYz09PTApe2NvbnN0IHk9aCUxNiU0PT09MixfPWglMTY9PT0wPyEwOmkoMCwxKTwuMTU/IndlYWsiOiEheSxIPXk/Ljk1Oi45O01baF09e2FjY2VudDpfLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5Okh9fWlmKGglZD09PTApe2NvbnN0IGY9aCUxNix5PWYlMj09PTAsXz1mJTQ9PT0yLEg9aCUxNj09PTA/ITA6aSgwLDEpPC4yPyJ3ZWFrIjohIV8sVj1pKDAsMSk8LjI1PzE6MCxRPV8/aSguODUsLjk4KTp5P2koLjc4LC45Mik6aSguNywuODUpO1RbaF09e2FjY2VudDpILHN1c3RhaW5TdGVwczpWLHZlbG9jaXR5OlF9fX1jb25zdCBnPWU+PTI0P3Aud29vZEJsb2NrLmRlbnNpdHlMb25nOnAud29vZEJsb2NrLmRlbnNpdHlTaG9ydDtmb3IobGV0IGg9MDtoPGU7aCsrKWglMTYlND09PTImJmkoMCwxKTxnJiYoR1toXT17YWNjZW50OmkoMCwxKTwuMjUsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6aSguODUsLjk1KX0pO3tjb25zdCBoPUllKHAua2FycGx1cy5wZXJpb2RNaW4scC5rYXJwbHVzLnBlcmlvZE1heCk7Zm9yKGxldCBmPTA7ZjxlO2YrPWgpaWYoaSgwLDEpPHAua2FycGx1cy5maXJlUHJvYil7Y29uc3QgXz1mJTE2JTQ9PT0yLEg9Xz9OKCk8LjU6TigpPC4yPyJ3ZWFrIjohMSxWPV8/aSguODgsLjk4KTppKC43OCwuOTIpLFE9aSgwLDEpPHAua2FycGx1cy5zdXN0YWluUHJvYj9JZSgxLDQpOjA7RVtmXT17YWNjZW50Okgsc3VzdGFpblN0ZXBzOlEsdmVsb2NpdHk6Vn19fXtjb25zdCBoPUllKHAudGVjaG5vU3RhYi5wZXJpb2RNaW4scC50ZWNobm9TdGFiLnBlcmlvZE1heCk7Zm9yKGxldCBmPTA7ZjxlO2YrPWgpaWYoaSgwLDEpPHAudGVjaG5vU3RhYi5maXJlUHJvYil7Y29uc3QgXz1mJTE2PT09OD8hMDppKDAsMSk8LjI/IndlYWsiOiExLEg9aSguOCwuOTgpO0xbZl09e2FjY2VudDpfLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5Okh9fX17Y29uc3QgaD1JZShwLmZpbHRlclBpbmcucGVyaW9kTWluLHAuZmlsdGVyUGluZy5wZXJpb2RNYXgpO2ZvcihsZXQgZj0wO2Y8ZTtmKz1oKWlmKGkoMCwxKTxwLmZpbHRlclBpbmcuZmlyZVByb2Ipe2NvbnN0IHk9ZiUxNixfPXklND09PTIsSD15PT09OHx8Xz8hMDppKDAsMSk8LjE1PyJ3ZWFrIjohMSxWPWkoMCwxKTxwLmZpbHRlclBpbmcuc3VzdGFpblByb2I/MjowLFE9Xz9pKC44OCwuOTgpOmkoLjgsLjk0KTt4W2ZdPXthY2NlbnQ6SCxzdXN0YWluU3RlcHM6Vix2ZWxvY2l0eTpRfX19Y29uc3QgdT17a2ljazpTLGhpaGF0OlAsZm1CbGlwMTpNLGZtQmxpcDI6VCx3b29kQmxvY2s6RyxrYXJwbHVzOkUsdGVjaG5vU3RhYjpMLGZpbHRlclBpbmc6eCxzaWduYWw6T307e2NvbnN0IGg9aG4mJmhuLnNpZGU9PT13JiZobi5wYXR0ZXJucyYmdHlwZW9mIGhuLnBhdHRlcm5zPT0ib2JqZWN0IixmPWEmJnR5cGVvZiBhPT0ib2JqZWN0Ij9hOmg/aG4ucGF0dGVybnM6bnVsbDtpZigoc3x8aCkmJmYpdHJ5e2NvbnN0IF89WyJraWNrIiwiaGloYXQiLCJmbUJsaXAxIiwiZm1CbGlwMiIsIndvb2RCbG9jayIsImthcnBsdXMiLCJ0ZWNobm9TdGFiIiwiZmlsdGVyUGluZyJdLEg9Xy5zbGljZSgpO1N0KEgpO2NvbnN0IFY9TWF0aC5tYXgoMCxNYXRoLm1pbigxLG0pKSxRPU1hdGgubWF4KDEsTWF0aC5yb3VuZChILmxlbmd0aCpWKSksJD1uZXcgU2V0KEguc2xpY2UoMCxRKSk7Zm9yKGNvbnN0IHEgb2YgXylpZighJC5oYXMocSkpe2NvbnN0IGs9ZltxXSxBPXVbcV07aWYoQXJyYXkuaXNBcnJheShrKSYmQXJyYXkuaXNBcnJheShBKSl7Y29uc3Qgej1rLmxlbmd0aDtpZih6PjApZm9yKGxldCBEPTA7RDxlO0QrKyl7Y29uc3QgVT1rW0Qlel07QVtEXT1VP3suLi5VfTpudWxsfX19fWNhdGNoe319Y29uc3QgYj17Li4udX07dHJ5e2huPXtzaWRlOncscGF0dGVybnM6Yn19Y2F0Y2h7fXJldHVybiBifWNvbnN0IEhzPXtBOm51bGwsQjpudWxsfTtmdW5jdGlvbiBOcyhlLG4pe2NvbnN0IHQ9RmUobik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoPT09MClyZXR1cm4gdDtmb3IobGV0IGE9MDthPG47YSsrKXtjb25zdCBzPWVbYSVlLmxlbmd0aF07cyYmKHRbYV09ey4uLnN9KX1yZXR1cm4gdH1mdW5jdGlvbiBHYyhlLG4pe2lmKCFlfHx0eXBlb2YgZSE9Im9iamVjdCIpcmV0dXJuIG51bGw7Y29uc3QgdD17fTtmb3IoY29uc3RbYSxzXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtpZighQXJyYXkuaXNBcnJheShzKSl7dFthXT1zO2NvbnRpbnVlfXRbYV09TnMocyxuKX1yZXR1cm4gdH1jb25zdCBxcz17QTp7a2ljazp7cGhyYXNlTGVuT3B0aW9uczpbMTYsMzJdLG1heFRyaWdnZXJzMTY6MyxtYXhUcmlnZ2VyczMyOjZ9LGhpaGF0OntwaHJhc2VMZW44dGhzOls4LDE2XSxvblByb2I6Ljcsb3Blbk9mZmJlYXRQcm9iOi4xOH0sd29vZEJsb2NrOntwZXJpb2RPcHRpb25zOls2LDksMTJdLGRlbnNpdHk6LjV9LGZtQmxpcDp7cGVyaW9kT3B0aW9uczpbOSwxMCwxMiwxNCwxNSwxOF0sc3VzdGFpblByb2IyOi4yNX0sdGVjaG5vU3RhYjp7cGVyaW9kTWluOjQ4LHBlcmlvZE1heDo5NixmaXJlUHJvYjouNDV9LGthcnBsdXM6e2VuYWJsZVByb2I6LjY1LHBocmFzZUxlbjpbNDgsNjQsOTYsMTI4XSxzZWNvbmRQcm9iOi4zNX0sY2xpY2tzOntwaHJhc2VMZW5PcHRpb25zOlsxNiwyNCwzMiw0OCw2NF0sbWF4UGVyMTY6M30sZmlsdGVyUGluZzp7QTpbOCwxNiwyNF0sQjpbMTYsMjQsMzJdLG90aGVyOlsxNiwyNCwzMiw0OCw1Niw2NCw4MF0sc3VzdGFpblByb2I6LjZ9fSxCOntraWNrOntwaHJhc2VMZW5PcHRpb25zOlszMl0sbWF4VHJpZ2dlcnMxNjozLG1heFRyaWdnZXJzMzI6N30saGloYXQ6e3BocmFzZUxlbjh0aHM6WzQsOF0sb25Qcm9iOi41NSxvcGVuT2ZmYmVhdFByb2I6LjEyfSx3b29kQmxvY2s6e3BlcmlvZE9wdGlvbnM6WzYsOSwxMl0sZGVuc2l0eTouNDJ9LGZtQmxpcDp7cGVyaW9kT3B0aW9uczpbOSwxMCwxMiwxNCwxNSwxOF0sc3VzdGFpblByb2IyOi4yMn0sdGVjaG5vU3RhYjp7cGVyaW9kTWluOjQ4LHBlcmlvZE1heDo5NixmaXJlUHJvYjouMzh9LGthcnBsdXM6e2VuYWJsZVByb2I6LjU4LHBocmFzZUxlbjpbNDgsNjQsOTZdLHNlY29uZFByb2I6LjMyfSxjbGlja3M6e3BocmFzZUxlbk9wdGlvbnM6WzE2LDI0LDMyLDQ4LDY0XSxtYXhQZXIxNjozfSxmaWx0ZXJQaW5nOntBOlsxNiwyNCwzMl0sQjpbMjQsMzJdLG90aGVyOlsxNiwyNCwzMiw0OCw1Niw2NCw4MF0sc3VzdGFpblByb2I6LjU1fX19O2Z1bmN0aW9uIFZjKHtsZW46ZSxzaWRlOm49IkEiLHI6dH0pe2NvbnN0IGE9cXNbbl18fHFzLkEscz1TdHJpbmcobikudG9VcHBlckNhc2UoKT09PSJCIj8iQiI6IkEiLG09RmUoZSkscD1GZShlKSxTPUZlKGUpLFA9RmUoZSksTT1GZShlKSxUPUZlKGUpLEc9RmUoZSksRT1GZShlKSxMPUZlKGUpLHg9RmUoZSksTz1GZShlKSx3PWZ1bmN0aW9uKCl7Y29uc3QgYz1OKCk7cmV0dXJuIGM8LjE/Im5vbmUiOmM8LjQ/ImZtMSI6YzwuNz8iZm0yIjoiYm90aCJ9KCk7e2NvbnN0IEM9S2UoYS5raWNrLnBocmFzZUxlbk9wdGlvbnMpLGM9bmV3IEFycmF5KEMpLmZpbGwobnVsbCksZD1bXTtmb3IobGV0IGI9MDtiPEM7YisrKWIlMj09PTAmJmQucHVzaChiKTtjb25zdCBnPUM9PT0xNj9hLmtpY2subWF4VHJpZ2dlcnMxNjphLmtpY2subWF4VHJpZ2dlcnMzMix1PUllKDEsZyk7U3QoZCk7Zm9yKGxldCBiPTA7Yjx1JiZiPGQubGVuZ3RoO2IrKyl7Y29uc3QgaD1kW2JdLGY9ISFUYShoKSx5PVRhKGgpPzE6Ljk1O2NbaF09e2FjY2VudDpmLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5Onl9fWZvcihsZXQgYj0wO2I8ZTtiKyspe2NvbnN0IGg9Y1tiJUNdO2gmJihtW2JdPXsuLi5ofSl9fWlmKFN0cmluZyhuKS50b1VwcGVyQ2FzZSgpPT09IkIiKXtmb3IobGV0IGM9MDtjPGU7Yys9Mil7Y29uc3QgZD15bihjKSx1PWQmJk4oKTxNYXRoLm1heCguMDUsYS5oaWhhdC5vcGVuT2ZmYmVhdFByb2IqLjYpPzI6MCxiPWQ/MTouOTUsaD0hIWQ7cFtjXT17YWNjZW50Omgsc3VzdGFpblN0ZXBzOnUsdmVsb2NpdHk6Yn19Zm9yKGxldCBjPTA7YzxlO2MrPTE2KWZvcihjb25zdCBkIG9mWzEsNSw5LDEzXSlpZihOKCk8LjA4KXtjb25zdCBnPWMrZDtnPGUmJiFwW2ddJiYocFtnXT17YWNjZW50OiJ3ZWFrIixzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTouODV9KX19ZWxzZXtjb25zdCBjPUtlKGEuaGloYXQucGhyYXNlTGVuOHRocyksZD1uZXcgQXJyYXkoYykuZmlsbCghMSk7bGV0IGc9ITEsdT0hMDtmb3IobGV0IGI9MDtiPGM7YisrKXtjb25zdCBoPU4oKTxhLmhpaGF0Lm9uUHJvYjtkW2JdPWgsZz1nfHxoLHU9dSYmaH1nfHwoZFtJZSgwLGMtMSldPSEwKSx1JiYoZFtJZSgwLGMtMSldPSExKTtmb3IobGV0IGI9MDtiPGU7Yis9Mil7Y29uc3QgaD1NYXRoLmZsb29yKGIvMiklYztpZighZFtoXSljb250aW51ZTtjb25zdCBmPXluKGIpLF89ZiYmTigpPGEuaGloYXQub3Blbk9mZmJlYXRQcm9iPzI6MCxIPWY/MTouOTUsVj0hIWY7cFtiXT17YWNjZW50OlYsc3VzdGFpblN0ZXBzOl8sdmVsb2NpdHk6SH19fXtjb25zdCBDPUtlKGEud29vZEJsb2NrLnBlcmlvZE9wdGlvbnMpLGM9YS53b29kQmxvY2suZGVuc2l0eTtmb3IobGV0IGQ9MDtkPGU7ZCsrKWlmKGQlQz09PTAmJk4oKTxjKXtjb25zdCBnPXluKGQpLHU9Zz9pKC44NSwuOTUpOmkoLjgsLjkpLGI9ZyYmTigpPC40O1RbZF09e2FjY2VudDohIWIsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6dX19fWlmKHc9PT0iZm0xInx8dz09PSJib3RoIil7Y29uc3QgQz1LZShhLmZtQmxpcC5wZXJpb2RPcHRpb25zKTtmb3IobGV0IGM9MDtjPGU7YysrKWlmKGMlQz09PTApe2NvbnN0IGQ9eW4oYyksZz1jJTE2PT09MD8hMDpkfHxOKCk8LjE1PyJ3ZWFrIjohMSx1PWQ/aSguNzQsLjg2KTppKC42OCwuOCk7U1tjXT17YWNjZW50Omcsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6dX19fWlmKHc9PT0iZm0yInx8dz09PSJib3RoIil7Y29uc3QgQz1LZShhLmZtQmxpcC5wZXJpb2RPcHRpb25zKTtmb3IobGV0IGM9MDtjPGU7YysrKWlmKGMlQz09PTApe2NvbnN0IGc9YyUxNiUyPT09MCx1PXluKGMpLGI9YyUxNj09PTB8fHU/ITA6TigpPC4yPyJ3ZWFrIjohMSxoPU4oKTxhLmZtQmxpcC5zdXN0YWluUHJvYjI/MTowLGY9dT9pKC44NSwuOTgpOmc/aSguNzgsLjkyKTppKC43LC44NSk7UFtjXT17YWNjZW50OmIsc3VzdGFpblN0ZXBzOmgsdmVsb2NpdHk6Zn19fXtjb25zdCBDPUllKGEudGVjaG5vU3RhYi5wZXJpb2RNaW4sYS50ZWNobm9TdGFiLnBlcmlvZE1heCk7Zm9yKGxldCBjPTA7YzxlO2MrPUMpaWYoTigpPGEudGVjaG5vU3RhYi5maXJlUHJvYil7Y29uc3QgZD1jJTE2LGc9ZD09PTB8fGQ9PT04PyEwOk4oKTwuMjU/IndlYWsiOiExLHU9aSguODIsLjk4KTtFW2NdPXthY2NlbnQ6ZyxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTp1fX19aWYoTigpPGEua2FycGx1cy5lbmFibGVQcm9iKXtsZXQgZz1mdW5jdGlvbih1LGIpe3JldHVybiB1LmZpbHRlcihoPT5NYXRoLmFicyhoLWIpPj00KX07Y29uc3QgYz1LZShhLmthcnBsdXMucGhyYXNlTGVuKSxkPW5ldyBBcnJheShjKS5maWxsKG51bGwpO2ZvcihsZXQgdT0wO3U8Yzt1Kz0xNilpZihOKCk8LjUpe2NvbnN0IGI9WzIsNiwxMCwxNF0saD1LZShiKTtpZihkW3UraF09e2FjY2VudDohMCxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTppKC44OCwuOTgpfSxOKCk8YS5rYXJwbHVzLnNlY29uZFByb2Ipe2NvbnN0IGY9ZyhiLmZpbHRlcih5PT55IT09aCksaCk7aWYoZi5sZW5ndGgpe2NvbnN0IHk9S2UoZik7ZFt1K3ldPXthY2NlbnQ6IndlYWsiLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5OmkoLjgyLC45Mil9fX19Zm9yKGxldCB1PTA7dTxlO3UrKyl7Y29uc3QgYj1kW3UlY107YiYmKEdbdV09ey4uLmJ9KX19e2NvbnN0IEM9S2UoYS5jbGlja3MucGhyYXNlTGVuT3B0aW9ucyksYz1uZXcgQXJyYXkoQykuZmlsbChudWxsKSxkPWEuY2xpY2tzLm1heFBlcjE2O2ZvcihsZXQgZz0wO2c8QztnKz0xNil7Y29uc3QgdT1NYXRoLm1pbihDLGcrMTYpLGI9SWUoMCxkKSxoPVtdO2ZvcihsZXQgeT1nO3k8dTt5KyspaC5wdXNoKHkpO1N0KGgpO2xldCBmPTA7Zm9yKGxldCB5PTA7eTxoLmxlbmd0aCYmZjxiO3krKyl7Y29uc3QgXz1oW3ldLEg9XyUxNjtpZihIPT09MCYmTigpPC41KWNvbnRpbnVlO2NvbnN0IFY9SD09PTg/ITA6TigpPC4xNT8id2VhayI6ITEsUT1pKC41NSwuNzgpO2NbX109e2FjY2VudDpWLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5OlF9LGYrK319Zm9yKGxldCBnPTA7ZzxlO2crKyl7Y29uc3QgdT1jW2clQ107dSYmKExbZ109ey4uLnV9KX19e2xldCBDPWZ1bmN0aW9uKGQpe2NvbnN0IGc9ZCUxNix1PWclND09PTIsYj1nPT09OHx8dT8hMDpOKCk8LjI/IndlYWsiOiExLGg9TigpPGEuZmlsdGVyUGluZy5zdXN0YWluUHJvYj8yOjAsZj11P2koLjg4LC45OCk6aSguOCwuOTQpO3hbZF09e2FjY2VudDpiLHN1c3RhaW5TdGVwczpoLHZlbG9jaXR5OmZ9fTtjb25zdCBjPUtlKGEuZmlsdGVyUGluZy5vdGhlcik7Zm9yKGxldCBkPTA7ZDxlO2QrPWMpQyhkKX1pZihTdHJpbmcobikudG9VcHBlckNhc2UoKT09PSJCIilmb3IobGV0IEM9MDtDPGU7Qys9MTYpe2NvbnN0IGM9WzIsNiwxMCwxNF0ubWFwKGY9PkMrZikuZmlsdGVyKGY9PmY8ZSksZD1bMCw0LDgsMTJdLm1hcChmPT5DK2YpLmZpbHRlcihmPT5mPGUpLGc9WzAsMiw0LDYsOCwxMCwxMiwxNF0ubWFwKGY9PkMrZikuZmlsdGVyKGY9PmY8ZSYmIWMuaW5jbHVkZXMoZikmJiFkLmluY2x1ZGVzKGYpKSx1PWMuY29uY2F0KGcpLmNvbmNhdChkKTtTdCh1KTtjb25zdCBiPUllKDEsMyksaD1bXTtmb3IobGV0IGY9MDtmPHUubGVuZ3RoJiZoLmxlbmd0aDxiO2YrKyl7Y29uc3QgeT11W2ZdO2lmKGguZXZlcnkoXz0+TWF0aC5hYnMoXy15KT49Mykpe2NvbnN0IEg9eSUxNiU0PT09MjtNW3ldPXthY2NlbnQ6SD8hMDpOKCk8LjE1PyJ3ZWFrIjohMSxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTpIPy45NTouOX0saC5wdXNoKHkpfX19ZWxzZSBmb3IobGV0IEM9MDtDPGU7QysrKW1bQ10mJk4oKTwuNiYmKE1bQ109e2FjY2VudDptW0NdLmFjY2VudCxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTouOTV9KTt0cnl7Y29uc3QgQz1Ic1tzXTtpZihDJiZ0eXBlb2YgQz09Im9iamVjdCIpe2NvbnN0IGQ9KGcsdSk9Pnt0cnl7aWYoIShOKCk8LjUpKXtjb25zdCBoPUNbZ107aWYoQXJyYXkuaXNBcnJheShoKSYmaC5sZW5ndGg+MClyZXR1cm4gTnMoaCxlKX19Y2F0Y2h7fXJldHVybiB1fTttLnNwbGljZSgwLG0ubGVuZ3RoLC4uLmQoImtpY2siLG0pKSxwLnNwbGljZSgwLHAubGVuZ3RoLC4uLmQoImhpaGF0IixwKSksTS5zcGxpY2UoMCxNLmxlbmd0aCwuLi5kKCJiYXNzIixNKSksUy5zcGxpY2UoMCxTLmxlbmd0aCwuLi5kKCJmbUJsaXAxIixTKSksUC5zcGxpY2UoMCxQLmxlbmd0aCwuLi5kKCJmbUJsaXAyIixQKSksVC5zcGxpY2UoMCxULmxlbmd0aCwuLi5kKCJ3b29kQmxvY2siLFQpKSxHLnNwbGljZSgwLEcubGVuZ3RoLC4uLmQoImthcnBsdXMiLEcpKSxFLnNwbGljZSgwLEUubGVuZ3RoLC4uLmQoInRlY2hub1N0YWIiLEUpKSxMLnNwbGljZSgwLEwubGVuZ3RoLC4uLmQoImNsaWNrcyIsTCkpLHguc3BsaWNlKDAseC5sZW5ndGgsLi4uZCgiZmlsdGVyUGluZyIseCkpfX1jYXRjaHt9Y29uc3Qgbz17a2ljazptLGhpaGF0OnAsYmFzczpNLGZtQmxpcDE6UyxmbUJsaXAyOlAsd29vZEJsb2NrOlQsa2FycGx1czpHLHRlY2hub1N0YWI6RSxjbGlja3M6TCxmaWx0ZXJQaW5nOngsc2lnbmFsOk99O3RyeXtIc1tzXT1HYyhvLGUpfWNhdGNoe31yZXR1cm57Li4ub319bGV0IGRuPXtzaWRlOm51bGwscGF0dGVybnM6bnVsbH07Y29uc3QgR3M9e0E6e2tpY2s6e3BocmFzZUxlbjpbMTYsMjQsMzIsNDhdLG1pblBlckJhcjoxLG1heFBlckJhcjozfSxoaWhhdDp7b2ZmYmVhdFByb2I6Ljk1LG90aGVyUHJvYjouNyxvcGVuUHJvYjouMTV9LGthcnBsdXM6e29mZmJlYXRQcm9iOi45NSxvdGhlclByb2I6Ljcsb3BlblByb2I6LjE1fSx3b29kQmxvY2s6e3BlcmlvZDpbNiwxMiwyNF0sZGVuc2l0eTouMTJ9LGNsaWNrczp7cGhyYXNlTGVuOls4LDE2LDI0LDMyXSxwZXJCYXJNaW46MSxwZXJCYXJNYXg6M30sZm1CbGlwOntwMTpbNiw4LDksMTJdLHAyOls2LDgsOSwxMl0sc3VzdGFpbjJQcm9iOi4yfSx0ZWNobm9TdGFiOntwZXJpb2RNaW46MjQscGVyaW9kTWF4OjQ4LGZpcmVQcm9iOi4zNX0sZmlsdGVyUGluZzp7Z2hvc3RQcm9iOi4zNSxmbGFtUHJvYjouMTV9fSxCOntraWNrOntwaHJhc2VMZW46WzI0LDMyLDQ4XSxtaW5QZXJCYXI6MSxtYXhQZXJCYXI6Mn0saGloYXQ6e29mZmJlYXRQcm9iOi45LG90aGVyUHJvYjouNixvcGVuUHJvYjouMTJ9LGthcnBsdXM6e29mZmJlYXRQcm9iOi45LG90aGVyUHJvYjouNixvcGVuUHJvYjouMTJ9LHdvb2RCbG9jazp7cGVyaW9kOls2LDEyLDI0XSxkZW5zaXR5Oi4xfSxjbGlja3M6e3BocmFzZUxlbjpbOCwxNiwyNCwzMl0scGVyQmFyTWluOjEscGVyQmFyTWF4OjJ9LGZtQmxpcDp7cDE6WzYsOCw5LDEyXSxwMjpbNiw4LDksMTJdLHN1c3RhaW4yUHJvYjouMTh9LHRlY2hub1N0YWI6e3BlcmlvZE1pbjoyOCxwZXJpb2RNYXg6NDgsZmlyZVByb2I6LjN9LGZpbHRlclBpbmc6e2dob3N0UHJvYjouMjgsZmxhbVByb2I6LjEyfX19O2Z1bmN0aW9uIEZjKHtsZW46ZSxzaWRlOm49IkEiLHI6dCxwcmV2OmE9bnVsbCxzdGF5SW5TYW1lTW9kZTpzPSExLGNoYW5nZVJhdGlvOm09LjV9KXtjb25zdCBwPUdzW25dfHxHcy5BLFM9RmUoZSksUD1GZShlKSxNPUZlKGUpLFQ9RmUoZSksRz1GZShlKSxFPUZlKGUpLEw9RmUoZSkseD1GZShlKSxPPUZlKGUpLHc9RmUoZSksbz1GZShlKTtTdHJpbmcobikudG9VcHBlckNhc2UoKTt7Y29uc3QgYj1LZShwLmtpY2sucGhyYXNlTGVuKSxoPW5ldyBBcnJheShiKS5maWxsKG51bGwpLGY9eT0+e2NvbnN0IF89WzAsNCw4LDEyXS5tYXAoQT0+eStBKS5maWx0ZXIoQT0+QTxiKSxIPVsyLDYsMTAsMTRdLm1hcChBPT55K0EpLmZpbHRlcihBPT5BPGIpLFY9aSgwLDEpPC41O2xldCBRO2lmKFYpe2NvbnN0IHo9QXJyYXkuZnJvbSh7bGVuZ3RoOjE2fSwoRCxVKT0+eStVKS5maWx0ZXIoRD0+RDxiKS5maWx0ZXIoRD0+IUguaW5jbHVkZXMoRCkmJiFfLmluY2x1ZGVzKEQpKTtRPUguY29uY2F0KHopLmNvbmNhdChfLmZpbHRlcihEPT4hSC5pbmNsdWRlcyhEKSkpfWVsc2V7Y29uc3QgQT1bMCwyLDQsNiw4LDEwLDEyLDE0XS5tYXAoej0+eSt6KS5maWx0ZXIoej0+ejxiKTtRPUguY29uY2F0KEEuZmlsdGVyKHo9PiFILmluY2x1ZGVzKHopKSl9U3QoUSk7Y29uc3QgJD1JZShwLmtpY2subWluUGVyQmFyLHAua2ljay5tYXhQZXJCYXIpLHE9W107Zm9yKGxldCBBPTA7QTxRLmxlbmd0aCYmcS5sZW5ndGg8JDtBKyspe2NvbnN0IHo9UVtBXTtxLmV2ZXJ5KEQ9Pk1hdGguYWJzKEQteik+PTMpJiYoaFt6XT0hMCxxLnB1c2goeikpfWlmKF8uZXZlcnkoQT0+aFtBXSkpe2NvbnN0IEE9X1tNYXRoLmZsb29yKEllKDAsTWF0aC5tYXgoMCxfLmxlbmd0aC0xKSkpXTtoW0FdPW51bGx9fTtmb3IobGV0IHk9MDt5PGI7eSs9MTYpZih5KTtmb3IobGV0IHk9MDt5PGU7eSsrKWlmKGhbeSViXSl7Y29uc3QgXz15JTE2LEg9Xz09PTA7U1t5XT17YWNjZW50Okg/ITA6Xz09PTgsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6Ljk1fX19Zm9yKGxldCBiPTA7YjxlO2IrKyl7Y29uc3QgaD1iJTE2LGY9aCU0PT09Mix5PWg9PT0zfHxoPT09N3x8aD09PTExfHxoPT09MTU7aWYoaSgwLDEpPChmP3Aua2FycGx1cy5vZmZiZWF0UHJvYjpwLmthcnBsdXMub3RoZXJQcm9iKSl7Y29uc3QgSD1mJiZpKDAsMSk8cC5rYXJwbHVzLm9wZW5Qcm9iPzI6MCxWPWY/MTp5Py44NTouOTU7TFtiXT17YWNjZW50OmY/ITA6eT8id2VhayI6ITEsc3VzdGFpblN0ZXBzOkgsdmVsb2NpdHk6Vn19fWlmKFN0cmluZyhuKS50b1VwcGVyQ2FzZSgpPT09IkIiKWZvcihsZXQgYj0wO2I8ZTtiKz0xNilpZihpKDAsMSk8LjU1KXtjb25zdCBmPVswLDIsNCw2LDgsMTAsMTIsMTRdLm1hcCgkPT5iKyQpLmZpbHRlcigkPT4kPGUpLHk9WzIsNiwxMCwxNF0ubWFwKCQ9PmIrJCkuZmlsdGVyKCQ9PiQ8ZSksXz1mLmZpbHRlcigkPT4heS5pbmNsdWRlcygkKSksSD15LmNvbmNhdChfKTtTdChIKTtjb25zdCBWPUllKDEsMyksUT1bXTtmb3IobGV0ICQ9MDskPEgubGVuZ3RoJiZRLmxlbmd0aDxWOyQrKyl7Y29uc3QgcT1IWyRdO2lmKFEuZXZlcnkoaz0+TWF0aC5hYnMoay1xKT49Mykpe2NvbnN0IEE9cSUxNiU0PT09Mix6PWkoMCwxKTwuMjU/MTowLEQ9QT9pKC45MiwuOTgpOmkoLjg0LC45Mik7TVtxXT17YWNjZW50OkE/ITA6aSgwLDEpPC4xOD8id2VhayI6ITEsc3VzdGFpblN0ZXBzOnosdmVsb2NpdHk6RH0sUS5wdXNoKHEpfX19ZWxzZXtjb25zdCBmPUFycmF5LmZyb20oe2xlbmd0aDoxNn0sKCQscSk9PmIrcSkuZmlsdGVyKCQ9PiQ8ZSkseT1bMSwzLDUsNyw5LDExLDEzLDE1XSxfPWYuZmlsdGVyKCQ9PiF5LmluY2x1ZGVzKCQtYikpLEg9eS5jb25jYXQoXyk7U3QoSCk7Y29uc3QgVj1JZSgyLDQpLFE9W107Zm9yKGxldCAkPTA7JDxILmxlbmd0aCYmUS5sZW5ndGg8VjskKyspe2NvbnN0IHE9SFskXTtpZihRLmV2ZXJ5KGs9Pk1hdGguYWJzKGstcSk+PTIpKXtjb25zdCBBPXElMTYlND09PTIsej0wLEQ9QT9pKC45LC45Nik6aSguODIsLjkpO2lmKE1bcV09e2FjY2VudDpBPyEwOmkoMCwxKTwuMj8id2VhayI6ITEsc3VzdGFpblN0ZXBzOnosdmVsb2NpdHk6RH0sUS5wdXNoKHEpLGkoMCwxKTwuMjUpe2NvbnN0IFU9cSsxO1U8ZSYmVSUxNiE9PTAmJlEuZXZlcnkoUj0+TWF0aC5hYnMoUi1VKT49MikmJihNW1VdPXthY2NlbnQ6IndlYWsiLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5OmkoLjc4LC44OCl9LFEucHVzaChVKSl9fX19ZWxzZSBmb3IobGV0IGI9MDtiPGU7YisrKVNbYl0mJmkoMCwxKTwuNiYmKE1bYl09e2FjY2VudDpTW2JdLmFjY2VudCxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTouOTV9KTtpZihTdHJpbmcobikudG9VcHBlckNhc2UoKT09PSJCIil7Zm9yKGxldCBoPTA7aDxlO2grPTIpe2NvbnN0IHk9aCUxNiU0PT09MixIPXkmJmkoMCwxKTxNYXRoLm1heCguMDUscC5oaWhhdC5vcGVuUHJvYiouNik/MjowLFY9eT8xOi45NSxRPSEheTtsZXQgJD1udWxsO2NvbnN0IHE9eT8uMTouMTgsaz15Py4wNTouMTIsQT15Py4wNjouMSx6PWkoMCwxKTt6PHE/JD0iY2xpY2t5Ijp6PHEraz8kPSJ1bHRyYSI6ejxxK2srQSYmKCQ9Imxvb3NlIiksUFtoXT17YWNjZW50OlEsc3VzdGFpblN0ZXBzOkgsdmVsb2NpdHk6ViwuLi4kP3t2YXJpYW50OiR9Ont9fX1mb3IobGV0IGg9MDtoPGU7aCs9MTYpZm9yKGNvbnN0IGYgb2ZbMSw1LDksMTNdKWlmKGkoMCwxKTwuMDgpe2NvbnN0IHk9aCtmO2lmKHk8ZSYmIVBbeV0pe2NvbnN0IF89aSgwLDEpPC42PyJjbGlja3kiOm51bGw7UFt5XT17YWNjZW50OiJ3ZWFrIixzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTouODUsLi4uXz97dmFyaWFudDpffTp7fX19fX1lbHNlIGZvcihsZXQgaD0wO2g8ZTtoKz0xNil7Y29uc3QgZj1pKDAsMSk7bGV0IHk9MDtmPC4zP3k9MDpmPC41Mj95PTE6ZjwuNzI/eT0yOmY8Ljk/eT0zOnk9NDtjb25zdCBfPShILHthY2NlbnQ6VixzdXN0YWluU3RlcHM6USx2ZWxvY2l0eTokLHZhcmlhbnQ6cX0pPT57SD49ZXx8UFtIXXx8KFBbSF09e2FjY2VudDpWLHN1c3RhaW5TdGVwczpRLHZlbG9jaXR5OiQsLi4ucT97dmFyaWFudDpxfTp7fX0pfTtpZih5PT09MCl7Zm9yKGxldCBIPWg7SDxNYXRoLm1pbihlLGgrMTYpO0grKyl7Y29uc3QgVj1IJTE2LFE9ViU0PT09MiwkPVY9PT0zfHxWPT09N3x8Vj09PTExfHxWPT09MTU7aWYoaSgwLDEpPChRP3AuaGloYXQub2ZmYmVhdFByb2I6cC5oaWhhdC5vdGhlclByb2IpKXtjb25zdCBrPVEmJmkoMCwxKTxwLmhpaGF0Lm9wZW5Qcm9iPzI6MCxBPVE/MTokPy44NTouOTU7bGV0IHo9bnVsbDtjb25zdCBEPWkoMCwxKSxVPVE/LjEyOi4yNSxSPVE/LjA2Oi4xNCxJPVE/LjEyOi4wODtEPFU/ej0iY2xpY2t5IjpEPFUrUj96PSJ1bHRyYSI6RDxVK1IrSSYmKHo9Imxvb3NlIiksXyhILHthY2NlbnQ6UT8hMDokPyJ3ZWFrIjohMSxzdXN0YWluU3RlcHM6ayx2ZWxvY2l0eTpBLHZhcmlhbnQ6en0pfX1mb3IoY29uc3QgSCBvZlsxLDUsOSwxM10paSgwLDEpPC4xJiZfKGgrSCx7YWNjZW50OiJ3ZWFrIixzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTouODUsdmFyaWFudDppKDAsMSk8LjY/ImNsaWNreSI6bnVsbH0pfWVsc2UgaWYoeT09PTEpe2Zvcihjb25zdCBWIG9mWzIsNiwxMCwxNF0pe2NvbnN0IFE9aCtWO2lmKFE8ZSYmXyhRLHthY2NlbnQ6ITAsc3VzdGFpblN0ZXBzOmkoMCwxKTxwLmhpaGF0Lm9wZW5Qcm9iPzI6MCx2ZWxvY2l0eToxfSksaSgwLDEpPC40NSl7Y29uc3QgJD1WLTEscT1oKyQ7cT49aCYmcTxoKzE2JiZfKHEse2FjY2VudDoid2VhayIsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6Ljg2LHZhcmlhbnQ6aSgwLDEpPC43PyJjbGlja3kiOm51bGx9KX19Y29uc3QgSD1bMSwzLDUsNyw5LDExLDEzLDE1XTtTdChIKTtmb3IobGV0IFY9MDtWPDMmJlY8SC5sZW5ndGg7VisrKV8oaCtIW1ZdLHthY2NlbnQ6IndlYWsiLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5Oi44OCx2YXJpYW50OmkoMCwxKTwuNT8iY2xpY2t5IjpudWxsfSl9ZWxzZSBpZih5PT09Mil7Y29uc3QgSD1bWzYsN10sWzE0LDE1XV07Zm9yKGNvbnN0W1YsUV1vZiBIKXtjb25zdCAkPVY+PTE0LHE9JCYmaSgwLDEpPHAuaGloYXQub3BlblByb2IqLjgsaz0kPy45ODouOTY7XyhoK1Yse2FjY2VudDohMCxzdXN0YWluU3RlcHM6cT8xOjAsdmVsb2NpdHk6a30pLF8oaCtRLHthY2NlbnQ6IndlYWsiLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5Oi45LHZhcmlhbnQ6aSgwLDEpPC42PyJjbGlja3kiOm51bGx9KX1pKDAsMSk8LjYmJl8oaCszLHthY2NlbnQ6IndlYWsiLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5Oi44N30pfWVsc2UgaWYoeT09PTMpe2NvbnN0IEg9WzEsMiw0LDYsNyw5LDEwLDEyLDE0LDE1XTtTdChIKTtmb3IobGV0IFY9MDtWPDcmJlY8SC5sZW5ndGg7VisrKXtjb25zdCBRPUhbVl0sJD1RJTQ9PT0yLHE9UT09PTN8fFE9PT03fHxRPT09MTF8fFE9PT0xNSxrPSQmJmkoMCwxKTxwLmhpaGF0Lm9wZW5Qcm9iKi42PzE6MCxBPSQ/Ljk4OnE/Ljg0Oi45Mix6PSEkJiZpKDAsMSk8LjM1PyJjbGlja3kiOm51bGw7XyhoK1Ese2FjY2VudDokPyEwOnE/IndlYWsiOiExLHN1c3RhaW5TdGVwczprLHZlbG9jaXR5OkEsdmFyaWFudDp6fSl9fWVsc2UgaWYoeT09PTQpe2Zvcihjb25zdCBWIG9mWzIsNiwxMCwxNF0pe2NvbnN0IFE9Vj09PTE0JiZpKDAsMSk8cC5oaWhhdC5vcGVuUHJvYioxLjI7XyhoK1Yse2FjY2VudDohMCxzdXN0YWluU3RlcHM6UT8yOjAsdmVsb2NpdHk6MX0pfWNvbnN0IEg9WzEsNSw5LDEzLDMsNywxMSwxNV07U3QoSCk7Zm9yKGxldCBWPTA7VjwyJiZWPEgubGVuZ3RoO1YrKylfKGgrSFtWXSx7YWNjZW50OiJ3ZWFrIixzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTouODYsdmFyaWFudDppKDAsMSk8LjU/ImNsaWNreSI6bnVsbH0pfX17Y29uc3QgYj1LZShwLndvb2RCbG9jay5wZXJpb2QpLGg9cC53b29kQmxvY2suZGVuc2l0eTtmb3IobGV0IGY9MDtmPGU7ZisrKWlmKGYlYj09PTAmJmkoMCwxKTxoKXtjb25zdCBfPWYlMTYlND09PTIsSD1fP2koLjg1LC45NSk6aSguOCwuOSk7RVtmXT17YWNjZW50OiEhKF8mJmkoMCwxKTwuNSksc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6SH19fXtjb25zdCBiPUtlKHAuY2xpY2tzLnBocmFzZUxlbiksaD1uZXcgQXJyYXkoYikuZmlsbChudWxsKTtmb3IobGV0IGY9MDtmPGI7Zis9MTYpe2NvbnN0IHk9SWUocC5jbGlja3MucGVyQmFyTWluLHAuY2xpY2tzLnBlckJhck1heCksXz1bXTtmb3IobGV0IFY9ZjtWPE1hdGgubWluKGIsZisxNik7VisrKV8ucHVzaChWKTtTdChfKTtsZXQgSD0wO2ZvcihsZXQgVj0wO1Y8Xy5sZW5ndGgmJkg8eTtWKyspe2NvbnN0IFE9X1tWXSwkPVElMTY7JD09PTAmJmkoMCwxKTwuNXx8KGhbUV09e2FjY2VudDokPT09OD8hMDppKDAsMSk8LjI/IndlYWsiOiExLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5OmkoLjU1LC43OCl9LEgrKyl9fWZvcihsZXQgZj0wO2Y8ZTtmKyspe2NvbnN0IHk9aFtmJWJdO3kmJihPW2ZdPXsuLi55fSl9fXtjb25zdCBiPUtlKHAuZm1CbGlwLnAxKSxoPUtlKHAuZm1CbGlwLnAyKTtmb3IobGV0IGY9MDtmPGU7ZisrKXtpZihmJWI9PT0wKXtjb25zdCBfPWYlMTYlND09PTI7VFtmXT17YWNjZW50Ol8/ITA6aSgwLDEpPC4xPyJ3ZWFrIjohMSxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTpfPy45NTouOX19aWYoZiVoPT09MCl7Y29uc3QgeT1mJTE2LF89eSUyPT09MCxIPXklND09PTIsVj1pKDAsMSk8cC5mbUJsaXAuc3VzdGFpbjJQcm9iPzE6MCxRPUg/aSguODUsLjk4KTpfP2koLjc4LC45Mik6aSguNywuODUpO0dbZl09e2FjY2VudDpIPyEwOmkoMCwxKTwuMTU/IndlYWsiOiExLHN1c3RhaW5TdGVwczpWLHZlbG9jaXR5OlF9fX19e2NvbnN0IGI9SWUocC50ZWNobm9TdGFiLnBlcmlvZE1pbixwLnRlY2hub1N0YWIucGVyaW9kTWF4KTtmb3IobGV0IGg9MDtoPGU7aCs9YilpZihpKDAsMSk8cC50ZWNobm9TdGFiLmZpcmVQcm9iKXtjb25zdCBmPWglMTYseT1mPT09MHx8Zj09PTg/ITA6aSgwLDEpPC4yPyJ3ZWFrIjohMTt4W2hdPXthY2NlbnQ6eSxzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTppKC44MiwuOTgpfX19Zm9yKGxldCBiPTA7YjxlO2IrPTE2KXtjb25zdCBoPVs0LDEyXTtmb3IoY29uc3QgeSBvZiBoKXtjb25zdCBfPWIreTtpZihfPGUpe2NvbnN0IEg9aSguOTIsLjk5KTt3W19dPXthY2NlbnQ6ITAsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6SH19fWNvbnN0IGY9WzMsNSwxMSwxM107Zm9yKGNvbnN0IHkgb2YgZilpZihpKDAsMSk8cC5maWx0ZXJQaW5nLmdob3N0UHJvYil7Y29uc3QgXz1iK3k7aWYoXzxlJiYhd1tfXSl7Y29uc3QgSD1pKC42NSwuOCk7d1tfXT17YWNjZW50OiJ3ZWFrIixzdXN0YWluU3RlcHM6MCx2ZWxvY2l0eTpIfX19aWYoaSgwLDEpPHAuZmlsdGVyUGluZy5mbGFtUHJvYil7Y29uc3QgeT1bMTQsMTVdO2Zvcihjb25zdCBfIG9mIHkpe2NvbnN0IEg9YitfO2lmKEg8ZSYmIXdbSF0pe2NvbnN0IFY9aSguNzIsLjg1KTt3W0hdPXthY2NlbnQ6IndlYWsiLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5OlZ9fX19fWNvbnN0IEM9e2tpY2s6UyxoaWhhdDpQLGJhc3M6TSxmbUJsaXAxOlQsZm1CbGlwMjpHLHdvb2RCbG9jazpFLGthcnBsdXM6TCx0ZWNobm9TdGFiOngsY2xpY2tzOk8sZmlsdGVyUGluZzp3LHNpZ25hbDpvfSxjPWRuJiZkbi5zaWRlPT09U3RyaW5nKG4pLnRvVXBwZXJDYXNlKCkmJmRuLnBhdHRlcm5zJiZ0eXBlb2YgZG4ucGF0dGVybnM9PSJvYmplY3QiLGQ9YSYmdHlwZW9mIGE9PSJvYmplY3QiP2E6Yz9kbi5wYXR0ZXJuczpudWxsO2lmKChzfHxjKSYmZCl0cnl7Y29uc3QgYj1bImtpY2siLCJoaWhhdCIsImJhc3MiLCJmbUJsaXAxIiwiZm1CbGlwMiIsIndvb2RCbG9jayIsImthcnBsdXMiLCJ0ZWNobm9TdGFiIiwiY2xpY2tzIiwiZmlsdGVyUGluZyJdLGg9Yi5zbGljZSgpO1N0KGgpO2NvbnN0IGY9TWF0aC5tYXgoMSxNYXRoLnJvdW5kKGgubGVuZ3RoKk1hdGgubWF4KDAsTWF0aC5taW4oMSxtKSkpKSx5PW5ldyBTZXQoaC5zbGljZSgwLGYpKTtmb3IoY29uc3QgXyBvZiBiKWlmKCF5LmhhcyhfKSl7Y29uc3QgSD1kW19dLFY9Q1tfXTtpZihBcnJheS5pc0FycmF5KEgpJiZBcnJheS5pc0FycmF5KFYpKXtjb25zdCBRPUgubGVuZ3RoO2lmKFE+MClmb3IobGV0ICQ9MDskPGU7JCsrKXtjb25zdCBxPUhbJCVRXTtWWyRdPXE/ey4uLnF9Om51bGx9fX19Y2F0Y2h7fWlmKGkoMCwxKTwuMylmb3IobGV0IGI9MDtiPGU7YisrKUxbYl09bnVsbDtlbHNlIGZvcihsZXQgYj0wO2I8ZTtiKyspTFtiXSYmaSgwLDEpPC42JiYoTFtiXT1udWxsKTt7bGV0IGI9ZnVuY3Rpb24oKXtjb25zdCBoPWkoMCwxKTtyZXR1cm4gaDwuMj8ibm9uZSI6aDwuNTU/ImZtMSI6aDwuOT8iZm0yIjoiYm90aCJ9O2ZvcihsZXQgaD0wO2g8ZTtoKz0xNil7Y29uc3QgZj1iKCk7aWYoZj09PSJub25lIilmb3IobGV0IHk9aDt5PE1hdGgubWluKGUsaCsxNik7eSsrKVRbeV0mJihUW3ldPW51bGwpLEdbeV0mJihHW3ldPW51bGwpO2Vsc2UgaWYoZj09PSJmbTEiKWZvcihsZXQgeT1oO3k8TWF0aC5taW4oZSxoKzE2KTt5KyspR1t5XSYmKEdbeV09bnVsbCk7ZWxzZSBpZihmPT09ImZtMiIpZm9yKGxldCB5PWg7eTxNYXRoLm1pbihlLGgrMTYpO3krKylUW3ldJiYoVFt5XT1udWxsKX19e2NvbnN0IGI9TWF0aC5tYXgoMCxlLTE2KSxoPVtbImZpbHRlclBpbmciLHddLFsiaGloYXQiLFBdLFsiZm1CbGlwMiIsR10sWyJmbUJsaXAxIixUXSxbIndvb2RCbG9jayIsRV0sWyJjbGlja3MiLE9dLFsia2FycGx1cyIsTF0sWyJraWNrIixTXV0uZmlsdGVyKChbVixRXSk9PkFycmF5LmlzQXJyYXkoUSkpLGY9KCgpPT57dHJ5e2NvbnN0IFY9bmV3IFNldDtmb3IoY29uc3RbUSwkXW9mIE9iamVjdC5lbnRyaWVzKEMpKUFycmF5LmlzQXJyYXkoJCkmJiQuc29tZShCb29sZWFuKSYmVi5hZGQoUSk7cmV0dXJuIFZ9Y2F0Y2h7cmV0dXJuIG5ldyBTZXR9fSkoKSx5PWguZmlsdGVyKChbVl0pPT5mLmhhcyhWKSksXz15Lmxlbmd0aD4wP3k6aCxIPV9bTWF0aC5mbG9vcigodCYmdHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOk4oKSkqXy5sZW5ndGgpXXx8X1swXTtpZihIKXtjb25zdFtWLFFdPUgsJD1bMTIsMTQsMTVdO2Zvcihjb25zdCBxIG9mICQpe2NvbnN0IGs9YitxO2lmKGs+PWUpY29udGludWU7aWYoUVtrXSl7dHJ5e1Fba10udmVsb2NpdHk9TWF0aC5taW4oMSxNYXRoLm1heCguNSwoUVtrXS52ZWxvY2l0eXx8LjkpKy4wOCkpfWNhdGNoe31jb250aW51ZX1jb25zdCBBPS45MitpKDAsLjA2KTtpZiguNytpKC4wNSwuMTUpLFY9PT0iZmlsdGVyUGluZyIpUVtrXT17YWNjZW50OnE9PT0xMj8hMDoid2VhayIsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6cT09PTEyP0E6Ljc0K2koMCwuMSl9O2Vsc2UgaWYoVj09PSJoaWhhdCIpe2NvbnN0IHo9cT09PTE1JiZpKDAsMSk8LjQ/MTowO1Fba109e2FjY2VudDpxPT09MTI/ITA6IndlYWsiLHN1c3RhaW5TdGVwczp6LHZlbG9jaXR5OnE9PT0xMj8xOi45fX1lbHNlIGlmKFY9PT0iZm1CbGlwMSJ8fFY9PT0iZm1CbGlwMiIpe2NvbnN0IHo9Vj09PSJmbUJsaXAyIiYmaSgwLDEpPC41PzE6MDtRW2tdPXthY2NlbnQ6cT09PTEyPyEwOiJ3ZWFrIixzdXN0YWluU3RlcHM6eix2ZWxvY2l0eTpxPT09MTI/Ljk1Oi44OH19ZWxzZSBWPT09Indvb2RCbG9jayI/UVtrXT17YWNjZW50OnE9PT0xMj8hMDoid2VhayIsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6cT09PTEyPy45Oi44Mn06Vj09PSJjbGlja3MiP1Fba109e2FjY2VudDpxPT09MTI/ITA6IndlYWsiLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5OnE9PT0xMj8uODU6Ljc4fTpWPT09ImthcnBsdXMiP1Fba109e2FjY2VudDpxPT09MTI/ITA6IndlYWsiLHN1c3RhaW5TdGVwczowLHZlbG9jaXR5OnE9PT0xMj8xOi45Mn06Vj09PSJraWNrIiYmKFFba109e2FjY2VudDpxPT09MTIsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6Ljk1fSl9fX1jb25zdCB1PXtraWNrOlMsaGloYXQ6UCxiYXNzOk0sZm1CbGlwMTpULGZtQmxpcDI6Ryx3b29kQmxvY2s6RSxrYXJwbHVzOkwsdGVjaG5vU3RhYjp4LGNsaWNrczpPLGZpbHRlclBpbmc6dyxzaWduYWw6b307dHJ5e2RuPXtzaWRlOlN0cmluZyhuKS50b1VwcGVyQ2FzZSgpLHBhdHRlcm5zOnV9fWNhdGNoe31yZXR1cm4gdX1mdW5jdGlvbiBPYyh7bGVuOmUsY3JlYXRlRW1wdHlQYXR0ZXJuOm59KXtjb25zdCB0PU1hdGgubWF4KDgsTWF0aC5taW4oMzIsTnVtYmVyKGUpfHwxNikpLGE9bT0+dHlwZW9mIG49PSJmdW5jdGlvbiI/bihtKTpuZXcgQXJyYXkobSkuZmlsbChudWxsKTtyZXR1cm57a2ljazphKHQpLGhpaGF0OmEodCksYmFzczphKHQpLGZtQmxpcDE6YSh0KSxmbUJsaXAyOmEodCksd29vZEJsb2NrOmEodCksa2FycGx1czphKHQpLHRlY2hub1N0YWI6YSh0KSxjbGlja3M6YSh0KSxmaWx0ZXJQaW5nOmEodCksc2lnbmFsOmEodCl9fWZ1bmN0aW9uIERjKHttb2RlOmU9InJhbmRvbSIsbG9vcExlbmd0aDpuPW51bGwsbG9vcExlbmd0aEJvdW5kczp0PW51bGx9PXt9LGE9e30pe2NvbnN0IHM9YSYmYS5yYW5kJiZ0eXBlb2YgYS5yYW5kLnI9PSJmdW5jdGlvbiI/YS5yYW5kLnI6TixtPVN0cmluZyhhJiZhLnNpZGUpLnRvVXBwZXJDYXNlKCk9PT0iQiI/IkIiOiJBIjtsZXQgcD1udWxsO2Z1bmN0aW9uIFMoSyl7dHJ5e2NvbnN0IGFlPVJuLmZpbHRlcihtZT0+bWUhPT0icGF1c2UiKTtyZXR1cm4gYWVbTWF0aC5mbG9vcigodHlwZW9mIEs9PSJmdW5jdGlvbiI/SzpOKSgpKmFlLmxlbmd0aCldfHwic3RyYWlnaHQifWNhdGNoe3JldHVybiJzdHJhaWdodCJ9fWxldCBQPWU9PT0icmFuZG9tIj9TKHMpfHwic3RyYWlnaHQiOlJuLmluY2x1ZGVzKGUpP2U6InN0cmFpZ2h0IixNPW51bGw7Y29uc3QgVD0oKCk9Pntjb25zdCBmZT1tPT09IkIiP3tzdHJhaWdodDp7bWluOjY0LG1heDoxMjh9LGJyZWFrOnttaW46MzIsbWF4Ojk2fSxicmVha2JlYXQ6e21pbjozMixtYXg6OTZ9LGFtYmllbnQ6e21pbjozMixtYXg6OTZ9LGZsdXhHcmlkOnttaW46MzIsbWF4Ojk2fSxwYXVzZTp7bWluOjgsbWF4OjI0fX06e3N0cmFpZ2h0OnttaW46MTIwLG1heDoxNjB9LGJyZWFrOnttaW46MTAwLG1heDoxMjh9LGJyZWFrYmVhdDp7bWluOjEwMCxtYXg6MTI4fSxhbWJpZW50OnttaW46MTAwLG1heDoxMjh9LGZsdXhHcmlkOnttaW46MTAwLG1heDoxMjh9LHBhdXNlOnttaW46OCxtYXg6MzJ9fTtmdW5jdGlvbiBtZShvZSl7Y29uc3QgQj17Li4uZmV9LHY9e3N0cmFpZ2h0OnsuLi5CLnN0cmFpZ2h0fSxicmVhazp7Li4uQi5icmVha30sYnJlYWtiZWF0OnsuLi5CLmJyZWFrYmVhdH0sYW1iaWVudDp7Li4uQi5hbWJpZW50fSxmbHV4R3JpZDp7Li4uQi5mbHV4R3JpZH0scGF1c2U6ey4uLkIucGF1c2V9fTtpZihvZSYmdHlwZW9mIG9lPT0ib2JqZWN0Iilmb3IoY29uc3QgRiBvZlsic3RyYWlnaHQiLCJicmVhayIsImJyZWFrYmVhdCIsImFtYmllbnQiLCJmbHV4R3JpZCIsInBhdXNlIl0pe2NvbnN0IFc9b2VbRl07aWYoVyYmdHlwZW9mIFc9PSJvYmplY3QiKXtjb25zdCBZPU5hKFcubWluLEJbRl0ubWluKSxKPU5hKFcubWF4LEJbRl0ubWF4KTt2W0ZdPXttaW46TWF0aC5tYXgoOCxNYXRoLm1pbihZLEopKSxtYXg6TWF0aC5tYXgoTWF0aC5tYXgoOCxZKSxKKX19fXJldHVybiB2fWZ1bmN0aW9uIHBlKG9lLEIsdil7Y29uc3QgRj1vZVtCXXx8b2Uuc3RyYWlnaHQsVz1bXTtmb3IobGV0IEo9Ri5taW47Sjw9Ri5tYXg7Sis9OClXLnB1c2goSik7Y29uc3QgWT10eXBlb2Ygdj09ImZ1bmN0aW9uIj92KCk6TigpO3JldHVybiBXW01hdGguZmxvb3IoWSpXLmxlbmd0aCldfXJldHVybntERUZBVUxUX0JPVU5EUzpmZSxzYW5pdGl6ZUJvdW5kczptZSxwaWNrUmFuZG9tTG9vcExlbmd0aDpwZX19KSgpO2xldCBHPVQuc2FuaXRpemVCb3VuZHModCk7ZnVuY3Rpb24gRShLPVApe3JldHVybiBULnBpY2tSYW5kb21Mb29wTGVuZ3RoKEcsSyxzKX1sZXQgTD1OdW1iZXIobik7aWYoIU51bWJlci5pc0Zpbml0ZShMKXx8TDw9MClMPUUoUCk7ZWxzZXtMPU1hdGgucm91bmQoTC84KSo4O2NvbnN0IEs9R1tQXXx8Ry5zdHJhaWdodDtMPWwoTCxLLm1pbixLLm1heCl9bGV0IHg9bnVsbCxPPSExLHc9InJhbmRvbSI7ZnVuY3Rpb24gbygpe3RyeXtjb25zdCBLPU51bWJlcihwKTtpZihOdW1iZXIuaXNGaW5pdGUoSykmJks+MClyZXR1cm4gSztjb25zdCBhZT1OdW1iZXIoYS5icG0pO2lmKE51bWJlci5pc0Zpbml0ZShhZSkmJmFlPjApcmV0dXJuIGFlfWNhdGNoe31yZXR1cm4gMTIwfWZ1bmN0aW9uIEMoSyl7Y29uc3QgYWU9bygpLGZlPXRpKEssYWUsYSYmYS5kZW5zaXR5V2VpZ2h0aW5nfHx7fSk7cmV0dXJuIHMoKTxmZX1mdW5jdGlvbiBjKEspe3ZhciBZO2lmKCFLKXJldHVybiBLO2NvbnN0IGFlPW8oKSxtZT1PcyhhZSxhJiZhLmRlbnNpdHlXZWlnaHRpbmd8fHt9KS0xO2lmKE1hdGguYWJzKG1lKTwuMDEpcmV0dXJuIEs7Y29uc3QgcGU9T2JqZWN0LmtleXMoSyksb2U9e2tpY2s6UD09PSJzdHJhaWdodCI/MDouMzUsYmFzczouNTUsaGloYXQ6MSx3b29kQmxvY2s6Ljg1LGthcnBsdXM6LjksZm1CbGlwMTouOCxmbUJsaXAyOi44LGNsaWNrczouNyx0ZWNobm9TdGFiOi42LGZpbHRlclBpbmc6Ljc1LHNpZ25hbDowfTtQPT09InN0cmFpZ2h0IiYmKG9lLmZtQmxpcDE9MCxvZS5mbUJsaXAyPTAsb2Uud29vZEJsb2NrPTAsb2Uua2FycGx1cz0wLG9lLmZpbHRlclBpbmc9MCk7Y29uc3QgQj0uMDYsdj0uMTt0eXBlb2Ygej09ImZ1bmN0aW9uIj96KCk6KFk9Sz09bnVsbD92b2lkIDA6Sy5raWNrKSE9bnVsbCYmWS5sZW5ndGg7ZnVuY3Rpb24gRihKLGllLHVlKXtmb3IobGV0IG5lPS11ZTtuZTw9dWU7bmUrKyl7aWYobmU9PT0wKWNvbnRpbnVlO2NvbnN0IHRlPSgoaWUrbmUpJUoubGVuZ3RoK0oubGVuZ3RoKSVKLmxlbmd0aDtpZihKW3RlXSlyZXR1cm4hMX1yZXR1cm4hMH1jb25zdCBXPVA9PT0iZmx1eEdyaWQiJiZNPT09IkEiO2Zvcihjb25zdCBKIG9mIHBlKXtjb25zdCBpZT1LW0pdO2lmKCFBcnJheS5pc0FycmF5KGllKXx8aWUubGVuZ3RoPT09MHx8UD09PSJzdHJhaWdodCImJko9PT0ia2ljayIpY29udGludWU7Y29uc3QgdWU9b2VbSl0hPW51bGw/TnVtYmVyKG9lW0pdKTouNzU7aWYobWU8MCl7Y29uc3QgbmU9SG4odiotbWUqdWUpO2ZvcihsZXQgdGU9MDt0ZTxpZS5sZW5ndGg7dGUrKyl7aWYoIWllW3RlXSljb250aW51ZTtjb25zdCBaPXRlJTE2LHJlPUo9PT0ia2ljayImJlo9PT0wfHxKPT09ImZpbHRlclBpbmciJiYoWj09PTR8fFo9PT0xMik7aWYoVyYmSj09PSJrYXJwbHVzIiYmdGUlMzI9PT0xMCljb250aW51ZTtjb25zdCBiZT1yZT9uZSouMzU6bmU7cygpPGJlJiYoaWVbdGVdPW51bGwpfX1lbHNle2NvbnN0IG5lPUhuKEIqbWUqdWUpO2ZvcihsZXQgdGU9MDt0ZTxpZS5sZW5ndGg7dGUrKylpZighaWVbdGVdJiZGKGllLHRlLDIpJiZzKCk8bmUpe2NvbnN0IFo9dGUlMTYscmU9WiU0PT09MixkZT1aPT09M3x8Wj09PTd8fFo9PT0xMXx8Wj09PTE1LGJlPUo9PT0ia2ljayI/Wj09PTA6cmU/cygpPC41OmRlPyJ3ZWFrIjohMSxTZT1yZT8uOStzKCkqLjA4OmRlPy44K3MoKSouMDg6Ljg2K3MoKSouMDg7aWVbdGVdPXthY2NlbnQ6YmUsc3VzdGFpblN0ZXBzOjAsdmVsb2NpdHk6TWF0aC5taW4oMSxNYXRoLm1heCguNSxTZSkpfX19fXJldHVybiBLfWZ1bmN0aW9uIGQoSyl7aWYoIUspcmV0dXJuIEs7Y29uc3QgYWU9bygpO2lmKFAhPT0ic3RyYWlnaHQifHwhKE51bWJlci5pc0Zpbml0ZShhZSkmJmFlPj0xNTUpKXJldHVybiBLO2NvbnN0IGZlPVsiaGloYXQiLCJrYXJwbHVzIl07Zm9yKGNvbnN0IG1lIG9mIGZlKXtjb25zdCBwZT1LW21lXTtpZighKCFBcnJheS5pc0FycmF5KHBlKXx8cGUubGVuZ3RoPT09MCkpZm9yKGxldCBvZT0wO29lPHBlLmxlbmd0aDtvZSsrKW9lJTIhPT0wJiYocGVbb2VdPW51bGwpfXJldHVybiBLfWZ1bmN0aW9uIGcoSyl7cmV0dXJuIEtbTWF0aC5mbG9vcihzKCkqSy5sZW5ndGgpXX1mdW5jdGlvbiB1KEssYWUpe25pKEssYWUscyl9ZnVuY3Rpb24gYihLLGFlLGZlKXthaShLLGFlLGZlLHMpfWNvbnN0IGg9e21hcDp7c3RyYWlnaHQ6UmMsYnJlYWs6cWMsYnJlYWtiZWF0OlZjLGFtYmllbnQ6SGMsZmx1eEdyaWQ6RmMscGF1c2U6T2N9LGdlbmVyYXRlKEssYWUpe3JldHVybih0aGlzLm1hcFtLXXx8dGhpcy5tYXAuc3RyYWlnaHQpKGFlKX19O2Z1bmN0aW9uIGYoKXtyZXR1cm57bGVuOkwsc2lkZTphJiZhLnNpZGV8fCJBIixyOk4scmFuZG9tSW50OkllLHJhbmRvbUZsb2F0OmksY3JlYXRlRW1wdHlQYXR0ZXJuOkZlLHBpY2tGcm9tOmcsc2hpZnRQYXR0ZXJuQnlPbmVUcmlnZ2VyOnUsYWRkUmFuZG9tVHJpZ2dlcnM6Yix3ZWlnaHRlZENoYW5jZTpDfX1jb25zdCB5PXtzdGVwc0J5TW9kZTp7ZGVmYXVsdDpbY10sc3RyYWlnaHQ6W2MsZF0sYnJlYWs6W2NdLGJyZWFrYmVhdDpbY10sYW1iaWVudDpbY10sZmx1eEdyaWQ6W2NdLHBhdXNlOltdfSxhcHBseShLLGFlKXtjb25zdCBmZT10aGlzLnN0ZXBzQnlNb2RlW0tdfHx0aGlzLnN0ZXBzQnlNb2RlLmRlZmF1bHR8fFtdO2xldCBtZT1hZTtmb3IoY29uc3QgcGUgb2YgZmUpbWU9cGUobWUpO3JldHVybiBtZX19O2Z1bmN0aW9uIF8oSyxhZSl7aWYoIUsmJiFhZSlyZXR1cm4hMDtpZighIUshPSEhYWUpcmV0dXJuITE7dHJ5e2NvbnN0IGZlPUsmJksuYWNjZW50fHwhMSxtZT1hZSYmYWUuYWNjZW50fHwhMSxwZT1LJiZLLnN1c3RhaW5TdGVwc3x8MCxvZT1hZSYmYWUuc3VzdGFpblN0ZXBzfHwwLEI9KEsmJksudmVsb2NpdHkpIT1udWxsP0sudmVsb2NpdHk6MCx2PShhZSYmYWUudmVsb2NpdHkpIT1udWxsP2FlLnZlbG9jaXR5OjA7cmV0dXJuIGZlPT09bWUmJnBlPT09b2UmJk1hdGguYWJzKEItdik8MWUtNn1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gSChLLGFlKXtsZXQgZmU9TWF0aC5hYnMoS3wwKSxtZT1NYXRoLmFicyhhZXwwKTtmb3IoO21lOyl7Y29uc3QgcGU9bWU7bWU9ZmUlbWUsZmU9cGV9cmV0dXJuIGZlfHwxfWZ1bmN0aW9uIFYoSyxhZSl7Y29uc3QgZmU9SChLLGFlKTtyZXR1cm4gTWF0aC5tYXgoMSxNYXRoLmFicygoS3wwKSooYWV8MCkpL2ZlKX1mdW5jdGlvbiBRKEspe2lmKCFBcnJheS5pc0FycmF5KEspfHxLLmxlbmd0aD09PTApcmV0dXJuIG51bGw7Y29uc3QgYWU9Sy5sZW5ndGg7bGV0IGZlPSExO2ZvcihsZXQgb2U9MDtvZTxhZTtvZSsrKWlmKEtbb2VdKXtmZT0hMDticmVha31pZighZmUpcmV0dXJuIG51bGw7Y29uc3QgbWU9WzgsMTIsMTYsMjQsMzIsNDgsNjQsOTYsMTIwXS5maWx0ZXIob2U9Pm9lPjAmJm9lPD1hZSkscGU9bWUubGVuZ3RoP21lOkFycmF5LmZyb20oe2xlbmd0aDpNYXRoLm1heCgxLE1hdGgubWluKGFlLDEyOCkpfSwob2UsQik9PkIrMSk7Zm9yKGNvbnN0IG9lIG9mIHBlKXtsZXQgQj0hMDtmb3IobGV0IHY9MDt2K29lPGFlO3YrKylpZighXyhLW3ZdLEtbditvZV0pKXtCPSExO2JyZWFrfWlmKEIpcmV0dXJuIG9lfXJldHVybiBudWxsfWxldCAkPW51bGw7ZnVuY3Rpb24gcSgpe2NvbnN0IEs9e21vZGU6UCxsZW46TCxwaGFzZTpNfHwibm9uZSIsc2lkZTphJiZhLnNpZGV8fCJBIixicG06bygpLGJvdW5kczpHfTt0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KEspfWNhdGNoe3JldHVybmAke1B9fCR7TH18JHtNfXwke28oKX1gfX1mdW5jdGlvbiBrKEspe2NvbnN0IGFlPXEoKTtpZigkPT09YWUmJngpcmV0dXJuO2NvbnN0IGZlPWYoKTtQPT09ImFtYmllbnQiJiYoZmUuYmlhcz13fHwicmFuZG9tIik7Y29uc3QgbWU9aC5nZW5lcmF0ZShQLGZlKTt4PXkuYXBwbHkoUCxtZSksKCF4LnNpZ25hbHx8IUFycmF5LmlzQXJyYXkoeC5zaWduYWwpKSYmKHguc2lnbmFsPUZlKEwpKTt0cnl7T3x8eC5zaWduYWwmJnguc2lnbmFsLmxlbmd0aD4wJiYoeC5zaWduYWxbMF09bnVsbCl9Y2F0Y2h7fSQ9YWU7dHJ5e2lmKCFLKXtjb25zdCBwZT14JiZBcnJheS5pc0FycmF5KHgua2ljayk/eC5raWNrOm51bGwsb2U9UShwZSk7aWYoTnVtYmVyLmlzRmluaXRlKG9lKSYmb2U+MCl7Y29uc3QgQj1WKG9lLDgpO2lmKEI+MCYmTCVCIT09MCl7Y29uc3Qgdj1HW1BdfHxHLnN0cmFpZ2h0LEY9TWF0aC5tYXgodi5taW58MCw4KSxXPU1hdGgubWF4KEYsdi5tYXh8MCksWT1NYXRoLmZsb29yKEwvQikqQixKPU1hdGguY2VpbChML0IpKkIsaWU9Wj0+bChaLEYsVyksdWU9aWUoWSksbmU9aWUoSiksdGU9TWF0aC5hYnModWUtTCk8PU1hdGguYWJzKG5lLUwpP3VlOm5lO2lmKHRlIT09TCYmdGUlQj09PTApe0w9dGUsJD1udWxsLGsoITApO3JldHVybn19fX19Y2F0Y2h7fX1rKCk7ZnVuY3Rpb24gQSgpe2NvbnN0IEs9e3N0cmFpZ2h0Oi4yNSxicmVhazouMSxicmVha2JlYXQ6LjEsYW1iaWVudDouMSxmbHV4R3JpZDouMTgscGF1c2U6MH0sYWU9S1tQXSE9bnVsbD9LW1BdOi4xODtzKCk8YWUmJihMPUUoUCkpLFA9PT0iYW1iaWVudCImJih3PVsidmVyeWxvb3NlIiwibG9vc2UiLCJtaWQiLCJkZW5zZSJdW01hdGguZmxvb3IocygpKjQpXXx8Im1pZCIpLGsoKTt0cnl7TyYmeCYmQXJyYXkuaXNBcnJheSh4LnNpZ25hbCkmJnguc2lnbmFsLmxlbmd0aD4wJiYoeC5zaWduYWxbMF18fCh4LnNpZ25hbFswXT17YWNjZW50OiEwLHN1c3RhaW5TdGVwczo0LHZlbG9jaXR5Oi43fSkpfWNhdGNoe31PPSEwfWZ1bmN0aW9uIHooKXtyZXR1cm4gTH1mdW5jdGlvbiBEKEspe2NvbnN0IGFlPShLJUwrTCklTCxmZT17fSxtZT14fHx7fTtmb3IoY29uc3RbcGUsb2Vdb2YgT2JqZWN0LmVudHJpZXMobWUpKXtpZighQXJyYXkuaXNBcnJheShvZSkpY29udGludWU7Y29uc3QgQj1vZVthZV07QiYmKGZlW3BlXT1CKX1yZXR1cm4gZmV9ZnVuY3Rpb24gVSgpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh4KSl9Y2F0Y2h7cmV0dXJuIHh9fWZ1bmN0aW9uIFIoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBJKEspe2NvbnN0IGFlPUs9PT0icmFuZG9tIj9TKHMpOlJuLmluY2x1ZGVzKEspP0s6InN0cmFpZ2h0IjtpZihhZSE9PVApe1A9YWUsdz0icmFuZG9tIjtjb25zdCBmZT1HW1BdfHxHLnN0cmFpZ2h0O0w9TWF0aC5yb3VuZChMLzgpKjgsTD1sKEwsZmUubWluLGZlLm1heCksJD1udWxsLGsoKX19ZnVuY3Rpb24gaigpe3JldHVybiBQfWZ1bmN0aW9uIHNlKEspe009bnVsbH1mdW5jdGlvbiBoZSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIGVlKCl7cmV0dXJue3N0cmFpZ2h0OnsuLi5HLnN0cmFpZ2h0fSxicmVhazp7Li4uRy5icmVha30sYnJlYWtiZWF0OnsuLi5HLmJyZWFrYmVhdH0sYW1iaWVudDp7Li4uRy5hbWJpZW50fSxmbHV4R3JpZDp7Li4uRy5mbHV4R3JpZH19fWZ1bmN0aW9uIFgoSyl7Rz1ULnNhbml0aXplQm91bmRzKEspO2NvbnN0IGFlPUdbUF18fEcuc3RyYWlnaHQ7TD1NYXRoLnJvdW5kKEwvOCkqOCxMPWwoTCxhZS5taW4sYWUubWF4KSwkPW51bGwsaygpfWZ1bmN0aW9uIGNlKEspe2NvbnN0IGFlPW8oKSxmZT1OdW1iZXIoSyksbWU9TnVtYmVyLmlzRmluaXRlKGZlKSYmZmU+MD9mZTpudWxsO3A9bWUsYWUhPT0obWU/P2FlKSYmKCQ9bnVsbCxrKCkpfXJldHVybntnZXRNb2RlOmosc2V0TW9kZTpJLGdldExvb3BMZW5ndGg6eixnZXRFdmVudHNBdFN0ZXA6RCxuZXh0QmFyOkEsZ2V0TG9vcExlbmd0aEJvdW5kczplZSxzZXRMb29wTGVuZ3RoQm91bmRzOlgsc2V0TW9kaWZpY2F0aW9uUGhhc2U6c2UsZ2V0TW9kaWZpY2F0aW9uUGhhc2U6aGUsc2V0VGVtcG86Y2UsZ2V0VGVuc2lvbkN1ZTpSLGdldFBhdHRlcm5zU25hcHNob3Q6VX19Y29uc3QgVnM9e2xvd0JwbTo2MCxoaWdoQnBtOjE2MCxhbHBoYUF0TG93OjEuMjUsYWxwaGFBdEhpZ2g6LjV9O2Z1bmN0aW9uIFVuKCl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudDwidSI/ZG9jdW1lbnQ6bnVsbH1jbGFzcyBMY3tjb25zdHJ1Y3RvcihuPXt9KXt2YXIgeCxPLHcsbztjb25zdCB0PURhdGUubm93KCkse3I6YSxpZDpzPXQsYnBtOm09MTIwLHNpZGU6cD0iQSIsc3dpbmc6Uz0wLHNodWZmbGU6UD0wLGluaXRpYWxNb2RlOk09bnVsbCxkZW5zaXR5V2VpZ2h0aW5nOlQ9VnMsZmxhZ3M6Rz17fSxldmVudHM6RT10eXBlb2YgRXZlbnRUYXJnZXQ8InUiP25ldyBFdmVudFRhcmdldDpudWxsLGFwaXM6TD17Z2V0IEF1ZGlvQ29udGV4dEN0b3IoKXt0cnl7cmV0dXJuIGdsb2JhbFRoaXMuQXVkaW9Db250ZXh0fHxnbG9iYWxUaGlzLndlYmtpdEF1ZGlvQ29udGV4dH1jYXRjaHtyZXR1cm4gbnVsbH19fX09bnx8e307dGhpcy5nbG9iYWxzPXtpZDpOdW1iZXIuaXNGaW5pdGUocyk/czp0LGJwbTpOdW1iZXIuaXNGaW5pdGUobSkmJm0+MD9tOjEyMCxzaWRlOlN0cmluZyhwfHwiQSIpLnRvVXBwZXJDYXNlKCk9PT0iQiI/IkIiOiJBIixzd2luZzpOdW1iZXIuaXNGaW5pdGUoUyk/UzowLHNodWZmbGU6TnVtYmVyLmlzRmluaXRlKFApP1A6MCxpbml0aWFsTW9kZTp0eXBlb2YgTT09InN0cmluZyImJk0ubGVuZ3RoPjA/TTpudWxsLGRlbnNpdHlXZWlnaHRpbmc6VHx8VnMsZmxhZ3M6RyYmdHlwZW9mIEc9PSJvYmplY3QiP3suLi5HfTp7fSxldmVudHM6RSxhcGlzOkwscmFuZDp7cjp0eXBlb2YgYT09ImZ1bmN0aW9uIj9hOk1hdGgucmFuZG9tfSxtYXN0ZXJCdXM6bnVsbH07dHJ5e0tzKHRoaXMuZ2xvYmFscy5yYW5kLnIpfWNhdGNoe310cnl7Y29uc3QgQz17fTsoTz0oeD10aGlzLmdsb2JhbHMpPT1udWxsP3ZvaWQgMDp4LmRlbnNpdHlXZWlnaHRpbmcpIT1udWxsJiZPLmxvd0JwbSYmKEMubG93QnBtPXRoaXMuZ2xvYmFscy5kZW5zaXR5V2VpZ2h0aW5nLmxvd0JwbSksKG89KHc9dGhpcy5nbG9iYWxzKT09bnVsbD92b2lkIDA6dy5kZW5zaXR5V2VpZ2h0aW5nKSE9bnVsbCYmby5oaWdoQnBtJiYoQy5oaWdoQnBtPXRoaXMuZ2xvYmFscy5kZW5zaXR5V2VpZ2h0aW5nLmhpZ2hCcG0pLEpzKEMpfWNhdGNoe310aGlzLnNjaGVkdWxlcj1udWxsLHRoaXMucmh5dGhtPW51bGwsdGhpcy5fd2lyaW5nPXtwb2ludGVyZG93bjpudWxsLHRvdWNoZW5kOm51bGwsbW91c2Vkb3duOm51bGwsa2V5ZG93bjpudWxsLGNsaWNrOm51bGwsdGFyZ2V0czpuZXcgU2V0fX1pbml0KHtzY2hlZHVsZXI6bj17fSxyaHl0aG06dD17fX09e30pe2lmKHRoaXMuc2NoZWR1bGVyfHwodGhpcy5zY2hlZHVsZXI9QWMobix0aGlzLmdsb2JhbHMpKSwhdGhpcy5yaHl0aG0pe2NvbnN0IGE9ey4uLnR9O3RoaXMuZ2xvYmFscyYmdHlwZW9mIHRoaXMuZ2xvYmFscy5pbml0aWFsTW9kZT09InN0cmluZyImJnRoaXMuZ2xvYmFscy5pbml0aWFsTW9kZSYmKGEubW9kZT1hLm1vZGV8fHRoaXMuZ2xvYmFscy5pbml0aWFsTW9kZSksdGhpcy5yaHl0aG09RGMoYSx0aGlzLmdsb2JhbHMpLHRoaXMuc2NoZWR1bGVyLnNldFJoeXRobSh0aGlzLnJoeXRobSl9cmV0dXJuIHRoaXN9YXN5bmMgc3RhcnQoKXt2YXIgdCxhO3RoaXMuc2NoZWR1bGVyfHx0aGlzLmluaXQoKTtjb25zdCBuPWF3YWl0IHRoaXMuc2NoZWR1bGVyLnN0YXJ0KCk7dHJ5eyhhPSh0PXRoaXMuZ2xvYmFscyk9PW51bGw/dm9pZCAwOnQuZXZlbnRzKT09bnVsbHx8YS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiYXVkaW9SdW5uaW5nIix7ZGV0YWlsOntzb3VyY2U6InN0YXJ0In19KSl9Y2F0Y2h7fXJldHVybiBufXN0b3AoKXt2YXIgbix0LGE7dHJ5eyhuPXRoaXMuc2NoZWR1bGVyKT09bnVsbHx8bi5zdG9wKCl9Y2F0Y2h7fXRyeXsoYT0odD10aGlzLmdsb2JhbHMpPT1udWxsP3ZvaWQgMDp0LmV2ZW50cyk9PW51bGx8fGEuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImF1ZGlvU3RvcHBlZCIse2RldGFpbDp7c291cmNlOiJzdG9wIn19KSl9Y2F0Y2h7fX1wYXVzZSgpe3ZhciBuLHQsYSxzLG0scDt0cnl7Y29uc3QgUz0obj10aGlzLnNjaGVkdWxlcik9PW51bGw/dm9pZCAwOm4uYXVkaW9Db250ZXh0LFA9KHQ9dGhpcy5nbG9iYWxzKT09bnVsbD92b2lkIDA6dC5tYXN0ZXJCdXM7aWYoUyYmUCYmUC5tYXN0ZXJCdXNPdXRwdXQmJlAubWFzdGVyQnVzT3V0cHV0LmdhaW4pe2NvbnN0IE09UC5tYXN0ZXJCdXNPdXRwdXQuZ2FpbixUPVMuY3VycmVudFRpbWUrLjAwNTt0cnl7TS5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoVCl9Y2F0Y2h7fXRyeXtNLnNldFZhbHVlQXRUaW1lKE1hdGgubWF4KDFlLTQsTS52YWx1ZXx8LjgpLFQpfWNhdGNoe310cnl7TS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSgxZS00LFQrLjIpfWNhdGNoe00udmFsdWU9MWUtNH19fWNhdGNoe310cnl7KHM9KGE9dGhpcy5zY2hlZHVsZXIpPT1udWxsP3ZvaWQgMDphLnBhdXNlKT09bnVsbHx8cy5jYWxsKGEpfWNhdGNoe310cnl7KHA9KG09dGhpcy5nbG9iYWxzKT09bnVsbD92b2lkIDA6bS5ldmVudHMpPT1udWxsfHxwLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJhdWRpb1N0b3BwZWQiLHtkZXRhaWw6e3NvdXJjZToicGF1c2UifX0pKX1jYXRjaHt9fWFzeW5jIHJlc3VtZSgpe3ZhciBuLHQsYSxzLG0scDt0cnl7YXdhaXQoKHQ9KG49dGhpcy5zY2hlZHVsZXIpPT1udWxsP3ZvaWQgMDpuLnJlc3VtZSk9PW51bGw/dm9pZCAwOnQuY2FsbChuKSl9Y2F0Y2h7fXRyeXsocz0oYT10aGlzLmdsb2JhbHMpPT1udWxsP3ZvaWQgMDphLmV2ZW50cyk9PW51bGx8fHMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImF1ZGlvUnVubmluZyIse2RldGFpbDp7c291cmNlOiJyZXN1bWUifX0pKX1jYXRjaHt9dHJ5e2NvbnN0IFM9KG09dGhpcy5zY2hlZHVsZXIpPT1udWxsP3ZvaWQgMDptLmF1ZGlvQ29udGV4dCxQPShwPXRoaXMuZ2xvYmFscyk9PW51bGw/dm9pZCAwOnAubWFzdGVyQnVzO2lmKFMmJlAmJlAubWFzdGVyQnVzT3V0cHV0JiZQLm1hc3RlckJ1c091dHB1dC5nYWluKXtjb25zdCBNPVAubWFzdGVyQnVzT3V0cHV0LmdhaW4sVD1TLmN1cnJlbnRUaW1lKy4wMDU7dHJ5e00uY2FuY2VsU2NoZWR1bGVkVmFsdWVzKFQpfWNhdGNoe310cnl7TS5zZXRWYWx1ZUF0VGltZShNYXRoLm1heCgxZS00LE0udmFsdWV8fDFlLTQpLFQpfWNhdGNoe310cnl7TS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSguOCxUKy4yKX1jYXRjaHtNLnZhbHVlPS44fX19Y2F0Y2h7fX1kaXNwb3NlKCl7dmFyIG4sdDt0cnl7KHQ9KG49dGhpcy5zY2hlZHVsZXIpPT1udWxsP3ZvaWQgMDpuLmRpc3Bvc2UpPT1udWxsfHx0LmNhbGwobil9Y2F0Y2h7fXRoaXMuc2NoZWR1bGVyPW51bGwsdGhpcy5yaHl0aG09bnVsbCx0aGlzLnVud2lyZUFsbCgpfXNldE1vZGUobil7dmFyIHQ7dHJ5eyh0PXRoaXMuc2NoZWR1bGVyKT09bnVsbHx8dC5zZXRNb2RlKG4pfWNhdGNoe31yZXR1cm4gdGhpc31nZXRNb2RlKCl7dmFyIG4sdDt0cnl7cmV0dXJuKHQ9KG49dGhpcy5zY2hlZHVsZXIpPT1udWxsP3ZvaWQgMDpuLmdldE1vZGUpPT1udWxsP3ZvaWQgMDp0LmNhbGwobil9Y2F0Y2h7cmV0dXJufX1zZXRCcG0obil7dmFyIHQ7dHJ5eyh0PXRoaXMuc2NoZWR1bGVyKT09bnVsbHx8dC5zZXRCcG0obiksdGhpcy5nbG9iYWxzLmJwbT1OdW1iZXIobil8fHRoaXMuZ2xvYmFscy5icG19Y2F0Y2h7fXJldHVybiB0aGlzfXJlZ2VuZXJhdGUoKXt2YXIgbix0O3RyeXsodD0obj10aGlzLnNjaGVkdWxlcik9PW51bGw/dm9pZCAwOm4ucmVnZW5lcmF0ZSk9PW51bGx8fHQuY2FsbChuKX1jYXRjaHt9cmV0dXJuIHRoaXN9d2lyZVBvaW50ZXJTdGFydChuPVVuKCkpe2lmKCFufHx0aGlzLl93aXJpbmcucG9pbnRlcmRvd24pcmV0dXJuO2NvbnN0IHQ9YXN5bmMoKT0+e3ZhciBhO3RyeXtjb25zdCBzPShhPXRoaXMuc2NoZWR1bGVyKT09bnVsbD92b2lkIDA6YS5hdWRpb0NvbnRleHQ7aWYocyYmcy5zdGF0ZSE9PSJydW5uaW5nIil0cnl7YXdhaXQgcy5yZXN1bWUoKX1jYXRjaHt9fWNhdGNoe310cnl7YXdhaXQgdGhpcy5zdGFydCgpfWNhdGNoe319O3RyeXtuLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0LHtwYXNzaXZlOiEwLG9uY2U6ITB9KX1jYXRjaHt9dHJ5e24uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHQse3Bhc3NpdmU6ITAsb25jZTohMH0pfWNhdGNoe310cnl7bi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHQse3Bhc3NpdmU6ITAsb25jZTohMH0pfWNhdGNoe310cnl7bi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0LHtwYXNzaXZlOiEwLG9uY2U6ITB9KX1jYXRjaHt9cmV0dXJuIHRoaXMuX3dpcmluZy5wb2ludGVyZG93bj10LHRoaXMuX3dpcmluZy50b3VjaGVuZD10LHRoaXMuX3dpcmluZy5tb3VzZWRvd249dCx0aGlzLl93aXJpbmcua2V5ZG93bj10LHRoaXMuX3dpcmluZy50YXJnZXRzLmFkZChuKSx0aGlzfXVud2lyZVBvaW50ZXJTdGFydChuPVVuKCkpe2lmKCFufHwhdGhpcy5fd2lyaW5nLnBvaW50ZXJkb3duKXJldHVybiB0aGlzO3RyeXtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLl93aXJpbmcucG9pbnRlcmRvd24pfWNhdGNoe310cnl7dGhpcy5fd2lyaW5nLnRvdWNoZW5kJiZuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLl93aXJpbmcudG91Y2hlbmQpfWNhdGNoe310cnl7dGhpcy5fd2lyaW5nLm1vdXNlZG93biYmbi5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3dpcmluZy5tb3VzZWRvd24pfWNhdGNoe310cnl7dGhpcy5fd2lyaW5nLmtleWRvd24mJm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fd2lyaW5nLmtleWRvd24pfWNhdGNoe31yZXR1cm4gdGhpcy5fd2lyaW5nLnBvaW50ZXJkb3duPW51bGwsdGhpcy5fd2lyaW5nLnRvdWNoZW5kPW51bGwsdGhpcy5fd2lyaW5nLm1vdXNlZG93bj1udWxsLHRoaXMuX3dpcmluZy5rZXlkb3duPW51bGwsdGhpc313aXJlUmVnZW5lcmF0ZU9uQ2xpY2sobj1VbigpKXtpZighbnx8dGhpcy5fd2lyaW5nLmNsaWNrKXJldHVybjtjb25zdCB0PSgpPT57dHJ5e3RoaXMucmVnZW5lcmF0ZSgpfWNhdGNoe319O3RyeXtuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0LHtwYXNzaXZlOiEwfSl9Y2F0Y2h7cmV0dXJufXJldHVybiB0aGlzLl93aXJpbmcuY2xpY2s9dCx0aGlzLl93aXJpbmcudGFyZ2V0cy5hZGQobiksdGhpc311bndpcmVSZWdlbmVyYXRlT25DbGljayhuPVVuKCkpe2lmKCFufHwhdGhpcy5fd2lyaW5nLmNsaWNrKXJldHVybiB0aGlzO3RyeXtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl93aXJpbmcuY2xpY2spfWNhdGNoe31yZXR1cm4gdGhpcy5fd2lyaW5nLmNsaWNrPW51bGwsdGhpc311bndpcmVBbGwoKXtmb3IoY29uc3QgbiBvZiB0aGlzLl93aXJpbmcudGFyZ2V0cyl7aWYodGhpcy5fd2lyaW5nLnBvaW50ZXJkb3duKXRyeXtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLl93aXJpbmcucG9pbnRlcmRvd24pfWNhdGNoe31pZih0aGlzLl93aXJpbmcudG91Y2hlbmQpdHJ5e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuX3dpcmluZy50b3VjaGVuZCl9Y2F0Y2h7fWlmKHRoaXMuX3dpcmluZy5tb3VzZWRvd24pdHJ5e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl93aXJpbmcubW91c2Vkb3duKX1jYXRjaHt9aWYodGhpcy5fd2lyaW5nLmtleWRvd24pdHJ5e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fd2lyaW5nLmtleWRvd24pfWNhdGNoe31pZih0aGlzLl93aXJpbmcuY2xpY2spdHJ5e24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX3dpcmluZy5jbGljayl9Y2F0Y2h7fX1yZXR1cm4gdGhpcy5fd2lyaW5nLnBvaW50ZXJkb3duPW51bGwsdGhpcy5fd2lyaW5nLnRvdWNoZW5kPW51bGwsdGhpcy5fd2lyaW5nLm1vdXNlZG93bj1udWxsLHRoaXMuX3dpcmluZy5rZXlkb3duPW51bGwsdGhpcy5fd2lyaW5nLmNsaWNrPW51bGwsdGhpcy5fd2lyaW5nLnRhcmdldHMuY2xlYXIoKSx0aGlzfW9uKG4sdCl7dmFyIGEsczt0cnl7KHM9KGE9dGhpcy5nbG9iYWxzKT09bnVsbD92b2lkIDA6YS5ldmVudHMpPT1udWxsfHxzLmFkZEV2ZW50TGlzdGVuZXIobix0KX1jYXRjaHt9cmV0dXJuIHRoaXN9b2ZmKG4sdCl7dmFyIGEsczt0cnl7KHM9KGE9dGhpcy5nbG9iYWxzKT09bnVsbD92b2lkIDA6YS5ldmVudHMpPT1udWxsfHxzLnJlbW92ZUV2ZW50TGlzdGVuZXIobix0KX1jYXRjaHt9cmV0dXJuIHRoaXN9Z2V0Q3R4KCl7cmV0dXJuIHRoaXMuZ2xvYmFsc319Y2xhc3MgTmN7Y29uc3RydWN0b3Iobix0LGEscyxtLHAsUz1udWxsLFA9bnVsbCxNPXt9KXtjb25zdCBUPXtyOm4saWQ6dCxicG06YSxzaWRlOnMsc3dpbmc6bSxzaHVmZmxlOnB9O1MmJihULmRlbnNpdHlXZWlnaHRpbmc9UyksUCYmKFQuZmxhZ3M9UCksTSYmdHlwZW9mIE0uaW5pdGlhbE1vZGU9PSJzdHJpbmciJiZNLmluaXRpYWxNb2RlJiYoVC5pbml0aWFsTW9kZT1NLmluaXRpYWxNb2RlKSx0aGlzLmVuZ2luZT1uZXcgTGMoVCkuaW5pdCgpO2NvbnN0IEc9dHlwZW9mIGRvY3VtZW50PCJ1Ij9kb2N1bWVudDpudWxsO2lmKE0ucG9pbnRlcmRvd25TdGFydCE9PSExJiZ0aGlzLmVuZ2luZS53aXJlUG9pbnRlclN0YXJ0KE0ucG9pbnRlclRhcmdldHx8RyksTS5yZWdlbmVyYXRlT25DbGljaz09PSEwJiZ0aGlzLmVuZ2luZS53aXJlUmVnZW5lcmF0ZU9uQ2xpY2soTS5wb2ludGVyVGFyZ2V0fHxHKSxNJiZNLmF1dG9zdGFydD09PSEwKXRyeXtQcm9taXNlLnJlc29sdmUodGhpcy5lbmdpbmUuc3RhcnQoKSkuY2F0Y2goKCk9Pnt9KX1jYXRjaHt9fWFzeW5jIHN0YXJ0KCl7cmV0dXJuIHRoaXMuZW5naW5lLnN0YXJ0KCl9c3RvcCgpe3JldHVybiB0aGlzLmVuZ2luZS5zdG9wKCl9cGF1c2UoKXtyZXR1cm4gdGhpcy5lbmdpbmUucGF1c2UoKX1hc3luYyByZXN1bWUoKXtyZXR1cm4gdGhpcy5lbmdpbmUucmVzdW1lKCl9ZGlzcG9zZSgpe3JldHVybiB0aGlzLmVuZ2luZS5kaXNwb3NlKCl9c2V0TW9kZShuKXtyZXR1cm4gdGhpcy5lbmdpbmUuc2V0TW9kZShuKX1nZXRNb2RlKCl7cmV0dXJuIHRoaXMuZW5naW5lLmdldE1vZGUoKX1zZXRCcG0obil7cmV0dXJuIHRoaXMuZW5naW5lLnNldEJwbShuKX1yZWdlbmVyYXRlKCl7cmV0dXJuIHRoaXMuZW5naW5lLnJlZ2VuZXJhdGUoKX1vbihuLHQpe3JldHVybiB0aGlzLmVuZ2luZS5vbihuLHQpfW9mZihuLHQpe3JldHVybiB0aGlzLmVuZ2luZS5vZmYobix0KX1nZXRDdHgoKXtyZXR1cm4gdGhpcy5lbmdpbmUuZ2V0Q3R4KCl9fWNvbnN0e2Zsb29yOnJuLGNlaWw6bG4sbWluOldjLG1heDpBbn09TWF0aDtsZXQgUG49MDtjb25zdCBSdD1lPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZSYmbi5jbGFzc0xpc3QuYWRkKGUpLG59LEVjPVtbWzAsMCwuMl0sWzAsLjUsMV0sWzEsLjYsLjFdLFsxLDEsMV0sWzEsLjgsLjldXSxbWzAsLjE1LC4yXSxbMCwuNSwuNV0sWy4xLC42LC40XSxbMSwxLDFdLFsxLC4yLC4zXV0sW1swLDAsLjI1XSxbLjEsLjEsLjVdLFswLC4yLDFdLFsuMSwuMjUsLjk1XSxbMSwuNiwxXV0sW1swLDAsMF0sWy4xLDAsLjE1XSxbLjIsLjE1LC4yNV0sWzEsMSwxXSxbMSwuMywuMV1dLFtbMSwuOCwwXSxbMSwuOCwwXSxbLjksLjcsLjddLFsuMDcsLjA1LC4xNV0sWy4wNSwwLC4wN11dLFtbLjI5NCwwLC41MV0sWzEsLjI3NSwwXSxbMSwxLC44XSxbMCwuMDUsLjJdLFswLDAsMF1dLFtbLjEsMCwuMTVdLFsxLDAsMF0sWzEsMSwuOV0sWzAsLjEsLjJdLFswLC4wMSwuMDFdXSxbWy4xLDAsLjFdLFsuMSwwLC4zXSxbMCwwLC43XSxbMSwuMiwuM10sWy4xLC4xLC4xXV0sW1suMiwxLC42XSxbLjA1LC4xLC4xXSxbLjEsLjI1LC4yXSxbMCwuMTUsLjEyXSxbLjcsMSwuOV1dLFtbMSwwLDBdLFsxLC4xLC4zXSxbMSwwLC4yXSxbLjksLjEsLjFdLFsxLC45LC45XV0sW1suMTMzMywuNjY2LDFdLFsxLDEsMF0sWzAsLjEsMF0sWzEsMSwxXSxbMCwuMDY2LC4xMzNdXSxbWy4xNSwuMDUsLjE1XSxbLjk1LDEsLjldLFsuMTYsLjEsLjE1XSxbMSwuOCwwXSxbLjgsLjcsLjddXSxbWzEsLjI1LC40XSxbMSwuMywuNV0sWy4yMiwuMiwuMjVdLFsxLDEsMV0sWy44LC43LC43XV0sW1suMzQxLC4xODgsLjk3Nl0sWy4xMzMsMCwuMl0sWzEsLjEwOSwuMjk4XSxbMSwxLDFdLFsxLDEsMV1dLFtbLjA2NiwuMTMzLC4yXSxbLjMzMywwLDFdLFsxLC4yLDBdLFsuMiwuNzMzLC40XSxbMSwxLDFdXSxbWy4xLC4xLC4yNV0sWzAsMCwxXSxbMSwuMSwuMl0sWzEsMSwxXSxbMCwwLDBdXV07dmFyIFduLFBhLHhuLGduLGJuLFp0LHphLHZuLEduLGVuLFNuLFZuLEZuLFJhLHVuLE9uLEtuLERuLFluLExuLHdhLFhuLEpuLFpuLGVhLHRhLE5uLEFhLG5hLGFhLHNhLGlhLGNhLE1uLG9hLHJhLEJuLEVuLEluO2NsYXNzIElje2NvbnN0cnVjdG9yKG4sdCxhLHMsbSxwPSExLFM9ITEsUD0hMSxNPSEwKXtDZSh0aGlzLExuKTtDZSh0aGlzLE5uKTtDZSh0aGlzLFduLFsiZmFkZXIiLCJzbGlkZSJdKTtDZSh0aGlzLFBhLCExKTtDZSh0aGlzLHhuLDM3MzcpO0NlKHRoaXMsZ24sMCk7Q2UodGhpcyxibixbXSk7Q2UodGhpcyxadCwiQSIpO0NlKHRoaXMsemEsITEpO0NlKHRoaXMsdm4sITEpO0NlKHRoaXMsR24sITEpO0NlKHRoaXMsZW4sITEpO0NlKHRoaXMsU24sMTIwKTtDZSh0aGlzLFZuLCExKTtDZSh0aGlzLEZuLCEwKTtDZSh0aGlzLFJhLHZvaWQgMCk7Q2UodGhpcyx1bixudWxsKTtjbih0aGlzLCJwbGF5aW5nIiwhMCk7Y24odGhpcywiaGlkZUN1cnNvciIsbj0+e3RoaXMuYWN0aXZlPSExLHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpfSk7Q2UodGhpcyxPbixuPT57dGhpcy5hY3RpdmV8fCh0aGlzLmFjdGl2ZT0hMCx0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSksdGhpcy5jdXJzb3JUaW1lciYmKGNsZWFyVGltZW91dCh0aGlzLmN1cnNvclRpbWVyKSx0aGlzLmN1cnNvclRpbWVyPXNldFRpbWVvdXQodGhpcy5oaWRlQ3Vyc29yLHRoaXMuY3Vyc29yRGVsYXkpKX0pO0NlKHRoaXMsS24sKCk9Pntkb2N1bWVudC5mdWxsc2NyZWVuRW5hYmxlZCYmKHRoaXMuZnNCdG49UnQoKSx0aGlzLmZzQnRuLmNsYXNzTGlzdC5hZGQoImZ1bGxzY3JlZW4iKSx0aGlzLmZzQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixMZSh0aGlzLEluKSksdGhpcy51aS5hcHBlbmQodGhpcy5mc0J0bikpfSk7Y24odGhpcywidG9QMyIsbj0+YGNvbG9yKGRpc3BsYXktcDMgJHtuLmpvaW4oIiAiKX0pYCk7Y24odGhpcywiZ2V0TW9ubyIsKCk9PnRoaXMuYncubWFwKG49PnRoaXMudG9QMyhuKSkpO0NlKHRoaXMsRG4sbj0+e24uYW5pbWF0aW9uTmFtZT09PSJieWUiP3duKHRoaXMsTG4sd2EpLmNhbGwodGhpcyxuLnRhcmdldCk6TGUodGhpcyxXbikuaW5jbHVkZXMobi5hbmltYXRpb25OYW1lKSYmbi50YXJnZXQucmVtb3ZlKCl9KTtDZSh0aGlzLFluLChuLHQpPT4oe2RlbGF5OnQqMTAwLGNvbG9yOnRoaXMucChbWzUwLDFdLFsxMCwyXSxbNywzXSxbMSw0XV0pLGhpZ2hsaWdodDp0aGlzLnAoW1sxMCwxXSxbMTAsMl0sWzcsM10sWzEsNF1dKSx3aWR0aDp0aGlzLnAoW1sxLDJdLFs1LDEwXSxbNyw1MF0sWzIsODBdLFsxMzcsMTAwXV0pLGhlaWdodDp0aGlzLnAoW1syMDAsMV0sWzEwMCwyXSxbMTAwLDIwXSxbMzcsNTBdLFsxNywzNzBdLFszLDUwMF0sWzEsMWUzXV0pfSkpO0NlKHRoaXMsWG4sKG4sdCk9Pntjb25zdCBhPVJ0KCk7cmV0dXJuIGEuc3R5bGUuc2V0UHJvcGVydHkoIi0tdyIsKG4ud2lkdGgtbi5yaWdodC1uLmxlZnQpLnRvRml4ZWQoMikrIiUiKSxuLmxlZnQ+MCYmKGEuc3R5bGUubWFyZ2luTGVmdD1uLmxlZnQudG9GaXhlZCgyKSsiJSIpLG4ucmlnaHQ+MCYmKGEuc3R5bGUubWFyZ2luUmlnaHQ9bi5yaWdodC50b0ZpeGVkKDIpKyIlIiksYS5zdHlsZS5oZWlnaHQ9bi5oZWlnaHQrInB4IixMZSh0aGlzLGVuKT09ITEmJihuLmhlaWdodD41JiYoYS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1kZWxheSIscm4odGhpcy5yKCkqMmUzKSsibXMiKSxhLnN0eWxlLnNldFByb3BlcnR5KCItLXNwZWVkIiwiMzAwMG1zIikpLHRoaXMucigpPi45NSYmbi5oZWlnaHQ+MTAmJmEuY2xhc3NMaXN0LmFkZCgiY2xpcCIpLGEuc3R5bGUuYW5pbWF0aW9uRGVsYXk9bi5kZWxheSo0KyJtcyIpLG4ubWFyZ2luPjEmJihhLnN0eWxlLm1hcmdpbkJvdHRvbT1uLm1hcmdpbisicHgiKSxMZSh0aGlzLFp0KT09IkEiJiYoYS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5jb2xvcnNbbi5jb2xvcl0pLG4uZGl2PWEsYX0pO0NlKHRoaXMsSm4sKG4sdCk9Pntjb25zdCBhPVJ0KCk7bi5hbGlnbiYmYS5jbGFzc0xpc3QuYWRkKCJ4ZW5kIiksbi5qdXN0aWZ5JiZhLmNsYXNzTGlzdC5hZGQoInllbmQiKSxuLnNwYW4+MSYmbi5zcGFuPD10aGlzLmZyLmxlbmd0aCYmYS5jbGFzc0xpc3QuYWRkKCJzIituLnNwYW4pO2NvbnN0IHM9bi5pdGVtcy5tYXAoTGUodGhpcyxYbikpO3JldHVybiBhLmFwcGVuZCguLi5zKSxhLnN0eWxlLmJhY2tncm91bmRJbWFnZT1gbGluZWFyLWdyYWRpZW50KCR7dGhpcy5jb2xvcnNbMV19LCR7dGhpcy5jb2xvcnNbMF19KWAsbi5kaXY9YSxhfSk7Q2UodGhpcyxabixuPT57dGhpcy5wYXJhbXM9bmV3IFVSTChkb2N1bWVudC5sb2NhdGlvbikuc2VhcmNoUGFyYW1zLHRoaXMuZ3JpZCYmdGhpcy5ncmlkLnJlbW92ZSgpLHRoaXMuZ3JpZD1SdCgpLHRoaXMuZ3JpZC5jbGFzc0xpc3QuYWRkKCJkb21ncmlkIik7Y29uc3QgdD10aGlzLmZyLm1hcChhPT5hKyJmciIpLmpvaW4oIiAiKTt0aGlzLmdyaWQuc3R5bGUuZ3JpZFRlbXBsYXRlQ29sdW1ucz10LHRoaXMuY29udGFpbmVyLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yc1swXSx0aGlzLmNvbnRhaW5lci5zdHlsZS5jb2xvcj10aGlzLmNvbG9yc1sxXSxuLm1hcChhPT50aGlzLmdyaWQuYXBwZW5kKC4uLmEubWFwKExlKHRoaXMsSm4pKSkpLHRoaXMuZnJhZz1uZXcgRG9jdW1lbnRGcmFnbWVudCx0aGlzLmZyYWcuYXBwZW5kKHRoaXMuZ3JpZCksdGhpcy51aT90aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGhpcy5mcmFnLHRoaXMudWkpOnRoaXMuY29udGFpbmVyLmFwcGVuZCh0aGlzLmZyYWcpLHRoaXMub3ZlcmxheT1SdCgpLHRoaXMub3ZlcmxheS5jbGFzc0xpc3QuYWRkKCJvdmVybGF5IiksdGhpcy5vdmVybGF5LnN0eWxlLnNldFByb3BlcnR5KCItLWxlbmd0aCIsbG4odGhpcy5yKCkqMzcrMikpLHRoaXMub3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1yb3dzIixsbih0aGlzLnIoKSozNys3KSsidmgiKSx0aGlzLmdyaWQuYXBwZW5kKHRoaXMub3ZlcmxheSksdGhpcy5zdHVmZj1BcnJheShsbih0aGlzLnIoKSoyMCszKSkuZmlsbCgwKS5tYXAoUnQpLHRoaXMuc3R1ZmYubWFwKChhLHMpPT5hLnN0eWxlLnRyYW5zaXRpb25EZWxheT1zKjUwKyJtcyIpLHRoaXMuc3R1ZmYuZmlsdGVyKGE9PnRoaXMucigpPi41KS5tYXAoKGEscyk9PmEuc3R5bGUuanVzdGlmeVNlbGY9ImVuZCIpLHRoaXMub3ZlcmxheS5hcHBlbmQoLi4udGhpcy5zdHVmZil9KTtDZSh0aGlzLGVhLG49Pntjb25zdCB0PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModCwic3ZnIik7YS5zZXRBdHRyaWJ1dGUoInhtbG5zIix0KSxhLnNldEF0dHJpYnV0ZSgidmlld0JveCIsIjAgMCA1MDAgNTAwIiksYS5zdHlsZS5iYWNrZ3JvdW5kPXRoaXMuY29sb3JzWzBdLHRoaXMucm9vdC5wcmVwZW5kKGEpO2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQsImRlZnMiKSxtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LCJsaW5lYXJHcmFkaWVudCIpO20uaWQ9YGcke3RoaXMuaWR9YCxtLnNldEF0dHJpYnV0ZSgieDEiLCIwIiksbS5zZXRBdHRyaWJ1dGUoIngyIiwiMCIpLG0uc2V0QXR0cmlidXRlKCJ5MSIsIjAiKSxtLnNldEF0dHJpYnV0ZSgieTIiLCIxIiksW3RoaXMuY29sb3JzWzFdLHRoaXMuY29sb3JzWzBdXS5tYXAoKGMsZCk9Pntjb25zdCBnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LCJzdG9wIik7Zy5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLHRoaXMuY29sb3JzWzEtZF0pLGcuc2V0QXR0cmlidXRlKCJvZmZzZXQiLGQqMTAwKyIlIiksbS5hcHBlbmQoZyl9KSxzLmFwcGVuZENoaWxkKG0pLGEuYXBwZW5kQ2hpbGQocyk7Y29uc3QgcD0oYyxkLGcsdSxiLGgsZix5KT0+e2NvbnN0IF89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQsInJlY3QiKTtfLnNldEF0dHJpYnV0ZSgieCIscm4oZCtoKSksXy5zZXRBdHRyaWJ1dGUoInkiLGxuKGcpKSxfLnNldEF0dHJpYnV0ZSgid2lkdGgiLEFuKDAscm4odS1oLWYpKSksXy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbG4oYikpLF8uc2V0QXR0cmlidXRlKCJmaWxsIix0aGlzLmNvbG9yc1t5LmNvbG9yXSksYy5hcHBlbmQoXyl9LFM9NTAwLFA9dGhpcy5mci5yZWR1Y2UoKGMsZCk9PmMrZCksTT10aGlzLmZyLm1hcChjPT5jL1AqUyk7bGV0IFQ9MDtjb25zdCBHPVswXTtNLm1hcChjPT5HLnB1c2goVCs9YykpO2xldFtFLExdPVswLDBdLHg9MCxPPTAsdz0wO2NvbnN0IG89bi5zbGljZSgwLEFuKDIwLG4ubGVuZ3RoKSksQz0yO2ZvcihsZXQgYz0wO2M8by5sZW5ndGg7YysrKWZvcihsZXQgZD0wO2Q8b1tjXS5sZW5ndGg7ZCsrKXtpZih4PlMpcmV0dXJuO0U9R1tPJU0ubGVuZ3RoXSxPJU0ubGVuZ3RoPT09MCYmKHc9eCtDKTtjb25zdCBnPU1bTyVNLmxlbmd0aF0vMTAwO0w9dztjb25zdCB1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LCJyZWN0Iik7dS5zZXRBdHRyaWJ1dGUoIngiLEUpLHUuc2V0QXR0cmlidXRlKCJ5IixMKSx1LnNldEF0dHJpYnV0ZSgid2lkdGgiLGcqMTAwKSx1LnNldEF0dHJpYnV0ZSgiZmlsbCIsYHVybCgjZyR7dGhpcy5pZH0pYCksYS5hcHBlbmQodSksb1tjXVtkXS5pdGVtcy5tYXAoYj0+e2NvbnN0IGg9ZyooMTAwLWIud2lkdGgpLGY9Yi5sZWZ0KmcseT1iLnJpZ2h0Kmc7cChhLG9bY11bZF0uYWxpZ24/RStoOkUsTCxBbihnKmIud2lkdGgtQywwKSxiLmhlaWdodCxmLHksYiksTCs9Yi5oZWlnaHQrQ30pLHUuc2V0QXR0cmlidXRlKCJoZWlnaHQiLEwpLE8rKyx4PUFuKEwseCl9fSk7Q2UodGhpcyx0YSwoKT0+e2NvbnN0IG49W1szNywuNjE4MDQ2OTcxNTY5ODM5Ml0sWzI3LDFdLFsxMCwxLjYxOF0sWzUsM10sWzE1LDddLFsxLDI1XV0sdD10aGlzLnAoW1s3LDNdLFs3LDJdLFszLDVdLFs1LDddLFsxLDEwXSxbMSwxN11dKSxhPXRoaXMucigpPi45O3JldHVybiBBcnJheSh0KS5maWxsKCkubWFwKHM9PmE/MTp0aGlzLnAobikpfSk7Q2UodGhpcyxuYSxuPT57dGhpcy5jb21wTGluZS5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZSgwLCR7TGUodGhpcyxnbikqMn1weClgLChMZSh0aGlzLGduKSsxKSUyPT0wJiZMZSh0aGlzLGNhKS5jYWxsKHRoaXMpO2NvbnN0IHQ9cm4obi5kZXRhaWwpO3RoaXMubG9vcExpbmVLZXlzPVt7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0se3RyYW5zZm9ybToidHJhbnNsYXRlWSgxMDB2aCkifV0sdGhpcy5sb29wTGluZS5hbmltYXRlKHRoaXMubG9vcExpbmVLZXlzLHtkdXJhdGlvbjp0fSksdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZSgicm90IiksTGEodGhpcyxnbikuXysrfSk7Q2UodGhpcyxhYSwobix0KT0+e24uaXRlbXMubWFwKChhLHMpPT57YS5oZWlnaHQ8NT93bih0aGlzLExuLHdhKS5jYWxsKHRoaXMsYS5kaXYpOmEuZGl2LmNsYXNzTGlzdC5hZGQoImJ5ZSIpfSl9KTtDZSh0aGlzLHNhLG49Pntjb25zdCB0PXRoaXMuZGF0YS5sZW5ndGgvdGhpcy5zaXplKjEwMDt0aGlzLnNpemVMaW5lLnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKDAsJHt0fXZoKWAsdGhpcy5kYXRhLmxlbmd0aD4wPyh0aGlzLmRhdGEuc2hpZnQoKS5tYXAoKHMsbSk9PkxlKHRoaXMsYWEpLmNhbGwodGhpcyxzLG0pKSx0aGlzLmRhdGEubGVuZ3RoPjQmJnRoaXMuZGF0YVs0XS5tYXAoKHMsbSk9PnMuaXRlbXMubWFwKHA9PnAuZGl2LmNsYXNzTGlzdC5hZGQoImFuaSIpKSkpOnRoaXMuZGF0YT10aGlzLmRhdGEuY29uY2F0KHduKHRoaXMsTm4sQWEpLmNhbGwodGhpcykpfSk7Q2UodGhpcyxpYSwobix0KT0+e24uaXRlbXMubWFwKChhLHMpPT57c2V0VGltZW91dCgoKT0+e2EuZGl2LnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yc1thLmhpZ2hsaWdodF19LHMqMTMwKX0pfSk7Q2UodGhpcyxjYSxuPT57Y29uc3QgdD1ybih0aGlzLnIoKSo1KzEpO3RoaXMuZGF0YS5zbGljZSgwLEFuKDEwLHRoaXMuZGF0YS5sZW5ndGgpKS5tYXAocz0+cy5tYXAobT0+TGUodGhpcyxpYSkuY2FsbCh0aGlzLG0sdCkpKX0pO0NlKHRoaXMsTW4sKCk9PntpZighTGUodGhpcyx2bikpe2NvbnN0IG49UnQoImxheWVyIiksdD1be29wYWNpdHk6MH1dLGE9cz0+e3p0KHRoaXMsdm4sITEpLG4ucmVtb3ZlKCl9O3p0KHRoaXMsdm4sITApLHRoaXMudWkuYXBwZW5kKG4pLG4uYW5pbWF0ZSh0LHtkdXJhdGlvbjozZTN9KS5vbmZpbmlzaD1hfX0pO0NlKHRoaXMsb2EsKCk9PntpZih0aGlzLnRpY2srKyx0aGlzLnRpY2slMj09PTApe2NvbnN0IG49UnQoKTtuLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yc1sxXSxuLnN0eWxlLmFuaW1hdGlvbkR1cmF0aW9uPSIzMDBtcyIsbi5jbGFzc0xpc3QuYWRkKCJzbGlkZSIpLHRoaXMuY29udGFpbmVyLnByZXBlbmQobil9fSk7Q2UodGhpcyxyYSwoKT0+e3RyeXtMZSh0aGlzLEJuKS5jYWxsKHRoaXMpfWNhdGNoe316dCh0aGlzLHVuLHNldEludGVydmFsKCgpPT57dmFyIG4sdCxhO3RyeXtjb25zdCBzPShhPSh0PShuPXRoaXMuYXVkaW8pPT1udWxsP3ZvaWQgMDpuLmVuZ2luZSk9PW51bGw/dm9pZCAwOnQuc2NoZWR1bGVyKT09bnVsbD92b2lkIDA6YS5hdWRpb0NvbnRleHQsbT1zPT1udWxsP3ZvaWQgMDpzLnN0YXRlO3MmJm0mJm0hPT0icnVubmluZyImJmxvY2F0aW9uLnJlbG9hZCgpfWNhdGNoe319LDZlMykpfSk7Q2UodGhpcyxCbiwoKT0+e0xlKHRoaXMsdW4pJiYoY2xlYXJJbnRlcnZhbChMZSh0aGlzLHVuKSksenQodGhpcyx1bixudWxsKSl9KTtDZSh0aGlzLEVuLG49PmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIj90aGlzLnJlc3VtZSgpOnRoaXMucGF1c2UoKSk7Q2UodGhpcyxJbiwoKT0+e3RoaXMuY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuJiYoZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQ/ZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTp0aGlzLmNvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpKX0pO2NuKHRoaXMsImV4aXQiLCgpPT57dHJ5e0xlKHRoaXMsQm4pLmNhbGwodGhpcyl9Y2F0Y2h7fXRyeXt0aGlzLmF1ZGlvJiZ0aGlzLl9vbkF1ZGlvUnVubmluZyYmdGhpcy5hdWRpby5vZmYoImF1ZGlvUnVubmluZyIsdGhpcy5fb25BdWRpb1J1bm5pbmcpLHRoaXMuYXVkaW8mJnRoaXMuX29uQXVkaW9TdG9wcGVkJiZ0aGlzLmF1ZGlvLm9mZigiYXVkaW9TdG9wcGVkIix0aGlzLl9vbkF1ZGlvU3RvcHBlZCl9Y2F0Y2h7fXRoaXMuYXVkaW8mJih0aGlzLmF1ZGlvLmRpc3Bvc2UoKSx0aGlzLmF1ZGlvPW51bGwpLHRoaXMubWFya2VyVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMubWFya2VyVGltZW91dCksdGhpcy5jdXJzb3JUaW1lciYmKGNsZWFyVGltZW91dCh0aGlzLmN1cnNvclRpbWVyKSx0aGlzLmN1cnNvclRpbWVyPW51bGwpLHRoaXMuY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixMZSh0aGlzLE1uKSksdGhpcy5jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixMZSh0aGlzLERuKSksdGhpcy5jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLExlKHRoaXMsT24pKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixMZSh0aGlzLEVuKSk7dHJ5e3RoaXMuX29uUGFnZUhpZGUmJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLHRoaXMuX29uUGFnZUhpZGUpLHRoaXMuX29uUGFnZUhpZGU9bnVsbCksdGhpcy5fb25CZWZvcmVVbmxvYWQmJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIix0aGlzLl9vbkJlZm9yZVVubG9hZCksdGhpcy5fb25CZWZvcmVVbmxvYWQ9bnVsbCl9Y2F0Y2h7fXRoaXMuZnNCdG4mJnRoaXMuZnNCdG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLExlKHRoaXMsSW4pKSx0aGlzLmNvbnRhaW5lci5yZW1vdmUoKX0pO3ZhciBULEc7cmV0dXJuIHRoaXMuaWQ9bixjb25zb2xlLmxvZyhgRE9NMyAke259JHt0fSAke3M/cysiQlBNIjoiIn0ke2E/IiAoQWx0ZXJuYXRlKSI6IiJ9IGApLHRoaXMucm9vdD1tLChHPShUPXRoaXMucm9vdCk9PW51bGw/dm9pZCAwOlQuY2xhc3NMaXN0KT09bnVsbHx8Ry5hZGQoImRvbSIpLHp0KHRoaXMsWnQsdCksenQodGhpcyxWbixwKSx6dCh0aGlzLEduLFMpLHp0KHRoaXMsZW4sUCksenQodGhpcyxGbixNKSx0aGlzLnI9eHModGhpcy5pZCtMZSh0aGlzLHhuKSsoYT8xNTA6MCkpLHRoaXMucGljaz1FPT5FW3JuKHRoaXMucigpKkUubGVuZ3RoKV0scz09bnVsbD96dCh0aGlzLFNuLHJuKHRoaXMucigpKjEwMCs2MCkpOnp0KHRoaXMsU24scyksdGhpcy5idz10aGlzLnIoKT4uNT9bMCwxXTpbMSwwXSx0aGlzLmJ3PXRoaXMuYncubWFwKEU9PkU9W0UsRSxFXSksdGhpcy5jb250YWluZXI9UnQoKSx0aGlzLmNvbnRhaW5lci5pZD10aGlzLmlkK0xlKHRoaXMsWnQpLExlKHRoaXMsR24pJiZ0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJub3Njcm9sbCIpLHRoaXMucm9vdC5hcHBlbmQodGhpcy5jb250YWluZXIpLHRoaXMuZGF0YT1bXSx0aGlzLnRpY2s9MCx0aGlzLmNvbG9ycz1MZSh0aGlzLFp0KT09PSJBIj90aGlzLnBpY2soRWMpOnRoaXMuYncsdGhpcy5jb2xvcnM9dGhpcy5jb2xvcnMubWFwKChFLEwpPT50aGlzLnRvUDMoRSkpLHduKHRoaXMsTm4sQWEpLmNhbGwodGhpcyksTGUodGhpcyxlbil8fHRoaXMuaW5pdCgpLHRoaXN9cChuKXtyZXR1cm4gUG49MCxuLm1hcCh0PT50WzBdPVBuKz10WzBdKSxQbj10aGlzLnIoKSpQbixuLmZpbHRlcih0PT5Qbjx0WzBdKVswXS5zbGljZSgxKVswXX1pbml0KCl7Y29uc3Qgbj10aGlzLnAoW1s3LDIwMF0sWzM3LDUwMF0sWzIsMWUzXSxbNSwzZTNdLFsxLDVlM11dKTt0aGlzLnVpPVJ0KCJ1aSIpLHRoaXMubG9vcExpbmU9UnQoImJhciIpLHRoaXMuY29tcExpbmU9UnQoImJhciIpLHRoaXMuc2l6ZUxpbmU9UnQoImJhciIpLHRoaXMuc2l6ZUxpbmUuc3R5bGUudHJhbnNpdGlvbj0idHJhbnNmb3JtIDAuMnMgZWFzZSIsdGhpcy5jb250YWluZXIuc3R5bGUuY29sb3I9dGhpcy5jb2xvcnNbMl0sdGhpcy5jb250YWluZXIuYXBwZW5kKHRoaXMudWkpLHRoaXMubWFya2VyPVJ0KCJtYXJrZXIiKSx0aGlzLm1hcmtlclRpbWVvdXQ9c2V0VGltZW91dCgoKT0+dGhpcy5tYXJrZXIucmVtb3ZlKCksM2U0KSx0aGlzLnVpLmFwcGVuZCh0aGlzLmxvb3BMaW5lLHRoaXMuY29tcExpbmUsdGhpcy5zaXplTGluZSx0aGlzLm1hcmtlcik7Y29uc3QgdD0wLGE9MCxzPXtsb3dCcG06NjAsaGlnaEJwbToxODAsYWxwaGFBdExvdzoxLjI1LGFscGhhQXRIaWdoOi43NX0sbT17c29sb0ZtQmxpcDE6ITF9O2lmKHRoaXMuYXVkaW89bmV3IE5jKHRoaXMucix0aGlzLmlkLExlKHRoaXMsU24pLExlKHRoaXMsWnQpLHQsYSxzLG0se3BvaW50ZXJkb3duU3RhcnQ6TGUodGhpcyxGbikscG9pbnRlclRhcmdldDp0aGlzLmNvbnRhaW5lcixhdXRvc3RhcnQ6ITEsZGlhZ25vc3RpY3M6ITAscmVnZW5lcmF0ZU9uQ2xpY2s6ITAsaW5pdGlhbE1vZGU6InJhbmRvbSJ9KSx0aGlzLmF1ZGlvLm9uKCJjaGFuZ2VFdmVudCIsTGUodGhpcyxuYSkpLHRoaXMuX29uQXVkaW9SdW5uaW5nPSgpPT57dHJ5e0xlKHRoaXMscmEpLmNhbGwodGhpcyl9Y2F0Y2h7fX0sdGhpcy5fb25BdWRpb1N0b3BwZWQ9KCk9Pnt0cnl7TGUodGhpcyxCbikuY2FsbCh0aGlzKX1jYXRjaHt9fSx0aGlzLmF1ZGlvLm9uKCJhdWRpb1J1bm5pbmciLHRoaXMuX29uQXVkaW9SdW5uaW5nKSx0aGlzLmF1ZGlvLm9uKCJhdWRpb1N0b3BwZWQiLHRoaXMuX29uQXVkaW9TdG9wcGVkKSxMZSh0aGlzLFZuKSl0cnl7dGhpcy5hdWRpby5zdGFydCgpLHRoaXMucGxheWluZz0hMH1jYXRjaHt0aGlzLnBsYXlpbmc9ITF9ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsTGUodGhpcyxFbikpO2xldCBwPTA7dGhpcy5hdWRpby5vbigiY2xpY2tzIiwoKT0+e3AlOD09MCYmTGUodGhpcyxNbikuY2FsbCh0aGlzKSxwKyt9KSx0aGlzLmF1ZGlvLm9uKCJraWNrIixMZSh0aGlzLHNhKSksdGhpcy5hdWRpby5vbigidGVjaG5vU3RhYiIsTGUodGhpcyxvYSkpLHRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixMZSh0aGlzLE1uKSksdGhpcy5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIixMZSh0aGlzLERuKSksdGhpcy5jb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoIi0tZHVyYXRpb24iLG4rIm1zIikscmVxdWVzdEFuaW1hdGlvbkZyYW1lKExlKHRoaXMsS24pKSx0aGlzLmFjdGl2ZT0hMSx0aGlzLmN1cnNvclRpbWVyLHRoaXMuY3Vyc29yRGVsYXk9N2UzLHRoaXMuY3Vyc29yVGltZXI9c2V0VGltZW91dCh0aGlzLmhpZGVDdXJzb3IsdGhpcy5jdXJzb3JEZWxheSksdGhpcy5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLExlKHRoaXMsT24pKSx0aGlzLmNvbnRhaW5lci5zY3JvbGwoe3RvcDowLGxlZnQ6MCxiZWhhdmlvcjoiaW5zdGFudCJ9KTt0cnl7dGhpcy5fb25QYWdlSGlkZT0oKT0+e3RyeXt0aGlzLmV4aXQoKX1jYXRjaHt9fSx0aGlzLl9vbkJlZm9yZVVubG9hZD0oKT0+e3RyeXt0aGlzLmV4aXQoKX1jYXRjaHt9fSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLHRoaXMuX29uUGFnZUhpZGUse29uY2U6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIix0aGlzLl9vbkJlZm9yZVVubG9hZCx7b25jZTohMH0pfWNhdGNoe310cnl7fWNhdGNoe31yZXR1cm4gdGhpc31nZW5lcmF0ZShuKXtsZXQgdD0wLGE9MSt0aGlzLnIoKSo1O3RoaXMucigpPi41JiYoYT0wKTtjb25zdCBzPVtdO2ZvcihsZXQgbT0wO208bjttKyspe2NvbnN0IHA9dGhpcy5wKFtbNCw3XSxbMTAsMV0sWzM3LDNdLFsyLDM3XSxbMSw1MF1dKSxTPXRoaXMucChbWzIwLDFdLFsyMCwyXSxbNSwzXSxbNyw0XSxbMSw1XSxbMywzN10sWzEsMzcqMl0sWzEsMzcqM10sWzcsMzcqN11dKTtpZih0Kz1wKlMsdD43ZTMpYnJlYWs7Y29uc3QgUD10aGlzLnIoKT4uNSxNPXRoaXMucigpPi41LFQ9dGhpcy5wKFtbNTAsMV0sWzcsMl0sWzIsM10sWzEsNV1dKSxHPTEsRT1BcnJheShwKS5maWxsKDApLm1hcChMZSh0aGlzLFluKSksTD1PPT4oe2FsaWduOlAsanVzdGlmeTpNLG1hcmdpbjpHLGl0ZW1zOkUubWFwKHc9Pk9iamVjdC5hc3NpZ24oe30sdykpLHNwYW46VH0pLHg9QXJyYXkoUykuZmlsbCgwKS5tYXAoTCk7aWYoeC5tYXAoTz0+Ty5pdGVtcy5tYXAodz0+e3cubGVmdD10aGlzLnIoKT4uOT90aGlzLnIoKSphOjAsdy5yaWdodD10aGlzLnIoKT4uOT90aGlzLnIoKSphOjB9KSksdGhpcy5yKCk+LjM3KXtjb25zdCBPPWxuKHRoaXMucigpKjQpO3guZmlsdGVyKCh3LG8pPT5vJU8pLm1hcCh3PT53LmFsaWduPSF3LmFsaWduKX10aGlzLnIoKT4uNSYmKHRoaXMucGljayh0aGlzLnBpY2soeCkuaXRlbXMpLndpZHRoPWxuKHRoaXMucigpKjEwMCkpLHMucHVzaCh4KX1yZXR1cm4gc31wYXVzZShuKXt0aGlzLnBsYXlpbmcmJih0aGlzLmF1ZGlvJiZ0aGlzLmF1ZGlvLnBhdXNlKCksenQodGhpcyxibix0aGlzLmNvbnRhaW5lci5nZXRBbmltYXRpb25zKHtzdWJ0cmVlOiEwfSkuZmlsdGVyKHQ9PnQucGxheVN0YXRlPT09InJ1bm5pbmciKSksTGUodGhpcyxibikubWFwKHQ9PnQucGF1c2UoKSksdGhpcy5wbGF5aW5nPSExKX1yZXN1bWUobil7dGhpcy5wbGF5aW5nP3RoaXMuYXVkaW8mJnRoaXMuYXVkaW8uZW5naW5lJiZ0aGlzLmF1ZGlvLmVuZ2luZS5zY2hlZHVsZXImJnRoaXMuYXVkaW8uZW5naW5lLnNjaGVkdWxlci5zdGF0ZSYmIXRoaXMuYXVkaW8uZW5naW5lLnNjaGVkdWxlci5zdGF0ZS5pc1J1bm5pbmcmJnRoaXMuYXVkaW8uc3RhcnQoKToodGhpcy5hdWRpby5yZXN1bWUoKSxMZSh0aGlzLGJuKS5tYXAodD0+dC5wbGF5KCkpLHRoaXMucGxheWluZz0hMCl9fVduPW5ldyBXZWFrTWFwLFBhPW5ldyBXZWFrTWFwLHhuPW5ldyBXZWFrTWFwLGduPW5ldyBXZWFrTWFwLGJuPW5ldyBXZWFrTWFwLFp0PW5ldyBXZWFrTWFwLHphPW5ldyBXZWFrTWFwLHZuPW5ldyBXZWFrTWFwLEduPW5ldyBXZWFrTWFwLGVuPW5ldyBXZWFrTWFwLFNuPW5ldyBXZWFrTWFwLFZuPW5ldyBXZWFrTWFwLEZuPW5ldyBXZWFrTWFwLFJhPW5ldyBXZWFrTWFwLHVuPW5ldyBXZWFrTWFwLE9uPW5ldyBXZWFrTWFwLEtuPW5ldyBXZWFrTWFwLERuPW5ldyBXZWFrTWFwLFluPW5ldyBXZWFrTWFwLExuPW5ldyBXZWFrU2V0LHdhPWZ1bmN0aW9uKG4pe2NvbnN0IHQ9bi5wYXJlbnROb2RlOyh0LnBhcmVudE5vZGUuY2hpbGRyZW4ubGVuZ3RoPDM/dC5wYXJlbnROb2RlOnQuY2hpbGRyZW4ubGVuZ3RoPT09MT90Om4pLnJlbW92ZSgpfSxYbj1uZXcgV2Vha01hcCxKbj1uZXcgV2Vha01hcCxabj1uZXcgV2Vha01hcCxlYT1uZXcgV2Vha01hcCx0YT1uZXcgV2Vha01hcCxObj1uZXcgV2Vha1NldCxBYT1mdW5jdGlvbigpe3RoaXMuci5zaHVmZmxlKHRoaXMuY29sb3JzKSx0aGlzLmZyPUxlKHRoaXMsdGEpLmNhbGwodGhpcyksdGhpcy5kYXRhPXRoaXMuZ2VuZXJhdGUoTGUodGhpcyxlbik/MjA6MzcpLHRoaXMuc2l6ZT10aGlzLmRhdGEubGVuZ3RoO2xldCBuPTA7cmV0dXJuIHRoaXMuZGF0YS5mbGF0KCkubWFwKGE9PmEuaXRlbXMubGVuZ3RoKS5tYXAoYT0+bis9YSksTGUodGhpcyxlbik/TGUodGhpcyxlYSkuY2FsbCh0aGlzLHRoaXMuZGF0YSk6TGUodGhpcyxabikuY2FsbCh0aGlzLHRoaXMuZGF0YSksdGhpcy5kYXRhfSxuYT1uZXcgV2Vha01hcCxhYT1uZXcgV2Vha01hcCxzYT1uZXcgV2Vha01hcCxpYT1uZXcgV2Vha01hcCxjYT1uZXcgV2Vha01hcCxNbj1uZXcgV2Vha01hcCxvYT1uZXcgV2Vha01hcCxyYT1uZXcgV2Vha01hcCxCbj1uZXcgV2Vha01hcCxFbj1uZXcgV2Vha01hcCxJbj1uZXcgV2Vha01hcDtjb25zdCBOdD1uZXcgVVJMKGRvY3VtZW50LmxvY2F0aW9uKS5zZWFyY2hQYXJhbXMsamM9TnQuaGFzKCJyZWxvYWQiKTtpZihqYyl7Y29uc3QgZT0rTnQuZ2V0KCJyZWxvYWQiKTtpZighaXNOYU4oZSkpe2NvbnNvbGUubG9nKCJSRUxPQUQgSU4gIitlKTtjb25zdCBuPU1hdGgubWF4KDMsZSkqMWUzO3NldFRpbWVvdXQoKCk9PmxvY2F0aW9uLnJlbG9hZCgpLG4pfX1jb25zdCBGcz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIik7aWYoRnMpe2xldCBlPU50LmhhcygiaWQiKT9OdC5nZXQoImlkIik6TWF0aC5mbG9vcihOKCkqMmUzKSxuPU50Lmhhcygibm9zY3JvbGwiKSx0PU50Lmhhcygibm9hdWRpbyIpLGE9TnQuaGFzKCJhbHQiKSxzPU50Lmhhcygic2lkZSIpP050LmdldCgic2lkZSIpLnRvVXBwZXJDYXNlKCk6IkEiLG09TnQuaGFzKCJicG0iKT8rTnQuZ2V0KCJicG0iKTpudWxsO3dpbmRvdy5kYXRhJiYod2luZG93LmRhdGEuaWQmJihlPXdpbmRvdy5kYXRhLmlkKSx3aW5kb3cuZGF0YS5hbHQmJihhPXdpbmRvdy5kYXRhLmFsdCksd2luZG93LmRhdGEuc2lkZSYmKHM9d2luZG93LmRhdGEuc2lkZSksd2luZG93LmRhdGEuYWx0JiYoYT13aW5kb3cuZGF0YS5hbHQpLHdpbmRvdy5kYXRhLmJwbSYmKG09d2luZG93LmRhdGEuYnBtKSx3aW5kb3cuZGF0YS5ub2F1ZGlvJiYodD13aW5kb3cuZGF0YS5ub2F1ZGlvKSx3aW5kb3cuZGF0YS5ub3Njcm9sbCYmKG49d2luZG93LmRhdGEubm9zY3JvbGwpKSxuZXcgSWMoZSxzLGEsbSxGcywhMCxuLHQpfQo8L3NjcmlwdD48L2JvZHk+PC9odG1sPg=="}