pear-electron 1.7.27 → 1.7.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ // boot.bundle generated from commit matching live f688d0b825a5e18a8b761ca42a515b95c8bf0b65
2
+ module.exports = 'NTg2MTcKeyJ2ZXJzaW9uIjowLCJpZCI6bnVsbCwibWFpbiI6Ii9ib290LmpzIiwiaW1wb3J0cyI6e30sInJlc29sdXRpb25zIjp7Ii9hcGkuanMiOnsiI3BhY2thZ2UiOiIvcGFja2FnZS5qc29uIiwiZXZlbnRzIjoiYnVpbHRpbjpldmVudHMiLCJoeXBlcmNvcmUtaWQtZW5jb2RpbmciOiIvbm9kZV9tb2R1bGVzL2h5cGVyY29yZS1pZC1lbmNvZGluZy9pbmRleC5qcyIsInBlYXItYXBpL2NvbnN0YW50cyI6Ii9ub2RlX21vZHVsZXMvcGVhci1hcGkvY29uc3RhbnRzLmpzIiwic3RyZWFteCI6Ii9ub2RlX21vZHVsZXMvc3RyZWFteC9pbmRleC5qcyJ9LCIvYm9vdC5qcyI6eyIjcGFja2FnZSI6Ii9wYWNrYWdlLmpzb24iLCIuL2VsZWN0cm9uLW1haW4uanMiOiIvZWxlY3Ryb24tbWFpbi5qcyIsIi4vcHJlbG9hZC5qcyI6Ii9wcmVsb2FkLmpzIiwicGVhci1hcGkvY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jb25zdGFudHMuanMiLCJ3aGljaC1ydW50aW1lIjoiL25vZGVfbW9kdWxlcy93aGljaC1ydW50aW1lL2luZGV4LmpzIn0sIi9lbGVjdHJvbi1tYWluLmpzIjp7IiNwYWNrYWdlIjoiL3BhY2thZ2UuanNvbiIsIi4vZ3VpIjoiL2d1aS9pbmRleC5qcyIsImVsZWN0cm9uIjoiYnVpbHRpbjplbGVjdHJvbiIsInBhcGFyYW0iOiIvbm9kZV9tb2R1bGVzL3BhcGFyYW0vaW5kZXguanMiLCJwZWFyLWFwaSI6Ii9ub2RlX21vZHVsZXMvcGVhci1hcGkvaW5kZXguanMiLCJwZWFyLWFwaS9jbWQvcnVuIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jbWQvcnVuLmpzIiwicGVhci1hcGkvY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jb25zdGFudHMuanMiLCJwZWFyLWFwaS9jcmFzaGVyIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jcmFzaGVyLmpzIiwicGVhci1hcGkvc3RhdGUiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3N0YXRlLmpzIiwicGVhci1hcGkvdHJ5Ym9vdCI6Ii9ub2RlX21vZHVsZXMvcGVhci1hcGkvdHJ5Ym9vdC5qcyIsIndoaWNoLXJ1bnRpbWUiOiIvbm9kZV9tb2R1bGVzL3doaWNoLXJ1bnRpbWUvaW5kZXguanMifSwiL2d1aS9kZWNhbC5qcyI6eyIjcGFja2FnZSI6Ii9wYWNrYWdlLmpzb24ifSwiL2d1aS9ndWkuanMiOnsiI3BhY2thZ2UiOiIvcGFja2FnZS5qc29uIiwiLi9kZWNhbCI6Ii9ndWkvZGVjYWwuanMiLCIuL2ljb25zL2JhZGdlLTEiOiIvZ3VpL2ljb25zL2JhZGdlLTEuanMiLCIuL2ljb25zL2JhZGdlLTIiOiIvZ3VpL2ljb25zL2JhZGdlLTIuanMiLCIuL2ljb25zL2JhZGdlLTMiOiIvZ3VpL2ljb25zL2JhZGdlLTMuanMiLCIuL2ljb25zL2JhZGdlLTQiOiIvZ3VpL2ljb25zL2JhZGdlLTQuanMiLCIuL2ljb25zL2JhZGdlLTUiOiIvZ3VpL2ljb25zL2JhZGdlLTUuanMiLCIuL2ljb25zL2JhZGdlLTYiOiIvZ3VpL2ljb25zL2JhZGdlLTYuanMiLCIuL2ljb25zL2JhZGdlLTciOiIvZ3VpL2ljb25zL2JhZGdlLTcuanMiLCIuL2ljb25zL2JhZGdlLTgiOiIvZ3VpL2ljb25zL2JhZGdlLTguanMiLCIuL2ljb25zL2JhZGdlLTkiOiIvZ3VpL2ljb25zL2JhZGdlLTkuanMiLCIuL2ljb25zL2JhZGdlLW1vcmUiOiIvZ3VpL2ljb25zL2JhZGdlLW1vcmUuanMiLCIuL2ljb25zL2xpbnV4IjoiL2d1aS9pY29ucy9saW51eC5qcyIsIi4vaWNvbnMvdHJheSI6Ii9ndWkvaWNvbnMvdHJheS5qcyIsImVsZWN0cm9uIjoiYnVpbHRpbjplbGVjdHJvbiIsImV2ZW50cyI6ImJ1aWx0aW46ZXZlbnRzIiwiaHlwZXJjb3JlLWlkLWVuY29kaW5nIjoiL25vZGVfbW9kdWxlcy9oeXBlcmNvcmUtaWQtZW5jb2RpbmcvaW5kZXguanMiLCJwYXRoIjoiYnVpbHRpbjpwYXRoIiwicGVhci1hcGkvY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jb25zdGFudHMuanMiLCJwZWFyLWlwYyI6Ii9ub2RlX21vZHVsZXMvcGVhci1pcGMvaW5kZXguanMiLCJyZWFkeS1yZXNvdXJjZSI6Ii9ub2RlX21vZHVsZXMvcmVhZHktcmVzb3VyY2UvaW5kZXguanMiLCJzdHJlYW14IjoiL25vZGVfbW9kdWxlcy9zdHJlYW14L2luZGV4LmpzIiwidW5peC1wYXRoLXJlc29sdmUiOiIvbm9kZV9tb2R1bGVzL3VuaXgtcGF0aC1yZXNvbHZlL2luZGV4LmpzIiwid2hpY2gtcnVudGltZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyJ9LCIvZ3VpL2ljb25zL2JhZGdlLTEuanMiOnsiI3BhY2thZ2UiOiIvcGFja2FnZS5qc29uIiwiZWxlY3Ryb24iOiJidWlsdGluOmVsZWN0cm9uIn0sIi9ndWkvaWNvbnMvYmFkZ2UtMi5qcyI6eyIjcGFja2FnZSI6Ii9wYWNrYWdlLmpzb24iLCJlbGVjdHJvbiI6ImJ1aWx0aW46ZWxlY3Ryb24ifSwiL2d1aS9pY29ucy9iYWRnZS0zLmpzIjp7IiNwYWNrYWdlIjoiL3BhY2thZ2UuanNvbiIsImVsZWN0cm9uIjoiYnVpbHRpbjplbGVjdHJvbiJ9LCIvZ3VpL2ljb25zL2JhZGdlLTQuanMiOnsiI3BhY2thZ2UiOiIvcGFja2FnZS5qc29uIiwiZWxlY3Ryb24iOiJidWlsdGluOmVsZWN0cm9uIn0sIi9ndWkvaWNvbnMvYmFkZ2UtNS5qcyI6eyIjcGFja2FnZSI6Ii9wYWNrYWdlLmpzb24iLCJlbGVjdHJvbiI6ImJ1aWx0aW46ZWxlY3Ryb24ifSwiL2d1aS9pY29ucy9iYWRnZS02LmpzIjp7IiNwYWNrYWdlIjoiL3BhY2thZ2UuanNvbiIsImVsZWN0cm9uIjoiYnVpbHRpbjplbGVjdHJvbiJ9LCIvZ3VpL2ljb25zL2JhZGdlLTcuanMiOnsiI3BhY2thZ2UiOiIvcGFja2FnZS5qc29uIiwiZWxlY3Ryb24iOiJidWlsdGluOmVsZWN0cm9uIn0sIi9ndWkvaWNvbnMvYmFkZ2UtOC5qcyI6eyIjcGFja2FnZSI6Ii9wYWNrYWdlLmpzb24iLCJlbGVjdHJvbiI6ImJ1aWx0aW46ZWxlY3Ryb24ifSwiL2d1aS9pY29ucy9iYWRnZS05LmpzIjp7IiNwYWNrYWdlIjoiL3BhY2thZ2UuanNvbiIsImVsZWN0cm9uIjoiYnVpbHRpbjplbGVjdHJvbiJ9LCIvZ3VpL2ljb25zL2JhZGdlLW1vcmUuanMiOnsiI3BhY2thZ2UiOiIvcGFja2FnZS5qc29uIiwiZWxlY3Ryb24iOiJidWlsdGluOmVsZWN0cm9uIn0sIi9ndWkvaWNvbnMvbGludXguanMiOnsiI3BhY2thZ2UiOiIvcGFja2FnZS5qc29uIiwiZWxlY3Ryb24iOiJidWlsdGluOmVsZWN0cm9uIn0sIi9ndWkvaWNvbnMvdHJheS5qcyI6eyIjcGFja2FnZSI6Ii9wYWNrYWdlLmpzb24iLCJlbGVjdHJvbiI6ImJ1aWx0aW46ZWxlY3Ryb24ifSwiL2d1aS9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9wYWNrYWdlLmpzb24iLCIuL2d1aSI6Ii9ndWkvZ3VpLmpzIiwiLi9wcmVsb2FkIjoiL2d1aS9wcmVsb2FkLmpzIn0sIi9ndWkvaXBjLmpzIjp7IiNwYWNrYWdlIjoiL3BhY2thZ2UuanNvbiIsImVsZWN0cm9uIjoiYnVpbHRpbjplbGVjdHJvbiIsInN0cmVhbXgiOiIvbm9kZV9tb2R1bGVzL3N0cmVhbXgvaW5kZXguanMifSwiL2d1aS9wcmVsb2FkLmpzIjp7IiNwYWNrYWdlIjoiL3BhY2thZ2UuanNvbiIsIi4uL2FwaSI6Ii9hcGkuanMiLCIuL2lwYyI6Ii9ndWkvaXBjLmpzIiwiZWxlY3Ryb24iOiJidWlsdGluOmVsZWN0cm9uIn0sIi9ub2RlX21vZHVsZXMvYjRhL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iNGEvcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvYjRhL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvYmFyZS1hZGRvbi1yZXNvbHZlL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLWFkZG9uLXJlc29sdmUvcGFja2FnZS5qc29uIiwiLi9saWIvZXJyb3JzIjoiL25vZGVfbW9kdWxlcy9iYXJlLWFkZG9uLXJlc29sdmUvbGliL2Vycm9ycy5qcyIsImJhcmUtbW9kdWxlLXJlc29sdmUiOiIvbm9kZV9tb2R1bGVzL2JhcmUtbW9kdWxlLXJlc29sdmUvaW5kZXguanMiLCJiYXJlLXNlbXZlciI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9iYXJlLWFkZG9uLXJlc29sdmUvbGliL2Vycm9ycy5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1hZGRvbi1yZXNvbHZlL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtYWRkb24tcmVzb2x2ZS9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZGFlbW9uL2JpbmRpbmcvYmFyZS5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1kYWVtb24vcGFja2FnZS5qc29uIiwiLi4iOnsiZGFyd2luIjp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4tYXJtNjQvYmUyYmE4ODcxOTE5ZGVkMGRkZDg4OGVmZGU0OTQ0YTUxODNiNTNjZDRjOTViMjA0MGZmNDdlNzMxMTk0NDg5My5ub2RlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4teDY0L2Y0MTRkZWFkMTA3YjI0ZTIyMjc5MzAwNzE0Y2I2YWZmYTUwNzhmNmRiZjI5YWFiOWY1NzRmNGE2ODIyNTRkMDkubm9kZSJ9LCJsaW51eCI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvbGludXgtYXJtNjQvYmM3OTM0NTBmYmFkZjIwNTUzZTc2ODU2NDI0Mzg2NDUxZjY2NzlkOGU1Yjk2MjE4ZjIwOGE0ZGRiMjJlOTgwOC5ub2RlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC14NjQvNzFlMDlmNjJmZjZmYjU4ZGZhN2U1NmY5MDIzNzkxMjAxMTRhOGZmZGJhZjg0OTFkNDM2NDY0MDRjZjkzYjNiZS5ub2RlIn0sIndpbjMyIjoiLy4uL3ByZWJ1aWxkcy93aW4zMi14NjQvZDcyNWIwM2I5ZDExYzczMmJiOTVmYzIxZTQ1N2U1YWJkMTQ1OTE1NjFjYWZkZWY0ZDcyNmYxZDFmMGJkZTFmYy5ub2RlIn19LCIvbm9kZV9tb2R1bGVzL2JhcmUtZGFlbW9uL2luZGV4LmpzIjp7IiNiaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLWRhZW1vbi9iaW5kaW5nL2JhcmUuanMiLCIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1kYWVtb24vcGFja2FnZS5qc29uIiwicHJvY2VzcyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wcm9jZXNzL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1kYWVtb24vcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9iYXJlLWVudi9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1lbnYvcGFja2FnZS5qc29uIiwiYmFyZS1vcyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1vcy9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZW52L3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvYmFyZS1ldmVudHMvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL3BhY2thZ2UuanNvbiIsIi4vbGliL2Vycm9ycyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1ldmVudHMvbGliL2Vycm9ycy5qcyJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL2xpYi9lcnJvcnMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvYmFyZS1mcy9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLWZzL3BhY2thZ2UuanNvbiIsIi4iOnsiZGFyd2luIjp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4tYXJtNjQvNGFiNmMxNjIxZjliY2UwZTlmYThmYzcwYTVjOWJkZTk0YTk0MmVlODJlMDU2NGQxY2JkYTY4NTVkNDI3NzE4Yy5iYXJlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4teDY0LzEzY2MzMjU4YjkyYWEyM2UxMjliNzkyYTU4MDg5ZDhjZGRkZGI1NGM0MmNkNDVhNmZlYWNhMjE5NmVjOGM3YjMuYmFyZSJ9LCJsaW51eCI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvbGludXgtYXJtNjQvYmVhYzcxZWE5NmIxZjk4MGUyYTQ1ZGYwYWMwZmZlZDNiY2VhNTZmZTI3MDEwNTFmMGVlNTEzMGRlMjUzNTQyMC5iYXJlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC14NjQvYTdjZTJiMjlmMDMzOTc2Y2Q0NzRmNmRhY2FmOGMwN2I5MWRmNTU3OTE2ZWVhZDhlODMzZTdhMTcyMDAyZTJjYi5iYXJlIn0sIndpbjMyIjoiLy4uL3ByZWJ1aWxkcy93aW4zMi14NjQvNzE4YWU5NDY4NWQxZDg4NjJlMTIzNTUyNTBlOTUwMDdjMmY4MTA2ZWNlYTU0ZWVlOTVhYWE1NjcxODNhNzZiZS5iYXJlIn19LCIvbm9kZV9tb2R1bGVzL2JhcmUtZnMvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZnMvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLWZzL2JpbmRpbmcuanMiLCIuL2xpYi9jb25zdGFudHMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZnMvbGliL2NvbnN0YW50cy5qcyIsImJhcmUtZXZlbnRzIjoiL25vZGVfbW9kdWxlcy9iYXJlLWV2ZW50cy9pbmRleC5qcyIsImJhcmUtcGF0aCI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL2luZGV4LmpzIiwiYmFyZS1zdHJlYW0iOiIvbm9kZV9tb2R1bGVzL2JhcmUtc3RyZWFtL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1mcy9saWIvY29uc3RhbnRzLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLWZzL3BhY2thZ2UuanNvbiIsIi4uL2JpbmRpbmciOiIvbm9kZV9tb2R1bGVzL2JhcmUtZnMvYmluZGluZy5qcyJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZnMvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9iYXJlLWhydGltZS9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLWhydGltZS9wYWNrYWdlLmpzb24iLCIuIjp7ImRhcndpbiI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvZGFyd2luLWFybTY0LzY0YTc3YWJjYmQ3MzRjYmMzZTg0ZTY4MDMxNTJjY2M3M2IxNDZiYzI2N2JlZDEzNmJlMDBjODZkYTg1YThkYzcuYmFyZSIsIng2NCI6Ii8uLi9wcmVidWlsZHMvZGFyd2luLXg2NC84OWQ3MGQyMWY1ODA0ZWNjNGMwMTlhNTU4YmQ2YjFmNjQ0MGNkNmFhMDgyMTc3OWU1MDcxMzk3MDU1MTgxYmRmLmJhcmUifSwibGludXgiOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LWFybTY0LzRkYmNiZTFlMjU2ZGRjNDZkNGFlOWVmNzZiNzE4MmM1NjAzNTUzMzJjYmEwZDhjMzU5M2I2MGVlZjZiMmZjN2UuYmFyZSIsIng2NCI6Ii8uLi9wcmVidWlsZHMvbGludXgteDY0L2UzOWUyMmIzZjczNDgxNTA0MzNlYjYxYWM2NzAzYTVmNjgwMDhhMjEwOTJkYWFlNGE0NmU4YWNmN2E0MjgxMzAuYmFyZSJ9LCJ3aW4zMiI6Ii8uLi9wcmVidWlsZHMvd2luMzIteDY0L2I1MzBhNTY0MjMwYWU2MDU3ZDhjZDc1N2NlMWY3ZWJiOGU4NDIwMDcwMmMyMzQ1MzI2NTkwMjBkZGUzNDhkNWQuYmFyZSJ9fSwiL25vZGVfbW9kdWxlcy9iYXJlLWhydGltZS9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1ocnRpbWUvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLWhydGltZS9iaW5kaW5nLmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1ocnRpbWUvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9iYXJlLW1vZHVsZS1yZXNvbHZlL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLW1vZHVsZS1yZXNvbHZlL3BhY2thZ2UuanNvbiIsIi4vbGliL2Vycm9ycyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1tb2R1bGUtcmVzb2x2ZS9saWIvZXJyb3JzLmpzIiwiYmFyZS1zZW12ZXIiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1tb2R1bGUtcmVzb2x2ZS9saWIvZXJyb3JzLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLW1vZHVsZS1yZXNvbHZlL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtbW9kdWxlLXJlc29sdmUvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9iYXJlLW9zL2JpbmRpbmcuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtb3MvcGFja2FnZS5qc29uIiwiLiI6eyJkYXJ3aW4iOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi1hcm02NC83YzQ5OWVjOGMyYzYwZTNmOGJiZDcwNGU5Yzk4Njk4YjM1YTMyN2I5MTliMmFjMjA2NzE5M2M2ZjlkNGMwNWQwLmJhcmUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi14NjQvMjgxYjNjZGY5YzUwZThiNGJkMmJlZjVkNGUzZmE3NjkxMDM5Mzg5Njc5YjFjZTU2Y2YwYzBlMTljZWNmMWU0YS5iYXJlIn0sImxpbnV4Ijp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC1hcm02NC81ZTFlYWQ3ZDUzODBhMTk3MjdkOWNjZjcyNDQ0OTliNTZjN2Y2NjE3YjRiY2ZmYzMzMGM5OWE0MTg2NGZjOTI1LmJhcmUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LXg2NC84NTFlNjA5OTAxNjE0YzE5OGM1ZTA4YjhmMTgzYTU4NzJiOGNhZGU4ZGY2NjNmMzdlMmM4YjA2YjhiMTBjYTJhLmJhcmUifSwid2luMzIiOiIvLi4vcHJlYnVpbGRzL3dpbjMyLXg2NC9lMDViYWI0ZmM2Y2MxMmNiNzAzZjAzZTUxYzFmMzM5YTUzNDAzMzM4ZmFiZjM0NjhkNmZlNDE0YzY0ZTc1ODRlLmJhcmUifX0sIi9ub2RlX21vZHVsZXMvYmFyZS1vcy9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1vcy9wYWNrYWdlLmpzb24iLCIuL2JpbmRpbmciOiIvbm9kZV9tb2R1bGVzL2JhcmUtb3MvYmluZGluZy5qcyIsIi4vbGliL2NvbnN0YW50cyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1vcy9saWIvY29uc3RhbnRzLmpzIiwiLi9saWIvZXJyb3JzIjoiL25vZGVfbW9kdWxlcy9iYXJlLW9zL2xpYi9lcnJvcnMuanMifSwiL25vZGVfbW9kdWxlcy9iYXJlLW9zL2xpYi9jb25zdGFudHMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtb3MvcGFja2FnZS5qc29uIiwiLi4vYmluZGluZyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1vcy9iaW5kaW5nLmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1vcy9saWIvZXJyb3JzLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLW9zL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtb3MvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9wYWNrYWdlLmpzb24iLCIuL2xpYi9wb3NpeCI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL2xpYi9wb3NpeC5qcyIsIi4vbGliL3dpbjMyIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvbGliL3dpbjMyLmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL2xpYi9jb25zdGFudHMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9wYWNrYWdlLmpzb24ifSwiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvbGliL3Bvc2l4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvcGFja2FnZS5qc29uIiwiLi9jb25zdGFudHMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9saWIvY29uc3RhbnRzLmpzIiwiLi9zaGFyZWQiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9saWIvc2hhcmVkLmpzIiwiLi93aW4zMiI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL2xpYi93aW4zMi5qcyIsImJhcmUtb3MiOiIvbm9kZV9tb2R1bGVzL2JhcmUtb3MvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvbGliL3NoYXJlZC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL3BhY2thZ2UuanNvbiIsIi4vY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvbGliL2NvbnN0YW50cy5qcyJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9saWIvd2luMzIuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9wYWNrYWdlLmpzb24iLCIuL2NvbnN0YW50cyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL2xpYi9jb25zdGFudHMuanMiLCIuL3Bvc2l4IjoiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvbGliL3Bvc2l4LmpzIiwiLi9zaGFyZWQiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9saWIvc2hhcmVkLmpzIiwiYmFyZS1vcyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1vcy9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcGlwZS9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBpcGUvcGFja2FnZS5qc29uIiwiLiI6eyJkYXJ3aW4iOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi1hcm02NC8xYzVjM2FkZjU4MTY4N2QxZGQwNGNhMzZjZjJhYzc2ZDI5MTFjMDY4ZTEyZDAyYmRkZjA0MDZhNDQ1YTQ0N2M1LmJhcmUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi14NjQvMTU4MzE3ZmI2ZmI0ZTUwMjNiMjJlMmY2NWZlMjNjOTE0NzY1YzY0M2QyMGRjYzk5MWUxNDBiYWViZjhhM2Y4MS5iYXJlIn0sImxpbnV4Ijp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC1hcm02NC8yNDEzYjFkZTljOWY5N2NlNTAzNzliZGU1ODEyOTU5MTljYTYxM2JiNmM4NGM5ZDQyOTdlZWM5ZjNhYzU0NmE3LmJhcmUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LXg2NC84M2IzMjA0YmI4NjU0YjI4NjkxMzM5YTExZjZhZTkzOTQ3YTYxODY5ZGY2OTRhMDRhOWRhNDZiYzAyNmNmODcyLmJhcmUifSwid2luMzIiOiIvLi4vcHJlYnVpbGRzL3dpbjMyLXg2NC82MGRhMDVjMmFlZjdiZjhiZjAyNjIyYjUxM2Y2YmVlOTIyOWE2ZDMxMGM2ZTQxNmEyMjcwMDdmYWNlNDFkYTZlLmJhcmUifX0sIi9ub2RlX21vZHVsZXMvYmFyZS1waXBlL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBpcGUvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBpcGUvYmluZGluZy5qcyIsIi4vbGliL2NvbnN0YW50cyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1waXBlL2xpYi9jb25zdGFudHMuanMiLCIuL2xpYi9lcnJvcnMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGlwZS9saWIvZXJyb3JzLmpzIiwiYmFyZS1ldmVudHMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL2luZGV4LmpzIiwiYmFyZS1zdHJlYW0iOiIvbm9kZV9tb2R1bGVzL2JhcmUtc3RyZWFtL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1waXBlL2xpYi9jb25zdGFudHMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGlwZS9wYWNrYWdlLmpzb24ifSwiL25vZGVfbW9kdWxlcy9iYXJlLXBpcGUvbGliL2Vycm9ycy5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1waXBlL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcGlwZS9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcHJvY2Vzcy9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wcm9jZXNzL3BhY2thZ2UuanNvbiIsImJhcmUtZW52IjoiL25vZGVfbW9kdWxlcy9iYXJlLWVudi9pbmRleC5qcyIsImJhcmUtZXZlbnRzIjoiL25vZGVfbW9kdWxlcy9iYXJlLWV2ZW50cy9pbmRleC5qcyIsImJhcmUtaHJ0aW1lIjoiL25vZGVfbW9kdWxlcy9iYXJlLWhydGltZS9pbmRleC5qcyIsImJhcmUtb3MiOiIvbm9kZV9tb2R1bGVzL2JhcmUtb3MvaW5kZXguanMiLCJiYXJlLXBpcGUiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGlwZS9pbmRleC5qcyIsImJhcmUtc2lnbmFscyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zaWduYWxzL2luZGV4LmpzIiwiYmFyZS10dHkiOiIvbm9kZV9tb2R1bGVzL2JhcmUtdHR5L2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1wcm9jZXNzL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL3BhY2thZ2UuanNvbiIsIi4vbGliL2NvbXBhcmF0b3IiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL2xpYi9jb21wYXJhdG9yLmpzIiwiLi9saWIvY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNlbXZlci9saWIvY29uc3RhbnRzLmpzIiwiLi9saWIvZXJyb3JzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNlbXZlci9saWIvZXJyb3JzLmpzIiwiLi9saWIvcmFuZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL2xpYi9yYW5nZS5qcyIsIi4vbGliL3ZlcnNpb24iOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL2xpYi92ZXJzaW9uLmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL2NvbXBhcmF0b3IuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL3BhY2thZ2UuanNvbiIsIi4vY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNlbXZlci9saWIvY29uc3RhbnRzLmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL2NvbnN0YW50cy5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL2Vycm9ycy5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL3JhbmdlLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNlbXZlci9wYWNrYWdlLmpzb24iLCIuL2NvbXBhcmF0b3IiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL2xpYi9jb21wYXJhdG9yLmpzIiwiLi9jb25zdGFudHMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL2xpYi9jb25zdGFudHMuanMiLCIuL2Vycm9ycyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL2Vycm9ycy5qcyIsIi4vdmVyc2lvbiI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL3ZlcnNpb24uanMifSwiL25vZGVfbW9kdWxlcy9iYXJlLXNlbXZlci9saWIvdmVyc2lvbi5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvcGFja2FnZS5qc29uIiwiLi9lcnJvcnMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL2xpYi9lcnJvcnMuanMifSwiL25vZGVfbW9kdWxlcy9iYXJlLXNlbXZlci9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2JhcmUtc2lnbmFscy9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNpZ25hbHMvcGFja2FnZS5qc29uIiwiLiI6eyJkYXJ3aW4iOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi1hcm02NC84YjNlY2E3YmJlMzQyZjVjZTFjOTgwOWVlMGE5NThiMDhlYmFiMjhhODEzYWQxOWE5Yzk5YzE3NTUxZDVjYTYzLmJhcmUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi14NjQvM2YxODBmOTkyMTY3ZjBjYmIyMDYxYWUwNTI4YjFiZGQxMzRiMmJmNDU5ZDMxODRmM2UyODEzMTM3ZDVhYTU4Ny5iYXJlIn0sImxpbnV4Ijp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC1hcm02NC8yMGI1MjdiNzRiMjE4MWM4MzI3MGVjNzI2MTY4OWI0ZTFkMDc2YmY3YmI5ZTY4NzExY2ZiZDUyZjZlMzIyNjUyLmJhcmUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LXg2NC8xZGQ5NDRjYWZhYjlhNDlkYjRjOTlhMjk0ZWIxYjdmNGI1OWY5Zjk3MzVhMzg3YTg3YzkxZWFlZmI3YTBlMmQ3LmJhcmUifSwid2luMzIiOiIvLi4vcHJlYnVpbGRzL3dpbjMyLXg2NC81YTdhMjUxNzE1MjIxZjA1MzA2N2Y1MmZlMTJhMzViNGFiNjQ0MzFiNmI5ZjVhYTQxMzIyODE4OGMyODk1MGUxLmJhcmUifX0sIi9ub2RlX21vZHVsZXMvYmFyZS1zaWduYWxzL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNpZ25hbHMvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNpZ25hbHMvYmluZGluZy5qcyIsIi4vbGliL2VtaXR0ZXIiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2lnbmFscy9saWIvZW1pdHRlci5qcyIsIi4vbGliL2Vycm9ycyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zaWduYWxzL2xpYi9lcnJvcnMuanMiLCJiYXJlLWV2ZW50cyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1ldmVudHMvaW5kZXguanMiLCJiYXJlLW9zIjoiL25vZGVfbW9kdWxlcy9iYXJlLW9zL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1zaWduYWxzL2xpYi9lbWl0dGVyLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNpZ25hbHMvcGFja2FnZS5qc29uIiwiLi4iOiIvbm9kZV9tb2R1bGVzL2JhcmUtc2lnbmFscy9pbmRleC5qcyIsImJhcmUtZXZlbnRzIjoiL25vZGVfbW9kdWxlcy9iYXJlLWV2ZW50cy9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL2JhcmUtc2lnbmFscy9saWIvZXJyb3JzLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNpZ25hbHMvcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1zaWduYWxzL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvYmFyZS1zdHJlYW0vaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc3RyZWFtL3BhY2thZ2UuanNvbiIsInN0cmVhbXgiOiIvbm9kZV9tb2R1bGVzL3N0cmVhbXgvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9iYXJlLXN0cmVhbS9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2JhcmUtc3VicHJvY2Vzcy9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvcGFja2FnZS5qc29uIiwiLiI6eyJkYXJ3aW4iOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi1hcm02NC9jMWFhYTNiYWJiOTFhYmIxM2ViYjljYWRmYTNhOTU2NTI3NTRkMTM5MzFhMmMwMWQ2NTRkOWEzMTUxNmI1MjgzLmJhcmUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi14NjQvMDFjOGYyNTFjMzMxYzA4NTg2Zjg0MGQ2NWIxYjNhZGRiOGQ3NzI3NWE1NGE2N2UxMjFjYzQ2YjVlMjlhOTk1Ni5iYXJlIn0sImxpbnV4Ijp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC1hcm02NC84YzVlMmYxOWFmMmEzZDAyYzhiNmJlNjhlZmUzYTE1ZjA0MWM4MWM2MGM0ZGIwMDM1ODk1YTMxZjVkYzI4NzUxLmJhcmUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LXg2NC8zY2EwZDY0ZTAyYTFmNjdmZmYxZTQwM2U1OThlYjgxYmEwZmE0N2RjYzAyZjNjOWZiZTRjZTM3ZDhmNjc4ZGNlLmJhcmUifSwid2luMzIiOiIvLi4vcHJlYnVpbGRzL3dpbjMyLXg2NC9mOWQwNjdmYTg0MTNiOTlkZjVkYTM0YWQwNzU2ZTM0NjQ2MWE2MmIwNmRmOTJmOTYyNTZkODBhN2Y1YTdmOGY0LmJhcmUifX0sIi9ub2RlX21vZHVsZXMvYmFyZS1zdWJwcm9jZXNzL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvYmluZGluZy5qcyIsIi4vbGliL2NvbnN0YW50cyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zdWJwcm9jZXNzL2xpYi9jb25zdGFudHMuanMiLCIuL2xpYi9lcnJvcnMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc3VicHJvY2Vzcy9saWIvZXJyb3JzLmpzIiwiYmFyZS1lbnYiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZW52L2luZGV4LmpzIiwiYmFyZS1ldmVudHMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL2luZGV4LmpzIiwiYmFyZS1vcyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1vcy9pbmRleC5qcyIsImJhcmUtcGlwZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1waXBlL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1zdWJwcm9jZXNzL2xpYi9jb25zdGFudHMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc3VicHJvY2Vzcy9wYWNrYWdlLmpzb24iLCJiYXJlLW9zIjoiL25vZGVfbW9kdWxlcy9iYXJlLW9zL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS1zdWJwcm9jZXNzL2xpYi9lcnJvcnMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2JhcmUtc3VicHJvY2Vzcy9wYWNrYWdlLmpzb24ifSwiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9wYWNrYWdlLmpzb24iLCIuIjp7ImRhcndpbiI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvZGFyd2luLWFybTY0Lzc1Y2Q0NWIzM2E0NjhjMWZhNzllYzE5ZTMzMjg2MmU0ZjFkNTRmZjdiZGNlMmVhZWRkYjFhZWQzMGE1N2IyZDMuYmFyZSIsIng2NCI6Ii8uLi9wcmVidWlsZHMvZGFyd2luLXg2NC83MDEwNzNmZmJmNjAwZWZlYjExZmEyMzQyNDY2YWY0Zjg4NmE3NGU1NWM0NmNkNjYyZmU1NGI3ZmY4OWQ2N2Y0LmJhcmUifSwibGludXgiOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LWFybTY0L2MwNTU5ZDM1Y2MyZDc2ZDM1OGE5NTYwODkyYmFkZDc1NmNmYjJjYzRlOTI3ZmJkOWM1MWVmNWZkYzRjYzZmZWMuYmFyZSIsIng2NCI6Ii8uLi9wcmVidWlsZHMvbGludXgteDY0Lzc2MWZkNWYwM2ZkMDYxZTg4MjJmNDZmNWQ4NGQ5YTRlMmFkNDZmYTZmNGYwNjJlNzRmMTNkYWVhNDBiYTUwYzIuYmFyZSJ9LCJ3aW4zMiI6Ii8uLi9wcmVidWlsZHMvd2luMzIteDY0LzNmMzg3NmMwOWE5YjY0MTQyMmM4NzYwZjVhODRkMGYwZDg5OGQxNmFhZDBkZDdkZDQ1ZWExMTJhNmFmZDFkNjYuYmFyZSJ9fSwiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS10dHkvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9iaW5kaW5nLmpzIiwiLi9saWIvY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9saWIvY29uc3RhbnRzLmpzIiwiYmFyZS1zaWduYWxzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNpZ25hbHMvaW5kZXguanMiLCJiYXJlLXN0cmVhbSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1zdHJlYW0vaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9saWIvY29uc3RhbnRzLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9wYWNrYWdlLmpzb24iLCIuLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9iaW5kaW5nLmpzIn0sIi9ub2RlX21vZHVsZXMvYmFyZS10dHkvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9wYWNrYWdlLmpzb24iLCIuIjp7ImRhcndpbiI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvZGFyd2luLWFybTY0LzMxNGZhMzVlM2NjOGE4YjNjMDE2OTU5NzAxMTg4YjNjMTQwMTkxYTM3MDdjZjQwOTg4Zjg5NGJiNDFhODU5MWYuYmFyZSIsIng2NCI6Ii8uLi9wcmVidWlsZHMvZGFyd2luLXg2NC82ODgyMTVlZDhmYWE3OTc4YjcxOGU1OTAyNzRlMDNkMmNlYTEzNjAzZDU5OTJhNzU5ZGQzMzNiYWY3Mjc2NDM1LmJhcmUifSwibGludXgiOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LWFybTY0LzBhMzExMzg4ZGIzM2M2MWVhNzhkYjQxMWQwNmJmYzQ1N2I3YzRkNjRlYzZiZTBjMWIyYTc2YjQ5NzU0ZWQ1MmYuYmFyZSIsIng2NCI6Ii8uLi9wcmVidWlsZHMvbGludXgteDY0L2RkMDM1NzRkYzJhODkwMWFiOWIxN2EyN2FkYTg0NzMxNDZhNTI1OTliYjQ5Mzg5ZmI0ZDgzMThlMGU1NWNkZTkuYmFyZSJ9LCJ3aW4zMiI6Ii8uLi9wcmVidWlsZHMvd2luMzIteDY0LzI5MTc1ZTM5NmZmZDZhNjNjMjRlNzAwOGJhNTkwNjk0MzY1NzA0MjFjMGJkMTYzMzQ3YjdjZDRiNzMzYTlmNGMuYmFyZSJ9fSwiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS11cmwvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9iaW5kaW5nLmpzIiwiLi9saWIvZXJyb3JzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9saWIvZXJyb3JzLmpzIiwiYmFyZS1wYXRoIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9saWIvZXJyb3JzLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9wYWNrYWdlLmpzb24ifSwiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvZW5kaWFuLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9jb21wYWN0LWVuY29kaW5nL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvcGFja2FnZS5qc29uIiwiLi9lbmRpYW4iOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvZW5kaWFuLmpzIiwiLi9sZXhpbnQiOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvbGV4aW50LmpzIiwiLi9yYXciOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvcmF3LmpzIiwiYjRhIjoiL25vZGVfbW9kdWxlcy9iNGEvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9jb21wYWN0LWVuY29kaW5nL2xleGludC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvY29tcGFjdC1lbmNvZGluZy9wYWNrYWdlLmpzb24ifSwiL25vZGVfbW9kdWxlcy9jb21wYWN0LWVuY29kaW5nL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvY29tcGFjdC1lbmNvZGluZy9yYXcuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvcGFja2FnZS5qc29uIiwiLi9lbmRpYW4iOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvZW5kaWFuLmpzIiwiYjRhIjoiL25vZGVfbW9kdWxlcy9iNGEvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9jcmMtbmF0aXZlL2JpbmRpbmcuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2NyYy1uYXRpdmUvcGFja2FnZS5qc29uIiwiLiI6eyJkYXJ3aW4iOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi1hcm02NC9iYzEzNWJkNGY1NjhhOWYzMGZlYTJhNTI2OGRjMzQzMWU3Nzk1NWZjOWQwZDI5OTQ0Y2M0OWY0MzBiMTRkNjcyLm5vZGUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi14NjQvMjBlMmE4YjIxNWNhM2I2NzE5YmI3OGQ0ZmI5MDM5Zjk5OGQwMjkwZTA2MzEyM2VjMGI3NmU0OWY1OWUxNzBiNS5ub2RlIn0sImxpbnV4Ijp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC1hcm02NC8wMTlmMDVkMjk3YmY2NzIyZGRhMWIyZGZiZWI4ZjhlNjU4ZTNlOWQ2MmNlMmMwZTZmZmY4NmM4ODczNDc1NTU2Lm5vZGUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LXg2NC8yNjY1ZDRiYWU3MTkzYjI4ZTFjZTg2NzdhOGY0ZGI3ZGVlZjVmOTkyOGJlM2E3ZTM4MGE5OGJmNDBkNjk1ZTkzLm5vZGUifSwid2luMzIiOiIvLi4vcHJlYnVpbGRzL3dpbjMyLXg2NC8wN2RjODAyZWVmODY2NTRlZjkyMmQzMGVmZmY3OTY0MGUwNjJjMWVmZTc5Y2U3ZTQxMmE1MWQ4MTllNTIxNDVhLm5vZGUifSwicmVxdWlyZS1hZGRvbiI6Ii9ub2RlX21vZHVsZXMvcmVxdWlyZS1hZGRvbi9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL2NyYy1uYXRpdmUvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2NyYy1uYXRpdmUvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9jcmMtbmF0aXZlL2JpbmRpbmcuanMifSwiL25vZGVfbW9kdWxlcy9jcmMtbmF0aXZlL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvY3JjLXVuaXZlcnNhbC9mYWxsYmFjay5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvY3JjLXVuaXZlcnNhbC9wYWNrYWdlLmpzb24iLCIuL2xvb2t1cCI6Ii9ub2RlX21vZHVsZXMvY3JjLXVuaXZlcnNhbC9sb29rdXAuanMifSwiL25vZGVfbW9kdWxlcy9jcmMtdW5pdmVyc2FsL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9jcmMtdW5pdmVyc2FsL3BhY2thZ2UuanNvbiIsIi4vZmFsbGJhY2siOiIvbm9kZV9tb2R1bGVzL2NyYy11bml2ZXJzYWwvZmFsbGJhY2suanMiLCJjcmMtbmF0aXZlIjoiL25vZGVfbW9kdWxlcy9jcmMtbmF0aXZlL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvY3JjLXVuaXZlcnNhbC9sb29rdXAuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2NyYy11bml2ZXJzYWwvcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvY3JjLXVuaXZlcnNhbC9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2Zhc3QtZmlmby9maXhlZC1zaXplLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9mYXN0LWZpZm8vcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvZmFzdC1maWZvL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9mYXN0LWZpZm8vcGFja2FnZS5qc29uIiwiLi9maXhlZC1zaXplIjoiL25vZGVfbW9kdWxlcy9mYXN0LWZpZm8vZml4ZWQtc2l6ZS5qcyJ9LCIvbm9kZV9tb2R1bGVzL2Zhc3QtZmlmby9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2ZyYW1lZC1zdHJlYW0vaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2ZyYW1lZC1zdHJlYW0vcGFja2FnZS5qc29uIiwiYjRhIjoiL25vZGVfbW9kdWxlcy9iNGEvaW5kZXguanMiLCJzdHJlYW14IjoiL25vZGVfbW9kdWxlcy9zdHJlYW14L2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvZnJhbWVkLXN0cmVhbS9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2ZzLW5hdGl2ZS1leHRlbnNpb25zL2JpbmRpbmcuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL2ZzLW5hdGl2ZS1leHRlbnNpb25zL3BhY2thZ2UuanNvbiIsIi4iOnsiZGFyd2luIjp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4tYXJtNjQvYTVhZGJhNDViNDRiNmQyMWI0YTM5ZGMxMDY5MTRiNTE3Y2IwZGE2ODc0N2VmZmZiY2U2OWM0MDg4YTZlZDcwZi5ub2RlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4teDY0LzRjOWQzODg1YTY4ZjM2MDBkOTkxMzc0OWFmODM0NjVhM2Q4ZDRlNWNjYmVhZjU0NmUyYjgwYTcyMzdmN2FkMTkubm9kZSJ9LCJsaW51eCI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvbGludXgtYXJtNjQvYzAyMjI1YjFmYjJlYzg3Y2M4NDBiMmY4N2Y0NWFiMGMwYzZiNjM2ZmNjYzA3NWI2MGQzMjU0ODBjN2U5NGExOC5ub2RlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC14NjQvMmZhNjg0NmUzNmVlMTdjYmM3MGRkM2MzYzBlMjZhODJmMWNjMDQ0ZmQ1ZGY4YzkwZmVhODgzY2M4NjA4YTFkMS5ub2RlIn0sIndpbjMyIjoiLy4uL3ByZWJ1aWxkcy93aW4zMi14NjQvNTNiOTUzOTY4NzNiM2Q4YmVlNzUwNzUwNzY4ZDQ2YjMxYWI5M2EzOGVmNjU1OTRiYjg3MDg2M2JiNzRhZjQwMi5ub2RlIn0sInJlcXVpcmUtYWRkb24iOiIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9mcy1uYXRpdmUtZXh0ZW5zaW9ucy9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvZnMtbmF0aXZlLWV4dGVuc2lvbnMvcGFja2FnZS5qc29uIiwiLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9mcy1uYXRpdmUtZXh0ZW5zaW9ucy9iaW5kaW5nLmpzIiwid2hpY2gtcnVudGltZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL2ZzLW5hdGl2ZS1leHRlbnNpb25zL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWNyeXB0by9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWNyeXB0by9wYWNrYWdlLmpzb24iLCJiNGEiOiIvbm9kZV9tb2R1bGVzL2I0YS9pbmRleC5qcyIsImNvbXBhY3QtZW5jb2RpbmciOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvaW5kZXguanMiLCJzb2RpdW0tdW5pdmVyc2FsIjoiL25vZGVfbW9kdWxlcy9zb2RpdW0tdW5pdmVyc2FsL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWNyeXB0by9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL2h5cGVyY29yZS1pZC1lbmNvZGluZy9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWlkLWVuY29kaW5nL3BhY2thZ2UuanNvbiIsImI0YSI6Ii9ub2RlX21vZHVsZXMvYjRhL2luZGV4LmpzIiwiejMyIjoiL25vZGVfbW9kdWxlcy96MzIvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9oeXBlcmNvcmUtaWQtZW5jb2RpbmcvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9wYXBhcmFtL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9wYXBhcmFtL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL3BhcGFyYW0vcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jbWQvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3BhY2thZ2UuanNvbiIsIi4vcGVhciI6Ii9ub2RlX21vZHVsZXMvcGVhci1hcGkvY21kL3BlYXIuanMiLCJwYXBhcmFtIjoiL25vZGVfbW9kdWxlcy9wYXBhcmFtL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvcGVhci1hcGkvY21kL3BlYXIuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3BhY2thZ2UuanNvbiIsInBhcGFyYW0iOiIvbm9kZV9tb2R1bGVzL3BhcGFyYW0vaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jbWQvcnVuLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9wYWNrYWdlLmpzb24iLCJwYXBhcmFtIjoiL25vZGVfbW9kdWxlcy9wYXBhcmFtL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvcGVhci1hcGkvY29uc3RhbnRzLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9wYWNrYWdlLmpzb24iLCJiNGEiOiIvbm9kZV9tb2R1bGVzL2I0YS9pbmRleC5qcyIsImh5cGVyY29yZS1pZC1lbmNvZGluZyI6Ii9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWlkLWVuY29kaW5nL2luZGV4LmpzIiwic29kaXVtLW5hdGl2ZSI6Ii9ub2RlX21vZHVsZXMvc29kaXVtLW5hdGl2ZS9pbmRleC5qcyIsInVybC1maWxlLXVybCI6Ii9ub2RlX21vZHVsZXMvdXJsLWZpbGUtdXJsL2luZGV4LmpzIiwid2hpY2gtcnVudGltZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2NyYXNoZXIuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3BhY2thZ2UuanNvbiIsIi4vY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jb25zdGFudHMuanMiLCJlbGVjdHJvbiI6ImJ1aWx0aW46ZWxlY3Ryb24iLCJmcyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1mcy9pbmRleC5qcyIsInBhdGgiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9pbmRleC5qcyIsIndoaWNoLXJ1bnRpbWUiOiIvbm9kZV9tb2R1bGVzL3doaWNoLXJ1bnRpbWUvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9lcnJvcnMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2d1bmsuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3BhY2thZ2UuanNvbiIsImNyYy11bml2ZXJzYWwiOiIvbm9kZV9tb2R1bGVzL2NyYy11bml2ZXJzYWwvaW5kZXguanMiLCJmcy1uYXRpdmUtZXh0ZW5zaW9ucyI6Ii9ub2RlX21vZHVsZXMvZnMtbmF0aXZlLWV4dGVuc2lvbnMvaW5kZXguanMiLCJxdWlja2JpdC11bml2ZXJzYWwiOiIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LXVuaXZlcnNhbC9pbmRleC5qcyIsInJvY2tzZGItbmF0aXZlIjoiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9pbmRleC5qcyIsInNjcmlwdC1saW5rZXIvZGVmYXVsdHMiOiIvbm9kZV9tb2R1bGVzL3NjcmlwdC1saW5rZXIvZGVmYXVsdHMuanMiLCJzb2RpdW0tbmF0aXZlIjoiL25vZGVfbW9kdWxlcy9zb2RpdW0tbmF0aXZlL2luZGV4LmpzIiwidWR4LW5hdGl2ZSI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9saWIvdWR4LmpzIiwid2hpY2gtcnVudGltZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9wYWNrYWdlLmpzb24iLCIuL2NtZCI6Ii9ub2RlX21vZHVsZXMvcGVhci1hcGkvY21kL2luZGV4LmpzIiwiLi9jbWQvcnVuIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jbWQvcnVuLmpzIiwiLi9jb25zdGFudHMiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2NvbnN0YW50cy5qcyIsIi4vZXJyb3JzIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9lcnJvcnMuanMiLCIuL2xpbmsiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2xpbmsuanMiLCIuL3RlYXJkb3duIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS90ZWFyZG93bi5qcyIsImI0YSI6Ii9ub2RlX21vZHVsZXMvYjRhL2luZGV4LmpzIiwiYmFyZS1waXBlIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBpcGUvaW5kZXguanMiLCJjaGlsZF9wcm9jZXNzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvaW5kZXguanMiLCJlbGVjdHJvbiI6ImJ1aWx0aW46ZWxlY3Ryb24iLCJmcyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1mcy9pbmRleC5qcyIsImh5cGVyY29yZS1pZC1lbmNvZGluZyI6Ii9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWlkLWVuY29kaW5nL2luZGV4LmpzIiwibmV0IjoiYnVpbHRpbjpuZXQiLCJwYXBhcmFtIjoiL25vZGVfbW9kdWxlcy9wYXBhcmFtL2luZGV4LmpzIiwid2hpY2gtcnVudGltZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2xpbmsuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3BhY2thZ2UuanNvbiIsIi4vY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jb25zdGFudHMuanMiLCIuL2Vycm9ycyI6Ii9ub2RlX21vZHVsZXMvcGVhci1hcGkvZXJyb3JzLmpzIiwicGVhci1saW5rIjoiL25vZGVfbW9kdWxlcy9wZWFyLWxpbmsvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3N0YXRlLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9wYWNrYWdlLmpzb24iLCIuL2NvbnN0YW50cyI6Ii9ub2RlX21vZHVsZXMvcGVhci1hcGkvY29uc3RhbnRzLmpzIiwiLi9saW5rIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9saW5rLmpzIiwiYmFyZS1lbnYiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZW52L2luZGV4LmpzIiwiZnMvcHJvbWlzZXMiOiJidWlsdGluOmZzL3Byb21pc2VzIiwiaHlwZXJjb3JlLWNyeXB0byI6Ii9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWNyeXB0by9pbmRleC5qcyIsImh5cGVyY29yZS1pZC1lbmNvZGluZyI6Ii9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWlkLWVuY29kaW5nL2luZGV4LmpzIiwib3MiOiIvbm9kZV9tb2R1bGVzL2JhcmUtb3MvaW5kZXguanMiLCJwYXRoIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvaW5kZXguanMiLCJwZWFyLWFwaS9lcnJvcnMiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2Vycm9ycy5qcyIsIndoaWNoLXJ1bnRpbWUiOiIvbm9kZV9tb2R1bGVzL3doaWNoLXJ1bnRpbWUvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS90ZWFyZG93bi5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvcGVhci1hcGkvcGFja2FnZS5qc29uIiwiYmFyZS1zaWduYWxzIjoiL25vZGVfbW9kdWxlcy9iYXJlLXNpZ25hbHMvaW5kZXguanMiLCJzYWZldHktY2F0Y2giOiIvbm9kZV9tb2R1bGVzL3NhZmV0eS1jYXRjaC9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3RyeWJvb3QuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3BhY2thZ2UuanNvbiIsIi4vY29uc3RhbnRzIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jb25zdGFudHMuanMiLCJiYXJlLWRhZW1vbiI6Ii9ub2RlX21vZHVsZXMvYmFyZS1kYWVtb24vaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9wZWFyLWlwYy9hcGkuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL3BhY2thZ2UuanNvbiIsImZzIjoiL25vZGVfbW9kdWxlcy9iYXJlLWZzL2luZGV4LmpzIiwiZnMtbmF0aXZlLWV4dGVuc2lvbnMiOiIvbm9kZV9tb2R1bGVzL2ZzLW5hdGl2ZS1leHRlbnNpb25zL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvcGVhci1pcGMvY2xpZW50LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9wZWFyLWlwYy9wYWNrYWdlLmpzb24iLCIuL2FwaSI6Ii9ub2RlX21vZHVsZXMvcGVhci1pcGMvYXBpLmpzIiwiLi9jb25zdGFudHMiOiIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL2NvbnN0YW50cy5qcyIsIi4vbWV0aG9kcyI6Ii9ub2RlX21vZHVsZXMvcGVhci1pcGMvbWV0aG9kcy5qcyIsImZyYW1lZC1zdHJlYW0iOiIvbm9kZV9tb2R1bGVzL2ZyYW1lZC1zdHJlYW0vaW5kZXguanMiLCJuZXQiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGlwZS9pbmRleC5qcyIsInBhdGgiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9pbmRleC5qcyIsInJlYWR5LXJlc291cmNlIjoiL25vZGVfbW9kdWxlcy9yZWFkeS1yZXNvdXJjZS9pbmRleC5qcyIsInRpbnktYnVmZmVyLXJwYyI6Ii9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL2luZGV4LmpzIiwidGlueS1idWZmZXItcnBjL2FueSI6Ii9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL2FueS5qcyIsIndoaWNoLXJ1bnRpbWUiOiIvbm9kZV9tb2R1bGVzL3doaWNoLXJ1bnRpbWUvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9wZWFyLWlwYy9jb25zdGFudHMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL3BhY2thZ2UuanNvbiIsIm9zIjoiL25vZGVfbW9kdWxlcy9iYXJlLW9zL2luZGV4LmpzIiwicGF0aCI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL2luZGV4LmpzIiwid2hpY2gtcnVudGltZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9wZWFyLWlwYy9wYWNrYWdlLmpzb24iLCIuL2NsaWVudCI6Ii9ub2RlX21vZHVsZXMvcGVhci1pcGMvY2xpZW50LmpzIiwiLi9zZXJ2ZXIiOiIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL3NlcnZlci5qcyJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL21ldGhvZHMuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvcGVhci1pcGMvc2VydmVyLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9wZWFyLWlwYy9wYWNrYWdlLmpzb24iLCIuL2FwaSI6Ii9ub2RlX21vZHVsZXMvcGVhci1pcGMvYXBpLmpzIiwiLi9jb25zdGFudHMiOiIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL2NvbnN0YW50cy5qcyIsIi4vbWV0aG9kcyI6Ii9ub2RlX21vZHVsZXMvcGVhci1pcGMvbWV0aG9kcy5qcyIsImZyYW1lZC1zdHJlYW0iOiIvbm9kZV9tb2R1bGVzL2ZyYW1lZC1zdHJlYW0vaW5kZXguanMiLCJmcyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1mcy9pbmRleC5qcyIsIm5ldCI6Ii9ub2RlX21vZHVsZXMvYmFyZS1waXBlL2luZGV4LmpzIiwicGF0aCI6Ii9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL2luZGV4LmpzIiwicmVhZHktcmVzb3VyY2UiOiIvbm9kZV9tb2R1bGVzL3JlYWR5LXJlc291cmNlL2luZGV4LmpzIiwic3RyZWFteCI6Ii9ub2RlX21vZHVsZXMvc3RyZWFteC9pbmRleC5qcyIsInRpbnktYnVmZmVyLXJwYyI6Ii9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL2luZGV4LmpzIiwidGlueS1idWZmZXItcnBjL2FueSI6Ii9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL2FueS5qcyIsIndoaWNoLXJ1bnRpbWUiOiIvbm9kZV9tb2R1bGVzL3doaWNoLXJ1bnRpbWUvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9wZWFyLWxpbmsvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3BlYXItbGluay9wYWNrYWdlLmpzb24iLCJoeXBlcmNvcmUtaWQtZW5jb2RpbmciOiIvbm9kZV9tb2R1bGVzL2h5cGVyY29yZS1pZC1lbmNvZGluZy9pbmRleC5qcyIsInBhdGgiOiIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3BlYXItbGluay9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LW5hdGl2ZS9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9xdWlja2JpdC1uYXRpdmUvcGFja2FnZS5qc29uIiwiLiI6eyJkYXJ3aW4iOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi1hcm02NC8xYjJkZWE3NzhkNDM3M2M5ZjdmZmQxNzUwOWVlYzlkZDcwYmY3N2MwZGRhNjAyZTM3MzgwOWYxYjczMGZhNGY4Lm5vZGUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi14NjQvNWExZmVhYWViNTU1ZDkyY2Q5YzFjN2JmNTJkMTQ5MDU5YzA1NTEwOTAwMGE2MzkyZjQzMjQyYThiMTk5NDc3NS5ub2RlIn0sImxpbnV4Ijp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC1hcm02NC85N2RiMTQ3YzE3YjAxMTYzYzRkM2YzY2RjZTBiMWIwMWMyZmJkN2ZiZTZmOGI0ZTk0MWFmNWRkNDFhODFhYjczLm5vZGUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LXg2NC9lNTM1ZDcxN2FjZDNkOWE2OWVhMzAxNjE3ZmY3Nzc3OGM1NGZhNzdkM2ZiYzI3MmVkZmY1NGM5ZWQwZDBkY2VhLm5vZGUifSwid2luMzIiOiIvLi4vcHJlYnVpbGRzL3dpbjMyLXg2NC9hNmQ5YjZiNWJiMzEyYzhlODUwMDk4ZDU5OThhMzllZTlkNzg3YTU3YTcxNWUyYmQ5ODI5M2Y3YTI2YTc2YjM3Lm5vZGUifSwicmVxdWlyZS1hZGRvbiI6Ii9ub2RlX21vZHVsZXMvcmVxdWlyZS1hZGRvbi9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LW5hdGl2ZS9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvcXVpY2tiaXQtbmF0aXZlL3BhY2thZ2UuanNvbiIsIi4vYmluZGluZyI6Ii9ub2RlX21vZHVsZXMvcXVpY2tiaXQtbmF0aXZlL2JpbmRpbmcuanMiLCJiNGEiOiIvbm9kZV9tb2R1bGVzL2I0YS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LW5hdGl2ZS9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LXVuaXZlcnNhbC9mYWxsYmFjay5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvcXVpY2tiaXQtdW5pdmVyc2FsL3BhY2thZ2UuanNvbiIsInNpbWRsZS11bml2ZXJzYWwiOiIvbm9kZV9tb2R1bGVzL3NpbWRsZS11bml2ZXJzYWwvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9xdWlja2JpdC11bml2ZXJzYWwvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LXVuaXZlcnNhbC9wYWNrYWdlLmpzb24iLCIuL2ZhbGxiYWNrIjoiL25vZGVfbW9kdWxlcy9xdWlja2JpdC11bml2ZXJzYWwvZmFsbGJhY2suanMiLCJxdWlja2JpdC1uYXRpdmUiOiIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LW5hdGl2ZS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LXVuaXZlcnNhbC9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL3JlYWR5LXJlc291cmNlL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yZWFkeS1yZXNvdXJjZS9wYWNrYWdlLmpzb24iLCJldmVudHMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvcmVhZHktcmVzb3VyY2UvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9yZWZjb3VudGVyL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yZWZjb3VudGVyL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL3JlZmNvdW50ZXIvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL3BhY2thZ2UuanNvbiIsIi4vbGliL3J1bnRpbWUiOiIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vbGliL3J1bnRpbWUuanMiLCIuL2xpYi9ydW50aW1lL2JhcmUiOiIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vbGliL3J1bnRpbWUvYmFyZS5qcyIsIi4vbGliL3J1bnRpbWUvZGVmYXVsdCI6Ii9ub2RlX21vZHVsZXMvcmVxdWlyZS1hZGRvbi9saWIvcnVudGltZS9kZWZhdWx0LmpzIiwiLi9saWIvcnVudGltZS9ub2RlIjoiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL2xpYi9ydW50aW1lL25vZGUuanMifSwiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL2xpYi9ydW50aW1lLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vbGliL3J1bnRpbWUvYmFyZS5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvcmVxdWlyZS1hZGRvbi9wYWNrYWdlLmpzb24ifSwiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL2xpYi9ydW50aW1lL2RlZmF1bHQuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvcmVxdWlyZS1hZGRvbi9saWIvcnVudGltZS9ub2RlLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL3BhY2thZ2UuanNvbiIsImJhcmUtYWRkb24tcmVzb2x2ZSI6Ii9ub2RlX21vZHVsZXMvYmFyZS1hZGRvbi1yZXNvbHZlL2luZGV4LmpzIiwidXJsIjoiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9yZXNvbHZlLXJlamVjdC1wcm9taXNlL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yZXNvbHZlLXJlamVjdC1wcm9taXNlL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL3Jlc29sdmUtcmVqZWN0LXByb21pc2UvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9wYWNrYWdlLmpzb24iLCIuIjp7ImRhcndpbiI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvZGFyd2luLWFybTY0L2MzNTBiZjA4MWU0ZDA1ZmNlYjZjYWY2MjFlNDIzNGJmMTI5ZWI3OWExNDBhZmUwMjVjMmNkNmJlYzY4ZjU1YWEubm9kZSIsIng2NCI6Ii8uLi9wcmVidWlsZHMvZGFyd2luLXg2NC85ODYzYjIwODljMzRmZDc2NjgwZTYzMDkyZWZhOTc2MGFjMzA3ZTkyOTFmNTFiMDljZjFmOTIzM2M5MzAyYzRkLm5vZGUifSwibGludXgiOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LWFybTY0L2I2OTVlOTAwOWMyYzEyMTMwMTc4OTRiYjQ5MWUyNjg0YzMzMGFmMmNhYTIyZTgwOWQzODVmODJmNjA4ODU4OTcubm9kZSIsIng2NCI6Ii8uLi9wcmVidWlsZHMvbGludXgteDY0L2FjNjYxMmFkNDBiM2M5YjI2MmRiZWI4N2VjZWVkYWVmYjQ0ZThlMGI4YTk1Mzc5ZGYzNDliYzM0MDg1NDU2ODcubm9kZSJ9LCJ3aW4zMiI6Ii8uLi9wcmVidWlsZHMvd2luMzIteDY0LzVlYTQ1MTMyMjFiODM0ZTlkZGYzZTRjMTZjYWE2NDc1OWM1YWNiZThjNTQyNjNiOWMyYjg4YmIzZDY1YWM3M2Mubm9kZSJ9LCJyZXF1aXJlLWFkZG9uIjoiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL3BhY2thZ2UuanNvbiIsIi4vbGliL2NvbHVtbi1mYW1pbHkiOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2xpYi9jb2x1bW4tZmFtaWx5LmpzIiwiLi9saWIvZmlsdGVyLXBvbGljeSI6Ii9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL2ZpbHRlci1wb2xpY3kuanMiLCIuL2xpYi9pdGVyYXRvciI6Ii9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL2l0ZXJhdG9yLmpzIiwiLi9saWIvc25hcHNob3QiOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2xpYi9zbmFwc2hvdC5qcyIsIi4vbGliL3N0YXRlIjoiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9saWIvc3RhdGUuanMifSwiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9saWIvYmF0Y2guanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL3BhY2thZ2UuanNvbiIsIi4uL2JpbmRpbmciOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2JpbmRpbmcuanMiLCJjb21wYWN0LWVuY29kaW5nIjoiL25vZGVfbW9kdWxlcy9jb21wYWN0LWVuY29kaW5nL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL2NvbHVtbi1mYW1pbHkuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL3BhY2thZ2UuanNvbiIsIi4uL2JpbmRpbmciOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2JpbmRpbmcuanMiLCIuL2ZpbHRlci1wb2xpY3kiOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2xpYi9maWx0ZXItcG9saWN5LmpzIn0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL2ZpbHRlci1wb2xpY3kuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2xpYi9pdGVyYXRvci5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvcGFja2FnZS5qc29uIiwiLi4vYmluZGluZyI6Ii9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvYmluZGluZy5qcyIsImNvbXBhY3QtZW5jb2RpbmciOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvaW5kZXguanMiLCJzdHJlYW14IjoiL25vZGVfbW9kdWxlcy9zdHJlYW14L2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL3NuYXBzaG90LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9wYWNrYWdlLmpzb24iLCIuLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9iaW5kaW5nLmpzIn0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL3N0YXRlLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9wYWNrYWdlLmpzb24iLCIuLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9iaW5kaW5nLmpzIiwiLi9iYXRjaCI6Ii9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL2JhdGNoLmpzIiwiLi9jb2x1bW4tZmFtaWx5IjoiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9saWIvY29sdW1uLWZhbWlseS5qcyIsInJlYWR5LXJlc291cmNlIjoiL25vZGVfbW9kdWxlcy9yZWFkeS1yZXNvdXJjZS9pbmRleC5qcyIsInJlZmNvdW50ZXIiOiIvbm9kZV9tb2R1bGVzL3JlZmNvdW50ZXIvaW5kZXguanMiLCJyZXNvbHZlLXJlamVjdC1wcm9taXNlIjoiL25vZGVfbW9kdWxlcy9yZXNvbHZlLXJlamVjdC1wcm9taXNlL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9zYWZldHktY2F0Y2gvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3NhZmV0eS1jYXRjaC9wYWNrYWdlLmpzb24ifSwiL25vZGVfbW9kdWxlcy9zYWZldHktY2F0Y2gvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9zY3JpcHQtbGlua2VyL2RlZmF1bHRzLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9zY3JpcHQtbGlua2VyL3BhY2thZ2UuanNvbiIsIi4vbGliL2NvbXBpbGUiOiIvbm9kZV9tb2R1bGVzL3NjcmlwdC1saW5rZXIvbGliL2NvbXBpbGUuanMiLCJtb2R1bGUiOiJidWlsdGluOm1vZHVsZSJ9LCIvbm9kZV9tb2R1bGVzL3NjcmlwdC1saW5rZXIvbGliL2NvbXBpbGUuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3NjcmlwdC1saW5rZXIvcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvc2NyaXB0LWxpbmtlci9wYWNrYWdlLmpzb24iOnt9LCIvbm9kZV9tb2R1bGVzL3NjcmlwdC1saW5rZXIvcnVudGltZS5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvc2NyaXB0LWxpbmtlci9wYWNrYWdlLmpzb24iLCIuL2RlZmF1bHRzIjoiL25vZGVfbW9kdWxlcy9zY3JpcHQtbGlua2VyL2RlZmF1bHRzLmpzIiwidW5peC1wYXRoLXJlc29sdmUiOiIvbm9kZV9tb2R1bGVzL3VuaXgtcGF0aC1yZXNvbHZlL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvc2ltZGxlLW5hdGl2ZS9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9zaW1kbGUtbmF0aXZlL3BhY2thZ2UuanNvbiIsIi4iOnsiZGFyd2luIjp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4tYXJtNjQvNmFkMjI0MGY2ODk2NzY1NDk0ODlmODQzYWZlNTcxNGVkM2Y1ODIwMDI5MTgwNDg0OTU1ODljYzA2NzUyZTE0Yi5ub2RlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4teDY0LzhmN2JjMWE3ZWJkZWNhMmY4MzZiNDE1ZTcyYmJjMDVjMGZkN2ZmMjYzODk2NmQyYTZmOWMxNzU5MDdkOTZmZjYubm9kZSJ9LCJsaW51eCI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvbGludXgtYXJtNjQvNzFjY2NlMWNhZTZmYzZmM2I2ZTE0YzViMjIwZWViNTNkMjM4YjRlYzRjYzA0Mjc0ZDZmZTdhOWQyOTA3ZTkxNy5ub2RlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC14NjQvNTY2NzgxMmRkMTg3ODBjNzVlZmYwMGQzMGMzMDlkNTgwZWViOTc2MTM1NDY4NjM3YjVhNzVjYzBkZTM4N2E2MS5ub2RlIn0sIndpbjMyIjoiLy4uL3ByZWJ1aWxkcy93aW4zMi14NjQvNWRkMDk0ZjkxYmIzMWY4MGJhODU3ZjFiY2ZkNTRhOTQyOGQzZGYzNDhjNzhkOTQwZmIwYjhlZmEzMDY2OGQ4Ni5ub2RlIn0sInJlcXVpcmUtYWRkb24iOiIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9zaW1kbGUtbmF0aXZlL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9zaW1kbGUtbmF0aXZlL3BhY2thZ2UuanNvbiIsIi4vYmluZGluZyI6Ii9ub2RlX21vZHVsZXMvc2ltZGxlLW5hdGl2ZS9iaW5kaW5nLmpzIiwiYjRhIjoiL25vZGVfbW9kdWxlcy9iNGEvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9zaW1kbGUtbmF0aXZlL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvc2ltZGxlLXVuaXZlcnNhbC9mYWxsYmFjay5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvc2ltZGxlLXVuaXZlcnNhbC9wYWNrYWdlLmpzb24iLCIuL3NjYWxhciI6Ii9ub2RlX21vZHVsZXMvc2ltZGxlLXVuaXZlcnNhbC9zY2FsYXIuanMiLCJiNGEiOiIvbm9kZV9tb2R1bGVzL2I0YS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3NpbWRsZS11bml2ZXJzYWwvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3NpbWRsZS11bml2ZXJzYWwvcGFja2FnZS5qc29uIiwiLi9mYWxsYmFjayI6Ii9ub2RlX21vZHVsZXMvc2ltZGxlLXVuaXZlcnNhbC9mYWxsYmFjay5qcyIsInNpbWRsZS1uYXRpdmUiOiIvbm9kZV9tb2R1bGVzL3NpbWRsZS1uYXRpdmUvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9zaW1kbGUtdW5pdmVyc2FsL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvc2ltZGxlLXVuaXZlcnNhbC9zY2FsYXIuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3NpbWRsZS11bml2ZXJzYWwvcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvc29kaXVtLW5hdGl2ZS9iaW5kaW5nLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9zb2RpdW0tbmF0aXZlL3BhY2thZ2UuanNvbiIsIi4iOnsiZGFyd2luIjp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4tYXJtNjQvOGYyZjcwMTBhYzRiMzkwM2JkZTRkM2RkYzc0OTY1MWZlNzczMGU3N2YwNTE2MmRmOWViYTU4ZDM4ZWUzYzJiOS5ub2RlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9kYXJ3aW4teDY0LzI5NWExOWI4ODczY2ZjM2MwNWRkNzNhYTA3YjhlYzE4MGI0MGNjNjYyMWRlNGMzMzJkYmE0OTdiNTJmNjdhNDQubm9kZSJ9LCJsaW51eCI6eyJhcm02NCI6Ii8uLi9wcmVidWlsZHMvbGludXgtYXJtNjQvYmJhMmY5MWMyNmU0Mjc1NjM0ZTUyODg2NWUzZTVkMDMzNjJjYzE2ZDQ4MmM2NzQ4ODU2MzhjMTQ2Yjc2NzcxYS5ub2RlIiwieDY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC14NjQvMmU0M2E1YWUxNDc4MzExNzJhMWY0MzlmNzE3YzExMjEyMTI0YTgyZWMxZTg3ODUwY2U3YTM5ZmUyY2NjZjU4Mi5ub2RlIn0sIndpbjMyIjoiLy4uL3ByZWJ1aWxkcy93aW4zMi14NjQvYjJmZWQzNTcwN2Q5YzNiN2JlNzNkOWVkOGE3OGE5Yjc3NjEyYWExMDQwZGRiMTEwMzE0ZjNmOGFjNTUxZGRkZi5ub2RlIn0sInJlcXVpcmUtYWRkb24iOiIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9zb2RpdW0tbmF0aXZlL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9zb2RpdW0tbmF0aXZlL3BhY2thZ2UuanNvbiIsIi4vYmluZGluZyI6Ii9ub2RlX21vZHVsZXMvc29kaXVtLW5hdGl2ZS9iaW5kaW5nLmpzIiwid2hpY2gtcnVudGltZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3NvZGl1bS1uYXRpdmUvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy9zb2RpdW0tdW5pdmVyc2FsL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy9zb2RpdW0tdW5pdmVyc2FsL3BhY2thZ2UuanNvbiIsInNvZGl1bS1uYXRpdmUiOiIvbm9kZV9tb2R1bGVzL3NvZGl1bS1uYXRpdmUvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy9zb2RpdW0tdW5pdmVyc2FsL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvc3RyZWFteC9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvc3RyZWFteC9wYWNrYWdlLmpzb24iLCJldmVudHMiOiIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL2luZGV4LmpzIiwiZmFzdC1maWZvIjoiL25vZGVfbW9kdWxlcy9mYXN0LWZpZm8vaW5kZXguanMiLCJ0ZXh0LWRlY29kZXIiOiIvbm9kZV9tb2R1bGVzL3RleHQtZGVjb2Rlci9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3N0cmVhbXgvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy90ZXh0LWRlY29kZXIvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3RleHQtZGVjb2Rlci9wYWNrYWdlLmpzb24iLCIuL2xpYi9wYXNzLXRocm91Z2gtZGVjb2RlciI6Ii9ub2RlX21vZHVsZXMvdGV4dC1kZWNvZGVyL2xpYi9wYXNzLXRocm91Z2gtZGVjb2Rlci5qcyIsIi4vbGliL3V0ZjgtZGVjb2RlciI6Ii9ub2RlX21vZHVsZXMvdGV4dC1kZWNvZGVyL2xpYi91dGY4LWRlY29kZXIuanMifSwiL25vZGVfbW9kdWxlcy90ZXh0LWRlY29kZXIvbGliL3Bhc3MtdGhyb3VnaC1kZWNvZGVyLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy90ZXh0LWRlY29kZXIvcGFja2FnZS5qc29uIiwiYjRhIjoiL25vZGVfbW9kdWxlcy9iNGEvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy90ZXh0LWRlY29kZXIvbGliL3V0ZjgtZGVjb2Rlci5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvdGV4dC1kZWNvZGVyL3BhY2thZ2UuanNvbiIsImI0YSI6Ii9ub2RlX21vZHVsZXMvYjRhL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvdGV4dC1kZWNvZGVyL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL2FueS5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL3BhY2thZ2UuanNvbiIsImI0YSI6Ii9ub2RlX21vZHVsZXMvYjRhL2luZGV4LmpzIiwiY29tcGFjdC1lbmNvZGluZyI6Ii9ub2RlX21vZHVsZXMvY29tcGFjdC1lbmNvZGluZy9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3RpbnktYnVmZmVyLXJwYy9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL3BhY2thZ2UuanNvbiIsIi4vbWVzc2FnZXMuanMiOiIvbm9kZV9tb2R1bGVzL3RpbnktYnVmZmVyLXJwYy9tZXNzYWdlcy5qcyIsImI0YSI6Ii9ub2RlX21vZHVsZXMvYjRhL2luZGV4LmpzIiwiY29tcGFjdC1lbmNvZGluZyI6Ii9ub2RlX21vZHVsZXMvY29tcGFjdC1lbmNvZGluZy9pbmRleC5qcyIsInNhZmV0eS1jYXRjaCI6Ii9ub2RlX21vZHVsZXMvc2FmZXR5LWNhdGNoL2luZGV4LmpzIiwic3RyZWFteCI6Ii9ub2RlX21vZHVsZXMvc3RyZWFteC9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3RpbnktYnVmZmVyLXJwYy9tZXNzYWdlcy5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL3BhY2thZ2UuanNvbiIsImNvbXBhY3QtZW5jb2RpbmciOiIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy90aW55LWJ1ZmZlci1ycGMvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL2JpbmRpbmcuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvcGFja2FnZS5qc29uIiwiLiI6eyJkYXJ3aW4iOnsiYXJtNjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi1hcm02NC9jNDM4YzQxOGE4MjkyN2I2NzU2M2JlOThkNTVhYTlmZDI5ODIyYjM2NjMwNmRkY2M0YTQ3YjkxYzNmNzg2Mzc4Lm5vZGUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2Rhcndpbi14NjQvOTY1YmE1Y2E4ZjQ1OGY1YjkyOWFmOTAzZmJkZDBmMTViNTNiMzc0NjcxY2VhNTJlN2JhZmRlNDdkN2E0ZjI2Zi5ub2RlIn0sImxpbnV4Ijp7ImFybTY0IjoiLy4uL3ByZWJ1aWxkcy9saW51eC1hcm02NC8wNDAzYTQ0YWJkNTlmZjdhNzQ1YTFiM2FiNjVhM2YxNzM0OTc5YWZkOTEzMzZhYTIwMmVhZWI4YzkyYzlhYTcwLm5vZGUiLCJ4NjQiOiIvLi4vcHJlYnVpbGRzL2xpbnV4LXg2NC9mYzlhOGYzNWMzYmE4MDcwMzc3ZGVkOTE4NGJlN2NhYzU1OWFkNzQ2Mzc2ZjNmMmE2YzIzOTk2NDdlNDliOGYwLm5vZGUifSwid2luMzIiOiIvLi4vcHJlYnVpbGRzL3dpbjMyLXg2NC83OTVjZmMwNzFmZTQyMTFiMjExOWMzNzc0M2YxY2FkZDM0ZGZhZDkzNmY1MGY4MDc1N2ZhMDVlYTdiZTIwNDI0Lm5vZGUifSwicmVxdWlyZS1hZGRvbiI6Ii9ub2RlX21vZHVsZXMvcmVxdWlyZS1hZGRvbi9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvbGliL2lwLmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL3BhY2thZ2UuanNvbiJ9LCIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvbGliL25ldHdvcmstaW50ZXJmYWNlcy5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9wYWNrYWdlLmpzb24iLCIuLi9iaW5kaW5nIjoiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL2JpbmRpbmcuanMiLCJiNGEiOiIvbm9kZV9tb2R1bGVzL2I0YS9pbmRleC5qcyIsImV2ZW50cyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1ldmVudHMvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL2xpYi9zb2NrZXQuanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvcGFja2FnZS5qc29uIiwiLi4vYmluZGluZyI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9iaW5kaW5nLmpzIiwiLi9pcCI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9saWIvaXAuanMiLCJiNGEiOiIvbm9kZV9tb2R1bGVzL2I0YS9pbmRleC5qcyIsImV2ZW50cyI6Ii9ub2RlX21vZHVsZXMvYmFyZS1ldmVudHMvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL2xpYi9zdHJlYW0uanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvcGFja2FnZS5qc29uIiwiLi4vYmluZGluZyI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9iaW5kaW5nLmpzIiwiLi9pcCI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9saWIvaXAuanMiLCJiNGEiOiIvbm9kZV9tb2R1bGVzL2I0YS9pbmRleC5qcyIsInN0cmVhbXgiOiIvbm9kZV9tb2R1bGVzL3N0cmVhbXgvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL2xpYi91ZHguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvcGFja2FnZS5qc29uIiwiLi4vYmluZGluZyI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9iaW5kaW5nLmpzIiwiLi9pcCI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9saWIvaXAuanMiLCIuL25ldHdvcmstaW50ZXJmYWNlcyI6Ii9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9saWIvbmV0d29yay1pbnRlcmZhY2VzLmpzIiwiLi9zb2NrZXQiOiIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvbGliL3NvY2tldC5qcyIsIi4vc3RyZWFtIjoiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL2xpYi9zdHJlYW0uanMiLCJiNGEiOiIvbm9kZV9tb2R1bGVzL2I0YS9pbmRleC5qcyJ9LCIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy91bml4LXBhdGgtcmVzb2x2ZS9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvdW5peC1wYXRoLXJlc29sdmUvcGFja2FnZS5qc29uIn0sIi9ub2RlX21vZHVsZXMvdW5peC1wYXRoLXJlc29sdmUvcGFja2FnZS5qc29uIjp7fSwiL25vZGVfbW9kdWxlcy91cmwtZmlsZS11cmwvaW5kZXguanMiOnsiI3BhY2thZ2UiOiIvbm9kZV9tb2R1bGVzL3VybC1maWxlLXVybC9wYWNrYWdlLmpzb24iLCJwYXRoIjoiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvaW5kZXguanMiLCJ3aGljaC1ydW50aW1lIjoiL25vZGVfbW9kdWxlcy93aGljaC1ydW50aW1lL2luZGV4LmpzIn0sIi9ub2RlX21vZHVsZXMvdXJsLWZpbGUtdXJsL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyI6eyIjcGFja2FnZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9wYWNrYWdlLmpzb24ifSwiL25vZGVfbW9kdWxlcy93aGljaC1ydW50aW1lL3BhY2thZ2UuanNvbiI6e30sIi9ub2RlX21vZHVsZXMvejMyL2luZGV4LmpzIjp7IiNwYWNrYWdlIjoiL25vZGVfbW9kdWxlcy96MzIvcGFja2FnZS5qc29uIiwiYjRhIjoiL25vZGVfbW9kdWxlcy9iNGEvaW5kZXguanMifSwiL25vZGVfbW9kdWxlcy96MzIvcGFja2FnZS5qc29uIjp7fSwiL3BhY2thZ2UuanNvbiI6e30sIi9wcmVsb2FkLmpzIjp7IiNwYWNrYWdlIjoiL3BhY2thZ2UuanNvbiIsIi4vZ3VpIjoiL2d1aS9pbmRleC5qcyIsImVsZWN0cm9uIjoiYnVpbHRpbjplbGVjdHJvbiIsInBlYXItYXBpIjoiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9pbmRleC5qcyIsInBlYXItYXBpL2d1bmsiOiIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2d1bmsuanMiLCJzY3JpcHQtbGlua2VyL3J1bnRpbWUiOiIvbm9kZV9tb2R1bGVzL3NjcmlwdC1saW5rZXIvcnVudGltZS5qcyIsInRpbWVycyI6ImJ1aWx0aW46dGltZXJzIiwid2hpY2gtcnVudGltZSI6Ii9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9pbmRleC5qcyJ9fSwiYWRkb25zIjpbXSwiYXNzZXRzIjpbXSwiZmlsZXMiOnsiL2FwaS5qcyI6eyJvZmZzZXQiOjAsImxlbmd0aCI6MTMyMjcsIm1vZGUiOjQyMH0sIi9ib290LmpzIjp7Im9mZnNldCI6MTMyMjcsImxlbmd0aCI6OTE5LCJtb2RlIjo0MjB9LCIvZWxlY3Ryb24tbWFpbi5qcyI6eyJvZmZzZXQiOjE0MTQ2LCJsZW5ndGgiOjM2NDAsIm1vZGUiOjQyMH0sIi9ndWkvZGVjYWwuanMiOnsib2Zmc2V0IjoxNzc4NiwibGVuZ3RoIjo2NzY5NDksIm1vZGUiOjQyMH0sIi9ndWkvZ3VpLmpzIjp7Im9mZnNldCI6Njk0NzM1LCJsZW5ndGgiOjY2NDM3LCJtb2RlIjo0MjB9LCIvZ3VpL2ljb25zL2JhZGdlLTEuanMiOnsib2Zmc2V0Ijo3NjExNzIsImxlbmd0aCI6MjAwNiwibW9kZSI6NDIwfSwiL2d1aS9pY29ucy9iYWRnZS0yLmpzIjp7Im9mZnNldCI6NzYzMTc4LCJsZW5ndGgiOjI4MDYsIm1vZGUiOjQyMH0sIi9ndWkvaWNvbnMvYmFkZ2UtMy5qcyI6eyJvZmZzZXQiOjc2NTk4NCwibGVuZ3RoIjozMDE4LCJtb2RlIjo0MjB9LCIvZ3VpL2ljb25zL2JhZGdlLTQuanMiOnsib2Zmc2V0Ijo3NjkwMDIsImxlbmd0aCI6MjQzNCwibW9kZSI6NDIwfSwiL2d1aS9pY29ucy9iYWRnZS01LmpzIjp7Im9mZnNldCI6NzcxNDM2LCJsZW5ndGgiOjI4MjYsIm1vZGUiOjQyMH0sIi9ndWkvaWNvbnMvYmFkZ2UtNi5qcyI6eyJvZmZzZXQiOjc3NDI2MiwibGVuZ3RoIjozMjI2LCJtb2RlIjo0MjB9LCIvZ3VpL2ljb25zL2JhZGdlLTcuanMiOnsib2Zmc2V0Ijo3Nzc0ODgsImxlbmd0aCI6MjI4NiwibW9kZSI6NDIwfSwiL2d1aS9pY29ucy9iYWRnZS04LmpzIjp7Im9mZnNldCI6Nzc5Nzc0LCJsZW5ndGgiOjMyNzgsIm1vZGUiOjQyMH0sIi9ndWkvaWNvbnMvYmFkZ2UtOS5qcyI6eyJvZmZzZXQiOjc4MzA1MiwibGVuZ3RoIjozMjI2LCJtb2RlIjo0MjB9LCIvZ3VpL2ljb25zL2JhZGdlLW1vcmUuanMiOnsib2Zmc2V0Ijo3ODYyNzgsImxlbmd0aCI6MTk4MiwibW9kZSI6NDIwfSwiL2d1aS9pY29ucy9saW51eC5qcyI6eyJvZmZzZXQiOjc4ODI2MCwibGVuZ3RoIjoxNTU4LCJtb2RlIjo0MjB9LCIvZ3VpL2ljb25zL3RyYXkuanMiOnsib2Zmc2V0Ijo3ODk4MTgsImxlbmd0aCI6NjQyLCJtb2RlIjo0MjB9LCIvZ3VpL2luZGV4LmpzIjp7Im9mZnNldCI6NzkwNDYwLCJsZW5ndGgiOjEwMCwibW9kZSI6NDIwfSwiL2d1aS9pcGMuanMiOnsib2Zmc2V0Ijo3OTA1NjAsImxlbmd0aCI6NjcyMSwibW9kZSI6NDIwfSwiL2d1aS9wcmVsb2FkLmpzIjp7Im9mZnNldCI6Nzk3MjgxLCJsZW5ndGgiOjgyOCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iNGEvaW5kZXguanMiOnsib2Zmc2V0Ijo3OTgxMDksImxlbmd0aCI6NDA5MiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iNGEvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6ODAyMjAxLCJsZW5ndGgiOjcwMSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLWFkZG9uLXJlc29sdmUvaW5kZXguanMiOnsib2Zmc2V0Ijo4MDI5MDIsImxlbmd0aCI6MTA4MDEsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1hZGRvbi1yZXNvbHZlL2xpYi9lcnJvcnMuanMiOnsib2Zmc2V0Ijo4MTM3MDMsImxlbmd0aCI6NjQyLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtYWRkb24tcmVzb2x2ZS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0Ijo4MTQzNDUsImxlbmd0aCI6MTE3NSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLWRhZW1vbi9iaW5kaW5nL2JhcmUuanMiOnsib2Zmc2V0Ijo4MTU1MjAsImxlbmd0aCI6MzcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1kYWVtb24vaW5kZXguanMiOnsib2Zmc2V0Ijo4MTU1NTcsImxlbmd0aCI6NjUxLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZGFlbW9uL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjgxNjIwOCwibGVuZ3RoIjoxNTExLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZW52L2luZGV4LmpzIjp7Im9mZnNldCI6ODE3NzE5LCJsZW5ndGgiOjEwMjMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1lbnYvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6ODE4NzQyLCJsZW5ndGgiOjY0OSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLWV2ZW50cy9pbmRleC5qcyI6eyJvZmZzZXQiOjgxOTM5MSwibGVuZ3RoIjo2OTk5LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL2xpYi9lcnJvcnMuanMiOnsib2Zmc2V0Ijo4MjYzOTAsImxlbmd0aCI6NzExLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZXZlbnRzL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjgyNzEwMSwibGVuZ3RoIjo5NDQsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1mcy9iaW5kaW5nLmpzIjp7Im9mZnNldCI6ODI4MDQ1LCJsZW5ndGgiOjMzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtZnMvaW5kZXguanMiOnsib2Zmc2V0Ijo4MjgwNzgsImxlbmd0aCI6NTg5NzgsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1mcy9saWIvY29uc3RhbnRzLmpzIjp7Im9mZnNldCI6ODg3MDU2LCJsZW5ndGgiOjE0OTQsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1mcy9wYWNrYWdlLmpzb24iOnsib2Zmc2V0Ijo4ODg1NTAsImxlbmd0aCI6MTQ1MSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLWhydGltZS9iaW5kaW5nLmpzIjp7Im9mZnNldCI6ODkwMDAxLCJsZW5ndGgiOjMzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtaHJ0aW1lL2luZGV4LmpzIjp7Im9mZnNldCI6ODkwMDM0LCJsZW5ndGgiOjM5OSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLWhydGltZS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0Ijo4OTA0MzMsImxlbmd0aCI6OTA2LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtbW9kdWxlLXJlc29sdmUvaW5kZXguanMiOnsib2Zmc2V0Ijo4OTEzMzksImxlbmd0aCI6MjA0NjIsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1tb2R1bGUtcmVzb2x2ZS9saWIvZXJyb3JzLmpzIjp7Im9mZnNldCI6OTExODAxLCJsZW5ndGgiOjExOTUsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1tb2R1bGUtcmVzb2x2ZS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0Ijo5MTI5OTYsImxlbmd0aCI6MTE0MywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLW9zL2JpbmRpbmcuanMiOnsib2Zmc2V0Ijo5MTQxMzksImxlbmd0aCI6MzMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1vcy9pbmRleC5qcyI6eyJvZmZzZXQiOjkxNDE3MiwibGVuZ3RoIjoyNDMzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtb3MvbGliL2NvbnN0YW50cy5qcyI6eyJvZmZzZXQiOjkxNjYwNSwibGVuZ3RoIjoxMTMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1vcy9saWIvZXJyb3JzLmpzIjp7Im9mZnNldCI6OTE2NzE4LCJsZW5ndGgiOjQ3OSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLW9zL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjkxNzE5NywibGVuZ3RoIjoxMDIzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9pbmRleC5qcyI6eyJvZmZzZXQiOjkxODIyMCwibGVuZ3RoIjozMDYsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL2xpYi9jb25zdGFudHMuanMiOnsib2Zmc2V0Ijo5MTg1MjYsImxlbmd0aCI6MjQ3LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9saWIvcG9zaXguanMiOnsib2Zmc2V0Ijo5MTg3NzMsImxlbmd0aCI6NTk5MSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXBhdGgvbGliL3NoYXJlZC5qcyI6eyJvZmZzZXQiOjkyNDc2NCwibGVuZ3RoIjoxODg4LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcGF0aC9saWIvd2luMzIuanMiOnsib2Zmc2V0Ijo5MjY2NTIsImxlbmd0aCI6MTM0MjcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1wYXRoL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjk0MDA3OSwibGVuZ3RoIjo3OTYsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1waXBlL2JpbmRpbmcuanMiOnsib2Zmc2V0Ijo5NDA4NzUsImxlbmd0aCI6MzMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1waXBlL2luZGV4LmpzIjp7Im9mZnNldCI6OTQwOTA4LCJsZW5ndGgiOjEwNjUyLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcGlwZS9saWIvY29uc3RhbnRzLmpzIjp7Im9mZnNldCI6OTUxNTYwLCJsZW5ndGgiOjE4OCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXBpcGUvbGliL2Vycm9ycy5qcyI6eyJvZmZzZXQiOjk1MTc0OCwibGVuZ3RoIjo3MTEsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1waXBlL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjk1MjQ1OSwibGVuZ3RoIjoxMjU1LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcHJvY2Vzcy9pbmRleC5qcyI6eyJvZmZzZXQiOjk1MzcxNCwibGVuZ3RoIjozMTA5LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtcHJvY2Vzcy9wYWNrYWdlLmpzb24iOnsib2Zmc2V0Ijo5NTY4MjMsImxlbmd0aCI6MTEzNiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXNlbXZlci9pbmRleC5qcyI6eyJvZmZzZXQiOjk1Nzk1OSwibGVuZ3RoIjo0NjksIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL2NvbXBhcmF0b3IuanMiOnsib2Zmc2V0Ijo5NTg0MjgsImxlbmd0aCI6NzA1LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtc2VtdmVyL2xpYi9jb25zdGFudHMuanMiOnsib2Zmc2V0Ijo5NTkxMzMsImxlbmd0aCI6NjcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL2Vycm9ycy5qcyI6eyJvZmZzZXQiOjk1OTIwMCwibGVuZ3RoIjo1MjksIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL3JhbmdlLmpzIjp7Im9mZnNldCI6OTU5NzI5LCJsZW5ndGgiOjI0MjksIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1zZW12ZXIvbGliL3ZlcnNpb24uanMiOnsib2Zmc2V0Ijo5NjIxNTgsImxlbmd0aCI6MzgyNCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXNlbXZlci9wYWNrYWdlLmpzb24iOnsib2Zmc2V0Ijo5NjU5ODIsImxlbmd0aCI6ODY4LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtc2lnbmFscy9iaW5kaW5nLmpzIjp7Im9mZnNldCI6OTY2ODUwLCJsZW5ndGgiOjMzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtc2lnbmFscy9pbmRleC5qcyI6eyJvZmZzZXQiOjk2Njg4MywibGVuZ3RoIjoxMzI1LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtc2lnbmFscy9saWIvZW1pdHRlci5qcyI6eyJvZmZzZXQiOjk2ODIwOCwibGVuZ3RoIjoxMjE2LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtc2lnbmFscy9saWIvZXJyb3JzLmpzIjp7Im9mZnNldCI6OTY5NDI0LCJsZW5ndGgiOjM5MywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXNpZ25hbHMvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6OTY5ODE3LCJsZW5ndGgiOjExMTIsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1zdHJlYW0vaW5kZXguanMiOnsib2Zmc2V0Ijo5NzA5MjksImxlbmd0aCI6NzY0OSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXN0cmVhbS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0Ijo5Nzg1NzgsImxlbmd0aCI6MTIzNywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvYmluZGluZy5qcyI6eyJvZmZzZXQiOjk3OTgxNSwibGVuZ3RoIjozMywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvaW5kZXguanMiOnsib2Zmc2V0Ijo5Nzk4NDgsImxlbmd0aCI6NTE0NiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvbGliL2NvbnN0YW50cy5qcyI6eyJvZmZzZXQiOjk4NDk5NCwibGVuZ3RoIjo2OSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXN1YnByb2Nlc3MvbGliL2Vycm9ycy5qcyI6eyJvZmZzZXQiOjk4NTA2MywibGVuZ3RoIjo0MzcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS1zdWJwcm9jZXNzL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjk4NTUwMCwibGVuZ3RoIjoxNDcxLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtdHR5L2JpbmRpbmcuanMiOnsib2Zmc2V0Ijo5ODY5NzEsImxlbmd0aCI6MzMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS10dHkvaW5kZXguanMiOnsib2Zmc2V0Ijo5ODcwMDQsImxlbmd0aCI6NDQ1MSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9saWIvY29uc3RhbnRzLmpzIjp7Im9mZnNldCI6OTkxNDU1LCJsZW5ndGgiOjQ0MiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXR0eS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0Ijo5OTE4OTcsImxlbmd0aCI6MTA5NiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9iYXJlLXVybC9iaW5kaW5nLmpzIjp7Im9mZnNldCI6OTkyOTkzLCJsZW5ndGgiOjMzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtdXJsL2luZGV4LmpzIjp7Im9mZnNldCI6OTkzMDI2LCJsZW5ndGgiOjc5NTcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvYmFyZS11cmwvbGliL2Vycm9ycy5qcyI6eyJvZmZzZXQiOjEwMDA5ODMsImxlbmd0aCI6ODgxLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2JhcmUtdXJsL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEwMDE4NjQsImxlbmd0aCI6MTEwNCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9jb21wYWN0LWVuY29kaW5nL2VuZGlhbi5qcyI6eyJvZmZzZXQiOjEwMDI5NjgsImxlbmd0aCI6MTAzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvaW5kZXguanMiOnsib2Zmc2V0IjoxMDAzMDcxLCJsZW5ndGgiOjE5MDgyLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvbGV4aW50LmpzIjp7Im9mZnNldCI6MTAyMjE1MywibGVuZ3RoIjoyODI0LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2NvbXBhY3QtZW5jb2RpbmcvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTAyNDk3NywibGVuZ3RoIjo3MTMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvY29tcGFjdC1lbmNvZGluZy9yYXcuanMiOnsib2Zmc2V0IjoxMDI1NjkwLCJsZW5ndGgiOjQxMTgsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvY3JjLW5hdGl2ZS9iaW5kaW5nLmpzIjp7Im9mZnNldCI6MTAyOTgwOCwibGVuZ3RoIjo5MCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9jcmMtbmF0aXZlL2luZGV4LmpzIjp7Im9mZnNldCI6MTAyOTg5OCwibGVuZ3RoIjoxMjAsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvY3JjLW5hdGl2ZS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0IjoxMDMwMDE4LCJsZW5ndGgiOjk3MiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9jcmMtdW5pdmVyc2FsL2ZhbGxiYWNrLmpzIjp7Im9mZnNldCI6MTAzMDk5MCwibGVuZ3RoIjoyMDIwLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2NyYy11bml2ZXJzYWwvaW5kZXguanMiOnsib2Zmc2V0IjoxMDMzMDEwLCJsZW5ndGgiOjI1NywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9jcmMtdW5pdmVyc2FsL2xvb2t1cC5qcyI6eyJvZmZzZXQiOjEwMzMyNjcsImxlbmd0aCI6NDM5LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2NyYy11bml2ZXJzYWwvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTAzMzcwNiwibGVuZ3RoIjo4MTYsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvZmFzdC1maWZvL2ZpeGVkLXNpemUuanMiOnsib2Zmc2V0IjoxMDM0NTIyLCJsZW5ndGgiOjg3NSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9mYXN0LWZpZm8vaW5kZXguanMiOnsib2Zmc2V0IjoxMDM1Mzk3LCJsZW5ndGgiOjk3MiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9mYXN0LWZpZm8vcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTAzNjM2OSwibGVuZ3RoIjo2ODIsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvZnJhbWVkLXN0cmVhbS9pbmRleC5qcyI6eyJvZmZzZXQiOjEwMzcwNTEsImxlbmd0aCI6MzM1OCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9mcmFtZWQtc3RyZWFtL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEwNDA0MDksImxlbmd0aCI6NzIwLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2ZzLW5hdGl2ZS1leHRlbnNpb25zL2JpbmRpbmcuanMiOnsib2Zmc2V0IjoxMDQxMTI5LCJsZW5ndGgiOjkwLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2ZzLW5hdGl2ZS1leHRlbnNpb25zL2luZGV4LmpzIjp7Im9mZnNldCI6MTA0MTIxOSwibGVuZ3RoIjo2MzM5LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2ZzLW5hdGl2ZS1leHRlbnNpb25zL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEwNDc1NTgsImxlbmd0aCI6MTYwOSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9oeXBlcmNvcmUtY3J5cHRvL2luZGV4LmpzIjp7Im9mZnNldCI6MTA0OTE2NywibGVuZ3RoIjo1MDQwLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL2h5cGVyY29yZS1jcnlwdG8vcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTA1NDIwNywibGVuZ3RoIjo3NzEsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWlkLWVuY29kaW5nL2luZGV4LmpzIjp7Im9mZnNldCI6MTA1NDk3OCwibGVuZ3RoIjo5MjMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvaHlwZXJjb3JlLWlkLWVuY29kaW5nL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEwNTU5MDEsImxlbmd0aCI6Nzk5LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BhcGFyYW0vaW5kZXguanMiOnsib2Zmc2V0IjoxMDU2NzAwLCJsZW5ndGgiOjIwNDkwLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BhcGFyYW0vcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTA3NzE5MCwibGVuZ3RoIjo2NDksIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcGVhci1hcGkvY21kL2luZGV4LmpzIjp7Im9mZnNldCI6MTA3NzgzOSwibGVuZ3RoIjoyMDQsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcGVhci1hcGkvY21kL3BlYXIuanMiOnsib2Zmc2V0IjoxMDc4MDQzLCJsZW5ndGgiOjk2MywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jbWQvcnVuLmpzIjp7Im9mZnNldCI6MTA3OTAwNiwibGVuZ3RoIjoxODE2LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2NvbnN0YW50cy5qcyI6eyJvZmZzZXQiOjEwODA4MjIsImxlbmd0aCI6MzQwNiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9jcmFzaGVyLmpzIjp7Im9mZnNldCI6MTA4NDIyOCwibGVuZ3RoIjoyNDI2LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2Vycm9ycy5qcyI6eyJvZmZzZXQiOjEwODY2NTQsImxlbmd0aCI6MzY3NiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9ndW5rLmpzIjp7Im9mZnNldCI6MTA5MDMzMCwibGVuZ3RoIjoyNTU0LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL2luZGV4LmpzIjp7Im9mZnNldCI6MTA5Mjg4NCwibGVuZ3RoIjoxMTI4NiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9wZWFyLWFwaS9saW5rLmpzIjp7Im9mZnNldCI6MTEwNDE3MCwibGVuZ3RoIjoyMDgsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcGVhci1hcGkvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTEwNDM3OCwibGVuZ3RoIjoyNTAwLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3N0YXRlLmpzIjp7Im9mZnNldCI6MTEwNjg3OCwibGVuZ3RoIjo3ODg0LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3RlYXJkb3duLmpzIjp7Im9mZnNldCI6MTExNDc2MiwibGVuZ3RoIjoxNzQ4LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItYXBpL3RyeWJvb3QuanMiOnsib2Zmc2V0IjoxMTE2NTEwLCJsZW5ndGgiOjQ3NiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9wZWFyLWlwYy9hcGkuanMiOnsib2Zmc2V0IjoxMTE2OTg2LCJsZW5ndGgiOjE1MjcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcGVhci1pcGMvY2xpZW50LmpzIjp7Im9mZnNldCI6MTExODUxMywibGVuZ3RoIjo1MDM1LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL2NvbnN0YW50cy5qcyI6eyJvZmZzZXQiOjExMjM1NDgsImxlbmd0aCI6NzIxLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItaXBjL2luZGV4LmpzIjp7Im9mZnNldCI6MTEyNDI2OSwibGVuZ3RoIjoxNjQsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcGVhci1pcGMvbWV0aG9kcy5qcyI6eyJvZmZzZXQiOjExMjQ0MzMsImxlbmd0aCI6MTYyNSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9wZWFyLWlwYy9wYWNrYWdlLmpzb24iOnsib2Zmc2V0IjoxMTI2MDU4LCJsZW5ndGgiOjEzMDAsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcGVhci1pcGMvc2VydmVyLmpzIjp7Im9mZnNldCI6MTEyNzM1OCwibGVuZ3RoIjo3NjAwLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3BlYXItbGluay9pbmRleC5qcyI6eyJvZmZzZXQiOjExMzQ5NTgsImxlbmd0aCI6NDIwMywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9wZWFyLWxpbmsvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTEzOTE2MSwibGVuZ3RoIjo4NDcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcXVpY2tiaXQtbmF0aXZlL2JpbmRpbmcuanMiOnsib2Zmc2V0IjoxMTQwMDA4LCJsZW5ndGgiOjkwLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LW5hdGl2ZS9pbmRleC5qcyI6eyJvZmZzZXQiOjExNDAwOTgsImxlbmd0aCI6NDEyMywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9xdWlja2JpdC1uYXRpdmUvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTE0NDIyMSwibGVuZ3RoIjoxMDE4LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3F1aWNrYml0LXVuaXZlcnNhbC9mYWxsYmFjay5qcyI6eyJvZmZzZXQiOjExNDUyMzksImxlbmd0aCI6MTAyMDQsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcXVpY2tiaXQtdW5pdmVyc2FsL2luZGV4LmpzIjp7Im9mZnNldCI6MTE1NTQ0MywibGVuZ3RoIjo0NDIsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcXVpY2tiaXQtdW5pdmVyc2FsL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjExNTU4ODUsImxlbmd0aCI6OTA4LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3JlYWR5LXJlc291cmNlL2luZGV4LmpzIjp7Im9mZnNldCI6MTE1Njc5MywibGVuZ3RoIjoxMDkxLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3JlYWR5LXJlc291cmNlL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjExNTc4ODQsImxlbmd0aCI6NzY5LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3JlZmNvdW50ZXIvaW5kZXguanMiOnsib2Zmc2V0IjoxMTU4NjUzLCJsZW5ndGgiOjYxMSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9yZWZjb3VudGVyL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjExNTkyNjQsImxlbmd0aCI6NDUxLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3JlcXVpcmUtYWRkb24vaW5kZXguanMiOnsib2Zmc2V0IjoxMTU5NzE1LCJsZW5ndGgiOjI2MiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL2xpYi9ydW50aW1lLmpzIjp7Im9mZnNldCI6MTE1OTk3NywibGVuZ3RoIjoxMzAsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcmVxdWlyZS1hZGRvbi9saWIvcnVudGltZS9iYXJlLmpzIjp7Im9mZnNldCI6MTE2MDEwNywibGVuZ3RoIjo0NSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL2xpYi9ydW50aW1lL2RlZmF1bHQuanMiOnsib2Zmc2V0IjoxMTYwMTUyLCJsZW5ndGgiOjI2MCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9yZXF1aXJlLWFkZG9uL2xpYi9ydW50aW1lL25vZGUuanMiOnsib2Zmc2V0IjoxMTYwNDEyLCJsZW5ndGgiOjEwNzMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcmVxdWlyZS1hZGRvbi9wYWNrYWdlLmpzb24iOnsib2Zmc2V0IjoxMTYxNDg1LCJsZW5ndGgiOjEzMzUsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcmVzb2x2ZS1yZWplY3QtcHJvbWlzZS9pbmRleC5qcyI6eyJvZmZzZXQiOjExNjI4MjAsImxlbmd0aCI6NDQzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3Jlc29sdmUtcmVqZWN0LXByb21pc2UvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTE2MzI2MywibGVuZ3RoIjo1ODEsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvYmluZGluZy5qcyI6eyJvZmZzZXQiOjExNjM4NDQsImxlbmd0aCI6OTAsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvaW5kZXguanMiOnsib2Zmc2V0IjoxMTYzOTM0LCJsZW5ndGgiOjM5NzQsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL2JhdGNoLmpzIjp7Im9mZnNldCI6MTE2NzkwOCwibGVuZ3RoIjo4ODc1LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2xpYi9jb2x1bW4tZmFtaWx5LmpzIjp7Im9mZnNldCI6MTE3Njc4MywibGVuZ3RoIjoyMDY2LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2xpYi9maWx0ZXItcG9saWN5LmpzIjp7Im9mZnNldCI6MTE3ODg0OSwibGVuZ3RoIjo0MzcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvcm9ja3NkYi1uYXRpdmUvbGliL2l0ZXJhdG9yLmpzIjp7Im9mZnNldCI6MTE3OTI4NiwibGVuZ3RoIjo0MTg1LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2xpYi9zbmFwc2hvdC5qcyI6eyJvZmZzZXQiOjExODM0NzEsImxlbmd0aCI6NTAzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3JvY2tzZGItbmF0aXZlL2xpYi9zdGF0ZS5qcyI6eyJvZmZzZXQiOjExODM5NzQsImxlbmd0aCI6NzIzNCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9yb2Nrc2RiLW5hdGl2ZS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0IjoxMTkxMjA4LCJsZW5ndGgiOjEzNTcsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvc2FmZXR5LWNhdGNoL2luZGV4LmpzIjp7Im9mZnNldCI6MTE5MjU2NSwibGVuZ3RoIjo1MDYsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvc2FmZXR5LWNhdGNoL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjExOTMwNzEsImxlbmd0aCI6NTQ3LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3NjcmlwdC1saW5rZXIvZGVmYXVsdHMuanMiOnsib2Zmc2V0IjoxMTkzNjE4LCJsZW5ndGgiOjEyNTEsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvc2NyaXB0LWxpbmtlci9saWIvY29tcGlsZS5qcyI6eyJvZmZzZXQiOjExOTQ4NjksImxlbmd0aCI6MTM2LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3NjcmlwdC1saW5rZXIvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTE5NTAwNSwibGVuZ3RoIjo5MTksIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvc2NyaXB0LWxpbmtlci9ydW50aW1lLmpzIjp7Im9mZnNldCI6MTE5NTkyNCwibGVuZ3RoIjo2MTczLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3NpbWRsZS1uYXRpdmUvYmluZGluZy5qcyI6eyJvZmZzZXQiOjEyMDIwOTcsImxlbmd0aCI6OTAsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvc2ltZGxlLW5hdGl2ZS9pbmRleC5qcyI6eyJvZmZzZXQiOjEyMDIxODcsImxlbmd0aCI6MzIwMywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zaW1kbGUtbmF0aXZlL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEyMDUzOTAsImxlbmd0aCI6MTAwOCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zaW1kbGUtdW5pdmVyc2FsL2ZhbGxiYWNrLmpzIjp7Im9mZnNldCI6MTIwNjM5OCwibGVuZ3RoIjo1MTM3LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3NpbWRsZS11bml2ZXJzYWwvaW5kZXguanMiOnsib2Zmc2V0IjoxMjExNTM1LCJsZW5ndGgiOjEwMywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zaW1kbGUtdW5pdmVyc2FsL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEyMTE2MzgsImxlbmd0aCI6ODc5LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3NpbWRsZS11bml2ZXJzYWwvc2NhbGFyLmpzIjp7Im9mZnNldCI6MTIxMjUxNywibGVuZ3RoIjo0NjksIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvc29kaXVtLW5hdGl2ZS9iaW5kaW5nLmpzIjp7Im9mZnNldCI6MTIxMjk4NiwibGVuZ3RoIjo4OSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zb2RpdW0tbmF0aXZlL2luZGV4LmpzIjp7Im9mZnNldCI6MTIxMzA3NSwibGVuZ3RoIjo2NTQyMywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zb2RpdW0tbmF0aXZlL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEyNzg0OTgsImxlbmd0aCI6MTMwMywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zb2RpdW0tdW5pdmVyc2FsL2luZGV4LmpzIjp7Im9mZnNldCI6MTI3OTgwMSwibGVuZ3RoIjo0MiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zb2RpdW0tdW5pdmVyc2FsL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEyNzk4NDMsImxlbmd0aCI6MTIxNywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zdHJlYW14L2luZGV4LmpzIjp7Im9mZnNldCI6MTI4MTA2MCwibGVuZ3RoIjozMzE3NCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy9zdHJlYW14L3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEzMTQyMzQsImxlbmd0aCI6OTEyLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3RleHQtZGVjb2Rlci9pbmRleC5qcyI6eyJvZmZzZXQiOjEzMTUxNDYsImxlbmd0aCI6MTM3OCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy90ZXh0LWRlY29kZXIvbGliL3Bhc3MtdGhyb3VnaC1kZWNvZGVyLmpzIjp7Im9mZnNldCI6MTMxNjUyNCwibGVuZ3RoIjoyNzMsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvdGV4dC1kZWNvZGVyL2xpYi91dGY4LWRlY29kZXIuanMiOnsib2Zmc2V0IjoxMzE2Nzk3LCJsZW5ndGgiOjI1MjksIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvdGV4dC1kZWNvZGVyL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEzMTkzMjYsImxlbmd0aCI6OTg3LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3RpbnktYnVmZmVyLXJwYy9hbnkuanMiOnsib2Zmc2V0IjoxMzIwMzEzLCJsZW5ndGgiOjI0NzUsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL2luZGV4LmpzIjp7Im9mZnNldCI6MTMyMjc4OCwibGVuZ3RoIjoxMTcwNywibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy90aW55LWJ1ZmZlci1ycGMvbWVzc2FnZXMuanMiOnsib2Zmc2V0IjoxMzM0NDk1LCJsZW5ndGgiOjIxMDUsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvdGlueS1idWZmZXItcnBjL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEzMzY2MDAsImxlbmd0aCI6NzEzLCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvYmluZGluZy5qcyI6eyJvZmZzZXQiOjEzMzczMTMsImxlbmd0aCI6OTAsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9saWIvaXAuanMiOnsib2Zmc2V0IjoxMzM3NDAzLCJsZW5ndGgiOjIxNzksIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvdWR4LW5hdGl2ZS9saWIvbmV0d29yay1pbnRlcmZhY2VzLmpzIjp7Im9mZnNldCI6MTMzOTU4MiwibGVuZ3RoIjoxMzM1LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvbGliL3NvY2tldC5qcyI6eyJvZmZzZXQiOjEzNDA5MTcsImxlbmd0aCI6NzQ0NSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL2xpYi9zdHJlYW0uanMiOnsib2Zmc2V0IjoxMzQ4MzYyLCJsZW5ndGgiOjEyNTQ2LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3VkeC1uYXRpdmUvbGliL3VkeC5qcyI6eyJvZmZzZXQiOjEzNjA5MDgsImxlbmd0aCI6Mjg0MiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy91ZHgtbmF0aXZlL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEzNjM3NTAsImxlbmd0aCI6MTQ2OCwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy91bml4LXBhdGgtcmVzb2x2ZS9pbmRleC5qcyI6eyJvZmZzZXQiOjEzNjUyMTgsImxlbmd0aCI6MTM1NiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy91bml4LXBhdGgtcmVzb2x2ZS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0IjoxMzY2NTc0LCJsZW5ndGgiOjY1MSwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy91cmwtZmlsZS11cmwvaW5kZXguanMiOnsib2Zmc2V0IjoxMzY3MjI1LCJsZW5ndGgiOjE3MDIsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvdXJsLWZpbGUtdXJsL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEzNjg5MjcsImxlbmd0aCI6NzU1LCJtb2RlIjo0MjB9LCIvbm9kZV9tb2R1bGVzL3doaWNoLXJ1bnRpbWUvaW5kZXguanMiOnsib2Zmc2V0IjoxMzY5NjgyLCJsZW5ndGgiOjEyMjIsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvd2hpY2gtcnVudGltZS9wYWNrYWdlLmpzb24iOnsib2Zmc2V0IjoxMzcwOTA0LCJsZW5ndGgiOjYwMiwibW9kZSI6NDIwfSwiL25vZGVfbW9kdWxlcy96MzIvaW5kZXguanMiOnsib2Zmc2V0IjoxMzcxNTA2LCJsZW5ndGgiOjI2NTQsIm1vZGUiOjQyMH0sIi9ub2RlX21vZHVsZXMvejMyL3BhY2thZ2UuanNvbiI6eyJvZmZzZXQiOjEzNzQxNjAsImxlbmd0aCI6NzAxLCJtb2RlIjo0MjB9LCIvcGFja2FnZS5qc29uIjp7Im9mZnNldCI6MTM3NDg2MSwibGVuZ3RoIjoyMTcwLCJtb2RlIjo0MjB9LCIvcHJlbG9hZC5qcyI6eyJvZmZzZXQiOjEzNzcwMzEsImxlbmd0aCI6MTM4MTAsIm1vZGUiOjQyMH19fQovKiBnbG9iYWxzIFBlYXIgKi8KJ3VzZSBzdHJpY3QnCmNvbnN0IHN0cmVhbXggPSByZXF1aXJlKCdzdHJlYW14JykKY29uc3QgeyBFdmVudEVtaXR0ZXIgfSA9IHJlcXVpcmUoJ2V2ZW50cycpCgptb2R1bGUuZXhwb3J0cyA9IChhcGkpID0+IHsKICBjbGFzcyBBUEkgZXh0ZW5kcyBhcGkgewogICAgc3RhdGljIFVJID0gU3ltYm9sKCd1aScpCiAgICAjaXBjID0gbnVsbAoKICAgIC8vIFRoZXNlIGFyZSB2MiBtZXRob2RzIHRoYXQgd2Ugc2V0IHRvIHVuZGVmaW5lZCBzbyB0aGV5IGNhbnQgYmUgdXNlZAogICAgLy8gVGhpcyBpcyB0byBwcmV2ZW50IGlzc3VlcyB3aGVuIHdlIG1vdmUgdGhlIG1ldGhvZHMgdG8gbW9kdWxlcyBsYXRlciBvbgogICAgcnVuID0gdW5kZWZpbmVkCiAgICBnZXQgcGlwZSAoKSB7IHJldHVybiB1bmRlZmluZWQgfQogICAgZ2V0ID0gdW5kZWZpbmVkCiAgICBleGlzdHMgPSB1bmRlZmluZWQKICAgIGNvbXBhcmUgPSB1bmRlZmluZWQKICAgIGR1bXAgPSB1bmRlZmluZWQKICAgIHN0YWdlID0gdW5kZWZpbmVkCiAgICByZWxlYXNlID0gdW5kZWZpbmVkCiAgICBpbmZvID0gdW5kZWZpbmVkCiAgICBzZWVkID0gdW5kZWZpbmVkCgogICAgY29uc3RydWN0b3IgKGlwYywgc3RhdGUsIHRlYXJkb3duLCBpZCkgewogICAgICBzdXBlcihpcGMsIHN0YXRlLCB7IHRlYXJkb3duIH0pCiAgICAgIHRoaXMuI2lwYyA9IGlwYwogICAgICBjb25zdCBrR3VpQ3RybCA9IFN5bWJvbCgnZ3VpOmN0cmwnKQogICAgICBjb25zdCBtZWRpYSA9IHsKICAgICAgICBzdGF0dXM6IHsKICAgICAgICAgIG1pY3JvcGhvbmU6ICgpID0+IGlwYy5nZXRNZWRpYUFjY2Vzc1N0YXR1cyh7IGlkLCBtZWRpYTogJ21pY3JvcGhvbmUnIH0pLAogICAgICAgICAgY2FtZXJhOiAoKSA9PiBpcGMuZ2V0TWVkaWFBY2Nlc3NTdGF0dXMoeyBpZCwgbWVkaWE6ICdjYW1lcmEnIH0pLAogICAgICAgICAgc2NyZWVuOiAoKSA9PiBpcGMuZ2V0TWVkaWFBY2Nlc3NTdGF0dXMoeyBpZCwgbWVkaWE6ICdzY3JlZW4nIH0pCiAgICAgICAgfSwKICAgICAgICBhY2Nlc3M6IHsKICAgICAgICAgIG1pY3JvcGhvbmU6ICgpID0+IGlwYy5hc2tGb3JNZWRpYUFjY2Vzcyh7IGlkLCBtZWRpYTogJ21pY3JvcGhvbmUnIH0pLAogICAgICAgICAgY2FtZXJhOiAoKSA9PiBpcGMuYXNrRm9yTWVkaWFBY2Nlc3MoeyBpZCwgbWVkaWE6ICdjYW1lcmEnIH0pLAogICAgICAgICAgc2NyZWVuOiAoKSA9PiBpcGMuYXNrRm9yTWVkaWFBY2Nlc3MoeyBpZCwgbWVkaWE6ICdzY3JlZW4nIH0pCiAgICAgICAgfSwKICAgICAgICBkZXNrdG9wU291cmNlczogKG9wdGlvbnMgPSB7fSkgPT4gaXBjLmRlc2t0b3BTb3VyY2VzKG9wdGlvbnMpLAogICAgICAgIGdldFBhdGhGb3JGaWxlOiAoZmlsZSkgPT4gaXBjLmdldFBhdGhGb3JGaWxlKGZpbGUpCiAgICAgIH0KCiAgICAgIGNsYXNzIEZvdW5kIGV4dGVuZHMgc3RyZWFteC5SZWFkYWJsZSB7CiAgICAgICAgI2lkID0gbnVsbAogICAgICAgICNzdHJlYW0gPSBudWxsCiAgICAgICAgI2xpc3RlbmVyID0gKGRhdGEpID0+IHsKICAgICAgICAgIHRoaXMucHVzaChkYXRhLnJlc3VsdCkKICAgICAgICB9CgogICAgICAgIGNvbnN0cnVjdG9yIChpZCkgewogICAgICAgICAgc3VwZXIoKQogICAgICAgICAgdGhpcy4jaWQgPSBpZAogICAgICAgICAgdGhpcy4jc3RyZWFtID0gaXBjLmZvdW5kKHRoaXMuI2lkKQogICAgICAgICAgdGhpcy4jc3RyZWFtLm9uKCdkYXRhJywgdGhpcy4jbGlzdGVuZXIpCiAgICAgICAgfQoKICAgICAgICBwcm9jZWVkICgpIHsKICAgICAgICAgIHJldHVybiBpcGMuZmluZCh7IGlkOiB0aGlzLiNpZCwgbmV4dDogdHJ1ZSB9KQogICAgICAgIH0KCiAgICAgICAgY2xlYXIgKCkgewogICAgICAgICAgaWYgKHRoaXMuZGVzdHJveWVkKSB0aHJvdyBFcnJvcignTm90aGluZyB0byBjbGVhciwgYWxyZWFkeSBkZXN0cm95ZWQnKQogICAgICAgICAgcmV0dXJuIGlwYy5maW5kKHsgaWQ6IHRoaXMuI2lkLCBzdG9wOiAnY2xlYXInIH0pLmZpbmFsbHkoKCkgPT4gdGhpcy5kZXN0cm95KCkpCiAgICAgICAgfQoKICAgICAgICBrZWVwICgpIHsKICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgdGhyb3cgRXJyb3IoJ05vdGhpbmcgdG8ga2VlcCwgYWxyZWFkeSBkZXN0cm95ZWQnKQogICAgICAgICAgcmV0dXJuIGlwYy5maW5kKHsgaWQ6IHRoaXMuI2lkLCBzdG9wOiAna2VlcCcgfSkuZmluYWxseSgoKSA9PiB0aGlzLmRlc3Ryb3koKSkKICAgICAgICB9CgogICAgICAgIGFjdGl2YXRlICgpIHsKICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgdGhyb3cgRXJyb3IoJ05vdGhpbmcgdG8gYWN0aXZhdGUsIGFscmVhZHkgZGVzdHJveWVkJykKICAgICAgICAgIHJldHVybiBpcGMuZmluZCh7IGlkOiB0aGlzLiNpZCwgc3RvcDogJ2FjdGl2YXRlJyB9KS5maW5hbGx5KCgpID0+IHRoaXMuZGVzdHJveSgpKQogICAgICAgIH0KCiAgICAgICAgX2Rlc3Ryb3kgKCkgewogICAgICAgICAgdGhpcy4jc3RyZWFtLmRlc3Ryb3koKQogICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYXIoKQogICAgICAgIH0KICAgICAgfQoKICAgICAgY2xhc3MgUGFyZW50IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHsKICAgICAgICBjb25zdHJ1Y3RvciAoaWQpIHsKICAgICAgICAgIHN1cGVyKCkKICAgICAgICAgIHRoaXMuaWQgPSBpZAogICAgICAgICAgaXBjLnJlY2VpdmVGcm9tKGlkLCAoLi4uYXJncykgPT4gewogICAgICAgICAgICB0aGlzLmVtaXQoJ21lc3NhZ2UnLCAuLi5hcmdzKQogICAgICAgICAgfSkKICAgICAgICB9CgogICAgICAgIGFzeW5jIGZpbmQgKG9wdGlvbnMpIHsKICAgICAgICAgIGNvbnN0IGZvdW5kID0gbmV3IEZvdW5kKHRoaXMuaWQpCiAgICAgICAgICBhd2FpdCBpcGMuZmluZCh7IGlkOiB0aGlzLmlkLCBvcHRpb25zIH0pCiAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICB9CgogICAgICAgIHNlbmQgKC4uLmFyZ3MpIHsgcmV0dXJuIGlwYy5zZW5kVG8odGhpcy5pZCwgLi4uYXJncykgfQogICAgICAgIGZvY3VzIChvcHRpb25zID0gbnVsbCkgeyByZXR1cm4gaXBjLnBhcmVudCh7IGFjdDogJ2ZvY3VzJywgaWQ6IHRoaXMuaWQsIG9wdGlvbnMgfSkgfQogICAgICAgIGJsdXIgKCkgeyByZXR1cm4gaXBjLnBhcmVudCh7IGFjdDogJ2JsdXInLCBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgc2hvdyAoKSB7IHJldHVybiBpcGMucGFyZW50KHsgYWN0OiAnc2hvdycsIGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICBoaWRlICgpIHsgcmV0dXJuIGlwYy5wYXJlbnQoeyBhY3Q6ICdoaWRlJywgaWQ6IHRoaXMuaWQgfSkgfQogICAgICAgIG1pbmltaXplICgpIHsgcmV0dXJuIGlwYy5wYXJlbnQoeyBhY3Q6ICdtaW5pbWl6ZScsIGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICBtYXhpbWl6ZSAoKSB7IHJldHVybiBpcGMucGFyZW50KHsgYWN0OiAnbWF4aW1pemUnLCBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgZnVsbHNjcmVlbiAoKSB7IHJldHVybiBpcGMucGFyZW50KHsgYWN0OiAnZnVsbHNjcmVlbicsIGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICByZXN0b3JlICgpIHsgcmV0dXJuIGlwYy5wYXJlbnQoeyBhY3Q6ICdyZXN0b3JlJywgaWQ6IHRoaXMuaWQgfSkgfQogICAgICAgIGRpbWVuc2lvbnMgKG9wdGlvbnMgPSBudWxsKSB7IHJldHVybiBpcGMucGFyZW50KHsgYWN0OiAnZGltZW5zaW9ucycsIGlkOiB0aGlzLmlkLCBvcHRpb25zIH0pIH0KICAgICAgICBpc1Zpc2libGUgKCkgeyByZXR1cm4gaXBjLnBhcmVudCh7IGFjdDogJ2lzVmlzaWJsZScsIGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICBpc01pbmltaXplZCAoKSB7IHJldHVybiBpcGMucGFyZW50KHsgYWN0OiAnaXNNaW5pbWl6ZWQnLCBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgaXNNYXhpbWl6ZWQgKCkgeyByZXR1cm4gaXBjLnBhcmVudCh7IGFjdDogJ2lzTWF4aW1pemVkJywgaWQ6IHRoaXMuaWQgfSkgfQogICAgICAgIGlzRnVsbHNjcmVlbiAoKSB7IHJldHVybiBpcGMucGFyZW50KHsgYWN0OiAnaXNGdWxsc2NyZWVuJywgaWQ6IHRoaXMuaWQgfSkgfQogICAgICAgIGlzQ2xvc2VkICgpIHsgcmV0dXJuIGlwYy5wYXJlbnQoeyBhY3Q6ICdpc0Nsb3NlZCcsIGlkOiB0aGlzLmlkIH0pIH0KICAgICAgfQoKICAgICAgY2xhc3MgQXBwIHsKICAgICAgICBpZCA9IG51bGwKICAgICAgICAjdW50cmF5ID0gbnVsbAoKICAgICAgICBnZXQgcGFyZW50ICgpIHsKICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gaXBjLmdldFBhcmVudElkKCkKICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAncGFyZW50JywgeyB2YWx1ZTogbmV3IFBhcmVudChwYXJlbnRJZCkgfSkKICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudAogICAgICAgIH0KCiAgICAgICAgY29uc3RydWN0b3IgKGlkKSB7CiAgICAgICAgICB0aGlzLmlkID0gaWQKICAgICAgICAgIHRoaXMudHJheS5zY2FsZUZhY3RvciA9IHN0YXRlLnRyYXk/LnNjYWxlRmFjdG9yCiAgICAgICAgICB0aGlzLnRyYXkuZGFya01vZGUgPSBzdGF0ZS50cmF5Py5kYXJrTW9kZQoKICAgICAgICAgIGlwYy5zeXN0ZW1UaGVtZSgpLm9uKCdkYXRhJywgKHsgbW9kZSB9KSA9PiB7CiAgICAgICAgICAgIHRoaXMudHJheS5kYXJrTW9kZSA9IG1vZGUgPT09ICdkYXJrJwogICAgICAgICAgfSkKICAgICAgICB9CgogICAgICAgIGZpbmQgPSAob3B0aW9ucykgPT4gewogICAgICAgICAgY29uc3QgZm91bmQgPSBuZXcgRm91bmQodGhpcy5pZCkKICAgICAgICAgIGlwYy5maW5kKHsgaWQ6IHRoaXMuaWQsIG9wdGlvbnMgfSkKICAgICAgICAgIHJldHVybiBmb3VuZAogICAgICAgIH0KCiAgICAgICAgYmFkZ2UgPSAoY291bnQpID0+IHsKICAgICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcigrY291bnQpKSB0aHJvdyBuZXcgRXJyb3IoJ2FyZ3VtZW50IG11c3QgYmUgYW4gaW50ZWdlcicpCiAgICAgICAgICByZXR1cm4gaXBjLmJhZGdlKHsgaWQ6IHRoaXMuaWQsIGNvdW50IH0pCiAgICAgICAgfQoKICAgICAgICB0cmF5ID0gYXN5bmMgKG9wdHMgPSB7fSwgbGlzdGVuZXIpID0+IHsKICAgICAgICAgIG9wdHMgPSB7CiAgICAgICAgICAgIC4uLm9wdHMsCiAgICAgICAgICAgIG1lbnU6IG9wdHMubWVudSA/PyB7CiAgICAgICAgICAgICAgc2hvdzogYFNob3cgJHtzdGF0ZS5uYW1lfWAsCiAgICAgICAgICAgICAgcXVpdDogJ1F1aXQnCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGxpc3RlbmVyID0gbGlzdGVuZXIgPz8gKChrZXkpID0+IHsKICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2NsaWNrJyB8fCBrZXkgPT09ICdzaG93JykgewogICAgICAgICAgICAgIHRoaXMuc2hvdygpCiAgICAgICAgICAgICAgdGhpcy5mb2N1cyh7IHN0ZWFsOiB0cnVlIH0pCiAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3F1aXQnKSB7CiAgICAgICAgICAgICAgdGhpcy5xdWl0KCkKICAgICAgICAgICAgfQogICAgICAgICAgfSkKCiAgICAgICAgICBjb25zdCB1bnRyYXkgPSBhc3luYyAoKSA9PiB7CiAgICAgICAgICAgIGlmICh0aGlzLiN1bnRyYXkpIHsKICAgICAgICAgICAgICBhd2FpdCB0aGlzLiN1bnRyYXkoKQogICAgICAgICAgICAgIHRoaXMuI3VudHJheSA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGF3YWl0IHVudHJheSgpCiAgICAgICAgICB0aGlzLiN1bnRyYXkgPSBpcGMudHJheShvcHRzLCBsaXN0ZW5lcikKICAgICAgICAgIHJldHVybiB1bnRyYXkKICAgICAgICB9CgogICAgICAgIGZvY3VzID0gKG9wdGlvbnMgPSBudWxsKSA9PiB7IHJldHVybiBpcGMuZm9jdXMoeyBpZDogdGhpcy5pZCwgb3B0aW9ucyB9KSB9CiAgICAgICAgYmx1ciA9ICgpID0+IHsgcmV0dXJuIGlwYy5ibHVyKHsgaWQ6IHRoaXMuaWQgfSkgfQogICAgICAgIHNob3cgPSAoKSA9PiB7IHJldHVybiBpcGMuc2hvdyh7IGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICBoaWRlID0gKCkgPT4geyByZXR1cm4gaXBjLmhpZGUoeyBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgbWluaW1pemUgPSAoKSA9PiB7IHJldHVybiBpcGMubWluaW1pemUoeyBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgbWF4aW1pemUgPSAoKSA9PiB7IHJldHVybiBpcGMubWF4aW1pemUoeyBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgZnVsbHNjcmVlbiA9ICgpID0+IHsgcmV0dXJuIGlwYy5mdWxsc2NyZWVuKHsgaWQ6IHRoaXMuaWQgfSkgfQogICAgICAgIHJlc3RvcmUgPSAoKSA9PiB7IHJldHVybiBpcGMucmVzdG9yZSh7IGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICBjbG9zZSA9ICgpID0+IHsgcmV0dXJuIGlwYy5jbG9zZSh7IGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICBxdWl0ID0gKCkgPT4geyByZXR1cm4gaXBjLnF1aXQoeyBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgZGltZW5zaW9ucyAob3B0aW9ucyA9IG51bGwpIHsgcmV0dXJuIGlwYy5kaW1lbnNpb25zKHsgaWQ6IHRoaXMuaWQsIG9wdGlvbnMgfSkgfQogICAgICAgIGlzVmlzaWJsZSA9ICgpID0+IHsgcmV0dXJuIGlwYy5pc1Zpc2libGUoeyBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgaXNNaW5pbWl6ZWQgPSAoKSA9PiB7IHJldHVybiBpcGMuaXNNaW5pbWl6ZWQoeyBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgaXNNYXhpbWl6ZWQgPSAoKSA9PiB7IHJldHVybiBpcGMuaXNNYXhpbWl6ZWQoeyBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgaXNGdWxsc2NyZWVuID0gKCkgPT4geyByZXR1cm4gaXBjLmlzRnVsbHNjcmVlbih7IGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICByZXBvcnQgPSAocnB0KSA9PiB7IHJldHVybiBpcGMucmVwb3J0KHJwdCkgfQogICAgICB9CgogICAgICBjbGFzcyBHdWlDdHJsIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHsKICAgICAgICAjbGlzdGVuZXIgPSBudWxsCiAgICAgICAgI3VubGlzdGVuID0gbnVsbAoKICAgICAgICBzdGF0aWMgZ2V0IHBhcmVudCAoKSB7CiAgICAgICAgICBpZiAoIWFwaS5DT01QQVQpIGNvbnNvbGUud2FybignUGVhci5XaW5kb3cucGFyZW50ICYgUGVhci5WaWV3LnBhcmVudCBhcmUgZGVwcmVjYXRlZCB1c2UgdWkuYXBwLnBhcmVudCcpCiAgICAgICAgICByZXR1cm4gUGVhcltBUEkuVUldLmFwcC5wYXJlbnQKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBnZXQgc2VsZiAoKSB7CiAgICAgICAgICBpZiAoIWFwaS5DT01QQVQpIGNvbnNvbGUud2FybignUGVhci5XaW5kb3cuc2VsZiAmIFBlYXIuVmlldy5zZWxmIGFyZSBkZXByZWNhdGVkIHVzZSB1aS5hcHAnKQogICAgICAgICAgcmV0dXJuIFBlYXJbQVBJLlVJXS5hcHAKICAgICAgICB9CgogICAgICAgIGNvbnN0cnVjdG9yIChlbnRyeSwgYXQsIG9wdGlvbnMgPSBhdCkgewogICAgICAgICAgc3VwZXIoKQogICAgICAgICAgaWYgKG9wdGlvbnMgPT09IGF0KSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgYXQgPT09ICdzdHJpbmcnKSBvcHRpb25zID0geyBhdCB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIWVudHJ5KSB0aHJvdyBuZXcgRXJyb3IoYE5vIHBhdGggcHJvdmlkZWQsIGNhbm5vdCBvcGVuICR7dGhpcy5jb25zdHJ1Y3RvcltrR3VpQ3RybF19YCkKICAgICAgICAgIHRoaXMuZW50cnkgPSBlbnRyeQogICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucwogICAgICAgICAgdGhpcy5pZCA9IG51bGwKICAgICAgICB9CgogICAgICAgICNyeHR4ICgpIHsKICAgICAgICAgIHRoaXMuI2xpc3RlbmVyID0gKGUsIC4uLmFyZ3MpID0+IHRoaXMuZW1pdCgnbWVzc2FnZScsIC4uLmFyZ3MpCiAgICAgICAgICB0aGlzLiN1bmxpc3RlbiA9IGlwYy5yZWNlaXZlRnJvbSh0aGlzLiNsaXN0ZW5lcikKICAgICAgICB9CgogICAgICAgICN1bnJ4dHggKCkgewogICAgICAgICAgaWYgKHRoaXMuI3VubGlzdGVuID09PSBudWxsKSByZXR1cm4KICAgICAgICAgIHRoaXMuI3VubGlzdGVuKCkKICAgICAgICAgIHRoaXMuI3VubGlzdGVuID0gbnVsbAogICAgICAgICAgdGhpcy4jbGlzdGVuZXIgPSBudWxsCiAgICAgICAgfQoKICAgICAgICBmaW5kID0gYXN5bmMgKG9wdGlvbnMpID0+IHsKICAgICAgICAgIGNvbnN0IGZvdW5kID0gbmV3IEZvdW5kKHRoaXMuaWQpCiAgICAgICAgICBhd2FpdCBpcGMuZmluZCh7IGlkOiB0aGlzLmlkLCBvcHRpb25zIH0pCiAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICB9CgogICAgICAgIHNlbmQgKC4uLmFyZ3MpIHsgcmV0dXJuIGlwYy5zZW5kVG8odGhpcy5pZCwgLi4uYXJncykgfQoKICAgICAgICBhc3luYyBvcGVuIChvcHRzKSB7CiAgICAgICAgICBpZiAodGhpcy5pZCA9PT0gbnVsbCkgewogICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShzZXRJbW1lZGlhdGUpIC8vIG5lZWRlZCBmb3Igd2luZG93cy92aWV3cyBvcGVuaW5nIG9uIGFwcCBsb2FkCiAgICAgICAgICAgIHRoaXMuI3J4dHgoKQogICAgICAgICAgICB0aGlzLmlkID0gYXdhaXQgaXBjLmN0cmwoewogICAgICAgICAgICAgIHBhcmVudElkOiBQZWFyW0FQSS5VSV0uYXBwLmlkLAogICAgICAgICAgICAgIHR5cGU6IHRoaXMuY29uc3RydWN0b3Jba0d1aUN0cmxdLAogICAgICAgICAgICAgIGVudHJ5OiB0aGlzLmVudHJ5LAogICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9ucywKICAgICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgICBvcGVuT3B0aW9uczogb3B0cwogICAgICAgICAgICB9KQogICAgICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGF3YWl0IGlwYy5vcGVuKHsgaWQ6IHRoaXMuaWQgfSkKICAgICAgICB9CgogICAgICAgIGFzeW5jIGNsb3NlICgpIHsKICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGlwYy5jbG9zZSh7IGlkOiB0aGlzLmlkIH0pCiAgICAgICAgICB0aGlzLiN1bnJ4dHgoKQogICAgICAgICAgdGhpcy5pZCA9IG51bGwKICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICB9CgogICAgICAgIHNob3cgKCkgeyByZXR1cm4gaXBjLnNob3coeyBpZDogdGhpcy5pZCB9KSB9CiAgICAgICAgaGlkZSAoKSB7IHJldHVybiBpcGMuaGlkZSh7IGlkOiB0aGlzLmlkIH0pIH0KICAgICAgICBmb2N1cyAob3B0aW9ucyA9IG51bGwpIHsgcmV0dXJuIGlwYy5mb2N1cyh7IGlkOiB0aGlzLmlkLCBvcHRpb25zIH0pIH0KICAgICAgICBibHVyICgpIHsgcmV0dXJuIGlwYy5ibHVyKHsgaWQ6IHRoaXMuaWQgfSkgfQoKICAgICAgICBkaW1lbnNpb25zIChvcHRpb25zID0gbnVsbCkgeyByZXR1cm4gaXBjLmRpbWVuc2lvbnMoeyBpZDogdGhpcy5pZCwgb3B0aW9ucyB9KSB9CiAgICAgICAgbWluaW1pemUgKCkgewogICAgICAgICAgaWYgKHRoaXMuY29uc3RydWN0b3Jba0d1aUN0cmxdID09PSAndmlldycpIHRocm93IG5ldyBFcnJvcignQSBWaWV3IGNhbm5vdCBiZSBtaW5pbWl6ZWQnKQogICAgICAgICAgcmV0dXJuIGlwYy5taW5pbWl6ZSh7IGlkOiB0aGlzLmlkIH0pCiAgICAgICAgfQoKICAgICAgICBtYXhpbWl6ZSAoKSB7CiAgICAgICAgICBpZiAodGhpcy5jb25zdHJ1Y3RvcltrR3VpQ3RybF0gPT09ICd2aWV3JykgdGhyb3cgbmV3IEVycm9yKCdBIFZpZXcgY2Fubm90IGJlIG1heGltaXplZCcpCiAgICAgICAgICByZXR1cm4gaXBjLm1heGltaXplKHsgaWQ6IHRoaXMuaWQgfSkKICAgICAgICB9CgogICAgICAgIGZ1bGxzY3JlZW4gKCkgewogICAgICAgICAgaWYgKHRoaXMuY29uc3RydWN0b3Jba0d1aUN0cmxdID09PSAndmlldycpIHRocm93IG5ldyBFcnJvcignQSBWaWV3IGNhbm5vdCBiZSBmdWxsc2NyZWVuZWQnKQogICAgICAgICAgcmV0dXJuIGlwYy5mdWxsc2NyZWVuKHsgaWQ6IHRoaXMuaWQgfSkKICAgICAgICB9CgogICAgICAgIHJlc3RvcmUgKCkgeyByZXR1cm4gaXBjLnJlc3RvcmUoeyBpZDogdGhpcy5pZCB9KSB9CgogICAgICAgIGlzVmlzaWJsZSAoKSB7IHJldHVybiBpcGMuaXNWaXNpYmxlKHsgaWQ6IHRoaXMuaWQgfSkgfQoKICAgICAgICBpc01pbmltaXplZCAoKSB7CiAgICAgICAgICBpZiAodGhpcy5jb25zdHJ1Y3RvcltrR3VpQ3RybF0gPT09ICd2aWV3JykgdGhyb3cgbmV3IEVycm9yKCdBIFZpZXcgY2Fubm90IGJlIG1pbmltaXplZCcpCiAgICAgICAgICByZXR1cm4gaXBjLmlzTWluaW1pemVkKHsgaWQ6IHRoaXMuaWQgfSkKICAgICAgICB9CgogICAgICAgIGlzTWF4aW1pemVkICgpIHsKICAgICAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yW2tHdWlDdHJsXSA9PT0gJ3ZpZXcnKSB0aHJvdyBuZXcgRXJyb3IoJ0EgVmlldyBjYW5ub3QgYmUgbWF4aW1pemVkJykKICAgICAgICAgIHJldHVybiBpcGMuaXNNYXhpbWl6ZWQoeyBpZDogdGhpcy5pZCB9KQogICAgICAgIH0KCiAgICAgICAgaXNGdWxsc2NyZWVuICgpIHsKICAgICAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yW2tHdWlDdHJsXSA9PT0gJ3ZpZXcnKSB0aHJvdyBuZXcgRXJyb3IoJ0EgVmlldyBjYW5ub3QgYmUgbWF4aW1pemVkJykKICAgICAgICAgIHJldHVybiBpcGMuaXNGdWxsc2NyZWVuKHsgaWQ6IHRoaXMuaWQgfSkKICAgICAgICB9CgogICAgICAgIGlzQ2xvc2VkICgpIHsgcmV0dXJuIGlwYy5pc0Nsb3NlZCh7IGlkOiB0aGlzLmlkIH0pIH0KICAgICAgfQoKICAgICAgY2xhc3MgV2luZG93IGV4dGVuZHMgR3VpQ3RybCB7CiAgICAgICAgc3RhdGljIFtrR3VpQ3RybF0gPSAnd2luZG93JwogICAgICB9CgogICAgICBjbGFzcyBWaWV3IGV4dGVuZHMgR3VpQ3RybCB7IHN0YXRpYyBba0d1aUN0cmxdID0gJ3ZpZXcnIH0KCiAgICAgIGNsYXNzIFBlYXJFbGVjdHJvbiB7CiAgICAgICAgV2luZG93ID0gV2luZG93CiAgICAgICAgVmlldyA9IFZpZXcKICAgICAgICBtZWRpYSA9IG1lZGlhCiAgICAgICAgI2FwcCA9IG51bGwKICAgICAgICBnZXQgYXBwICgpIHsKICAgICAgICAgIGlmICh0aGlzLiNhcHApIHJldHVybiB0aGlzLiNhcHAKICAgICAgICAgIHRoaXMuI2FwcCA9IG5ldyBBcHAoaXBjLmdldElkKCkpCiAgICAgICAgICByZXR1cm4gdGhpcy4jYXBwCiAgICAgICAgfQoKICAgICAgICB3YXJtaW5nICgpIHsgcmV0dXJuIGlwYy53YXJtaW5nKCkgfQoKICAgICAgICBhc3luYyBnZXQgKGtleSkgewogICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGF3YWl0IGlwYy5nZXQoa2V5KSkudG9TdHJpbmcoJ3V0Zi04JykKICAgICAgICB9CgogICAgICAgIGNvbnN0cnVjdG9yICgpIHsKICAgICAgICAgIGlmIChzdGF0ZS5pc0RlY2FsKSB7CiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IuREVDQUwgPSB7CiAgICAgICAgICAgICAgaXBjLAogICAgICAgICAgICAgICdoeXBlcmNvcmUtaWQtZW5jb2RpbmcnOiByZXF1aXJlKCdoeXBlcmNvcmUtaWQtZW5jb2RpbmcnKSwKICAgICAgICAgICAgICAncGVhci1hcGkvY29uc3RhbnRzJzogcmVxdWlyZSgncGVhci1hcGkvY29uc3RhbnRzJykKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgdGhpc1t0aGlzLmNvbnN0cnVjdG9yLlVJXSA9IG5ldyBQZWFyRWxlY3Ryb24oKQogICAgfQoKICAgIGdldCB0cmF5ICgpIHsKICAgICAgaWYgKCF0aGlzLmNvbnN0cnVjdG9yLkNPTVBBVCkgY29uc29sZS53YXJuKCdQZWFyLnRyYXkgaXMgZGVwcmVjYXRlZCB1c2UgcmVxdWlyZShcJ3BlYXItZWxlY3Ryb25cJykuYXBwLnRyYXknKQogICAgICByZXR1cm4gdGhpc1t0aGlzLmNvbnN0cnVjdG9yLlVJXS5hcHAudHJheQogICAgfQoKICAgIGdldCBiYWRnZSAoKSB7CiAgICAgIGlmICghdGhpcy5jb25zdHJ1Y3Rvci5DT01QQVQpIGNvbnNvbGUud2FybignUGVhci5iYWRnZSBpcyBkZXByZWNhdGVkIHVzZSByZXF1aXJlKFwncGVhci1lbGVjdHJvblwnKS5hcHAuYmFkZ2UnKQogICAgICByZXR1cm4gdGhpc1t0aGlzLmNvbnN0cnVjdG9yLlVJXS5hcHAuYmFkZ2UKICAgIH0KCiAgICBnZXQgbWVkaWEgKCkgewogICAgICBpZiAoIXRoaXMuY29uc3RydWN0b3IuQ09NUEFUKSBjb25zb2xlLndhcm4oJ1BlYXIubWVkaWEgaXMgZGVwcmVjYXRlZCB1c2UgcmVxdWlyZShcJ3BlYXItZWxlY3Ryb25cJykubWVkaWEnKQogICAgICByZXR1cm4gdGhpc1t0aGlzLmNvbnN0cnVjdG9yLlVJXS5tZWRpYQogICAgfQoKICAgIGdldCBXaW5kb3cgKCkgewogICAgICBpZiAoIXRoaXMuY29uc3RydWN0b3IuQ09NUEFUKSBjb25zb2xlLndhcm4oJ1BlYXIuV2luZG93IGlzIGRlcHJlY2F0ZWQgdXNlIHJlcXVpcmUoXCdwZWFyLWVsZWN0cm9uXCcpLldpbmRvdycpCiAgICAgIHJldHVybiB0aGlzW3RoaXMuY29uc3RydWN0b3IuVUldLldpbmRvdwogICAgfQoKICAgIGdldCBWaWV3ICgpIHsKICAgICAgaWYgKCF0aGlzLmNvbnN0cnVjdG9yLkNPTVBBVCkgY29uc29sZS53YXJuKCdQZWFyLlZpZXcgaXMgZGVwcmVjYXRlZCB1c2UgcmVxdWlyZShcJ3BlYXItZWxlY3Ryb25cJykuVmlldycpCiAgICAgIHJldHVybiB0aGlzW3RoaXMuY29uc3RydWN0b3IuVUldLlZpZXcKICAgIH0KCiAgICBnZXQgd29ya2VyICgpIHsKICAgICAgaWYgKCF0aGlzLmNvbnN0cnVjdG9yLkNPTVBBVCkgY29uc29sZS53YXJuKCdbIERFUFJFQ0FURUQgXSBQZWFyLndvcmtlciBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgKHVzZSBwZWFyLXJ1biAmIHBlYXItcGlwZSknKQogICAgICBjb25zdCBpcGMgPSB0aGlzLiNpcGMKICAgICAgcmV0dXJuIG5ldyBjbGFzcyBEZXByZWNhdGVkV29ya2VyIHsKICAgICAgICAjcGlwZSA9IG51bGwKICAgICAgICBydW4gKGxpbmssIGFyZ3MgPSBbXSkgewogICAgICAgICAgaWYgKCF0aGlzLmNvbnN0cnVjdG9yLkNPTVBBVCkgY29uc29sZS53YXJuKCdbIERFUFJFQ0FURUQgXSBQZWFyLndvcmtlci5ydW4oKSBpcyBub3cgcGVhci1ydW4nKQogICAgICAgICAgcmV0dXJuIGlwYy5ydW4obGluaywgYXJncykKICAgICAgICB9CgogICAgICAgIHBpcGUgKCkgewogICAgICAgICAgaWYgKCF0aGlzLmNvbnN0cnVjdG9yLkNPTVBBVCkgY29uc29sZS53YXJuKCdbIERFUFJFQ0FURUQgXSBQZWFyLndvcmtlci5waXBlKCkgaXMgbm93IHBlYXItcGlwZScpCiAgICAgICAgICBpZiAodGhpcy4jcGlwZSAhPT0gbnVsbCkgcmV0dXJuIHRoaXMuI3BpcGUKICAgICAgICAgIHRoaXMuI3BpcGUgPSBpcGMucGlwZSgpCiAgICAgICAgICByZXR1cm4gdGhpcy4jcGlwZQogICAgICAgIH0KICAgICAgfSgpCiAgICB9CgogICAgZXhpdCA9IChjb2RlKSA9PiB7CiAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSBjb2RlCiAgICAgIHRoaXMuI2lwYy5leGl0KGNvZGUpCiAgICB9CiAgfQogIHJldHVybiBBUEkKfQovKiogQHR5cGVkZWYge2ltcG9ydCgncGVhci1pbnRlcmZhY2UnKX0gKi8KJ3VzZSBzdHJpY3QnCmNvbnN0IHsgaXNFbGVjdHJvbiwgaXNFbGVjdHJvblJlbmRlcmVyLCBpc0VsZWN0cm9uV29ya2VyLCBpc1dpbmRvd3MgfSA9IHJlcXVpcmUoJ3doaWNoLXJ1bnRpbWUnKQpjb25zdCBCT09UX0VMRUNUUk9OX01BSU4gPSAxCmNvbnN0IEJPT1RfRUxFQ1RST05fUFJFTE9BRCA9IDIKY29uc3QgcnRpRmxhZ0l4ID0gcHJvY2Vzcy5hcmd2LmluZGV4T2YoJy0tcnRpJykKY29uc3QgUlRJID0gcnRpRmxhZ0l4ID4gLTEgJiYgcHJvY2Vzcy5hcmd2W3J0aUZsYWdJeCArIDFdCmNvbnN0IHN0YXRlID0gUlRJID8gbnVsbCA6IEpTT04ucGFyc2UocHJvY2Vzcy5hcmd2LnNsaWNlKGlzV2luZG93cyA/IC0yIDogLTEpWzBdKQoKY2xhc3MgQVBJIHsKICBzdGF0aWMgUlRJID0gUlRJID8gSlNPTi5wYXJzZShSVEkpIDogc3RhdGUucnRpCiAgc3RhdGljIGdldCBDT05TVEFOVFMgKCkgeyByZXR1cm4gcmVxdWlyZSgncGVhci1hcGkvY29uc3RhbnRzJykgfQogIGNvbmZpZyA9IHt9Cn0KZ2xvYmFsLlBlYXIgPSBuZXcgQVBJKCkKCnN3aXRjaCAoZ2V0Qm9vdFR5cGUoKSkgewogIGNhc2UgQk9PVF9FTEVDVFJPTl9NQUlOOiB7CiAgICByZXF1aXJlKCcuL2VsZWN0cm9uLW1haW4uanMnKQogICAgYnJlYWsKICB9CiAgY2FzZSBCT09UX0VMRUNUUk9OX1BSRUxPQUQ6IHsKICAgIHJlcXVpcmUoJy4vcHJlbG9hZC5qcycpKHN0YXRlKQogICAgYnJlYWsKICB9Cn0KCmZ1bmN0aW9uIGdldEJvb3RUeXBlICgpIHsKICBpZiAoaXNFbGVjdHJvbikgewogICAgcmV0dXJuIChpc0VsZWN0cm9uUmVuZGVyZXIgfHwgaXNFbGVjdHJvbldvcmtlcikKICAgICAgPyBCT09UX0VMRUNUUk9OX1BSRUxPQUQKICAgICAgOiBCT09UX0VMRUNUUk9OX01BSU4KICB9Cn0KJ3VzZSBzdHJpY3QnCmNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZSgnZWxlY3Ryb24nKQpjb25zdCB7IGlzV2luZG93cywgaXNNYWMsIGlzTGludXggfSA9IHJlcXVpcmUoJ3doaWNoLXJ1bnRpbWUnKQpjb25zdCB7IGNvbW1hbmQgfSA9IHJlcXVpcmUoJ3BhcGFyYW0nKQpjb25zdCB7IFNXQVAsIFNPQ0tFVF9QQVRILCBDT05ORUNUX1RJTUVPVVQgfSA9IHJlcXVpcmUoJ3BlYXItYXBpL2NvbnN0YW50cycpCmNvbnN0IEFQSSA9IHJlcXVpcmUoJ3BlYXItYXBpJykKY29uc3QgY3Jhc2hlciA9IHJlcXVpcmUoJ3BlYXItYXBpL2NyYXNoZXInKQpjb25zdCB0cnlib290ID0gcmVxdWlyZSgncGVhci1hcGkvdHJ5Ym9vdCcpCmNvbnN0IHJ1bmRlZiA9IHJlcXVpcmUoJ3BlYXItYXBpL2NtZC9ydW4nKQpjb25zdCBTdGF0ZSA9IHJlcXVpcmUoJ3BlYXItYXBpL3N0YXRlJykKY29uc3QgR1VJID0gcmVxdWlyZSgnLi9ndWknKQpjb25zdCBhcmd2ID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDIpIC8vIFsncGF0aC10by1ydW50aW1lJywgJ3J1bicgLi4uYXJnc10KCmNvbmZpZ3VyZUVsZWN0cm9uKCkKY3Jhc2hlcignZWxlY3Ryb24tbWFpbicsIFNXQVAsIGFyZ3YuaW5kZXhPZignLS1sb2cnKSA+IC0xKQpjb25zdCBydW4gPSBjb21tYW5kKCdydW4nLCAuLi5ydW5kZWYsIGVsZWN0cm9uTWFpbikKcnVuLnBhcnNlKGFyZ3YpCnJ1bi5ydW5uaW5nPy5jYXRjaChjb25zb2xlLmVycm9yKQoKYXN5bmMgZnVuY3Rpb24gZWxlY3Ryb25NYWluIChjbWQpIHsKICBjb25zdCBzdGF0ZSA9IG5ldyBTdGF0ZSh7CiAgICBzdGFydElkOiBnbG9iYWwuUGVhci5jb25zdHJ1Y3Rvci5SVEkuc3RhcnRJZCwKICAgIGRpcjogZ2xvYmFsLlBlYXIuY29uc3RydWN0b3IuUlRJLmRpciwKICAgIGxpbms6IGNtZC5hcmdzLmxpbmsucmVwbGFjZSgnX3x8JywgJzovLycpLCAvLyBmb3IgV2luZG93cwogICAgZmxhZ3M6IGNtZC5mbGFncywKICAgIGFyZ3M6IGNtZC5yZXN0CiAgfSkKCiAgaWYgKHN0YXRlLmVycm9yKSB7CiAgICBjb25zb2xlLmVycm9yKHN0YXRlLmVycm9yKQogICAgZWxlY3Ryb24uYXBwLnF1aXQoMSkKICAgIHJldHVybgogIH0KCiAgY29uc3QgZ3VpID0gbmV3IEdVSSh7CiAgICBzb2NrZXRQYXRoOiBTT0NLRVRfUEFUSCwKICAgIGNvbm5lY3RUaW1lb3V0OiBDT05ORUNUX1RJTUVPVVQsCiAgICB0cnlib290LAogICAgc3RhdGUKICB9KQogIGdsb2JhbC5QZWFyID0gbmV3IEFQSShndWkuaXBjLCBzdGF0ZSkKICBhd2FpdCBndWkucmVhZHkoKQogIC8vIG5vdGU6IHdvdWxkIGJlIHVuaGFuZGxlZCByZWplY3Rpb24gb24gZmFpbHVyZSwgYnV0IHNob3VsZCBuZXZlciBmYWlsOgogIGNvbnN0IHdha2V1cCA9IGF3YWl0IGd1aS5pcGMud2FrZXVwKHN0YXRlLmxpbmssIHN0YXRlLnN0b3JhZ2UsIHN0YXRlLmtleSA9PT0gbnVsbCA/IHN0YXRlLmRpciA6IG51bGwsIHRydWUpCiAgaWYgKHdha2V1cCkgewogICAgZWxlY3Ryb24uYXBwLnF1aXQoMCkKICAgIHJldHVybgogIH0KCiAgZWxlY3Ryb24uaXBjTWFpbi5vbignc2VuZC10bycsIChlLCBpZCwgY2hhbm5lbCwgbWVzc2FnZSkgPT4geyBlbGVjdHJvbi53ZWJDb250ZW50cy5mcm9tSWQoaWQpPy5zZW5kKGNoYW5uZWwsIG1lc3NhZ2UpIH0pCgogIGNvbnN0IGFwcCA9IGF3YWl0IGd1aS5hcHAoKQoKICBhcHAudW5sb2FkaW5nKCkudGhlbihhc3luYyAoKSA9PiB7CiAgICBhd2FpdCBhcHAuY2xvc2UoKQogIH0pIC8vIG5vdGU6IHdvdWxkIGJlIHVuaGFuZGxlZCByZWplY3Rpb24gb24gZmFpbHVyZSwgYnV0IHNob3VsZCBuZXZlciBmYWlsCgogIGF3YWl0IGFwcC5jdXRvdmVyKCkKfQoKZnVuY3Rpb24gY29uZmlndXJlRWxlY3Ryb24gKCkgewogIGNvbnN0IGFwcE5hbWUgPSBhcHBsaW5nTmFtZSgpCiAgaWYgKGFwcE5hbWUpIHsKICAgIHByb2Nlc3MudGl0bGUgPSBhcHBOYW1lCiAgICBlbGVjdHJvbi5hcHAub24oJ3JlYWR5JywgKCkgPT4geyBwcm9jZXNzLnRpdGxlID0gYXBwTmFtZSB9KQogIH0KCiAgcHJvY2Vzcy5lbnYuRUxFQ1RST05fRElTQUJMRV9TRUNVUklUWV9XQVJOSU5HUyA9ICd0cnVlJwoKICAvKiBjOCBpZ25vcmUgc3RhcnQgKi8KICBjb25zdCBpbnNwaXggPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZignLS1pbnNwZWN0b3ItcG9ydCcpCiAgaWYgKGluc3BpeCA+IC0xKSB7CiAgICBlbGVjdHJvbi5hcHAuY29tbWFuZExpbmUuYXBwZW5kU3dpdGNoKCdyZW1vdGUtZGVidWdnaW5nLXBvcnQnLCBpbnNwaXggKyAxKQogIH0KICAvKiBjOCBpZ25vcmUgc3RvcCAqLwogIGVsZWN0cm9uLnByb3RvY29sLnJlZ2lzdGVyU2NoZW1lc0FzUHJpdmlsZWdlZChbCiAgICB7IHNjaGVtZTogJ2ZpbGUnLCBwcml2aWxlZ2VzOiB7IHNlY3VyZTogdHJ1ZSwgYnlwYXNzQ1NQOiB0cnVlLCBjb3JzRW5hYmxlZDogdHJ1ZSwgc3VwcG9ydEZldGNoQVBJOiB0cnVlLCBhbGxvd1NlcnZpY2VXb3JrZXJzOiB0cnVlIH0gfQogIF0pCgogIC8vIFRPRE86IFJlbW92ZSB3aGVuIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lbGVjdHJvbi9lbGVjdHJvbi9pc3N1ZXMvMjk0NTggaXMgcmVzb2x2ZWQuCiAgZWxlY3Ryb24uYXBwLmNvbW1hbmRMaW5lLmFwcGVuZFN3aXRjaCgnZGlzYWJsZS1mZWF0dXJlcycsICdXaW5kb3dDYXB0dXJlTWFjVjInKQoKICAvLyBOZWVkZWQgZm9yIHJ1bm5pbmcgZnVsbHktbG9jYWwgV2ViUlRDIHByb3hpZXMKICBlbGVjdHJvbi5hcHAuY29tbWFuZExpbmUuYXBwZW5kU3dpdGNoKCdhbGxvdy1sb29wYmFjay1pbi1wZWVyLWNvbm5lY3Rpb24nKQoKICBpZiAoaXNMaW51eCAmJiBwcm9jZXNzLmVudi5YREdfU0VTU0lPTl9UWVBFID09PSAnd2F5bGFuZCcpIHsKICAgIGVsZWN0cm9uLmFwcC5jb21tYW5kTGluZS5hcHBlbmRTd2l0Y2goJ2VuYWJsZS1mZWF0dXJlcycsICdXZWJSVENQaXBlV2lyZUNhcHR1cmVyLFdheWxhbmRXaW5kb3dEZWNvcmF0aW9ucycpCiAgICBlbGVjdHJvbi5hcHAuY29tbWFuZExpbmUuYXBwZW5kU3dpdGNoKCdvem9uZS1wbGF0Zm9ybS1oaW50JywgJ2F1dG8nKQogIH0KfQoKaWYgKGlzTGludXggJiYgcHJvY2Vzcy5hcmNoID09PSAneDY0JykgewogIGVsZWN0cm9uLmFwcC5kaXNhYmxlSGFyZHdhcmVBY2NlbGVyYXRpb24oKQp9CgpmdW5jdGlvbiBhcHBsaW5nUGF0aCAoKSB7CiAgY29uc3QgaSA9IHByb2Nlc3MuYXJndi5pbmRleE9mKCctLWFwcGxpbmcnKQogIGlmIChpID09PSAtMSB8fCBwcm9jZXNzLmFyZ3YubGVuZ3RoIDw9IGkgKyAxKSByZXR1cm4gbnVsbAogIHJldHVybiBwcm9jZXNzLmFyZ3ZbaSArIDFdCn0KCmZ1bmN0aW9uIGFwcGxpbmdOYW1lICgpIHsKICBjb25zdCBhID0gYXBwbGluZ1BhdGgoKQogIGlmICghYSkgcmV0dXJuIG51bGwKCiAgaWYgKGlzTWFjKSB7CiAgICBjb25zdCBlbmQgPSBhLmluZGV4T2YoJy5hcHAnKQogICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiBudWxsCiAgICBjb25zdCBzdGFydCA9IGEubGFzdEluZGV4T2YoJy8nLCBlbmQpICsgMQogICAgcmV0dXJuIGEuc2xpY2Uoc3RhcnQsIGVuZCkKICB9CgogIGlmIChpc1dpbmRvd3MpIHsKICAgIGNvbnN0IG5hbWUgPSBhLnNsaWNlKGEubGFzdEluZGV4T2YoJ1xcJykgKyAxKS5yZXBsYWNlKC9cLmV4ZSQvaSwgJycpCiAgICByZXR1cm4gbmFtZSB8fCBudWxsCiAgfQoKICByZXR1cm4gbnVsbAp9Ci8vIEdFTkVSQVRFRCwgRE8gTk9UIE1PRElGWQptb2R1bGUuZXhwb3J0cyA9ICdkYXRhOnRleHQvaHRtbDtiYXNlNjQsUENGRVQwTlVXVkJGSUdoMGJXdytDanhvZEcxc1BnbzhhR1ZoWkQ0S0lDQThjMk55YVhCMFBnb2dJQ0FnWkc5amRXMWxiblF1Y1hWbGNubFRaV3hsWTNSdmNpZ25hSFJ0YkNjcExtTnNZWE56VEdsemRDNWhaR1FvY0hKdlkyVnpjeTV3YkdGMFptOXliU2tLSUNBZ0lHZHNiMkpoYkM1eWRXNTBhVzFsSUQwZ1VHVmhjbHRRWldGeUxtTnZibk4wY25WamRHOXlMbFZKWFFvZ0lDQWdkMmx1Wkc5M0xrUkZRMEZNSUQwZ2NuVnVkR2x0WlM1amIyNXpkSEoxWTNSdmNpNUVSVU5CVEFvZ0lEd3ZjMk55YVhCMFBnbzhjM1I1YkdVK0NrQm1iMjUwTFdaaFkyVWdld29nSUdadmJuUXRabUZ0YVd4NU9pQW5UM0JsYmlCVFlXNXpKenNLSUNCbWIyNTBMWE4wZVd4bE9pQnViM0p0WVd3N0NpQWdabTl1ZEMxa2FYTndiR0Y1T2lCemQyRndPd29nSUdadmJuUXRkMlZwWjJoME9pQXpNREE3Q2lBZ2MzSmpPaUIxY213b0oyUmhkR0U2Wm05dWRDOTNiMlptTWp0aVlYTmxOalFzWkRBNVIxSm5RVUpCUVVGQlFVVlBWVUZCT0VGQlFVRkJXa3hSUVVGUlFVSkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVSklVa1ZXUjBGQlFVSlhRVUZCUVVkUlFVRkJRamhEZVZWTWFtdGtVVlF4VFVGQlFVYzRRVUZCUldOM1FVRkNMMGxSUnpOdGRGSXhUbFpSWjBGQlFtcEJRVUZCU0ZKQlFVRkVZVVF6ZWxKNE5WQlZlVGg1UVVGQlNVSkJRVUZCUmsxQlFVRkNaMk42VUdscU1VNVZVVlpSUVVGQmFGbEJRVUZCVVdkQlFVRkdjR1U1YTBGU1dUSXhhR05CUVVGRFNuZEJRVUZFU2tGQlFVSk5RMU52U0VaR2JsbFlUbmRCUVVGS1lVRkJRVUZDUVVGQlFVRlJRVUpWUVVreVpITmxWMWxCUVVGc05FRkJRWGhMUVVGQlVqZzNNVEIzUzNSaFIxWm9Xa0ZCUVU5eFFVRkJRVUV5UVVGQlFVNW9OVWsyWmpWdllVZFdhRUZCUVRZeVFVRkJRVUk0UVVGQlFXdEVSemhHWlZkb2RHUklaMEZCUkhJMFFVRkJRMmRuUVVGQ1IwRnVPVlU1WVdKSE9XcFpVVUZCVUZoM1FVRkJTVmhCUVVGRFRXY3ZkeTl4Um5SWldHaDNRVUZCTDJ4QlFVRkJRbmRCUVVGQlowRlRWVUZzVnpWb1lsZFZRVUZFSzNkQlFVRkNTMmRCUVVGdFVTOVNWMFJ6WTBjNWVtUkJRVUZSVG5kQlFVRkxNMEZCUVVWdU4yeEpVM1IwTkRKdFNtZGFSMEpwTkVkUFFXZERaMmR0TkdSQ2FHTkZWekJKUVZreWQwRkZRbFpFZDFCdmJFdGFVMXB5TWsxQlNVdHlNVWRLVTFsU2RsWXdWVU52UW1aMWJIcGxTbVVyYzBwYVYzVktaRUpKYjB0WVZGQlpUV1Z0WmxSTmIyeGtTakprYUVwUFJHZDBSamxGVXk5S1F6ZG5hVVJTV21GNFl6TkVlVGhtUkRnd05sSmhNR1ZPYjNScmQwOVJZbFF3VVdoRFpWUTFUbTB5WW1Sek1tSjBNUzgyT1cweVltUjFNbUprZFRKaVpIWkhNbUk0ZWpVeFYzRjJPWFZ1VFM5RmRVdFRTa3RSWWtWdlFXaHVTMUk0VjI5SVFWZEpNbnBpY3pGS2IwTmlWblV6WWxVeU1YbEtXWEZWZVd4SmQyTlpPVTgzVjJoWlVFNVBWRlowVkhORldGUlNjREJ2TWt0YWFHd3pXVlZ3VUVKRmNFUkVWeTkyYzA1Uk9VaDNWelJxYjI1NWMwTkZWRVZyZGpKcFlYTnpiVmhCVVV0clZrRm9jVmRFV0VReWIzSlRiME51UzFKRGJrRkRiV2xMWVhKdE5WRnJVRGxIWkVSeFExZzVRWEJEYjJoV1psTkhVR2hEVWxKWVZWRjJWMDV2Um14aGRWRTBNbTlDWWxkcVRIUlRURVpNTldZd1IyWTJVV3d2Y0Vjek0waEdObXcwVlVKSmIwWmFVVUo1YVZwVFpqbGtORm8wYVhCSEwxaENWRU5RWnpKdFJEbENkRkZOTjNRNU9IRk9hMUZhYW5sWlNVVjNlVlZzTlhSNE56bHFOMVJHVTI5YU5IUkxUbmhDYldkS1ZVRjZUVEJ2VmxwVlExWXJiSE5NWkhGR1EwczNWVzFhYTIxTFVUUmtWM2RwVlhKeE5qZzNjWGs0TlhoRFkyZFBVRkpRU1hGNmRIUjBNSEYwWkZGMEsyTk9OakpyZERZM01HSnZWVWh1WVdSSlYwcE5jRVZqTUVGdFZqWm5SVmd5VjNWM2IweHNkM0pEVjJWWU1qZ3dRMFpTU1hGVGRVaE5WR2RsZEUxVlZFRkNhVXBQU2toM2RtbFVRMFJxY0ZaT1VsbFRTMk53YVRSc2IwUmFiM1ZoWjFCWGJUUmhVa2ROZURSNVUzTlhkMHN6ZGpSUVN6QjVORFpwZG5ZMlUwbzVkMWs1TTFWTVdERk5VRlpFVURsQk16RlNiakZUVURWVGJuWTNTR2hEUW5sT05DOUJTVlUwTUZSalVYQlBlREZyTkVaNFpYZHNWM2xCYVRORlduSnRVMmxqUVRKVWFWRk5Na0YwWm1kbGRIbEZWek5GU0RkeldqbGxTa05OUjJOa1ZHVkNXWFkwUjFjNGFHcGxXazl5ZVVRM0wwRXJUVFJ0VURoRGJYcG9ReTkzVGxoM0wwMXZaalJDWWk5cVRDOTZUREYwUTJ0SksydDNUM0JKWkVGU0wwUXhja1F4WkVSNVpGSk9ZM2xpTW5jd1J6QkhiakJvYmsxRmNERk9OVGxIUm1SQmJHUlViR1pTVVZZelRFSnVVVVF6VlhrelRWWkdNRW81TVVRNU4wNXNPVUpCT1ZOckwxRXdMMUZqZGxWcGRqQk5aRVUyTmtGME1FTTNiMEZJVWtkWU9Va3pPVVF6T1ZKSU9GUjJXVWtyVVVnNFRXMHpRVzFwYjJ4c1RXOXJVMUZOYldkT1JrRlBhemc0VlUxa1ZrVndZVUZMVlVscGNGbDRjbHBEUzJGR1lWZGxObTFGYldsWWRFRkJZVUpuTUVKd2NHZzFjR3RzV25CWVdsbEJOa3AwYTBZM2IwSlBNbW9yWjJOa1FWYzJXbEkyV1ZvcllVNHJWMUZxYVVnMVFXNXZNV2RFVWxST2VISkhTbUpGUTFWQmEyOUlXbUpHYkdKRE5XSjNRbUpFVERrM1JUTmFaSFJaYkhaYVJISmhZa2hYVkRkUlEwNUpZMVJQTjBSU2QyYzNSVEJGWm1oR1pXdFBVMUVyU1RkcFIzZHBNVk16VVhBMU0xWjFOVFZYUjBJNFYzbzROa1pRZG1SWGIySkRXREZxWVZjcmNUbFNNMnRPYTJVck4ydHJWVmd4TmxNMVFUQnNUSGxJTVU5UlZtNHhlRGhtU0doUkwwVlFlRUZYUmxadFdHMVRla1JDVjJWMFVFTm5LMGxVYVRZNGRWUkhjVXRuYWpORWVFRk1ZbE50T1VGWFJqWlRSVkJITlZoWk1qWk1kaTlDWTFsdVFUTjZTWEZuYUdOTWNrOWpVMlZwVmpoWlV5dHBPVFJQYzFCb1JURnZUWHBSUmxJMk9WaHNTV3RPZUROV1UydHRaWGxYZURNMFZVaDRZazExUVUweVZsVllZMjEySzNCVWEzRllhRkJIUTNJeE1UaFVaa1ZPTmxSS1IycFFaMjFXTVdGeVEyNHJVRmsyYzFoMlRuTkVUMFZWTkZKR2FGUnRSbkp5WlRFM1RtMHZLMWxNYVZrNFNHcDRaVmROU0ZSRlYzaEdhRkZTYWxWblFYRXJaMEpvVkM5SFNFOURUV3BaY1Rab01tNURTWE5MWXpSTVVtbENlamxzTDFabVJGcFZaMHRyUjFvcllqZHJhVnBIUkRSdGRrbExkaTlvTDJ0R1NtdHZXa3BNYTNwellVVTRTemt3WjNsNVJrWlhObE5xTXpNeGNuRkhlbTVRUVZSc1RHSnZkMFpOVW1GVlZXTllPWFF3VFU5SloyTnNjbmhuYld4eFVDOUdiR2RHUmtZNFRHeFRRWEZSWlZObk1VNW1kMlUzUlZjMlNUbERTbGxvUzBWRVZqUk1NR3RoV1ZkaVVWTXJiMU5zT1UxSlRIaHhPRGgyT0hrdlpqSm5RbkJUZWt4RlZVOXBjaXRQSzFWSGNHVmxNVmgxYjFOVFpYSklLMEkwWkUxWGFHdEJaVTV3ZEd0UlQzTnVSa1ZaVWswck0zSnRNMkowZFROa01tdElNV0pEZFc5aVZHVnpSV0lyZDNSb2MxVlJVa1V4Y1VjeGFqSjBlVFlyV0ZCUGVrWTBibWwzUmtaRFpFMVZaaThyUWpSaVJYTnROVWRtYTJOVGVUSkplbTlTUm1KR1VsVXZVRmxHTTFOMFMzZFZPREZIWVZNclZIQnRPRlZwVm5KSFNGUlhlVkppTVVOdlluZ3ZTRTlGWm5oSFZFOVRNRE5xTm5wV1lsZzVXaXN5Y1d4RmNIRmpiVGhxYzIxWlRuTlBZVW80V0VoVWRVNXFWWFZ4VFVwUVQydGFRMlJ1VjBOb1RsbFRWM3BhUTNSMlZUaElZV2t2TlVsRFJ6UlRVVWRzVmpoaFNHdFFVelJHTkc5NlRGVjVOVkIxUkhwdE9HOXFURkV5TjJaQ1VVdEJlREJ5WWxGT1kzRlhNVkF4V1VvclVrbDNaSHAwTVN0bWMySlZkRnBqYWpOSWRXdDZkVXhhVG1wdmQwbDVPRkEzYWtwa1NHbzBha2xuUVVoSlVWcENUR2RsZDBaUFVVSjVRMXBDVEVGb05FRjNRWE12VnpSbmFVWk5WM05OZW5ac2NuUjVWMlphZVZaWEwwcGxOM1kzYkc5V2VWaHdNMHhFVERaVmVGaG5jVTQ0Vm5walJscHhlRFZ4U1RaSWFEVnliRU01WmtOTGNqZERVMmd4VDNOWVkyMVFZeTlaTDNjck5YUTFaR2xDYkV0b1JtUmpSWGRrUVVKeE1WSllhRVkzTTBWb2VIUTJjMEZFZDJVMFowRkZaV1EzY25aUWVtWmhVREpQYUc0eVRXaE9NbTlaV21OVlkwMVZPRmxKTlVKd2FHTjNVWE5WUm5ORmVEZERVa2RUYWtoT1ZVSk9aazVoWTJSa1MxZEZXRUV4Um5ONFFXbzRhbTFWYUZBcmFrMVZkemRwVDNwR2N6ZzRhblo2ZFZBdmMweHBPVFI1VTNSbE9EUmhWR1ZOYW01Q1JFbFFOVk5GT0d0elRUaHNhMlozUWtzNVIzZHFlRVo1VVdoQk5qbDNjbmRtTDNvNWQyZENkbkVyUlVGSlFXcEJRVUZCWlU1d2FsbEhTQ3QzY1dwRWQwMXlRWGRIY2sxamNHRkNaMWRGVjJoSFdUWjVNa1JGVGtsclFrTlVVWGROUzFGRVMxYzBaekZuUkhnelpqTTVNMUpyVUUxRVJEZ3ZPSFpTS3pOalJrRjNVRWhRTmxwMVFtZGlSeXRUUVRWR1p5OVhZbFZDUzJkWlJVWkJUa1ZEUlVGdlFXVk9iMFozWWtWQ1VWWkZWVUppUTJNck1FRk1SRlJFUWtoM2IwRmtSMEk1YVZscFVtaHdiVWRVZGpKUE56SjJRemN6U2psb09YcGxkVEprVjNselJFVlNiRUphVDBOS1ExZHFiekJ3WWtsSE5GRTVlbGgzWVdsQlFVSTBNbTh5VFU1VlMwWk5VWGxCTUhoYU0yUjNiblZRYzBkRGJtZENUM2RaYWswelNVbFNTRE5HTTJReVdtTm5OMUJuVG5aVlVGSlNabk40WmxWRVFVZHNZMGRtWTNwVlluaHNUM2hHYldOb1JWVm5VRE5pTVdneGNXZEZWMWRMU2s1cVkydEdkWGt4TUd4c1NqRjVWbXBGYnpCU2JHUXdVVGxFVFVGTGFrMVNOWHBOUVRsTWMwSnlZbTl4UzJwbVlVdzVURmRpVGtSUVJFZFJSMmN3YWs1SmRrSnBhV3h1VERSWmRtaHBSVmxYSzAxaVRYbzVaMU5JTkd0Wk9UVm9jV1UwTUd0eE1sRkdMM0pMTXpKMk4zZEVNRWRvTTFGR2JUTlRSVkJXVkVnelZsUkNOMVpSVUdSV1UwOWhWV1pFVHl0MlNFVm9lRU5vWTJjMFJHUktRbXgyYkVkVE5XVkJSU3RtVlZCdlFVRkJRVUZCVVVGRVFVRm5RVU5uUVU1QlFXWXZMM2RCVUdWT2NVVlhaMVpCVlRsMkwzWXJabU4xT0RGRlFtOTZVazFCV1dKRVZFeElZVUpSU2paU2IyUlZjVkJFUVVKVVJsbzJUMVZUZEc5Q1dXNWthRmxZWm5oMWNuWk1NUzlXV0hSelVDOXVUakJvZGxCamNqSmllamszWlM5dVprMDJOVzk1UkZaUUwwazVRMDlOVFZWRVVURnFZVXRCYlVwaVVrMDNlR3R1YzFsRFNUWTNXVlpuU1hOdk5IZFlZbGhTZDJOT1NpdFJSREJVT0V4NlpIaGtNMlI0WTFoRVp6aE1VR0p4VEROM2VFUjBjM3A1UzAxeFZFWjBRV2d2TVZWWmFGSjFRM05aVEdGQlRUWkVOVWRsY1ZSTU4yeFlVVlpJVFRjdmFHVmpPRzloTmpaR1JrRnVlWFp2WmxseVJqSnRMMDFzY2pkR1VVSTRVMDRyVGtKeE4yOWtiSEJMUjNWd1MxTXdOVWRZZDBoSVIxQlJUMVZMVTIxd2IweExkRTlTVlZsTFZ5dENVM0JwVlVKbE9VTjVNVXRTUVVoblJuWnJiV2R4V1VWalFTODFhMGM0UTFkblUyRkxSM3BhZVhCRmJTdHJkWFZCVjFaSWRWWkNlV2wxVEVsS1VrdHdNMDVvV1hsSVpVUTRhR3hsV0dkeE5WUkpRMUJsVUdkek0zZHdhWEl6YTBOMmNHVllaa0ZaSzJ4MlRERTRRV3hxV1Rob1pHVnFjelJpUzJsNU5XdFNLelJqYmpVNFZteElOSE5YZUhVcldYTlFXbEF6TDNSdU1XWlRSbkk0ZFU5VVZqQldSWEpHY0RCRFRuRmFSbXhyTmxGbFozQjZWM2R4VEdWMFRUUkVXVE5SV1d4a2FYRXlXVEZ5ZW01dFRFZHRkazhyTUROc1JYZGpaVXg1U2xKR2VuY3dVM0kwUlZOUFZEQnNNR1pHUlc5NFlVaHRhbnA2YkUxd2VFZ3hSMUpMYVU5TmFuQlhVVFJSY1Uxd2QwVlpTMkppYmxsRWNHdHVUV056WldsSlNHaG1OMmRITW1wek1qbFhlRzgyWlhoMWVWWlZWalZMY0ZWMVZGSlFMMlZhWXpKcWJEUlZOM1l5WkVkelpXVTFjbm8yVDIxSWJqTXpMelE0WTJabWVHTXZaVWRZZDNoeE1VeEdOaTgzVUZrdlJUWlRURzUyTDNWQ2JrdzVPR1JtUkRacVkzTlljalZOU1RGdk9EZzFWRko1Ym14RU1teEJabXh5TjFkTmNVOWpRa2hFZDFwR01pOUdWV295U1dwYVJtOTNPR3hITVZaQlVITnNXWEJuVGxrcmIxUmhhM05NY1dkS0syeGpTak5xYTIweVNtRmlSakI1UWk5RVZ6TTFhbHBQWWtKdk0yRk5SbmxzTTFaQlZtMTVkRTR5UTNkd1dUVXhNMkoxUjBWd1F6aDRXVEkxYldSek0weExRemg1VW1sbVZUZFVObE5uYTBRM2RGRjJkVXQwUmxCVWJuWmFiVVpwYjNkVWVUWjFNekYyYjBWV1pHUkdla2N5U2pGd2FEYzFhUzlRTW1Sb1ltNXplRlZNZVRWUE1scG5WakpzTVZaVlNYUk9TbEpXUzNGaVZWWlRhRzV4WVhCTmRGTXplRTVwVVdKQ2RDOXBZVkJ5TkRKM09FRkJUelJQVGs1cVFWRnBhVlZSUzJ0UVdEVndWblEyVVd4d1RFTnFUbGQ0YzB0d05UaERTV05DZVRSVlZXc3dLM2hJT1RsRldIa3ljVUpOWmtSSVRXdExlR3BJWlhoRVJEVlhXbWRSYUZRcmVHeFpRME5tUVdGR1ZWcHRlR2RCVGpST1YxcDBXRmR5VVRKbFNHRnFjV2w0ZG1KUmFqQlFORVZITUZwalRFZHZRVEU0UkRsM1FWQm5RbkUwV1RZNVFUSTJVMU41ZEdoMVpuQnVNMGRrTm5CSWRYTkNaSGxFU0dzd1RGUlhNRll6UW05WFIzZERNbTk0VVM5WVJIVlhNRkExZWpsRmFWazVRbk4zYWxaQmFHRjJUR3hIYWtGR0sxTnBXR2c0VVhGVGVHSkVXRmxSVDFwWVZXSTBlVmxQV1U1eWFWRkxOSGxtYUdsUWJUUjFkbWQzZFVKRFpGSm1RM0JMUVVOa1UwbFZjRVl3WlVKelMycHBTRGMwT1VndmQyUnJNVWt2VlVwSmNYbEdLM0JvUkhkTGFFRnFhRTR4U0dSWVYwMWxZVTlrYkUwcmRFVnJZWFlySzA5YWJrZzVhMWxTTmxsc1owZEJZa1JPUnpBNE5WTktRa2wyWjFwRVIyUnVOSGx6YzJwc1FqbFNTemxwU0VsTU1FOHdhV1JJVW5samNGRTNhRXd6UVVSVlExbFpSVWh5V25KQlFXZENja0pZT0RGRmVFWklUVWRUUWtWVGNrdG5aR1ZqY1ZrMFdYSlVjREo1TUdObFZWTlRZbWwzUkVsb1kwRTBObEpCVTJ0MFJXMWxTakpLV1V4SFZGQjJRbE5qV0dJemJXeFFTRkJ2ZVU5RmJrZGxiMkp6V0ROTVZuVTJTbTF5VjNKMFYyeFFTMUI2TkZCUWNuRmxkalZvUlZBdmMwazFRalE1VWtrMk9HWnRialpPTWs5RWRVUjNlVkpDZHpKT1YwZ3pjMGd5TTAxT1MwUXlVRlpWZVdoTFNrOWlVRGhHVEdkemRWcEtaMUYzWlV4dlJGRXpSbEEyYW1wbVdXdE5lR05qUVcwelRWaGxkemR3T0VSSVVFVjZPSHBIWld0YU5qRjRUU3RKTlVOQlVXMHdaWE0wVld0RWIxbDZkRVZPZDJGQmFFaEVjVU4yUWpobFN6SnBTREYwWXpBNGEyVlJaWE15ZUVNck4waDRVakJ3V1ZOMFNuSlhWSGRJV0hrME9HUnlNbXBpUlZKSll6ZG9hMmx1Ym5Vd1duWkhkRk1yVjI5cWMwaDVZek5CVFVsS1luWlNhVXRCV2xGc1dXMVVaMUZDVERkWmFIQmxTWGhZU3pnMU9GZHhlSEp4T1ZOSlJHOU9LMDVpVFc4MFR6RkllRGRqZEVacVdtUkxOMFpYT0UxV1pERnlNMDVOTnk4eWVuQnpWVEI0TmpWWlJucHJhalYwVDFobFNqUjNjWEo1ZFVoNmVsVXJkREpRY0RsVmIxaGhXVWRxTDFCNU1tVmxjME13T0ZCaVUzUmpNekozVVRSU2QxTnVXRU5sTlhkQmJHcGhhbXhZWTFnd1dXc3ZSa0pYTURsQmVIQmxTaXRFVG5kd1dXbEtiREI1ZEhWclFtcENhamgxVlRaT1pVRkRTR2RYYTNsWVlVNVRaMFp5VjBFeWJtbzJiV1J2U1dWbldtMVNTVlJaWlZOVVNVNUVOMkZ5YzFNclIyVkNOR2wzYVdFdlRrMTJjamxHUVVkd1NYaDNjM05NWlc1aE9WaGlkbkZvT1RaaFN6ZFFRMkp3VjNSMVJuQTJPVE0xYVRrd2VHWlFNMmhXY3psWVZuUlpiV1ZZTTJsMGRXVlBUa0poTmxOSmFXVjJNVWxPVERsd05GZzRhRE5vZW1oNlRsZzFUMFo0VURaV1YwcGpaSEpwVm1KaGNuRXllamRZY0VWUmIyc3lkRXhvZVdaRWFFTjNkbU5KVUVSVllXTmxaMXBSVmxoNVozRXpVRVkyZFV0S1ZGazFNM05tTDFjMGNHb3laRnAxY2s0NGVtSllhVGhuWkhScE9DOVhRalJDVURrMU1DOWxUR3AxVTBwYVpIbHJXbGt6VVN0dGRtSnZjR056Y210eVMyNVVaSEZOTnpNemNteENOV0prV0dRdmVGaHVNeXQ1VnpsU09YTjBXQ3MyTDJ4MFRYZFBNbkpaZUdrdmFHWm5WMDV4YUdZemJqUjBiMEpKZEhoSVFVTlVRbUpRVldkbVZuSlVlakJ1VEdsWWVtVlNXRUl6UldKYVkyZERka0Z0YmtsaWR6RXdZMko1ZEVsT2RqbEJXRXB5UVhKWE4yTXdiMDF6Tm1odlRIUldWVXAzZUc5MWJIbFNjM2xMYm5GNk1YcDVNbkp5VjI5bWJWcGxOSEZWVEZWdWJHYzNPV016WWk4dldWVjRibkZWWmxKcWJsSlJNbTVSY1hOVU1HNTJNbTVQVVdNMmFpdERNRlkyV1RCeFFqWmxjVzUxUzBkVk9XczFlREp2Y1hSc1pFbzNTRTlpT0hOeE0wcEJNM1pYWkdVemNIcFBlRmxoTjBWM1JEVjJVRmd5ZDNOVFIzQkthMjV6YTB4Wlp6bHhWMVpLVGpaV1NUazRlU3QwYUhGRmJTOVRkVE53ZDB4TVZVZERka2haVlVOSWVuUkhUSFF4UTFoa1JGUk1Oa3BQUVhJMVJGWlRVMkpZZG10bE9HRjFSSGxNT0d3emJHRTJObkZMYURZd1RHcHROekpDT1ZvNVdqZ3ZZMHRVTWxOTVdqazRhMWsyWVdndk5pdG1WazVyVmsxdU5UQjNNVFpCV0Nzek9HZE1aemh5ZGs1aVZ5OVhOVGt6TkdoMWR5czRibWN2YUhSNlZ6Qk5RM1EzVm14cVdFbGpTbTgyVFhJek9VaEtMell2VVRad0wwbG9ZamxxY1hVM2RUWnplbWhwTlVsU1YwTXdSRTFIVTFORVpVMDBaVmhtUzBwT05FVjBPV1JaVWxadU5XbHBZV0pQZDJka1draHBhamhQVUVwd1JVaFhRa05zVDFSd2FIQkJObkYzUTFSSGJISnNRalpuUVVGUFkwSnNkMDVwY1c4cmJYbzJhSFF3UlVwblJWUm5aVU5sT1cxdlNHcFhWSFZETkVFM2VrSlhPVWROWkRGNVNURm5OemhNTmt0T2NVcFlNbFZ5YTNSS1VXWnJjRXRtSzFGaFkyZExjbUZMUkRGRVpYY3dSMmhSUkU5eVFYVnRlbXRGTkdocGMxVlVabXRsT1hCRk1qRTVUMlZOU0hSaVZUQm9iVWxyVURKNU5UUmhSbU00UkdOSU4xTjVhbEZ4VGxaemNqZEhOVkJaU1hVMVZHUXJaV1JsYlRGVlZEWjRaR2xWVkdaSFJTc3llVWN2VEd4UWJtNTZSVGxsYzJOeVFreHNWSEZsVHpWTVprOXpMMWhPWW10cE0yZEpUalpqUzB0TVlXZGxPR1ZOWlRSQ2VXeGFiRVo0Y0VaaVdWVm9SbnBrWkZOSGNVSlVVek5NUlV0bldGcHBWekJaTjFORVQwVlhaMnBKYWxoaVlWbGpSazgxYzJ0WlFVcGFlRWRIY0dKdE9ITTVORXBETUV4RWJISkpXbVpxTTB0MllYVnlMM2t4ZFhJMFJHZFZabU5MU21wRk9ISnJNamxHU0VRd0syZHllRFZYTjBGQlQzSXhWeTlzTlZBeWVIUk1kakJKYkhwVGVqUkVabXBqTDBKd1JVUjNMMk5ZVEZaNlpFMXNTRkJRYTJSU2MxUlZaWFp4UldGaFNUSjJla053VlROVWNTdGtjV3BQTVVKQlpIUnZPRkpXZUZwWVdEWXJMME15ZUROV2FuaENTREUxTkVZNU0yWTNlVVpLY3pOaldrSkdheTlRZDFONlVEWTRMMnBUTm1oeVVuTTJlbmgzUkRGc1VERTRaeXRVU0U5S0wzcENVRTlhV25oQ1FUbDZOV2hETUVSSFVVTXdSelZVYVZGeFMxcDJTSFZoWWxrNVMxbFdRVTg1UlVKSVNEQTBVVzFyTmxwYVIwazRObFJZU1RCUmVIcE1hamhRYUdadVVWUm9RV05MVWt0SWVsUk1WR1pGVVZGWloycE1OaXRSVFZsSGJtMXNSRE5QZERocFIxUmFiRUZDZUVkWlUySlBRVXAxVEhwU1ltOVNXWGRwTUdjeWJrUnpOVnB1VmpkbFNISXZOVzFEZDI5elFtbEdSRVlyTml0b09UUkRZVmtyUjJOeE9YUTBRWGRqZG5GU2MzcDFZbm9yVDI1MGFGcHpkWEJPUlhWdE9XODJWbTFuVjJGYWNqSTVWbVZ6UkZOQk1YUm9kMm93ZDFaME5WWkVRVlp2T0d0NFVHaG1SVFpKYkRGaVVtWTJkMlJpTkd3dlUxaExhelpIZUU1NGRuWTFPVGxJV2xCNmFtNUJOME1yT1hCdVVrbFBUWGx3Ylc1Mk9Hd3ZZamMyVFRFcmExWnRSM1ZsTUdkVlNEWXJSaTlCWmxaRWRFdE5lSHB6UzFWcU9EUXdhWGRtTlUxdlNYa3lWMDFPWjFKRll6UXdhalZSUTBwcVZUSXJVRWw0WkU5M05UWm5UM1F6TkVoQkwyOXlNVFpLZFRNd1lTc3ZaMmxuZDBJek56ZENlbkEzYTBSUVVXb3lOemdyUTI5M1lWSjFiVkZEWjFkUmJWUlRVREpEV21zelJVZHpSRk5DTjJ0MkwyOVFObFYwZEdKTloyVXlZV0Z1YVVKTk5VTjBaVk4wWWpBMlN6Y3ZNR1E0THpCVVEwUlZZblpDTDBwcE1tdFpWRVJxY3pGc1pWUlhPV2w0WkZaRVowOXVRMlpoVlZVelJXWjRSMHd3VmtSbk1tNHhVblZzYW1aT1IyaGhLMjFRYW5RcmFFY3ZlR3RSS3lzemFVNHpUV1ExT1RWU00xVlhabUlyTkVGd1p5dHhWRzlUYWtkUWFWcEtjeTlHSzFKVFNXWXZiMEpUVEc1d05IQk1iRFJ1U1VsMldHNXlVUzlTUW1nME1GcHdSbTVpYlVZNU1YWnZhalZvVDNaS09GQTRlVFYwWkdrNVpVaHBXV3B4YkVkTU5tazRZMEk0WkhwR1kzbzVORTQxUTNweWEzVkZZbWcwYjBvMFlVeEJVMFJxWVVKUFVYTm9ObGhJYW1OTU5FWnNlRVExYkRaNFduQmhTbkpuYTJ4dWMxVlNXRmRwVkROMVUyTjVXRzk2V0RoeWJVaElkV1ZZU0UxclV6Sm1SR1oyZVRCSWNrVkNPRXhSTWxsRFVVSk5jSHBzV2xweFNGWTBkVXczVWsxak5HRjNWbTF6VFRCbVZqVjZiR3BQWjBodVJrdGtiMFZ3YlhVM2VESmxRM2RPYjJ0RlVUaFZheXR6T0ZBMWRXbDFZMnN6ZDFaVFIxZEVZMU0wY1Vsc01HZFFMM2RzYzBOV1IwNUVhRzF4T0RWclNXSTFUM3BDU21oS1R6SnhVRUVyVmk5TmJFbzRkeXRKWXpGcWJVVnFObXB0VURoUVNrcFNVMmhOVkVwTk9FaGtabUlyYVZkVllXRjFNR1JGTkhGSVZWSjVOVkF3ZGxabE4wRTRUM0lyVFhwMVdVRnRhVGRuVkZCWGNYSm5NVlZTTWtaS1pqZHVWVXhRUjJsTU1VcFJiU3RyWkU5T1VEZzRabmhWYjJ0ek1rMHdXbEU1VTJ0U1NtaHRZMGhaYmpsbUszcDBMek5PZGpSdFdXZG1abU5XU1U5dlpXcHhkamN2WkV4bmNucFliMG92Vkc0MVlpOXhORmxqU0RCT1VEZFdWbFZRWjA5QlFVbGhibTR3U1d4MllqWk5NMFFyTkVoVWJtVkNSRGhxV1dvd2EzRXlkekZOU1VkSGNGZHBXbTEzZDJkSldVSktRM2hvU0hwa1luZEtlV2RGU0UxTFNFNU1lbVF2VjJkNWVTOXVhRGQzSzA5eFZucG5SRGt4SzNaUFRFUkJSakZQVEdkVmVFNHhjWGgwWVhjNWRFcDZObWRtZFVsRWJHMVlVQ3R6UVVSWmJVUTNVSGgzY0dVek1ETTRSMnhJTXl0cFRDdFFMMVp1TUVVd09VVnBUVGx2U1c4cmNqZzJRbFk0WnpKRVZFdGFTWHBvUlVWMFJYSkdPSE5oYzBod2VEY3JkRk01YVZGRVpIRlliMGhYYjNWNGFXc3ZkM0pGV25nMk9IZFNiVWxRZERWV2RtSjJTVmhHVFUxSGVsSnlhVWc0VGxJemRGQk9WM0p1VlhsT1VEWmtPSGRTY210VU56bG5SV3BTUmsxMlR6bEhOalJaV1hScVpUVk1SMGQ1WjNaU2RtRjZOMkp0VGpWbE5uaElOM0JJTjBKeFlVeHJkM2x6ZWs5cmMxVlRNVGxtVlROdmJIcFROM1JhUlhCNFlqQTFjV0k1VjNGM1YwcFJkaTl3VlU5MEwwTnZUbXBMVG1KcGVFdEhUbWhyY2s0eFlVOWlTM1JRY0RsNVZrcHdkWE5SZFZsRmJESmliREp6ZGxWMFpVWTNSbTFGZG1GVVNVSnRVRGRXVVRWNGFFRlpXRmxKYTJwQlYxTmpUa3hhUjJSUk1WaEdWVEJYTlcxQlZEQjVNbTltYVd0RFdGaDBlVXRJV0M5SVZWVkVZVTUyYVhJMU9IVXJNWFZEVnpack1rTk5MM1pSVkUxQllVTlFjWGhOTHl0R1NqRnhORlZsU2toTVNVdE1UMHczVldkQmVVRm9ha0paVm10VmMyWnpNRzU0VW5CUWJXbEJiWHBwVnpWc1RtMXRVbkZhVVVFeWMyNVBkVFJpZG5VMldXdFRVMVo1Tm1wT1NIazRlRzAwTjNkcGRVOU1TVk16UjJsd1NITXhhbEprU0VOUlJuSkNOMmhEV2pOR0wxSXZSVW93WW5wS0x6SnNVMGR0VkdoR1luZExObkl3U2pGYVkwSjNjM0ZJSzA1TmQyUXJTVnBVWjBoVmVHTktjR2x3U3k5SWJUaEJNMjFSV2sxcFZXOXRXR2g2YTBsNFRVa3pSREk1VEVsa04zTkJTRkJJUTA1RVdqUnNSVWxYUmxKcVozZGpMMm92Ym1GSWVtdHRjSEp5ZHpKRVdVSlRUV295UzFCWlZWcDNha1puUlZvclZFTjRaRk5uVDFKamQwaFVPVWhOVjNSQlEwNXplRWhCWmtNMFNtaElLMGcxTkdKMFRVSmhlbGQ0WkU1SWVuZHplRTlKVEhwTFFYbDNja2x2UTFVMFRXZ3JXa1pwVUVKQmNtbEdkR3hKZGpGNmVVTnlibEZVZG1wellUTjRNbkJSTTNWU2JrOVliVWxwV2xORVpXeERPVmd6Tm5OdWJ6Y3pVa1JHYlZwdlZEbG1kek5GY1dacVlVSkNiWE5HYTBaMWJrVkZXbWxCYkU5SmIwZFJRMUZoTlVRMVVHWllXblZrVERkaWNERjFSbmRPV1hab0swcHBlbGxrY3paUVJsWkhVbTlGYmpkQ1UyaEdhVU5JU0Rsc1NVSkxURTlKWVZOdWJrdHFWWEE1ZUdsWmR6QlBRak0zYjJWT01VMW9TMFJPVUVKeFEwaHBZMmg0WVdkbFdFRTJkbFZyT1VRemRubEhXVFpYUjNZeFFuZzBlVVZGTWpORlFWUndSMlpaU2s5UlNEaHJZWFZtZG5wTWRtZEViR1JGV25KeFIzVkRkMFZaY0hoaUsxRlFlakZFZWtoRFMydDVUV1JUUlVzelNtUlhUek5CZERSc1VGTmlSR2cwTHpkTmVGWXpWWHBUVkdsWFlUWkVkR280ZUZkRmNHWmpTR2MzYUZkTFRVeG5UR1ZMUms1VVVVazRlbkF5VFU1MVQweERPWEJNVXpkblVYZGFabXBvYlhCWVN6ZG1SVEp6VjJSQkwzUlhXRE14YlRVNFRYZFdkME5UWlhaaFQxSllaekpaTm5oWVYyMU9kRE5oVUV0cmRVRk5ZbTVDTWxVNWFEWmhkSGxrVFZkeVIybDFUM0o0VTFsS05WcDZSRlJwVDBWaFdWcFRlVmszZFVOS2VVNU9ZVGhFV0ZSU2JrWlFTbmhRTUhKNGFta3lRVzFFVDFKTFlqZGhMemhZV0Vwck1qQjBTbmd3YlVkTllVRk9NV0l5VW1aa1prZE1hRGh1UjNWRmQyNTZWM1UyY2xkdlRTOVJNREJOYWtjeWRsUk1ia3RPVGs0NVYzWTNSbFl2T1U5dWVqYzNOaTlwWTFOdmVuSnpZM2gxYWtwRVRqZEVkbUo2TXpoRFJXcDFla0ZyY2paUU5UWTVOblZxZFRJd1kzWmpLM2xZWm5oemMwWjVkVkJ5TkhwaU5ubFdkVTB4WnpCbVVGUlBlVE56U1RBelpGTnpPWFV5VDNCMFpuSmlWWGw2VkV0NVNsSXhaelpOZHpFM1NrdFVjMmxJZWtreGVtTm5UVEZEYUVSSGRtbDVPV3AzVTNKRmJtSkhVM2hPYUdvME9HSmtMMlp3UkZSTmRHUnpRWE5QYjBWeFpIbDZaV1IxVTB3dlpURXpaaXN6VEZWNlVuTkJWVlJCVm0xM1RVY3pTVVZwSzFKQldYVlFXSFEyZWpjdlVVd3JNbTVxTDFNdksydFFPVGd5Wm1ZMlZGUlRVSHBHUzNKT1JtRm9OMFZEYTJSSGIwUXlkMjFFWTJjMlNXc3JSV05TU0VkME1YcE5WbEF2TURobk1WWmtNbUk0Ym5CS09VZzRLM1ptU0ROeWFtaDBPSFZESzJ0cFZrZDFLM0YzYWpSd1QyWlNVVGRhWkhGTGJUVjNaakpCYlZwNk5uTjFNMFpuTW05alRsUk5jMHR5TTNWa1lXc3hjbGhuVEZwWmNpOW9ORFZ5UWxaSGFrWkRjV2gzT1VReWVYRTRUVFpTUTJOaVRHcDNiVXBCTUdRcmNrSm1WRE12YldGTVJpc3JUelF3T1U1dWNVc3ZaazlPVTFoTWRESjVTV2RDTWtkd00wdHZaMmxUTUM5aFMxbEdRMDEyWVM5c2VscHpTV2RJVUcxS01sbFRTRmMxTUZVMVZVZExhMDgxT0ZjMmJrSnVhV3RKTlVkR1RIcDROVkJRYlU5dVpTOXpURU5qYVhCNGFtUllXaXR1YTFwbk4ybGpkVXh2T0VoUVJEQkRXbXB3UlVzMk5tUkhhMUptUkRJck9HeG9kVEpKYmxWblpGZ3pWV3RrZG5KT2JsZDBXR1J1V21sdmVESmlZV3BoY2xjNFl6ZGxiV1ExTW1rM1pESkdWbGg2YjNwclZHUnViVzU0Y0ZOT0wxWnBXRmxTV0hKaVQzZHJNblJTZDJGVVFTdDJWRWtyUzNReldYVlRTeXRtVkhrNVlYWmlSemQxV0U1MFFUaFBWWE40YUdNNWJrZ3dlblJ3Y0daeVJEaFJVWE5QVjBZNU5FUndhbFJPVFRGa01UVjZZMk5UYVhaellXeDJZM0l4VkdoM2JWWmpiM0ZYUWl0aU4wcDROWE13VUhaQ1J6TTFZbk41TmpKaFVURm5WWHAyUVdWcmJHWlBjVGR2TVdaRGVHZ3ZRVzk0VFVaWVRtdE9hbG8wV1Roa1JYcFNPR2QzYTBOSVlUUlRhVmwxVEZKUFMwdHVlRE53VVZWaVlWb3ZWWEJETkhkS1RDOXBabXAyTkZwcWNIWTBWMkoxUlcxR2IwaHBZVTFVVmtGSWVscG9RMEkxU1U5TmNHczFTMjVVU1hoS05EbHFLMUI1TjJwSldXZFljRzVGVmxOMVpWbHlNbXhRT0ZsdFIyOTRObmw0U2tSM1VFcEZOME5oUld4clNGYzBVR2RUYkVGU1pYSXdaRFY0TjBkbU5uQTRhVTVyWmxwU2IyNUNNamhvVGpCM2JXUjZjVTB5VEVGR1VVSkZhazQ0VWpaMFNGVkdiSGRNZVc5RFFqbHdaRmhDVEdOYU1VbFRVWHBIUVhOdWRYWkJhWEJVVFdoSFYyOW9UalJDYW5aSVEyaHZibkl2T1ZKSFNGRjJSMmhXVmpkM2NXTlNjbGhRUjA1MFVuVXhaVWMxTjB4U1ZWazFZMFp6YW1kWE9YUXpia1IxY0hGWlFuWnhWbUZIV2xJd1lrc3liVzFSYXpaTVl5OTNUR2t6VDNJMlNrYzROR2t4UTNZMmNGWmhZMHRrY0RZdmFsWk9NelZuYjFKaWNXNXhXWEJVV0c0M1FuQmxMMVl4ZWxORmJUWkhOVUZuWkRodlIzWm9hVTlVYjIxVFdrUldSRmswVjA0NFpHOXFTemxuTkZsNGRqUktTbnBwZUdWaldHcHhlamwyTW5SMU1UUjJWUzlqYmtoc2FYZ3JiVUk0WkZBcllVczNaV2MyUzFkWVpYaEpWR1ZzTldWbWEwdDZZbWxRWVhZdlIzUjRXWFptWVZkME5tRTJhMkZoZW0xSWNrcHJOSEpOVjBWU1prWlNPVTFVZDFOVmNGQmFOMHhSYkhOM1kzZ3hWRU51ZEdVcmNtNXhNRWxpT0RreE5IaElUVEJZUzB0V2Vub3ZTamROY0ZoMmFsRk9lblYxY0c4NWVXaFBUVVZ1TWtabWNtZDNjM05hVUVabFJGUnZSVVJDV0VwME0wRTJkVU13T0hWbVpGQkdNM1l4Tm5rMFNqRjBXQzgyYjFoaWJrRXlhV1JxTjFSdlRYZ3ZNbkp1WlVwRWRtYzBaVnBCYjFwSU1rTmthV2hqVGxOMU9XNUpSVGsyY3l0UVZuSTBkR1l6ZEhBMmQyOUhjbTQwUW1OV2RtSkhaMUF6YmtKNU5HUlNPV0puUVRsbFdGaEJkbGhCYTNSblpraENhekE1VEZWTE9EZ3JaMlZNUzJ3M2RrMTJibWxMVUhZdmNVNDNXbUZ2U1ZwS01VOVhTRkpUUVRsUFNsbGxiRmhQTUZOR09GVkpiekp3VmpkdlZYQlZOMmx0YldGMVdXaEpibFJqZVdWUFRrY3pXV3QxVHpWcFFWUTVRMUpKTlZVNGVXNVpTRkpOZDNSaU56UlJVQzl0V0RsV1ZYRlRUbGxhZUV4NmFHdFdkRFpzT1daT1VDc3dZMDQxUWpkemFXeHBabGMzWnprM1lsWlVLMWxrUXpkUlREZEZkR0l5ZWtkdVRXMTBkV0pEZVhwNmJYTkpaRXhCZG5RelVsbFZla1Z2VDNSTVIyUllXakkzZFhOUVpVMXpXRk5NYVdONlRFVTFkVWsxY1hwblQyY3pTRmhyU3paNmJHaENSbVowZURCRk1uZFdaRVJ0V2xwNldVVkNOM3A2TTBJeWFWcHNVblJoVTNkTU5XVTRWM2xSYUVrMmJIcDBZV0p5U25wTlJESXljbWhPWmpseVVVZEdibWxyTVZsaVdERlNUMG9yV0VoUFFVTlRTM3BMYWtKMVQwSTVTRTVTYlVGeE9XRnBjVU4wTHpKaFJWVldaV1ZIZUZoMVZFTllUR001Y3k4elZGUXlOVUowTjFoQ1R5OWtiRzVYTlVaaFluQXlRMW81UkVWMVlsTjFXbTlOYjBRNVNDc3plVmhxVXpOSVFXcE9TRkJWTkN0dk5tMVJSbWxDWTNCbloycG1ibk53V2pabFJHTklkM2tyUldJMVIydDVlR2cxYUdkcmFEQlNZbEZpYWxreWFHVlhVbFpvU2tGVVIxZGhZV2h5YnpscFVHTkJXUzl5TVZwQlVFMUplbXM0VUZneVJIbFVLMVp2Uldac01TOW5iVUpxZDA5V01DOW1aVTl4TTJoYUwyOXRkM1EwV0VsYWRuRnVLMmhEVERCTU0zaFFOV1U0ZGs1NlRIZzRMMWN3TUVSc2FERlNSVUoxY2s1b1ZVMVlUMDlGTjNsc1ExcEtiSGcwZEVaalptd3JPRVI0Y21sVWRqSTBlall5V2tSTVRFVXhiVmwzY0RsQ2RFeFpUMEpKVUdkWGNsRmxZa1p4UlVSeFRFUk9aRUZrTm1sTk5XVkxWRFZYWmsxeEswRmhXalJMWTBJd2NXVlFUVEJJUlVnd1RrTjFSV1ZFVFVjM01VVTFPVkZuU0VsM2QyTlVaVmxwU2pOdGNXTk9ORVpSWjJaaWRWVnRhMUkzWm5kemVtaGpaMjVMWkdkNVJXeHpXa2N4UTJOTVNGcHlWRFJqUkhvdkwwbFhWREUzT0hOVVZVTmFVR1E0Tms4eFRtbGFhVWQ2VDFwdlRDdDZWWHB3VkM5U1pITXhabFJFZEhwWE1YTkhNREptVmtGYWNYTTBaMlI1YzNkUE1qTm9SRWRxYm1RNWIwVkZlR2xTYTNkU2NrOHdPVUVyYzBkSlptSklRVW96VlV4WE1uQTNhM3A0VEVWMlFtTlFOMnd6V1ZkeFRtSXpTa0p2WkV0dVNtY3dUbnBzTmxSQ05reHBRMng0VkZobVNWUlJTRlJsY1hSdGNIZERNSFpIYkRCdlYxY3dkMmRpS3paR1NqSktiWFYxUzFsM1EwZEZVbU50WTFVd1NWSndUVFZQYUdoUFV5dFBZUzlRVldwMGFWVmpNamRMWkhSalZsRklaMmxLUWxGeU5XMUZNRFpGTWxGRFFYUmpSVzVqU2xSaE0zaFRRMmR3VTJaQ1lXMHhabGx4Y0hoUGFuQnhaakJ2YzBVd05FUlpNMFZyVTFoeWRWcFFUVVpvWkVGcFNtazRkSGhUV2pZdlQxRjNUVXBDVXpad2NuWnNlRFpGZW5WSGMwdzJjVEpCU2xrd2MwaFZTMkpaUlcweGJqaDFVWE15UW1sUVNYbzNVVTk2UVhZd1NHVndkREJrUkZkSVVsWmxSa04xZERBck9YUXpUamxhUldjeFVFZDRiRGRsZEdJMlQwWnNTemRMZHpobVlreGpMMDh4U1dGMlNYRkNSMFZOV1c1elMwbHpURlV5ZVc5SE1rdEtORXRGYjFGa01FZFNObTE2UmtnNFl6UmpNMmd5TlhoeFJucGpNMFkxWm5Bd2VXeEJWME42T1VOTk9VWjRaR2RoWjJaSEwyODFTVGhuVm1jcksydEpZVmh2T1dZMVYxQnRkVGw1Ym1OaVFrRmxZVWx3ZG1wWVFXTXpiR05WZFdaMEwweExOMVJhZUVoU05rTTFZVnB4Y0dGak0ySllWekoyTVd4dFlscG5hSFEwVFZCSVZURndLek55Wmk4eGR6TTJjREJxWlZrdlNGazFUV3cxYjA1Vk1taHJkM05XUjBKT1pVdDJUbWRHWjNWSk0xVkJUSGhpZG01SFZTOXpNVzAxWTFOUVdXcHNVMDlaVXpZd2FEbHZhWE5zVkhncmRYVmFVbnByVUVoRVFXZFRabkZQYjNSbFV6QlBPRnBUTms5R1QyRnNOakJoZEhwblZqUlRPRWN3WTNsTlJsSlhVVkZaVW5OcWMzYzVjR3RQUTI4MGNsWkxSbXRCTWpGUmMyaFRUVFUyVVVveVYwSnJlV1pHTVVVemVEa3hSMDVsT0hKa2RXTjBOM001Wm1FNFRrTXhXR293SzFoVE5HVTNjVFZrVUdvemVYaDBSSGRTZG14dE4zazFiamt2YVRBM2NsUk5iblpUTURkdmVVMXVhbFEwVW5SbllYSjVNQ3N6WVRkMU5VeGlUamh5Vm1odldURmxiVGN6U25OV2RWQkVlRmxVYlhSWFZHdDBSMlJyWkcxa2JuRTFaRmxZVEVjd1UycEZiRmRtVFRscVdESllka1JwZEZOcU5VRjZTVmxCV1RWV2IxSnNRV2RaTmtGYVNGTnJaMDR3UVVkbVMzRm9ibVpvZWl0eGJtbFpPRlF3VWtSM2VFSjJZV2xKVEdweGNIcElNV3BzWmxZcmRXc3lhbFZqZWxaallVZHpaR3g0WTJkM00yTkJWbFZzTlZWTFFuTllhV1ZVWmtSU1ZUUlFiWGxWZEVSb2FFSmpZMGRHWjFjMVVXTnFSME5qWkhaNE5FcHJXbVZ0T1ZVMmNtUkpaVXRCZWxOdWNsZHJUbGh3ZFZoemVrWmFSbEp0VnprNWNVUjVjRXd2Ym1kcFYwSm9PWEJETVhWVWJXSlZOMHBFUml0a2JWUk9ibUowVXpKU1kyNHhkRWRRYUVOdGRIaGpabUZUV25KR1JtOXZWblJsY1hCMmJVdGxNV1JqVXpoaVJsZDZlRXhaT0dSa1ZWZENOSE5qYjJJeFVsWmlTbVpxU2lzeFMwaDVRa3RwZWxwNk9HSkxjR2swYUU5RVVFMVNiRUpIV1ZncmFrOVRTVFpzYWxCSmRtb3dRalIzYVdndlltZzVSVU15ZVhOaVVFSkllRVpaU25KSlVta3dVbWxIZUVkdVYzVjZhMHBNV25wamNreFVZbU50WVhSWGNtdFNLelZ6V0VveVIyeENjMVpVUjFwQlpIQkpXRk12YWtkQ1owbHFlVWRXYjJKV1VEbFFWbUZxWm1WSldrTk5iWEpKZFRGdlltOVNTRmR0VlM4cmRVWkNaR013VVRCT0wxcERkM2RsZWxZdk5FSlFNakExVDFsSVNsWmtXSGhETXpGemNIUmxUbkpRTjNwTVNIVnZTRWxtZWpaeGVXcFlLMk5NZVc4NE9USm1TRXB5ZWs1UUwwOVlkMk5KYmpkRlRWQTFlVGsyUW1ZeWVWcFRaalkyWmtaRE5GQTNWakl5YzJaNmNrMHdhbnBaZUhaWVdHOTZRVlpxTkROb2FtczJPVXRNTHpOU01uWjZOelZtUzJsRE16bDBZbEJ1T1UxdmEwdEdWVTlNV1ZGcWJraHRWWGg0YW5sc1dUSXZiSGh6SzAxRVZpOU5hazlWWjJRNFIwTlpSREp5T0hWcFdtTXlWMmhIZVhSV2FWTkllVkJJWlhJMldGZDJOV0UyWVVaNFIzTjVkV1pqY1hsb1NFRmthM1ZtYXpkTGIwOUNNRVIzTjJwRmVFNXBXbWh3YVZsdlRVOU5OWGhhTkZnMUswWldiRVU1TUhoeFJ5c3hURE0yVnpSYVRsRXhRa1ZKUVdWTlEyVXpZM2RGU1ZOSWIxTXlRV1ZuWjJKQ1VFSkRiVEkzT0VVdlZVZDZUU3R3UnpOak5XZHVabTVaVEhadE9VRkthazFVU1ZkSmNrMUJRMkpXWTNkVk5WQldOWGxDUTFVNFIwOHhTa2RTTUZSbUsydEZkbkJyTmxkVk1HWjRhSHBqV2pReFFUUnJWRGRHUm5kRVRWVXdNa2tyZWxKaGQxZEhlalJpZUVseUwxVm1NbGxPVEhwRVluUk1TVGM0ZG1Zdll6WXlTbUY2ZEV0YWR5czBSaTlyT0RWa0x6Qm5ZMFZPU0hwc05ucFBjbnBPUm5rd1FXdzJaMUZZY3pOTGVVVnZaVkF2Y25Rd1VuWjRjalZ6UkVsak5qUlNkeXRYVjJwTE5sQk5UbnBvTXpWcmNGaERUV3hwWlhoaGRXZGFLMnBhUmpaSGJWZFBjaXR4VTA5bWNVZFhSSEFyUkdwdFVURm9kMWd5TlhsbE0yaFJXREUxVTNWWGJIaG1WMHh3ZDBsV01GUjFWRFJxWmxZeFZUbE1jVEJxVUZkU2MyTjJlVlpRV0RGeGNuaHNWMGMwYkVSd01HUmpORFJrVHpKU05ETkNOeTh5TkhoTEsycDVTMGN2ZERWU2JrbDVWR0ZYWjB0SVFYVkNWMmhZYWl0VE1FVjBXbmN6TmxSTmRGQmlLekl6WkRCUVFrZHpNR1I2TkUwMllsRkplWE5zY1VaNmFEUjBjMWtyTVV0eU16UkxORzByUVVweVVYbzVTekphWlhacFNYa3paR3MxTUVZeUszRnBlWE5rYTIxamJHc3lOREJTUjNkblpuTnhOV05xVjNJME5FdEhVREprTkhKTEwwMUNhbFJEVGtwWGRFdFZSa29yVldNM1NURlpOMVJPY2xabVEybDRabGRNVm5FMmMzRk5lRTVFU3k4eFkyWkNkRFJpTldGV05XaGpkMlZqV1d4TFVYTmhWRTB6VlRGeVdYRjBTbFEwYVU5NlJUaE9hVzVqVmtKcWNEVXZXRFJOUTBGemVqTjRTRXQ1YTI1cVNFcERlRkpMV2pOcWEwcDBjWGRTV0hoaVVrcFRORzB6TkVSMFZVeFlZbGQ2VEZkVVJWUkhVRm94VW1ocWJHSktjamtyVG5BMmVsRnNibTE1YkU1aGIxZGthM0UwUlVsRVEzZHpNMkl4TW5saVZHSnFjbE5sT1RCWFZsTlJNbUY0U1ZJeFZFSmtaR0pOTTB4cmNtWTNRVkp3YlV4YUwxVnFUaXRQYm0xeFIwa3JLMUoyY2xsd2JVazRXWFExU0dselMyUTJjbkpVT0dzMmRsSktUMUZIY25Wck1tTjVaWE5tUldsbFZsQlBjbGt2ZVV0V2QyZ3ZWRVJWUWtGSE1WcENTRE54UkVGRVEzaFVhVWw2U1dvNEt6QlpPRFF2Tkdsc1ZubElhRmRGUkZNeFRFSktOME0wVkdVMGNHbHpORzlMVFcxRlFrWnJhSFkyU1V4MVkzZzBibWRqWjBsRFFYaFVUV2xSWVhWVmVHcDRVRnB3VjJkb1VHTkhObFJVWjJVMk1VSXdiVFF4UWpWWVEyZEVVVEIwSzJoNVFraDNkVlJtVlc1a1FsaEZhREZvU3pWQlNVRXlablJKTjFVNGFEZGhRbVV6UVhSVU9VZDFlVmw0ZUVabE0wVTRhMVpUTkZvMFpFaGhNamM1Y21Kc2NscHRkRWRUTm5KdVJpdHhiV3hqSzI0MmJtSmpkbGg1T1dvemJsVnlaWEZzYmxveVRHRnVjbUZqU0hsbmFrUnhLMGw1YVVSblFsTkJRbE5CZHpJMWIwZ3pVWEJDUm1sblREQktRVWRPY1VsTWIyTkJZeTlTYkVOQmFVWmtjV3BQUWxwVFJHTnBaRlZpZWpZeWFUVjFRamhITTA5QlpUSTNVRlF6UzI1TmQwMVNXRXd5YUhsVlEzTlpRazFLUjJwemNYTTFWRWRTSzBsa1JXWk5aR0ZSUTFjM1VHRXlkRkV3TjFwNWRHWnFUVWswWjJjMFJtcHJRV1pwVERSR1ptZEVUMDB6V2l0S1kyZFBSblo2UzA5WldITnpRVXRKTWtkcWFFRlVSa3BIUWxkMk4yOU1MMUUzVFROTVQyUnlXVXB6WTBOa1MzTkJWMUJ6VVZadGJFSlliRkZzU0M5ellsWmxiVVJPYlVRNU16SlNNbmxvVWpOYWVWVkpWVmd5TW5Zck9EQnRka1JtZEhGcVprdEZRVVpxTm5OV1lqbDFLMkZNTVRGdE1qQk5UR0o1TW5wVlRrSkpWRmhQZUdObVZIbHRNRWhxVUcwMWNrWjZjV3B2THpsaFQzTjJSMDVET0ZscEswTktaMjlKVmpJclpqbExjbWRQWjJsWFVVNDNPSGh0VGk5YVJ6aFNRa0poVVcwNVFtVnJSV2RUUWtaRU1HaEJaV3hFTmtkbGVFTlZSVk5oZGxaRGMxb3JLemsyTVZnM1ZtVjRaVGM0VjBzeldHWk9PVzlTY3pOemVHdHpObmR1Y2psdGVXWk1kalZrTTFveU5uWTVPVzQyYUVrM2VXWk5SR2czWlVWTFQyWlFhMUJtTUVaRFIyVXlkRFZ4UjNaWk5HOTZZWGh6ZVc5V1R6RjFUM0F4VldFeFRWUldkMkpEU1U5NmJtSnJNa3RIU1dzMmMwb3lSSFZSVHk4M2J6UTNZMGRWYURaa04ycFNiR014UjJvME1GWjZWbEZEZGxkTE1tZ3hXRk5qYzJ0SFlubDFaMFpUYVVsQlkyTkxTa1EzZFV4TFNHbFdabEZOUW5wd1EydGhWMHRNWWs1VVZ6aDRObmR2Y1d0elNtazNRM0ZSY1VWQmRWSTNiME5sVGpRMVpEVmFXbFlyUkcxU1NGRkdhRmwwTlZoUlNIYzFNMVZHVW5GUFNsbzFaWFZvYWt4amNtbG5jRVpSVG1WQk5WWmtORWh3ZDFWWlUzWkZVRUpYTm5KclNVaDVOMmRHTm1sT1NXeDNhRFJFY2t0SWJGSlRUa2t2WWxWYVltc3lXRzFIV0hsaWJrZzVSRXRWYzNCTFR5dHNLMGxLY0U1NlRsTXZiVFU1VFZkYVYxUldZVEV3T0c5RE1sbG5NRUZIUzBKTk1HOVRSMkUxUzBsSFMwTm9hakZRU1ZkSE1qVlFiblJ6YVVWUFprWjZUbVpHWjJKUlYyNVdORkpJU25sU1RHbGhaMnRaVDNSaGFFRjNjVGxhUlV3MFlrWXdhbWQyU0VkbGJHY3pjMlZOY2tveWFXSkNVbTV4WmxGUmRHNUhkV0pEWW1VeWVEUkZaMEpzUW1jMmVrUlJOR3hOUW01b1QwaHRURUZ1ZGtndlozRTNORGxXVTJFNFRXUmxhbEl2TlUxaFNVRkRUbVYxU25oVlRESnVZWFZXTDJ0QlpUaG5WVnBGWmk5RldYVmlTRkEyTTJ0MlUzZGhUVkpvVDJwVVRqWjRTeTh2ZFc1VlFteEdOMmRsWmtOMlExWjNhRFJMTkVGcFdFTklaMDl6YjA0ME4yaEhkMUpSVTNnNVRWVXpOMmxtV0V3clJtOXhRMnhEVG1SVWVXVlVObkYzYUROM1prWTFkazVZV1ZOTE5tNUZZemRuSzBSNWRUUTVOVVJpVVdoVFdISjZiVzlSTDA5NGQwcEZkMnh2VWpOUlVGcHlha2R0Umpaa1FYaERRbE5SVFVSelpYbENlVTg1U1M5MFNFNDNhMHB3TUVWMlkwMU1UMVZ0VUdOTWFXZzBXR05RWVVvNGRVazRNVVZJUXpOR2FEZEtUV1Y2VmtkME5FTnpVMEZYYVhsSVVTOVJhMUJVZEhFeWJqWnNkRUV5T1ZOTWMwcDBheXRtZHpVcmRuWlNTbVUwU0dzMFVUUlRjMFYyUWxkelJXVklSRTFqTjBocWVGUm9RMmRJV0ZWU0syYzFkMkpWUld0VVl6QktTVzFyYmpob1N6RnNLMXBxYTJKNmRGZEVNbWRwZFc1d2RYUkNURlpqZGxKTVZWTktiMmwxUVdGMVVHaDZUVFJ0WVVobk1YQlJaemcxVTA1SmNEaEdha2hoWmpGRFJHbEdTVnBqT1hKRGNuQlBiblJRYkU0MlVVRndZWEI2UVhCRmFIcFJaVXByYmtORlVXVlFjV0ZwTms1dFNrNVNiV0Y2UnpOWVpraEtjVTF1ZUVaaWEwWmFVV3RxUkVneWFrUnJNVVZHU0dZM1kxcFZTeTlxTlRoYU1tdHVZbmc0WkhWa1VDOVZRa1ozVUVsS2NEZHZhbEZrVVVkaVF6ZG9abFJ0ZURadWRHSXJTa1pwU2paUE5ucExlRGx1VTB4dlJrSkRURWN5TW1jd2MySjVhMGh2VURVcmJUQkRiRll6WjJWb1ozQjNiR05KWlVOeldVdzRTVlpCY1RacVZtZG9hbFYzYVVwRk9EWXpPREp3VVhsVVVIUlZZVkprYTJSVlFVeDRNVkU1UldWaFNWZENWMWhVY0VwdmJGTk1kbTFwT0Zac2IwdGxaMGd5VW1ObWFuSTFaR1J0V0dwb1VqUTNkVTB5TnpjeFJFSjFVQzlOZFRrdmVVczBZbEJ2TVdaVlNHbE9XVmx6TTAxcVJVOWpWRlJwVEZOdVZuWmhWak5oZW5GUU5sWTVURUpQYVc5T1psWmtUV1pvTm1Gc2FHSnhiVkpSTUhaRFZTOWtUME14TDNwcVF6TTNVSGxCYUdweWRqbEpaMUpvVVVoQ1lXRnJhR2syZFV4dGVFdE1VekEzVlZRNU1tVjVXRkpNVEVsb1ZFcG5XalZTVlZZM2RYVmtWVnBYYzFoMkt6UTBTMDQ1Y1RaSlJFdFJkRmRaU2tSalpuUlVXWGxNYVhSTGJWUnZPSEo2YUcwd1ltb3lVMXBMYkRnME5XdDRSbFJxVlZsSWQyMUxkMFJ4YUZkV2NXUmhjRlEyYlhWalJESlpUSE5NZEVKTWVWWXlkR0ZLVFN0a05XNUxWWFZLU0ZOcFNuZFdWV1EzUlhwU2IwMVJOSHA2TVU4dmNXdE5ZelpYVTA1S1VYWTBkV2RaYXpKTmJsQlNkbXBDZVdGSlRISmhVMlZKUjB4SFdtRnBZbmhsTm1oQmIyc3diU3R1ZGs1UFJtMHlkeXNyYVdkMGFWWmlkbFJhVUhRelVIRlZRV1prY0d0dE5qRlhjamxxVXpCbWVuRnNTMWh4YzJWdGRsSjFOM05LVGs1eU4waDFSWFJJZWpNMVpGZDZOWEJpVVc5QlNuaGhLek40Wm5GUlpGSnpWRTgyTVVwT05UWlNUV2s1ZFU1eFRUbE1ielI0VFhsUFdEVmlVM0paWkRaYWVVOXBXbTFWSzNONFluRnNlRzByVFdSSGVqSnlNRlpOVUV4NWNEbFFabmRrZVdadWNrMXJhazl0ZDNKMFlUZE5kbXd2TkVaRGJGcFBZVUYyTkhWdVFWVXpSalpOYkdRd2NYRjRjVzk1UVZaNFlrdHRNMjlQYVN0dFMySlBNMkpFT0RoWUswUXdVUzl3VHpnME0yb3JNMlk1UjJSWldISjNWMWxTWW1sbVozSmtVMnhVY0hjMVUxaEVlV3hvT0dveFNHbGliMnRCVjJsbVNVaFJWMDVYTkVkMFdGVjRWSE5MVlV3eGRVTlVSMVI0UkdGQk1GVnRTMHByVEhCc1RHMUhTR1I0V2tJM1dHTlhkbEpLTmxOdGIyWTBNVUpQTVU1dVRFVnBRVEZxZWt0VVYzbHNLelZWTUZkSldYUlNhRWRxZGlzeFJVZHhXRXRIY2tKMmRtbGFhV3BoZGt3MVJDdDJUM2x5WkZNeFpsUnhiamhaYTBadGQzaG5TREZ5Tm5Cc1NIWnRMMlJwYWt4UWFYcExZblI1TURka1VHVXZkVlZyTWxsS1lTdHRVVFpNY0ZGV1ZqTXdha3gxSzFwU0x6TlpiRzVzVkRoMldDOUdUSEJ4U0ZGSVF6UjROVWN4VkU1RWJFVXlhR2N4YWpNeUsxbGxWRk4yTDFobVJuaEVSMmh4VUZGdFRHOTZNRU5VVnk5VGRIQjFjbWs1U2t0TGEwUkVWQzlUVTJKeVJUbGxRVGxGVnpSdU5Fc3pWWHBWTm1ONFRtWjNPRkpsU2poS1RVVktLeXRxUWlzMVpFVTBRVll5YldzemF6VXlNa3hoSzFWa1VsSlhXVU4zZEU5ellqZGlhV05ZZFdSNlJqRmtibHBzWml0RmRYcEplWFZKYm1WeWRUVmxXSFUyZFROMlFVdFBka3d3VWtWamJ6TnRWR3BLTkdseWJUUklSMVF3Wmt0RE4yUXdWVlpKVkV0aFUwVnNRMk5xVkVOdFRVMU5PRVZUYTBsdVpuSmpOV0l4VmtsMVlXOXhUMEo2VVhRelQxZENXVFJpVFZSck9HOXRUVGQxY1dWNmRUTTBWVzkyUVdWMU4yZGFablpMWTJ4WmR6UlFaV2wzYlRKelQxWnBlak16ZWtSNVprSlhVVUZySzBaNk0za3ZiSEJIWmxZMEwyUkdRVFF2YTI1ME1pOUVjREpvT1VsUk5HVlZOMGhqT0hCb1RrVm9UbHB5U2pGNlVtbERUSEpCT1dWRGEwTk1ZMVE0Um1KeFZHbG1UMjVEVVRSeFpFY3JSME5ZWTBKdmJWTjVNR1JTYjBVclpWWlZVM1JqTjBOSlIzaFFkbmx1YkRKbGQwSjBSM0l2TkVsVmRWTlFVRVpwV1N0SVUwMWlXbE5UVFU5VFJXaHZlWFJ2VjNKVGNpczRPRGhpUWxFNFptWkJhMlZRU1VkWlVubHFSM0JYUzFJd01VZHBZM1ZGYW5CRk1EZDFUbk4wVG5GU2RrOTBXRWN2VUdKNmVtbzFPSFJtYm5OM09GUjFhRnBMVXpoMVlXSjVlbk5qYjNKNWJFVnhRVGh3TjNwck5ESnlRVVUwV21kVWRFVlFiR3hXU0VwS2FIbEZSMFpaVkU1a09GUTVaMHg2YTFwclpIaGFiME5SVW1waGNXVkpZMHRHY25jNWEyUk1NbVEwUW1GWU5qQjRTa0ZLTm5kNE1XTklaa2haTVcxSE5HbG1kV3cyVjNKblVFNVFhbG80ZGxaR1ZTdFFhalJ6TURKSVNXRlBXV3BzYWxWMGIzSlZVelpSYlZGamRsVnhSMUJXSzJKMU5pdG1lWG92YkZCMGFHRTBPWFZyYWlzM09XRkNiemRJYVZKQ2EzQlRWVlU1V0ZWSFJtUnhhbEpGZVZWWVl6QndVMUZKVkhOSVNWcFlkWGR6T0VWNlNuSkdOeXRXTUZCTU9YZHdiVkpHZEc1d1JEWmFSV1ptU0RJck1tSnVObTA0Ym14UU5qZGxabVJzZWpaUFVuUkNjbU5VV2psVVltRjRkREpLU1ROalFXc3JkbEJrTUZCeVoxQlNRM2xYY0RsVmFtSmpaWE5vUjJZMU0wNUVablJpVDFReVNIVnhXWFkyT0hoMGVrVTFPQzl0VGxwa09WZFdTSHBVTUhacU9XUklRVXBxWm14R2NHbDNUMWhOTTJGclluZEtWVkpMVWt4RVYyWjZUbXh3YTNwYVIyeG9aemd4WTJRellXNURRMHhETHpsT1pHSlBXVGh2YTNRek5pc3hVMFZvTVdJM09UTkRXazQ0WVVKSmFrcDFkMjFuYTIxdFZHcEZVMmxCVGpNM1pFMDRUMnBTSzBGNmFsTmtNV2wyYzBOeVVXSkhWMWxUTUhaYVIwTXJSVU5SVFVWRlZ6VkRhbkpaUW1vMEwweGxjbVpNSzFoeU5VWnVWbVZIWkZadVkxWjJjRU5TV0hBMWNUSlZUazVwYUdZd1UweDBSbVIxYUdSNlNIWk9SMFpyYjJGWGVGUjNSekZEV1RORFJ6UkdWM05aWlRoVlNXUTNMMnN5Um1sYWREWndibGhCT1dSdGJDdFRTM1JpVGtzM2NXNDFSalZSWVhKRFpHVTFRa2h0UzFwTmFubzVVMVJJTkhBcmNVUkpUREJZYmpodU5IQm1SVmx4VUdsTlZucHlhbEZJTkV0bFNrUk9RMWRqYUZKaVUzSlJZblJIZGxaNkt5OURTV1UwVVdJM1R6TmxhMUJNV2s0ellqUjBURkJJYnpSQlZqbDBhalkyVjIxTVVuaEdhVmt2UVdnek1IUkZPV1l2TTBOSVpVVjJXbXRKUmxNMWJERXdLMlJpTkc5UWNEVmtWVWMwWkRoUmFVSTBUVWc1V1dsVGIyNDBhV0ozSzJsSlREUm1WRTFFTTBreWR6VkViMGgyTm0xUksyZEJiVEoyY3pka1EyNXlNemhXWXpaUVJVOUlNMUYwTmpsbVRsWlBha1IyTkdoSlNWSlRSVWhHUVZaNFpWZEJNR3ByWVhsWU5sSkZUMHB4TldGRVEyZFVNVGd2Y0ZWTk9HcDJhM3BwYjJ0bFEyaGxWSGhqV0dOemVWVXJPR05xVW1WSVNXZE1hVGhqVWpoeU4wSlRhM1p2VHpkRFdVZG9UR0o1U1hOdVEyYzNhVE4yU0ZoU1pWWnlNaXR6YVRCMWMzSTJMMHRDVkRSTlZETmFNVk4zYTA1V2JuVTBjRFpDU1hsQldFTXlRME5JYldkNmJqWlRaelV4VWk5alNpdE9RV1l2YjNKRGRHUnJRM1l3WlhWTlN6Y3dja1JCY25KRFRYVTBhbkZvVVUxVmVFOW1iM1p0WVc1TEswZFNUVVZIT0VaR2FWVmpVbVUwVTNaNGVFVllNMko1UVVnNGJIZEpORkYzTDA5clZuZGFXbVpHUzFsc05tTnFSV1pZVW05eGRuUmpUR0p1ZEd0bmJITXJhREJoTW1ScFZFNHdXWGMyVUZsU1JXazFNWGhGZUhwa1lUSnpVSE51UVU1VlNXaHlRamcxUjNGT0wwRnNNMUZRVDFsbFJqRkJVbTVoTjB0R05HOVpiVEpzVTFwT1JsUnZTVWhDUWtsUGVHRjFSMmxGVUZjMlNrOVlNVWRsTVVFdk1rMXFla0ZvYVRkQlkxUXljM0J3ZVdNdlpuQlRXbGRvZWpsd2N6TnRNak5tTWxrdmVDOWxPVmxNTW14cVRITjBZMDF2Wmt0c1ZsaDJWbTF2YzFFcmVVaENiR3h5VjJrMlVHUTNXV0pQT0doNEsyd3ZTRTVMT0VZeVRuUklWMGRuVDBGRmEweHhjMlZsYzBrd1dtaEpjVXRhWnpORFNFWm9XVmxRTkUwek5UVkhkbnBGVG1wSVpUWkViRnBQTDFkSVdtcEdPWFpzVjNSdmQweGlSaTlqY0VOM1NHNDVRa2gyT0VGMGRtZEdORnBPVFU0dlowRjRXVWcyUWxOSk9XTTBVRXRCY21kNWRVTkRhRUZVUkdSUFNpOW9USE5yZW5CQmVqbDVjekI0SzAxd1NHSm1UWGRZVVdFelRXbGxjRmh2VVdoaE1sUnNVazltVEdwTk55OXRhVFJ6VkVkaVMzZGhjblJaTVROalFUVnpORWNyVXpKRU9VMUhVelY2Wkc5Mlltb3JObWR2YkZkM1EyMVdhemRqYlc5U1drMVhTMDAxT1dSQ2NsbFpSRnBZV1hvd05IcHlWalUwTlVodGVFSnlkamhOY1c5RFpGZFVjSGxvVXpkVU1raHphQ3RQTlU4MmVsQldXbFpNYkc4MU1VTmFhbkZPVHpSdmNYcDRabUp6VUUxdWF6UkpNVUpLWVRGb1pUWXdiRmt2ZERGQmVuY3lRbFZrZURoUGJ6SXlWRFEzY3l0Q1NUbFlkMmM1Uld4aGVXeDVhMkozVkVWemEwbHVRelZuUmk5RFJ6VmpjMmcyYmxKWldtTnJSa2hTYTNCSFkxQXpXamxSTURZNWVXd3daRzVLU3pSUVJpdHdaSFJYVGt0VFoyUnlaWFZXYTNGa1Rua3dhbGh6Y0dWdVJtbGhWa1J1VjJOcmNYQmlSVVkwTWtscGVHb3JSVU5ZZDNCSU5UQjZheTlwTmtKRkx6ZHFZM0pHU0dnclpscG5ZVmhMTUZOdE1EZExSREJ4Tlc1WE9FTnJkbXBRY0ZSMVNsZHZkRUkzZUZjMmF6UjZjVUo0UTJab1ZsSjNhMHh4Ulcxek0yRldSU3R0ZFdGM2NEWnJhbTVZTjJkSWFFOVhTa1FyTVV4WFZFZGFSeXRPY1dwWmIxVnFiRTFPVTNKSFZtZ3daVzVLYjJGSVN6VkhVM0pJTUdwbmVEWlVOM1ZRZG5wTVFVbzJNR2RhZFVaeFZ6QXZZbTgwTjJWdlZEWm9ZMk5OYVhCeFUwVmpXUzlwU1hsUWFsSXdWa1ZIU1ROdFZWSkxlV1ZJVmtGQlZVNVFlV1owWTFCMGRFMVNhbmhWUTBSVVV6UlJiMUpEVVZjMEwwcDRWVXByTm1Gdk1HMUpiRmxXV1ZkWlpEVnFjQzlCTTBWdVRVaEVRbnBpS3k5b1UwZE1XV2MwTVdwbEsyRm5PR05yWTBOVlZ5dFJlRWN2U2tkdlpHUmxkek12TWxVeWVXeHlZblpJVEVaeGNWaE1WbkkxVWxoTFozSkxhWFZ0Vm1SbWRuUjBNamhsZFM4eWVscFNNMUF5TkRsbGRsUnpTaklyYWxkTE5HOVdhak0zYkZOckwwUlJWR0pKYVN0RGRHVTJNRUZUY21oVGQzUXZSMVJuY21vM1lYcFRXRU5pZFVSQ1YzbDBjRkI2TlhFMVRFZEdUMlZ1V21wemNVb3dVRkpPVTFCRWQyZFFlVm96WVdsdU4xWlVaSEJUY21SbFQxaDJNRkIwUms1ak4xQnVTbkZVZFhGd05TOVpWalF3Vml0RFdrVm9kek5SVm00cmVHeHFRMlJNY1dkVmRGTnBTamRMYWxCTmQyRXZXbVJzVEZVMmN6SkpkM1Z5UldoQlprMDJVMFpGV0VwMWJrZDFUVmxPWm1rdlQyRjBSVVJHYzJ0TmNVMXRjVmhpTm5aTWJteHdXV2hOY1doNVIyVXZNRmQ1ZG0xWU9YaFJWWGd6Vm5ReWRIUXpXaTlvWkdWSmJHNXRlblEwTm1GWGNIY3ZkMVpOWkd4RVp5dEVUbFY0V25JMldXRktVbTVyUmtWS1drMVNUMmRMVlZWcU9VNXlVbEJuYjBWa05HZDNjRTAzWTFwWlUyTkViVXBSTnpSdWRWZEpLM281ZW5JMGJuZDVUM01yY2k5dlEwNUtSa3hSU1U1dlZVWTJUMlpCVGtaUldYSjRaa1ozY0V0elYzSjVOekpLU21STkswOXJXa2xtUkV0a1drSTNlSEZpTHpodVRHOVlhR2hsVVVnMGQxTkROa0V5TjAxa1RHaEtOMjVNVUZkRVQwa3JVa01yTVZkTlkxQmphMDQwUlVaRk5IbFJjemw1WWtKUFJWbENNRUY0U25oSGFVMTRkMnhpWW5sQmRUSlNOR0pLZUVNNVdIazFTRkp5TWs5eFRtWmphV051TjNCTGQybEZURkEzYlhZNFNHUmlVamxXUWtzellVOXZhbll3U1VkWlZ5dGtOR2xsWjBwRFdsQkpUREk1TjBOaldFWlFUMGs1TjBkS04wTmhibTlYVVVOb05VSTBlbkpqVTBVNVJIbERPRGh2YTB0U2NUQnBZMWd6YmtWR1UwZ3haRU14UXpkMlRrbENVSEJYUkdKdWJVdHZLMFZIU2k5Q1UyNXZSMUZ4TjNocFFYWTJWbWt5TlN0M1QwMDBTbFUzTnlzemRGUjNNRklyTTBGRmJ6TnBMMEZXWjNGaWNtRktUM2RrVDFCVVMyb3ZSa0pHVjA1aFZrRXZjM1phV0ZZNFpWQlVSVUl2ZFdsT2FYaGFkVVZWUm5KNE4yb3lhemR1YW5wclJtSkZPV1ZCSzNCVWVEZHFSR0prZUVJM2JqSlJRVTVTYlcxNlowWmpTMWxWVjJwTWRrVnhNV0pLZURoRlJVUTVNVWRGUW05eE5VSXZTSGRSWVRCNVZYQlpWbTFEVlM5NFJrbHhMMkpoYWs0MWVGSllMek5wY0hWd1UwWkhPR1V5VGxsM09YSm5hVXh0VG1sbVQyVnhLM2RoTms4MFpISXJaVTQwY201dlpXaFNTME01ZUVNd1ZXNWxPVWwxYWs5TGRrOU5WVVp2TDJnM1FpdGlkbEY2TjNoUk1WaHVjMVVyT0RaV2FqSjRUbUkxYlhwYVVHWlZkRE52UzFocGRFWlplQ3QyY1ZNNE56bEphWEJqWlhRNFJUSTRXbTk2V21OUmJXNTJjRzF4WlVGVWFqUjBRMDUyUmxSR1RWUTVVbVJLUlZoUFNsZDFSemROVUVaU0wxRndkVnBZVDBzd2NqaEZSMWgwVHpGMGVHTkRRMFp0TjFsQ2JrZzRkbHAzVEZSTFMyWjNiamxPV2sxNWRsaDZWRVpaV1c4emNqTjZOUzh2YzBWQ0szYzJjblJ3T1ZFck0xWndOa2xxZG5SWlZqTjBZVGt6WlVobFRVZGFTbFl3TlhoR0x6QlJTVmRHVmtKV2NWSlpVQzlRTkdVMFdFZGFlV2xHWmpWR056azFjMk0zYTBWT0x6VnpTVFpXTW5Wck1teHpNRGxXVmtveWNtaEdTbVJqVUVFNVpUTjJOemx0VEVSamRIQk1VemcxZUU1a2QzSmlPVE5QYzFGUU0zVm1lV3RGVURoS1FUTjZSMmRYVUU5S2J6azJVRTF0YWpkcVEzUkJZbWRaU0dKSVIxcEdSbTVMWW0xckwyRlFabHBwSzFkSmJrSjJSM2RLVmpSblRqUXdVemxKVUdwRU9GVjRhRmxYTmtnclFXVnZZV0ozZVcxbWFrTk9WMWhJV2psVFpVdEdXVE5oYVdSemVUVnVLekZaUzBwUE0wNDBhVE5xTmpWeGNrMVNaWEprZVhoalpURnBlVEZTUlRGM0wwcHhTbkp5ZDNCUVIyNHhVa3BHYUZCRU1TdFpXVWhhU1VvMlpsQlRPRUl2ZFZkalZXRTJkWEZUWkZkalZucHFVbUZxWTFWc1RHb3ZOMDVJWmt0Qk1UZDRSMWhMYjNGU1VucDRiMmwwZUd4amMybDFRak5XYzA0NWRYbFVWMVo2VkhCck9EUnFVRU5wUldRNGNqTTBMMDUxV0ZSSk4yUjZkaXROY1RjMldIUXpXRGhPUTFCc09WZEZSbXRIWVc1NUwwVlFNM2RhV1hKd00xbEpWbG8yUkZJd1FWbERkWFZaYVRaWlVtdElkVXRTTUVOWlEwRTBlRGNyUlZKclJXVkhkMVZTV1ZSeE5IQTFlRVoyUjBsdU1uTkhZMUpWYzBWcVp6bEZNVWMxYkZSbFFWUnJSVkpYUzFoRldHa3ZUVzlxY21kcGNGbzROMnBGV2tKSVNYUkRNMkZ6WnpGV00ydHJRa1ZpUWxOMVdtcFFRVXg1YVVGMk5sWnBNalVyZDAxbE5HWTRia1JqYW1sbVpta3ZRVTlZWjFJdlowRkJVVUZCUVVGTlFYaGtRbnBNVms1bVJIcDZNVUZCYzBsQlFVRkJRVUZFV25wTlRETkJRVUZCUVU5R056STJiamhOWmpSSFFqWTBTRzFCUVVGQlFWbEJRV2RCUVVGQlFVRkJTR3BoV1RKQ2ExbFBSRzh2WW5ORFUwUk1PRTFtZVRObk16QmtWVUZSUmsxRmIwRkJTa3B6UW1aWlFXVk9jSE5yWjFCTldGVkZWV2hQWm5WdWIyVXlVVmN6WW5SdE0ySjBiVE5pZEcwelluUjBNVWQwWkhVMGVISjFaRGd4ZFdKbVNtc3hXbXhhZFRSU2QwRnRTVk5GVDBZcmR6QlVla0ZZUlRoUFJrcEdOVWRQWTJSb1NEWmxVWGhxYlZSTlRtTnJkM05PVTFOWWNHbHFOR00ySzFWalVsWXlla0ZRVjJSRU1YaDZTRVZ1V2s0MGFHTkpaakZKWVRWTFdIcERXR3BUUlRoNWFGQlVVeXRoVVdFMk56RktaakZZWWtkelZqbHBZbTUyWW1OQmFuVkRNQzlOVFdGNmJXUnhSR1ZJUkdKak5ETjBZemRvZEU5UFlqaGpjWFZKYW1sWVNHSmxPRWhxYkRKcGNITkpXVEpTTW1sdVEyVjBkVVprSzNoUFlXRk5OMGxoT0VkV1FWRmhibXgxYkVsTmEwSlhiMkZYV21oME9UWmFWMjlFYms0M1dGWXpURGh0VFdWd1RFdGlVMVpEZW1obllqSkhkMWhEUTJSTlRtZ3dVVmhNU21sdmVIbEVRV1ZrVHpGcWNqTklSVmd5SzJSaGVIbEdabEJDZWxWbWRHMXVPRE5IU1RsTVpYQmpUV2RsVWpOUGVrTTRhelIwZEc1MVFXcDRXR3RqY2l0UlVqWTNSVFEzWkdndmNqQjFTV2N3WkZBMVVYRXJhamRSTnpGdUwxRkRjRWhsU2xaRWNEQnFObFJDVjFacWN6RjJWblpTZVdWNFIweFVjMDFhWkZaSU9WWTNOMEpQTlhZeWQzVlVVbEIyTW05U1JFcHlWeXRTVTNwcWIwdGhWbVZyTkRGSmQzWTJZVFZuTW5GamJqQmFlak5JYXpoaldrTmFiVGsyTlV0TU0xWmtXRE50VUVGUFpHZFBZV2hsV1ZGRlUwNTFkMEZxVjFWYU9WUk1ZbEJMUmxwd1JGWkhVV1ZhY1hCeFJtaElVa3hFVVhveVdUUkVObTUwVFdWS0sybHlWMWxvYmxOTVJFUk9OMUl2TmxoVmFURnhXSGhTWjFGdGEwMHdOa0YxTVhJeVdWSkZZekZEVFRGUVZuWXJVVGhaV2pWV1RVMWhNMFUwVUUxS01sb3dSeTlYWkhkMFZHRnhSemxpYjJJMFFUbG1NMFY1V1ZwTlNreFdla0ZhV0RST2VrdFNNVUpoYjFwQk1Dc3dUbVZPZW01dVZYUlNXakZxVWpsc1UxSnNPRU40ZVZObFlXaFBaaXRMUlZwS1UxTldRMU5zVTBSRlFqUkVVa1ZYVUVWRVJGaFdMelJHT0dOb1dGQjVhM0YzYTJzNWVFZGphV3hOYVVoalZrbG1WR2h2VURWS05FYzRUbnAyT1U1NlVXTkZVSEJKUVRJck1VUXhkR05OTDFKelVucHpPR0ZsWjJWVFUyUmFhbXBOTWtGbVJrbEVPV0ZWZUhsemJFcFdTMUF5YTJaRldXSjJPR2xEV0U5aFNXMVFkMlo1YmtWdFoyWkxXSGRFU0ROQ2NTOUJRVUkwTW10WVFrRjRRV0pSVVVGQmQwWm1kM1J3UnpkWVJ6TmlkRzB6WW5SdE0ySjBiVE5pZEcweVltOHpXVmdyZVM5QlRXMUNkSE5JTWpScVRHWkhaU3RMZWpoUlVEUkZkMGxxVkVOSlFtdFpNRzlTZGxGcVdtaEJibE5KYmsxU2NsbG9kRFZGYm5GVFVsVlBNbTk1ZEZsMU5sRkVNbWhtYjFwNWFGUmhSbUp2VjJSalMyeDNiQzlEV1RoTlRIZHlaa1JJUTBJMFFtdGtlVkpWY0VWMWExZHRVbWsxUldZd1pIcFNSblJJTVRCWlVGSndlbEpFYkRaUVlqQkpVSEJYWmxFMlpXazVPV2RZTlV0bU1scEZjR3BSZW14T2JrTjJSMVZVYzBOWVdYcGxkemxFZFU1VFkxSlhORTkwZURCaWFtWXphbXN2VEU0clprZzRSMlkwY25kSlVXTm5jMFJvVUc1RFNtVkhiRzFGYUUxTWVsbFlTaTgyT1ZSdWQzRkJZVzFPVGtaV1lVbGpkSGxHYm0xSFprVXpRa1pGYlhoc1N6ZExXVWRYT1dOc1lqVnhWMXBXZVRac09URk1ibkZOZGxkTksyeE1WSFJTZUdGVUt6SlJibXhTZG5CdVpsTXJLMjFxT1VkdU5rbDJNakZaVW1oT2FrRTFSMGd5VDBWTlkxWlpXVXQzZUdSb2FFaHFRamx0TVU1U1RWbExXWGR6TldkR2VrbGliVVoyVDBGbFkyRTRXVlEwZUZBeGFVSXhaRGR4WWxFeU0wcHNkbnB5U2xoWFZtcDBkWFEzVmpjeWExQjBhV1paWTJVM2JUbDVaRFZ1YmpOTFoyczVURW8yYUZJd2VXcHZNVzVUWWs5U1QyVmxPRGh5TlRWdldtUXlabGhrVjIwMVZIUTJVR0l4T1ROMlpWWTBkWEkzYUZneGVIWnpjbVphTW1WRlpUbFBPVFJZU0M5bFZDdEhXRGh4YmpWSVpqWkJMek5zTDNVM0wxVjJLelFyUkhwRlIxUnZSMDEzVGxSblZ6TkpkMnd2TjJRNWNraDBjMVJ0ZUVvM1FsTlJVVlJzVVVONlVVUnVZMEZuVFVGdVRVRXpka0ZWV0VGUFdFRmpVSGRGZEVsUlVqUmhUVUZoVkhkTVVYZEhPSGRRVXpoRFMzTkNZV05DVG1aQ2RUTkZWVXg0TjNaSGVqaFNkalJYZVc5WlJtOUdTbkZOTlhGRGJHRkNNMkZxWnpabmF5dG5VM1Z2TUdVdmQwaExXbUZKUzBGSWFtRlpNa0pyV1VkRFZWbEJhR2RaUjFaM1dtMUJRamh3UVVKTmQwMXFRVUpGVFVGTWVEUXliakpRVGxaSlJWRkNRa1l6ZVhCUGFuSjFOMHBNYVRkbE9IRTJkVEptUlhoQ2VVRklSR3RKU2l0Qk5DOURiMGRzZUhKd01UazBUakZRUzBsRVdYVTVRWEpuU0hkNFlXRjFWR1J6Vm1ONVZGbFNkbXBRUW5VeVpqUndlRlZISzNCT1QzbHJNR1JLY0hWS1drcDVLMGx5VnpaRVlXdHFWbk52WkVwNVdtUm5iWFpxV21OeU5XZGlkelF6YVZjNFRrNXBjbXh1YUZGU1NsTnhVVXBGVTBKSmJHeGlSMGRWVmxCa1EzRk1WQzlMUVhCSFVtTmtTVXBNVFdsTk5rcExNMk56VDNkbGJFMVZVMDlqYldkaVIyNXJjREZsWXpGVmJFdHRNbHBGU2paQlpXbHNRMk50TWtVNGFXOTNhRXQzYldSQlJrWTRLMFZXZUhoWFVtdFVOV2xsUjJSUGVEYzVZM0JrZEM5dVVITlpibmxvUjFaTU9ESkZUMjk2Y1ZSRVJFUkNaMk0yUjNsS1ZEUlVNUzgyUmxBcmRWUjVZVmhJYjBNNVptaFZOR0k0YzNNMlVGcE5TVTlJZEVoNFNuTjFTbWhOZFV0dldrVk1WMmRRZDBoeVEzWXpRWFE1Tnk5dldFbExlRzQ0VmtoTlpuaFNUbFIwZVdoaU1HbFliRGd6UVhOMU5ucEZXSGRDVWlzeGJEVkJRVUkwTW0xVVFrRTBTVU5CVVVGQmQwNXJOakk1Wmxwa2JXWmllWFJpUkN0dGN6bHZRbXRvYjBaRldIQldWVkZKVVdkR1dWZEdkREp1V0c4eFMxWmlhakUxT1N0bk1GbE9SMVJaYVVaR2FuaHJNbGxHUkVac01tOTRXbU1yV1hSWFRGSnJNbGx3Vm1FNVduUXlURkpzTWpRMVpHVXZXV1JQU0ZGck5uUnBTbFV5Wms5WVltZ3dOV1J4VGxjelpuVlFXR293TlU1dFRGWXlMMlZtWm1vd05XUjFVRmd6THl0NFkxRnNTa3RYYTFwWFZHdzFRbFZWYkZwU1ZsWk9WMkZDVFVoRVkyaG9VVUZCUkVGbVZFOHhLelJ0TVdKaVpGUlBlamRHZEcwellqbHFiREpqY3paMVV5dEhTVTVHT1RneFUwUlBhMjB2S3l0VE1VSnFkbEozTVVzNWQzcEhabEkwV0djME5GYzRORFpaWXpKcEswZFZVa3h1TWpkVWJWRnhhME5RVEc5VmRYVjVURU5XV0RKMU5tUmFjbE5NT0VKbk5WcGtUakppV1dsRFNUTmlTV3N3WVdSNVJXMHhZWFFySzIweVZ5czJORFUyTnpkcmFqTjNlVVZQVUZCbVNFMVZPQ3M1YzA5TGJERXhOVFUwTlRJemNYRllORFJNTWxCUWJHMTZiMVJoWTBSdFkxVkxla1owTVhKM1JrMHdjVlp4VmxOc1dHSnJTMGhpTjB4RE1tWkVUMWt5WVRGSlpub3ZkR2ROUmpoTVJsRTBUR2QzVVVKcFNVRkJRVEpIVjBaME1qTmlNWFI2Wmt0aWNFOUZlV3h3UjFack5XVlJWa1pLVjFWV1ZsUllNVGhCSzFKb2JXRkpkR0pTTVdSUVdEQkVVWGxPYWtVeFRYcGpkM1JNU3pKellsZDZkRGRDTUdOdVduaGtXRTR6WTFCVWVUbDJTREU0TDFOU2VWb3ZSVXc1Wmtab1kyYzBRM05FWjNWeFp6TkRXVUpSUnpWeVUwODNWbFpITUVoYVZ6ZHVUM1F6VUZsUGVGVjFjMWxhYjJaWmJVeElibTQzTlV3MFJEVlFkVXg0WlV4S1oycFdTMlpUYm1wS1dXUmtkVWM0UW5CMmJXdExXVk5yT0VObGRtdGxkMU5tVEZCR1NWWXlUMFF4SzIxdFFqZENhbU5uTUU5TlJsTnZObWxuT0VOVGRtaHRZV3RMV1ZNeGMydFBNakZpV1d4MFpUQkhjVzkyYkV0YWIwTm1UbnA1TmxCcE5HTlpUekpzVTJkckwyaFFXRlJrU25WbE5ETk5lbVJETldOVlZtSTFNMWhZT0Zwa05FNTNZazQxY3pSNGEyeERjbFpWV0dnclNHTklNMlZ2UlVoNFpqWXdaeTltVW5kdWIwRnhNVzQ0WnpJNVpTOVBkekF6SzFWVVFrTmtiV1J6YkhRMWNHUjZiVGsyTVZwa1dHMVFibk5QVjJsUFJrZG1NV3B0Vmt0M1IyaElOMGwzTjFWSWFWZHFZbkZVV2paWU0zTjRabVpWYVd0TFpFZE5SRWRUVGpWemR5dHdkMDEzZERKdmRrSnRWWFEzVFdoek1XOTFTbTFGVGpkT2VWQjVjSFpTZG5ObVQwMXBUa1JGTUVJNFYxVnlVR2RCUFNjcElHWnZjbTFoZENnbmQyOW1aakluS1NrN0NuMEtDa0JtYjI1MExXWmhZMlVnZXdvZ0lHWnZiblF0Wm1GdGFXeDVPaUFuVDNCbGJpQlRZVzV6SnpzS0lDQm1iMjUwTFhOMGVXeGxPaUJ1YjNKdFlXdzdDaUFnWm05dWRDMWthWE53YkdGNU9pQnpkMkZ3T3dvZ0lHWnZiblF0ZDJWcFoyaDBPaUEwTURBN0NpQWdjM0pqT2lCMWNtd29KMlJoZEdFNlptOXVkQzkzYjJabU1qdGlZWE5sTmpRc1pEQTVSMUpuUVVKQlFVRkJRVVZQVVVGQk9FRkJRVUZCV2s1QlFVRlJRVUpCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUpJVWtWV1IwRkJRVUpYUVVGQlFVZFJRVUZCUWpoRGVWVk1hbXRrVVZReFRVRkJRVWM0UVVGQlJXbEJRVUZEUVhFcmIzZE5VRkl4VGxaUlowRkJRbXRSUVVGQlNGSkJRVUZFWVVRemVsSjROVkJWZVRoNVFVRkJTVWRCUVVGQlJrMUJRVUZDWjJNMVptbDBSazVWVVZaUlFVRkJhSE5CUVVGQlUxRkJRVUZHTldVck1FMHhXVEl4YUdOQlFVRkRUR2RCUVVGRVNrRkJRVUpOUTFOdlNFWkdibGxZVG5kQlFVRkthRUZCUVVGQ1FVRkJRVUZSUVVKVlFVa3laSE5sVjFsQlFVRnRWVUZCUVhoRFowRkJVamQ2Um1scVlYaGhSMVpvV2tGQlFVOXhRVUZCUVVFeVFVRkJRVTVvTkhZMlowSnZZVWRXYUVGQlFUWXlRVUZCUVVJMFFVRkJRV3RFUmxsR1VtMW9kR1JJWjBGQlJISTBRVUZCUTJWUlFVRkNSMEpQYjJ0dlJtSkhPV3BaVVVGQlVGaFJRVUZCU1ZsQlFVRkRUV2N4VUM5QlduUlpXR2gzUVVGQkwycEJRVUZCUW5kQlFVRkJaMEZUVlVGc1Z6Vm9ZbGRWUVVGRUsyOUJRVUZDVFVGQlFVRnVaeTh5TWxJd1kwYzVlbVJCUVVGUlRtZEJRVUZMTTBGQlFVVnVOMnhKVTNSME5ESnRTbWRhUjBKcE5FZFBRV2REWjJkdE5HUkNhR05GVnpCSlFWa3lkMEZGUWxaRWQxQnZiRXRhVTFweU1rMUJTVXR5TVVkS1UxbFNkbFl3VlVOdlFtWjFiSHBsU21VcmMwcGFWM1ZLWkVKSmIwdFlWRkJaVFdWdFpsUk5iMnhrU2pKa2FFcFBSR2QwUmpsRlV5OUtRemRuYVVSU1dtRjRZek5FZVRobVJEZ3dObEpoTUdWT2IzUnJkMDlWU2xWelVWSkxUVEFyYlhaaWRHMHdZbU01WVRKaVpIVXlZbVIxTW1Ka2RUSTVPREpRZW5KbGJsUTVlVTlxYzNKTmJYVTJZVUozVldkRFlVbG9Ra0poTlZWQmFXeEZRWEprZEcxSGJqRm5hSFF5TjNCMFlUbFRRMHN4WVdsWVFsWlZZV1I1ZWxWNGRGVmhaRFp3WVZkMFZXRmtSekJWVTJSVllXUlBkMU42ZEZWUlZFRkJlRlkzTXpkNE5rRlRUSHB1UVM4Mk5VRm9VMmRMWW01NlRYTm5hMVExV1c5QllWaExjMFZoY2xkcGFrWk1RVlYyYUZoU1NWRndZbWh3VmtSTWJYaFZWelZ3TDBGeE5UZDNRbmRXVmtOS2NqTk9MMmRCZDB4SE5rTnNaa2haUWxvemNtOU9SMkZKUmpJMlNVcGxWVWg0SzJkakx6Um5jUzgwYUhVNU9HZG5jRWhTWVVacFZWRnRiMXBHVVdGeFRDdE1aa0YxYURCUlNHUlBSMnRSV0ZSUWRUTTRSRVZ2Wm5NemExUldja0Y1WVZOelVVMVRhM0VyUm04NWR6RkxRMnBZUkVOeVRUVXdOME52U25ncloxWkVWVFJLVVZOTlEybG5ZalpGV1hseFFWTnhhMGhhWkRFMlVIbG5hRUZ0VnpKbE1YZFZhMU5UWmtwS2JuSlRPSGRJVGxCWGNuSktXR0Z5TlV4emJHSXdTbEJsYURkb01FRlJZVGhVUTFBeFNHcENReTluY3pONVpWRk1hRzFXYUhOd1JUVmhSSGxWVlZjMGJHOUNMemxSUzBGWVIyeE1hMkpIUm5JMFYycFFSVXRTWmtKMFUwazFhSG80WjA0NGFEZHhTV2Q2WVRoemNVVlFjaXQzV1doTVIyTlBkMnQ2VDBoVlYyUnhRVEJrZFVWdlYzVkJhbEJ4UlV4MWNXeHVOWEJXTm05Nk5scFFLM0ZJT0cxdGNsRXhkMGRJVld0UU1HcEdNRkJLTVVWd09VbGFaRVJoWkZKNFpsTktXRkV6TVRnek1UQmxWakJ4U3pWb01DdHJiWFJ2ZVhWYU5HWndTbkp4VmpkeFF6YzJWRGR6UjJGSVNEWlRiVEp1V2pac1JpdG9iR1Z2TTJWd1NHWnZabUpoV0ZCeFNsQTJVWFF5YlRjMmJUYzVaMVFyY0VZcmIyUXZjRXd2WVZvdmJWWm5RV3QzTkVVNFdFVk5jMnhOUVhCUVRVeFlUMFJVUW04emVVa3dkMjFWZDA4d09FNUdZM1JzWTBKd1VGQkdSRWRzVkVGV1ZIaGtVWGxFVlhkNk1EaGFNRFJzY1c4MlYyVkhiVVpHYldkd2JHMDFjR2hHY205T1dsbGtZVnBNVjJGWVQxZERUMjFVVUcxc1pXZFRaRmxQTmxKNk1taFFjR2gyTlc4dlZrNXphR3hGUlZkbmIyeEdlR0pEUzJKM2NXRjZWMWQzV2xWVE5uRkJSbGROY1cxVGNqSlVjVEp1WVdkU01WbE1jVmx1ZGxwQldHRlpTRmROYmpKU2JESnRNbWRsZEZsU1lWSlhNbWM1ZEdoRU9XOVJPVm8yTDFsYU5rcGlNVUZRY1dwWWIyY3JhMVE1YjBoNlQzVm9ReXRoZDNsWVVWSlRVRk5yUzJ4dmNrczFVRXMyVVVONFYxWnZUWEJTVGxaM1NGWTRPREZqWVRFME5UVnNORE00ZFU1Vk4yWmpSa1JtVEV4V1FWQXpRVXN6UkUxd2MwSnhRbFZwUldNNU1VY3dha3AzWjBoVEwwcFVLMFZEVTNabFNUZHBiUzlyTUZKUlVUVndWRGhwSzFSMldsWndRMlZzU2poa1RTdElabVpWZERWbGIzRnhXamhzU0VFclVWSnliMGRUV2t4QlZEazRVMHBxTUd0dWQyMVJlR05XU0Vad0sxWnVhRlF2VW01M1RGbFJUMXAwYkVWdFRFcFlWa053U2xoR1NqbG1aa3RwZDI1cFV6VmlVMng1VmxWQk1HTnZkMnRTV1ZFMVNtRnViVE01WlhKVldDOXJUaXN6WmsxYVNqQktaa3Q0VW14dGNEZEJZbEZDZDJreFpUaFJhMnAxWms1VFlTOVROMHBIZFN0VVNrZ3JNa3hSWkRWaU9HOWxaRFZ2ZGxRMFN6Y3dkalpWYm5odFZqQktZM0ZRTUdSd1NEaHFOVGg1VDFrMVRXbERSM0pOVkhsMldUUjBXRlZ1VG1ZclFsbG5OamR0ZWxwQ01GUnVVbmR6ZG5KelNqYzFNWGswU0dwb1QwZEdXbGxYUm1oRFJHeENaSEpyY0ZnM1MxZ3JTRU5sTVhvdk5URnFlRGs1Y0V4elNtRllja0pXWkVweFZGTmpVbTl3VUhkRmNWQTBORlJOVTJSaFlsSkpRa2d2TVc0M2VqVkhWa3BEZEVwdFptNWpaakp5VFZObVJYUlhWU3RMTnpoalZFbG1NMjVIU2tKWmJVMXBhblY1ZFRoS1RXdEphamRNV0VGUWJHbHVZVmNyVEVRelVGZDBObXhQU0hSS09YQk1VekZrUWk5cWMzaEtOWEZVYTNwUlVHbGxMMU5tUTBoamFIaGlaR2xLWTJ4TGEycHJjRGxWTXpseE9YbE1PVWhsZUd0dFVXeExWRlV4U2tabFUyUjNOa2sxYkVnclVUVlRNMmwxTWl0eFRuYzVhbllyTTBKMFFuSXhjRU5sVGpWMU9UTktlbTFtVGtzdk5tNXRhemxWV0RkSU5uRmxXRVI0TkRKdE1sSkJObmxqVlZKb1JYbzNaWFZpWkhVeU4yUXpZVkZtVm5OTE5taDBUalozVW5ZM1F6SkhlRkpDUlZSWGIySlhVR0V6VEhJMVl6ZzNUVmhwWlV4QlZWVktNSGhTTHk4MFNHaHpVM2xpYTFvclVuaE1URmxxVDJoRlZuTldSbFE0T1dkWVpFc3dja0pVZWxWYWNFdzFUMjFpZUZOS1YzTlpaRTVpU2taMlZVdG9ka2c0WXpSU0wwVmFUVFZNVkdWUWNrNVdkR1l4YmpkaGNWVlRiWEI1WW5sUGVWcG5NbmMxYjI1NFkyUlBOREpPVXpadmQyczRObEpyU2pKa1dVdEZNV2hLWWs1clN6STVWSGRrY1V3dmEyZEpZbWhLUVdGV1dIaHZaVkU1VEdkWWFXcE5kRlJNYXlzMFVFOWllV2xOZEVSaWREaEdRVzlFU0ZOMGRFRXhlWEJpVlM5V1oyNDFSV3BDTTA4eldEVXJlSFJUTVd4NVVHTmxObFJQTkhSck1rOXFRV3BNZHk5MVRXd3daVkJwVFdsQlFXTm9RbXRGZFVJM1FWVTFRVWhKU210RmMwTklaMFJCUTNvNVltbERTVlY0WVhkNlR5dFhkVE5LV2psdVNsWmlPR3czZFM5MVYyaFlTbVZ1WTNOTmRuQlVSbVZEYnpONFdFNTNWbTF5U0cxdmFtOWxTRzExVlV3eE9FbHhkbk5LUzBoVk5uaGtlVms1ZWpscUwwUTNiVE5zTWtsSFZYRkZWakYzVkVJd1FVZHlWa1psUlZoMlkxTklSek54ZDBGUVFqZHBRVUZTTlROMWRUZ3ZUamx2TDFrMlIyWlplVVV6WVdob2JIaFNkM2hVZUdkcWEwZHRSbnBDUTNoUlYzZFVTSE5LUlZwTFRXTXhVVVV4T0RGd2VERXdjRmxTWTBSVlYzcEZRMUI1VDFwVFJTODJUWGhVUkhWSk4wMVhlbnA1VHk5UE5DOHJkM1ZNTTJwS1N6RTNlbWh3VGpSNVQyTkZUV2N2YkVsVWVWTjNlbmxYVWk5QlJYSXdZa05RUlZoS1EwVkVjak5EZGtJdkwxQXpRMEZISzNJMFVVRm5RMDFCUVVGQ05ESnRUbWRaV2tacmJrMUVRWGx6UkVGaGMzaDViRzlIUWxsU1lVVmFhbkpNV1UxUk1HbFJSVXBPUkVGM2NFRk5jR0pwUkZkQlVFaGtMMll6WkVkUk9IZE5VSG92ZVRsSU4yUjNWVVJCT0dNdmNHMDBSMEp6WWpWSlJHdFhSRGxhZEZGRmNVSm5VVlZCY0ZZd1VHeEJRalF5WjFoQ2MxbEZRbEZCUVVWM1RtMDNaalpUVVVGQ1FYSkRaMEpyYjBFd1JrdGpOazFwU21GTGJtOXhiRGgwTkRsVVoyNTJOQ3RyVW1OdU5uTmllR3R3UjJwdlYyZHdTMEpJWVc5dksyTjFTRGhyVmxac1NYaENLMEZIYkhGQlprNUJRVUZCWlU1eFRtcEVWa05vVkVWTlowNU5WMlF6WTBvM2FqZENaM0EwUVZSelIwbDZUbmxEUlZJNWVHUXpaRzFZU1U5Nk5FUmlNVVF3VlZnM1RWZ3hRWGRDY0ZoQ2JqTk5NVWM0V2xSelVscHVTVkpHU1VRNU1qbFpaR0Z2UWtac2FXbFVXVE5LUW1KemRHUktXbE5rWTJ4WmVFdE9SVnBZWkVWUVVYcEJRMjk2UldWamVrRlFVemRCWVRJMlMybHZNekpwTDFNeGJYcFJlbmQ0YTBKdlRrbDZVMHgzV1c5d1dua3JSMHcwV1doSFJuWnFSM3BOTDFsRmFDdEtSMUJsV1dGdWRVNUtTM1JyUW1ZMmVYUTVjaXM0UVRsQ2IyUXdRbHAwTUdoRU1WVjRPVEZWZDJVeFZVUXpWbFZxYld4SWQzcDJjbmg0U1dOUmIxaEpUMEV6VTFGYVlqVlNhM1ZZWjBKUWJqRkVOa0ZCUVVGQlFVVkJRWGRCU1VGQmIwRkVVVUZJTHk4NFFVUXphbUZvU0d0SVVVWk9TblJJV20wM2F6RkRWVkpTUTJsSlZWZFJhRXBaYkVKYVExVkNVMnhXTmxWcVUwSlljRWhWUmxGbGRUZ3lRazk0YkRGU1dFSk1iMmxPZEdabEsyWmxNMlJNWW5KR2NsYzRNVWRtSzFwWVFrTXpMMDhyYUU0eldHMXNUeXRqT0Rnd05VNTVla2syYm5JM1JrNVRlRUl4WjFWaGQzbE1RbFZUVldwSVNuZHNUbXRpT0ZCVk5VbHFUVW80VFhreWRtNVVVRkV5WW5ZMlYydDJPSGRDWkhSUGJuSkJNVGRQZW13MlpVMHlZWGM0VGpWSFlXcDJjMVZsTDJ3MGNqSlZhVUpNYVVONmFFd3djMWhSVkVwM2RWcG5LMjltYjFwcWVWbFlXRTl5UWxrNVFqazBOMVZUVjBOV2EzSTFUMDh4VUZCVmJFWTJiM1pIWVZjckswRkRMM0JVTlROQ1VsQlNNV1pFUjJOSVVXcHdSRFJSZGxGWmJUZDFhRGROUkcwd1QxSlVTVkYxZEVObllXSjVTMkpDZWxGNlpXOVhjbE55UldkWFFtWmxVM0ZDUjBoc1dVRkVOV3RoYzJNM1VVcG9URWQ0V2pWa2RHMVhjMFJTV1RWdGVrcHlTR3RNUWxwaVRIQkdTVFZSV1VkQmJERnlTMGhrZDJSR1ZFbGFXSG80YW05ekx6RlVWMGN5UjNOMVdEbG1VbFZsTmtFek1IUXhaR1pCU0VKbllWRlZMME5LYlN0bVdEWllWemRKSzJKMFMzbHlTak5QWm5ZMFRFVjRjVTlHWjNwS1pXNVRhR1ppV2tWVFdDdExaa2xLYVdOWVpuZHlUbXBpWVZreWEwcDNWMEo2Wm10d2FYbEpiMU42Wlhsa2JHRmtielpWWTBwR0wzUk1TVzEwVkRKUWREVjBhMFJOY1daeVlWUnFNM3BqVkdSRVNYUjJZVlJQVVdOeFYwZDRWM2wwZFZoSVFWZzNRMnQxWWtwalJEUlRSbXQ1YWs1Q2QwTk1RMUpCYWsxUGRHdE9iVlE0ZDFOQmVFaG5MMWdySzBFNGRUWXhibGQwVnpjMmJXWldWbmRSUlVKM1YwVm5kelZoZGpodmNESjVlWFY0WXpNM1ZuVjRaVzlXY1RSaksxcHNMelUyWm1KMFdETXJPV1ptZFc0MGNEWmxibXd5TjJWdVlqQktjamN5ZHpsSVEyNDVMelk1WkdSaWRETTVZWFJMVDI1YU1tWlFlbWd3T1VKTlNHTjBlUzlhYkRscVdGZEhTMWRNVjNWaE1tcExhVzVuYzNkbFJFbFBabWhhU21SVFFUSlNjVXRIYXpCSFZuQjNUVnB4ZUZKQllsbzVRVVJUYmsxNlpHOVJNMnhOUkhWb1VtVTBNMkZaU21kalFUaGhUMFJOTVdZeVJtSlNaSG8xS3psUVRXdHRla05ITm1VdmVuTllUMlZPWkZVd2JqTk9TRzAyVUhsUloxQk1PR1JRV1RFdk4ySTFUbVl4SzNGSGFHMTZMM2syS3pKSWJ6QllOMjVMVEhWWlFUbFZXbkUwZFdOSVJFcE1MMXBMVjBKcGFDOXVlSGxhVFROMmFHdHlhM3BoWVhZME9FbERjVEphTjFaamQwbFVjMkZyYTFFMFIzcFBhMDVhV1VSbk0yMWlVV3N6TkdGblVWZHBUWFk0Vm5abFFUVTJaWFJuWkdKTVlXVnVhMEZyWjFSRVJYUlRSbXd3TkhBeU1TdHlORVJUYTA1eWRFTjFRamgzUlZwcFdFaHJaVE4yYlRsRmJEbE1RbkZGV21kSmNHMUZXa3hzYVVkR2NHRm9hWGRZY1ZFNFoxWlBaWEp3ZVZJd1oyeE5iMDA1VUZObmJHMTBPVFp2WVVWaGJHVXpObTV0WWxWMWRHUnZZWGRpYmxWR1VHbDVkVUpIVmtKek0yZHhiVUZtVUV0VmRsRkJibE5NVjFKTlJVZFhiM1ZxZWpsSmFIUnZiMFppUWpaWWIzRlJPSE5aU2s1M1ZsbEtZVW95UVVkdU4ySmpia1EzYW13NVVXdDVSMjlzTTB3d1ZWVklRbGhwYXpaR1oxZFRNRkJ2YnpSRGJtUlhkME5YUlVSdGNISlBaVEJDV0RCVFduaE5URFJFVEZSR1pXNXBPSFJMVm5kVVlYZElhVlV4YjNsVGQzWndhM2xoUlV0U1dVVmpWRFpOV0hKUk9VZ3ZaMEpNVjJwNWQzUkdhM056TUUxRlpYVkZRVVo1UWpaMGNETkJWbXgyUlhSb1JtOHZRMjU1TTJRdmMwYzNaQzkwYnpoWlRUTkpWblZOU1RobmVYQk5UQ3RUU0dkYU0wTXpiM2RPTDNkNlFVbzJlblZwVmk5RlpXZ3pValV5VFcwNGRrZFNNa2h0Ym5adFFVOTNLMHBuSzJKbk0wWkNWMk13ZGt0V05uVkJNRXN5VVUxclJGRnRlbkJNTlRsVFZuVjRjaXRJU1cxTGNIZzFVa0pLVDB4WU1HbEdkemwwY2pSbFUxTTJRM013VW10NGIwY3diRmRRYURSbGNYUllObFJJWmpjM2JtOTVMMVJzUlRsalYzWlFlbGN5WlRSMFFsRlZkRVY1U0RsM05tZGlNRGh1U0hkRVFsQXpORkJuWnk4eWIySXdkbkkyUzJaSGVIWkJNa2QxV0hkS2FtMWFkbEZMTWpOTlJVczNNa0pXV1RsdGMxbFJhVmhhVEVsUFRFODFWV2xEUkU0M1dVRnBha3A0ZEU5cFpVRTVjR0UyUmtoUE5HUTFhVEE0YmtOb2JuaG5VaTk0U1hoeGQyMTNjRlp5YUZCalNqVmpRVVp0TUdkek5HdHdaRzlKZVhCRk1YZG5aa05GZEZWeWNVSjRkWHBQTWxOeldIQlhPRXBxTlhKaGRrTkhjVGhYZUcxNlVGcGpaRUp4SzJGQlZreGpibG94U2pWWVZpdHlhbXd5VVZaTmFYUjFlbkZRUkVOdFYzZ3dhRzkyYkhneVFXTktiVVExTVd4bldtdGpWbTVhUjBsM1EwbHJlRnBUT0ZKcFpWUTBiRk5QYWtkMWRESktRMEpTVUhkUk1IaGxlbHBYTDNvM2FXTktlbU0yVHk5VVRIQTBXVkEyVW0xMllWWjRaSFp1WkVaVVQzSnpjSHBEWjNRMk0zWTNkMGxVTUhaaldHMHdibTlhUW1ZemRtd3lWbmw0TVdaeVNuTnJNSFE0VVhOV1V6Y3djVFVyVVhWT2JsVlRURE5EV21VMVdFVlplRXd5VFRSME9VaFBaVWxCVkd0c01VUnJSbHBNYjNsdllUUkVlbWhaVWpoYVRFOTFjazVHVGxJd1pUTnVNRWd4VlV0aFFXaHZPSFV2Um05UFoyaEdkVEJHYjBjdlZrRmhVVmgxU3paS2JXVmFiRnBTU1d4Vk1WRlROMDkxZVdKRlkxcGpVMFJxYkc0ek5EVkVaMUJLU1hsbFJtOTVUMVZrWkRWa1dGQk9ZamMwUzNvM2NqUXpSVE5QTjFrdmRFOTFXRlJaYUdwdVFuSXhVMGg0U2twR1ZrVlllWGxsWVhWWGQzTjBURVJhVDJOMlFtVnJaRThyVTFnclZVRjFOVnBxWW5jeFpFbHVPV2hXYVZoTVkySlNha2RXU0dGME1rWjNaMmRLSzBKS01UbHVRbXhVVEVGWlFUWjNhSE5DSzBkcmNUbDJSRUYyUm10aGRXWmlTbkZqV21saFQzUjZNelpTVW5oWU1ubFRhRTlpY25GU1NISmxhbGRYV2k5bVZpczBSMWhVZEhaaFZsTlNNR2d3Y1VGVGJVWXJiblpNVlhSV2JFNXlNbVZvVWxjNVEwd3pabUpDZEcxdWJtdzJlVFpYZUhsNU5WSlljVE55VG5ZcldUZFJRMnhsTTNCclNYWTBiakJ6VW01UlV6bHdOa1JOZDJOSlkxTlZRbGxCV1dwc1ZTdHZSelp3WkdKUFVGWldZVGgyUlNzMGJHUlhRMG8zVkZwb1YxazVkMHd3WW1KSFNrdHVaamRCZFhCVUsyTkZWa3BOZVZGNmVrZG5hbFZQVVd3NVkwaDRiakZSVkVkeVdXOXpMMjVNTlhWc2RqVkZWWFpFWmtKa056VTFPRGQyV0VoNk5uVXdRbUptU0cxTlpGVmxXVVp3VW13eUwwWTNTVUZwYWpBM01teGhRakVyVmtneE9EWldWMWRsTVVwd1dEQktjMWgwVEd0NmRYcDRRbGx3ZW1SSE5UWTBUR1prVDJWMFYwWklhMjE0ZEhCUWJHOVRWekJVVmpWdFkwVndVSFZpYlhNM1N6aE5ka2xaTm5JelFsTXdaVkpvZG04Mk1VRnFZMlJXVkdsRldrOUROVzA1VFZkUWJWVk5VM1JKVXpCWFVqWXhLM1J6YTNGU2VWSlBjMm96TWxwU2VHNXNVRWM0YkhCcVMybzVUVXhpYVRkS05uRXZNMUpZY2pGSWVUTjBVMDlyVFhodVFsUXpkbGhMTWpsMGFYUmlWMWRxZURkNlNXVkVkblJuTWpKVGVuWm1kSFZ5Wlc5d1EzUlFORkJKVUZoMFdEZEJhWEJqU0U1eVMzWkJaVGR1VEc5U1NFeERMM0F5WkdSUUsweHhaamRLVjA1VFoybzNUM3BxTkdWTVF6VmlhMmwwYlhsRGEzTnBiRlJFUTJ3ek9YSnRiVW93T1VwNFkxUlRkalJHYVV0ME9GSTFNbU5uT0ZCMVdqTklhbmRMWmpkdE4yWjNVREUzWms5RGNrbFhSVTFXTHpsTFZ6bEtabXQ1ZDFGQmVtNUJVMVZDWWt0c01tOHdPSEJtUzBveFpsRlhPRGcxYkdFd1JGQldhSFpSV0dkR1J6RkZVRmRLTmt4alN6aEJSamhHVmtzNGVXZDFjV3cxYWxreWIzUlVSM2h1T1VrMVFVY3hlVVpTY1dwUVNWWkdkV3REUjI5QkwwdFBhRUUxZGtWdlFXdHpNR1ZtZFZWdGNXSlBURk4xT0ZWYU1VaEpMM2hHWjNOUGEwZHFOMHNyV0RsNmVqbFVXVE16TVRKMFJWWkVlV1o1TVROc1RrUlVhR0ZrSzI1NFlXcHlLMkl4TkZRNVltYzFNbTV3TlRKRWJUWm5lWGxIYjBsTmJrcE9WSEpIVGxNeldGaDBVbWMxV0dscFR6ZFpNbVUzY0ZSbFNsTk1SVWd3TmtKRGNUSnZUMmwwVGl0alVYVTFMMng1WjNCVk5YZHJhMlZUVEdsRVRGVXlVa3RYUVRSdmVXdENlbEZZYldSSWNVazFiMjF5VVZkbVRFUlNXRWgzY20xTmJuUmhSSHBCWkVJd09XUXhVbnBQU1dGMlNUSnhhbGxJUnpGT2VXTnlUVGxVTWxwYUszRnFaSFJxY2tGNmFFdzBValYwZFhoaE9USnlZMWgyVkhGWGMwRkxUWFl4ZW5sUFEzSjVaSFV3Y2pGRWRGRXZRV2swV0hadlN5dElMemcxYzJWTmRVMUtjMnBXUmtkdldrNVVTelptUXpJdlJVaFdNRkpySzFGWGJUTjBhbFpqUzFCWlYwRTViR2syV0dGWFpqZHdLemRPVDBGS01teFBXbVpSZVNzMmNqWklSMjV2TVcxT01rOVpaME5RZG5oR1VFUTBjMWhaTDA5dlRGY3hjR1owVjFGaVdXMXhUVlF4TlU4MmQwZ3ZjekJsZUVKSVJVVTVXRkJYYTFkM1dYbEJRMmh5UzAxV2NGSk9SM2d2WVhGQ2Rtd3hkekpvY205b1Rrb3pZMmxaWVdGdGIwcEVSRlF5WjBwMlNXeHFNelF5WjA5dFoyMTBOa2xhUlZSTVdVMDVlSGxGV2xsWlpVeHRSVTFIVFZsbWJ6UmhOVkpxVDAxMFRrdFlWa2xsVFZBd1VWQjFjRUpyZFVVcmJuRkRiMlpQYVc5MFowazRRbEYxV2xwR1NqTlRSV3hVT1dScWVsSTNkMkpuVkVzdlpXVlZRVXhpVFRGME9IUjZZWGhDTjJGa1F6SXJUVEZPVldGRk4xRTRkQzlHYjFCUFZtVnpZbWM0VWpkV1RXUlhPVTVVVjJsU0szWlJkWGcyZURCU1dqQTFURWREYlZGM1NtazRUeXRCY1VwMGNXRnpjbWxWTkRBclFtTTVNa3BsTkU5RFpIRXpLMEZJTm05cVR6SkVOMEkzWTNFclNHVnVhREZ6SzFkb1J5czJNMGhyWVhaUGIxUnFUelI1VG1wdlExRTFPWE5DTnpKTU1rcE5kbXh3YWxselUxQjRha0l5VUM5MFJtbzJObWsyUVVabmJYaElOMUZsTVhkRlUyNHlVMjByVDNRcmRGQk9XRlpCUTA5UVFVSjFaUzkwY1ZaWlpDdDJkMGR6WjFFek9EZHJPVEJ6U25NNWMwSlhaR1Z1VlU5SEwzZHRSek41UVZKU1EwcEdTbXhEZEVSSUsxZENXaTgyUzB3clZVZzFTMWRoZGt0WlRIcHhVVFJwYm05VE5HczNWa0U1WlZjck9VcDFhMHhvZEdWRVFtSXpjWGhpUjNGeVdHbHdOblIyVDBsVmVsbFVhR2RVU1dWdE5tUk9PR2hOVVhkRlZITnNNMDlIUmpsVk9FUmlaMndyTjI1eFNVeFhMM0JCTmtrNGJHUXJTbU5uT0N0ck9XSXhkRXhJY0RsaWRqZFRjVmRuYmxKRGNHNXhWMUZCUWtndk4wSkpVV050TW5wYVNXSk1kbEZNT0dOUFdWSmxaRkZ1UjJkd1QwMWFWM2hFZUdoT2FXMVROa2RCZWk5TE1rbGhPVXRzV25aTU9GaHhhR1owVm1kaWFsWllVVVo2YldSV1owRmtUblo1WmtSRGFUY3lhekZYUzBKMGVrZHZSVzFSZHpOVGRqRXpkRzFNYkN0RU9EQmlXVkJ0UjJweFdpdFZWVFUzVVhwMWFIUldObTk0WVc5aFZUbExVMDlYZG1Wa01XWklUaTlHUTA5V1ptODFNelo0UVdKQlJtUjBRVEpaVWtsQlVEQTRNSFZ4Vml0ME4yVTJZM05qWjFrM1REWnBUM2RuZEhSeGJsQlpSM0ZzY25SU2RqUlJkRlYzU0Vsek0yVkVaV0p6Vlc1SmRqbG5URzAzUm1ScU1XTlFabU56YUd4bmJYZGlRMFJEUTFVeWEwRXZlRkJzSzI1UVVrbEVlVkl6ZDA1dGEwNTJWa2xKWWxoUVJHdzJlREF3YURsS1FWazVaelpzYTFkMFVITnZhemx6UTJKdFpsUktNVE0zVlVSMFptRm9WbUYyWm5oMlEySkJZVmQ1VmxCaVQzbEpWVWcxT0ZsMVVteHViRlU0TUV0Qk16SjRhbEJWUWtNM2EzTkVabFJXS3pOTGJDOW5jVVF5VGtwVWNVeHhlbkJzVlVsQmRYRTBlbmxKVHpGUVpEbDZkRlI1VmtOdk5scElWMlJEZDJ0SlYyTlFVblpUT0M5eGFGZ3hVak5oUVZOWkwzVlJWWE14TjNkd2VreHFWREF6YzNJM1dXTXpkbGhqZWpSaU1HVTVUMHBEVm5SYVJsbE9SSHBGU1ZGTlNHdFdOMjU0TVVaUU0yUXdaMHhHU0hkVlVYZHZlRE01ZVcxTWNXZEZOMEprYnpsVFpERXJOSGxCYkZacmFXRk5hbU14Ym1WcFdHOW9aR1Y2Y0hwbVpESXplV2RHSzFOak0yUlNNa3hQTkc5bEswUmxPV1JxZFZOc0wxWkxabUpCUTNSWGRXRlpNVFUzWTNWSlFqSm5ZamhSUkV4RmFrMWxZMGxGU1cxUU1HWmlhVk5sVjJjMGFXWXdXRkJTYXpoakwySTVOREEwTDNWWWNscEhjVFJCWmk5R09XUlphbmsyYW1vd1lYZDRiek13ZEZWUlR6UlVkblpEU2s5b1ptRXZTMEY0Y20xblZsZHVSV1J5TUdNeFpWVlFNMVowTXpBNVptVjVRbkZKUld4b1pYTlRTbkZvZVZsaFNuRkpNM1JuY0dWd1J5czVURTlOYUhwb1pFMTRUVUZHWldoRVprZE5RMk14U1ZFMGJHWlhNVkJyV1VKdGNGTmhXa1pOYjFrd2NWQTFNbEV5YUVodFdUTXZNVEJWTlhGM1VHUXhkRlJHVEdzeWQwc3ZObk5sWlVkR1ZVaHVaeTl5YVRSaFp5OVlXbFZZVmk5WVIyZDJkVnBSZDJ4b2FtYzJNRzFqZFdaak1tWTNTbTlVWWtOM1MxTTJPRWxZWkZWYVVFVTNZMHBLYVdsVVVGZFRiVUpXYW1Kd2NUZEJRbWhQV0hCVlQzZHNiRFpzVWs5bFdVOHlUSGRVVDJSRGRYbEtSblF5ZEZaR01XaDZRaXRVVTBKNVZXMW5VekIzTWxwaGJreGlObWRSTWxKUVMyeGpabEpMTDFKek5UZHRla1JVZFhoTlQxaHpaR0lyTUVGemEyWXhRamRzY2t0UFdEVXJNSFJ2VUhGNFJsQjRTRzR5VFhGRlVVSjVjV2hvUkVGU2JtbzJTRTl4V0RObGNXWnFNRUZKZG1wRFExWndZVVU0ZWpSSlNYbGFjM0JVVkhBeVdXdFhiSFpRZWpOVGJWUm9TVGRxUm10emNtbGxWMWxOYkVselMyRnJUMmhUV0dsUFNWcFZkMGxZVTJ0R2ExVnJVVzFxSzNWS1JuVTVSVGt3WTB3NVJXUlVWVVowV0UxQ2J6a3pORzVMT1hJNFdYaGtabFkwWWtSSU9HZFRha0ZZWTNZd1RrMWFlSGgyUkRSbGNGQklVSFZEUzB0VEt5OXBRamhzZGs5WlRWWk5SRWxwV1hCTVlrZzJWRTkxYjNORFEwcE9SSGg1TjIxVGNWWmFiR3BGZWsxdVZVZFRXRlpVVTBSVmN5dFRTRTk2VURadFJqSkpMMXBuT1ZsU1YxWndPVU5ETVVoMVVXWkJUbU4yTkZsYVNWQmpabXBSVGpGdFJYRm1aekJJVmxWbFozUTRjRGREU1haR1pVczRSemhWVVVkalJVbENSMXAzVHpabksyZzRZakZ2TTBaR05FTTVOVlJXY1hOMVVWSjFjVVZoSzJWcVZtUTNSR3BIT0ZWTk5UQTBhMHhoVlRac1NqaFdVV0V4UVZoc1V6aHhlV2wwTmpSMWRYQk9TWEpHY2s5NGNVVnRWWGhGZDJSRVdrRlVUMUpOZW1sSU4yZEZVa2QxVXpoaWJtODVZbTVwSzNaalVIZE1VVGxpWm5kVFlXWmhValozUVVOUWRqVlhhRkZtUVZoSk1GZEJTbU5xZUVwUlRXbE1UMGs0Ylc1eFZTOVhNMVJZZUhkcFNYZHBTMkZSTHpKTFlXRlVhM2hGVFdkelEyaENTRU4yUlRkWFoxaFdRazF5Vm1OdGQyVTVWa0p3YWtac1pXZGhWbVl2VjJneVoycEViRVF4ZVcxTGNVZFdNSEpXWXk5eU9VTXpkMFJWWlVsMVdVNUdhMjlKZG5kd1IxWm5NMGhxZGtGUFJpdGxZbWhaVWpRNGFuUkJObEF4VFhsNmFXZHZTM1JvU1c0M1FrNHpUblZZTVVKV05reHdOWEJNWkZNeGFWVnNVeXR4TlhCT2VHTnlVbXh3UlhkQ00zVjZkVlJST1N0NmVIaGhXV0V4YTIweE9GVnVjbTluUVU1MFJEUjFlVmt4V1RkNVdIcFBkMnc0ZFhFdmRGZENSRmhtY0ZObGRTc3JWVk55UW14WGNrTnNNVGxNYzJKbWN6Qk9UbmxZVEhKQk0zRTFRVFJ4YXpWNlRsbHhlVFIxV25VeVZVd3dOemhWTVZoTlJGSjRMM2hyZW5SUlJWWXdXa3RXYXprellVVkJWV05ZUmtWVFpXMVBNMUJuU3pVd1RFNTVZakV4TVRNdlVIVTVjR0V3ZWpFMWRFNXJhVGhNZVRSaVdISk1kMHB2TVhGNmFqWnhUbE01VVhWVFdHZHdObWRpTkRabmJXNXNaVXQ2YmpaeGMwaFpXVGh6TUdJNWVEVmxVRkI2VEhkc1MwTTNSRkEzV0ZGTmJXVlFXakpOT1M5ck9GSjNaM2RPVkU5b05WZ3hTQzltUjJKTVIzcDBOaXRrYzNGRFZtWTJLMHMzVEc1MFJURlNUazl4V0haRU5TdFJWbFZwU0U0cmNXSTFjRFIyVEZZclkwdzFOR1pKWTJoTWFYUkpjRTVPZVRkS1JVRmxORlJzVVRreWVHVnRWR2RHVFdsM1Ntd3dXa0UyT0ZWbE9FbG5hVGRXUWl0ak1XWXZLMlkyYmtwdk5EQXhSekI0ZG1GSE9GWjVWQ3RPYjFvck9YQmlSRFl4V25aVmIyWkhTVXA0YlVWdFJqRnlVSE5VVEV4TmQwdEhMMWh4TmpORE4wcHdkVmhxVHl0S1QwaE1OalZqZG1wMWMydFZaa2haU1RCdFVTOTZTMFkzTjNwbldXMXJTSEpzTTNsQ1ZtRlJlR3BsWkdwR1JIQlZNR1EzVlc1aVNFSkhOazVZWm1wcE5YSnBWM2wyY1U0ME5rSkljMEkxUlZJeFZEbHhRWG81WkZKc2FXSm9aR0pHWWprcmRVSXJVVXhWTVRkV2JXWXlRbXMyZUVKeFZVUnpaVVZ6VEdsaGRXdFdlWGhrSzNoM00zSm9TM1pVVkRsMFQyNVJPV0p1ZWxWcE0zTkVTVXh1ZUZGbVJGaFRjRGc0Y1hBeFVHdG5hRmN2VERkb1FVUnVWbkIwV0cxc2RFVk5OV1pGTmxKUU1qbENlRzFNT1c1elVIbDRWRkJWWjI5S1EwMVFSSEZ4WjFKUWVYVlJZazFQUTBsa2FXODFObEJMU0VaUmVuZDJSMjl2WVVRMFRUWnFRMncwT1ZCWU0zUlpWbGN3T1RBNVNYcEpWR281V1ZwUFZIWnhaekJYV0dwVE0zVnVOMkV5ZEZwT1NpOVNlRTg1V2pGQldEWk5abTEyY1dsd2FGZEhTR1ptVEdObE5HRkxSalZWVlhKNVozUkJlbkJtTjJkcGRGZ3lZMlp3UkVSMFQyZFFVazR5TlZKa01sSmlSVEZQTlc1b2NHcDJkVEpWZUc5VU0yRjRUVXBpY0dSNWQyUlBNWGxvVTNaa00yTkNaRnA2TTJGT2FYRmhlRVpDWVZkc2JGTldOV2wzYUU5bGVraE1kVTlKVFcxTlFtczVUSFJpUkhGVFdsbFdTMDB3UmxFMGVtUlpNbE15TDNkeU9YTm1kR0V5T0hWdFZFWnFUekEwWlZjd2MyZHpNbTFDYkhGSE4xZDBWRTlqU1ZSNlZUSjRMMVJYY1UxNGVERndWemRITUhSTVdXbzBablV6VjAxS056azRXa0oxU0dKM2VUSmtibE15ZEhCcmVXaG1aRFJqY0c0elFWZHliVlJCYm1SUFZHNUxPRGtyTVhsd1N5OWxUelZhYkdsUWJHeDFVR05pWW5ZeE5EZDNNVGhXY2tsQlVUVlBXa1pvTldneU1tWlhhbHBzYVhoamFFVXJiVTh3UjNKWE1FRTFURzkyT1RWdlNua3dURFJOTlhwcmNYWkdSRE4wY21wck0xVkhMMkZYWVZGdlFqQjVUME5OUVRkck9HOU5UbEZrV1ZvMVFURjFXRlZVYkRsU09YZzVTbFptVjNoU1RXMXdRbWxCZFhKUlNrWlZZalZLV1dkNlFVZE5URUpEUWxneFNIRk5NVkZIU1hKeE4yaDZMMjV1VFZsYVRHbFlOVkJSU1dzNEswbGtjRVJKUW1jM1VVRnRPRUZQVUROb05GY3dTQ3R3ZFZWbWVWcEtibHBrWXpVME4zSlRSa05oVm1WYVdETlRSRkZrUWl0dFdXcDZPVkl5WTFCNk9XWlhTQ3N4VkhJMFVHMXZTWFZsTlNzMmRGWm5OMVJRZFdsdGVreFhUR28wTWxCbWVGSkdjalZtT1V4TE5rMUxSSEI1TldsRlRUTXdSVWRGYVRkSllUWktaMVJ1ZWtab2RUTTFWMlJhY2pJeVdXZHFUMVo1WmtOV2FrOVZRbVJLTWs1VllVUnhZek5YTXl0cldUaElRelpSVTNaMWJVNUdUMWxtY1daVmRXVmlUMmcyYUZCelFuSXZZVU5DVTNVNWRrNXZUR1F5TmtOcmMySlFNakptVG1GMkt6aHpWamxXTXpaRWNYRjZkV1JyV0VjMmNuWmFSVEp0VUVOd1RXbEJUSE5DWVhocVJrMVFjM2xuYlVWS2VEWm5NbUpNUkVGcVJTdFBTVk51YW1jeWJUazFWakZ5YlRGTlYxcHFTMGt3ZFRWelRrNUZlR28yYkRCWGRFMDJSVEExWTFWd2VsTTFjalpLYWpCSVVEQTNRbWx4YzFvMWRFeGpNbmhTUXpSaksza3pNbTlZV25ScldIWnlWRVowVUVwMVYyTnhlbkk1YWxCcFdXbzNWVGRaVHpGRVVFazBjbGRFTTJGUk9UQm9aM0JCY0ZwTWIwRTJNVk00U3pGR2NVdFRORUUyT1RaSFV6Y3ZiRmhYZFhVelZ6WnFUV0kwVDJwVE9YTmpORmhNS3psYU1tUlRSVVE0UzFVd1VsSjVVV2RuYkhkM2FFWlZiU3R4TXpSaEwzSk5SMGhQZG14eVVqVXpaR1ZZVEhJd1owbHJVRXBZYTFoSU5HRkVaRTlDU1dWRU5GVXJhR3A1U2pkdlduVlRNazEwVHpsMU1HVlBZVXBXVkZOTlZucFBWM0UyUjJaSU5YSjFTM0ZtT1hKck9GQllhMkV6YTNwMWRrWkhSbGRDU1ZwSEx6a3hlREZXUzJkcVdFTmpjMDVrU2taWFdXWnhZWGhaVFdOTk9UWlFlbXhzWWtwR2JWZHJjbmRzT1dSSGFpdGliamh1YWpkV1FrSmhWbFJMYkVwVWRUUk1RbkJRVW14UWRXSkRUbFZNU0cxTlJFcHVjVFZUYVRoQlJqQmhNbVJWYlVjNWExVlhRVzA0ZUhSeGJGRlRXRVZFTUcwM05UbERXR1Y1ZGxGcGVtbDBLMnBpWTB0M1EyaHRabVJDTnpSdFRrTXhha3BvYjJ4SGJ6TmFNbTQwSzJjeGRWTmpRVlp1V1dkMk1VNUhjVWh4TUROMllqQmhkR2RUTnk5dmFIRldTMWR3UzFWVVpWWndlSGhVY2xGUWJXRm1RWGxKU0N0bWNYUktUM3BYVGpCNlZFeGhaM2x2TWxKbE1XODJlWGxhVFZaTmQyaDBjbkE0ZVZkb2RURnlaMlJrVmt4ek1rNU5XREF4TUVwV1NYY3pMMVZYZVhsT00wTXZTRXhUVERKdWRGRTBWSGRpUVZwd1VuYzBUbFkwUW5remRVdERaa0p4ZDAxdmJuWmFVbkJZZEhOek4yWXZlVUl5ZFdWdVRWazNPRlZsVVdNMVJUSnZPR2RMTm1GelMxZDNTM2hoV0ZWcVUySkZUV0ZMZDBaUFdWWktVRXB2Y1hwUGFrSmlkM2hpUXpaMGQzcFFVWFZZYjAxbVluQnlOREZuYWxCc2RVUk5ORnB1YjBneU5UYzRkMWx2TTBaelJHUnlRV0ZQZW0xSWRsRkthRUpYVjJkaU5IcENTVWxhWm5OSFYzRnVjWE5sSzNVd2FHRnRVemhXTmtKblUwcFpjVzF4ZDFSYWMyNU5WWFJoTlVGS2FuTlRiVUZqUVdWMGFXSXpVVnBxY0Vab2NVeDNMek0xVldaNGQwbG5aV3RuY1dkbVRHbzJUbkkyVFc5bmRFbE5RMDVDWkhOV016SnVkV2RHVDBsR1pUaEhlVWxsUkdaR2RUTkVUWGRLWnpsQ1owcEZaRWRoVlZaRGJtcG5SamMyTlc5UldsaDRPRWcwVjFJNFUxTmFTMWh3T1dvMFZFUkRXVmxsV1ZNM1ZGcDFSMnBoZUhwcGF6RmljRXc1TVc1Q1dTdHJZVkV6UWxkemVtRXhibUU1YWsxa1ZtMXlOMmRGZUhweWJGbDRPU3MyVlhsd1dDdFJhRWR4WVRkQ2JEWnhPVTFETmtocGNYZHdWbVpoVkRGV1RuZGtNM0ZqVUdGRFpUWXpRMGR4YjJ4Uk4yOUtabXRKY21wcmVuSlJXak0xUXpCRFdEVkRieXRZT1dOVk56VlJVVWcxZW1kc09WSllOM0JUYzNsamRreFRTRTVRT1dOWVVIRjJWRkZVTWtoMlVITlhaMEl3WjJoMk5FcEROWGhMYzBwbWFFUm9aMVExVEhFNVFXWjRZWFJKVWpsak9IZHBNRUZDZFRCc1IyZDFURTlZZWtONmJWRjVRbms1WWxkNmJqaFFPVGxuVnpsNWVFeFNZMXBYTTJoRVRtbHFhMHBQUmtrclkybE9iMlJ2UjBkYUwzZE9TMFZzWkRjNE1GSlhXakppY25CcWJXNHZXbWRZYVc0elQwUm5XRXRsYTBFeWFYZENWbkZIWlhkRFlqbEJjbVZMVURKTFRrZEVja2RYUlVwdGIwUllhMmw0TURCM1ptSmFlRWhvYUZNMWJreFFWbGRXZVhkTmNHa3ljRlZPV2pRdlJWcGtiRlozTlZGNlZIWk9lamQzUVNzNVJXMTViVlpOZG5SVFdEVmxSbXRpTkVwck5UQnlOMGN4VEM5TFdWWjNXR0pVT0ZJMFQyNVlURWhwVWt0VVExSTBUMHQ0TW0xVVEwUXphbFpGVEhGTFRtcHRRazFYVWpGdVJVZDZOV1Z6WlVSUVl6WXlkak5RWlRCMEwyTnJSaXQ0TlRnMFoyUlRUelYwWlhONVdYZGplREV4UkRBNGFWbHhkMDVTYW5sbU4yVlRUMEpKYVN0bVExQXdVRVJ0Y2tOVmVWY3dWemxWT0VaeFpqY3JWazlhUms1TWIzSnBiMHR5ZVdkalUydG5Wa3d5YkZrNGIxVXdSWEl6ZVZSb2VFeExiRkkyVEU1S2NYbFpZVUZ2ZGxoT1ZYSXZOemN2TUVVdlZtVnlkVW8zZURRMGEzb3pXV3c1VkdGU2JHbEtSRU5xY1hkU2J5OXJlR3BKVWxoSldubFJWelJLTTJWbU1UZFVjRzVoUjB4TE1HazVWM0pvUzNGSVJrc3hkbEUwSzFsVlRIbFpabHBzTW5wTlIyOTRjM0Z3WVdsU05WZ3pkek5NWkVSV1dYWXdaa1paUmxBeWQwVjBhVlkzV1c1R2JVTjNSMGhHY0VGbU5HZ3hlVlJCYlU5TGVGTm9XVUZDVjJsR1p6SnFTM1ZuUTNSc1MwcE5jbmhYTW1JMGRTOXVSMlZsVVhCV2JIcFVTWFprU1hKbFdtaG1ZWFJOV1RGRFN6WnROR1p0Tm5KaVpFWk5kSGhMWW14MVoyMU5PSE54TXk5TFFUSlNWaXRtYUZkNlduQllOM2R6T1cxR1RuTjBiV1J6WjJ0cmNFWkVXRkJpWWtsMFpGcDVOakpoTkd4eFRVcE9TM3BTZFdwWGRUSkxXaXRLUm1adFUwUjJNemhHZDJOSlJWazFSMGhOT0N0QmNWZHhRM2RpZFdaUlkyc3ZTVWxOSzFsUVJtVkdRVTB3TUVSdVoycE5OWFJSVjJaQ1RraDZVa3RIUlM5bVFWa3ZWV0Z3U3prMVUybFdNa0ZOWm5GSmIwWnVkM1o1TjJ4TmJuVnpUelZVY2twa2RWZG1VMFZtTlVJNFlXdzFUekptTVVSTFQwMWpkVkkxWTI1blNYQklPREY1UjBJNFVteDFXSFJYUmsxSVMydExUV2REUVZsTlZIaHhPSFI0VkRCbk5ITmlTaTlKTXl0TmN6aHNRMlZXV2tSdmRWUXdOM0ZETkRFeE9HYzNMelZLVERsdU5YVlVRM0Z3Ym5KcGFXTjBla1UxWmtoaVNuTmhibGRIYnpCUE5EZzVTbmxzZDFSTFRYSnVRMUpLYjJKWWNrcFZZV3g0YkV0UVZuZHpXRk5hUzJoaVVFdFJlRXhoZUVOS2N6Uk9ZVEUxYldKTVQyUk1lRGhYTkdaUFFYa3pWVWxoVm5CM2JFUXZTekEwUW01R1pYcHRSeXRWYmtkS2NrTjNkalEzYzNOV1VXMHJNVkJ0TVhoTWQxaHBjMjltZFRneFkwaFVRVGx6ZFd4RloyUlJOVk5EVjA5RWNtbGlPV3RNTjBzeWREZGxNM2N6T1VGNlF6SlBWemxRV1d4NGQwNVlRVzg1YkhwWVNXbzROQ3MxTlU0eFRtVjNUVGwyYWpkck1FcFRObkJRTms4eFdFTldNa3gyWnpGa1dsRm1XVGR5TkhwTk1tSkRkalkwVlhCMU0yaFlRVEkzU1VJMlJqUjJla3gxUTJaeGFUVm1TRmhsYTFSeE0yMXBiRTg1YjJzeWJGY3lWbnBtV1VaRWJscHdjV1pZWmpkVmRVc3pMMWRwY21VelJqZDJhVFF6VXk4d09IazNhbFJXYzBJM00wcGxMMmhZTURRMVdYUTJTV1pNWlZWRWVURTRNelpoZDNST2FsRnZibFJPZVM5a2RrOTFRMlozVTBFNFQxUkRXSFF2VjA1TWQyWllLM2tyZG14R1dIcE1jRnA2ZDI5SWMzaG9XREpCV21wMlUyTXdkbVFyWnpOMGRreDFZVTU2VFZWbmNtRlpkVmRwUW1STlIzUnRkazE0Y21WWVdtVjFTWE5wTVdSeVMyOWxZbnA0VEVzMVRIWkxNRmRRWVVadVIweHJUWE5rY1hseFV6VTNhRFI0T1dwU2REUXJiR3RPUXpVcloyaERkRzkxYlZwVksxWXlPREJQU2pkclFsZERZbGRVVDNObWFXdENUMWhDZDFGQlkwbEhXV1ZSYjBWWlkxaHZSVlJCY0ZKeWRrRlZhRU14UlVRd1IzaG5kRkpPTlhkRk1XNXBaMVJYYVZSS01XY3hZMlZSYkRSVmJrRndZek12V0hsWVdFRmtSRVU1V1daMmRtSjBZek5KYjNOYVZVOUZRVU5KYjB0M1JrcGFUU3QzYURSQ2FFcERaMmREUjBocVZuRm9OME13YVZnd2JHOUdRMjAzZEROd1R6SnlkVGRrWVhaa2RTODJkR0pqZG0wdk9TczFlVWhGY2k5dmVYWjRkVGgyZGpOeU16bG1kQzh6YkZoaVFXVldaRUZTWjFWNllqbDJiMHMzVTBRclVqbG5LM2MyVEhoamNuZFJlR0p5U1dsb1IySk1MM0JoUlZRMVZURnlPRXN3TDFORFpWTXlRMmh2ZUVONVJVTjRNa0UzVVdOTmNXSXliemwxUVZSSmFtZ3lkV2xRTjNnclMzVTNWRXhzYkdobWNUWk1VazB3TlRNd00wNVNlSGR2VkdaamRITllVVTlLWkhKNFYwbElPRVZHVDFsdWNqaHFVM05VVGxkbWJISlRNRWhNU0N0NVpHZDZUR1JzZG5wSmQzZzNOREprYlVkdGRUTkRaR1J6U3pjd1RTOXZOMlZpYVdKc2FrczBTMnBYYld4bk5WaFRPQ3RPUkRWUlpYbE5kemhaZVhjM2JUVkNkM05OVW5CWWJFc3dkMGQxYUd4SFdIWXhTbGh6ZWswdlpWYzJVR1J0VGs1WGFFWTJjbFJHT1Zwb1JHaFNWbTVVTDNwSmNqbDVhRXRDTVZjMmNrWnhTMHRtTlRSNGFtTnZlblF5TW14dVZWcENRa0ZUY1ZsNmIxQk9OMHAxVlVWNWJuWm9TM2xqTTBKTk1tMDFMeXROWVdaUlRYbE9WMVY0VlZkR04xZHViMHhPU0ZaYWN5dEVUelpwT0RaeEwzbGhjazFEV1hCT1EzWkpja052TjNGaFNXaDJZV3RyTldwMVRqWXdkMngzVERSeWNsbzVWVmhEV0c5RE5tVmFWMVZDVGtscmFuazFLemQxUzNST2JHeEtPRFp1TTJGaFNqTTJWbVJXWkZjcmNYSXlPVEp3UVdaSVZ6RlRlRmQyTTNOSE9YVk9UMkpXTWt4TGVsWjFZVEk1ZW1rMWNtWkhXWFI2VWs1c01VTlVSWGhqVkZCV09WSjBRMFE0Y0doNVZWQmtjblEwVlRKS1EyNTRkR3cxUTFoUU9DOXJiMVYxWlhjemNtRjFWMWxZV21KdVR6aGhiSFJFUTFSdVRFcFJTR2xOVGpkTEsyeDFWbE5zYXpkRFZtSXhjbXAwVkhCUE9WTnFaR3RHTm5wNGJsVlJlbU5IUW1kak9HWTJabEp4T0dJM01HcFFUakIyVUVoQ1QxVnNSVmxrTkRST1RsVmtkRE5XYkhsdlVWQnBabVIwWVdKd1VYQkZWVFp1UTJoMk9EazVaMjlFZGtaclUydDZkazVpYUc1bFJ6azBXa1ZZT1hsR1ltOTZOREo1Y0M4M1NYQlNUVzFVZW1FNEx6aERWRWcxVmxOaFNWUXdkMnRUZDJoVk5rUmpjM2xpVVVOUFN6WmpURnBuVWsxVlVtUmhZMjByY0ZSeFVYQkNaRVF3TkRCWWRsRllWekZxUnl0WFYyeHNWMkpYTWxGTFVpdEpRVGRxVGtSdVduaGFlV0pCUW05aGNtZDVWMk5pY0hablZGcFpRMDk2WjA5bWMzTXZhV3RSTlhOS1IwbFZZaTlFY0dScmFFUXJNVVJZZFd4bmQyeFlNVEowUW5WSGVqRjFhV05pV0RGME1EQjJlRkZKVjB0bk4wNVZSUzlMV0hGaGJXdFllVTFhUzJWRGFqVlNhVzg0U1c1VU0xaDJVR3BRWTFrNWFXSlpZbUp2UzNsMFREbEtWWEpUYUc1VU9GVmpkVVJCTVdONVREWnlabk15UjBSWGRGZHlNVEpPTkhGWGFsZFhaa2xQZFhOQmIwRlNRVUpYVkRoQ2VqTkZSR0paUVU0ck5ucEdiRVJGYldKcWFGWjJlVGxHVWxSQk1sWjRNVUZxUTBNNGJtbDFNbTV1YzB0NGIwMWFUemR1VGxRNE1tRkJOekZLYVdOSVVVVjJaVVI0TUVoM00yaGFhV0l3UTBSYVpYZFZTRWxDZVU5dU5rRTJUVWhGT0dSbFpsTm1PR2hoYzBob00xcDJNM040Vm1kaGJWRnVjWEI0ZUV0c1ZtMUhjWFJFZW5Sa05sTlBhbEJsWVVoeWFHaG9kbEJzZVRCNFYzYzFUbGRCSzJ0V2VsTTNNRzlIYVhSYVdrc3JVbFZ6ZVcxR2NVTlNlVnBrUWtONVZtd3JTWE5DV2k4NFlXSmtieTlsZEVGSU1FUlNkME5EUld3eVVWZDFiMmxJYjJ4U1YycHlVWGxNV0dKM00zWTNUa2hZV1U5SWIweFZOSHB2YzBOR2VtbE5iRmRsYVdOa2JFOU5XbWQ2V2tnelVqZHZNVWRLVmtwVVRWVk1UaTlMWkVKSFUwbGtkbWhRVnpKdVNtTXlTelpZVlRka2J6UnVaV3BOWW5aaFQyMWljakZtU0dGMllWZzNkV2R4TVZkbFZXNDJVMmh5VWxaaFJFdFVVVGxRV1hGMmVVVm9iblI2VjJWcFowdGtUMGwzVEVFNFRUTkhXRTV5WWs5WGVuRnVVR0pFTld4SVluRXhXVU5zU21oWVJIVmtkelZSUzJWblNsTmhZVWxOTUVaRmF6bFlTR3hvYTJ3ek1GUkJZalozYmpCNWRURnlhVW8zWnpaWVlXdEtla05zZUdsVk5HNVpjMHAzTTNGRGMwSm9ORTFxVTNwNFlXOXVRMUJGWVhKNVkwRm5XVXRsZDBkTWFDdFlXRFZCWldsRVRYYzJWVzVKYjBSbWMwRXdRV1EwUjI1d1NHY3JNRlk0YUZCd1lXZDFkRVV2UTB3eGRVRlRVRVZtUldGTGFGTlpTMFp5UVUxVmRuUlVkbXhhYlZnd1puQm1RME01YmxwNVZtbzFSemcyVDJOS1IyeEhUM2RqY2pSbEwyMDBZVkprV25sNmNtcElXakJuVXpWVE5YWXZOM05NWjBWd1RETldSV2RYUVdGallXTnBUWEpzVkZVelIzRm5hamRIV0M5MVNHRTRSMjlRVG1vMmJFaGllSFZFVFVoclpGSmlRV1pvTVcxM1NuazBNRXhKZWt4a1QwVjJUR1J3WjFwVWJqZDBURVI0UkhZeVZTdEVaV1ZpTXpSWk5VNDVURUozT0ROclQxRk1OVVJXTmtoRWVFNWxiVGROYWxoTUwzRmFjVFJtZGxKVFVrbGtNRGd5TmtnekwyMXpTbEZIUmpaYVVVTmhLMkZTZWxsa1luY3lkRFl2Um1kWVRXMUJOekZoUmpSTmJHTTJWVGs0ZWxFMlkyUk1RbE4zVjI1eGEyNWlaWGR5ZEV3d09VMUZNa0YwTkVaVVJXNTVMMmxKT1ZGaU1ISjNSMEpIZG05VWQzaGlkbXRhZG1ZNVQwVnBaVUZxTWlzMWFqbDVVRVIwTkhkU1dVc3pWVlZhZVM4eFYwVnRNMEk0UVZJcmVISkRaak56ZDJobWFrOU5UR1ZCTXpOSGRYQkVhMGx2VlhSQk5IcGpSRFJYU1VGeVYyNTBZemMwUTA5aWFrVm5VSE5PTjBKQ2FXdG1XVTFqTVVWSVptMUJWemMwV2pZM2VqZHlkRUl4TjJWbmFHUjJlbEJCWjBOblZuWk5VbEJJZDFCa1dTdDNTakpJTkVJd1NIcFlPR00wYVZsRVpqWkVSVWxuYWlzM1YxSk1VMDA1WlhoUVpITkZSVlpMVWxab2REaG9Za0pSZFRBNVRubElaVUpuYzJ3clNEUlNTSGRIWWtwTWFFOTRReXREU0VGclpVa3JTVEV4UjFkQlpGRnNZbmRUZUcxRGRFNU1UV3BDYTA1NWRYTk1hV1JNZFZRMVowdFBUVTlqT0dOeFowbEljbkYzUkd4VVF5ODJOVkJ2VFc5S2VUY3hORU5ZYkZGeWRVMUZWMnA1VFRob1RuWnpNM2xuYm5KcmQyMW1URm8wT0VKVWNHSlBTbXBQYkhGUVpVTllaMUp0YW1WVFNrOU5ZMmRqYWxGMGVqSlVWM1JzVTNZMmQxazRPWEV4YWpaVldtMHlkRXRMYVRadlZtVlplV1JrWTNsU1J5dFFTMnRPUkZsV0x6UnlkbmQ0ZW1vMGF6VkpSSFU0U0V4blptZzJWRE5EUjBKMWVrNDNhazU1YmtReU1UZFllbVZ4T0RFeVFYbGxOMDlPT1ZCd01IbzJLMmxQS3pKWFNHbFhiRGxUYWxkeGFtWXZZMEV3UVdRMFIyWlRWRFJtYUVWbVFXVnJVMUJGWWtWaE5tazNRMVUwTkZSNFNXNVRkV3BzY1RSR1NqUk9iWEpUU3pocFQzZEtRazVvUTBOMWFFbEVja053VEVKV1RWWjBaak0yYzJKUVJIYzJPRVJNZDBST1ZTOXpUMUJMTlM4clRreDZPVWw0VTBwQ04yZHVjRms1V2t0RkswNTJLMmd5VnpkeGVIWndhWGR6T0dSUlduaFFSa2xzU1dwNE1YSmllak5TYUdsSGJGcGtaMWwzVTBoemNrSnRibmxRZWpoVFRtWk5NVTlUWVdsT1MyaFNjMDlDWTA4clUyMTJRMWRMZFM4NGNFWjVhblo2YjNaV016SjNUMWd5ZW1KeFJHeFphMlpJVFRkWVRYb3diVlpIWWtWNGRuVTBURTVaYzFkSGRIUjZSemR4VTBaQ05qTXlMM1pOY1dOblRIa3daMHhFUXpoelZYTmpWWGhWWkc1eFozUjZOV3hqZEhVeFNFVkVUemR6VkRRelltbDFZMFYzYlZONWJuRm9WelIyYkdGd2VqWnBTbk5NWWxGSmMwVTVlRVI0UldWeGRVMVdlakp6V1VONk1VMVhOazFtVVU1RllUTTFXbWw2UjBScVNFZExNa0ZMSzNGUmVIcHROV2M1UjJwallXRm5SVzV3VDFRek9GUktVMWhZTUhGdVJuSjJZVTlWWVRCWFNGTnJlbU5vWm5ZMFRVYzVkV1ppYjFOdFFtTjZRVFJsV0RNMVYyUmpNbEpHSzFReGNtWkNaVmszY1doa1puRlVXV1JJTTNkeldUSnljMjg0YTJoeFlTdDBUSGxxV0hoc01tMW9jelk0ZFhrNVpHTjFTemt5VTBKc09XUXdWRmxWTWtsTWQwSnpXSFpZZFd4YVpXWktObmRsTm5KaGFrcFNWbWw0UlROWE0yUTNjbTE0VXpCMU4wZFNXWEZPZVhKRWFVWmpjM0Y2WXk5M1FrY3plV2RXV0ZGa1pXaHZlR0ZGWTNwS2JIbGtiMUY2UkZwMGIzb3JkV3B1U21oR2JGTjNaRGxIVkhCTmNFSmthMlF3TkVsaVJXRkdOVWN5TkVwaVRqaDBSbkJCV25GS05rNWhXaTlJU21oelprRk5TMGR1YWxwTFNIUjJOazl2UTJaQk1qQkRTRUpRVlZJNGFFeHdMMFJEWlhSdVRYa3pPSEU0U1hSbWVVOHpibXQyYVdaSlVHZHpXVTQwU0hZelZYaFRZMG93U0dKT1VHcGxRbmhHWVdkRFRWUkdTemhGUmxKVVIzWXdZVFJETkRSek5FUllZMDlaY25kS2RXbEtlVEZvV0dGb056SjZRVUZJU1dFeFIzcDBUbXAzYkd0TmIzZzBhbFVyVEM4eWIzRXhVekJUTURSUFNEUjZjMnAyYTNrcldEZGpPV012WkdzNVdGbzVkV0pJZGpOWlRuSmhUVzh2U2tocWRVeDFSaXRUZG5BMVpuWjFhVmcxY0RacmNFODJiVVV2WTNCemVtRjNjblUyY0RnelpGZDBhR1E1ZVRNelVpOTRVVE4xYlZneE9WUjJkUzlMYW1SUFpIbFFXRzVOTVNzMk4zRnlWelJTWXpneVNEaDFOWEp5WWpZek5reFZVbkpYYkhCTlNEVllkMjlUVWsxYVJYUTNTa1pQYVhaV1ZsUjFiMmRTTldwd2NHc3lTWFEwU0dwRmRIaEVlRVZrVVVwQ1JXNDRVVzFQTUVRMFNpOW5Za0pUV0haTlNWUndjSGx2ZUU4eUx6TnJkRTh3Y3paSFR6bDRVREJZVXpCMUt6UTNUek5YTmtKWFIzaHBaekZSV1VsdU0wUm1hbWd5WTB0VlNWUkZlRzloYnpSdFFWUXdWbTl2YTA1RWIzcFZVa1pKTW1VNWVWSnBObkpoYVN0a1QweFhiMEkzZFdsVGVFZFVZVXhGZEU5bFRXNUdTbXRaYm5KVVJHaFVkblUzZWtrMWJtSkpkM0p5UkVwdk5FMVFVRGRxUmpOeEwwRmFSRlpRZW05Vk0wNWtkMFoyWlRWYVIwbDNUM1F4WTNWSlEwWkpXVWw0VDJoQ2JuZGpjekkzTWpreE5sSjBVMkoyVTBOWFdVRllNU3RtT1hCUmRFdFNZek0xWlhkTmFGcDFaRE5VTlRkUFdFNWlhVWh0VkhNd2RrNWplRmxNZWl0cFVVZHBNRlZoYUhCV2VGRlNORWQ2WjJwM1ZERkZaa2xTTm1WM2QyNU9WbkpKTVRablEyODBWR1JKUmtnd1VYQlVSa1pEVm5kcGNHbGFaRnBGZDFrNVMxUjFZMEowZWpaaU5TdFZkVmx6Y0dwdGFHOXpOME0zWTJkUVVVNXJiV05HUWtKemJ6bFRjbGxWV0M5dU5YaExTRVJLTjNab2RtZDBWaklyVDJkRmJFOUxObFZIZWtVMVRHNWpRMjgxZURSWE5FY3hNRmhhVXk5cFVIVlBLMllyZGs1R05TdGlPVGx5TVVaakswcEtVMUJzTVdaUWJGQlpUbEpSVlRKSk1FTkNVek53WkdodWNtMWxOelpsZDBOYVdGaG9PSEpyWTFaQ2J6ZHBWVFoyY0M5Wk56SlhXSEpPZDI4eGFGTkpaM1JCZURsaFlXcGFUWFJ5Wnk5aGVUbHhSMGRDWWxOa0sxUm5UVTB4SzBNcmRFWm1RVzk1YUc0elRuWmtNMk5FTlZrNFpGUTJOMVF4UmpSaVZteG1OaXRvYkd4c05scE5OV0ptVW5aYVQyMVFRVVo1VUM5elRWcEVNMWR0TTFBME1uQTNTSFZJT1RBeU9IaHJNbTFpVG05SGFYRjNaa3RFTTBvNGNGSnBUVGxvUm04NGIxVTFSR3R0UkVWUVZUQk1XbE5SV0VwaFlsUjJaa1pMWjBRMWJGUmlkR1pYUjJ3eVdUZzBZM0o2TWxOdE9YVXpjWFZ6WkdKa1UySmxkelZsTWpkRU5tczNkREpZU1RNd1lXVjNlVkozTDJOSWNtVXpkMkpSYmt4dU5IWklUbWc0ZUROUldYRkhOV3hwZEdSa1R6RlNNVGhXYTNrdllUbDBZakYxTTNwbVRHZG9aRWQwTmpGME1IUlNSemN6YmprNWVqZE5WbmhwWkRNM1dIWlhRMEZsVUZaMlVtczROV3RqSzBNdlYyYzFjSFJXVWs5U1ZFeFhVVEJRYkd4aWRrWjVXbFowTkZVemFUUkxZbnBLZURGRWEzaEliM05oUm5sc1pFWkNWWEZzVVhJMWFtNDBjbTF3V1ZGS1JWbEllVXhZYjBsR2F6UjRRWFpCV1daTk5rVXZZblIxUlhKemEyNUJVMlpaV2pObk1VdHNVWGRRUTFSSlJ6SlhaV2xuUVVkcFMwSXZRVmRsZDA5SlZXTjBSMlF2YW1OdVdrSm9kbGcwV2t4WVdrbEtlV3R0UVN0aEswUk9WV016YlUxVGFGVmtjbFpNUm10Q1NqbFNSV1pKVUhOaVRXdFRNakpvY0VGMGFrTnhSWFEwVUdkWWNIcEVaWEZ1VkdkM1RIcGtSVzFsUXpoT2JVZExZek5zUVZock5rWkpWV2t3U201TlFqbEdiR05aY1haSlR6aEdNR1V6TjNOWlpsTXphVkJHU0RGaE5IQkhhVGxaU2toRGJDdFNVell2U1hoVGRrODVURTFuYkcxcFpFdFdjMnh4Y3pCUlpFWmFWVlJ3ZFhScWRsWmpZU3RtYms1YVZpc3hhVVpzWTBSQk5TOW1kMXAzYmxVMWIySjBhbVZJTUdNMFJEQkpkRUZ2UlhwNVV6TjZNMUl6WTFwM2EyVjNhbVJRTlVGVE1HSnNkRmszYWtaUmJIZE1NV1JUVUhGUU9XWndXbEV6VmtKVVJYbzBVRzU1VUUxM1ZqUTFSRFJMWTNGeVJpOW5UMWh6TDNKNWJtNWFjelpQYVZCUU5rWllPRGxQTWpJeVMzUmFURGxzUkRab1pFNUtSSFJuVVVwdU5taExTV3BNUVRnclUyRkJOV2xwVmtFd1lUbElaMVZXU3pCRVptSXJXR3hQWlcxWFJWUkZaWFUxWlhGaE4zTTJUV05zVkVveGMwUTVSbVF2TlhORmRteERhV3QyZURWWldIWnJka3NyVkhOdlRIRkNVR2RDYkhoTFpqQlNORTlGYlVkR2J5dFBSVEp4UkZKdFRsRTRMeXRHVUhsNFpIVllRbWhVVlVabFlsaENkMnBqVjBOdVVpdDVXVGhwVmpWdlRucGtXbE5UYzI5SU5FVXlXSFZIU0dWTFRVdDZNRVZIVVVWS2VHOVhNbEpWVUdNMEsySnJSa2xhY1RGVVVrNWljRk01VEdScFRHZHNWSGhQWmtFeFIwaDFUVmMwYUcxSlNuVlNZaXRsWW5ZMFdDOXdZME5QUlhOUWJsVnBLMnBNU3psS1ZHdDJWR05vVkVGUFpsYzBRbnB5ZG1aaU5ESlFUV05MUWtSNVlWQlRURms0YTNvNVIwSjFRelp5YVVSdmJHSnliVkF3TkVRMk5qTjFjVmRCTVZGdmJYTkdZbHBTWlhBNFNFZHhRamg2TmpSWU1FSnRaSEpqYjBoVGFtbFJObFphUmt4Q2FFdEJWekJxVFhGNksxRnJVblI1VW14a1J6VlFUa1ZYTDBjMkswRm1RbVpXTjJ0WmVEVllNMDR5WmpKU1YzWjJUa0o2TjJSeUwzSTBRakJCZDBSMk5qVjROelJZYmxwNFVXUkJUemtyUkdkNWFuTnlNVGwyTlU5a1owaFBjWGhtVFRGNmN6UXpURWt5V0hacVJIZFFjalU0Tlhwa1ozbGhjMWczYjJwNE1GVTVjRzVCVERKV1lsVlZTSFI1VFc1WFNuTlVWMngwWkhkeGVFSTNVVUpOYkVOcU4yeGxkRzl5WWtkRVdHaGFTRXh3T1dONVVWQTFiVFZUZFZSSlJ6TXJORmhZYnl0cFlXMDFUWGxZV1dGbk5VTlFVVFZIYkRONFZqQlhLMGhXWTBsV01WcFliVEl2Ym0xa09UbHFSQzkwV1VJeFZtRkpXRWhEZW5BcmRHb3laRUo0T1d0WU5rdHRSVWd5ZEhkc05HaHdUWEZ6WVZSSllWQnlhRFZJTlRoRU5DODFTalF3ZW1sUFkySjZRM0F2WlVWc1NtSnVRVmMzVUU5c1dYVkNkbXhhVGpOSmJrTlZiaTlWSzJFcmFHbDZjVEJGYW5RNFdGZFRWRTUyTlhkTmJtbzRablJEVmxSMlZYQlZNVEZMTUVreE4yeElaV0pNVURGdWQzSnROMUoyT0RjMGFreHJObUpRV0RCTGFYSlBURnByTTNsQlptVnFLMHBIYjI1R01uTnZVRlZyVEZBNGVGbFBSRU5aVTBoWWFEWTNPREpXZHpZclp5OHdaSEZHTUVGMWVHaFlObEJ0YVdnMWFHdFZkMVZFZHpjMFVTOVVabXR5TWpSeVkxTkRRekZaTUVocE1rbDVWRmhqZGpreWQwMDRheTlPVkVFeWIxUTVkbGxaZUc1UlZVWlNMM0pLWTBWS0syVkllREpVYTJOdEsxWnNaWFpYS3pkb01WcEVXSFZJVG5obVZuQkZVV0pUYW1JelNFZHhiR0pQTWxRMGEzaHBPSEZZWVdWS2VXNVpSekkzVW5Ga1preGpUMVZ0VW1GcE0yVm5aVlo0ZWpoeFNHbFZOMHhGS3l0VVNuUk5lVlpCTkhock5HOXZXVlJHY0dsYVYySjBRMUZtVkZoUU1IbGtSVGcxUjFBMk0ybzVkV05aWW5sNVYwMVNZWGh2UTJNclNUTnhXbHB2ZHl0S01XTmpOMXBWWlhKaldFaFdWVTUwUzBsR1dYZDFjRmxrZFVKQlZuSlJORkI1YWtoRk56Y3pRVTlqUkRkMlJsSm5Xa1pLYTFWd2JXNU5WM042T1cxTWVHdFRZa3BQYnpkR1dYSkVUV3RhUzIxeVpVcDVZbHBqZDJwVFJrWXlhMDE0TW5GQ1FtOXNjMDFXU1hCRlNtTk5NbXhMV2s5eWNEWmpkbFJXTDNOdmNIQjBjREZoZFRaYVVqbHJTalYyV1hwdk1VaFNSMW80TWxSTlkyeGhLMFJOTVU0eGEyZHZPSFJrYTFJclVraDRPRTByT1c4ekwzTm9TVnBxZUhwMVVGaGlhMjUwTkVKbVZVZENkbXBuTDJvME55ODVkbkZJTXpNNWVqZFpUMlpXZG1WbVIwODNkbEI2YmxWTU9GRTJlWEkxVDNWbFNITkZRa0U1YVc5SlJURnRTRTA1UzJWR05IcGlPVkIxUTJGbEswbGplSGxSWmxVd1kydFBPRzB4VFZnNVRtSTVjWFZyY0V4MVFYRldhREpDU0RWd1pXTllZVXhOY1VOMGJsaEtOMFpPYXpaWlYyUlBjMFJ2ZG1KbVZuSnZlazVtTHpCaVZsZFFTRGg2YWpCblRWTnNSMFpIY21GRk9GTTBMMlpUU1VaTFkxcG9PVWMzUlhZNE5qTnhMMUJIYVVablZYSjBXaXRNZFhoSFVYSXJPVnB4YVhrM2RqRlBVamRQWjFGMU5taG9XVFJTYzJscmRFNWlkV1owWnpkME1Ya3ZUVXRKTkhWREwyWlFXblF6VGxCaVMzUTJjMmxrTDBWMGMzbGxaSEY1TTJ0TVptMUxOblJYS3l0MlREbFdia2NyV1c1TFJGaHNZV3hVU0dWS2VrcHViV0prTUdGNVpGRnRZbkpHU0dsUFJXNUNiWEpuVkZoVFdFTTFRazA0WTNjNWJVeEpjVFJyWTJOcWRscEZZbmdyYVUxVVdFMHZSVEYzV0RGWlZEWlVURXR2VURoM1kwY3dTamhCVlZVNWFXWk9XVVV5YTIxd1dIWktiVzFUVWpZMWRXaGpOVzR6ZW1Ga1dWUTNPV2gyZGtsU1RGbGtOMDEyUnl0NFNqQnBZazlTUVdwdk0wOVphbnBwVERkSFQwVllUSGQ0WjJoSWRXSmxXa1JGUTBGNlNVOVJiRGRxWVVObVEyMWlhRmhhVEdKNVEydDRibmxIT1ZCR1NUZHBhRWhYT1ZwU1ZUaG1NMUV6VDJabU1sTnJMeTk0U1dSRWJHTjRZM013T0dKMk4xZG1ORThySzJsT1ZVazFWMUl5Y2pCS1JVb3dOa2hsWmpCdVZVbFhVMk5uUzBaelNHMHJiRTVEUjJ0U1JVY3ZURkFyUW1WbmNsRkxRMDVoTmxBd1p6TkpLMUpxUVdSR1lXWnZTemRUV25oeVFXOUxabVJhVkdWblNrUjJRa05SVXk5aGNVd3pTRTVrVVVWS1VqVkNOVFpRVlVrclJWSkJSaXQwVm1oMVowMW9NekpOUlhWNVJGSlRjV05wTjJoME0zRm1kRWRPU1ZwcVdXWldjMGMyYzNSWVNWWjBOR1Z6WldKSk9ITmxMMUJOZDA1MlNVWXpOWGRoUzJoeWJrTjBPSGhpVG1kNmIxaDJVVkpoZUdoVFQyZ3hNbk5uUTBsU1lXSmxSbGx4V1N0NmRUUkpkbGhIYjB4MGQwVkVhMHRpWkZaaU5FUlRPRWgxTTJWT2N6UmthRmhvWXpoaGVrUlVaVVo0TjNreE4xcDNLekI2WlVaT05XVmplWGwyUzBoS1NGZ3ZSekpHTW5Jd0wxRXpMekJTVWl0Q05IRXJSazVYUTFCWmNFOTZjVTFVYlUxS2RtTlpWMHh3ZGtKMlFtNWtTMUJQUm1KQ2VrMXhTSFZ6T0hsS2RrTXlNRGRzVjJvemFETmxaV053V21KM05Vc3hOakJTVDJWdlJXRlhPRVZ6VlhoTWJGZHdiMFUwZDNVeGVETldaMXBMUW5SRE5sQkhUMk5RYVhwUFVXOHJaWFpNUkVRME9FTm9jRGRyUlVReVdIbDRTM00wVEROSlJsQTBkSFZLWWxOdmRtWXlXR0UwZDJRMlRqTXliMnBsZVdaR0wyUnZUWFkyVURGdlpHVmxMMmh3ZEVaT0wyZDZVek54UXpoMFdIZFFaazVFT0RkNldDOUxWV0pRUm14MVVYZHRPVXRQYWk5amIwMXlabGhuTTJWTVRqTTBaVEptTTNoT1dUVmxWbVIxZGtSU1pEaHlhekIzVVRObFQwOXlLekp2WmpOS2IwTm1kR2dyZGt0elRIVTRSWHA0TjI1Q2FqTk1abTQzTjBaRVZEUkpVVTgwYlRCUkswOUlXR2xtT0VnM2QwVklORWc0VFRWT1pHNURZVmR2ZGt0SVZXdzRiSGQxZUVSclRUSXpkalJrU1dwWFNFVXJNa00yUVZoSU5qUlRkSFJTWm1sUU9FUlRkVGs1Y25wT0sxaHVOMjgyY1daSU5UbGFkR1p4UlM5bWJrWnVVMWM1YWpKVWF5OXNkbXhVWkRkdVNtdENORGxNTTA1MVdUSndOMUZ6TnpZeFRqTlhSRE5ZWjBRclNHaDZLMDVpV1hScmVYSkhWSGRxZEZSVlYzWjFkWFZ4TURKeVlWTkRNbU5HZW1ac1lXcGphWFl2VEVRck5XODVXVTF5Y0VnM2QzUTRkWE5tZGtKeE5VRmxkbmhZTlhjeU1qTTVLemR6Y21VMk1TczRVR1kzT1ZaUGJUZHpaQ3RqVEhaVWRrSXZPR3B2T1RSUUwybHdjM2RqUjFGUVdVZFpaMmR1YzNnclRXaElNbmxzTDI1YWFpOXpWa2xVY1ZsRGFqWldVRmw0YmxCM1JVcG9jVzEzVjJaWlMyNTJNRVY0UW5OMWFHNXpTakJwYjJjNWRXbGxRakpXVURSMGJGQlJURkpSUkZobFZFOU9ZMFZDUkM5eWNVOTNiRkJRYzBwVFExUTJWbEpsTlRVM2NVRm9TMHhKVUdKSlVsQlFjMHBwUVV3NU5uSkVjMFZ3TnpsQ1JWUTBkakphUVVad0t5OHZkekUyVm14aGJrRkJRVUZCVVVGQlFVRk5RWGhaY0VSMFdHeG1SSHA2TVVGQmMwbEJRVUZCUVVGRVducE5URE5CUVVGQlFVOUdOekkyYmpoSFVEUlJRalkwU0d0QlFVRkJRVmxCUVdkQlFVRkJRVUZCU0dwaFdUSkNhMWxQUkc4dlluTkRVMFJNT0d0bWFsaDVjalJQUzBsSlEwZERWVUZwTHpSR2NXZEJRV1ZPY1U1cmQwMU5TRlZGV1doUFpqSXZkSFJZTWpkYWRIVXhSblF5TjFwME1qZGlkRTV4Y0hSSk1EVnhNaXN4TVM5MVZEWmhiSHA1V21SaFdUSmFVRlF5UVRoQlNtczFRVlZ6ZURCak1rTlZiSGhzTlZwQ2IwY3lVVlp2TmxZeFEwb3lZeTlTY0c0MmNVVnhTMU5YZGxWWlZqaHlSWGQyVm5wRVV6SktZMHBOT0hkU2VIUlpNM05KVXpGSlpscExSa1JEWm1SVFVWQjBWak5ST0V0U2JsVjFObTAyTTFwRk9HeEJWVGwyWldkQk9YbzNiVkpqU1VFM2QzbFBVMVpsVTJ0MldIcHlUaTlIVFZaUFJYQlFVSEpET0hWVFJtTmtRM1ZZUkUxWGJFbFJRU3RTWTI5Rkwxb3hkM2gwWlUwMVdUTnRWMlUxZWtGUllXOWFhM05uYUZjclowRjVTRkpZVGxGeGVsVk5NVTU2WXk4dlN6ZG9SQzl2ZVcxQmNYUjVkbTlrZWtOS2RtTjVkWE52ZEUxb1FtUjZVbUpQY2xremEyTm9aV0pxU1daR2VIWk5ibE40Tlc5bFZrOXZUbFJhY0U4dlpsYzRXblJKUmpkamN6VTFMMnBRVnpoblFtWjFWM1ZVTldkamVVOUNOVVZDTmsxVVJIVlFkVFJJUmtwUlYzcHJUbkZoWWpNdlZpczRSQzg0Y1ZGUWFWTTFhbkJGYXpaRGRreHVTSGd5VGxweFltbDVhbXAyYTBWc2JtRlFaV0UxZGtGbUt6a3lVVUV2VW5SdFVFbFNaRXh4V0dWUk5VNXViRVl3Vm1ZNVpHODBaME5rZGt4dE1EaHZlbVpyVm5aSlkyOWFaRTFwYVhreVJXeFFVU3R5TDNJclR5dDRlaTgzVG0xdlZHdzRRak5RZDFoNlMwdzNaRkY2VmsxMWMwTnVNMDQwVjJSclIydGhiMkZvWW1adk1XeHZXblpKUW0wNVZETXpNa1oyYnpaR2JVbFJUaTlvUW0wNGNHWXJWSEZFZGtsSVZHMUdUSFZGWTJadllTdHhSMjlYTXpaT1dtRkhZWEVyY0ZwTlprOWlXa1ZuVGtOTk9VZGFSMVpaTVVneFJGWmhWVGwwYVhGeWRWZFFiMHBXU1RGQmJraHdTVlJDU1RWeU1VUlRia1ZDYVd0dmFtcFROMjlITmpKNFFtVnVNbFlyVWxwRldtUk5TMnhWWjBaNE16ZFhabmxEVUZSWlRHdFJWVnA0VTFSR1UybFBVVkpCUlRVeGFFUXZkVlZXTTFoQ2VqVTFRM05rYTBSRmFuUk9aVlppTTBWc1NYRkRWV2dyWnpjeFZGRkpaa1V6VERoWlIyOURORkJPYkdOdmRqRlJjMGhqT0hWSE0wVmtObVkzWTBWYVUwZHdXbWt5TlhWVUsxTlhkSEZuYTI4eFJrdzFhVWxJWkdGQ1RWSnFaVXBvV21sNVNGZ3hXbUoyYlM4MksyNHZPVkZZU25GM2RFbEJRVUZCWlU1d1JuZFJUVkZITUVWQlFVMUJPR3R5ZVZwMEt6VjVkRmN6WW5SdE0ySjBiVE5pZEcwelluUnRNazh5ZEROUlpqTTBiMUUyYUU1aFFqaHRXVFl5ZUZoMFoyTTNRMFF5Umsxa2QwVXdLMGxhT0dWTU5DOHplREptYUhCUmFWWjVSWFV5U2toalVuQk5hRzVhYm5CNFF6ZHBXWFpyUlM5SmJpdEdZelJWTTJoWGVFVTNWV2x5VTA5VVNUWnphVUo1U1M5Skt6aHFkbkZTTTA1SFV6QlJOMUpoWkVWNk1GY3ZWWFJ0Y0hoMFVYRmhaemt4Ym5saWNEUnVVbFIxWnpnNWJWWTFUMkkyVGxBd2RtWnZUbmQ2VGtaSFdEWk5LM1ZaTlRKNlFVWnRZbGh6TjJaWlNERjNlWEpuZUZobk5YWk5ZbVZrWlRoVGJqVjRkbmRKTDJkVUwxRllRMFZ5UlVsMldXRmFkMWR1WjJ0Q2JVbExjMkZGTkN0MU9GWTBiak5LYTNCd1N6UTJVMFpOYVU5dWJGTm1TelVyVjNaRGNUTkpVMnAxYkdvM1NrTlBZVm80VlhSUGNIaGtWM1UyYWxJeGRtNXdWV1pTVVZSWmFHeHFXRmRNTjNSSlVtRkpOakprTVd0elluQnJNMU0xYld4UVpGVnNkbTlNWmxKbEsyaEVPVUZ1TmtoSU1rWjJhMVV2YjBnNE1rTkZUVEJJUTA5NGEyUTNTV0prVVhneGFIVTNhbVZRUjFwbFR5czRaSEV3ZWtaYWJVNHpUMUZQWXpaallWTTBlRTR4YVdVeFkweHhXV2N5ZDNoc2FsUnlWVmhYVjIxMWJtUmtVakkzVTFJeVFtcDFVRmhqUzNWWmRHVXplRGxuTXpkaFpqSlNkMlI2VDAxa01IRnFiMDV1UkZwUFJESmxXR0UzYUZvelZVcDFSR0psWm5VNGVtUTNRalYzY2pkMmRqTlNPR1U0YjNBM1JtSjNNbGhvT1hac1RHWkpNaXRIWkRnck56VmhaakUyWm0xMEwzWk1MMloyZUZGcksweGtSakJEUjFsSGMzZE9SR2ROUjBaQlpWWlJXRE5SUjNaUlIyODRSakJ6UWxoelFUaG1Ra0pZUVZSUVFVa3ZXVkZUU3pCSlVWRktiMUJ3V1ZFMVdVVktZVU5zWlVadmRVSjRaV2szZG5oQmRrWjFPRkZRZUZONVoyUTJiMFZIYjJ4R2IwMXdjVVJzY1VveFlVUnpObWRGTm1sVEsycFhTQzgxVjI5amJEUXliVTVuV2tkQ1oyeEhRVWxaUjBKc1kwZGFaMEZtUzFGQlZFMUVTWGRCVWtSQlF6aGxUbkJGZWtGRlIyaEdRVUZTWkVnM05uTTRkM2xqWTBGTmExQlRSV2hMWjNCaVUyOUdhRU5CYTBWQlFUQm5TbUZXVGtWcU5FbEJSRkpDV2xOR1JEZEJSRXhpTkUxMGMwcHJZekZQWVZSdWMxRkxXRVZtYkVkdmRIUXJWVFoxZUVsdkx6WXlTVTVrWjJrd2VXcElXalZtUW1KcmJTc3paRFYwWmpsck1uTXZRM2xDY1hoblVtbExaMjVQVldSSFNIVnJhV0pOYWtzeVdtSlhNMEZrU0hWUWJXVXliRUkxT1ZkRmRXTkZTWEJ5T0d0cFpFeHFiamxYVDBkQlVGZzViVWhVYkhBNFNtaEpjbk51Wm1rMGNDOXplRnB3UVZGVUswcFdXbmhUUmxoTlJXWmxUM05aVkdaMlUwaFlSWEp1WmxkSFYyRlpiREpFU0hGclFWcFlWRWcwVEZwRmJVazJkVms0Tm1ObVpXcFFMMlZvVUZoYUwzcEdiWHB3VEd4YVREWnNNRTgzTjNKRmJraHVVRTV6TDJVeGNrWXZWbkk1YTJWeU5YRTFkSFpIVFV3NVYzWm1jRFpCWldOTk5Ya3pjak5rTmtNekwyb3JVMlZ1YlRGTE4xTklTRk50U2xGVVpISXZTbXR5U0habmJWQlVhVXhpTVd4TGVsQkhSVmRhVkhSWGRVcFhVbnBUVnpWRk1XWnNNRzlNT0VOS1pHd3phbUZhVFVWRVoyZEpRa0ZCUkVFeVZISmlNVGxzTWxvNWRrc3hjMUEyWVhveVowZFRSMmRWVW1Wc1ZsSkJhRU5CVm1oWlZ6TmhaR1ZxVlhCV2RWQlliak0yUkZKbk1GcE9hVWxWVjFCSFZGcG5WVTFYV0dGcVJteDZOV2t4V1hSSFZGcHBiRlp5TVcweldYUkhXR0pxYkRFM09XZ3dOR1JEVkhFeVNXeFVXamcxWkhWSVZHd3liekZpWkNzME9XVlFWR3N5V1hSWVlqazFPU3RRVkd3eU5EbG1aaTgzUm5oRFZXdHdZVkpzV2s5WWEwWlNVMVpzUmxaVk1WcHZSWGRqVG5sSFJrRkJRVTFDT1UwM1dEZHBZbFowZERGTk4xQnpWekppWkhZeVQxaGFlWHB4TlV3MFdXY3dXRE42VmtsTk5sTmlMemMxVEZWSFR6bElSRlZ5TTBSTldqbElhR1ZFYW1oaWVtcHdhSHBoVERSYVVrVjFabUowVDFwRGNWRkpPSFZvVXpZM1NYTktWbVpoTjNBeGJYUkpkbmRIUkd4c01ETmFkR2xKU1dwa2MybFVVbkF6U1ZOaVZuRXpOelppV21JM2NtcHVjbloxVTFCbVJFbFJORGc1T0dONFZIbzNNbmMwY1ZoWVdHNXVhbTVpWlhGd1ptcG5kbGs0SzFkaVQyaE9jSGRQV25oUmNrMVhNMWQyUVZWNlUzQlhjRlpMVm1SMVVXOWtkbk56VEZvNFRUVnFXbkpWYUM5UUt6SkJkMWgzYzFaRVozVkVRa0ZIU1dkQlFVUlpXbGxYTTJKa2RsY3pUamh3ZFdzMFZFdFhhMXBYVkd3MVFsVlZiRnBTVmxaT1psaDNSRFZIUjFwdmFURjBTRll3T1daUlRrUkpNazFVVlhwT2VrTXdjM0poZUhSaVR6TnpTRko1Wkc1R01XTXpaSGM1VUV3eU9HWlllamxLU0VwdU9GRjJNVGhYUm5sRVowdDNUME0yY1VSalNtZEdRV0p0ZEVrM2RGWlZZbEZrYkdKMVl6WXpZemxuTjBaVE5uaG9iV2c1YVZselpXVm1kbXQyWjFCckt6UjJSalJ6YlVOT1ZYQTVTMlZOYkdneE1qUmlkMGR0SzJGUmNHaExWSGRLTml0U04wSktPSE00VldoWVdUUlFXRFpoV1VoelIwNTVSRkUwZDFaTGFuRkxSSGRLU3l0SFduRlJjR2hNVjNsUk4ySldkR2xYTVRkUllYRnBLMVZ3YldkS09ETlFURzhyVEdoNFp6ZGhWa3REVkN0Rk9XUk9NRzAxTjJwamVrNHdUR3g0VWxaMmJtUmtabmhzTTJjelFuTXpiWHBxUjFOVlMzUldVbVZJTkdSM1ptUTJaMUZtUmk5eVUwUTVPVWhEWldkRGNsZG1lVVJpTVRjNE4wUlVaalZTVFVWS01sb3llVmN6Yld3elQySXpjbFpzTVdWWksyVjNOV0ZKTkZWYUwxZFBXbFZ5UVdGRlpuTnFSSFJSWlVwaFRuVndUbTV3Wm1WNlJqazVVMHRSY0RCWmQwMWFTVE50ZWtRMmJrRjZRek5oYVRoSFdsTXpjM2xIZWxkcE5HMVpVVE56TTBrdlMyMDVSeXQ0T0RSNVNUQk5WRkZJZUZwVGN5dEJRVDA5SnlrZ1ptOXliV0YwS0NkM2IyWm1NaWNwS1RzS2ZRb0tRR1p2Ym5RdFptRmpaU0I3Q2lBZ1ptOXVkQzFtWVcxcGJIazZJQ2RQY0dWdUlGTmhibk1uT3dvZ0lHWnZiblF0YzNSNWJHVTZJRzV2Y20xaGJEc0tJQ0JtYjI1MExXUnBjM0JzWVhrNklITjNZWEE3Q2lBZ1ptOXVkQzEzWldsbmFIUTZJRFV3TURzS0lDQnpjbU02SUhWeWJDZ25aR0YwWVRwbWIyNTBMM2R2Wm1ZeU8ySmhjMlUyTkN4a01EbEhVbWRCUWtGQlFVRkJSVkJuUVVFNFFVRkJRVUZhVG5kQlFWRkJRa0ZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRa2hTUlZaSFFVRkJRbGRCUVVGQlIxRkJRVUZDT0VONVZVeHFhMlJSVkRGTlFVRkJSemhCUVVGRmFrRkJRVU5EUzNwSGFsaGxVakZPVmxGblFVRkNhMmRCUVVGSVVrRkJRVVJoUkRONlVuZzFVRlY1T0hsQlFVRkpTRUZCUVVGR1RVRkJRVUpuWXk5MmFYaFdUbFZSVmxGQlFVRm9kMEZCUVVGUmQwRkJRVVp3WmtSclJGcFpNakZvWTBGQlFVTk1VVUZCUVVSS1FVRkJRazFEVTI5SVJrWnVXVmhPZDBGQlFVcG5RVUZCUVVKQlFVRkJRVkZCUWxWQlNUSmtjMlZYV1VGQlFXMVJRVUZCZUZSM1FVRlNOemRKZGtodVYyRkhWbWhhUVVGQlQzVkJRVUZCUVRKQlFVRkJUbWcwWWpabU1XOWhSMVpvUVVGQk4wZEJRVUZCUWpSQlFVRkJhMFJGU1VaUk1taDBaRWhuUVVGRWN6UkJRVUZEYUdkQlFVSkhRbWN2TUdOSFlrYzVhbGxSUVVGUVkwRkJRVUZKV2tGQlFVTk5aekpTTDBWb2RGbFlhSGRCUVVFdk0wRkJRVUZDZDBGQlFVRm5RVk5WUVd4WE5XaGlWMVZCUVVRdk5FRkJRVUpNZDBGQlFXMTNMMmt5UzI5alJ6bDZaRUZCUVZGVFowRkJRVXN6UVVGQlJXNDNiRWxUZEhRME1tMUtaMXBIUW1rMFIwOUJaME5uWjIwMFpFSm9ZMFZYTUVsQldUSjNRVVZDVmtSM1VHOXNTMXBUV25JeVRVRkpTM0l4UjBwVFdWSjJWakJWUTI5Q1puVnNlbVZLWlN0elNscFhkVXBrUWtsdlMxaFVVRmxOWlcxbVZFMXZiR1JLTW1Sb1NrOUVaM1JHT1VWVEwwcEROMmRwUkZKYVlYaGpNMFI1T0daRU9EQTJVbUV3WlU1dmRHdDNUMUZ3Uld0VmFFeE9aVlpaTVZkek4xcHRZbVIxTWs5MFlUSjBNMlpQZEcwelluUnRNMkowZFM5WFduTTViRnBWZUZVMVVHUnVOVE4yTVRacll6QklTVUZUTVVWQlVrRnVjR3BOUlZscVFURjFNelpPUVRGNVMzaGljekkwVGxwcFRVOUllbXdyUzNGWmRVOWxZbEYwV21rMk5IUkNiR0Y2UWpFMVlreEdhREpNY1RKclYwaGFla1ZXYUZGQll6azRZbmxoZURaTFpXVXdVR3hNZFVKR1IwTlZjbXgzWlc1bVZYSkZRbXMwVGpVd09UVndXbXBPVEU5WFdFRTNkRlZWUzA4MVdFdFpibGRoVm14VlJWUjFUMkZNWlhscE5EaFVRbVZPTWtGTVlUVklaRlV4YXpsSU9XWjVOVXhzV1dwS1dFazBia0ZqUXpobVptWXlUVGRrYlVGdVpHMUZNMlk0U0ZadlVuQlNlbUZ0TWxaSFpYRktPWHBDWVROTldIZElRV3RxZFdWcmN5dHVWemgyZVVaWFJUVllVRzg0T1VRclVtUlRWR0pLWVRCNGRVVk5LMHRtTm1FM2FYTm1RV3hhV0VaTUswTlNkMVY0VDFkSmNsWkhUVGxtZHpOc2RtdDZSbVJrSzFacFkyUnlha0puUW5jdmIyWnJMMWhtU2pJd2FteG1XbFl2VXpBNGJXNHpaVkJ4Y0ZaVllscHdPQ3RHY2xaRVlYSmxVMVU0YldvMGJ6Z3daRUZCVGpWTFIzWTNiVUUzV0hCWUsxaFVUbkZpV2xWYU5tOXVNVm80WVhsc2IycFFjMGhXUVVoc1VHMUZaekpGVkdWSldubFlRMnRZZDNrd2JFUkpUMlZ1WldneVRXVTJiVVYwVmpOalkzbzVWVVJ3SzBsRGVuSXdWVll6VUhGMFdHZGhXUzlCY3pOelFrdGlUVlV5U0VrMGFqTmlaaXRZTDJWNkt6bE5abU5DZG1OT2NtWklOV1ZNZUVaeGVrbHBjVEpYVG1KQlUyRXlNR1J5WW5ZeGRHTkZNazFvTjBveWJtcE1NazE2VVROd1lVZHpWRmt2Ymtkc1RHSmlWMVl5Y0VZeWRrb3hjVm81ZFVaa2JtNUpNbkpYZUhJNU1YTmtPWEk1T1hGbk9VaFpOakZHS3pFeFpYcGpPR0ZTTDJKc0swWjBLemsxSzNSaUwwUXlLMFpRTWpKUk4ySktLMGg2TDAxV1psSXhabnBrWlVwcUwzQkhkbTVyT0U1YU4zUXlMM0pQTDNWb1dUZElka2RxY2pZdlNDdHdTQ3MwYkN0eGNDOTBSaTl5YkdaeE1DOXNURmROVURsSFpqZHpMekZHTDNOeUwyWllLekZzYW5FM0wxbFFLM05tT1hNdk5Xd3ZObG92TXk4NGNtWlZjRGxVWmpGSkwxVTFkRGhpZGpoblYwTm9TVUkwZGxaaFduRlZVRlpEYXpsQmVYUkJPV1IzTVdsd1RucFhVVWRyTlU1RWRGQkVNMHBEVmtac1RYSnhZMUJFYzJWSWEyTkhXVFJRTVhkaGNtYzFVRk5xWkZOME1WQXpWV2M1VkhvMFpGZ3JXbmRtYUhNdlJHNDVTek14VFM5VmFHNXBiblJKTTJGUksxWnBhVVZYZUU5T1lVdElZVlZIVmtGdVZtMTFiMlVyT0dKQ1RWTlBUbkJOV2xSTk1rNXdia0lyV0hoMFZ6ZzRjSFZyT1hoVmRtcEtaa2hoSzFCT09HWTFORW92Vlc5dVJqQlNibmxUZGtWNU9FZDVSRE5wYmpCd1pXeEdPSFoyTVdsemJIaE1aa3d6Ym1aU1pGZzVlVzVqYlRjNWNsUnJMMGwwYTJka2VURTNTRFp0U0hKMU1FNDBOM1JRWTJFclpYSkxlakZhVTBWeldHTTNWWHBQVlc0MmRqVnZLMUZ5ZVZkbWVtbFliSFE0YzJadlZqQjJhVWs0Y0Znd05WQjVheXRWYm5sWmRXZGhZVVpwWlZOa1pWUllTWGsxVjAxRmJITnliVk5QWm5JdkwzSlpVRzFoTm0wclVsazVWbFpWT0N0d1FVZ3dUbk5VYUhWS2NYTnlOelp2Yml0cGNqRXJNMlV4VGpaMU9XUTFSSE42VGxkcFVEQmlWbTQxU2pNdmVYRjJja1J0WWpaRmJqVnpXRVV3SzJKSmJXNUxkMHBzWTFGeGJYUTVTa1Y2Y1c4eWJIZzFTeTl1Y1cxMlF6ZDFSbFo2YkhOWlVIbE5WeXRGYm0xUEwwRnVaVEJvWmxCUU1XTTRVamg1U1c4NFZXazRaMkZrYjNFdmRrdzFTWFpUZERjeU5VZHhVVFkzYlZnMVJqVlRkWHBoZDFOclNtWnJPVTVKSzFwTVZWTmFOR3BhYzFSU1draE9WbGN5Y0N0RFpsRmtNbFZ0ZVdzNVZFMVVZMjl1VFdsbWJGTTViRkI1YkM5Q2NqQlFTMm80YUhKTGFscEthbEFyU1ZCNWJUVk1Sa1p1V0dGUk0yUnZjalo0T1VoNmFTOU9XalpNYlZnMVJqVlRkWGhhUXpNMVVUVjVXbmhWZG1waGRsVlRUREJTV0dkTFMxbzViRW80YkU5cmFtMXdMMnBYY1hKMFpGcFhWMmRZVHpCc01tdDFjRnB3Y25rMk9HMVFlV0ZwVkcxaGNWVnJWbVpHVjNKcWNGQmlOakp1V0dkSVpFWllka2sxVUROTWVrVnVOWG96WjB0eFdqUTJXVzVHU3pCRVZsZzBNeTkzZDIxSGEyVk9jSFJyVVU5emJrWkZXVkpOS3pOeWJUTmlkSFV6WkRKclNERmlRM1Z2WWxSbGMwVmlLM2QwYUhOVlVWSkZNWEZITVdveWRIazJLMWhRVDNwR05HNXBkMFpHUTJSTlZXWXZLMEkwWWtWemJUVkhabXRqVTNreVNYcHZVa1ppUmxKVkwxQlpSak5UZEV0M1ZUZ3hSMkZUSzFSd2JUaFZhVlp5UjBoVVYzbFNZakZEYjJKNEwwaFBSV1o0UjFSUFV6QXphalo2Vm1KWU9Wb3JNbkZzUlhCeFkyMDRhbk50V1U1elQyRktPRmhJVkhWT2FsVjFjVTFLVUU5cldrTmtibGREYUU1WlUxZDZXa04wZGxVNFNHRnBMelZKUTBjMFUxRkhiRlk0WVVoclVGTTBSalJ2ZWt4VmVUVlFkVVI2YlRodmFreFJNamRtUWxGTFFYZ3djbUpSVG1OeFZ6RlFNVmxLSzFKSmQyUjZkREVyWm5OaVZYUmFZMm96U0hWcmVuVk1XazVxYjNkSmVUaFFOMnBLWkVocU5HcEpaMEZJU1ZGYVFreG5aWGRHVDFGQ2VVTmFRa3hCYURSQmQwRnpMMWMwWjJsR1RWZHpUWHAyYkhKMGVWZG1XbmxXVnk5S1pUZDJOMnh2Vm5sWWNETk1SRXcyVlhoWVozRk9PRlo2WTBaYWNYZzFjVWsyU0dnMWNteERPV1pEUzNJM1ExTm9NVTl6V0dOdFVHTXZXUzkzS3pWME5XUnBRbXhMYUVaa1kwVjNaRUZDY1RGU1dHaEdOek5GYUhoME5uTkJSSGRsTkdkQlJXVmtOM0oyVUhwbVlWQXlUMmh1TWsxb1RqSnZXVnBqVldOTlZUaFpTVFZDY0doamQxRnpWVVp6UlhnM1ExSkhVMnBJVGxWQ1RtWk9ZV05rWkV0WFJWaEJNVVp6ZUVGcU9HcHRWV2hRSzJwTlZYYzNhVTk2Um5NNE9HcDJlblZRTDNOTWFUazBlVk4wWlRnMFlWUmxUV3B1UWtSSlVEVlRSVGhyYzAwNGJHdG1kMEpMT1VkM2FuaEdlVkZvUVRZNWQzSjNaaTk2T1hkblFuWnhLMFZCU1VGcVFVRkJRV1ZPY0dwWlIwaFNXWFo2UTNkTmNrRjNSM0pOWTNCaFFtZFhSVmRvUjFrMmVUSkVSVTVKYTBKRFZGRjNUVXRSUkV0WE5HY3haMFI0TTJZek9UTlNhMUJOUkVRNEx6aDJVaXN6WTBaQmQxQklVRFphZFVKbllrY3JVMEUxUm1jdlYySlZRa3RuV1VWR1FVMDRWMFZCYTBGbFRtOUdkMkpGUWtGVlFWVkNZa000WmpaRFJrSndha0ZWUVVOblFUUnpZbEZEU21sdlIwZHBXV0V5SzJnNVkydzBXSFVyZGtWTGRYSXJNR3BETmxadVdrTlhiM3BDZDFGSlpsQTRNRXBVUzBWdlVTOW9RemhJWjJkQ05ESnZNazFPVlV0R1RWRjVRVEI0V2pOa2QyNTFVSE5IUTI1blFrOTNXV3BOTTBsSlVrZ3pSak5rTWxwalp6ZFFaMDUyVlZCU1VtWnplR1pWUkVGSGJHTkhabU42VldKNGJFOTRSbTFqYUVWVloxQXpZakZvTVhGblJWZFhTMHBPYW1OclJuVjVNVEJzYkVveGVWWnFSVzh3VW14a01GRTVSRTFCUzJwTlVqVjZUVUU1VEhOQ2NtSnZjVXRxWm1GTU9VeFhZazVFVUVSSFVVZG5NR3BPU1haQ2FXbHNia3cwV1hab2FVVlpWeXROWWsxNk9XZFRTRFJyV1RrMWFIRmxOREJyY1RKUlJpOXlTek15ZGpkM1JEQkhhRE5SUm0welUwVlFWbFJJTTFaVVFqZFdVVkJrVmxOUFlWVm1SRThyZGtoRmFIaERhR05uTkVSa1NrSnNkbXhIVXpWbFFVVXJabFZRYjBGQlFVRkJRVkZCUkVGQlowRkRaMEZPUVVGbUx5OTNRVkJsVG5GTlpWRldRVlpHYmxrNWFqTnVNMnAwUkV4amIwMUpXV3BCVFVSQ1JFOWpVWGRrUldsSVRXcHhRVkZZWlc1RmFsbHdXbGhsYVdkUGFtRkJZVFp6ZDJKaE4wRnZjWGd6WlZkdGJsSjJRMGhRTlhwYWIySkdhbVl2TjFCd1p6ZGxaVGRpTnk5Tkt6VXhORXRWZFhaSVptZEJOekpVTmt0d2FWcFNSa0pFVTFWMGNtUlJLM0J0WWtkVVNVVldjVXhSVUVsSE5UTjJTMGRET1ZCMVpIcFVTM2RaWTFwbVUyVTVPRGhMUkVwM1ZraFNjRXMwV0U1aU5rcG1hR1JrVnpWWVNIZDFUR0ZSUml0QlFuaHZhbTlTYWsxU1VHSktMM2xKV25oTlJISjZWMnBoUzFsUUwwUmhjVnBSYkZkVGMzZDNiWFkxY1d0TmJWVkNNVk5YYmxWWlFXWjVVaTl6ZDJaSFMwaHlZMlV4ZURaSk5XbFdPSGRaUW1GWlJtOUpaa0ZKV0dGMlFXdDRVamRKYjBZNVQyaHFXVTk1VURkMFFsWTJVRXB0VGtFNFkwcGpaRzAwVERCYWJrVkpTMk50ZUVkc05FVXphRk15Y2tkdGRHcHlSR3M0ZVc5YWVXOXRVVlY0WTNCRlNYSklUVEpPYWtWUlFVcHNOMmcwWlc1cVMzQkZaamRGZUdRNFlWZEZSSE5PWkdaSmQwMU9SRFZ2TkM5cGR6TXdPRkptUjNod1Ezb3JSMXBGTVVaalJuRXpkbTFhV2psa1ZXeFFVM0IzYVUwMlNsUllXR05xSzJWTFF6QjVSRVowWkdzeGQydHpVWFZqWmtWT1MweExObUZETW1wM1VUWnVOMFJXV25WYWRtcDFXV05RVFdjM1Z6TmtUa1ZJUmxKdGJEbG9ZM1JQVlRndmVFNVJjbnBqZG5kcVdFa3haVkY0VTBkbWRHZDVXRk5qUTI1R1ZYTnNhamw2YURVM1FsWkxiSHBNUWpoU1JsUlZhSGxvT0ZKU1owa3dNbk5QWkdkUGNWSnplSGw0V1VsQlppOHZPSGgyV1RGT05qRmFMeTh5YW1nd1pGVlhSbWhWVkU5cVNYVnRVekJaSzA4d1NUVjBkUzltZGpaa2NYaGlNM1JJVmtkb2J6Rk5lbTlMVUdKTFp6ZzRMMll2VEdzNE9EaG1jazUxTTNJMlQzcHpNazUyZURWTWJqQlVhR0pXZURrck9YUnRWRW8xT1RrNWJrUkVNMjR6TjA5MlNDOVlhRXhDTDB4SE56ZERabk5OUjFaTWRWWkNLMHR6ZFVsbGFUZEJkMXBPZVRoTGRFRnlRU3Q0VFZOS1ZrOU9WbEkxWlhSRWRGWlhaVkZIVjJacFUzRnJZMFpHV21RNVMxSlBja1JaVUZkVVMzTkdXRUpJUTBKSFpuZzBUVEpJYVdsaFRYWkliR1JIY2pBeE1XMVRPVXBRVkVGdVRteFBOVmxWV0RBNFFVd3lhRXRLTkZwVmJHMVZlRkUzVUZoS1psWTVSMjh3TW1od01FMU1XSFZzZVZRd1ZGcGtTRGRRVXpCV0syOUxaREZTTldWQ1VYUnFjMnBhUzBJdk9YcHNObEpJVm1KaFQwMTFWREJaSzFCRVZuTlRUVmRQU2tsdWJ5dENWV2xHWjJwb1ZtaFdTa0ZWTlhWaGMzRlVkM0kzUjI5SU9ISjNjaTluUkRNMU0waDNLelZuY3pOck9FVTJSVWwzZEdsbk5YUjVLMnBhZFVRMmJFNW1lVmN3VDJkeE5VaFJRMEZSVEc1elpIVlVlbkpSUVZCdk1qZHZiSGRDZWpSWmFHdENWMGxaUVhsNlJFRkJaekJvTlVGdk9XVkVlVnBQTkZKcGNWUkhVRUozVmtKVVdHMTJjRTVWUmtKa1pXdzVLMVV4UWxWSWNFbFlVVW96Vm5CalF6WjVRbG95WXpNNFFVMHlkR04yVWpFclozUlphekJqV0UxYVRUUm9hRk1yYzFKWFYzaFBWM28yVm5CTlpDOVhhelpZYUZab1JtOU5hMk5pU0haVFpUWnFhQzlFTWpJeVFVeFdhV3BwUm1GMGRrRmtTVmh2TjBGNVUyZDNLMnRuZDA5aWRHaGhRMXA1VFcxcFptMVRZMjFNWkhkT1ZrVkJkRFZ0UWpCQlF6TnNORVZWTjJkRVlsVk9SU3RXUVdreU56WlBkREpzUlVjMlIyZElXRmhwT1VoUU1FSXhiRkF6UzFJeVMzTnFXRko0ZURSRlVVVTVVUzk0VEZCTk1XbDNNVlZuY3pCTWJIWkZkbGg1ZVRsR2VtVnZPVWhGZFd0NE5FUnhUV2REZEVwU1VHdDVaMVpGVFdWQk5uVnVlbmxLWmpGRmFrTmhWV3RsYWpGbWQwcEVNVTFhTldWamNtMVlXamg1YVhZMVFVUlZTSGROU0RBNE1XVlJSa05CU2poeGRqTXlUR2hLUjFWSlZVZFhPVXhITjJwQ2N6ZHFSRTVxY0ZsdmNtZ3dha053WTFWcVkyNXRjMGxaT0ZWR05HMTZVMGRxVG1kWmVXSlNPVmhHVmxNNUwxZHdhaXRUWXk5b2VuZHdSeTh2UTNGNVl5dDJPV1pLWVZkV2FUUXdhRTRyTVZsMEsyVlVkVzVHZVdwMU0zZGhTM015WmxGeFluWjJiMDVJTms5elFtTmxhRkJSYWxreFNXbGxNRFZuY0ZVcmQwdHdabTlwYVVJd1NVRlZUWEUxYzNKb2FFazBXVkJNWjBsR2JUTnlZVWc0YTBSSVNXWnZjbGRaU2tOT1RsaFdjMjFWVmtORFdpdHdSMDVWYXl0RVQyNVpZbEJGT0doQlFVUmhVbGROVVZaQ01FTndkV3M1ZDJkNFowcEhUVzF2UnpabmRqTlNWR1JZU21Ka1RtRXZXV1F2VjBJM1RHSk1lRk5zU0VzNVJYUmxTREJtWVVOck4zUkVaR3d3V2t0dk1FZFpNMmhWZGpZMlpYRnhlVFZtU3pCRkwyRlhTRFJEYW05TlRteHBMMEo1YjJkelNYbExWRUpKVDBGdFMySjBVbFZMYUVSTUwzcFZTM1pIZFdveFNXdFBaeTgxUzNWVVZIWlpjeXRtVDJSeGIwaEZjRUU0ZWpONmFWVXlURTl4WW1NemVVUnVia3c0Ykd0eWFUbDVlVVpFT1hZckt6UXlhelZQTVV0YWJsQk9aVGRrV0ZCMFpYVmphbWhXV1d3d1lUaFBPRVYyWlZobk5uQnVOWGt3VldWR2FYWkRWbXAzU0hOdFNFRXZZWHBvVHpOSVRsZEtUWEJ2VTNGd2IwUlZVVU52ZDJOTlpsWkphVkpsVFdsVk16TnNXRWQzY1U5RVRqRkJVbHBDYVdkNFdHTXlVVEJWWjBkMlYwSTJRVGMyWnpGR1ptTk5RWFJMVkZwcGJYUXdPRmN5VlM5cFpEQkxOMHB6VVhneGVFRk5UMWRtWm01dFRVSTFTbEJLYjFkSVFqVjVlRFppVDJ4RVdDdGpXSFpTWlZkUVZFNXFUVXM1T0RRM01pdGhLMWh3U0hKQ1dEVlVkbGRrZFZjd2NUQTFZall2V2l0WFZ6RnVaREUxVWpGc2QyTXhOM0pXYVU1a1lpOXFZVWRXVTJsT1dtNVpXRFJDTVdWaVJrUnNSRmhzVTI1dk9XZE5XVkpOYWtWVGNXRnhTRXMxTVVsc2RFSmhRVzlIWWxKcWJFZE1aM1JaV1VwMlVXWjJkV2RWTlVaUmJFOXdPQzkyTVVWeWNUVkdZV3hPUXpObGRqVnBlamRaV0VoNWRXUlNXalIwYmtwSVl6QjBlVEl3ZVdJMlNFcFpNM1pxT0RnMFQzQlhhbkJJT1ZCU01rbEhWek0yZUhwdVoyOUZUazgzT1dWdmRXZzJhRU0xTVVoWGVscExOaTk1UkRaM2RFTnBUR1Y0SzA5SlJYVjZhRFJOYjBKQmRIaEtRVkJFWjNKT1NHWTJUeXRWY2pkTU1HMVpNMUJRZVdaWmJUUmlkR1J6V0RWME5sRnJSVGxwVEc4eU1FSjVZM012VlVwak1raExPRWxOV1ZwclRtWkpZVzAyYUhGRmEySldSRVppVFhKS1ZXNWliREozT1ZCUVRpczNObk5wUmpoa1J6RkZWbFpxVmpCbVRYWlhPV0oxYVRaMVQzUTFlVFJLUVhGTWFYUndRa1pGWVVWc1oxY3pjMnhVYkRkTGFGa3dXbGxyWkdscVpHNU1lblZVYTFoS2NXVmpOakpKY0Vaa1lteDBhU3RTTjBaNVVFZzROWEZoVTNOUWR6UTJOV1J6TlhCbVVuaG1hMW8wVW10U1JtaFpVbGRoUjFwbFUxUmhjVmRPTTBkTmJEUjBTVWRvVUdveVVsWTFObTVqUjBwaFUwNHdjMDVIWVhGTmVUWkNha0ZUU0Nzck5FSjRNMGxpVldGaWVtaG1aVlJQU0c5WGVXTXdjRTVtTXpWc1VqbDFURVJ1V0U5b1VIQk1UaTlhTWtweGNVTnFZMlF3VkdwNWVHTkdWVWhhTW1wTUsyeDJRaTlSUW14NmEzVkNVVkJ5WkRNeFJIZG5NVGgxZHpZd04yOHljRVJuWjJjMFpHRjNTRU5oV0ZST2FTOXZOVkJDWm5sSVZsQjRSMHczYnpCS1JFbDVTa1JuTjBkcmIwbDNWMjAzUkd0cloyNVVUMFJzTXpCb1ZIQlVOMUJMTUdsM2VtUkVUMWR6WTJsNGRFMDNTbk5pWWswcllTdFRaVkZvUkV0Sk9VcDVUR2hZV1RCM1RsWmlMM2xyZUc1MmFXUldXVUYwYTBGQ1kwSk5Nek5WWjNnMVV6WnpTbTUyTkVsVVVtVkROMWsyWjJSMldXNHhSbTlRZW1wQk16bHhOWEJ5UldWUlJpdERhVzE2TkRGSE1IVm1iMjFRV2pKV1RucGxMMmNyU21aTFFWTnRVVll2VmpKeVZGRTJUV1ZaUVhOSlFrUnVTR3RIVlZKcGMwMVRWR05rSzI5UFpYRmhjM05TYmpacGNXOTNiamhKYzJ4U2JIaHZaVFZWV2k5ak1pdGhWbFY0YnpsSWVuaDViMWh3WlRKa1IzcE1kWGt2VEROUVpsVndhVnB2VTFwWWNDOXdOSGxIV0dVdmFrMUNSV1U1V1hoYWJXVm1hazV0SzJWWWJXa3lNVE5UVUhobFpuUm5WVzR5ZUc0eWVUSjNkSE5QUkZkcFEybHBNVmxPUW1KT2RXTnBaWEJaUzI4eVlXODJaMkZTVDJoQ2QwNTBVMFZ4VkZkcVQxSkliRUZITmtVeGIzaHlVa1JMUlZkU2JWTm9hbGR2YnpKRmFtUkhRalZSVFhjMVVGWldaSHBQUW1Oa1JUVnhVMFp3VkhJMk5HY3pOVmhsWmt4b01XOVRLM0I0VG5kUmR6TkRWV2N6YldzM0szVlFiMk5tVWtoWUszQTJkMGc1ZGpabE0xVndSemxZVUZWVlNIcDVNelZJWjFGUVptZHlhM0kwT0RoNVZUQnhlamxRVTIxNGNtcHJUSFpEUXpNMlVqRnlaRFZtYkZvMFdrMWlOMG94ZEhWTVRHSnJiM2RMUW01Vk5YVmxUelo0TDBGMVFYVTNjalJZWmxKckx6SllNRFo1V1ZCdE9EQnBiRGROWnk5Mk5HSkpUMVFyY1dnMU1FaHlXRmhXVWpsbFVHRkxiRzAzV1dSbE5IWXZWMFZsVFc5V2VVdG9NM1ZsWTBkVlowSlpRMWRSUkVWMVNYQnhTak0yT1Rod0wwMXFTMGhyWms5cFREVmlkVFl3WVdSdk5scHhXbUUzWlVGTmFXMUlOMjQwWmtOSVNFUkxaVVZIY1hCWU0xTTNRMnhKVVdKRWFFVnJZVkZKV1hkblVFMTNXbUpZUnpKQ1ZtRk5TMjFHUjBkdVJFRmtSbkZPV2tWSlJFRTBSbTFWYkhkRGFEUkZTazFCZFc5dWNHVTBWbXhJZW1NMFkxTkVXUzh4ZEU4MEx5OVNUWGRQWW5OMFdraHpkREl6Wm1jNGRIcHRRbHBPTVVwemF6TnNSR1JtZWt0Q2JsWTFXbFkxUTJwaVJWaG1PV3RzYTJ4UWFISlZTR3hhVmtSUlYzTTVWV3Q1YWxBclpFUkNWMmh3ZERCWWJteHJVbGhRUW1oV0wzRndLMlpHYm14dWVVeFFkRzFqTTBGMmIwazJWVE5HT0hsTFQzTlRZWHBrTjNoWlZrMVFVVzExUmpWeFpYUk1RemhCZUZrNGRrRXZOV2RwWWxCRVRWbEZZa0paYkROaVEwd3lWRzlqZVZaRVJVRlNhV3BCV0dwQk9ISnRjbWRIVldsME9FMDVPVFpPUW5aeFFYazRMMmt3U1Rjdk1Xc3laREZxTXpjd1IzQm5TWG9yVDNaMk5rOTNhSFJ4T0dKMlpsZHZMeXR1YVd0UlVFRnVRVXBGU0hZd2JteHhaVXhaTkRoc1IxZHJUeXR6TDFKTE4xSk5kVkpQUjB0R0swUXJWM3BtWVZKU2VrVjFiSEF4Y0ZBNWFXcGFhRUpQVUhKM1kyRnlkRVIwWlVoTGVEaHVVM2xrWmtWdmVuZ3hhRE5JUWtWQ05GWnpSMlk0VmtKRmQxcFRha2c1UmtObGRYcG5XazF5Ym5VM09FaG5NVEU1V1V3MGFEQjFLMU52YlZkMk5WcDZLMFpHT1RoVk9XNXJLMjg1TUVWV1lWUXJhM04wYm5OR2VreHNOME00VW1WclRtbG1SVXh4ZFZJMmFtNUNSVWxpUkdaV1FuVTViM2t4Ykc1cVEySmlUVUZCWTBSUU1IUmFOVEpIYkRndlFYZDJSR3ROZFRWVmNHMVBWSFZuTlc1eE1WZERWRzF0YkVvNFkwcE1kelJTYTFWWFFYTkVWbGREVGxkeVpXRjJSRU14VFZaTVkwOHpTVFZ3YUdKU1ZIUTBTbGgwWTNrcmFFWnNabkUyU2pkVU1XNUpjbFF5VmpOUVJqSTFOMHMwV0ZNeVFVUjNNbVp5UlVKelFsWXlXVVI0UVRCblFrTjROR2R2S3pORWR6bEpRMlE1UWpsU00ydFdibkZ3VkROelZGZGxVR2hXS3pSRmRteFpNbUZ6ZUdzNVprUmhjblJyYkdka1IydFpUSE5rTW1wbVduRm1kVmR6ZDNJcllWbE9iRUZwU1hWYWMwRXdjMjFZYUV0UlJXOUpOa05FYTNCVlZub3lXRFJuUW1veFl6QkJPWE16TWs4MGRFUmhZWHAyZUhGWU56aHFZWEpUVERkU2RFcFpRVFE1YWpaaFRHZHFabFZQTkhsWllXbDZUM2hHVERWNFIwbHBNVzlSV1VSaFVqUmtUMHhaV21ZMmJURk9WMmwwVm1wUkwzaFJLelZyU1U4cmVuQjZNSEZPSzFobFZHOHhNV3BWUVhGbFIxUlZSekJJV214elNrNWxXRTFUT0RGbFNrZFlhV3BVY0ZwcFlVazJWMUpKTUhNMVpXNXVaRVZsWlZRME1rOUhOSEpqUkRWd05pdENNRGcyVW5SV2JrUklWakZZTURjck9ETXphM1JITXpVeFFrNHlOVmhHZHpoQlNYbFFaa0ZrYVV3eE5VRndNemR6VW1Od01UWjNSR1JETDFOQ05uaHZNRkp1VTFOaFF6TkhiSFYxY0hWQ1pIVmpaMHRWYUVsTGVESkJSVEZWTkV4NlkyVkhlbVpwTVdaa2FEUmhRbTh4T1cweWNWQk1lbXBMT1c0eEwwa3ZWa2t2Vlhkc00zRkZabFl6TjI5WVdsQllNbXQzT0ZGQlpVbENNV2xYY21SdlJFeG9RVUUyTHk5R2FscFVlbkV3UldrcloyNDVjVzFsY3psNkt6UmplSEE1VUN0cFMwNXZRbThyU0M5NE5sSTNNbUZTU1RFMVVWWlhRVFJTUVUxUE5sZ3ljVE42YWpad2FtMHlZVUpZV0daM1JraDNlVVJLY2xCWWVqZFNhVlF4VEU5eUt5dG1TR1Z0ZFdKSlUzcHNVR2xxZVdWV1pqZGhjMkZ4ZGtGWFl6ZEdOazFVUm5abGFFMW1SazF1V2pSS1VUUjJZMU50WjNsWGFXTTFWVlY1VVV4NVNFUnlZak5qY0hSMFVrazBlaloyZWtkclRFUTVNbmxQU3pReGVUSlFlSGdyYzNGQ05VOUROV2cxVUc1c2RteFFNazR4TW1Od1ZIbGhRM1EwV0hsdFoyUlhWWFEyTVRsUVlsQkVkemxRYlZSTVpVbDVWelZhYzFCUk5IWm5XbmRXVDJwcmJHaDNXV3RVY2t3d1lWWTBTbnBoUVN0TllXdFpReXMxTm1zMlZsbFJVMElyTml0b1ZVTlpUV2hpUm5OVWR6bGFNRFJqY25sc1JtUnNkME16U0dsUE1HOXNVazV4UjJ4SU1YSkdNbXBJYjJJelZWQm1XRVIyTDJGck1XNUVUbk16UzNRdk9XVkRNRkZRTms1UWFtbGhaVGN3T0RaV1JVY3ZWRTlVWjFBcldUZGtWV05EVVVOWlRISnVRM2xyVjA4clZYbzNMMU5RYmpoUmVFUkhjM3BNV0RGd05YRmlVVUpETVdaMWN6QllhbGhyZFV4d01EUjJURE5QWjJwU1FVeDFUakkwVjJ4dFEzWnNhVU5vZUdadk1HdzBhbWxYT1VGdFFXSlJia2c0ZFd0cFZYY3JUbmQyVm1aSllXVTJVbTlpTm1SUWQwcGFObmhNYUhJMVJrNVlaQzlGWWxocFMyWlFXVk5tZW1wbVYyVkVkMDVoZWpSUkwwTlZPR3BqTHpGMmFVUTFObllyTWpoMVlVVTRXR3RxT0daUVJtOUhkR0psTlhCVFZVNUdZMnRVYTJoUGRFdGxjbEp3YzJScmNGQnFZbVIzY1ZZdmFsSXhVbEZuZVUxQlRXcEhUV056VVZwSmVWbE5XblZKTUdGVll6TnVORU5tYTJWM2RHdG5VRkYyYTBFNGMxVlhOa0ptT0VSWWJGcGxhSFF6UzBkS2FFczNPR0pzWVhoQk9IQjNRVlZHY0VaQlQzbHlPVVZhYzFCSk9VWjJORWhRWVZCT2FXZEliMFJRWkdkc1pFZzBUbFo2VGtSbmRtdExiVnAxU1VOYVRTOUpOMVpEY2s0MlV5dFdhMDlhZEZwb1lqRmlhRFZhVkRKTVZXbG1jR2hwVkhGcVVVUk9RbGxCYlZObmJVWXdTQzlDVVZBclpqVnVkV1lyTkM5Mllsb3ljbFUxVjFCeVVEUkVWMko1YlM5VldXTmtMM2x5UmxWdlFtRnBaMjFYU1UxUFNFWlFRM2RwUjNaSk4xUkVOM3B3TkM5UFZWSkhTa3hTWjFweVJuWnhjRzFqYkUxUlowVnllR0ZVUW1wb1JHNVJVbGQwUkRkU01WQm9SR0ZWVEhoMlNsSk9SV2QyU0c5emF6SnZaMFE1VDB4U1NtNXZOVWR4ZDJ4VmJVdGFlbmxEVUVrNFJHOVJXa2RUVFVKTWFYWk5jVUZ1TVcwd1VYUkNhVzAxWjFsaVkzZFNVMEpaVjJscmVXNTZWV3hSVkVSTmEzWmFhemhrY0dZcmJXTnVRV1V4YnpkV1Z6bHBMMEpZTDFKa2NIUmlSREJ1UzBOTVoycHlUWHBIVmxKalNHUnZiekZ3U210T05scHRkSGxqUVVORWFYWldLMVJPWWxrclkwbGlPRTB2U0dFdmMyRmtkMloyVFVwS2RWQnpUekJ4VkZSeU9EVmtjRWRpZVdjclpqRk9TVXR4UXprd2RHUTFjelUyU0hNME0wbFlOV2w1U1ROaVIxWTJSQ3RIWlRkcFVsazBaMUo1YTJKa1JURjNjR0ZXYldWQlVWbHlSbFZJYXpSdmVWTnFaVGRGYUdFNVMweHhNSG92VjBSRU5FOVBlWGRrWWpaNmRXMVVVazUyUVhjMVNqWk1NVUl6WlZCWFJ6bFNlRVF4UWtKaldYZ3lXbWMzTlVSUU1UQlpiM2h5VTJkMFpIaEVTbGRJTlRVeFkwNWxibE5xVVM5bVNGSm5hV05UY2tKWWFEbHJUWE5zVDI1elYyVXZaMlJOWVVkblQzcE9NelYzT0hKdFpUZHpVems0Y2poMlQzQTVRM1JsUldnM1dHdEtTM296T0RGc2NuVkhlbXQ2V1VkNFdsUmFWSFUwTW5SVk1UVmFWbVJsVkdKSFpscFpNbFpHWmsxTVUyMVdSSE5yZDJ4c1VTdFNSR2M0YXpoemRWVXdhMWRLVGtKc1NqRm5UVlpaZG1weE1sZENkVEJITTNJd04wMXlZM1ZvVWt4UVZscHVjMFZQWjJKYVJsTmlPV1prUVhWeFVISXhNaTh6YUVKWlFVWk9aMFJ2VTFOWFV6WlhOVkUyWnlzNEt6ZDFMMFJXYzNkUU9UVjVNMll2WlVOTWREa3JPSEowUlc5YWFrdDRVbXR6VG5kb2Iwb3Zka3BDYmxWelpYVllja2xHVldkblZFNXdOSEpXVW5CVFNpOTFTMFJwZDBsUE5WRmFaV1ZxTlcxV1ptSXhkVEk1VTFadlFXSjNWMDF3Ymt4Mk9USTFjVTlqTVU4dlJWSnJZa0oxTlVaM1ptOUdaVE5rTW5oT1Yya3pTR2RuYm5KdlpUQTBiR2x2WTBvclFYUnNTRzRyVUZoYVdVd3pkMFpRVW5FNFpVaEdaVll3Vmxsb1dVODNaR0o2ZWk5RVozZHBWRFI2UjJ0UFpubG1RMlowWldGSlprMXhhek5pY2pnNGIxVjRkVWxLVG10VFJWUjVSMUpvUWtFcmExcG9TMDlUVmt4b1MxcHdORGxzUVVaVWJVUkZWbEV3VG05VmFYTjVXVFZ4WnpoTVdXRndRbVZ4VFd0aGJuaFRTVXB4WW1jeGJHWXpSM0Z4WTBGelVFTTFhR1p0ZGs0MWNVMWpUMGhDTVZwamJXMWllalExUTNwcE5rOVVUMFp5TWpWcGRIWnZhSFp2TVM5dlZFTTNla3haTDNaRE9ETXdNbTVETkhKTVV6aDBWM0puU1VkbE4yWnNUR1pDTVVSRVR6TlVMMEozWlZwUksyVk1SRU14WjJSa2NrZEdTMFF2WnpoRWRVRmhLMjl5YlcxYWFuTklVSG9yV1VWME4zVnVRbVp2U0VkVWJrZ3JZMUYyYjI1TGNWTnhkWEZzYkZWV1ZrOUZOMGhOVFRSck5GRnZkekE1VkRBclJWVklVVzF5VlVwVllVRnhjRXhFTmtGdWVrZHhVSEZsTlUxMlZuazFXakZQYjNwcFMzTXpXSEJ2Y0RoSmExSjRMMlZ6VlRkeVFrMDJkV0ZyYXpkWVMyRTVlbFpNTWpaR01IUnlXbWc1YjNKME5XcERVemxsUjNkaFZtYzNhM1ZaVjBWMWNtbEZhR3BJZVd0c05VZEVUSEV2UVZGSEwzWjNSVUYyWms4M1dVZHRVMjlQYm1ONVdsazBVbHB3ZDBScWJGQkJSamRrT0dKMFN6VnNiMGxhWkdsSWVHZDVSV0l5UWtKWWRGVjRhMDlGYlc1VE1HTnVUM0IyTldGWlUxaDJWREpYYlhnemIzQlNTbEJoWW5oT2QwTmllWGh5TVZack1FOW5OVzl4WjJkcmRIcFVWMGx6VVZCdmRrdENlRGhrYUN0MFlYaHlaMGRKTkN0c1ZsTTFWMjFTWVdkNVZrbHlSbmRFWm5FNVIzUldhVU5UYUdGdmQzVTViekZTVTFabmNYRm9iMlpJZGs5a0wycERhR1ZVSzNBMFNYQlFjazVZZVVkV2JYRm5hbUpaU2s1WlRYUm1kbGhwTlhGSVFqY3dORUpNWVcxVVpXTnpMMEpxYlcwMlozQjNWbGxUZFU4eWNqQnJkVGhvYTNaMlJ5c3dhRzFsWVRKbk5HVXdjRFZIU2paaVdDdEhWR05NU2tkUFkycEpaRE55VUVWcFkyMXdlVkpSTkROdVJWZHZNeXR4VmxkcVEydzFMMWw0YVc0M2JHZGlSVk0wYzJKdFNYa3pMM2hSYm1KaGFFNDFXRmhIVUd0bFNEZHNORWhDUmt0elVuZE9hM2xVTkV0dlNHbzFZekJoVkc1QlYweEtkM0JxVjJnMVpsVnVOWGhrWW05R1ZEa3pOM1o1Y0dKdVVUUnhTMWR2YjBoWVIycEtZbWxtVm5WblptVjBTRmN5U21sMGJucFZaVzVoYzNGU2JXUnlXREF4VFM5UVZqSndjRmd3YWpoblYwbHhUVzFWWVhOYVdXOWhlVE5yUnpRMlVrbFRSWEJRV1RkTFNrTnJkMjVXVFV4Q2QxVmtiR2Q1TVhvMk5VbHpXREpMTUdoM05VOHhZa1pOWVc1QmIzSlFWMFpZWnpKc2NWTjJPVlo2VDFvMlFtSTJjMWdyYzJObWNFMVNNMGRsVUZGeVoyVlBNWHBXWW1rNFNFaGtaMmhrVjNGek1tMDFSalZhWmk5SmFqUlhTWGt4YURKRWRFZHBWRWhJVTNkck5uRkZRbWhvTlZaVGFubHNRbWRFY201SlFUbGxhRzVNTm1zMUwzVm1SemxTTWxaRWVtWllaSHBzY0cweldXaG1XRTg0U0cxM05uWllOMDFIUjFsUFVEZEVTa1l3Vkd0Wkx6WmFaVUZHVW1wVWRGUjFVSGRtWnpCMGFVUkxORkZFTVRjNU5EZzJNbUp0WjNwU1VIQnZUV3BoVDFGUWNIaEpNRWR6VnpSaFdrZFZkMHR1ZW5Gb1l6UkVZVEJtTkhFeVpGVlpkR3M0Ykd4TU0wc3dXRXBKWVRRMVdHNUhabXhzZGpKNFprbHBhMGg2TkZGSFRFMXJRbVl2YWxoV1ZtTjRVMlJqUlhwdk1IcFRZbkZvV1VkQ2REVmxTRkZ4UkdWVU5ubHphMFpWVlVZeUsxRXZPVzFtTTB0SlNXbGtPRGRQU3pWRmRYbGpNMXBOWjJVMFJqSXlTa1puY0Rab1VqWjROR1poUW1kbVlqSnpXbGhLUnpOaVdUSmxlWGgwUVM4eWJXVTNia3hTWWtaV2FGQTVUbTFPTXpSVVZUSnJiVU55TjFGMlFWUlVSRmRWTW5CRk1rRmpaVVpKTms5RE5ubHpSaTl2YldKd05pOXhlazVwUWxGb1JXSjVWbk50UzFNelpUVktVbmRRV1cxWFNtOVRabVl2TlVoMVZ6SnNSMUZwY25kMldGaENkMnBLTUhkUVZFRjZNVVlyYTIxRk9XUnNjbTEwWkRORWVYcDBhV1J3Y1V0TE5tOXpWMWhKVFdOUE56RnRhU3RLTmpFNFMxcDVXblJQY1hCR1R6RlZSR0pQVDBsV1dVZHliRzFxYTIxcGMyRnlSa05GYzBVelUycHNiM3B6YlRBM1Z6UlBhVGRIZEhvNVIzbFplR05YVW1Fd01qQXlObVYzWW1OT1RrdHlOWEJ4VVVVNE4wMUtjRWN4Y0ZOVk1FNXZXRzB3YVhGeFExVXlhMmhIZEhFemEwVnBhalZGWXpGcVYyUjNiV1V4VjBvMlNuRmtOM0J5T1VjeE5GSXlWSHBCTTNnMU1HczRTU3N3VEc0MU9UVjVaSGxaTUZkTFRYcFRablpIYTBwWVNWcDNhRlJyTVZadFNtOXhNSFJNUm5sdVpWbEhUMVZpVUdsMFMzaFhXWGhqSzJSWmQwVjRiR2d4VGtwdlkyazJkVTVaVUVKdk1tTnZVVVJ3VUhOWlNtVTJSM0phYjNSeGEwMUxVSGN5YWpGcU1rRlRiVWhSVEhSWlJURlFOa3AyTUVabE0yOUVjekJKTjJSUWJFUTRjSEkxU2pkcVVHaHphVkJwVFV4VFRXNXlSVVowYzJsWlJVOU1TVlJ0TW5CUVZDOXFXbUphTm14RFdtVnlOVEpVTWpkaFprbFNiSGt5VFRrNGJIbHpkelF3Ukc5M1MyTnFXVVJaWlc1NVZGWnNkbTlPTURnd2VUUmlUVk0wV1Vsa1EydzVka3BoY210dEsycFhVVmRGV0dwbGNUVm9OVWc1Ym5GSVZFNDJSbFZaY1haNVYyaHpjRE5aVmxGa04yUmhLMloyVVV4VGMwMTBURGRHT1hGME1HUnliRUZXUmsxdlEzbENjMDFNVldGclJIZDZWblI0UlUxVFRETkRVekl4T1VOa05XeERhMWRhWkRCd1psVXhhVzFsTW01YWQyMUtjRnBxYW5GQ2VVZHlRelJDTnpKR2VIaE9lRVJHYUhkUFVHZDBZVkZtWkVJeVZHaEVOazFJWTFwWU5Dc3ZURUprWkVRMWNIUkJNMFJSWW5GRmNITkpTRVJXTjBaUVZFZFlRWEpaTkU5RWRqaFFiRzVDY21KTmRXNWhiSFkwUjJoek9GcGhWR2RUVUhaSlRFdEVTMEp4YTFKUlYyOURWRUpHYUVkbE5teHdWMVZzTUhONWQzUnlUVW96ZFZWTFVtSnNNM2xzYmxVemQyeDBXbWRqUWxOa05IbHVhRFV2WlZFMWQwUndOWFJETDJGQ05FeFpRMlJFVldNeWVXVlBSREJQUkN0WE1taDRVSE56UjAxR1RYQXhUVzlWTDNoQ01WcFdZMjFhY1V4MlJXZzViMGd4YTNSeVRqTnlWbE0yU1hSeEwwOXFSVFpoTjNKMlUycGxXRVpVVURseGJVZHlNVnBTVVRrMlRYbEVlazk0Y0ZkdGJ5c3lSak5pTVU1NU4xSnBkRUZVZFZwR1VGZE5lRlpyVnpocVZVUnNaMmRsTTA5cWVVRkpNMlpKU1daaVVqVTJlRmxoY25KdGVVVm9Na3B3VkVkRU9YVTBPVEp2UlVaMGFscFFlR1phU2tweVNrcFRUak0wYVVkSU9GWjFZMUJtTVdKbVVYVllRbU5YTTNCeFlqQkNZbWx6TVZNcmNuVmFZMXB6TmpVMVpYbFdZbXh2TkhCa2RrVkxkVzFXTVhWYVZEZzBWRlJxY0hOTU5rVjBSSFpPYnpkYU9EUXZjazlOWkZVck1GaGpRMWhNTWxOSFZuUm5iRlZKY0hOVk1XVlpZWFkxU1dONVNWRjVTMkZyUmpKR2RESk9hWEF3ZUcxYU5UQlhTM2RJVWxoaFFqUjBiM3B6YUhwMk1GUndNakk0V0RsTVRrUk1kR0kzY0dwc1ZrNUxRUzkwWnpod2FXOUxUbnBvZHpKRFJuRXdORTl3TWxsT2VEUlBaMjVJV2tSR1owZEVUMjFISzNWVE5IQnFaM1JKYnpsVVpGTkNPV3BTVWtWNlQzVkRWbVZ6YUd0NWRVZENUVE42TnpsUVRrMDBOV3RXVmt4WldYUk1VbUZDTDIxWGRISlZZazlzTWsxaE5rMWlMMVpsWVVndmFrVndTbE13UjNwc1YyaHlZVVZXTkZwSFZtOWhSMVpGVWtWVmJ5OU5RaTlyVlhSaUwybHhRbXBaTVdkV1ZqWmlZekJXUVZGSlZreFRPVFJ4VXpGMmVYVmtWbXhyV0RsRlVsbHFjV2hNUTNkVGRYY3JlVlE1VkdwVGRsQlhUak5XUWtONlNHSTBWMU5tTDNkT2FrRlJjRTR4U0hWaUsyZFVXVWs0SzJWU2REbEVRbnBSZURRNVVqUlpZekJFWXpodk5tSmhSSEpWWjBvMlRtRkVZbFpDU25kU1pIRnVTM1YxWTJkT1RuQmFUbUZJTnpKUVNFVmlkalJoYUZWcWVqSnNNVE5CYzB0Qk9IRlVRakJXYTJWcEwxSm5VMHBxY2tkSFYzQkZNbTFDWjI5dWJWTkNhVlJ3UzA5SWIzUkhXVWRTYzFJck9GWjBiMlEwZUU4eVRHNXNVbXgwZFdsMFNuaDBZM2hpTkdnNFpqaGxjak00VTB4Q2VtUlpNeTk0YkVzM01IWjZPRGRaY0hWeUsxWmFWSEJLV2todk0xWnVkazV2WTJWYVMyZGlaemhpZG14dFpUaDFUakI0ZDBObVRWSXJXR3RLVWxGdVZtTlljVTVSVmtONFpqTjViWGsyYWxNeWJucE1VSGc0TjFoV01uY3paREJ0U2xjd2VXOWhVRXhWYUVkQk0xSlpWSFExUlZGTEszbDBhR1JsWjBjNWFIWXhMMUpNZDBGb1Z6Qm1aVVU1YTFCbk5VOTJjamRQZW5JMloxTmFabEk0WlVGQlJXUklXRGRpUzFWNWNqRTVTa1JLVUVSVGRrWkpOVm81ZEdoa1ZHbHFkVUY2Tkd4dldVeEtMM05rUnpsT1pHeGxNazlsUldRM1dFMWlVM0Z2WmpSbGNTOUZaV05SZGtGeGVWWlJUbU5WVGpoWlUwNDNNR0l6Y25CVFZsaDNXRGh5Y2pOQk5FWndiQ3RTVmpCMkwwaHhZMDFpUm5CeFFrZGlNaXN6VkVWdVRqWndWM1J5Y0ZoMWNuWnNOV3BVSzJSNlJXODNLM1pRY1RGaU9HTlRNREExT1c5MGFDdFNSR2MzS3poREwwTnpUSGxWYm1Rck9VYzViMWhKWjBoTWJscG1URE5oWVhSdmVYTTJiVzVrTTFWalRYcFBjVTVVWW5aVGVuUjRaVEl6VkV3M00xcGhVMloxY2tjekt6bFlVVmMwVkU5Q2RFRTJjMXA1T1ZRMWFFOWpWUzk2UTFoaVoxaGtjMkk0YVZvd2VIRkhjSFY2YWxjeGNUVnZWbTVEVjB3eWJFcGhVRVIyVVhaa1JGWXhZWFIwVDB4T1V6UmxUMU5yWTNobFdISjNWWHBWYUhnNWNESmxSV2hoVWpSemIzZGtiMGRsUm5GWlJqVnlXbTlCT0UxSGVXeDNiRFpZUzJsbGR6VldVV1k1VFdZd1VuaDVUSHBzUVhoTlFYVk5RbGN2VkVsSVNrYzVSWFE0UXpCcVpXZEJUMEZNVTA1eFFXWm5VR3RITVVGV1pIZEZSVVkyYTFKa2MyRkVZbUpQU1hSUlZXeEJUUzloTUVaaWJrdEJiRkU1ZDJScWRrZG1Na2wwYkV4bFFYWllkRmt5VUdvNUwyZG9hRFZ3VFdoMmVEUXZja0p0V1hwNWVFRTRhRnBCYkZWU1kxQnNRMWQyYWk5TGNtdFBaME5oZVdSVU0yNTZRMUpWVm5sclVrTjVTVGxHY0hGRlJXZExhRzgwVW1WQmNXb3djR2xVTUVab2RrTlRjazR6UlZoeldHeGlXSFo1ZG1FcldYUXpaWEV6ZGt4R2RIWjBZbEpqZVhaSVVFOVVTVnBTY3lzck9XVXJLMWM0V25aS1VDdGxZMDltV0M5MmJTOTBOMFYzT0djMFQxcEVlWFF2TjA5MlFrTkhRalUwYTBJMU9VbzRSMkkySzNSNlkzSllOV3hrTTIxMmJXTjRlQzgzWTAxRFdtWnljVE4xTjFKNFMzUnpTMU4wYmtRMFNuWk5hRXBUTkd0bVprNW1ZemRoU2pjNFkwZFFkRlkyYzJoSmNGRlBiVVJCYTJwSVptdElXWGwwTVRORlJqSnhXRkY1UkZaRWRFcHNURlF3VmpNcldUVnZTVmxpYmpRdlJHaFZNWEJsWkhSaGRXbHlSU3R5TjFOMFdsWkdjV1ZXTVVKVFZFTmtibUpET0hFemNHRldkV0l5TkdGSWRFZDZlRXAwTTNSTGJHVmtiMnhMUnpRMU1XZFpkMjR6UkhKb1owdDBNbTFKTVZKcWJEbHBPVmRPUTNwSlQwaExRVlpuYVZGRWNpdExNRVoyV2t0UU5rZHRhMlpMWVRWbFZYTXpSME4yT0dSNU9URkhlbGdyVWtoTE9IVkVUWGxQTUVadVdIVkRaRWR1TjNkRFdtRjFMM2xJTlVwSk1HNHZRVzh6TjIwMmIwdG5NWHBpUlU1NldtOWtUMDgxWTA5blNESlRlamh0VDFRMFUyZ3hZMVZwVEdVeWRrbzFRV3hQV1hBelRrTm1iRFZDWW1aUVlUVTFTemRKZFZCWVVrWlZWalp1WVVkNFMyazVSa2hoTkV4VVdXNWpTWFl5TkhaVFNrUktOMDh3Y1Roc1dYUnpUalUxYTJJelYyVnJTbU5SYmt3d2RGRnhPVko2VUVwaU4wdDROMHBSVFhKVVdIY3hkVk5WUjJjdlQxaHVlRmx4T1dVeEwxTlZjVlpKTTNoNGJWcHBla3B0VkZCWVYwNHZjVkpZVkhwTFFYaFRVVzVhVm05eWVYSnVOa0ZFZUdoeVdHZHpTWFV4TWpoTVZ6VkpkMWRpTUZOcGIyRlBURmxZYkV4VWVHcGxkR1UwU2xSYU1GWTFSR05zVDFnNFpXVXdWM0ZOYlhKWE9VOWFabUpKWmtKTFVGcDVaSEJVVWpnMlpGUkVlblk0THk5R1VuSklRbW81UnpJelZuTTVUV3RoT1N0alZXNDVkRkkwV1hsdk5VdGtMeXRwY0RKUGMzSkZjU3QxZGt3MmREQlZWVWRwUm1KWlExUlpVU3RrUWtNNGVXWjNUVlZ2Y0dremNrTkdRV0ZzWVhjMGFqZFhibEJHVTBKRFNIUjNXbk5rWlRsM2FFaFhZWGhNT1VsTWVXNU9kM1V2TkVRd1FWQmFLMXBhVDJ4a1JHeHFTMUU1VVVKR2ExQnNkSFkwVEUxQ01YbzJRekZaUlZRMlNtcFZRakV4TUd0U0wwVkRTVEJqYUVSbE1GWXdlWEJVTUZWMlpVaE9NRXB3TjJkdWVFVjRlbTFIZFhaWFZVb3dSMnBHYjJob2NWZFlTMlJ6VTFRMVIzUkZMMEpTTUhKb2J6aE1hR2t6TW1KdWVqTllXRGR2TVdzM1dFMUxVemRMZWxOcmNYbHRVREJCZVRoT1JGbzBaWGxxY2xFd1RIaHpWMWhPZW1GNlQwdHNORnB0YmxJNVRYTjNORUZqWjBKRFoxbFVOMFl2TUVSbE0xRk1ZMGRpTDNWQlZWVnplbTV6T0dFek5HVnBjMjlvU2xCYWQybDRVVUZ2YjNveVdVeHdORFZrTkVoc1JsUnNUbE5EV2tWWWREQkNlbkZTWXpST1owSmlWa1I0TUVobmVteG9hV040UkVKb1VUUTFNRTFGVGtoVWFEWmtSbXB5WVdweFJHOUhORFpuTnpsalNWSjBRblIxVDJRelUzZEtZamxETW14dk1VZGxaRmRaV2t0d1QxSjNVMnd4ZDJRelYxVmpaWEZOUWpoWWNUTlBPVFJCVldVdk5EWlBaRTVMTTBoR2NUVkZVRXR2VlZaTFdWVTVOVmwwUjBwc1pVZFRRMmR4ZHpJNFRVOU9hMFIxZFdwVk5reEdRMUZPVUVGcldsUkZjMUk1T0daNll6RXllVEI0V0VaclpXeExibVZyWkM5V1NERjVWblJvWkhOT1NsWnVZWEJFUTNvelJ6aFJUMkpITlZOaFMzZFllVVpPUld4NVp6WktVbWxhVWxWRVRqaDVMemwxWjFaSmFVaHlPV3hYY1RoWFJsQm1OV3hqYm1SckwxQnhXVGgxU25GbVYzUkVNV05KVldSalVsTmFWM0pyZEhCSlRuVXpUVlJqYTNaUE1HTkhiV2hwZWpsb1lWcDBkemRwUjFaTk1sbDFZMFprYm1wWkwweHVORFZPTkc5eUwxcFVkR3hsYXpadFdsWmtaR05pZVVoalltaEtlSE5YVldsSWMwMXljVXBMWlV3eFFrdFVTa0pDYldkck1FUnhORFpaVGtaMUsyZFpVak5YUlhsNk1HSnRPRzlRY0ZNNFNVODVSekkzVlhaV1dGaEtjMWhJVkVKRU1FSlNVRzFZY0hKTVVXbEtlVGc0UzB4TFNVVXJhMG96YWpkQ1MyTnVlVUZ4VkVGNVdHVmllV1pJZUZreVRtTlJlVGQ0VVdKdmFtWk5UbXhCVlZaQ05sbERibEp1WTBGR05IcHBkemxVTXpSdWQySkJSeTlUWWpCd2QyaE5SbGhGT1VaQlFqRkdPRGRuVGpWWmFuRlFjMlpGTjFoMlRDdFJja3RJUXpKclJuVk9SVkExWlZKS1FYVkxhV1pQTTJRMVoxVXpWa1phTVdoek4yTlRTMk5LUTJJdk4zZFNSM2cxWWtWb2FFMU9VVXBRVG5oUVEzRktXV0pYVTJ3ek5FSlBkR1pPZW5seFFqWkJXSEZ2VDBReFQzRm5XVVJVUlVsRE5uQmtTa04zWVhjMlJUZGpZa1pGVW1oMmJrdFhWa1J2TjJWYVlURjJabmRTVUUxWmVIaERTRzloZGpSR1NrbDZTR2QwU1VjNGFWTm1RbmRZVUhkSlQwY3pWMVZtUXl0Sll5dDZkbWxxWVdoRmFEQjFUM3BJWVhJMVluZHpRa1pwVlZabFlVOWFWSHAzV0hCbk1Ga3JialZpUjJwQ2VFRndNazgxYzFWbk9GVjVOV0l5U2xNMFlVOURRVlpTYm5kMlExUnllbTFNS3k5eVZWQTBSRTlFUnpSQlpUZ3phWGM1VVV4SmFuaFNkMUJYVlVVNFlraDJhMll4VURCTFpUa3JTR2xxTWpCb2VqY3JRVzF1ZVRWRFJHUlJVemhxZW1KNVR6aFVORkZRYW5wWFV6VjRiVVUxTlVnMFNFczFibEF3VnpsRFJrdG9kazlNYUV0YWVWQkNXV2xIYkZoSGNVSXplR2RyZUVGS1FXeFpPVFJNVFhvM1RWTkxhSGxHTWpSR0wzTjVkalVyWTA5SlRHdE5WMlZtZUZwTlFqbE9XRkJUUXpab0wzUlpRVkZJWWt4elEwNWFNVzB6UXpKM1oyTkJXbFJyVWxORFlubFdTa2RsYm1JNE4ya3JSRmRLU1hGUmFYcFVWVzlpZVVrclpGVXlXbmhCTUhjeWFYY3JSR0ZvUjJWNlpVVnJabkZ2U1ZSNFVuZFFXRlZFTVZKd1VUTlhRV2xaT0hZd2F5OTNUREpqTTNseE9IWm9WMjVaVVdGSGRscE5LM2xHUW5CRVRtNXRNRUZYY1dFdmFtZ3hhMjQyYkVobWVuaG1Rak5LUVdScFRUZFRUa1Z2T0hOMVNUQm1ObFp0YTFsVmVXOVVWRVp6Tm1Sb1Rra3lTRlYxZUdSclVVOVBRbTFoUm5oSmJEUjNlVUozVGtremRuRlJjRGM1UVZZMVYwNXhWM29yVlZaT2VTdHdUR3B6YVRSQlFUUXdXa1prZVZwcGRVVmpjaTlRZUdkaE1rSklNbXBvZGpjckt6TlNaSFJtUVdSNVpYZDZlVE12T1hreFQyUjJTekpQSzBoV2JERlFTRVl6ZEVsalpEZzVMMHR5UjNKeVJETllUV3BwZW05RWVDOVBVemxzVEhrM1luTk5OazE2WjBKMWFITkdhRGhITkZOSk9GVmpSREV4UkRaRFJUbGhWRkJDTDBKNFkwaDRaV0ZhT1U5bGJGWmFSV1pCVTNkalZVMXZWWEpCTUhjMlUzYzViV1ZZYWxCT01HTklNek16TTBKd1owSm5TRWh4ZEhVMmVrOVhaR1YyYTFSaVJrb3haV3M0VVU5VE5Gb3JLMWxIWkc5SGNHWjFjalppUVc5VFppdDNRWGhRYUVWclNHb3hLM0ZJTTNsUVFuVk5iRXBpUWpRdlVVZDJOamx0Vld4Uk5VOVRjbGh5UzFGR1V6VlhiR3d4WlZkaVp5OHhURTVKU0ZaYVpEZGFRMlJzYkRneFVtRnlUMVp0SzNWVU1ucFJNekpxTldSMEt6VXlReTlOZDNOVGJ6bFNkVE5zTkhGbFpUVXhaSEY1UnpkWmNGaEdNMUJUSzFSVU1XMWpUbTA1UW05c09WRXphMHBzZWt0TE5EWktWRkY2VFhrMU5XSnJhazl0WW1aNGJXWlRSVGxpYUhack5sbFVTMnRpWVhCT05HWnJZVFJSV201RVJHRkNaV2hNYzBzclJFTXhXbEo1V0ROUFZuaExXRmQ2V1ZKNU9VazJSRFpvSzAxNFpHZHZlR0puUWpob2NVbDRUR296U1d4TFJsSndObGxUZWtST2VXRklhM2RrTldKRk0xWm1UWFJoU1dwS1lXSjBWVUZ6ZWxBMk1qbHhhbVZIVFd0bU4wdHZPWEJ6TkM5WVJtZ3hjRzE2VDNaalZ6bGtLMkZIUTNWdE9FaFliVFowZVU1NUwwbEVjakZrZEZoeFZUTlFSSHB5UlRka2Vua3pjekZMWWpOYWEwMDNjbEoxYzJkaUwxVmxaMUp6TTJSdVpEaHpUSHA0VG0xTU0yaHdhWEZaY1VaRVIzcEVaakZhUlhOMWEyeGFXQ3RJZEhSdVFqSnpUSFJKV0VkTGVIYzVSemxrVkVSMU1GQTVUMlIyVkUxV09FdGxkRWtyUmt0alEycGhla0Z3YUc1VlJWaE1RbW94Um5aQlUydHNNbFV3YlZOV1ZqVTBaSEYyU2k5WlMwSXJkMjVoY3pKU04xWlBiV2RCZWpCR1NYaE9jMkY0Yml0UlRFb3ZTbVpJYkVWRVdtNUJSRTFKYUhkV2QwVm1jSFp5UjJOamEyUm5jRTUyTDBVclJXcDJNa1UyYm5sTFVsQnJjbEZsVURZNFRFOWlTMEZ4YldsR1EwUkRhamczYVU1Qk1rVm9iV2hhUWxaWlUwZElPRkkwVTBoclkyZGpjbTFrWm05TmFIQkdUREZTYWpOS1NXNXNVVkZsYzNSclluVmlhWHAwVEdwemJHdE5ieTgwYVd0bFRpOVBaMmwwVTNsVE1EUktWMFZVZEZoUU5sY3JXR0pGTlZvNVpGQlNXRlFyZFZkbVlrWk9iekJvWmpSaFZtRXpjeko1TmxvNVQxUjJaak14YVRsUWFWb3ljbVkzZDB4eksydGFjVzFNY1RKaVQyaDFZbTE0VkN0M1pEQXJPSGh2TnpCTWRqa3JMeTgxZG13d01WUjVUMjFIVmpGTU5sYzVkV1JSTm1OWkt6bE1NekZ3Wm5aNVltNDJiWEZ2Y1V0M1ExWnViVkJDZVVscVNUVklaRWsxTkZReWNXbE9kR3ROVnpNck9TOU5OR2RpVVV3NFNtUkNXSGxaUjJoeVNGTm1kM05RZGpWbFJWZzJTRFJQVWpkNVVFUlpTM0ZtSzJsVk4yRTFPR3hLWlhweGRtcHVWVmhrYkRsVFYyNVRUbm81TTFSRlEwVTJlbm80ZFhwd0x5OU9LM2hIT0hSc1IyUlhlVU5WY0d0UmNUUmhkbTF4Tkc5SGNqTjJXbU5VVTNKVlRucHdlblpzZVRZd2RGRnJiM3BsUWtsc1NrUjNiSGR1U1dsRlpHRlpSVXRhZFRsakswaFZlbkZXTW1OeldGSTRPRWhxYmpsUFYxSjFZWFJxU1haTmJVZ3dXR1pVZDJWaVpXTkpSVlJsVm1Ob2EzSklZVzFPYUVONFpWaEVNakJDYVRFeGRESjBTbUZ6ZEN0WlRXVk5RVzVOT1haTGIza3hjWFYxWWxWdFlWWlZRWHBJVDJFcmRraHlRMUZaTHpRNWJrcFViVmhRTkRkWloySkJOWEF3TkZnNGFYTktVVFZ1UVVSUFExQkRXRkZXT0cxTWJ5dHFhM1oxUlVwNU1IRlNlV3BvVG10blZWRnlORXRJYUdSSldYZHBWVmRqTkdreFozZzRZbTFqV2pkaWRHRlhOeXMwY1dOemNIRjJkVmR0T1hWYU9FaE5RMkpUVlhWWWJGUlJiSE5vVTJwSWRuaHNMMlpYTnk5MFkwTXZjMGhEYUhWVk9FMDFhVVpFTURCbVp6WjRUVmszYzFWdlRHeHJNM2R5U0ZKQ2JXMDNNbVV2WW1VNVpYTjJVSFU1ZURsbFQxTTFORmRUYTJaSlYyTlBWamxEWVU4NGNHaERhQzl4VXpneGVFaFlNRGhpTVZaRWFVbDVkWFJPY0ZoTk5IRkVablZKUlhFclVERnJkMnQwYzIxYWFGRnlRMmRTV2paTWFVY3dNRzB3TkdKV1JFOHhiamRKU2pCMlVHTjBORUZqTkRGbVoyOTZVamN2ZWpCUlpqbHVkakU0S3pOaVoyWmpPWGQyYkVaYVpIWjBRVmRMTVRoc2F6VjVNamhoUnpJd1VtWnpjbElyUWxkVUx5OTJZMmM0TmxaTU5sZ3laamxHTlVkMU1YSTNVMVY1TkROVFUwdHdjWEpJU0d4b1JVMXBWbTl5UTNWdlkweE9ja0Z3WkdWb1MyRTFUa0pLUzNsTlJrSlRTMVkzWTFGSlQxTm1UekprSzNWTmVuQkpla0l5Y0U4MVIyRm1ZazQzT0ZkWGVsVkNNblkzTDNKQ2JUVlJLMGhQZERsV2VqSnlaVnB2ZW1aMmVtMXhjVFp4Y1UxNlMzRkROVFZhZEhRd1YwOXZRMUZDY1Zwck5Wb3dPVlJUT1dWSlVYUkJabGN4VGxGNU9FRlJNV1ZOVUZFelZqZzRjMVZLTWpoUU9YZDNWa1pxZWxneFdIVnNkMGR3Wm1Zdk5rZEdSalZRVWtoMFMxaFRiRGRyTlRaSldrdHlOV2hKTjFoMFVIZExOelF3YUhsS1psWkdURXhQZFROVWVHUkxiWEppTWs4eE0wMXRPVkJFVXpBeFRrNXdWbTVYUkV4NFptcGhMMmx4Y0VsV2F6UjRRWEpCVmpneE9XdHNZVGwxTjBaa2VWRlZRMHBtT0VkbE9FZDRWWEZIWVM4MFNrTm1Oa0pqV0VkVFVIZHpRMEpyYUhsVGFUZFRibFo1VDFkcVZHVklPRE5hYUZaU01qUkxUbFpVZW1zMlUyZFZSWGhKV1hwWWVIRTBWVGxUZVVkMVNFbFNSWEJGY0RCMmRWbDBOMEZCV25SRWVVTlpiVlpOUlZwUmJrRXZlbkJLTm5GVVRVUm1URTVVUlhRemJtaHFlRlpRTWtaV2NWVTViV2x6WWxSS0wyZHdOWFYxV1dsdVoxQkVlaXRRVFVoWVNFWnJPV1o2ZWtGVFJETjRSVzQwWlhKVVF6WndURXh2UVdaSVZHMUVUVmhrYzFKRVpuTlNSSFZVUzJabVFsQnNSVGhWZHpWNVJrWnlTM1JDY0ZWWE5YSnlOSGd4TWl0ck5ESTRNa2RtYms5NU5YUlRjSGhNVkV3MU1HMVBZVUp3Tm1WcVIyNXJRVTlqUXpSRlQwSmphMVEzV2xaNFltcHpiWFZxWnpkWFZYRkhTbTFRWm14eGNYcGtNMWhKTWtKcWVFeGhlV2hJY1VsU09FSTBiRWgzYld4SlNEUm1MMEZPTlVneVlrdGpVV280Vm1jdlZFSm1lVVJFUW10Wlltc3lNRVEwZEhvdmVHVXJka2R0VEV4SFNIVnJjVWN3V2pnNGRGRkxSbEJoV1ZGTWFXOUxORkJRUkROS1RuQnJiMVZSYjIxeGJHODRSMDFWUTBKdVMwaEhaVGRYTnk4cmJFSXlOak5FTjFKYVluRlVRbE53YkRCelJFcHdUbFJNUm5oaFVVTXhTbU5wYVhOMllsVllTeXQ1UlhCTU5rUXlaM0FyYUdwMk5IcFpaVVpGUjFadk9DOHJlRlkyTWtwcVpGZHlkVzR2UWtKVldrNURNRlo1V1RNMGVUWkpXWEZGZGtJclUycDVhMm8xV1RGNlpGcFRZM052VFhwNVZYaG5lRFJTVkhoSmJFUnVOR0oxYmtaaFVIbFBkMHR5TjBwRVUwZzVjeTlDYzBZNFZETTJiMDlDZDFKaVpIaFlaMkU0UWpaNWRuTnNaRmxEUzNwUmJ5dHFXRlI0Ymk5b2RpdHRRVTAzVTNkM2FWTk1OazFqYm10cVQybDRVSGt5U0dWSWJteFhXbTV3V0doWk9Dc3piMHBFVUc4NVIyWnFhV1pRTUVsMldrNWhhVXBsTUZJcmRWbzNVbGwzVGpCdlkydDJRbmxuYkcxelRsaHZUSGhtZVVOUFlVSTRlalZQVWt3dlNtSndkMmRsUzNSS2FuQlZZM0J2Y1dSQ1JVcGhXV05zTlRkT1UwazNZV3hoYkZsV2VEbHBRazgyZDBSQ1FVRTRlSGhpU1V0bk4xaHdUeXRPVlhVNGRVOW1OWGN4TkhwRVYzaEZTM1JvTm1NeWRtTlllVmhWWm5aNVRYb3ZaakpNVG1oWGRYUXZUMWRQWXpaWFltRnFZbTRyYm5CbVRraGFieXN6ZFdsUk1IbDZlVzE1ZFZKUVYyNHZjRmhFS3pSaWNuWkJTRU5rWVdGUE5VdFVjbG96UTNkUlJYcGhVR3BzZEVGa1RteERhalJzVDNOdE9EZERSSFUwWVhVemNuSlZlR2REVEdvMmNYVlhNRXhoWlZCa1JEWlFTVkl2UVVaS1JEazJSR2RWV2k5alNHaDVjVlJQSzJSTkszaGFMMDVuYkZVMWJqTk5VSGgyZERKTlNDc3hjVWRzVm05c1kyVk1UMjQyTTBFMk1rWldObGhZUzBkMWFYTlFWa0ZtUTNaMldFOVFWRnBDWW5kaGMyTkJiSGRPYW5ZMlduQkhOVmh6U2s5UU5FSndabVkwYms1aVpqaFdkbWxMWm1vMFNEWlZhek5WYUdNMVdVWTJXQzlwTVUxbE5GbFJNMWR6YUhaemNEQmFOSEp5ZEhrMldGUTRVbllyVVRsaFNEVXhWWFJNTDBwT1kwVjBNbXhpTjFvdmQwWm9kVFprZURaalVIRXdZbGMzZVdwS2VsVnlTMk56TldWQmMybHhPVU0xVkhsUE5IQlFaVkZFYWl0dk5rTkpSRmxqTmpsb1V6WmpOMlUzV201UlRURlRObEZxYjJORU1HY3JjSEZaU2t4WFEwRlVhR0ZOUkN0YVptZDNUVmczWTFGbFVrTlNabFYwWnpkclVrdGtXRzVPZEZWelZWVjZWaXROWWs1WU9IY3plV1JwV201d05scHliekpHVlZsdGNFdHdWVU1yV2t4UU5ubHlVM2xzTXpnMmFsSk9iVEpMWVVWblNqQXdXVFY1VVhSVVlURjJXVk5aTnl0RlpEVkxWRmRLV1dGTmNGVXdTMWRoUm5oM04zaFRhekphU2pSTE56aExNRGRLYzFkbk1GTnVOVmxpTTFOc1lUQkNTbFpFZVV0UmFWRjBhbFZhZG1kclNUWk9SaXRYYVdGd1l5dFBZV3RrZWpabWRIbzBjMHhVTlVzNFpVUXhkbEkwU21OV00zaEZZVVpTYTJOdWVFa3pVRlJPUTIxYU1uUnFUV2hGUjNKSVl6QlVlalo2U1dndldVZFRVWFkzV1hOaWRqSmxObFEzVkV3M2RqZHhabmhXUXpSTVZtcFNibWczVFZCRmNVdHFSVVpNVmpaaVRYY3dVVEJKY0RsU05HVTFOazh2VFdrcmVqZGtUR1JhVEZwRWFGVkRla2hITkZGclZXbEJZbU01VUhOc05IaExWRlU1U1ZkcGJXRjJUR3QxVG01ME0xcE1VRlY0Wm1GV2R6Vk5RMUJVZWpoaVUxRjBiSEJaYkdGRE5YbFNVVXBTWmpaS04wbHNiVzgzTlhoWWRuSjRMemRGVXpaWk9HTXpXR1p4TmxCR09XY3hhM0JMVm01d2VWVnNNRE5KVG5aMk16VjNOemx6ZGk4M1Ntd3ZOVWhFS3k5WlpGQmlVV1o0WmtwQ1dDOXBhVGxEVUV0Q1YyVklaMDlDVXpWRlYzZDNiM2xJVkhSaWQydFpNaTlPTjJwMmMyZENPVVJKTHpaRWNWaFZZMnRhVGpsdmNXUkxXblZNVXpOaWJucHBieTgzZUVOVE5sTk9VRU01VUd0YU1HY3ZjM0JVTWxkT2JHdGlUV2xpYnprM1YxWmlaMmhQWlRsRFpDdFdUREl6VEZreVRtNVNibWRJTlhGMmVVWlRWRzAwVW13MmIwWkpVRk5VZUVnM1RYUmxhM296T1ZVd2RVbG9SbEoyVVdobU1FbExRM3AxZWpWMFZtVnhOMGhVWlUwd1QxZHdkUzlYYjJ4WksxYzRUbEJRY0ZoWlVHSTFlR1ZyV2xsU2F5dEljVzVUYWk5T1VHUmtZaXRtVEU5SVJYUndjalZYZEdSd1RqSldkbE5QYm5BM1FtcHZWelZUV1hSdFVsaDFSVXhwVEhwMmVIUkdVMlkyVDNObmVtVnNTV0pOTVdod05Ha3JTbmhLYkU5RmNEUnFkMkZDUjJWUWJ6VmlUMEYxTkc1TlVXaDJOVkJ6Um5VM1ltMU1iV1pxZFM5Nk5uTk5WMHByTVZGSU4ySmpkVWxJSzBKTVFqWnJkVU5VZWtkbmJuaFlja3A0TWxkVGRWQTRkM3BLWmtka05sSjFaVTByVHpWR1FVbE5VelZ1ZG1oNFZFVnpVbWM1VFdKSmNVUlllamxhYUZWamFHVm1abFZhWlhkQmFEZHBMMnRoYUVWb1lVVklTMDVZVlVkUmVubFVWMWxKTjJ0RWEwd3dlSFJQTkhSRldqTmthazV5VHpsYVJ6SlVlbUZFTkRJM1FTdE1ha0YzVEdvME9XNU9XVnBJVWxOdFZqQmFRbWwxS3l0NWVGQTRVSHBrUVdVd2IwODFVekZQYUZwb1IxTm5NelF6VVhSUmFGcDRVMDV2Ykc5SE9UbE9UVWxoWlVkU2RWZE9MMmhtTTJ0V05qQmpVWFJVZFZZcmJHMW9TSHBNU1M5RmJ6aHVORk0xZW5ObE9GSnVOME0zZUVsMGVWQnJTRzhyYnpCTEswOXJNbVoxT0VWbloyVnRZVUZZYnpKUk56TnVSVU41UjBRNVFuRkZNMDFqU1RoUmQybEtWRlo0TkUxM1ZVOHpRVVZoZW1kWFZuUjJZbTFaZW1nNFUwZEhiRGR5WW00eEsyaExkbTV6T0hWcmRqbExVQzgyVkhsM2RqRjJXbkowVHpOb0wwTXJPRTF4TTJkT1QzbzVNRVZIVFZsaGVsZzNVR1pCYm1abllsUkxSMVYzUkZCYVRFTktaRFJoVEdwbFJqSTBRbXhKTURsT1ZWaHhaVmRuUlU5UVIzTlBlSFkwY0V0d1UyaHRUM1ZqVFZZdmVUSk5WbmxYZVhSdVF6WjVjVkExWkZORmNubzVXblZsTldGa1pVZGFSblppTXpoSlVHWjBTVlpxTVZadlQyRm5WbGhHU2pKalUyTXpXWGR3TDNkb1VYVXlPRWc0T0hOM05qZDNkRGg1V0VZNVl6aEZiSEI0ZVVWT1duZHpMMnR5WVRKeVpXeE5ZMjV1VjJvNFVWWXpibVphVjFkM1Myb3hkV1JMTjJwRE5YbDFTVXRTZW1sa2VrMU9lRUpOZFhjeU1XcFpjVVJ6VDBWTFVHVk5UR2hPT0ZwTkswMTZNVVI2TlRSQ2VrTXdjRk40T0V0eWRWTk9ORTltV1RSbVFYWTRSbkp6VkhGMGRUZDZVWGt6WjFSek4wdHZWR3BRTHpNek4zZHBRakZtVEhVdk9EazRWbTEzVVRrclNsaExUR0o2U0hobk4zUTFNWFlyYlVnM2VrOVphRXhHT1RaTFdTODRiMUJNZG1adEwwOUNUbGh2ZGpJelZIWndjQzltZDB4bmVEUTBZVTFEYVhkcmRXaGtaMUJ5YlhZMWJVSnBWWGRVTDJKelFqazRXR053YW1aMlJHUnlVRWhGUlRNM2QwRjNRMnRIVVZKSVQwSndSamxFT0RSU04ybERNbmRHT0VOS1RrZ3ZlVEI1YUU1T1ZVTjVjRE5CYmtabVFtMUJaR2gxVWxKQk4yaERZa0U0YmpKbldFSkVXVGRZUTFGa1ZFdzRVaTluUTFWSWRqSnVUek53UTA1WVpVUllNbnB3ZFU1RFYzWlViSFZGTTJWSE4yazNjMVJyY0RkUFkyUmxkV2xKTjNCeGIzRnlhbFkzV0ZWSk1YTTBXVFpRVjNOQlpuUlpZMlpxUzJwV2JVOTZaMjF2VVdGT1dIaDJlRzlNZVdoTVMyeDRRbWxQTWpkelEyeFdkbmhZZW01RGJsVjVUMk5CV0haRFVHWjNOR2d6YUUxM2NEZERlbkJsVjFsdll6UlVXRmxGVnpkVWRIRmtOMkprUlVjMVFXaDJlRWszZDNKM1dVdHlValV4YUU4NGFrUlJOME5xTlhoamRYZ3JhM1JDU2t4UFNtNDVXVUpuT0V3M2JrSjZXRGR6ZG5oRFUwRmFVRUZwVDFJMVRYWjBlR2xCU1cxM1ZqZEtWRlJNTjJOamFHTkhRVGMzZVdFNVlXVmpVVUpRV0U1V09HbHhXaTlVWjJ0SWExaGxWQ3RLT0hoNVRTdFZRVlYyVTNFMlZESlpPVVJXVDJoWWVEaHJlbVF6WjJ0RlJEQjZTVXhzUjFwcU9FODRWVXhKYjA5UlYyMW1NRWxaZG5KMldtdEJjRkJ1THk5RWR5dExZV3RCUVVGQlJVRkJRVUZFUVUxV01YUk9ZMkpZZHpnNE9WRkJURU5CUVVGQlFVRkJNbU42UXpsM1FVRkJRVVJvWlRsMWNDOUJWQ3RGZDJWMVFqUnZRVUZCUVVkQlFVbEJRVUZCUVVGQlFqUXliVTVuV2tkRVp6WlFNamRCYTJkNUwwZElOVEU0VXl0RWFXbERRV2huYkVGSmJucENXazFCUVVocVlXcGFUVVF3VG1oQlJrbFJNMncxWld0MGJUTmlkRzB6WW5SdE0ySjBiVEkzU0dSUlpERk1ZbVJSV0N0c0t6SnhNMjFtYkcxNk9XazVlVWRyWTBKblFWUkVXamxKYUZGc01rUlplREF3YVV0TVZFVldNemw1YW5GUFZHWlNlWEp4VFd0aFdYSnhjRUZETUdoNFZqSmtabFZLUlVsR1RYaFliRlJSY2s4NFVrTldZbGt6U1Rackswc3lhVkZPTmxWa1lXc3ljV3RKVjIxbk5EQnNhRmhaVHpCVk4xaElTWEpoV0VSc01tTTVTVU5VUXpobFkwTlBhbTVZVFVGNE5sVmhlWE5JTms4NVdHTTBXbTF4VTBWdU5VUjRNa28zVlZKNmVsTjFSMWx0TlhkVk5GUTBNMVpFYms5YVZqaDZkRXBEWldsUFdHTjRVVFkxUkZocE9VVmFUak5rVjFGUFNVeE9VVEJwZWtOSmFqQjZUbE4yTTB3eVZqTTVXVTVOVlRGVFVuTmhaMjV5TjBSWFptOXFNakZRV1hsSWRUTk9VMU5UVjNCdlozUlFkR0o1ZW5aT1RrbHVPSE5RWkVSNVYyMDROREZ0Y1RkWVRtSjRNVVprYjFvNVptb3ZTM1J2WW1oemExazVPV2xUVVhFME9XSnNMMDlUVTFNMVJFUXlRMXBUZUhjelJHWkdkRnBrWVd0dE9TOTRablpYWkRadk5YbEZPVk5YZDJSSmVFaFJVWHBhWWtka2VGWmhSMkoxYjB0Q2ExRjVWMlJ2T1RWeWJUaEJVSE5PZFhKcU1uazNhRXQzYTNKa04wWkRXVmN4Vkc0M01GVnlLM1JCZDJwSU9XdHhNbWM0UzJOWU9FZE9aeTk0ZFZoaFVubzJlVVZxZG1NcmFIWjJPRTlNTnpkMllYaGhZWGN6WTNkQ0x6aFhjemxvUmxCVmIxWmFjRmg2VTNjMEwwa3hUWGhVUmxkNkswSTNUbEZxVG5wVmJVZDBLM1kwTjFCSlRqWnRiMWROTDNoR2JUaEtSQ3RxTms5MVNWRXZhMEYwY0RsNlpVWnVOa2wxY1ZwMlJUbHRiMVp0Y0hGd2RubGFVbXh1WjFCU2VqRjFUM1J1V1ZCV1RFVnFiMjl2TVc1dEt5dEZPSFZNSzBSaFFVdHhTRUYwY1RaSlV5dExXVTFEYUhOQmFFZFllRXhJTjI5cVJIcHVkVEF5Y0hSbVFuRkhZak5TUkZWNlFuQldTVUpqYzB4SFUzaFVhMk4wVG1wRlUyWk5hMHBWVlc5NmEwbFdhMFZuUmxWT1dIb3ZkVlZWTTFoQ05FbERSa2sxU2xSa1MxSTFUVFJOU2twaGJtNHZRekptTUV4bWIySTFTbXBvVldkMVFtTXhSRUpDZVd0c2VHZFFZMjF1SzJGcU1EVlhNVGgwTXlzMlRESm1VWFJYVlRkMWRHbE1hMVkwTm05RWVUbHllVGQ2YTFvM1lWTjRZV2hwZVZKRlZrNXRUbUpwZHpNck9TOHhPVkF2TmtGRWFYaEROMVZCUVVocVlWbHJRVUZSUlM5M1FVOHhSMFZCUVVFNFNpOTBia3BJWkZoR1VHSjBiVE5pZEcwelluUnRNMkowYlROaWVHeE9ibWR2VTAxRFZ6QlVPV2xOU3pCblluQnFZM2hHUkdsSVVGVkJVekV3UkdsaFFYa3lRa1JyUkc1dlIyTjNSR04xUm1SalFqSlpiV1ozTlVoblNHWkRjU3RDTnl0SlVEaFdMMFZpYlVwVVkxRjBNR2xLVEd0b00wcHJaVkU0T0doeU5XeDJlRXAxVmxJeWNXaHFWbXRhY0VOdVlVOHJNR3B1YjBwMlVuRmxhUzg1YTBOSFdVVnJkM3B3YVRoNmFGWnVRbUpIWkU5TlptVmFkSGw2UkVadFRVaHphSFpaYkhoNloybHVTV0oxVkhaalRIbzBSbGcwTm5aNFZTOXNaQzlLZG1oT1VrTk5Na2N3WTBaeU5FeFFjR2xFY2tkMlQwVmpPRXA2TmxadlNsSmhZV2xMVGlzelpURTVSV2d5TlZKaWVVSkliWGgzYVc1d2JHTnVTMUpsVnpkNWNYRnhNbXRJZEhBMk5WTlVObWhtZEVGNFlWTmhNamRPYTA1aWNVSXpXRzVyVTJ0VFQxcEpkRGhuUWxCaE5ETXhkSFp5ZG1aWWFDdHRVamwyZGpkalZVbDRSMUpxZFdwc2VraE5iVWRVVFUweFdWb3lOSGhFZUd4alZFNHlXRlJOTlU5aFIyTXlPRnBxTVhwdk4yNVlVRWRzWlU1U0syRmllVE5pWVcweE1YUjNXbUkwTmpGYU1XeEtjbThyTTFwTVpYZDFPV2RDTjJwRU0yUlliVk4yZEZobVlWSjRNMWhUWlVwclkxQkpORXBhZDNGVWJqRnVha2hRVEdWbFdqaGphRWRZWkhreU0yMTBkbEZpWlhZeVpFaGtOMnh3Wm1STEsweFdPR2RhTkVzM2VYUXphVWgyY0habVVpc3JWVzQ0YTNZMmJHWjRNbVpxT1M5cVRDOUZNeXRXWmpoQ09FVTJXVTFIVVdSMFoxbHVRWGQxUWt0T0x6azRjVEpwYXpaUVZHOHZaV2hTZDI5RFUyOURhSEZEZEhGQmRrZEJkRzFuZFROblFVUm5Ta3h2U0dJMFFXNDBSRk5yYjFGNGRrZFpRWEZaUldWaFEyaFhSVnBYUWxkUGFGTjJhR3BhWjJaTGVGUnlSVlJ6VlhWNFNtMURTSFZHWnpoTmVEUmtVbmRZY21jNE0wSkVkVVJCSzBad09FMXlORm95TDFWVlYybFVVVUZCUVVocVlWa3lRbXRaUjBOVldVRm9aMWxIVm5kYWJVRkNPSEJCUWsxM1RXcEJRa1ZOUVV4NE5ESnVNbEYwVmxWRlVVSlNSamQ1Y0U5cWNGQm9WR2RSU2pkeE5IQTJOelo2WW1kVlVWVjNRVFZVYTFGYVZrVkJNWFpIUW5kUFYxQXplVE4zUkZkdWJrVm9ZMUJrU1V3MFNIbDNOVFoxWW1aemJFMHJlbHBTWmxSMlJtZ3laaTlNZURCUE5XOTBaWGxzTWpsR2RuVmFWbkI0TkhCWk4wbENiVkk0TW5sbk1HSklkV1ZXTWpaVE9ITmtOR2QyVEZobFMzSjVNVE41Wml0S1VsRjNXbkYxVTBsRlUwWkxaMVkwYlVkVlpFaGtRMUpPVTA4NGRVZGlNWEF3VTBVcmRsaHVVa2hxYTAxalpXdEVOa0ptZWtaUVZrZE5aRXhNVkhJck5HOUtWMUpPVFU5WlZtdFJOVFZEUlM5UU5rMUZUVXRUVVVaeFRWWkpZV3hKV1ZaR1lWQnVibkJxWXpKYWRIaHJTR1p4TVdsWE5YRm5OR2hhU21OVFEwOXBTa3Q1TlhCb1UycHVSM1JMVjFwYVdsWmtjbFpYVW1wMlJXTlpLMUpNYUZKTGVuRktVbTFWTlRGUFRTOHZMMXBVYlRKbVpWRktiMjV3U1V3MGJFaDVOSEZTWlVreU1VVTViREZYTWs5TFZUQlFkazFVTUZaQ1EzVkpaRFZGVmt0WFdrcG1UWEY2VEV0d01tdEJRV05aTlVWSU5rWm1TRFpYTTNOQlpVNXdhM2RSVDBOQlowVkJRVTFFV2s5MGRsZ3lXRnB1TWpoeVYzY3ZjSEpRWVVGYVNXRkNVa1kyVmxaRlEwVkpRbGRHYUdKa2NERTJUbE5zVnpRNVpXWm1iMDVIUkZKck1rbG9VbGs0V2s1dFFsRjRXbVJ4VFZkWVVHMU1WbWt3V2s1dFMxWlhkbGRpWkdrd1dtUjFUMWhZZGpKSVZHZ3dTazl5V1dsV1RtNTZiREkwWkU5WVlXcFdkRE0zYWpFME9VOVVXbWt4WkhZemJqTTBPVTlZWW1veE9TOHZjMWhGU2xOVGJIQkhWbXMxWlZGV1JrcFhWVlpXVkZadFoxUkNkek5KV1ZWQlFVRjNTREI2ZEdaMVNuUlhNak5WZW5NcmVHSmFkREl2V1RWa2JreFBjbXQyYUdsRVVtWm1UbFZuZW5CS2RpOTJhM1JSV1Rjd1kwNVRkbU5OZUc0d1pVWTBUMDlHZGs5UGJVaE9iM1pvYkVWVE5UbDFNRFZyUzNCQmFuazJSa3h5YzJsM2JGWTVjblZ1VjJFd2FTOUJXVTlYV0ZSa2JUSkpaMmxPTW5sS1RrZHVZMmhLZEZkeVpuWndkR3gyZFhWUFpYVXJOVWs1T0Uxb1JHcDZNM2g2UmxCUWRtSkVhWEJrWkdWbFpVOWtkRFp4YkN0UFF6bHFlalZhY3paRk1tNUJOVzVHUTNONFltUmhPRUpVVGt0c1lXeFZjRll5TlVOb01pdDVkM1J1ZDNwdFRtMTBVMGc0THpkWlJFSm1RM2hWVDBNMFRVVkJXV2xCUVVGT2FHeG9ZbVIwTWpsaVl6TjViVFpVYUUxd1lWSnNXazlZYTBaU1UxWnNSbFpWTVRsbVFWQnJXVnB0YVV4WE1HUllWREU1UVRCTmFsbDRUbFJOTTAxTVUzbDBja2N4Y3pkbGQyUklTakpqV0ZaNlpETkVNRGgyWW5nNVpsQXdhMk50Wm5oREwxaDRXVmhKVDBGeVFUUk1jVzlPZDIxQlZVSjFZVEJxZFRGV1VuUkNNbFoxTlhweVpIb3lSSE5XVEhKSFIyRklNa3BwZURVMUt5dFRLMEVyVkRkcE9GaHBlVmxKTVZOdU1IQTBlVmRJV0dKb2RrRmhZalZ3UTIxRmNGQkJibkkxU0hORmJubDZlRk5HWkdwbk9XWndjR2RsZDFrelNVNUVha0pWY1U5dmIxQkJhM0kwV20xd1EyMUZkR0pLUkhSMFZ6SktZbGgwUW5GeFREVlRiV0ZCYm5wak9IVnFOSFZJUjBSMGNGVnZTbEEwVkRFd00xTmliblZPZWswelVYVllSa1pYSzJReE1TOUhXR1ZFWTBkNlpXSlBUVnBLVVhFeFZrWTBabWd6UWpremNVSkNPRmdyZEVsUU16QmpTalpCUzNSYUwwbE9kbGgyZW5OT1RpOXNSWGRSYmxwdVlrcGlaV0ZZWXpWMlpYUlhXRlkxYWpVM1JHeHZhbWhTYmpsWk5XeFRjMEp2VWl0NVRVOHhRalJzYnpJMmF6SmxiRGszVFZnek1VbHdRMjVTYWtGNGEycGxZazFRY1dORVRVeGtjVXgzV214TVpYcEpZazVoVEdsYWFFUmxlbU5xT0hGaU1HSTNTSHBxU1dwUmVFNUJaa1pzUzNvMFFTY3BJR1p2Y20xaGRDZ25kMjltWmpJbktTazdDbjBLQ2tCbWIyNTBMV1poWTJVZ2V3b2dJR1p2Ym5RdFptRnRhV3g1T2lBblQzQmxiaUJUWVc1ekp6c0tJQ0JtYjI1MExYTjBlV3hsT2lCdWIzSnRZV3c3Q2lBZ1ptOXVkQzFrYVhOd2JHRjVPaUJ6ZDJGd093b2dJR1p2Ym5RdGQyVnBaMmgwT2lBMk1EQTdDaUFnYzNKak9pQjFjbXdvSjJSaGRHRTZabTl1ZEM5M2IyWm1NanRpWVhObE5qUXNaREE1UjFKblFVSkJRVUZCUVVWT1VVRkJPRUZCUVVGQldrcEJRVUZSUVVKQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVKSVVrVldSMEZCUVVKWFFVRkJRVWRSUVVGQlFqaERlVlZNYW10a1VWUXhUVUZCUVVjNFFVRkJSVmRCUVVGQ09EWTJOelY2VTFJeFRsWlJaMEZCUW1oUlFVRkJTRkpCUVVGRVlVUXplbEo0TlZCVmVUaDVRVUZCU0RaQlFVRkJSazFCUVVGQ1oyUkdMMmt4TVU1VlVWWlJRVUZCWnpoQlFVRkJVWGRCUVVGR2NHVXJSVVU1V1RJeGFHTkJRVUZEU1VGQlFVRkVTa0ZCUVVKTlExTnZTRVpHYmxsWVRuZEJRVUZLVkVGQlFVRkNRVUZCUVVGUlFVSlZRVWt5WkhObFYxbEJRVUZzWTBGQlFYYzJRVUZCVWpkb1NVbEhTemhoUjFab1drRkJRVTlyVVVGQlFVRXlRVUZCUVU1b05FWTJabXh2WVVkV2FFRkJRVFptUVVGQlFVSTRRVUZCUVd0RVEzZEdVa2RvZEdSSVowRkJSSEZqUVVGQlEybFJRVUZDUjBKNldFVlFOMkpIT1dwWlVVRkJVRk5uUVVGQlNWcEJRVUZEVFdkNmR5czJiSFJaV0doM1FVRkJMMUpCUVVGQlFuZEJRVUZCWjBGVFZVRnNWelZvWWxkVlFVRkVPV2RCUVVGQ1RtZEJRVUZ1ZUVKVFYxRlpZMGM1ZW1SQlFVRlJTbWRCUVVGTE0wRkJRVVZ1TjJ4SlUzUjBOREp0U21kYVIwSnBORWRQUVdkRFoyZHROR1JDYUdORlZ6QkpRVmt5ZDBGRlFsWkVkMUJ2YkV0YVUxcHlNazFCU1V0eU1VZEtVMWxTZGxZd1ZVTnZRbVoxYkhwbFNtVXJjMHBhVjNWS1pFSkpiMHRZVkZCWlRXVnRabFJOYjJ4a1NqSmthRXBQUkdkMFJqbEZVeTlLUXpkbmFVUlNXbUY0WXpORWVUaG1SRGd3TmxKaE1HVk9iemxyZDA5M2J6QkZVV2hJZFZaek1qTmlkSFV5TjFoTk5qSmlaSFV5WW1SMU1tSmtkVEpqT1dWYWRXdHdkRGxhWml0bE1sbHVaak5pWm1kM1MxRkhSa1ZTUjJoWk5WVlNRV3cwV1ZaMU1EWkNha3N6YW1KMFIzSlVRMnBZYUdsb1dYWTJORTkyVlZrclQzSmxSbkl4Y2taS1N5OXBZVTR5YmxsRllqZFhSRlJ4TTJoUksyaEJRMnAxWkdZNEwxQlpha2w2TjNwQlpqVmxaa0ZxVVd4dU1YZEhSMlZZU2tWc05HOVdXbFU1VjJwV1JsTlhZa3AxVWxSVFNXcEdXbTFyZG5oRVZHcHlOekV2U1VKTE5qWjNkVGhWVmtadGJVTnhMM2hJYjBKcWREUXZWakJhWjBwRU1uRnFTVnB4YWt4VWNXcEtlRk5tYml0TlZGQjFUVXgyZFVsaWJqWkNhVlYyUjNCd1JsSnhTMmxQVmtobGNsQktTRGxRWVVoU1JtSXdOR0ZVZEdWaE16RTRabFJsYml0Nk1sQlFSM000YzAxdlZXNUJabXhYVDA1b09XZFpTakp2TUdrMFFucEVkMjlxYjI1T1JWcE1iRTlXVkZWaU5XSlNWbE5XZERGSmRXTXlRMUJMWjA1QlYxVjBVR2RzTmxock4zbEZOVXB4WlVKTU0yNXNWbE5xVTNwWFNGWklPVXRPWVRWVmJqbEhWRzlGWkZsT1NWcEhXRTEzYkU1YU5YcEJXaTlyY2tWTVVVcGhWbE5WZUcxd04wbEVZMVZYU0ZjMGRrMVlWRUZFU1VaaVdYbHRWVXcwVm1wbk5GRkhaMmhUVFRNM1ZHOXdPRUZKY1dsRWJVdHFUbFprVnpsUFlrdG9iMFZaZHpkclZFMWFNVlJhTWtrM1UyMUZibXB4UVRWUWRVRnFUM0ZQY25WdGJFOXhMM1p4Y1dKdGNsaHhkVkEyY25aNWJUWXZZVFowUVRadmJ6WjFOQ3R5UlU5eFZrODNlRXh5Y2tSeE0weDFaMU4xTlZNMmRVTTJjblpVWVRoeWJYVlVOaXR4TW5SeE5uSkhLM1ZYZFhJemRYRnVkbkpuV0hFMFNHMTFURFp6YkRad2NEWjJiQ3R5Vm1WeFVHVmlhWFp4ZGxwNE5USXZZbFZvTDFaS1R6bHlSVEZQWmpGV1ZEUjJNV2N2TVdNdk1WZG1PVmt2UkZWNFdUUjZSbWhZVmpCVU1tTlNNRFpXTVZkRk9UaHJUbVpZZEdOYVVHRXphbU5hVkZoaFZERjRVVEpLV20xWVRrOVhUbm81VW10NlZ5dGhiWFJoYlc4cmJIVXJjSEpDV25GVFRHRTRZV0p4VjJFeVYxZHBWMjAzVm0xemVtdGtNVVUxY1ZBelYxVjFiV2wxYlRkMmJYTlliSEIyWjJJeGJuWndkSFJSTVhCM09YVnZUbTVzVVhOaGJVVldSbkZpTW1WaE1GSlpVRXRVTlZjeVJsY3hWbGM1Y3pKMFRUTjBaRTV6ZW5GTVlsVllTMjk2TVdRNFQzUmhVSFJTVDJGTVp6VndUSEpZVkdWdlRscFVWeXN4ZFdVNVFXVjBNbVowTDJGQmRWVjZaWEJ3TDJFeEwxZHFPVkZZTWpObWJXUmtXRUptWVZKWVZGSXJZMnMzUTFwNVdIa3JNRXQxZFV0MWNrdDJkWFpHVW1STFRETlpZbE5YV0VOUFkwRTFTR1pvU3pCdU1tbFhPR3AyY1VWM1RWcHBXVmhCUm5Zd2IycFlhM1k0UjNaamNFNVVORWxsYjJZemFtMWxLMWMyWjJKd1dFTXJOMFp2ZEZCSmRteFpVMVpKTkc5WU9IaHJObTFUTjNkTVNUUjFUR3BwUXpsRFZEUnlMMGxZTm1kelNtUk5UM2swVkRscmRURnFLMUk1ZUdSalZsZ3dNalF3UWs5V2JrTldOV0pRU0RGNFNIUjBXbFJMZVM5SksxZG9NVkZzVTJVeGJtb3diMnR1VjAxQ0szTlVReXRQTkZodFZsUjVUWFpNZEZSM1VEazFjbkp6TjFOU04xWjNaVzlGZG1scU1HWmxWaloxTWtGV05TOXdVMWxDY3pkRmNWSTFNbGhZUzA1clZsZzFhRWxhYUdGc1NqWlhZVmRtU25NMGNGQkthRXBtUTB4M1JGb3djREJvVjNob1NHcG9UUzlWU0RoRVlucGlSVmxIUlU1WlVWWm9ZVWhMYkhwUU9HdEtOMXBGWmtWb05qTnljeTlMZEcxSGRUQnFjR0ozUjFFM01XZHNTV0ptUjJGaFZEUkdTVVpQYTJkc1dtZFZkMnhsVm05dWRIZHROVXRtWVZGTmRUSk1Ta2hYV210UFN6ZHpjRTFWZGpWeWJsUTBjak4xY1RoblVGaE9RWGx6ZHpWamFISnFjRlp4VjI1cFpuWnFlVzg1YVdGVUwwWldhMlpqYW5STlUwVnJObVZQUzBSb1NuZDNXalZNYVU4M1IwaGFSVXBMV2pOMlNrOHpUWGxGTUdjdlpUQnBjR1J2VTJOMlExSTVaV1U0YTJJMVRrcHZTWEJ5T0c1bFUxUllOVXhIT0djM2MwbGpSWFpVYms1dVFsSXZheTlPU2paVmEzVnNRblJJVEc0dlZXWTVlazVXSzBvME1tMHlVa0UyZVdOVlVtaEZlamRsZFdKa2RUSTNaRE5oVVdaV2MwczJhSFJPTm5kU2RqZERNa2Q0VWtKRlZGZHZZbGRRWVROTWNqVmpPRGROV0dsbFRFRlZWVW93ZUZJdkx6UklhSE5UZVdKcldpdFNlRXhNV1dwUGFFVldjMVpHVkRnNVoxaGtTekJ5UWxSNlZWcHdURFZQYldKNFUwcFhjMWxrVG1KS1JuWlZTMmgyU0Roak5GSXZSVnBOTlV4VVpWQnlUbFowWmpGdU4yRnhWVk50Y0hsaWVVOTVXbWN5ZHpWdmJuaGpaRTgwTWs1VE5tOTNhemcyVW10S01tUlpTMFV4YUVwaVRtdExNamxVZDJSeFRDOXJaMGxpYUVwQllWWlllRzlsVVRsTVoxaHBhazEwVkV4ckt6UlFUMko1YVUxMFJHSjBPRVpCYjBSSVUzUjBRVEY1Y0dKVkwxWm5ialZGYWtJelR6TllOU3Q0ZEZNeGJIbFFZMlUyVkU4MGRHc3lUMnBCYWt4M0wzVk5iREJsVUdsTmFVRkJZMmhDYTBWMVFqZEJWVFZCU0VsS2EwVnpRMGhuUkVGRGVqbGlhVU5KVlhoaGQzcFBLMWQxTTBwYU9XNUtWbUk0YkRkMUwzVlhhRmhLWlc1amMwMTJjRlJHWlVOdk0zaFlUbmRXYlhKSWJXOXFiMlZJYlhWVlRERTRTWEYyYzBwTFNGVTJlR1I1V1RsNk9Xb3ZSRGR0TTJ3eVNVZFZjVVZXTVhkVVFqQkJSM0pXUm1WRldIWmpVMGhITTNGM1FWQkNOMmxCUVZJMU0zVjFPQzlPT1c4dldUWkhabGw1UlROaGFHaHNlRkozZUZSNFoycHJSMjFHZWtKRGVGRlhkMVJJYzBwRldrdE5ZekZSUlRFNE1YQjRNVEJ3V1ZKalJGVlhla1ZEVUhsUFdsTkZMelpOZUZSRWRVazNUVmQ2ZW5sUEwwODBMeXQzZFV3emFrcExNVGQ2YUhCT05IbFBZMFZOWnk5c1NWUjVVM2Q2ZVZkU0wwRkZjakJpUTFCRldFcERSVVJ5TTBOMlFpOHZVRE5EUVVjcmNqUlJRV2REVFVGQlFVSTBNbTFPWjFsaVJtaHBiVUpuV2xkQ1owNVhXVFY1T0VSQlRVRjBRMDAxTVd4TlIwdGhlRWxCUlVkb1oxa3diMFZWVG5oQ2NtZFFhblV2ZGpkMWFrRmpXVWRRTnk4MVpXbzVkVFJMUW1kbFRXWlZlbU5FUVN0T09HdENlVXhDSzNNeVNVdFlRWGRCU1VGdWIyZFFaMEZDTkRKbldFSnpVVVZDVVVKUlJuTk1lQzl2U1ZWSGJVMUNRVk5uUkZGblpsVnNTV2RaWVVwb2NsYzJibVE0V0hoT0syd3JjemMxVUdKbFVHSk9VV1ZyV2xkbmMzSk5SVkpJVTNKUk1tRlZiRzFET0VGa01qUlJZbEpCU0dwaGFsbDNNVkZ2VlhoRVNVUlVSbTVrTTBObE5DdDNXVXRsUVVVM1FtbE5lbU5uYUVWbVkxaGtNMXBzZVVSekswRXlPVkU1UmtZcmVrWTVVVTFCWVZaM1dqbDZUbEoyUjFVM1JWZGFlVVZTVTBFdlpIWlhTRmR4UVZKYVdXOXJNazU1VVZjM1RGaFRWMVZ1V0VwWFRWTnFVa2RXTTFKRU1FMTNRWEZOZUVodVRYZEVNSFYzUjNSMWFXOXhUamx2ZGpCMFduTXdUVGhOV2tGaFJGTk5NR2s0UjB0TFYyTjJhR2tyUjBsU2FHSTBlSE42VURKQ1NXWnBVbW96YlVkd04ycFRVM0phUVZncmMzSm1ZUzkyUVZCUllVaGtRVmRpWkVsUk9WWk5abVJXVFVoMFZrRTVNVlpKTlhCU09FMDNOamhqVTBoRlMwWjVSR2RPTUd0SFZ5dFZXa3hzTkVGVU5UbFJLMmRCUVVGQlFVSkJRVTFCUTBGQlMwRkJNRUZDTHk4dlFVRTVOREp1ZUZwQ01FSlVWamwxS3pVNWVXSm9RMVZoVVc5blZFTlRSVVV5VWtKRFdrRlRRMmsyTTNOUVVsRlJSVXBIT1U1M2NVOUxhVFZCWVRkV01WWm5Va2d6VWs1SU0ySlFPVGRoTjJSbE5HZFdkVGRUV1VoUU56TktjVWhaWW5oSGVUY3pNMlV2V25wdU0wWkRXVmRxTnpoSVZISkJUMVZ1VWpGR2FVdFJhRXBoYWt4NU9EVmFOVmRSYTNWMWVFNVpaV3hTT1hoU00zcDVWRmg1UVV0cFJrSkdVa05RVEhSRVVHaHhOMGg2U25kYVJYaFZZMVJNUm00d00zWjRiamR4ZW1WWVFUSkVZV1pFU0ZKVk5tSktZbWhGZEd4dFIyVmxhMlJvUTFCWkt6bDNja0ZrUmsxVlQyTkZPVkZyWVdsd04zSkdaMGw0ZDI5ck4wWXdhRVp2YW1oTWNXWnNOMFl5U1RWUVJIZzFPVTlTVDFocmJpdHRhazB3VEhoRWExVk9iMjluT1RWcGJWSlNValpOTURCUlpXcE9SbTh3TlZCUFkzcHBaR1k1TlVJd2RFcDFPVGw1UkhKSWNsTlljRXhFTTBoMlNURnpjV0pCY0RoTWFGWlpkM0l4TkV0NWJ6VjNjRUpWVm5oR1VHSXlUVzlYVm14WmFuWnBhRlpsTTNRMVMyaFdkMGszTTJwM1MyUTRZVkU0VVRoSlpDOWlWeXRGUmpjeWJTdFBXSGhuV2xsWE5VUm1ZMnBKY2poMU1raEJhVXgxT1UwelpFeHBPSGR0YURSaWMyazJhVFIxSzJWcGRDdFNiWGt5Um14TVptRk5ZemRQV2xaMk5GZHVhV1FyTXpneVZsRjBWV1JDVWpOYWRWbzBURkkzYURJd2F5OHhXbUV6YzJVeVpXbFJkSEp4YXpnMlRHZFFaRkowUm1odVp6WlBkSEZvV1ZSSmFESjJiallyUVdNMFFYQlBWV0pJUkdvM2FXSlBXR052VlRCdlJYVmFSbEpqYzJwUFUwRklRVlJhUlhSR2VubFNaVGRMVDFOYVJVVkRaamRNWkRab2NqVTVOM1FyTVRka2N6ZFZibE5MVlV0dGFFZHJjR3BrY1ROdUsxUmtkSEUzY3pKa056YzRha2hOT1ZaeGVuQXpTRVI2TnlzdlptVlFTSHA2WlhNM1IzSnpOM1Z5Y1RkT2VqTldRVmxXVDNKMU5IZGpaaTltTnpkU05HSlFOR1JpU2pWdVJFSTRRVVJ1VHpnMVpGTnJjVFZWTHpRMmVqRnFlbEJCVkhCck0xQm9WMU4zZW5nclEwMTJVelpvSzNKM1MzcE1TR1ZMZVZoVEsxTm1VMHBTVmxoc2RUWm1kalk0UmtwWWRXOVNZamxPVEZsd1JEQTRhVGRZVVVWa1pUTlBNbVpHTkdRelNtSnRSMU5pVEU5WE4yeEhLMlY1YjFoNmFFWm9MM2xsV0VSbFZGQTVSbVZTYldOMU1rVmtRekZsWTBSVFYwaGFLelZOWW01cFUxRjZOMlkwUW1zeVRHVjBWVEEyVEU0MVZqUXJhR1ZWZW1OcWRtNWhaRFpYYUhGbU5EVTVWMjlZVDJ0dVdWaE5SR2s1Vnl0S1YwWjZTV2xxUldScFkzRXhTRlZ1YUZWaU5sVjBLMU5HU0hkaVVTOXdlRUpJZDB4aWQxSmxSbWhaVVVSeWFIUlpVMGRUTWtkTlkwVTNVVGc1T1RZMlJHVnhWMnBFZFRWNU5FOTNlSG8yYTFKeVlqRkdORzQzTnpsMlNsUm1Ta1pqZHpKaGFsQjNRa2wzUVhkc1NVUkNRakJDVEdwSWExTmlkM05NYUZKbVIwMXliVlpvVVZaWGNYUjJlbUl5WlRCeFNVNWhUWFV2YlhRMmRYZzFNVFY1YkZoNFlqQTBlSE13WmxSMGRUVkJMMnRxWWxock9DOUtiVFozTTBWaWFVbHpaVkpoVlhWaGMzSXhTVkpTT0VOcVlWcHNRWEYxVkZFclJGVklNVWRLVG5SMmVEQjFXR1o2TjFJdlNWWnNkRlUyT0VNeFNrVjFXSFpIT1VSaWFURkRPRGhxVW1aTFVWVjJOMk5GVG1KRk5EZzJiblpIUVM5dFEyNVJWR2hYUkVVclFra3Jha0phWm1wdVpXazVZVlJyUzBOc1JqWTBOMU5VYTJSS1NXVnZObWxzTmtjME1GQktUVGRUWWl0dlZYbHZVMmx3ZVVKM2FVTk5Ra3N4UnpGMVRWZ3lSemRSUjJoVVIzcDVhWGxvYTJJd09WazVTa2RFZDFONE5rTk1jVTFKTDBGeFRuRk5RMmhXWjFsbmFHd3dLMk5aVGl0RllsQkpOR3BRTW14WEszZERSRXcwTVZkeGVFVlRWa3R5TjJoaU9WcEJiRUZWTURGc2FFUllZVU5xTm1KSVlVeDZOMFpaY3pWS2RHY3hXbFpyYTJWSWJVSTRUMlpsWjAxcVlUWjJTRXBhU2tkbmRFTjRZbGhuWjA1NlMyWm1WVVEyY2tWc2MzUnNaa3BXVmtZeFlqQm1iSEYzTkUxSWVIWnpPRmRoT0RBNGVXcEplbmtyVTJWYVpsQnViRE55WjFRMEsxRnVlVGR1U0d0UVVrRjNUVzhyZG1kNE9ITmhhazA0TDNFMk5UWmtVR1l5YzNObVJWb3JURXhHTkUxeldXbG9Ta3dyUjNkVVVURm1lbHBGYUU5cWVETkJUa014VlRKbE5uSlJhMlYyTUdkbVpFMXNTMjFwWW5sdVRFODVSMk5YZDAxaFkwSnRkbXBETVZVclFUaHpVVWxHWjBoMWMwNTZlRnBCU21KeVduZFNaMmhIVEVkV01rOU1ObTkyVjNweE4weDVaSGxhTUV0d1lXWmhRbTg1WlRCc1IxbGtjWFJRYWpSRlpGSlRjMjUwYWxGelIxTTRUbXhpZGxKTWF6SlpZM0p4TWpWbFMxaDBjVU4xYW5oclFVWllVVUZsUTFGRGVWTlZTVGhKWVZwQmNESlBhakYzVlhOVmFHcDVRVmxpUkhONllXRklkMVpIY2xVNU9EUldjV1UxV0c0d2JrNW1NbVJxUmxCaWIyNTJZbGMxWXpKMmVrczNjbWxoYzA1MFpURk9VR0kzVEZZdk9YcDFVbTVpTUhrek5VWnJaRE4wUWpodk9IcGxPR0kyY2pVMmNtRjFWRzFsTlRGWFJrbFNiVXhpVERKelpIZGphM1pOYkZkM1owZHBURTloWTJobE5uZFpiR05JV0ZSamFFOVdPSFUxYm5SQ2JqQm9XVUZ0UTB0eUx5dHZlbU5RWW5aeWRFOVpiV2xIVVZWWlF6RTBibXRhVWxKRlRIRkxaMjh2VVU1VVVtaGhOMHBMWlVWRWNtVkpWbUZ0TDFwUVRsaEJXRVZPWnpCNVRHMWlXalZHTDJvNGFEVktielJDWkVnM2VUbGpWMVJJYUhwV1RFNVRaa3RpTkZORmRucE5MMlFyVHpodVpuWTVWamRxYTB0bVJYbzNXV015WkdwdU1IaHZWbGhQYkRjMWIzTmlRalJVTVVob1dEbEVXblJOY1c5YWEwc3pNMjFpWkVKdFRscG1NMUJCUm5SeGVta3pTMngyU21kd2VubEJhR2Q1U21oUVlqWm9UVzR4Y0dSSk56UkpjVkkxTUdkeGFGcGlWMDlGVDJGemRqTllVSFZqYVU4eGJUWTJLMjB6YTI1b2JURnBiRXhGTVc5MU5VWldLekpNV0dzelNuRTFhVXBUZEhKeEsxQmhOWEIwVDNseldFWTNZMDlRWkdsaVlWZFNPSGhrVW5NNVdrOTBibTVRWkVaME9XVjJMMWhNYlhGblpGUTRhRmd6WVRnd1ltZDNjRGgyUjNSNWJXSTFTV2Q2ZVVkUlEzaGpOa1p5YTBKbmJVTkRSV0ZDTW1sT05tUXJNV3cxYTJZek9XODFPVXBFYkRORFVtUXZPU3RIWkdSS01XeElVRUpaWkRCcGVHWXdXSFJ4VlhSU0wzQkNRbXhUYzFveGQzSnJZVFJtWTFkcWVqTmFjbEZvYzJsRlJHTnRUbTR6WkhRdk4wbHBZV3RZTURkTVMxcGtabVUyVmpZMVdYWnBZVFJQYzFKdFltOXJTMnBXTTFGeFRXOVFWa2RZTjA1WVNuVjZPWFJYYm5SNVYySmxLelJhUjA1WEwySkZSa2RYTDFWTVpYZHhiRVUzVEZjMVJtTjBhbGh4SzJSSU5VUllWVFUyY1hoSk9GSm9lR0pFTm1SclNtdGpiVUpKTUdWV1NsRnhhbTl3YXpnd01USTNVRlJTTTB0T1RFMHpjRVkyY1hGc1NYbDFSVzVLVUdFMFQySXJibkUzV1cxaE5rNUlXRGR5TDNWa1UzVXpjMDA1TTA5MlNqTkpUbHAxVTNSRVV6azJWbmhsTVZWalltbDVSRnBvUTNCbFZUbFBVVEJFYUdKUVEzVlFSR3cwTmpsTFFXNTNPV3B2Y1hWdFdXd3pOVGw0V0RKbFZ6aEhaR1JXZFM5eVNqSXpPSGR0WVhscFdUZDFUV3BJY25sd1RGSlpNVzlITWxsNGRUZE1LMnMxV0RRdk5HMW9MM0JYY0RaSU1uaHpNbUpHZW1kUVMzZHdVV0ZYVEVsUWEwNW5OVWRQVmtvcloxVlpkRWRoYzJoak9FMDRWVWRvZWs1aVJVeHNORlpyU2tGUmIwbHlXR3N5WmxVd1dWQkNLMGh6UkcxS05tcDJkME5QU0cxRE4xRkpiMVZEU25GQk9HUkROREJtWlRGRmRucGFSaXRvZDA1bWNpdE5kV3RzT1RoQ2RVeHFja3RQVGtaUU9WQnhTMXBXZDBVNU1YbzJiWE5oVUhacldVaElWRFZOVTI4NFl5dFNaRVZCWkVwQ2VuTmxabUZUV0RCbVdUQmlNbTlGT0ZWa1NteE5ja2RoVWtGSGFWbFFaemQxWjJsWldsTnliRUpEWm5FcmJXbFZkVGxxYVRaR2MwNXNia1JvVURoTFltRkNjekZoTURaemRFUjNMMkprWlRneVRsUXpWeXMxSzAxWU1VcGFUMFJOUTFrdmFVRXZkMVJGZG5oYVlsSm5XVlp5VWtGdldYbExPVzgxVURsd1NXUTViRkprTXpWWVkzWk9hbEJOZWxSTmVUVldZMGRMUmk5VVFsVk9laXRXWlVKQ01GbFNUVE5VT1ZGc2JTc3dWRU5PVldkaE1YRlRTVFZ2TmpKQ04yRlVNa1JMTm5CYWJHaEtXVmRSVUdSQ1QzUjRhbGw1VkRCYVF6WlNXRWRyY2psVVNFMTJUM0ZsYzFOSmMzSTBXVGw0TmsxcWRFOHhXSGs1Y0hJd1l6azJWMGRCVlRSVWJ6a3dOa0o1YlRsMWQyb3lhVTF3VERaRmVHd3lkV1phUzFZdk15ODJWVGRFZUZncmVUSmhaV1YwYWtaSVdIZ3JaRTlqYUV0TU5WSnRXVlExZW1wck1VTnllSEExYlc1UGNFNVRXbWRUYkhaMkwwZDVkbk14V1dkR1drOUhWMkV3V1V0bk4wNWtlbFJ6UW5sV00wTktMMUJZWVZwbVNtdHFWVXMyVlN0YUswaE5WVGwxYjBORFNISmpaRWxYWmtweE0xVnNkVGx4WlRoSmVGUk9NRU13T0UxalNqVm1VbFJRU0dKV1JUZFFOa2RKYTFKdmJESjRSRXB4U1ZwelRGZGhaU3QyTURKSllscEpTMjVGY1M5V1VuUmlWMHBwV2xSS2RraFhiMFV5YTJkT1RTOU9RWFp1YjFCVlZFMDNUblJ3ZVRGTlIyczVTMjlCT0hWQldVNDRRa0Y0YVVGV2NGSkRkRlZYTW5wRE5tZG5hMDQxUVVGNVYzTTVha1ZxTlM5YVNqSTBhRWsyYUZOamFrZHllVkZ0ZG1veWVTdGxSazgzVnl0RU15czVkVFowTnpGbU9YQTVTekZWZGxaWVNrODNjbXRXZEhsS2VISk5ibGxwVEZkc2VTOTFlalpPVTBNelVIY3dZbEk1ZUZneGJ6aExNR1pLT1d4alpIcFFXbUoxY1Rab2Ewc3haVWQyT1RkTldGSlRiVzVhWWpsSWNWb3ZMM2x5YlRsSlVGcDVVMlp5VURaVFpreDNhRGRVUTJsbE5ISmxWRFF5VERKTmMwMVNObmszTURsNk0zaDZTemR4V0dOc1RtMWtVbnBFWkRkclpWZDBTbEkwZFRFck1qZ3lTVzFHTmtScVdrVktNRXBhWVd4aUsxSnRTbTFESzBkTGRrNHdlWGd4Wm1KblRtWnVlV0UzYm5CSlEyUlFhMkpHU0ZvNGNWQlRWRWhtWmpaclJFaHBOSEFyWld0b1RUbHVTazgzZVZwMUwwaDJLM2c1VUd0RVdrVTBhRVp2TDFkQlNqUndOVUkyVVdoSldUZHlaRVpqY0dZeU1YZzNSazByZWtkeVFWY3JWRGhzZEVWWlZHZ3JRMGswTTFwMFdFRjVVRWh2TUVNck1FeDRlSE55TXpOQlNHcHlPV3hwUldwSVNHWkphVXBxVmxkbWVTODROa0pRWnpjMFdsSTNTVVU1YzNsNFltWnRabGMzTkdka00xbGpVbGhITDFadUsxSklhR1F5VDNaMlZtSXJjWGszZFN0T2NtWkJaMlFyYVVwWGJIUTNlSGxOYnl0d1puWlZVRkZhZERKdVdFcGxOSEp1S3pkaUwyVmpjVU14VGxWeEwyVk1SVEpUU1VFdmVtbFJlWEpuVldNMFNtVnhlazVIUW5wRmRYZzNha3hwTUc5WVZ6Qm1WSFJCWm1wUk4zSTVXbFZqUkhKM01IbEZiM0pEWnpGdWExVlliMmRHTm5SRGJEVlpZMlZGVVRaQ2QxUmFZWGt4VkZwcGFrMXJWWGh0VGpsUVJtOHdlSFpYVm1zMWJHbFZkekpyWW1GMGREbGlORWhDYURCc2QzUnFiV0pUT0ZSVUsxRkRSR2c0VTBsTk5HdE5SVW92TVdjMFVFOU1hV3h2UjNoeGNpOVNlUzlZUzI0NVJGQjVXamRsTVdScFREZFNkR3hFTmpnMWEzQmpSRFZJTnpWV1dXVkhhMUZNSzBkalprYzFNVEV2UVhSa2VuUTRTM2RLTUVwSlJtMWFjbFZIYTJ0T2RUbGhiMDFhUzB0VGNFSnlWRkowZDBoTFFuQXhZemxHZFVaUVZXUm9OR1ZPVTBSb2VtSmtjbUZZVjBkaGVuZEhjbXhKUnpsRVR6QTJZemx6WVhnclkzRm5PRGwwWjBOdlFWWkNNbk5UUVRoTU5IZG1XbUY1VFdaaE56Sk5SMUkwU0ZBd1FsTm1TV1ZJZFZKNk1FTmlVRTl5TWpGT2FVcFpRblJHY0RWWE9HTk5SMnhHV1ZZck1UTlJTa2g1VW5oUmNFRXZWekpPZUZOalIxcFhhelI2UW1KbFRUUTNPRmd6UkRGSlJUTjVTRUoyV0VSbWVTdFBiR0kxVEhJMUsxbzJNR2sxY3pKWU1HazFPU3RYYlU0NVVIZGFOek5yTkZrelEzZHdka2x4ZG1SeVJrZ3pkVXhJYm1wMU9UWnVOMlV4VUdWNFJrTnJjbGt2T1VwUVFYSkJWRkI2V0ZSTFF6UmhZMHBWY0ZkblNFVm5Oek54WkdoQ1prSldSRTRyZVhvdlduTlhNRkZpWld4a1ZuWndZWHBDWWs5NVVpOTJXaXMxWmtaeFNEbHNTRkI1YUd4aGNuRk5hSE5pYlVRNVNqTjBXUzkzUmt4eGRtVm1hRGhUZDBKMkwzWkpTa2xQVERCa2NEVkNTalZhUTBsM0wyd3JlRGREWm1Zek5WTlVSbE5uVlM5bVpVRkVURTUwUTJoSFRuQmpZVkJoYUhKWGFqbEhiekpMUWxONmVpdDBhbFp2WVdoeVlWUktNbFEzZHpCSE1HVjFkbVZ1Y3pBM1QxTm1WQ3RxWTFWMmNIaHFjbUV6Umxsa2NWUnVTazB6YVZjeFJHSllUVUl4UkdkSWRVMXJUVXAwUlU1VlFUTjVZVVpTVFhkdGRGaHRiREZYTDIxVmRWSmtZVmxOVjNRcmRFTmtjVmsyYzJrclpFOTVPVWh5TDA5U01FWkpZM1I1TDJGdkx6TnNRaXRLZVhOcGNGUmpjRzlyUVZveVREWnZkR3BqUm5KV00yRnVNazFvYldaRE1VeE9RV3BXVWxkVlJYVTBNRXBUZUc1V1dISkVORkY0TXpWNlpXeDZjVFo0VUhWeVJVVkhabEJ2YVRGelNERjBSRE5ZU1doVGNEVXJWV2hZUVVndmFtTkZlRXhJYUVwQ05EVjFaVGQxYkRRdlJIUXphM0lyT1V0Q1MxQklVMGQzYnpOU1FXRjRjRWhxTXpCdk1ERTRaMUExU2xCQ1FTOTFjblZ2VFRWS2VsWjZkQzk2WVdkWFVpOHdTV013WldGalQzaGxOSE52TVRsdFkyVkRVREJsWjI1RmNrdE5OVUZxTm0wNU1pdE5VbkZEUTBWR0wwbHBPWG80VWxGcWIzbHJNalZyYVdnek1URndRMmd6UzB0c2VHTkxjM0Z0TUZvd2MwRnZhR3RZYVhOblZFZE5VbmhNVVhKTVZFOXVaVlJSVFdsTlEyRkdaMWhSVTI5SUswSldXVXRsU3pGclMxSnVOak5rYUV0UFNtSkhOV2RKY2pRd1NIbHVRM2czT0hFMlNsVkVRMDkzZUd0dVJVcHlLemgyVG5ad2EweE1ZMUo1WlRGWFZIcGtNV2g2WkV0R1RsVnNjV3RWUW1sU2JXMTVjalpSWW1wUVpFMTVOVFprU3pka1RWaHdUbXBTYlZweVdIQkhibnBWSzNjNGJYQlpjVFpYVkZkR2VIRnBaVlJ5UXpGUmFVNHZSRTVRZVZkUGVXNXhkMngzSzJnM05HZGtWVWcwWkdsRlEwa3JUMFpJWW1rdkwwVnNOMUZtV1VWbGRHcDVSV0l2V0VNcmExTTBWMEpGTWtaNFJHZEVjRk5MWVZSSWVFMUthVUZQVUZGc2RqRlRlbFl6YzFKMU9VRnZORmhuTTBod2VIRTBXSEY2VVhFelJYaHJMM0k0VHk5NWFqRnZNR1V4U1RkSWJYUmxXakpZWmpOUVJDOU1aWEpsVmpsUFRtbG1WakpTV1ZKWVFuaGpVVnAyVVdRclNXUk1VRWhVYnpSc1RWVmxlSGd2WkRKM2NXZEtieXQzTjFkbVlVd3ZWRXBvTWk5c1owZExhMUo0UlVKbloweDFZMjlSUVRSdU0ya3hUVEUxTjJWQ1psaENXa1JxVlZaTlNFOWxVMWh6TTBwQlVWZHdNR05yWVZab1dIVkpZbVY0YVU4M1ZrcFBTMVJYY0dKU1RtVlJZVmhVUVdOM2JIQnFRVFpCVEU1Q2RuQkpia3AwUjFselUzY3plVTFXVm5kNFRVRnFSazV2V2xGQmRGWldiMUJ0VkRWellscDJSM0ZtYzFOQ05sQkdabk5YYkVwblVETkdlV1JJVERCR1JYUXlVV3hPWjJ0dFoyMUlMMkV3UkhKdlNrSlJObGRxVVhBemNWaEtWVXBwVEdWcFJVcFVORXBTTTFCMWVIaE5XRXhNVjFwaFVuWlRNV3hIVDBaTWFYaG1SV0puZFV4cFNEUmlkV0U0TjNaRVdYSnhiVFJ1YXpNdk1tMXNZakJ4ZGpsalYyVnBiVGgyTUVocVNHMHJOVlp1ZFd0eU1VOHpkSEJsUkhKamQwbDVXamc1VVhGM2RtY3JjMlF6UlhSbllWQnpPVWhRUW1zM1RtcGhPRVZJZFhSS1NsSkNOVlZzVGpJemFsWTNlVFoxVkZKS2FUUTNiVFkwVGtaME1Wa3pjbFJXYldVNU1FZFFNbFpWSzIxR1MzSm1WM1I1TTJwWGNFcFdVVmt5VTJ0SGVubENabTExWmpWb1lXeG9ObmRuYlhWd04xbHlZVmhwWXpoakwxaEhNbVkwVEdKS1lubG9aMlp2TURkeFdVdFpOSFZVYjNRdmNGRnhSREJOUnpWeU16ZG1jMUJNU25SMWVXUXdLMlZ2VjNaM1YzUkJZWEZ0T1VwVE1UWnpSREV4ZGxkaFV6ZG1RbXRWWjIwNWR5OTNWR0ZvY2padGRVbzVOVnBqZEdSUFVXMUZWMjVaYlVadFJWRlJSU3RDYWk5cVoweGtjM053YTI5TmJIWnNlV1pZYUc1bk5ucE5UREYyUkdzMk5Ea3ZkWGhJV0d4SGNHcDVhR3Q2WTA1eVVuaEVjVEZWWWtNMVFXUmtjMkl5TlhaME1GSnBUa0pHVGxGWVdYVkZWelZVUzNvelVqSnlPRWRPY25SSWRXdzBPR1JIYW5FeVVuWXpWSEF4TmpBeVJGSkVLMGxTVlZaTlRreERjMVZxTkc4eFVUUlJhWEZMVEZsR1pVMUdXR1VyVm1GaFkzZHlNMk5ZT1V0aVJVaHhhbG92V0ZJeE1EZGpka1kyT0hsUk9DdFJXV3BIVkZndlpteDBjV0ZrYURaWk5WaEtWRnBPVjNaUGJsVllUWGxwVUhKV09HVXlhRUZCZDBkM09EbG5lblJXZUN0WWMwZHBNVkpMVURsS2N6SkJXRE41WlM5UVZIaDRTWEp0YmtseFRFcFRWMVZpTlhnMFZtcHpZbEZQZWxSNk5sSXliSE41VFRjNWIxcFBSMGhtVlZaS1FYcFFlSG8yVmpCQmMyMWliazFKYlVSNFVVTnZZMDFJVjJKQllWZzVOa3RQTTB4dVJtbEpWU3N6WTBWcWMxcFpZbkUyVEZsdmFraFVhMmR3UTJoaFowcHZhMHBIWTI5dEt5OUhiWGx3WkdkdFlVMTVaSGhWWlRkV01XUmlRbkZ1UjI5MVdDdFRlbUZRTHpnelUzcHpOMk5RT1RjMU5EaG9TelZUWWpaME16Vm1aMWhTYURGTFEyaElkV0ZKZGt4NVpIWlpXRnBsU0hKSVkzUlVSek5aTlVwc2RrWmtRVEJxVW5CVU1teE9ZbnBNVUcxTVRrMVpjaTlCTlRoQk1YcE1WbE5wUTJWS2VEY3pVMlptTjJVMkt6ZEtTMjA1Wm5FeWJIcHNVa1Y0WkVWYWNGaHJiRXBYWTI1RFZYTnFWRkJ0UTFwVGRXbEJhVk5OT1dKaWFtOTNUVzloWmxsMlFrc3lhR3RhYjNkcmRIcHRheXRYYW0xM05FeHBlRmt6WlVRMlJqZGhNVlZXVG5JM2FEbDJSa2d4TW5Ca09HUTNWekYxVTBSRVpHOUlXRTR5YTNablNtOWxlbXBRUkZabWRFRmxTRVp4T0V0dk9ESkhNVGszZURVemRFMXFTVFZ1V1RWM1pWcFhURlJRVGpOcFQyNDVLMk5aUmpnMFpETm5Sbk5rVTJSUE5EWmhMMHRKVDA1TmFrRkdlbVE1VUd3MFdrNXlZbkZoVlVoNFJEUlBNMVJKYVdOeWMyTnJiRzFPVGl0ck1VMVJhRmw1T1RVNVVGaE1aM1JwV21OaU4wdDFSSEIzZWxKa2IwTk1SbkZOVkhKT1ZGUlBSVGhZY0doSVJHMVNaM0ZDWjBrelNqZFFVbEkyUVdGWU1uVkVVMHhZYWpWTVZVdFRXVmxGUmxKSk56ZFRjakJtVTJ4YVJGSm5OazVOVVhsQmNURmlVeXRYYjJFeVFtYzFTRTFsYUdnMldITlNNQ3R0YTNJNWFUY3JWRXRvWm5CamVUQkRTbnBwY25vMU5TOXRTbGQ2Y0hZMmFGVTVURTFDWlZkbFJEQXJTbmc1WjNWaVNtcGFNRTlrYnpSWVYxZDVZaTh3Ym5SWldqbDZWekZJVDNaVWJuTkNPV05oVlN0VFpuTmlkRUk0ZVhOa01pczBaRXhGTlVwUlJXRnhVMU5aUmxnMGNqRlpUbkIyUWxBMUt6VkVPRmhaTW5OMVFqSnBPWFZhTDBSbVpqRjRablZsY2k4eVFWSlBOME5YY0VwSFUyRXdRVmhCVFZkd1RHeFdMekpXYmxBNWQyTmFUbkJEU0c1d1kyd3pXbWhrVlZKNlVVODNkQzk2WTNCMmJrMXllVVZ5Y1RoSVdIUjVSamMwTTB4ekwwNUpTRzVhUjFKdVVpczRaRWR3TkN0bVNtZzJiVlIwWjJSVVZVRTNWekYyWTJ4WVYxUjJOMmxLUkhCQmFuWnFPVmQzSzNkeFRrRndUa0lyU1RBMlRFUkpVVFpaYUZJdlpXVXhlRGhaTWpKMVNWbHJZVE5QVHpoalFXeHpaVzVWTlVkaGNrSmFWVXRNU3k5UFZGTnBaRE56ZW10cmVTOUtkQzh4YTJWS2JIcHpTMUJFUVdkbGFUUm5Xbk5qV1hSNWRYaFVOVk52VnpSbWJqbDVlSEZIY1ZrNVpscExUVVkyVEVabk0zTkViRTF6VnpaTWFpOXJSMmR3VlhJMVdIZEZUbXRsY0dvNE4ycGpUVEZqWkhKU1pTdGhXRzlTYkhaNlpHNWxhbWxXWlVsaFZUWk9UalkzWWpGMFlsTlRiMVJ2UVRSalRWZFhaekpGY1U1S0wxbG9jWGwzTjFvNVRtUnNNMEpYZUhSa2VYVXZLM0U1YXpabGRrZEhjRVY2ZUhWd2ExbEhTbnBRUm05cFZEWmxVRWRQT0d4V1FURlFja0Z6ZVZoUVozUkpNbkJQUVhORE5HNUpLelZZUzI1NFZHSkZZVTA0ZW5OV1pqaHpibE5rYmtFemNuZHVjRUZqYjFFekx6TmliRlpqV1ZjM1JWZDFNSGwwUzJWdU0wSnVZelpMYm5KQ05URTFTWEZqY1dOV1RERTJNRkIxZVc1VE4ydHVSWE5RUTA0NE9VNTZXRkYwV0ZwcE9WbFROM2xZTjBsd1ZXMTROMUlyYjJSeGNreDZWVlJyTlhoc1YyNWtNalphU21wemFXUndjblZDVTNWeVp6TXhjMFJYZG1aWldHZEJVQ3RIUlhOMmQzRm1XVWM0VjFvMVZubHZWM012YjBSR1dYQmFjbWxzVkZkTlJFNXFWVGxNYlZoYVJtUlRSVmQxZUZCWWVIcFpOM2w0ZDJVcmMyaE1TRXh2Y0RrNVQyTjROMlZITkVkQ1duWlBNMVJrUldsaFZ6TldLMmd3VjFnNVVtUnVTa3hFYkdwTk1GcFRNa0ppWVdWRFVtcFpSa2g0TkdsWlJubDROMlJRZFVoVEswdE5aQ3RHTVhSamJYUk1NRzlHUjB4Q2RGSnViazFCUkdFMllYTXlURkpUYW1ScmIwSlpVbVZ3TW1zdmRsZDBiRkl6VUdsUFkyY3ZVRmxhVTFkV2FYUldWVUkyZWpOck5qRlVOSEJsWTBneVdFOTBTMDFSZEZsbFRGbDZSWEJhZUZOdU5WY3pTbWxyV25wV2JrZE1PVXM0ZW1sTlVqVnlWRU5hVUVadVIwNVBSbUZVU2pWc01rVnJTblV2TjB4bFprcEpiSGcwWjNoME4wRjNObXRPYjNRcmJFVkpWek5GUTBObFVEZG1lVm96UlZOWmRHazRjM28xYnpCTFlYVnBVMFZaVVZkSU9IZG1WMjFXTDJGVVdURlBaMHBQUmxJM2VYSTJPRE5PTmpKemREQklNalJOZW1sS2IwRmpWVkpDU0V0Wk5ucFRaMUZxU1dwUFZqaHNZVnBMV1d4NVNsTnpVVk4yU1dJclVVcEhVMUl2V1VjNE9HaGtVMnBrZFRBek1uUjBiMDh5U0RONFFXaFhjbEpCTkVnNVUwUXpiVEZFUjNONmVHbDRZeTlzVVdoU016UjVaRWxKUWs1MGJGUXdVVVYxYXpBMmNETTFXSFZIVkZKVGNXSlJVRlF4UlVsYVpVeHVVMHRVWWt0M1lYTXhRMDVqT0VaNFduVnRWMlpMTjJWaldXVmhZalkxYjA5T1YyUkVWRWhYUkdwSWVuRldOM1JEWTNkdE4yRXpNbWxTT1d4UWMzUlpSV1ZqTWt0SVJuSlFXbVJSWVVabFduUjZWWEptVUdkNU4xWkZZVXBEVmpFclYxbFpWSE5OUm1weFpqQXZaM013TWt4aU1qZzJTR1ZrWWtWb1RsUTBjSFIzY0d4UFpEVnNOV0ZWYkhKcGJuRlpiUzlWYW1SdWIzVlZjekpNYzNvd2RHcGFlVXRtZGt4aVFUUTVaMjFPU2tNNGJERXdiRTFQVGxoYU5WQTNaMkZHVkVsUlVHOUJZa2hDU0ZaM1RHNVJXVVpUV1UxbFNFUjJSM1JZYWtkWWJqQktRakU1S3pGUWMybFZRVk4zZW5ORE5ITXdNMGhxY0VSRE1DdERSRmhMWjJwaVFtbDVPRTFDVldvM1RHbHJiRXd6VmtoWU16TXhObVJLZGpCdU9HUlVVVkZQVTFOWVl6QXpSVEZTYkVrNVprRlZRblF3V0U0eVYxSXlOMDVwY0ZkbGREUXJXbE5YTjJ0MGNYUXhNVEJIZUdsMlIyYzRPV2syU1hReGF6aG9ValpVWmt0cFFrMUpUMjlpYkhWUWF6RjVlamhaU1ZaV1ZqWXlSVWxZZGpCYVVHbzBXa2t2ZVhKallVUk9hR3AyZVVOMEwyTkZiV016TkRKbVRIcHBkV3RVTWt0MlNYQkJUV1JaVGt3eFlUWXhRVVJxTUhsemRFRkRPRWxYYWpkMVVWaGFTakpuZG5kcFlXZE9jekI0YUhwbWJVWnRlbGwwYUV4MldXcGhRWGw2ZVVaUVlXMUZka0ZJWTNZMFpscERWbEJMUmtkTkwwSjVUbEF3YkdNMWVqRmlNMlZMV0VKaU9GcE9jV1ZzY2xGeU1tRTBhbGt3Ym05dFR5czVUVWtyWms5VWExazJOR1IzUldObWVpdHNjV0pZYnpaV1ZHSXdORkl3TldSMlEyeHZSMnAyV1M5aWNraHZjR1JvT0ZGNlkyNWpiVGR5Y2t3eWIzY3JSRWRpY2xob2JXRXlRMUZ4UzFGekwySjNhV1ZNS3poTmFXYzVZVVZhZUZkblRuRllRMkZMWTFjdlVHWXZaRXc1UnpsMk55OXZSWFZsTW0wck0wcExaRkI1Y1dkWlVHNXdjV0pJZVdnNE5qUndRVmhTYURNMWRVUlJjVzFPU210S1RrdG9TbTVLZWtZMmQwcEpaV05SUm14c1UzQkZLekJWY1ZKWWNVUjRVa1I1V201cVdqVk5hRUozZVc0dk5UQmxObk5hUlhBM1ZGcDBjbWxoT1dabldIUTNZbVJ6VlU4M1JrNWhNVmMzZVhoSkx5OTRTMWhhVmxoTWNrY3hOMEZuY2xWUldYTkVRWGhqU0hGUmMwTTRUSFFyVXpGNVdGWTRVRWhaY0hVeWVYVlZkWGhtTlN0U1Z6VjBiRlYxYm1sSE1tMTBiR0V5ZFZKWU5uRlJkRlZCV1haVlRYZHZRMEYzZGxsVVFXZG5SVFF6VVdWV1luTllUWE5TUlVOYU4yY3hVMHhrVkdZMFFrbGxaMjlPT1Vvd1ptWnJRbnBUUWk5UVFXd3JValZPU2s0NUwxSlRjaXR3VFZjMFZ6SjFPR0ZrZG0xUUx5OWpka2N3VkdaMmNpOXVWbmRJVVVKT1duUTFOVGRhZWt4WlRsUlJWbXRDUzBVd1MzTm9VVWRuVTBOQmJUbFNSa0pSZFcxRGJtbHZRVWxWY0ZNeVN6TmhlSFV2WW1WRE0ySmtaM1pZWmxoME56STRkSHBMT1hJdkwydDFTR1JsZWs1S1FuVllPV0pXZGtkTU5VMDNXamcxZERVMU4zWm1SWFJDZDFGbk16QTBPWGhOVkM5UE9GVm5abVpOUzNCQ2NEaG5iakZSVHk5Vk5qTnZOR2MwYVVseVZpczRWRlprWVZKT1FYWjFSMlZKYVhORlVHSlJkRXRZU1RoUk1UWnphSGhJZERZeldqUmhjbXRFTmpSMlQxcExjV3BHYlZoWFduSnFkRE5vTWpoallsVmtSVmROSzI5bVdIazBOSEl2Vm1Nd2FIRjNkR1JwYTNSWVRFRndOVlZ3VVRGVWVVcDFPVXN2Wm5Gc0wwRjFNbE14ZVVKNGNUQm9kRE5QYjNBeVYzWjJTRk40TTBOUmJWTjFUMVJWV25CUk1GUmFZM1ZVZFc4MU5VOXdPRnB5UzBoVVYzRjNjWHA2UlRGVU1ucGljR3gyZGtoTU5tVktkakJqVEM5Rk1rOXJWRm94UlZWQ1JrbFNVUzlsUzBKMlV6aHBZa0ZsZUVWV2QwUmhWRkptYmpaNGMxZzFLekJoUWxSeFlqbFRhVzF5UkRWUVMzZFZVRkZZTHpCc1VrNU5OMUJ6UkVadlJHeG9VVkJzVVRCUVoxWk9aSHBYYlRjMk0wNXlXRUY1YWxOaVZHRmFhWFpxVUUxcVNVRkthV3BuYW5ZME5XbFliemRWU0hWS09HVnNWbFU0UW5WWmRqZFJZbWt4Tm5aTVNHNUZMM1JpTnl0b05FeHlOMVpIZEVsaFJVSkNaRFJPYm1aVlpDOTBWMEl2Y1Zkc1RGWXJaRXhLYURNM1JXdzNLemxtU0RVNE1Ea3JiekZzSzFWT1ozTllPR1pOU0RsalYyWTJTU3N2YmtGbWRUWnVhQ3RZUVd0WWRYSXZZekJXYW5SUFlXSlBlazlpVGpsNk0wMWhjWHBrY25WNFRIZFVNek5YTVdadVR6SkxVR1pGWkRremRETTFOMDE0TDBaVlMwRXphRXAwUlRsNWN6UlZaREJ2Um1KS2VtZGtSM2hvVDJneVJEVnhOazlEYkhZelJsRnRlRXBtVEVWaVZYTllTbFZSUlV4d1dVWkxWR0l3Um5reFYwSXpibXMxU1dwMVRtUmtlakJWVjBKWlZEWTFOblpvWTFBMFduaEVTbFUzVkhFeVlUVnpOVEZwUlZKU1VHbzBaVTltU0RReVYyNVZSWE5oV2k5d2NHazRXVFZ5UVZOWlJGbEJXbU01UWpsd2IwOW5XVGw2VjNkUVkySjBRbkVyUXl0bWVqRlVhV2RFV2pOUE5TOWtlRXgxWlVNd2NtVnJVM0kxUjBGWmJuaHdWRFY1U0VKWlZGRmFXSHBRUkZnMVJtVXJjbVZCTTFodWFEUlpUVWhFT1d0alYxVkZlRkpxTjJKNmVXRlVValZWUWxBMlZsVjNRMW8wY21nMlVubDNNamhCTUZkSk0xTnpPVXB1WldjNFJtYzNTMFprYUZwRkwyNVlibEYwYVdjNVMzcFdibmRsYjFKMWRsQkJUWGd3U0RkUGFsZDZjbUZET0hGc1kwNVZRWFpCYWpWT1ZubGFSVkF6TVhKd1R6VmpMMjU2VUdkaFJpOXpTbGxOZVM5WlduTnBVVTByTDFKUWVrUnFWemhwUkRKaVFrVmtVMjg1UW1KNlpWSnphMWhtT0hBeGNHOUpWMngzYkZCck5XVk1kRzFpVHpKNk5TOW1iVFZZVmxjMWVXVnROU3RoYm5Ca1RHZ3lXbk5NYzJwbWIzUldkVXhwYWxsdVRrZGlialZ4VW00MUsxSnRieTloVWxFNWJVRndaMjRyYkRCcVJVOHpXbmR0Y1UxbVVIQjBjbk40Vld0SVNIVklTakZ2VEUxdFowRkRWMnAwV0VFM0szazFiRkVyZDJScldqaDZZelJNWW1SaWRTdFZVMk0zVWsxdlF6aHRValZGWkhOTFZ6TmpSMnhMVWpCbmJGY3dkSFZOY2xaWk4wZG1XV0pqZVRaMFQwWnlNVFlyWTNoc2JGcHdiVE5MTkdaSVVYWXpjeXNyVVdKQ09YQm9Oamh5UlVGaE0yWkdWMEpKVGxaVWMyNWlibkpKVTJNdlRrOVlSVGx2YVd4bE1IaFBXbTAxY0ZaVlRFWTJWRVZvUVZGWVFrMHJTekpOYVN0ek5tOXJjVmhVUzJGSmRYbHdUbTlsWlRoa1pEQjZNMnBKYUZoTFRsRnNRbWRUUm5WeWJGVXJiMk01YTI5eGVGRjBUMlZOZEdsRk5VUktLMU51Y0M5eWRYUnpjRXhqVjFka1lrdGphSEpLVVdScVlYVnBPSEE1VTBKNVVEUnhiMkZJUm1OS2J6RlZjRlIzYzBsUmRHRmhTemczYWpkRVQxZHhhbFJNY0dsTmVVUlJORTFNUTJ4bU0wUkJSSGcyTTJJMVNXeDFaMVkzVjB0bVR6aDFWRFF5VldwbE4zRlliazk1VVZsdlVsY3pXR05KVGsxRVdEbEhaRkppYW5Zd01ucFBUa05LY1dWdE5ETmxhMUUzTnpkeFpXdHVXbWQ2VmxGNVVUSjVWRmc1ZG5CelRrZHFPRGN2Y1U4dlQxbzNhMVZ0YVVaeWIxSjVZM0JKZFdkSFl6Y3lkMWhUVTJnM1RVVlNlV2xMTjBSbVVDdEdUWEZFTUZSRlVGUnBlV0p3T1hJeFQxRndZWFp6V2pSa2JYcDBZak4xVUd0c0t6TktPRmN4V1hob1R6bHJlREI2TVRsbmMxbGxlV2g2Ym04NFNIWnlhMWM1WWpoWVpYaFVUV1JwUVZWc1MxTTNVVFpxY0d0dlRtZ3ZPSEo2V25kSk5qbFBOMmRLTDAxTmVFbGtXbUUzUXpKUFRGaHpZbW9yVlVsSGMwa3pVbEJsY0dObWFsVkpTWGhUY2s1SGVEQjBhWEE0U1RCTWRsUXhXSHB0TUhZeVNsUkNhVlpQZVUxc1QxTnpla3BVYlZwS2FqRTJLMlZQVGpaWWMyRmxhWEpMUzJsaVRtMTVjR0ZwT1ZaTVZIRlRRWGx5UkdkQ1UwRlBVa0Z3VURsblNrNTVUMjh6YWt4UVFYQkxkVVpDZFVZek9XUkVSekkxZEVaNVVVSXpTbnAxVmxGaU1IbFdaVkkwU1hCcGNGZFNla3RuV1hKaFJYVTFUMUZCWVUxSU4yOVJUMmhVUmpsbFdYVldjMEpZUTAxbmNqaEJlbTVVVTI1alJVeG9lVUZPU25kV1RXNXdZMFkzUVRkVFowdHpSak5rWTJKSE4yczFNemxRTUZkTWExWjZjUzlEWlU5VFQyVktXR1ZJVnpoT1luUmFaSFp5UVV0TGJsZFFXRGRuUVVseE9UVnNkbXBpUm1weVp6TmpaMkpYVWtaT2NrUkVTREUzZDA1RlpFSnJkeTg0TXpSaGVrRkxSSEp3T1hWRFJreFpRMjFuWkdobVluZHlORGRTZERGcGExQlZhazFCT0ZkWE4wVjBiMHhYV0ZsR2EwUm9iMDF0YUVsck9YaFBZa3hQU1c1YWNrTXpXVWRNZFhjM05rcFJSbGwwUlZRd1p6bG5WbFJOTTIwM0wzUnRNRVJDVWs4MFFrZzVWbTlQZEhaVVoxRnFNbVYwVFdsamNuSTJValkwWTBwcldsTnBZWFJrY1VscVdWWnlaRzF2VkdOM2NrOHdURFJIVmpKYUwxSTVVR3BuZGxOMVJFaFdkek5QV0dsdldYQkRPSHBvWlhwekwycDRjRXhGTUdsc2FreEtXV3d4WVRkWU9WUXZkbGRyWjBaalUzWnZhbFYzZFZneGJFRnVSMWx6UWtwNGMzQlFaWGhqTWxWWFozSkZTblY1VVhCTlUzRjBVek5ZY0haS1pGTjBSRzUyZEdwNk5rbHRVbkJWYkZRd2JFbzRlVzlvVWxwWFdYRnZSRXhuYlZWc1RsZEZRbE5WYldsaVdGcHpkV3MxTDNkcUsyY3ZUV0pzYjJOR2NVTlBiaXRGVEc5cmJUQnlWbGxRUkdWdE5XUnlUVEV3UWxodVNFTm5lbE5uYkVkbkswbFNPRUp3ZDFFMFF6Tkhaa1lyTm13d1FsQnpaVWxRTmxRMlFsaHBTMFZXT1VWNFdVSnBhWFZhZUhwR2F6ZFZRalJIYkhRNVZubHlLMmRzWVZWYVlUSmhhUzlRVjFwVFlrdHNSMDVvTDJ4dFYycFhlRmxYWkRobGQwbHpaMHR4ZDBSbE9WRXlVRzFDYzJoS09GVkJTekJTY3pKUFMwWjBZbGRzVXpoS1JXOXVLekJFZVRoTmIwZGpja0YyZUVSUkx6QkVSa0pSUm5OaFdITlBORkp3U1RkNWJrZEtkR28xVERWNGRIQmFPVm92UWpGaWMwc3hkamhET1dwRmVETkRPWEp3Ym5ORWIzQjZTM2QyV1RRNGFXRm1SSGRZWWxsUmNHaDFlbkJLZHk4dlNtNTFXQzh3VjNKbmF6WmliakZFY2pNMUx6RTRVMnRMVUV0a1JWSnliak5CTVZST2VGaDFabTR2VEZKTFdVNUpOVmR2YjFWNFZVeG9WV0p3TW10dWFtVnpaRUZET1UxWFNEWlRVaXMzTm1aMVpXVm9jMVZxTkVSWVoweFZRM1pOTWtrNU1VODNRbGhwUzBWV09VVlVZMFEwUlVOaWRYSndRakoyVUZSMFJEbFhWQ3MyT0dwb2VEaFhORVJZVlZGdVNpOUlPRXQyTkM5YU5YWklLMjlvVG5kUVJVWTJSaklyWm5oU1pIcElZVUY0UWxOeldsaFFhM3BCVjFadFFUWkdaM0ptWmxWRWJYWmFhVVZUYkVaM1RsVlFLMDlSVFZjM05FTkRVbVJTUm1OVVpuVk5jVTVIT0Vkc1puVkVVSFpZUlVGcVFVdHFjV28wYURsUk9FUjFRa2xEYkdveVFXcG1ZelI2VVUxMVJ6QjNRVmt4UmtwQ1RqWTFRMEk1VDFKeVlTOW1iVkZFUm1KSFN6aE9kbXRNVVV3MGJXWlFRMmxJWjA1cVFsUm5ZbFZoT0VneVVVczRSR3M0YW5SMFdFTXZRVlZKTnpaSmRXOW1aVWRzUTNSWlFVbDZiblZyYkN0U1kyTjZaa3RpUkV3eGVFcFlZMFo0VGxaNmJEZHFja1JUUTFkMU9XOUpWa1Y2ZGxOMU5Ia3hOMk5MZUVoSVdEQklPVUZZUTA0emJHRktVbmw0WTFKek9ERlNUbkpvUTIxbFptMHJWazF1VkRJemVtZ3hTbU5SZVVsR0syeFBiME41Y0V0S2RtdENTVEZsTHpWR1NtTm1ibVI0Wm1rMmJYVkNaR05XVDJRd1JtVlJWa1J5Y1RjMlV6YzFUSFJqWjNCdWRIZHVOWE5pVkZCVGNHcHFUMUk1ZURSbFREaDZaRmRCZVdOTU1rOHJNamxQZEdKWE5UTkpabVphTldaSmNubHpSWG81YnpaSkswTTJOMFZyVDI1VVdFNXpLM3BRTWs4eVJqaHBVaXRFWldZdmJXZDFTVkk0UW05dlJuVkNkRkp5ZDJaMVFYWjNSa05QSzJsT2NFSmpUVW81YTI1aVF5dEdSeXRCYUZSNlZsRlRaRnBHVTFKcFNVRjJTVkZwTUVOdVV6QkNiMXB4VXpKbGJVMDNWREYzZWpKSVpuWXpNVnBVUW14VFEyUjBjblF5WkhaUVVGbFFibkJWTjNKSFYxSlBORkJ2YzNVdkx6aFNTbHBFV0RWVVpsVnJUV3ROVnpCUGFWVkhNR0poYnpBeVNESjFabEJ6ZWtwVllubHJlbXRTZURoWVRUQXdhSE0yWVVaVGNrcFVTV2xrU0RGU09ISmhNWGRSTjBGcllqTkdRVmxhTldwU2Iwc3lNRU5PV1cxNFNHTjFVMmhvYUZkeFp6VmhkV1ZHZWpseFdVdzJUbGcxVVdGeFdFTjVPREZGUldWUFpsZHdSbVJ6VkZoQ01HVnpNVXRQYWxaT04xUXhWRFpTVDFsUFZuTmxUbE5qYlVsdFJrZFpjWEJ1Wm5WeVZGZDFZa1prWldONU5ISnhlSHAzYldKNVZHOW9iamhVZDBzNFNWWmhhVk00UW1sM1lVVmxLMjV0YXpJME5rTTRPSHBzU1ZCeE1IcHZaMEpHWkRsTWRYQnFaRE5IVG1nMlFYbGxhVlI0YW1nM2FURnRRVnBzTURSR1lYWnVOV041WlRSbFdGRTFha1JUVjFKSlVGaDVTR1pwYnpaVmJVeDRSRWh0WWlzd1ptMXZTRTlvYldsSVlqSkdRaTlRZVdwb1YyNWlkWFo1VlhSWGRHSlBjMk5HTDNWemJ6aFFNMFozZVU0eU1qZEthVWgwZWxOV01WSXZNRlp3TjIxSE9YTlFkRGcxUzFOaGJWQkNiamgyWVhnMFFYWkJiMjkzZDJKbGFqWmtRVXBSZGtGR1JrMVhjbWwzVFZKUU1YWmFiVGh4WVVwVE0wazVia1VyTmtKdFZXNUtSMk5aVTBKd1NTdHhla2xtZG1sUGJUQlVOR1k0VVU1VldqUlZPV3hKUldFcmNtUkZVVzFXWW1oME1FczNRMHhUUTNCSlRHeHhVa2hLVmt4WmRIcG1RelZWTTJwaVFsQlllRVY1YkZVNGJuTkhZa0psTkVwM2IwOVRNMnhVZW5aa09VaHFXVlJZWjAxVmFqUjJNVlZwZDJ0dUwyRjZWemt2VFdaRlZISXdTR3RYUWs4clZIVXpkMmx4WWsxWU0yUjFRekZZV1VSWFFrOUdOemw1U2pCMmVFaEdUekJGVTJobVIzWkZXalpLVnl0aWVGSmtkM1I1YzBGUU1XSlFNa3ROWVZsbldqVnBlbUZtVlhsSWJtRldSVXRNV1ZaakszUjVXVVpLZGk5cGQzcGhOSEV5YjBvclUySjZaVzFHTTJaT1VFRm5aRFJtTW0xeUwzQXdaR1J0VjJzemVYRnJjVFpYSzFwcU5sZGFNMnRDVlhSRmNXaFhSbGMwWVdFeFZIcERURmN6YTBocU0zSXlObEJRZEV4a1NXa3JlR1l5YW04dllrd3pXSE1yY2pWdWFUYzRURTFRZURZemRXRllWMXB6V1ZVelYySk9LMnRYTlZCaGJsaE1jMjlNYXpkNmQzVjRTVEpxVFhsTFRrUTFSMDl0TXpCV2QwNDFNak5VWlRkNEswMXBUbVZCTjJoSWVHWnRjUzlEVTJaMGNDOVFkR0o0WW1kQmQxRnVMMWRIVHpVeFl5czVVazAyWW1WMFZsUk1Xamh3WVhwRlIwZ3JlSFJQUVdGdU56SjBRWHBYWVhkQlEwNUtiMFF2YUVoWWJub3pVRlpOTVZWS1EydFhRMkZwWVRoSFlWY3ZhWEZLYnpsTWVYSnBTek55VW5WMWJtaFFTVzByTkhOd2NWTnRZbEpDYkZSdWFVeHFiR2xKZVRkVVRrMUJOa3gwTkdoeWJIbGhNM0JUWnpKM0sxcFBiVTVXYWxac2FIZFdUaTlwY0RKQlNqQlVSWFozVVdsVFpTODJVa3BZU1U5ME1tZ3llR1YwUkhKRGMyVXhNamwxV0ZwV1kyNTJUakJDZWtsSFNIaExSVFJsTkc1dE9WcGliMXBhTjFGNE9FeHhNVk4xUzFWcVptUm9LMkpwYmtwUVdVWTBWRlJKWWpaaWVtWjJOazR5YjJ0MlFWbGpTRUpJZG5BMk5tSmpUa1ZCZDFsc1VGQlVSa3QxUVRGNU9URjVLMnhVUkV0M1EzUnBWblJoVHpocVJEWlJNMmN5Tlhwc2RXTXhjUzlvZGtoTVJuSk9OVFpoZEhReWMxcHphQzlGTUhrdmVqUkplWEpqWTAxb2RUQnlOeko1TWl0T2NsSjJjalJaY25ScFJuVkZXSEJvVnpsSmFqRjBTV2xqVDFwclRFMVNkbWxOZERCWE1uWnpiQ3Q1UzA1NlVHTXpZbkEwTmpaWWVURm1PRFJ3WnpKWVJUTnliRFpsTVM5R09YWk1NV2hSYWpGS1ptSmxhQ3RYTmxSMk1VbG9WamhwWlRFeWNFWkVNazlIU25kbFZYUlFNMnMxYlRrMlRFZENTRGhYTVVKaldWTlZWazA1TlRKU1FubERkRWR6WlhoRlYxbFZNMHRvTTNSbmVFcFZOV0ZuWlRkUVpYRnJTRE5LWm1Kb0sxQllSRFZrYzIxbE1ITkVjM0Y2TW1oc1ZrcHdkV1ZxZURKTVNEWk5VSEpTY1V4Rk0yZFFZWEl2ZDFkd01YZzBibkpJZFRRcmRHaG1NWEJwVEVkWFFYVjRkVTh5V2s5b1NITjNlVzFHVFRNeFVVVnZlRmx5TWtkUWMxVkpSR1Z1VWtORFoybFNkMlJxVFhReVJqTjNNVVY1TjJVNFZqWXlla1ZTTTFsMlQzZzBkSFphYTFobFkwaHpWRTVtWWpCSFZIWXJTRGRCZHpKUWIycDVjakVyYmxWUVV6Qm9PVkZZTlhSVFJXZzVaa0pyVjJSa1dUaEVaRlUxUmtaaGFEUnZPR3BvZDJ4bE1FSlNWVmRHZUU5M1FqbHNOR1pYYkhWU1NIcG1ZVFZqSzJZMmNYQk9XbGRqWTJGdGJ6VnVWRzUzUW5KbWVIaG1SakJTVUZGMGJHTTRkMDVrVlZWclZ6Z3dibVJVU25Sak5IQmpPWGRZVm5sWlMxZDVMMkUyUm0xaVlqUnBTMnA0WVRWVVNsaHNlV1ZoTjNwV1EyNUtOeXRCTWxCdlNuWnBaSEJLVW1jMmVFVjJRWFJZWWs5dkwyUlJjRGh6TTJaM1ZucFNWWGgzVWtOdGMyRlFjRUZ1U2poMFVsRlpVRzl4WWtkVlFWcExPR3RvWlRkdE9EbFViU3RpTkRoTWVHUXJTVXBYWmt4cWNVeEZSMGhMVWl0bVEwUnVlbGxoTXl0SVJsWllXWHAzTUVWWmRtOVpkRVptVFVoT2EyZFhWV2xLU2tOU1FpdHhiRWxZWjJOd04wNTFUVEpqUm1WTFZXeGhVMUpUSzFsVFZqUTVXVmRsTmxGc2VHcDFOM2xqWTNwSU5tdFhlR3N5V0dWRmRVTkdWakJpYmt3d2EzZFRWRzVDWlRkVWNDdEZZV2N4U1hGdVdqUk1OM1FyT0ZObGJTOU5VazRyV1RKaU9IaHZZU3RETm5CSk9WUk9iRWxWV0dWRVJWUnVVbVZzTkVwRGRWRklUR1IzWTNod1RETTNXRmRJUkRacFUxVkdlVUYxU0dSS1NGbHRhV2RTWVVSdmIyNXJkSE51TWs1MFdtOTZiM3BrVUM5b1pVVlljbTFzVlhsT1FUbHRTV2N6UkVSMWIyNU9RVTVsY0RaU1VEVlNWRVZNWkVOWE5VaHRXVXc0WkU0MFMyTTJSM2sxYjFNd2N6Tndla1ptVkhwQlVGVlZjaXRwYVRkSVVHaHNka2h4ZVZWcFF6VnFRek5vVkN0QmRIRlhSM1pYVW05MFVXRjNZbFJoUWtWNE4yRlRiRzB5VkUxNlVXNDBPSFJuUldVNWRrcGFjbmxXUzJWa1VIRXdlbTFWYm5BM1lWRlhlRGw1TVdsTU5rUmhkMWgxZDJka1NIcGpTVWx6VEZZMUx6SnhUWEkwYkZOV1UyMVhiRXR4TkdsSGRqUTBkbm8wTkhWSU5TdFpWVTVKZVVWeVZVVjBTMEp6UkZGUlZUWTBORmd3WkVwTFZFZ3dTbWwxUW0xTmJXbHpRMlY2Tmt0T2QwcHhPVWgzSzFZeUsxWTVlVm96WldjMmRWaG1TMWxwTDI4NU9ERkxiSHBTTVhwbmVrRXpORUZaTnpkbmVuVnlaVUZoVUZKeVpXcFlSVE5UTHpRek9IQm5SRkF4WTBJM1NtMVdSVmQ2ZVZodmFGVnNOVU4xUkRoSGNIaHlkVTVqUzBnek15dENiM0kxV0VKeU9YUlRiVUpvYURkTlRsTkpXR1ExYnpCak4wSjZPRTFKZEU5MFIyZHRVVTlWWjNWNVRDOVdWRkZ6VFc5SWVsQnRVakpCUVhaaWRscFJSMGMyYVdkNVZVcEtha0ZrUjBGSWNIRm1UbEJ3TW05cVR6bFRjWEZxYm1oRk9FWnlia1JtUVdZdlZubDBXbUUxVnpCMFUwNXJWMFZpWTNBdk5tWm1kREF6Y21KQldWSnlkRGxxY3l0S1QyOHpPSFY2ZWpoSVJFMDNUbkF4ZEdKNGVuQmliWEpvWW1KcGJEbFJVekozWmpKcmJuRjJlbTEzZW1SNldqSnpTakUzVGxscWRqZFlhWE5sUlVWMmVGcDBVVWxhWVd0MFQzUlBUa1JEUVhKT2IzVkRhVVZTYmpscVNXaHBabVJDUmtKS05GcGljamN6ZVRSR1MxUkRTWGcyWVN0SE9WVmFSRmRtWmpCdFpFaG5ZbVp2TWxkcFRHTlJORmt6YTB4S1dVWjBjbTh6YjFvNGExRTRlR3gzY0V4R2FUTlZOemxOZUhaSVVrNUJaWGh3YlVaa2NtdzRZV0ZQYm5reWJYUm1Rams1YURReGFIUlVZazlvVFZOclIycFpLMFZUV2tkWWVTODJVbUpLWjJwV2VISTVSREJIVEd4V1RESk9NbEZhTDJnMGNrNWlXQ3RCYm1GSFoyeFFTVWg1YzNaYWEzcFVTV28wTUN0WkwwUkNTakV5UVdSME9UVTRhVzFLTmlzclZreHdNa3MzTDFkUlpEaHplbE4zYUhsd2VHczNjbnBPTjJRd1RXVjNURGRpTVRkTVZ6RXlaV05yTVdGVGNXdDVZVTFqWjJSdVkxRTRhVTk1SzJnNWMyeHZTVU42TDFod1JFNVNZMDQyTjJwVU5qVnZUM1E1WW5KNE5rOHpPRFpYYWxsb00wdzBWVFJXUzFsVlNXOXRjV2R2TDAxSGNtTlFiVWt6UlVsbmVFRllURFl3TjAxcGEyZHZVR0k1YUhkWldVVlVOREZZVjA1NmNGRnFaalZPVEZVMldIQXlhMmQyVEhkdFRVRmFWV1ZJYzA4eVZteHBWVlpQZW1kMU1XeFNjMmxMZUU5RVRYbExjM0JtYkVwVE5uTTFWM1YzYkdRMVdYQnNZa3RCZFUxc1oyUmFRMGhtTDJock5qZENRV3A1UXpodE1tMDFkVEppU0ZOaU1sZEZORFpXVW5STmFWcEpZM2h0Tkc5dldWbFFVRGhIYmtkcGFHSnJjRWR0VDFCcWJXOUlZM2xyUW5wNVZXbHRWSEI2VVUxb1pHVlZLelpVUms0NGMyZEpWMVY1YVRCcVdYUk1SR2RxU1hwbmMycGlWV042UW5wTmIyODRPVGxSTWtsdFQwZHlURlpTTWpsMGNEWXlXalpZSzBsVU5taHpZa3AzYVhSVFJtUjRVRFp6YUVsa1YwbzBLMDVEVVZsWlYwVk1VRlUyYm5WbFJIWjZRek4xUXpVeVNqRnVkR3RDUm05c1kwMVBSVnBSU21OR01ucHJNRm96YlhsbGNVWk1ObE00UzJ4VWF6ZDRZVEpyV0haS1l6QjZlamxyTTB4elJGUXpXRzB3TW1Sd1Vsa3djbEV5YlZKdlEySllPRXhaYlVvelJrZDJNMGRpWmk5U1l6ZFZaVmRDZHpkMFVFaHFlVEk1TVZKalpFaFRZMkYxV2sxUGRuRllhbm92Tml0alpGQlFkbnAwZDBsWmRHMTZaSE15VEVwd1NUSnlUR2cwTlVKaVlqRk9NbVZOVFVWU1JIRkdVVE4xTkROek5rRnNiMGxCTXpsWU9FWmtOemxTVkhKRFRXUnNhbFZIYVZWaVdVeFZNbk16U2xCVlZVWnRObVkzVkVndkwwdFJRWFJXVTJsdGFFZGtiMWRpWmtoelZuVkhlakIxV1ZoWE5tVTVhalowY0hsMWNFUnViakp2Y2paT2JXazFXVVpsUm04MVpGZHdhekpPVTJOYWRrcEZWbGRZUlZaMlRra3plVTVHVkhKRWVUbHhZMWRoUmtsdVVtcFFRVXh0UmpJeVpqZFVOeTlZU1dWRVdtOXhNWGR4VmpoYVdrSnZkRTh6T0d4R1ZXSlVNakpNZVd4Q2NDOUVWbE5LZUZnM1luUmlXblJWVmxoT09EUmhlR1poVDBod1psVnJkVWxoZEdGc2REZG1TREUyWTJ0NE5tTm5TM1kwZDBFMVIwOWpXVEpYYkV0T1VHZFRiVzVKWVhFeVFsZ3hUVGg2YmxGTE9FVlJRbGhwWmtGVk1IazBNbFpKYWt4cFdIUnJUaXRLU0doeEwyNTZaa001ZVc0MFpUYzBTMk5TVDFSWllYaERNMFJSZDJkUU5FVlRRakJzZUdsbFRsVkZWWEJ5U25nNGRHMUJVMUJtVUhCNk9IbElkV2M1V2twNGVYcFFPVEpHY21SRFZrMVNPRTlhVWs5clVtcGpUa2t3T0VodFdTdEhTbTlxSzJkek9DdFVORGxxYUVoMVdpdFJhRVZwWkc5U1kyODRja280YURsRlVVNURVa0ZOU1ZkaFVqZERWblZ5UnpoUGFHWlBNVkZCZWxZeUswUnFWVGxoUkdkTFVtZEdWVlo1T1ZGeFZYWXlUVlIyTjJvM01FMDNlRTV5TkZwdE1WQmpWVTVZWjFOSlZuRkxaMnhpTUZWdlUzTTFRa1ZhVVhKaFZHVTJjRFY0Unk5dlRqZHBabUpyVEVsamFEZENVRTVxTjJSQ1ZrTlFkVlZTZW1SQmRqaEJVbkExZWsxbE9GSnVOa1pVTW5KRlUwVXZPRUZvVDFac09HazVNM3BQU1M4M1NXNXFOMU00YUdNNFNXdFhMM1ZyY1dWUWIwRlNRMnhNYkdGTFpFeEpNVzlqUWpWTk5saERRVkI0ZVZoWE5XOWFRMVZEV1U1cE9FOWljblJqY2tOcU5qaGtUMGxVY0VFMmRsaDBaWHBtU21jeWRrOVJkVzFJZW1WSlFUZHVablZDSzBGS1dtZERjRWRJTkRrM1NFcGFkVGRsU0RJMFZVSTBkVUp0WTJkbksxUm9lbXRrY1hkTWJsaG9jMjVFYzJSaFMxTnhVVzk0YkRKMlJIY3ZPQzhyV0doV2IyMW5ablJyTmtaU1MwZzNOUzlXU0U0MU1WTnBPRTl5TDNOdU5IWkVXRlZrYzFwNVFVNWxjVWN4ZVVob01VSklVRFpqVDNSM2IwUnhaazkwUTA1MGRVczJMelZzU0U4elRHWjZObkpqYjFVMEszWlhaRE5UZEVReU1tWnJXRFZuV21wTGFrY3JTazV1ZWt4Q1dIVm9Ua1I1YVV0ek1tOUVXUzk2VW5STWQwOTRWRVZhZWl0dFoybHFSSEppUW01RVVIbFViVUpDTm1WdFZUUm1SbFpZUVc1akx6WmxMeTlHYWtwM2JFdFlUV3hxZGtsVE9FcG1ORmMxUkVKMWQwcDVNSFIzYTBkaE5tTjBhbEJzWldsa2NGQXJNa3RxZUdnelpuVXhURlU0ZGtReFQwWmxlVEpSZHpjdmNqTjJPVzV4ZGtGMFdtaE5jR1puVTJ3dk1HVnhZME50ZGtOcE9UTjVaRGQ2SzNkdGRuQmtUbVJ1TVdWR015dG9UMEpzZUVaa2VqRlNhRk4wVEM4MVZYRm1RVTEzZVUxSmNHZE9WMDk2UTJrNVRHcDRVWFl2Wmk5bldtVkdNeXRXYkRSVVV6RkVSbTFrVVd4VWFHWndaM1pHUVRKWVoxRmpUMFkwYkV4RVpXOXVjV1kzTkdGdFJWbG5abWRRYzBkRWRqVTRkbFF4Y1dGcVowaHViRFEwWVcxNGVYWlZWME5OSzNVclIzb3pkWG8yUTA1VlMycFJUMU5vV1daV05WbFZWa3N4V1ZZMWVtUkhiRVp2VDBZMFNWQkdOR3htUkVNMVUwZHJWR2g1Y1dscFJVaHFVRnAxV21OS1FXdHVPRzVFY3pkUlNtdGtPSGd2Y0hkMVVEQmxka041TVRKclpXSTFPWEk0T1doNEwwODJPRUpXV1VZNU5tUjZTVWg1Uml0dllWcG9SVkoyYTBWWWFuUjNPWFoxZFROdVdIQmtLMHMzVUdwaWNuZEVXRVpNYVZNMlkzSkliM2RIVGpSWFVHUlRkbVYwZUdaRlMwdEdPR1JDUzJSQlYzWmxhbmRwVVRob01tTnJPREZxTDJoQ1FtUjNkbVZ2UWxoUVVqUlNiek4yWlVZNU0wVnhlRFpRWVVkQlNWQkZTR0VyV1hoSVprZEJiMlYwV2psMlQzSjRhVUZNT1Rab1N6VTFNMDFsT0ZWbU1qbEtSMWQySzBGU1MyWnlWbFptVERCQlVqZG9MelU0V210TlZsZ3ZkMk12UkVkRWRFRkJSVUZCUVVGRVFVMVdRVU5xZGpOWWR6ZzRPVkZCVEVOQlFVRkJRVUZCTW1ONlF6bDNRVUZCUVVSb1pUbDFjQ3NyTnl0R1FXVjFRalJWUVVGQlFVZEJRVWxCUVVGQlFVRkJRalF5YlU1bldrZEVaelpRTWpkQmEybDVMMGczTTNJMU5UbElWa0ZGUWxSQ1MwRkJRMlpDWjFvNVFVaHFZV0pLU1VSelFqVkNSVWxVTjJKMVpuVm1OMFowTWpkYWRESTNXblF5TjFwMGJUUlZOR2hrYVRKVk9ISnFialUxYm1Ka1ZsaDJaRFprTmxwRk4zVkJTVUZrZGtwUmFXMVBiVWRaSzFwVWFqUlZhMWRZYnpjek5VSk5LMk55ZFd4b0wwMU9UMlZuTm1GcmIyNVNSbVpoTlRGMFozVm5hbkl3VFhSbE1HbFFTazFLVTFSdVdHaHhkMmczVld0TWEzQnpUVXA0TVVwWVpFcGhOVE5WTDNGaGVETnJTalp4V21oMVUyVlJjR2R2UmsxWVkwZHlhWE53VFZWWk5UQllkVU41YWxORVYwODNNa3R6WVRORVdraHJTalpsY25NMk5sUnFaa0p3WXpsdVdFUmFjbFUzY1ZrMmVEaERNVVZ1VUdSa05tOXlkazFSUldKdVJEUTFURUZQUWxwcVJWUnBSSGxRYmtGV2JVaDVkbHBYY2s5UFptc3hRMHc0WmpOTGNIRmpNM2RHTmtWd2NrbGtZbUpzZG5RdlJrWk1NbTkyVjFrNVpUbG5aR3RzTUVaSk5YRlVRV0p5YzJNeGRISnNka3hPYTBKaVV5OHlOMDFXZFROV1pUTjFjQ3RMY3l0Wk5GUjZMMEZrTVUxWWRWUnRNbWxoY0VOaVozcHJWa28yU1RRelZXaHRXSFZ2TjNCS2FuWjZVM2t6Y0V0eVlXWjRhQ3RYWlM5bE1VVTFNR0ZSV2t4d1NHZExSbmw1WTNKc04ydGFNeXQ1TDB0NWJFRXdNRlJQWVdVMU1GUmxVRE5OUVVoUlRHNTJkVTFGY1ZOM2VIVkthelJPT0hGWlMxUnRNbnB5UWl0RU5tcDFXV3hRTHpSaGFYTldjMkp3WkRKc1MwOUNUMUZyV0cxMmNWUnRVRlJaT0hSaU1XVTVWVW81YVVGU09UaE9ObTFHSzJWdmNEWnJWM1pUYjFJMWEwNHdLMHM1Y0hGMWNFWmFUbEZNT1dONGNHbGtNbUU1T1dwM1drVlNZbVZyUldadmEwbFFTR3BFTDNNMmJXSjVRV1ExYWxZM2FGQnJVMGhsVmtaV1RIbExhbGh4YUc1eGJIQk1PV3RVTm5WU2NHcFFVMlpSTUN0NFExVTFUVTVVWVRKRWNsQnRTamRLT1VWVmQwZGhLMjlDZWpnMVJsZHpWRTlvYVdsdFFYUk5SV05hZEM5SFRFaGpNbUY2YzNKWGNHdFVZVWRWWmxGQ1VGTXlVRWxLYlhObkwyeElUbnBKYTNWdlVqQnNTVWhXUzA5R1FrVkJWbTVQUlU0M04xSllUemhJUVc0MGNETktUMGhHUTFNMWJrcDJTVGR0VVU5M1ZXUkRNRVJ5VlcxblZEaG1kMHRDWnpablFsRk9RbFpqY0ROcWRVdElibTAwWmxaU2NWUXpRelJpT1ZGbEsxZExlR2h6TjJsRGJrUkZWamxYV1dodGMyaHNOWEZWVUd4RFFWcE1abWxUV0dsNGFra3ZkamhzUlcxelpYRkZkMEZCUlVsVVJIaE5RVUZCUWpReWExaENRWGhCWWxGUlFVRjNUMUowUnpoc1pISnlXblIxZUROVmRHMHpZblJ0TTJKMGJUTmlkR3BXY1dSNVVDOTRVMDVhU1RZd2FXVTJUa3QwUmxjd1dqTlNNamxGUkRCRFVtSkNZa04zU214bmMzSm9abGhDV20xRVNHTlNibEJwWW1aSFRpdFFTR2xMVWtWTE1razRjMWt3TkZSa2QyNTJjRUUxZVZSWWEwWlZjVzVwYkU5MGNXTklWVVJQYnpnNVdYbzJVa3AwTUZaeWIwa3pXbTlsVkRVclp6TjZUbHB0WW5KTlJXMVpZbU0wZGpWNlVscHNSemRKT1RKUmJuTkZibGw2WlRSNU9YcGlOMnRMU3pSdk1UUmtZbnBVTTJoQk56UkpkalJoTDNwdU9GWnJaM1pzYUVkeVExSkhSM0k0UmtwTlNYcFpWMUkwWjI1NFFTdFRUQ3RYVldWcmRYcHdZbEJUUlhodVN6WmxWRWM0ZEdrdlZqaDFVRVpHT1hCeWIzaFVSbkZ4WTIxc1IyUnhTalZZZGpKeGMzQnRjblIwUkRkaFEzVXlXVGxyYmxCd1NtWlhkU3R5VkRsUWJqWlZaakpTU1ZKc1dtcFROMGRtYWs5d01tTm9jMW92V1hsb05XMVVla2h1YlUwd2RURkhiR2gwY2tJM1YwVkhkVU5PWTJSaFdWY3llRVJzYVdaaVpIbFhZbVE1VDJKdFpUSTRPWFF4TjFCWU1tSjJkVFJtWkcwcllqYzVNa2hMWld3d09WVmFOa2w0TVZwcWFVeHVabFoxTkV4YWQzVTNaMFF6UkVoMVpFaGxVblU1WW1RMlVqY3hRV2tyUm13NFZYSTBTbGg0Y1c1cU1YWlVTR1ZNWlN0YU9UaHVTR1pPUmpNdlYzQXJVVGNyZERNNVVHWklZbWhDTjNGQ1JWVkRjMWxGUzNkSmRHZGhTR2R3ZGtKNEswSlliVVJSYzBjeFdVc3lORmc1ZDJwSWFHdHVRbGhsUTBZNFJVMXpZMkY0UW5KSE5YTlpUM2hwTjBWckx6SmlOblEwY0M5cU1DdFFlalJWVTBOQmMzRkJjV0ZCYW1GbmNqVm5URXBuU25SdlRVUTBRMU0wUWtjMlJFb3JRVE5hUzBGTFVGbG9aMGR3WjFZMWIxQkdXVkZXV1VaWk5rSkxLME14VWtwQmIydDFhVmN5U2lzMGFVUkxhV0p4Wnk5SGIwVnRiMnhzYjAxV2NVUjBjVW81TmtScE5tZEhOemhCWXpCNWIyZDNRVUZCUWpReWJVNW5Xa2RDWjJ4SFFVbFpSMEpzWTBkYVowRm1TMUZCVkUxRVNYZEJVa1JCUXpobFRuRkdhMHhXUW1KVlJWVlNaR1pVTnpWS09HUTRXR1JKWTBoa1RtTllaRzVSV1c5blNtZFBhMHBuUTB0SlFVdHhTVlZXUkVjM1dEbHFjRGRxZEhkYU5FUlhTSGhKYWtWdU9HNDNSVVJxUTFndldVUlNPREExUTFKNWFteE9VRUU0VTNNMVExUTFTRE5uWkU4NGFuVlRSeTluTVdoYVJuVlhXVGRCZVRob01qUkJhbEJKZW5WQ1JUZDVUamRCWWl0aVRUVXJORXN2ZVZWbFFuWTFhRGxVZDNkTFRHSk1TRTFHUWs1TmMzTndVRGh6YmtaV0szSldSMVpOTjFkR1ZHNXdValpITVVKWGNHc3lWbkp3TDFaSWMwbHZjVEYwVWtwMlYxWmpTakZXWlRsV05EQkxhV1pJWlRoSldscHdaek5VUkZscVduTTJhSEY1TnpSdVYxZE5ZMWR1Wlc1Q1dEbG9WRUo2U2xWNFRYVXZNRmhUUkhCNlZFWkdkQzlwZVdwa1FuUlFjME5aVUhOVmVVSmpNMHhLVmxOMGIyOU5UemRSVVhBNVRISndhek5sY2xOaUszZDFiVVJLTWpOd1ZTdHFPV1ZIV0Zsak9YSjZRME5hTW5VNFMyMWxla2x6SzNGRE4yOVVjbTVrVVZSNWMwUnFSakpqTHpSQk1IRnJOMlUyZEhsMVRIVnpUVWRVVjFwdlltODJVWEpsSzB4MlRtNXBNV3hsY1ZGQlFXVk9jR3QzVVU5RFFXZEZRVUZOUkZwUGRIWllNbGhhYmpJNGNsZDNMM0J5VUdGQldrbGhRbEpHTmxaV1JVTkZTVUpYUm1oaVpIQXhOazVUYkZjME9XVm1abTlPUjBSU2F6SkphRkpaT0ZwT2JVSlJlRnBrY1UxWFdGQnRURlpwTUZwT2JVdFdWM1pYWW1ScE1GcGtkVTlZV0hZeVNGUm9NRXBQY2xscFZrNXVlbXd5TkdSUFdHRnFWblF6TjJveE5EbFBWRnBwTVdSMk0yNHpORGxQV0dKcU1Ua3ZMM05ZUlVwVFUyeHdSMVpyTldWUlZrWktWMVZXVmxSV2JXZFVRbmN6U1ZsVlFVRkJkMGd3ZW5SbWRVcDBWekl6VlhwekszaGlXblF5TDFrMVpHNU1UM0pyZG1ocFJGSm1aazVWWjNwd1NuWXZkbXQwVVZrM01HTk9VM1pqVFhodU1HVkdORTlQUm5aUFQyMUlUbTkyYUd4RlV6VTVkVEExYTB0d1FXcDVOa1pNY25OcGQyeFdPWEoxYmxkaE1Ha3ZRVmxQVjFoVVpHMHlTV2RwVGpKNVNrNUhibU5vU25SWGNtWjJjSFJzZG5WMVQyVjFLelZKT1RoTmFFUnFlak40ZWtaUVVIWmlSR2x3WkdSbFpXVlBaSFEyY1d3clQwTTVhbm8xV25NMlJUSnVRVFZ1UmtOemVHSmtZVGhDVkU1TGJHRnNWWEJXTWpWRGFESXJlWGQwYm5kNmJVNXRkRk5JT0M4M1dVUkNaa040VlU5RE5FMUZRVmxwUVVGQlRtaHNhR0prZERJNVltTXplVzAyVkdoTmNHRlNiRnBQV0d0R1VsTldiRVpXVlRFNVprRlFhMWxhYldsTVZ6QmtXRlF4T1VFd1RXcFplRTVVVFROTlRGTjVkSEpITVhNM1pYZGtTRW95WTFoV2VtUXpSREE0ZG1KNE9XWlFNR3RqYldaNFF5OVllRmxZU1U5QmNrRTBUSEZ2VG5kdFFWVkNkV0V3YW5VeFZsSjBRakpXZFRWNmNtUjZNa1J6Vmt4eVIwZGhTREpLYVhnMU5Tc3JVeXRCSzFRM2FUaFlhWGxaU1RGVGJqQndOSGxYU0ZoaWFIWkJZV0kxY0VOdFJYQlFRVzV5TlVoelJXNTVlbmhUUm1ScVp6bG1jSEJuWlhkWk0wbE9SR3BDVlhGUGIyOVFRV3R5TkZwdGNFTnRSWFJpU2tSMGRGY3lTbUpZZEVKeGNVdzFVMjFoUVc1Nll6aDFhalIxU0VkRWRIQlZiMHBRTkZReE1ETlRZbTUxVG5wTk0xRjFXRVpHVnl0a01URXZSMWhsUkdOSGVtVmlUMDFhU2xGeE1WWkdOR1pvTTBJNU0zRkNRamhZSzNSSlVETXdZMG8yUVV0MFdpOUpUblpZZG5welRrNHZiRVYzVVc1YWJtSktZbVZoV0dNMWRtVjBWMWhXTldvMU4wUnNiMnBvVW00NVdUVnNVM05DYjFJcmVVMVBNVUkwYkc4eU5tc3laV3c1TjAxWU16RkpjRU51VW1wQmVHdHFaV0pOVUhGalJFMU1aSEZNZDFwc1RHVjZTV0pPWVV4cFdtaEVaWHBqYWpoeFlqQmlOMGg2YWtscVVYaE9RV1pHYkV0Nk5FRW5LU0JtYjNKdFlYUW9KM2R2Wm1ZeUp5a3BPd3A5Q2dwQVptOXVkQzFtWVdObElIc0tJQ0JtYjI1MExXWmhiV2xzZVRvZ0owOXdaVzRnVTJGdWN5YzdDaUFnWm05dWRDMXpkSGxzWlRvZ2JtOXliV0ZzT3dvZ0lHWnZiblF0WkdsemNHeGhlVG9nYzNkaGNEc0tJQ0JtYjI1MExYZGxhV2RvZERvZ056QXdPd29nSUhOeVl6b2dkWEpzS0Nka1lYUmhPbVp2Ym5RdmQyOW1aakk3WW1GelpUWTBMR1F3T1VkU1owRkNRVUZCUVVGRlJsRkJRVGhCUVVGQlFWcEtkMEZCVVVGQ1FVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQ1NGSkZWa2RCUVVGQ1YwRkJRVUZIVVVGQlFVSTRRM2xWVEdwclpGRlVNVTFCUVVGSE9FRkJRVVZUVVVGQlFqaE1aMGx2WW1OU01VNVdVV2RCUVVKblowRkJRVWhTUVVGQlJHRkVNM3BTZURWUVZYazRlVUZCUVVnelFVRkJRVVpOUVVGQlFtZGtUVkJwTWxaT1ZWRldVVUZCUVdkM1FVRkJRVkYzUVVGQlJuQmxLMVZIYUZreU1XaGpRVUZCUTBoUlFVRkJSRXBCUVVGQ1RVTlRiMGhHUm01WldFNTNRVUZCU2xGQlFVRkJRa0ZCUVVGQlVVRkNWVUZKTW1SelpWZFpRVUZCYkZGQlFVRjJTVkZCUVZJcmNUSmtiM1p4WVVkV2FGcEJRVUZQU0ZGQlFVRkJNa0ZCUVVGT2FEUTVObVV4YjJGSFZtaEJRVUUwY2tGQlFVRkNPRUZCUVVGclJFZE5Sak5IYUhSa1NHZEJRVVJxVFVGQlFVTmhVVUZCUWtkRFdITnFNVTVpUnpscVdWRkJRVTk2WjBGQlFVbGFRVUZCUTAxb1ZYTkJPVkowV1Zob2QwRkJRVGxXUVVGQlFVSjNRVUZCUVdkQlUxVkJiRmMxYUdKWFZVRkJSREYzUVVGQlFrdEJRVUZCYlVFNE9ESkZNbU5IT1hwa1FVRkJVSEJuUVVGQlN6TkJRVUZGYmpkc1NWTjBkRFF5YlVwbldrZENhVFJIVDBGblEyZG5iVFJrUW1oalJWY3dTVUZaTW5kQlJVSldSSGRRYjJ4TFdsTmFjakpOUVVsTGNqRkhTbE5aVW5aV01GVkRiMEptZFd4NlpVcGxLM05LV2xkMVNtUkNTVzlMV0ZSUVdVMWxiV1pVVFc5c1pFb3laR2hLVDBSbmRFWTVSVk12U2tNM1oybEVVbHBoZUdNelJIazRaa1E0TURaU1lUQmxUbTg0ZWsxUGVWaHNSVkZDZEVSV05YbHhNbUprZFRKdVlpdHBjVGxwTW01WGJtMTNWRkl5Ym1sU1VHdEliSE5QTjNSUFZVWXZNVFowTkZVMlMxTktWMjl4VGsxTlJVMUNaRzB5Vm1KMU0wdEhlbUp6YlRKTVEybFdWSEJ6TVZwYVRrZGhVVGQxTTFkeVVtZzVOMjkwUm0weFkzUXpjVE5TVm5SWU4yUXhkV3RhYjBsSk5WTlJPVEZKVG1oRVNFbEtLMDFGVFhWUk9YQmpaMEZvUjBwcGJXOW9Xbmh6YldsM1ozbG9WekJ5YjI4MVRYZExlVlpWUjAxUGRsaDZTMFZ6UkhvemMzbEJiWGxKVkc1WWNWQkZURWx6YzJRNVdrWndZWEZ6ZEhSR01tVjRNRmRUYWpNeWVtNXpabVpRVWtwTFZrZElZVVZUTUVsT2IxSllaa3RMU0RKa0swWnRVakl5YlNzMU1IcE1jbFprYUhSd1pYb3ZhaTlJYW1SMWJtdzFUa1JUT1hOdVdIVmpaRXR0ZDJoYWVXWXpZM28wY1hsb0sxbHZWMGRoTldGWGJqRjNSR2hVZWt4TVFVVnNSM2xNTnpKS1YwazRiMWh2VkVseGRrdGtNV1pzVDBsak1VcFNUbXRQVWt0NFJteEplbEE1TkM5c0t6VjJWRzVGVTI5Wk4yeE5SeXRsVkcxalkzQjJVRTVhUzBWTldEbE5TVUZFVFU5WmRrVkpOemhsVFZWNVpYWkdlVFZPUkdNeEwyNUlhM1ZIVEVwdGNIRlpkWGh0UzBwaFN6RjBWR2hxYVdGTmRGSndkak50WjBJeGFHSnZhV2RIYjBobVlXNXRMMkowYlROaWRHMHpZblJ0TTJKMGJUTmlkRzB5T0VoVk1sTnNWV0ZpV1RZemFrcEtkR0o1UkRZclNURkJlWE5EZEhjeFJEY3dUV1pFU25aME4wNWxPRUpNTTJwUWRrUmFPRzlvVDBJNU9HNDNkMm92WTFCUmFXaEZVVVJVUlZGUmIydE5kVzFSUW1Kc1kwTndZMDlDVmtGTldsSlJSazVhVVVkc1pGRkpUbFpCVUZSa1FVdElaRUZPWmxSQlNVa3hVVXMwZWtGR2N6ZEJRWGszUVVkdE1WRk9UemRCVUZKNlVVZHdNMEpDT0ROQlRtUXZRVWxNTjFST2RUUldNeXRKU21aRVJFTlplVGhKZDB4dmRISjNhMm8yV2twdFRFMVNhVkI2V0ZOR1UyWlRTbkZhYVVJeVdtbElhRlpwUXpWV2FVWjBaR2xCZWxwNldXaHdNMWxuTHpBMGFFdE5OSGRUV0dsT1RUZG9TWEUzWjA5dE4yaE1iRGQ1U0ZSRVNIcENiSHBuTDJZMGFFc3ZOR2RZT1RnekwyaEljMUIyUkV0WmNHbExXVEIyWjFWc2JVMXBiVWc0Y1cxVmNqUnBjRzlIY1hGdk1GcHhiMWhpY1c5cVJ5dFliV0ZCUjFkWmJXRlpZbTFoV1d4WFlWcDBkbWM1Ym1waGRtZFBiVkpRTm5CSVR6WnZiSFkyTlVoMFoyNXdhek0xYjJWVU56VXJWRU1yVlZOMVVXZDFiVzkwYWtkV1VXbEhWVUV3UlUxV2FHWk9kbVIxTlVsclNFRkJWRXBWUVhsS1JXdEtTakI1VTBWSFdrbHJaMmhLYTNCTlVWTkJTVWxGTUdoRFFXdHNiVkZDVEVOQ1JXbFRhRUpCUlVwcVFsQXpMeTh6YzBvdlVEY3pNM1ptTjJZelZHNWthVFVyVm0xWVpXRnhZbk51VmpOWmNDdGhMM0JoVWpWUGVTdFBhblY0VW1FNE5YbDBLMmRDZFZsV1ZtZDRSVEZWYzFJeVdIbEpURzVZWTI1Rk5UQkZlV2czU0ZBeE1pdDRObkIyYkVWek1HMWxkM3BqZDFrMFNDdFZkVmxQTHpoR2VrMHZTVWxsVld4YVdrYzVRMUJ2Wkc1dFJUaHRkazVQT0ZWU1lrcG9LMUZoTTAxR2MzaHVWM2hyWVZScFRsTmhPR040WlhwbllXeGljSGhxZVUxUU1rdFVNbGR0TmxaNlNrczRVRTFVUm5sNVZIUlRhRzQ1VG5aTmJVaExWeThyV1RGV1pIbE1NelpIZGxvM2MzbFhaWFZMZGpSNU5GbEpTazE2UVhwRk1qQjRXVnAyVmtKbWQybGxXalJLU0dSb2JIcHhOWEpITUhOa2MxVkZLMHhZTTFwNlptSnpkek5XV1djek1VY3llRmd6WXpOdmRsQkRkbTF5VURRNGNEWkdaRWwyTUhSeVkzRklNVmhEUkcxcFlWTjRPVkV3Y25OUFlVOUpObVpEUkdSTVZIVm5hM0pLWWtNM1kybEpOVU5OTVZKbVNtSlZhbUZUVGpWTmFFOUJRbXBsUjNScldtOTFWRU5ZWkdSV1pGcDBPSFZhTVRKNVdFZFNhelZ0Vld0aVJUVk5lUzh3UlhkNE0wSnlPVWhLVUZSUFYwSmhTRzAxUlhGNVRDdENSRTlRVDFVMVUyOHdPSGhYYVRGM1luTldSaTl6ZEdWbFN6UTJiM1ZZYjFjeE5Hc3ZNbWtyVTBkamRVNU5NRlZOY0M4clFTdENOVlZxVVVGQlFVSTBNbTB5VWtFMmVXTlZVbWhGZWpkbGRXSmtkVEkzWkROaFVXWldjMHMyYUhST05uZFNkamRETWtkNFVrSkZWRmR2WWxkUVlUTk1jalZqT0RkTldHbGxURUZWVlVvd2VGSXZMelJJYUhOVGVXSnJXaXRTZUV4TVdXcFBhRVZXYzFaR1ZEZzVaMWhrU3pCeVFsUjZWVnB3VERWUGJXSjRVMHBYYzFsa1RtSktSblpWUzJoMlNEaGpORkl2UlZwTk5VeFVaVkJ5VGxaMFpqRnVOMkZ4VlZOdGNIbGllVTk1V21jeWR6VnZibmhqWkU4ME1rNVRObTkzYXpnMlVtdEtNbVJaUzBVeGFFcGlUbXRMTWpsVWQyUnhUQzlyWjBsaWFFcEJZVlpZZUc5bFVUbE1aMWhwYWsxMFZFeHJLelJRVDJKNWFVMTBSR0owT0VaQmIwUklVM1IwUVRGNWNHSlZMMVpuYmpWRmFrSXpUek5ZTlN0NGRGTXhiSGxRWTJVMlZFODBkR3N5VDJwQmFreDNMM1ZOYkRCbFVHbE5hVUZCWTJoQ2EwVjFRamRCVlRWQlNFbEthMFZ6UTBoblJFRkRlamxpYVVOSlZYaGhkM3BQSzFkMU0wcGFPVzVLVm1JNGJEZDFMM1ZYYUZoS1pXNWpjMDEyY0ZSR1pVTnZNM2hZVG5kV2JYSkliVzlxYjJWSWJYVlZUREU0U1hGMmMwcExTRlUyZUdSNVdUbDZPV292UkRkdE0yd3lTVWRWY1VWV01YZFVRakJCUjNKV1JtVkZXSFpqVTBoSE0zRjNRVkJDTjJsQlFWSTFNM1YxT0M5T09XOHZXVFpIWmxsNVJUTmhhR2hzZUZKM2VGUjRaMnByUjIxR2VrSkRlRkZYZDFSSWMwcEZXa3ROWXpGUlJURTRNWEI0TVRCd1dWSmpSRlZYZWtWRFVIbFBXbE5GTHpaTmVGUkVkVWszVFZkNmVubFBMMDgwTHl0M2RVd3pha3BMTVRkNmFIQk9OSGxQWTBWTlp5OXNTVlI1VTNkNmVWZFNMMEZGY2pCaVExQkZXRXBEUlVSeU0wTjJRaTh2VURORFFVY3JjalJSUVdkRFRVRkJRVUkwTW0xT1oxbFpiR295YzFCQmVYTkVRV0Z6ZUhsc2IwZENXVkpoUlZwcWNreFpUVkV3YVZGRlNrNUVRWGR3UVUxd1ltbEVWMEZRU0dRdlpqTmtSMUpqZDAxUWVpOTVPVWczWkhkVlJFRTRZeTl3YlRSSFFuTmlOVWxFYTFkRU9WcDBVVVZ4UW1kUlZVRjVhelJRTldkQ05ESm5XRUp6VVVWQ1VVSlJSbk5NZUM5dlNWVkhiVTFDVVVGTFFVUjVlR3hQU1cxTFoxbGhTbWh5WWpaSU1YbFlhR1UzTmpoUmNUWjJOMU5OVEhCWFpHdEtZV3BOU0VKQmFIWm1jV2hMV2xWc1EwZzVLMWxuWXpKQlNHcGhhbGwzTVZGdlZYaEVTVVJVUm01a00wTmxOQ3QzV1V0bFFVVTNRbWxOZW1ObmFFVm1ZMWhrTTFwc2VVUnpLMEV5T1ZFNVJrWXJla1k1VVUxQllWWjNXamw2VGxKMlIxVTNSVmRhZVVWU1UwRXZaSFpYU0ZkeFFWSmFXVzlyTWs1NVVWYzNURmhUVjFWdVdFcFhUVk5xVWtkV00xSkVNRTEzUVhGTmVFaHVUWGRFTUhWM1IzUjFhVzl4VGpsdmRqQjBXbk13VFRoTldrRmhSRk5OTUdrNFIwdExWMk4yYUdrclIwbFNhR0kwZUhONlVESkNTV1pwVW1vemJVZHdOMnBUVTNKYVFWZ3JjM0ptWVM5MlFWQlJZVWhrUVZkaVpFbFJPVlpOWm1SV1RVaDBWa0U1TVZaSk5YQlNPRTAzTmpoalUwaEZTMFo1UkdkT01HdEhWeXRWV2t4c05FRlVOVGxSSzJkQlFVRkJRVUpCUVUxQlEwRkJTMEZCTUVGQ0x5OHZRVUU1TkRKeE1UaERWVUpVZURsaWQyNWlhek5PTjJsb1VVTkJhVWxKVVZGUmJHbEdSVTFMSzJJM1NYWkJWVVYzUVdkYVJVVkNSVkpGVWtaM2FHWnlWVlYxZEhVeFpuSlZiMjB5ZEhSa1dsTmhPVlpYY21KWVYxb3ZNemd2VURKemFpOXlZM1Z0ZG5SaWJqSmhSRkF2VFhaYVkyc3JibXBNZGpWUldIVmFkemRQV0ZCdFlraE9iWHBxYlZCbmJGUk1ORVptWjJseGFXWnZjVzE0UmtGWWEzUkJlVVZvY1d4RWJrSjNiSEpPZWxSSEszbzJWRkV5Ylc5ME1IcEtObVpPYmtwck1tVlRZalJwY2pjNEsweHZLMHN3Y3k5T1V5dFFkM1E1WlZObVpsSnBaSGt6ZUdacVlrNVFORFl2YjBSMGNYSk5jV1ZCVEM5SksyOHpMMUZVU0d0Uk9HVkhNRUpTUkVKSlpHOVdkMjlrZW5oWFRFaFFSVmw0TTJzMVMwOVNZV1pJU0ZGVk1uSjVZMlJTY0U1aVN6WlhLME5CUlZSWWMzSXZTVTlhTVRGTVpVMUNZMEYzZVVGc2JqSlJVR0pJVDJSa2VXWnFTelZtVWxRd1JWb3pNVGRYWlc5RWJYZHBiamdySzNaUmR6SnZNVzVyWXk5dVltSjZSVEZLV1U5eWJVZFVWMjUyUzJrdlEydE9VbGxyTUROME5VdFBlV051Y1ZZd1p6RkpVMGRvVjJzeFlXdG1PR3cxYUVGS01FczRWbkpIYWxoV2FWbEthRlF2VkZkMGMwMWpSRXBEWWtseVRIaGpXRE5oTDJabFlVdDNORmhVV0hGMmJtNUxMMVZHY2pCNGRTOUxWSG9yYUdWd2FWSk9ha0ZzWVhCSmFXVTJVa3hUWlhCM1R6aG5XVEJ4VTFGNlExbHNkRFpFVkZWaWNEUTNZWFZ3UlVvNFVIWmxNRFYwUmpFeFZWWkhlRnAxTDBaU2VVVmlkeTlQYVhKSk1WWTRjRUZoV0ROWFFtUm1UbnBrTDJJd2QxVkdWR1kwWjBnd2IzVnJRMDV2Y1ZOWlN6QndTMnBtYTNsNFNIQk5jSFJUVkhoYVUyOVJkMmhvUTJsQlNFUjJMMnRJWkdoNU5GQkVLeTlzWTFCMlpFbG1TRUpuV1VoQ2QxVlNRVGhaY2k4MVJTczVNVFZDYVhrMk9FNVFNVFkzTHpsa2RqTTJWRFZqV0dReldqSmtibEl4VEdvM0swOUJVRXcyVDBwUU1Yb3ZMemRpWmxCeVpVRlZOVzFJUWpSSU1sZDNkRkZ3Y1VWc1ZVNUZZMXB0VmpSTlRWQjBhMHhDVVVSdFpFbFhXVzFMT0U5WllubG1TRmQzYUZSNFZsZHdjV3BVT0c5NFJtSlpkazlHY1M5eWQwODBLMnRaTldkV2FqTXhia2xSWjBoeFlXOHpjVEpHZGxVNU5rbDRabkZPVUVWMVZGTmpZM1pEVDIxTWFXbExia1psTUVZek1YUkdReTgwZGtwRE1GbFhUVFV5ZGxkbWNHbFBOM0ZXYzNreWJFZFVOWEpTVVVwTmNUSnhVREl2WTFjeFJ6VnpiWGhqTm5WcU5uSmtXRWRxWXpkNFlXSTJiSFJwT0VoRGFpc3dVRlJSY1ZsSVFqQXlVR2xqUlVOQ01GRjZkMWhhVDAxNWEyYzJTMU5uYW5WU2RFRlViMDh5TDBKaUwwbGtSSEZNTWpsV2N6RnBkM1V6ZEhCWVNuWkRRWFpwZFRKaksxaHlUWFYyY1hZNE1HTjZkV1ZDYVRoRU9GRkNLMlZKVURCaFVtWmtOa3A2TmtjclpFTTBSV0pwVFVrMFdXcEJUMEU0V21ob2VFWkxTVUpVVEhjcmVuUk9ZVVZSUzNSV1R6bDJZbEZGVEN0NU9YUkhNSHAyYVVWVWRqTnFNbkJWV1hwVGRtOU1USEUzYzBKT05HZHZhV1IxTUVVd1ZVTjRXbXBITm1kVk5GTmhUMFpxVFhWTVJWTjVjR0pSY1hCRFMwaE5VVEJ5V0ZKUllVVlZNRkJMVVVOTVZFb3dORTlpWkRkaGRuVXpNRUZJYkdGQ1FuaFZjbEZETjFoSE9HVm9ZVWMwYUVFMU1YVkNZWE5NYWxkcVExZzBRMjFvTjJwSlVucEdiWE5VZUZSQk5XMVZiblExVG5CYVNGcHhNa0VyVjI4ME5FSXhRVWRYUkRsQ2VFRTJaMHhNUWpCQk0xZFNaVGxCYUdOdlFqVlJTWGxzUzBsaVdFWkxOR2xHVjI1Q09ISklNVVZyZFdOWVJXMHZXbmxCWmxNNVREWXJlbEI2UkVJNVNXOXpiRFozU0hoaVJETlpVMnBFYUhGYVdYZDRNRUoyYzJaUU9GcDJaVUk0UTBsemFUaFhhWFoyTUZSTWEwNXVjazVJWjA5UlRtUk1TbWRzZVVGRVRrUktjSEIyYjBod1Uwb3JiMnR0V1drclVrMVlhV1pUVW1Sa2VFcE1lRFJRYWt0RmEzaFpkV1YzU2xodWMxSjBhM2d4UTBjcmNXTnJLMWRhWkVzeFlsSXJkRTlZVW00NWIzaGlOemM1TldRME5VcHZlV3BLZVZNM01UbHBOMDU2YVd4U2QwbEhNekJRWlc1aE9UUkhLMlprSzBGUWJFZ3phMXAyVUhSb00yTXlOMnA2WmpNM1ltcFZNVE5qU3pCMFIwWmhZM1pEYzFsNWFFdEtjazFxWVhONWVWbHlSVk54VDJ0alpFRkZlV05HVTFNeUx6Wk9ORUp4YVdNclVYcEhMM3BJZUVSdU0waEJUM1FyU0hNMU1rcFFiRmxqZEhkSk9TOVVaMFpvVFVoeFJrZHlTWGxHWVhRMVMwMUNjRWhIV2s1dWFFdERlSE5UWlcxTmNqbHZNVFZVT1dOWGRtWllMemREY0dKclZqZDVORGxFYW5WMVoyVmFOVmQ2ZGxSd01IcEtVMVE0V0Zab1JsWXJNMXBVTW5salpuUmlOV3hUTjBKcVJHbFNhVGRKUmpRdlVWTlVTVFJsVW5kWGVGRXljRWhXT0RSMVdHRjNVU3MwU1c1NGVrZEhXVkJSZDJveFpsZFhTRzV4TTBGNGEzWjBiREIxTVRNNVZ6SnlZM2xrZFhWeGVIRmhaWFJsY1V0MVlXNU9OV1pNWlRSdE9USXpVVVV5VkVkUU1VSnlNRlEyTTFSbmFGTlhabnBzWmpaQlVFZHJORTlpWVVkS015OUVLM0pUYVVwM1UyVmlSREJoYlhkQ2ExbFZZM0kzVFVvNE1tTnJOVmxTY0hka2NVVTVVV3huYUZwS2VFcHhLMVkwTkd0Q01ETlJTUzlpWm5CQ1ltZFZkVUl4UTI1cVVrUXdlbGxQZG5FM2IwNTRRMFZNYjA5bllTOVJhRFEyZUVnNGIyOUxOekZDVm5ScEszRktlSEJuZDA5MlZGbExkM2swYkU5bFdGWjJXVVZEYzJRNFIxSXdWMEpwY3paaU5qaGpSR3Q1YmxkeEsydEtWakZXVmk5bGJXWkVRM2h2YURKV1luVlhaR3BaT1dSUVNFMXZMM1J4VUd3Mk16ZzJkRVpsUWxkcVpreFVRazB2VUhFMWVtMU9VMjlVWm05alptOTBkR2RYY25sRlpIbzFXVzVQYTJRMVZYTklSVEZ0VDJoR2VHRlNNVTVIWWpVMWRtRkpha2MxV25sQlZXaFJlSGd4UmtWNVJXRlpjbmwyYzBFeFpTOVlOMDh4VkVaMFFpOU1iRGc0ZUhKV2IxVmpSMU0wZWxkTVltMDJaR1V2Y2taQmFtbDFZazQwVFZFdlRFMWpUbVozVVhScVVTdGpaa0Z4TlZacGJYbzVSMnBLY0M4NFltNW5ja2xEUjNwNlluTXZURWwwWlN0bVVGaDVNV1ZWWkRobFRYa3hXV0pUWjBsSlpYWllSWFV6UWpZeVkzQlRaek4zUzJnelFsaGhaM2RDVkVoUGNHMTJUVmxqUTJObWFrbGhjWGxXU0dRMFltOVFUalJ5UVRZeU9FeDVkbTEwYVhZeVIySTVURk0wWWpCUmIyMWtjMmRRYm1VMU1tdHVSamREYWswMmNsTXhTVmRhVDJGelMxWXpNamxhWVRsWWVTOU5XRXBMWkZWQ0t6TXZTRGx4YlhoeFlqVjVWbFZvWW1wRlZIY3JOMnN5VlVsNmNEaFZiVUprVTB4VWNXWnpNazVDZVZsdldrTnNXRVJwTlZkTU0zRTNVM1kzYmtselMwaGxWekZZWWxCWFdDczVkSGR1ZUROT2JucHpaMUF4ZVZjMU1tSnhiRlEyVmxaUFYydG9iV1ZJYW01alMzbE9SMnMxYlU1bFNraE5NRU55TkVoRlJtNUxRekZtUTBNeFkyOTBNalJWTmxwRFNsVkZRMjlHYTFGa1EwcG5UWHBsZUVGNlpUYzJNM281VkVGa09DOXNjelpRWkdOb1puQlBPVFp5WW5KMU1WcGxOM0E1VVZkdFNEWm1UM0Y2UzJzeFJWSm5XblJQY0c1Wk9FZFljVEJSYVhnclRraEVXQzl6TlRWS01sRkZUbXc1WVM5bVNHUlNPWE0xWmsxTVVISkdaemg0VnpSb2RXMUhZWGwzZWpkMGJTdDVSemd4VUZBcmFYUTJRVE5yYjNrNE1teEpVRWRXUWtKUGVFSlRkSFpUVm5Wb2MyWmhZMUZWVDI5TVF6UlZSR2RxU1dWRk9UbG5XV3RSVlZWUlNFWkZRVVJJUVVablNXOTZkVGxITWxSRWFEWTBRVkJ3TjNkVk9DOXZWRkJ2UjNwNGRrTmthVTVtVkhKU1EwUklkbVIzU0N0c1RrTXplVmRvWVdWbU1EWmhhRGhaWlVGaGFrRXJRbEZzYzBGRVNtZ3dXa05KTkVKYWVFUjZSWGh5V0dsNlNYZFNibUozU3pOdldEbHBMM1ZzUWk4clNYRmtSa1puT1VkYVRVMXlSM1EzUzBoWlNERTRhVlJsZFhCVVdWUkliRVpqWmtkeVZYaHZUVE0yTHl0dU0zVmhLM0o2YjJWRGJUWmFaMnRRVFRWS2JsUlJMM2hVTURONFZEQm5Uemg0T0VsVU4yMDBWVGxqSzBzNVNTOVBjMjh6UjNJeGJVWlVabGRFVDNKWll6bG5SMFZ4YUdOWWJFOUpiM05vV2tsaVoyaHJNSEJ3V1c5U1YzcDBObGMzVGtOTlQzTlNURFl3YWtkbFdFWTNRV3BhYlhob04zZEpXV1ZYZERKdU1saEZSRFUyZFcxYWVtUktlSFp6T1ZaMmRuWjRaM0k1ZFhGTWQxbExXVVZuZVVNd2R6RnRVREY2TVhZdkwwaENaakJSYjBGcWNsVkRWVVl2TVZOM09VTlhlalZ2TDNoeGEyNUNPRUZTWVdWT01VeFVZMjFVY25oSFIyMXJXaXRXT0U1aWQzZ3ZZakpPY0dWclVqWndlVUozTXlzMmMyeEJkVkZsVjA5MmJYbFNkRzU0WWl0bGN5OWtPVlZqWm1KNmFEWkRRekZSZFU1NlUyaFdPRUpDVkN0alFYcEZMMlJxT1VacWNVY3Zhbmd6ZUhGaE1rZDVTbEl3VlhFNFZYWjVabUZMV0c5UFNtRmxVR1EwZEdGUWQwUmFRVVJSWjFKQlluRndhRzEwU0ZkdFpUTlliMDFIVWtGUE1sSk9jVWMyYTFSRVdubHdUbmhFVUVGMVZXODNNbWswTkN0VVdWRllVV1ZrV1ROeGJGSjBjelpZYjBGT1IwUnZPV2d2TDBsYU5WbzBPV3BTWjFkWGRITjVSRFJSVkcxTFRHZEhSMVpFZW1KcmVIVmFlbVV3VjNoM1JqVTBRVmc0VG1OWk1HbGpkbE5HZGpKak5TOXdRbWRuTnpCc1VHSjJia3hRY0RKMmJWUkhjV0ZKWlhKbUt6RnNhR1F2UjFsclYwMXVjakkxWldWaVMyRmlhVFJ4TVVVd01tNVZXRXhhTldWR1JsRlNhUzlYY2taMGJqSmFNSGh2UzJOTVNuYzBjR2gxT1RWUmMzVktRMkZXY0ZOMWJXcFpjR1V2WlZNd2NtUnVWbEkxZG5WWlRuVnlTbXcyUlVaQ09VUlJUVWRSTUVWbVkzbzFiREprU0cxc2QyRmhabEpVU1RaRFRpOUlLMVJtTjJkUFUxUXJaRzlLZUcxV2ExSlJhM0Y0VHpGalNIVlBhRTUyTDBkVWJESnJWbXBKU1cwM1ZFbDNjMU4wV25oQk1qUjViME5zZWpSSGFGRmpVWGxsYm5ZdlptTkxlWFoyTTI5RVppOVpTR1V5VTJaeE16Uk9UeTlpY2pkemMwZFpMMmR6Ums5R05VSnFSekJWTldveGVIUmpTMGhuWTFvclQzTk9NRWd2ZVVrM1MwSkZNVWt2VVVKM2FqRTRUMDV3YUUxbFVITkNORkIyYTA5WU5rWlVWRkJaUWs1cFNYcDBUV1pJT0VWRGEzaFFPR2QxU25KT2QxRlhRVU53Tkd4dFNITnVaMWhhYW1NdlIycElXRGxHTHpkWWQweEdSREpqWmpaa09GcDBTVUptWXlzMWFIQjZPVkJaYkd4UWRXZGxjbFJIVGpsQk5EUkJVRW9yTDNoeWEwaFJNM2hsWlZGYWRWQnFiVFYwTkdKSVYxQkZTVXBwYmxNeFVtcFhZMlpSYWpablIxaFVRMlJSU2l0RFRVcG5SVTVNUkZaMFFYRklkVWRrWjBSUU9FNDRTVU5RY3psU05EWkdSVkZTYTBselJFSjVjMUpSV0dOSGVuVnpUekZpTjB4b05rVjBZMk01ZFhONlJGazNTWEZ5UkdkRmFFeFdZMUpuVm1wU1owRnZTSEZQWVZaNUsyRXJibW92T0ZjNWJVTmlVMUV2WTNWWE1FRk1SVWhEV0Zsb2QwRmFSVTlYYUZoWGFuQmphMHRRWlRkUk4xZEJUa3RGU1ZNeFpYUk9SRlJPVlUxMk1ra3ZPRXhQY0dwU1MydEZiMk40YVVocVlVOVBjR2QyY1dvdlUyTlpaMHBpZUc1NVdteFZhVzFqUVdOeGVsZGFRa0ZuYlhsVlpuQmphMEpNVldVM1VuTkJVazUxWjJVMlFVNVVWMlJCU1N0MFFrNXJVVEJqWjFoeFdXUjBWWEo0ZWtwT1NsSnFaR0pyWWk5UFFVMWxVMVJ0ZVZJdlZrVnJTemR2VUUxaWNtZFFSbmxwUzFVNFdXMTVUVzFLWm00d1VVeFVhV2hGVFhrNVNWbGhkemx6UmpCT1YwSkpSMVZMVldoYWMzcHlWbXhKWm5oMldtWmpNMW93UldveFExRnJMelF6VDBWeE1VYzBjRk5IVTNndllqQkZRa2RMYzNkR1VrcEdSVWd5YW1WNE1EbG1kblIwT1ZCb01UTlZXVkU1ZFUxRWIwNDNORFZIY2pJemJWVnlPVzFaWlU5TWRqaHNWM2cwTkRGV01EYzFVRFlyYXl0Qk1ESjBNMUZtTm5oWksycG5iREYwZG5STVltVXlVRzh4YzBkdE9WRm1SakozWW5sSFlWSXZUbmhYVEZrMVNXNVVTa05IV21sQ1owWm1PRFZoUkZaM1FVVTNiamh5TjNSWFdXaEhZMWRXYzNwYVZXNXhVV3hJTDNJeFkzSXpibmQxTVM5VFNYRkhOVTlaUmxneU4wWnJWVmRSU0dGNU5qRkJVWE51TlVaWmFYaEJVQzh4U1hKS00zUlpUVXN4U1hncmF5ODJjbXhsZUVKUU16aGphbXh3UWl0eU9WcHFVMmRrY2pKWmMwNWFOMFZPWjNrdk5WZEJTMHhEYzJsRE5tODJRaXRxVDNKTldIQTBRMFJoYWk5aE9HZHNaVEZSVnk5WmRISktXREZHT1hobGIwNW9WVFl6VFhSQ2QwZHRlVFpTYkdKWVRVNU9VMWRaUW01eWMxb3JVMWx5YzAxM2JtbEdVVTFyVTFkMVRHNVJSbkpaV1V0NWRGWkViMUpOZEV4UGJuYzVhM0pXYzFwWVdIUnlWSFJaTURNMGVXd3JaWEZHY3pGTlZ6TjBkM2szTVV0VWIxaHdXRmxYVTBKaU1IZzNLMlI1V0drNFIyMWFVaTlYVTNCU2RYZERUWGQzZVdNeFVVcDFWSEpDZVdaWmRXY3hURVE0TWxGNFVIbHplWEJCYTJWUlptMXdZbTl5TW13clExWlBhbmRzU1dvMU1IbDRlRmMzYUdabVVYQmhiV0o1T0U5alNXZEJhbWhWVVdWNFRuVnNOWFpSVWpKS1Fub3liMFJvZWtaQmVGUndSaXRLWm5Zd1RDdG9kalpNTmtSYWMwczJiVXN4Y2xWaU9IcGFMMDkyZW5kUFl6TXJjVUo0TmxSemRuQnlOMWxTU0dSUlowNTBjakZNZUd4QmEwUXlSMkY2YURWRloyNVZjVTk0TmtOQllVSjVTMEZuT1doRWFIRXpZMWhSZDJNclUwOVlZMXAwVkZjMEt5OW1NMlZpYkVzMmFHVkNlbWswZUdsSWFYTk9Ra0k1U2t0WE1YQk5UbWt5U0dsaVVUQnNkRmsyT0VFNVVUWjVRU3RxZEdGbmJIbzViVXBWTlRKT1J6SklRbGhuVjFjdk9YRkZVSGtyYW1GUGFraFRUV0UxZVVONGRWRnZWVlk0VlU5RmFuUkhOMDkzTWpab2FWcHJTMkZqY0hSYVVHUXpXRll4TlZkUVRqQkZPQzlTTUhaUk1FOHhkM0owTmpGc1VsaFhiVEk0TmtaS1YxWTJNRWsyV0RFclJXb3hVbTlGV2xWUVQxUXpRVUpxTm00MloxazNWVkZJT0UwNFVqaENWMHRDVFZWblEyMW9RVVIwU2tGc1pXdGhMMEZXSzFwUWIwWXljSEk0SzA4NGVuaEtMMkk0UW5wQ1ZFRlZlVEpCVjBNNFYwRllPVUptYTBGMlRHOWphbXBXZFU1NE1FUm5ZbEpRVjFSSFdVOUlUWGNyTUVGSGFqUXJiSHBHVGxSNk5rVktNSHBHZWtGU1ZFMXllREJ1ZGpSQ1ZVbzRXVGRtU0c5WWJsRmpUblpRZVRWWldtbDZXVmhPZVVKV09HVmxjMWRQY3pRcmRuWk1ORUZOUmtwQmRuQkZlVFZyV0d0NVFrUTVNSGN6WlZGSVp6a3ljVTFTWTNCcWEyRnlkRFZDY1UxVFdETjZTblpuVTNWVVlVcGtSbVlyZW1oSlkxRmtRMGROV1doUE9IWkhaRWR6WjBKRFFVdzVURFJCWm1Zd1VXNHdZbVpSYUhVME0xcHpSR3hLY1hkR1p6QmFNRzVOTkZwVVQyUnRkeXRrTDA5elpEUnJUV0l6U0ZkMU5HVjNMMjFQYkhwUWVXZG9SbEpFYTJNMVZta3JSM0pDTDFsc1IwcDRObVpMTW1kaE9VZDVjMHh1UkhaTU1qaFZiSFkzVkVFeFdrWlpZV3BITW5CNWFXMUNXamt4Wm1acVlrdFVkVFV3YUV4S1lUZFhWM2RDUjBsb2VVa3lSR0Y1Tnk5a1VGWkxTblJLYUcxWVZGcDFlVmtyZG1wNE5tWkxReTlQTURVeFlWVXpkMUJuUmtjMWIweEZjWFEyYlVwaFVGQnFSa3AwTUZKdVpWZFlkR0ZFZGpnMloyY3lkVXRSWjFWUU5WcFZTbWh3U0dOT1ZUVmhWa2Q2WVRodWN5c3ZRM040T1doS1pHcHVaV1pITWtsV1dWUTBOMWN6ZDNjMlRFTjRia1pqYW5SQlJHNUxWM2szUkV4WmRFWnZMM2t4ZEhnM0syWm1XSEJLS3k5UUsycDFjblkwVDJjNGRsSXJjelpPU1RONmJWVnNZVVpRWTFseksxVlRkbEpZT1U5VlNIbE1VemhTVG5aUFUydDZNV2xUZFhGYVdIWmxUMHhvTTJKNEwyaFZkbTVuWm1adlJ6QXdlazg1ZVVwMWJtWmlWMFJ6VFhFNVNVVXhabVE0ZGxkMk0waHVkbTEyZUdzeFRsaDRlV0pXZUdOaFdIQmpNV1pWVG5FMmJGcEtSeTl5TkVseFFWaENZbXBtWkRGT2EySnRjSEZtUkVaT1NGbHBaU3REZGtweGFrSXJjR2R0ZGxOcmNEVnJVbTFuTTFSb04yTm5jVlp4ZGtaalpHcExaWGRXYnpoQk9EbGlVRUlyUlRjNU9UYzRSMGhsYjJ4TU0ydGhkMlJEVUdzcllXOTZZbXhKVlZSUGJXSlRhSFZsY1RWNlZreG5RVXMwUVc1bFp6bE5PRWs1VDJoSlFrUldMM1kzT0hWTlRsQXZNVFF5WW5wSGRtazFObnBEWVRWS1V6ZHpTbkF3YkVoSGNsVk5TWEEzYkZaVGNrVnJXbGxGVVU1eWVEQmhOVVZ3VTB4U2RXRm1NV2htWlVVM1V5OWphakF2Y1ZaRU0yRldkRzkzUVVJd1JGRk9TMkUxT1dNMlpVUlZkbGdyTDNabVZqTnJkbEp4WXl0QmNVeHNNU3RqZEZOeE5rdzFWREJsTTJOTE5tTXpOV1JTYUdGcU1GUTNkR05RUnpnNVJXb3dRMFl6WVhZM0wzbHlZbUpUUm5kT2VqVkJWMkVyUTJoblVUZGpXbVVyYVRJNVVWVkdkbE00Ym5WT2JtWkhiVmRtU0ZveFN6UnNNRmRUV21kSFZFaHJVVVpWWkd4cmRXbFVWWHA0ZG5rM09XaElVRTVyYW0xTWRXbERlak5XWjI5NU5HODBkV3BIVEc5Q1EwaEplbWxGYTNwTmVGZzRUVE16WmpOUmRVTnJjazVUUXpKYVYxZzVlSFpZZEVKNWJXcFJMMlZpTkRoVk9YVmhiMHRyTkhoWFdqUlRaVkJ1YTB4MmIxbEhSMGhpY21kSFpHczNkekIwUkRJeldWYzFlRlZYTm01VFJsTk1TbTVtWmxaNlluQkplV1JZZVZKNWJuWXZka1ZYZGxRM1ZWcFRZamhWYjA1QlJraFViRkJwSzNnNWJrcDZZM2gxTjJNcmRFaHVOVEZUV205aU4wSkZjVGhGZGpkb01FOXhLM1Z5UW5JdlZqRmhTRTlpVlV4bE5YSTVWMEZ6YldOS2NIUjFXWFpCVkVKUWRVbFFRVlIxUkhsTFNIVmpNVmt5UmtzeWVFVkVkV3hTVTFoc04yNXFlVFZvVEZRMVZIVk5hemxOZERKNk5rb3dXRlJGY1RSa2RVZHBiMnhrWVZSaU9XZGFSbXBUTm5wSEsyMHZhVkoyT1VoSVQwdDZkbXBqUm14a1IyeHlZMnhXVm1OcmNHeEtZVTF1UlZKTWIycDVjM1ZUYTJkdlMyODJhalJIUVVocmJrUm1TRlZsTlZscU9XcFFjbmRNZDJGSU1XRlVZekZrU3pWRGEyRkRTMHhSWWtKUFVXTlVTekZPTkc1RlozbGtkVkpRU1RCbGExWkVUM1pRVmtoV2RrZHZVVEY0WmtoalpXbEdPVlEzUlhWUE1IUnNjWHBzTTJKdFdWY3JhRWxzYmtaUVZVbEJTVlZKUzFOM1ZGYzRiRFY0WTFSd1duRlRieTl5YWxCTmRqbG5SVFkxUjB4eFFWZGtibTlpTUZsRFdUaFFXRU5pY2pWUVpGZHpha2xSYWxBdmJUTnZaMVJ6WTFsdmFXRmFZa2ROYnk5dFJtMXliSFpKWTJ3eVNrTlNTMlJQYm10SFprWlNVek14WVVKTVdHaHRVbEphVlhGa1QyczNiRm96Ym5wTldIZzNZVGhJZFc5VE9IbDZVMloxWTFwNksyOHdMMjE1TjBKMFdHMTZkM3BwVjAwdmNHVk1TVms0V0ZoSVQydEZWSGgyU1RkUWVtbDBUVkp5ZFRndlZtUXdZV054TUU1VVZXTmtjUzgyTlZKaE1FbzVPR1ZSYWxwcmNsWnpkMHBwUnl0S1VEUXlPRW81WkdkcVNtSk5iblpRWkhrME5IVjVOVE40Vnl0Mk4zWm9NWFJtU0Vwd1NuRkRMMDl4WjI5S2NVTjBaMWxaZGs5aWVtcFdiRnBIZWpsbVkzZDZRVGR0TmtWcWN6TmFiRXBYTVdGVk4yb3JiM2NyTkd3cmVHSlNNMEk0TkhwdWRreDJXbkl5VEVnMmRWSnJTbXgyVFU5V2FreHdURlIwYVdVdmJXNVBOMDF1TVRoM1kxcDVUa1JpY2pCNVRUa3lXVzVIWWxCWVIzbHhjM0ZwTVV0clFrNVZkM280WVRodWExZHRSa3RyU0dodkwwNUNUVmQ2UjNWdlEzTm5UaXRKYmpVeU9VdFRaRzVqTkZCbmJHWkVPRlJZYUN0M1lqbHFhU3RaZFVGaFEyUTBTRXhXVjNGM1dtVkdZVXhMTmxScWVFOTNXWFk0TTNSS056WmlabUZ4Y21abGMydEhlR05CVkZWbk0zZDRPR0YxYUhaeFdtMVFPWFpsY0dKd1JYRndTVVEzZUVFd1EzWnRTamRUS3k5a0syVkROWGh3VlVaQ2JrOUhLMlppZVdNMlJtRjZia3RSTUdZM01XZEZaRTAwWVZsNVJHUkxlRmRGZEZaWmIydGhXSFpuYTFsTE5YWlNlRlJUVEVkSVVraEtTbkZaTVVwQ2NrOXpabTlxTUdSTmFuaHFZVXQzTldkWVREVkRka2R0ZUVkU1NuUkZjVVphSzFRMGFERnhVVkF4VUN0MmJsTXpOMmx6YjNVMU5WcHRkVGxqTUhwUGNFb3JVRzVVTW1oUFJ6aHpUREZYVlc1S09IVnhjVFpYZFhsUlRtRTRTR1pyVkRWVllWWlNkVkJ1UjJoQlVqWkVLekZtWm5CTVR6TjNSSFl2UVVzNVJrczBLMHR3T1d4RlZXUllSbmxCTlRsbFMzTnZhUzlXVVhjMVl5dDNWbWxrTDFaeGFETktRMUphZGtnMk1HZ3dORTlETVhoVllsaHBOVGRqV0M5S1IxSkRRbnByTWl0TFVtdzNNVGhyZERSak9IWlJTbVZzVG1aalptWkhXRFpMYWpaUE5FNTFSMDVST1RkQ1dFd3lRWEJoZEROcWIyTmFXRm92Y25oeWJrNVlkRm8yYzB4RVRUQkNkM05ZTldGdVVpOTRTa3d3VWpKQ01HUmxVVVpsVG5wV2VqZG5hbUZEZGtoWVYyOTVUak5NUkdwRlRrdEtUWHBaWTFGM1RIZEhhVzlIWTFvdllrOTZTVEowVGxSb1IyOW9SSGhaZW1WMFJIZzRZMkpDYlZsVWFuTmxURXRpTUVsTVRtNUVNMHcyUVd4MmRWVm9WV0puTlVadlZsRjBlRXRNYTBOU1MwMXFURnBaTjB0R2QwWTBPRkZVTVZJME1rVjRSbEk1Um5CTlIyNXdiVkJGVHl0R1p6UjRiVFJ6T0hsbFVYUXhkM04wVVdNeWFrMVVSblJvZGpSdldrOW5VamMxY1ZJM1pUZGxMMlpQTVZZMmIyYzVSV3AxT1VSbGJGVnhNMmx3YlVaWkswWTBNRGRrZFc1VGRUbFFZblpZYURSSlptVlhjRWMwY2xaeldYWlNZMlJuV0ZSUlFsbG9iM3BGTlVzNVJWZE5VRmcyUVVwcFMwNXZRVTg1VFhFNUt6Wm5VRkpyUlRVeVp6Uk5jR2gxYlhNMlFVeE1VMWRqVVVKTVEwTlNTbFF5U0VaclF6UjVkMmhrV2pOd1JuRlJZekpYYXpkVmFIazVlbGgxUld0b1JGTnlPQzkyVmpCbWJYVllhVWRESzFCTU5Dc3hkRGhqT0ZkcU1IaE9kRVZ5VkVJNFNWYzFORFI2U0Rod1duaFVOMms0WjIxeVEzaE5lVGs0Y3pBMk9IaGxibEJ6Y1dsSGVFc3ZNbUZqVXpGcmExUlBaR2xIZW1kNVExQjNNVWhqWm0wdlRFcGxkSGg0TVVoclZsSTFNRXN2UVdOU1RXVmpZazVhZVVsNVdqZHhVME40UTNkeFkyWTNTV3BsZDNGMGRtNXdkMk5PWVN0M1kwWTNWVFZLVG5aaGJrbzVSamcyWW5RNVFUTldORTlQVW5sNWRVRnNSVXBQVmpRdmVXNVFhbEZYZUZabE9GSjBTVWt5VDFGR1pqRnFXR0ZxZUhwWWNUQmtWMGxIUTJWQmJWaFpUMEpqU0dSeVF6QlliV1ZKTkVZMWQySkhSMEowU0RodU5HWkNlSFIzT1ZCcGIwbHRSbWhCUzNSU2NVSktjVkZyVWxOR1FUZGpjVFJpYlRGdFFrcHpaSFpaVmxCVVVYSTRZMnBTVmxJMlVHZGtORUpSVkVGbWVqQnFaVTVITW5wWWNXZFdPVVYwUWxSamFtMXBkbEZ4Wm1waksxVXZaWFZWYTI5TVRsWnBlbTAzVEZsR1MwcG5TMlp0Y0hwNFNEVjRkR2xxVmpoc1IwbFdSa2hzUkZKWFdtUlpSMU5JVjNReVZrVTNNbmROY2swclNVZHdlRk5GYUZoaWJsRnljbEJWV1c1NFlubFVXbWhYY1haTFVYQnhja3BCTjJ4MFVuSXpaME54VUc1a01UUklUbHBoZFhOUE1GTjRVSFF2VlRaTksyOUxMMHBUU3pKMFZHTXliMmRZY0dwelJXZG9XRUZ0Vkd0M1V6SjFNMGRwUXpsNGNFaE1VRGd5VjBSVWEySm9aM1ZYV1c5bVVUSXZjVzUzZUc1QmN6VmFLMGRSVFROUU5qWnllalJLV2sxUWNucG9kVzFJVjJsVk0xSm9TaXRRY21WekwwNXBORk5rTmpsS09IWktRemR3SzJvMFVuYzNURWczZWpFMFZTdGtPV3g1UlZjMFFqRjFWVFpaZWxSdmVYZDZMMnRKU1RZelZYbEpSa1JWTkhsclptNW5PR05hZW1Wa1RsTldPR05zVm05Q1YzUkRiM2Q0VVhRck9YVlVZbWxFZVM5M05HUmllalJyZFZSUVREZ3lhekpsVUdZelZWRlBMMnRwYldkSVdraDZhMGhHVjFKek1qZG5lazlhTTJSalZFaE9NVWRKYTFSSGRqUmlibFZ0UTNSWmMwVnhkR3hIWlRGV2MzRklZa2RMY0ZkTmJUZFVja1ZUYUROVVlWbzFTamg0T1RKamJEWTNkamh3ZFhBeGJGRkhaRzB4WVRaMWVuRk5jVWhxZUZNMEwyY3dXbUkzWkdWNGNtMTFRelo1VmpGallXaHRVMjFxYjBaRk1XOXpVbkJsUTFSUU5HUmhNM1ozYzA1amJDOVpkVGxhTUZwd2NEQlNNRXhIZFZFcmNuRlFTMFk1V0ZWa1FWWldhRzlqVldkSkwydExlRmRzTVUxbFRVWnBXSEY2UTNWMVprVnVPRGRWYW01S1NEaHdSMUl4V2sxUWEwMUdNRmxKVDJRMWRFbDZSSGc0SzFKTVppOHJUMDlRYXpablNGSktUMVJ2T0c1NE9FbzRUek0zYVVJdk5FZ3pPRVp4ZEU1R2VrMDJOMmxrYjA5a1JUQTBNbGhWV21aNFRYVmFTVWhtWWxwWVZHaEhSSEZPVTA5Sk4yZE9VU3N6VkZkRVR6aFFlbWhRVFZKRllVNXNWWFJIVTBGc1QyTlJOV3g0WW1Kc2FHTTJjek1yYld0T1JrSlZiVGt5Wm10YUwzWnlUVFppTWpWTFpVZDRZMVE1WTJGSVozUldZazl2V0ZReU0xbEhTbkJUVlRGMk1YTXlVVzEwZVhoaWMwaExZWEl4WTFNNGRFc3lhRlVyT0hwUFdEZG5lRk5tVDBGU1IyaEJhekEwVWswNVNqWXJUMDR2VVhCMlExcHNZa2hvVkZwWU0zQlJhMEpNYzI1Q2JuTkhhRU4wTDFOU1ZUSnhiRWhuV2pZMVVXRlRiamRpVkdsaWNteFVTMUEyVEUxemR5dGtXSEpNVFVaRGNYUnVTVTB5VUdwT1JIQkphVXg2ZDJaeU9EWkphV2x2YjJwdlprWkdTRmR1ZURoWGJFcHBXWEJNZDBjM2MzVnJhR3hyYXpkR1YwOTFRMk5HZDJGSk9FdHVSV1pOZG5aYVR6bEpjblJzYjFRdmFrMWpWVXBwZEc4NFVXdHpXVWxvU0hseFFVOHJlWFZxTTI5b2QzVk9WRkpsUWk5aE4zUjNUelo2YkhOWlREWk5TRXQ1TldOeFZEWTJTMWQ0UlZKSVZreHdNVGRoZVhCVFpXOVNVakZqVFRkUWVta3ZNelk0YkdSMVRFWjBLM00yT1RnMmREVmlhM05hVUdkalRXVTROV1l5V1d0VFprNXZTVXBCUmpWYVpHRllUbmNyTVZCRk1YcG1Na3g0YW5ZMGRtdGxWV1pZZWxkV09XUTFPV0pqZFdSQldtWnRLMHcxT1RjM2JUVm1SMXBhZGtWUWQwcElhRmRrZDNwSE1EQnVlRzEwZFZSemNrMHZUVVJ3V1hwTk9Xb3lOSEJ2WldRM0wwWkhXazFpYjJkME0zcEthMUpJZUdNMFRubHZlR05rWmxKSFYxWm9aMUkzV25CaFNucEhlbkJSTm5CNlNTdEZhM3B6ZGtseFFXdFhUVmhhUkVjd05saElTWGRSZEZwT2F6UjFZbVZZVEhBMVdWZDNSMnhhTjFsNFJFMVhVMUJrWTBKVFFVVlJRWGRZTDNGM1FUQkVOa1IyWjBoUlFYSlJWMUIzWW5kMmVWQk5XRFpJYTFsQk9EZG9NakJETUhSNFYyTnVWMEkxTlVoS1MybzNRMUJxUTFBemRFbEJja3B0UVdsQ2IzbFFObFJxVkdVeVJESjNUMFJuVlVWVlFWcExiSGhhUzAwemVUSTRUWFJwVm1aTGNGazNabGhDUzBsSVlWRXdLMXB6YUVaNmRVMUplR2RzWXpsSlJIZFpSSFV6TTJKeE1rbG1TRVIyVkZaYVQxaE9OMjVWTUVSSFRVOVFZeXRKZW1wblVYRTVObVp0Vm14dmVrNXhRbWxXYjFBM2FXUkllamcxTkdOdVZqUmpVelV2Um01Q2EySjJlSGcyZVVWWlpHdGlVVE5qYmtSUWRtdE9NbGt3UzNwc1VFOUtkRWhQT1UxMVpVaFdha3RTWmpoV2FFUnRWVkJhV1dGWU1uRTNTaXN4ZFRaNGN6azJlVFpZVjFac2RTdHZVM2x6YjFNMGMzWkxZVTlqY0RJMmMwNHlObVZYWW5FcmRUTnFOMnhhUjBaaFVtMUdhRkpzYjJoNVprSm9NV3RYU1VsTU9YSnhVRWRsWWxZeU4yZFVUamx4VFU1VGRtcEZkMUZET0RKR00wTlJOa2t2VjNkYVVITldWMjlEVWlzcmQyVlVlWGhFU2pRd2RHUXlTMU5ZUjJJMVQwMTZVbVJQWlhOTWRHaDRXalpCY1hKNFdtOUpURmMzVWl0SmVtOTJNMVYyYVc5bmNscEZjRU01V2taR1RUTmtOMHRsTkVreWFXc3lSUzlsTkZjM1FtVlVkME5HVlVreGRVZDBWVWxPWjIxU1J6QmtaWHBPVERZeWRWQklVWE5oTUZaRE5HOXlTa2RUYTNCc1dGQk1ZVFpPUkRGRlJ6WnBUM0paZW1WNVZtcHljRlZuT1hSdmNDOXNjR0poY3prMVVpODBhRWxUUm5Gb1NtWlViRm8xYUROcU4zSkJNa3RtWlZvcmVXaEdTR1V6U1U1RWRUZG5aV3BtT1RkR2NteENaRzFWV1c1M0x6VmxhR0ZWU25KMk5IVkpPV0Y1TkhCclQwSlBUVkIwU2xoSFZXUnllWEZHY0VsR1ZqQk1jaTlITnl0NFRIVnViRlZVUlhwUVJtbGhiMk5zV25OVlVtWk9jM1ZtYUVzMlluZHlUemhuTDNkamNERlJjVEJKWkhOb2JsZzRNbTlUVFZSTE9YZGFjRmhpYTFJclRFaGhkR3hVVHl0bUt6TmhOM0F2YkROdWNXaDBkWFJCVG5rMVIxSjZablkzU1Zadk9WbHpWREJuWm1NdmRYRlhibk5KTWpCUlExYzBVWEprUkUxamJUTjNSVk56V1hkT1NVRnVRa0ZUWmxsaU1GUk5ZMVpYY2xaUFRVVlFaRzVsTDBkYVJIVTFjV0ZpTms5aFdGVmFOWHA1YTFkV1JXWlROSFZYZGpCcFVERnBWM2hsTlVsdVRFMTBjR2Q0Tm10NGVUbHpSRk5VTW1SUVZWZFBOSFJXYzB0WFFsRjNMMUZHYXpSUGFFRjFOWGRIUlUxRFpVMXhORWhLTVRKdE5VbDNaRTQ0YXpKd2RYTXJNR1ZWU1RkTFJuVlpkemd4YlhCM1luSkxUVlZLTTNrMFRrRnpWak51TlhaNEwyOVFhblUyY3pOR1MwczFRVzV3ZUVaUGJrcDZSR3hpTTNwM2QxSnpTRlI0VkhSdWJTdHZjbXBaV1ZwemVEUXhkWE5CYjBGU1FVTXdWRGhNTWxsaVYycHpRVzVPUkROQk5rRmFjMXBhYmt0RlpGSnlZVUZqYkV4bGFXbEJiVmRTSzBwSVFXNUVZM1kwTmpkTU4xZHFXRVZzVFZOS1NTOTNSM0E1WVdwMVoydFhibmN2YTI4eVlXdENhVVpRU1VONFRrWXJVSGh0ZGtscFRscGxOVUprVG13M04wSTNVWFJYWjNGWE0zVjJiMUZHYm01aFNIQnJjMEZQTldSSlZWcHRRaTlHZFZSM0x6ZG9hek50VUhFellrbFhTbkJ5TDNNeWQweHBPWFp5Y1djeE1YSllRMjFoYnl0SlNWSTBWVGxsVWxwdmFVbFZWMGQyTmxwM1ZHMWhTMUZGTUVSWldrbG5Xa3RpYzFwM1VteHZVVXRTYW1kcWNuaGFWVVJDUld0cFdUVllhamRhVVVwR2FXMTVkR1pMVFhNNWFqTnJla1pXUWpCVGJtVm1iME0yWTFOQ1RISXJiRlp0Y1hKUk1UUlhURGN4T0U1VUsyMXJiazFPYWpCcVRtRlhlWEZZZUZkV1RFSTJhMmswWTIwck0wMTRaR2x4WVhseVptOXFNblJYVkd4eFJYTXZTME5NYmpod1JTdEpUbXhUVm5ORGRrcFdla1JyYW5adlZXYzVjMWw0ZUZwek5YRmFlaTg0YUdGeVF6bGhNVVZ3WmxweFdVcE9VV2RqTWpoNWJHY3hTbnBIVVVKb2NqaGFZVThyUlZvM09FeFZiVU40TlZwU1JsaG5MMFJrUjNFMFIwbFRXazlEYkZSdGRVaHdZVkpzUzJSWWRUSm1hM1Z2Wm00MFNuSkZURk53Vm1wVlNXOUdhVzlSWTBOWGVWZG1iWGhYTTFGdE9YYzVORWhuZEdsbWIwOXNRWGRFV0hkRFQwUm5kaTl0UkhCc1FtRTRlSGQ2SzJ4TWJIWkNlVGd6ZDA5cmIwaFRhV2hoWjBrcmEzaHVSVEZ1TUVwT1oweENRVkkwYmxsVmFIaG5abFpOTlZaRFowRm1kbFprTVZacE0wbFJhamhpYkRCek9FdzFTM0V4V0RWaGIwODFiMjlGTVd0V1VHMWtTRlV5YkVWWk9XSnViVFpsU1VGMVJIY3pkMFIzTXpGRWQycHNObmhNUlVOd1MwSTBOMDlvWkc5UlNXTXpOR00wVURGSWNrUkNkVkp2Tm1Jd1JtNVplVEozZVZoWlV6SlBTMjFwWm5WSlIwWnVWbmh6ZDJjMVl6RkJRbU13WnpKSVJXMDBObWRFZEhNNVZVSlpiR0pOYkZOM09UWXJaVGhzWkRjdmRrZG9RVWcxZG5WblNESmxkRkprVFRJeFZETTBhamgyU1RkQllucG1hR2hzZUdocE4xTlVXREp4WkUxbE4zRTBRVTExUlhGM1ptZGFUMmRxZVV4M1dHeEJkMFJZZDBRd1duSnBja0paTld4WWJVMHhkblIzVFhKNGREaFVUME5FWlRCdVYyNVNkblo2SzAxbVRFSm5ZVlE1VGxjNFFWaFZXRWMzT0dKbmVHNXlaVUZtUkN0YWVHTkRUVEpyZEdOSlptZEdaV2czTkVOS1UxTjVSa3R2YW1KRGJGaE1iVGx4Tnpob1dGTkhRMVExT1V0dGFtdFBjRlV5S3pSdVJsSklPRXBWVTNFeFlVSTJNM1FySzBkSU5YSlVkRlo0TjJkRGFWaDFhMVpCVEhGRlJGRm5kRUV5YUVFM0x6aHBRM050UWxBMlNYcHVUelpJVFhweVRYVkVielJtVUdSSVNqQm9MMHh3UVRoaVJIZENWa0Y0VEZCNGFrVkhRVVp5ZVVaM1FWZ3JUVVppZW1ORVN6aHFkRzlZTVdGcGExbDZXWGhxZEc1R00weHBVMGRHWWxsWGRXNVZjak56UVVST2NVcE1OazF2Ylc5RlNsaDBORUZCV25SemJTOVBaR3d2VFZRNVExRkxNbTloYzFWcVZFZ3phV0kxYUVkWGIwTnhWMDFYWTNaWVExTldUa2xrVVhOSVZWWkthRzluVkRoNVZrOUNVelZtU25KWlFXeGtNUzh4WVhOeVZUTldUM0pMTUc1VGRTOXhUbFpPTW5WcmNXOUxPVXczZWtKRVVtRlZVbkZIYXprcmJVTlROWFUwVEVaVFNESTNTalZ6Y3pobGJWa3ZXbmRFUzFsNVVVZzNkVmhhVldKMU9FTnVNMUpZTjI5d01HMVVia2xOU0VvNFVFdFliM1ZHZG1wMVRtSmlLMFF4WTNoc1oycHNMMmhCYmpoNGRqUmhRa3gzUkVkWlpVVm1RVGhaUzFodE5rY3hNVVppYUc1M1VtYzNhbmd3VVV0bFJteENhVlpXVm1kNU9HTkNVV3R0UW5wR1NIUTBVVk5IY1dwSWJIcEhkbWhZWmlzNVlsTnpjRFo2WjAxaVNUSnRXa1ZPUmxZemVsaGpOSFJ3Y1Vnck9VOTNZMDVwVUhFdlRYRkxUVkZGVGl0bVV6QllhMWRGWVdGMlNIQk9jSEpFVTBaelQzTXZPVFJxZEZkRmVIUkpZVk0zU2tScFMyVmFNalZHUmxKYVJTczFWbXhLTURsWGVpOXlTelUyYzFWdmFqaHlObmRNZDFNeE4zYzRXRnBXZG5WTE5IZG1SbXhzWlcxTlkzVnlWSFUzZW5VeUwySnhWM1ZhTjFadFFqaFVUMjFIUTFneVUwbGlNV3hNTDNKNGRFOVhObVYyZW1vMlQwMW1SMlZKVmtkQ01EUnhia0pKVjFnMWIxVnJlRzlqYkN0T1dHMTJTVVZZTm5VdlpVZEtZVEZxY2sxR1V6WXplV052ZDFZMVNVWmlOME5QYjI5aFFreDNRVlozT0VKYU5uVk9ZVU01VkZkRVVESXdlbEZLYkhwT1FUWnZkMVkyTWtsNk5WQktSR296ZWxOQ2N6Um9jSGRXV1ZoUk5sVk5iRFV2UkRkTVMwWjNOVEJuYVdad1lUVXhOM2hSV2twUU5HOXNhMkUyS3pGdFVVcDNSWEV2TmpKRVZHUlBlWFpMWkhFclkwWk1NWGQ0TDNsTE0xWlhlbklyTXpadlJGRTNZakZRYldwS1N5OTZiVGsyVUZSTWVFUmFWR0owVEc5b1QzazNUMFZCYm14T1pUQnFkMFZGVVZWUWVGVnRhU3RuVEVSWGRETkJMMjVoYkhVek5YSkRjMHhwV0ZKV0x6VndWVVpvUTFsclN6aGhWREptYzBFd01YQkpSMlpvUTNkbmRXUmpia2RXVTNVNU1razBNM281T0ZSMFYzbFpaRU5LTVhNMEwxaGFMMXBOYlhsaFRsTnphM2xsU0ZvMFVHZzFWekpZTURoTWJGaG9la1ZwYzJ0MFowOW1SRnBWUlRaVE5sbE1hMVl4VEVSM1VtTkJNMVJDZDB4UWJIbEROVkY0VVN0MEszZDBSRUozTVdncmRqTkthbVo0WWpKQlJqVTNiRzFMWm1aMGIwMWFObXRHVVZkVU1FdG5lamwzVVhkc1R6UkRWMGwyUVRkSFVEUkRlVFZxYUdSbFowTmFZelJOV1dWMmVXOXJUSGhRUlRZNE55dE1VREJLWW5GWFowd3lSbTAzVkd4TlJFTllNMHhCUW1obVUyeHJXR05PY25odE5rVnNXaXRtY3l0dVF6bHhkamMwTW5CVE5XSmhkVTAxVEdWR2NuZDVSalZ3YVRsM1RFdDNTbmRxYldzNWFuRllPRU50YzNVd1pXRmpjekl5TW5KTWNqWk9TSFZGSzJsUU1XRXhaamQwTlRsYU5FZFVialIzY0RaSk5UVm1iblZrVGtWb2NWZG9MMWhOVmpOWWJHSmFNMVF4UWxKcmFFcFVUQ3RSTW1sVk0ydERla2hTU1ZSTlpuUXpRM0pNVWtRMGRtNTBXU3RCVEZGT1FYZGpPRGN6VGtGeVZXeFZRVWczUzNGMlVtcEliREJJVm1SS1dGVk1aRmxEUzFsak9YbzFNbXRYYjI5bVZUQjRNWE56WW1aV1RWUjBkR3BKZDI5TVNUZFJObTVXWWpSRVVUQkVRVFpuZEZCVksxaHNTMVJNVXpSbWRuQXJZMWRLVTFWV05XRmFWRTVLTjNaRFRUZFRjbU5QS3pBMVRVczBVRmxYZVhsWGJWcG9lR3gyZFVsVmJXSmpWSEY2TWtjeVlreHBPUzh6ZUV4YWNXdGlZMjFVWXpSSFdFdGliRVJ4T1RCVGJWcDRhR1pFU25sQ1NXaDRSRWhPZG1GM1FWaFhVbHBrYTBGU1QzZE9hemhIU0hkTlIxaDFhMVIwVjNwRVNtMW1jbmRXVDNkT0wwWjFWME15WW5aTWJEZDFRa05VZWtGM1lXNVNabTR3TDJGU1FsSnBTVGczWVdoSWJrSTFNMFUwZW5CVlNXNUVOVkJFVVdSbVFVeFpUVU12SzFreWJWVkdXbmRSTkRWeGEyRlJMMnh6UW1wbE5saE5RVk5uTXpoTUsxVlNWMmR4VFZSWWVrMHZja1V2YWxGd1ltSklka1FyVXpOQ1ducEtSelpyTlRFMVltTlZWR0pTYlZkSlUyWjZSVk5LWW5SNWJVeGpiemt2YWpnM1dERkRLM052UTNVMlkwWlpVa0p3VDBWdmFVeFhWM2hKVWpSWlUybGlRMnBWUm1wNldGQlVRWHBCVDJOaGRqa3pZblF5UlhweWJtSkpNbGQ1YUdwb1IyOTNlbEptU2pGRGFEWm9Ra1JuZW1saFVEUkhjbFJZZERWWVlWaDZUVTB6WlZaRE5GQkNOR1JPVUZoNVRtNTZhRkJrUmtoSmFsZEtXa1J2V0VnclRXUlROeXRzWjBobE4ybFBUbGx0WWtkclFXSlNhVXRzTkRKaUwxcGtiMkp4Unk5eVZqQk1OVXhsYmt4RGJqQlRaQzlaU0U0emJISmxaMVZZVW5jNWFXOHJaMEkyYTFKdk5EUkVNMVl3VTBwVFExVjJUMVJrV214M2Nrb3pSMmRXTUhOalMyRkthbTFKY0RKd2FHNWlkVFZ4UzBkdVdtNVZSbkV6ZVVwRGNXWjRSVFZOVm1sMU1FSllRMlowUkRZNGFtVmtTbWxtZUhCb1ZrNDNNVmxYU0dWMmRTdHFkemM1Wm5wRGJETTVablpsVTFneEsyVmxWRFV6VlN0cFpGUlliSFpFVlU5dldVaDBXWFpJWjBaUFp5dEJjV1pvZEZrNFVVc3pSRmRVYkRWdFZETkJUMWxaVTFOaWJscHZaVzE1UWk4eU9WcHJWSGx0TmtNNWVXVXpUMGhSTDBzMlVITm9ObkZOZFVaMGNUUlVTMjR6TWpGaGJHUmxibGxXTW1GelJWZGhRemsxVmpWaE5tczFTMmhQTkdWS1VuRjBWazg0VkZSbU5qSkJZemhLU0c5QlNHTlVhQ3N2YVRSVFVGUldUa2RDU3pGbE5FNDVLMEp1WVhsRmVFbFVWMnhSTWxCb1MyOUhWbTFMY0ZvNFFtcHlPRVl3T1hKQ2QxQXlNbmc1UzJaMk5ucEpZVlkxUmtReFpuQTJORkpxUmxoUGRIRktSV1Z2ZFZWMlYyMXJPVTFuVDBOcFpURnNZbXRxUm5scFMxWktRM2RQVW1kYWNuWklRMGhoV0UxQlIxcHJlbFJ4U0V0NlRUY3diVkp2ZWxwUFNIQTNURmczVHpoSVMxQkhUVTVqZVRKMlNsWk1hamQxYlhNd1QzcGtOM0ZFZHpCWlVWRm1UMFZKWm1oT2RVY3JjV3RMTmtoS2R6VlBkWFpMWmpaT01sQnhUakpRZWtkdFZEUkdPWEJNY1dGUWVFZHBZbTF3ZUhWa1JYQlRNWEJQZUdoM1ZVaHhUVzlyT0RWVVdEVnNXREJpS3pSa1psUnlSV1ZVTmtwdWRsZExRekZaUWswdk0wNWlUbmhSYkc0elVFUTBkbk42YjBaVGMxZGhOMEZzZUVoUU9WbEVPV2RITDJsTlZXbzNVbFZ3UW1kdlJuWktaa1o1ZFVoTFQxRnJWbTVzVVhjNU1FczFhMVptWTNWb1prZFVNVXhQYjI1T1FXcEZRMEV2VlZVdmFXTjZSRkpvWmtWUVJUQmlWbW8zVTAxVU9GWndkME00VjNoYUsyNXJNbWxvVTB4UlVsUlFUVmd3Vkc4M2FYbDRla1puUzI5RFFpdEZkVkp6Vm13MFMzcDFXalJyWm5GemNHRnNjQ3MzVEVOa2JsZFhOeXR6YVhnMGRqTnNNVmhPZW5FMWNWa3hRMUZzY2sxRFltTkxZMHBYWjFGcVMyMDVlbFEwV0U4MVNHVlJha0ZFZFcxc2VVczRNVTVPT1hORlQyODBXazFDVDJGblFsVjBVak5zYmxGVmEyNVlhSFEwZVd4RWVHSkpkVUk0YjBKNldqUXhRM1Z0Vm5VMU0wZzRXWGRxZFN0SU5WUktkMlZyZDI1M09XWjZVRmh6T1dJek1Hd3ZMMUpaUVVKNlNrVlJaMFZuUjJKb1MyOHhhRXhRWkc1R1JVTjBiVXA0TVVGd01sbFVUR3BQWlZCV1NESnJPRzlPWVZGQk1UWlBlbGhJVTB0RGNsQkxMMEpHZUU5emIydFlUV050Wm5WQlZqSXdORWxQTDBoU2EzRXJNWGRuSzNoclNscFlTRGhwZEZOc2JWbEZSazlrUlhwdlMzSkZaRFpEUVVOWloxRTNZVVpoTkc5NldEQjFUM1ZLTlM5aE5HNTFPVEZYVEZGQk1FRlFUbGhVZEdsTVVrdGtPR1ppTlRGc00zVnNNV2xSWkVWeWRtRnFNMDk2VHpWNlltOUlWMlpOUldrMVZGZDVOWFJsZG5kTFVHMDBjMWMwYWtSMU16bDJiMDR3YmsxSGRsSkxVbkpWT0V0a1lpc3pWVVJuTkd0b01GbHRjQzlGVUZnMVRXa3hOVUUyVXpkcWRIY3hUV1oyTnpsalFrZDNkVTVZZHpCQmFrdHRkakV5UTNOemRuZExNMnBhWkVKWU5tMVpURUZpY25WTE9HVlVVbTh5UVUwd2MwVmFZeXRoV1dSMlFqVllkMDlZTUhoQ2MwTXJMelJhU1UxdVRXaDRUallyUWtRNWFIY3hhM0YyUkd4VWRrdG9ZWE41YlZoQ1RrcHZXVkJQZURaUlN6ZEVOMGhYWjJwMVZYVXdOelpNZG1JclIzWjBORk55Y2xFdlNVUkVielpIVmpkQmREZEpWRTlqT0d3MWJsUlJLMmRNUlRCMVNVZGxPVWd5WTFrMlVqaDFObXBJTDFOdUwybHJhM0JFYzNOU2VqaHNNM3B1Um5WVlNFSnVibkYyYUhoaGREZFdiVE41TTI1RGFIZzJjVFpNVXpRclJrVXlablZCT1RkdE5XVkNOamxvTDBWU2VpdENlaTlPY1VKRU1saEJOeXRuUXk5UFpreGxTbkJQU3pOQk4xTmpXRUZCV25kaFkweFlNMFpzYmxOcFkwbDNaM1o1ZHpsMWVWRXlaRGRDY1RKM1ZYSnNlRFJ3YWtVMlpXWlllR0kwTjFwakx6TlVabk5OYkVoSGVqQkRlR3RrUjFKRldFaFNla0lyUVZob2NrTm1SbXh5ZW1KT2VtRnlNRlpHVkhCdGNtTnJUSE5uVDNvMGRIazRjVGRQYlhST2MzVnRMM0pHVkVGNFNVUkplVkZDV0hSQlRtOUVNMWg1Ukc1VFVXaG1iVFpDV2tVdlZHOVdVR2t4TjJwTFRGSnRTbTB3WWxGSmEzbElLMU0wVm5BMFQwaGxSVnBQVGxrMk1ERlpNREJxWldkRVVuQXllRzFNTjI1dGVGTldiM3A1ZUVvMlNuUmliVUpDWTNCak1reHNZVlJ1U2xocmEyZzRaRmhzWjFsSWNETlFVMjk2Um5ocGJqQnhNQ3REVVcxS1JHY3pVbFpUWVhVeWRWQnBOMGhRV1UxcVFYbExWRTVRUlU1UFZrWnZVaTlUTkN0TVUzTXlTbWx6VHpCTVptaExlVEpQT1doV2FHMTJUVEptVVV4dVdYWTFMMDEzUlZkTE5XdHFSRVZ4YTJkQk4xTnlTVWN6YkZGdGFHNXROaXR0VkRWUFJsZEdZbmcyYW1Wb1UzUnJSMU4wYmpZd1YzVklhRTlYWW1zdmNFWnFOVzFNTDA1SlVVcFpMelpIYVRRNVZWZERiek56VmxRck9WZzJNRGxPVlRNNWVEUTFZMGhxWms5NVIwSm5VMGhDUVZacFZYWXJVRzFpVG5sckwyWnpiREJ3ZUU1dGNsRjRUR3BZVjNONGN6UlNlazlTTTBKRlFqWTJZa2RKWmxsS2EyODJSa1IwV2toQlJ6ZzBlbXBXZW5aS1VFZGxZelJwVGxkTmVtOVRTbm8wV25FNFJGUlhNVXcxWmpZeE56QXpkMmxtWTJKWlRFZFdOVTFaZW13MmVGbFZLMDFIYURBelNqQXdVamdyUzBzd2RGYzFOVlZrVjFaeWVucFJhRWRUWlhkU1VHdExZMFZ3VFZkSVNqVkJWaXRYUlhGeWJVbHhNME5wTDI5VE4wWndNSFJoTlV0NE1YazNielZMWjBWMGN6TmhWeXQwVldSbE9UUXhkekZyWVRaMGVsbE9hMVJNTkdJeWFGTlNSMUp0UVRkdVRWQmFTeXRhU0hWcGJtUTJhVEo2V1RSNVRUVlZiVXhZY2l0b0t6UXpRbkZuYW1KU1NUbHFXa3Q1VlVFNE5XcHJjVTVxYmxkWVpuTjFVMlI2U0c1emVUZFZkMHBqVDJGU1JsUjZURU4yTmpsR1ZIcFlRWEpqV2xvMFdYSkRVamNyWlRKNWR5dFVNR00xYmpCMVptMHJkVkl5VkRCVU9XTnFOSEk0UWxZeFZrb3piM2RpY0hGaWVYRlVja3RhT0hOdVFuZGxabTVIUjNWSk5HRldhMUZxSzBOWVkyMU5kVzFhTmpSTmRtTTFRVVp3ZEVWRk9IVlJiV015TTFGc1lsVnNTalpGYm1GM2EwVklWMU4xUVRVemIwRkpZV05SSzFWak5VUlliVVZUYUdoSFVYbHdUVFl6Ym5SU2QxWkpUVlpuUW5wWWNXRlZNREJrWVZaVlkzVlhZM0ZEUWtKV2VIZG1XRFo0VERSR1dTOWxRUzlsY0Vwa1EwMW1WV1JTVW10UVdVRnFSME01VUhCQ1ozaHdSbmxDUWtkSVMxTkhlazVtWjBWUlRpOW5WRGMyVXpSTllWSkZaMjFIVERSclJ6ZEhhMEp6UTFKSlpraFlUMFIzTDBVeVFYRkVTR3RDZG1WME56Um1kelJIT1dRME9HSmpSa05CUW0xS05FSmljVFZpUVhOUlVHWXJjM0U1TmpFM1FrbEtNWE4zU0haa1dGWmpiRFEyTjNCYVptTjFjR3RqZVRoSVUxTnNObTVpVkhWNlpITlhTRWhrUlhwaWNqVXZOazAwWTFVeGFuZ3ZVRzFzTTJ4UGVuTXdkVGxvUlRkNWJYUlFRVFpoTW1oV2RreEllSE5rUjNad1IyTlNSbkZaZG1ka1EwbzNiREZKTjJ0a1QwRndSbmN2WlZJME1sbHpVVWMyUW0xR1V5dHJNWG81ZW5oMlNqZGtURUpJVG5oSFdHeEhaeXN3TDJKNVNrZFNjMjVUVXpneVpsUlpVbkpLTHpaSFZETk9Ta2t6ZERsME0xVm1aWFZFZWtNd2EyY3JZVFYyUnpORlpTczFVakpRY0RseVNWRTJkRk42U0ROcmEzb3lOVTV1VEhKUWJreHBWVmxsWVhsUVJXVkVaMmx5SzBSYWVYVkdOMjlKWTJaa05VUlJSRkk1YW1wSWRrcElVWFl2TkZRclozbGtRV1kyYjAxc1VqUjRXSEJMZEZOQlZqRmhSRlkyWWpscU0zWkpZUzg0Wm1VNGFVcEljbGc0TXk5WFVVNTVha3RZZDBoVmRTOHJMMlU0YVd4dFMwNUNWQzlYVVc0MFJtVndhMjVOSzB0a05ubExjM2N6VVdGMWFETjNVM0ZqV1ZGUVpEQXdjbTQyTm5CV2R6VXhRMGRzTlVFck1FUnJVR0ZUVURaQmFHb3hablF5VmpFMVUxUk5hbXgwZUdSVVNIVkxSVGwxZW1ONFdsYzNUSE0yS3pOYVRsZHlVMUpDTlZoRlVscHBlVUUzUzBNMk4wOTZjWGRQZW5Cak9ETlVaaXRrUlM4MU0xbEVPSE5MUldVNFoyaE9VVkpFY3pWNmRrbDFWemQ1YjFSemRYY3ZPV3hJTjJ4Q05rTk9ka3B1TTJzdlpXTkxNa1JIZFdWWmRXMWtZbmhZY3l0cVYwWnpTbmN3TUN0Rk5GTnJNVFJtT1RWSWVtNTRabXhCUkdJMGIzVTRUalJRVUZOVVpVUXlZa0ZrVGtjM2VGQnpTbXREUVUxUFkyMU9iVk01UVc5dFFXczNRbVZrU2prMVVHZEpla2RaZURaTFZHaEVka293UWpCbFRYZEdSSE12WmtKSloyRlJNalYzTXk5eVpXcERZMFJZZFZCSE0wSlJaMEZhYVdWQlZ6WjFWM2RNUlVRekwzSkxkbVYwWlhkS1JTdElMMkZuUTNjMWFDODVkazFrVGxSRFowRkJRVUZCUWtGQlFVRkJkMFJHZUhSdlZWTXhPRkJRVUZWQlEzZG5RVUZCUVVGQlRtNU5kM1pqUVVGQlFVRTBXSFppY1daMlJDOW9VVWxGUVdRMVFVRkZRVUpuUVVOQlFVRkJRVUZCUVdWT2NHcFpSMUpuTkU5cU9YVjNTa2xNZG5BNUswWTRiR2gzUWxGQ1FWVjNVMmRCUVc1dVRVZFVVVUkwTW0xNVZFRTVSR3RSUWxORlpUVk9Tbk50Wm1KMGJUTmlUMlIxTW1KV2RXeGpPRFl5WW1SMU1tSmlUbVpMYm5RelVEZGljWEV6TkZwVUwyVnpUMjl0T1VGTFFrWTVlV2xNTjNad2FFUkVabE5KV1U5aGFXeHdWMFJvVVhsQlZuUk1aM1ZJWVVwMGFXdG5TM0ZJVVhSTGJteFZXV2hpVTI5TFZVeDJja1pTUjFKaVYxWktZakZNVWtsNGJIQlNhM0ZVV0VvMFYyeG1TRVZZVTA5QlptaGhiV3hSUlhScVQwZEJNRkZvWW1wRWFtOWhZbnBCUm5SWFdFNVBVRE5qWmxFd1JUSkhUSFJyYWpRelkzRnZlbEJpYURKSFMwNTRVbHA2VFVkdVFUaGhZVzV3Wkc1WVEyY3pWVkJMVVhoM01rOVdhMUV5ZDJSblFrZEVWVVE1U1haUFVXaGxkRTAxU201RVZUZE9lQzh3ZURZeVpEZ3ZkRWxsZHpGVldGVk5RMHhFVlZGc1VXb3hjRkJpVlUwNVVGRTNVMk5ETDFSTFFYQklOalI1Y0ZkMVptWXZaRlZ1ZEROaGN6WXpRMnRZV0RGM2VIcDFhMjVxTkZCcWRqWk9NbWgxV2pKRVpHUnFVV1pOY1RScGRVaEpVMVpYYml0TldFaHZjVXBHUzNSbVNXVndkSFYxYkRWNk0zSnBZMUZ0YmxsdWNHcHliVkJPZFhFMlREVmhOVUpOTXpCNVRXbHJXRzVvZWpaTU1qQkxabm9yY0hKa1NGcGtaRWhRZWt0U1praEpXQ3QxUVZsQ1pFSmFMMUJaZEN0SU1tUTNabGd3WlUxbmFqZzRNRVo1UjBRclNYWjBVbWc1TjI1RmREbEVkelZ2VGxOQ1lWTjNMemgzWjNkV1pVWjJVRWxFTW1GV1MxcENSR05JYVhWM1lVdFRlR1k1U1Vad1MxcHpVV0ZQSzBJMFlWWm5NWEZCYzJ0b1MwMTRaMGhtTUdaVVFqRk9OMjl1TDJkU2VFTlJSaXM0TDNWdUwwa3hiRWxhY1V4NWJIVnBXbGw0TVVaVUszTTROUzlvYURZeVZtZ3JPVGRCTVhGaGVuWm5kR0pCWW1GbUswaFpaMnByUW1aREszTlVSVlZrVVRoV2FISmhSMHBsTlhSMGRXcDNXWEZEZUhCdk56SkJUSFp5UXk5NFNVOXBXbWxaYXpoNlNVdFVObkZTWmtOVFJFRjFRM0pvY2pndlVERkNUakZuWkN0WVFsVTBTbWN6U2xKMFMxcFhXa1JIUjBVeVNXWjROR2c0Wnpkc1ZGRk1aamwzVFM5SE1VSjJRVGM1VjJ0WFdDOTZZVGhZWlVKMkx6ZGFPSFJqUVdGVFZHd3hSMlUxVlUxalZsSjJSa2htTDNZMGRtTTROMXBSV2psc1pVVnlTRlZaVkZKb0wxZGplSGhLYjBoTGFFMUJhVm8zTWpSblFVRkJTR3BoVW1ORlJFVkNkM2hCUVVSQmVEbHJNbXRyT1hReWVsbElkRmN6WW5SdE0ySjBiVE5pZEhVeVR6SjBNMGxtTWtWcllUWlNOVnBHWlZWcU4yRkpaRzh2VDJwUE5reFFiM0lyYVhWdGVGSkRlRWh5UlZOelZqSjRZVGRIYUdOcFQyVk5kRFJzZG1wYUwwRnJiVWQwYzFGdVdXUjFkMDA1WjBRM2FYVm1SekVyUWxoRFdUQnZVV0pSYlVKb1RYcHBVRkJGUXl0SmNtRmFUelY1UmtwclNqTkpObVZaU0RoUlpWZHRiV3hEY25GWU0xVkpOWEZwZVRsUGREWlRTREJpU0c5a2Rsa3JLMUZFSzJ4UWVrMVRWVFUwV25odGVHcFFja0Z3TWtseWMxUjJXWEJTTTBwYWRWcHdZMDB5TkZKa05YbzNlbVZtYm5VdlJub3JSSE5EU21GUldIbG5hMVJvVVRORFNTdEhibTFGTUhOTVVGbFJSaTh4T1ZGUWQzVmFXbFEyVTI5MWJHSllTVzlHTlU5WWVWVTRWVkZSYlZWYVRYQm5XbUZMZVZZM2JYUnpiWEI0ZEZrME5sZHNNbXBpYkZaMmNXUTRNWEJLV0ZOU2JYQllPVTU0TmxRek1tOVFiRWRtY1RZdlZYUXJieTlFUjFJd1RuWnZZbTgwTTNCNGJVcHFkbUpJWWs5SE5XTk9hMnhVVGxWTmVuUmFibVJNUjNsWFRqbDFXU3M0TTFRMWJsaDZjMlp1WlM5SE1teDBTSEJhZHpaNFNqRnNlSEpvWWxoYU1tMHJiblJ5ZG1Kbkt6TjRPV2w0TjNGaU0xSXpiVTltYzBzNE5IRmFNM05VYlVkdWRrWlFUbUZsVXpCa1YxazFURFYzZGt4MVdrdHlkWE50WkRWMU5VaGtNaXMzYTJvemFrcG1TMHNyVGxZNVZuQTNSVGN5WkROcVNIWnpkbVpMU2pONlVub3JOMWc1Y0hZMFFTOTNTaTl1ZUM5b015OVBaaXRLTDBOWmIwaFlXVXRDZDJSTVoyRjJRV2w2VUZaMmRqTkNXWFZFY21OSVRqUkZRVTVSUmt4VlJsaE5Ra0pOUWtGMlFrOXVRVWRZUVZnemQwaFFkMEZtZVVWSGRsSm9UWEJuWlRWdlFVWlpVMnhaUjJSaFFVUlhSWEpQUWk5MWFIRTRVMjFTVEZaRkswMVRNWGhQZGxWRGF6QkljekZCUXpsRmNYUkNiblJSVldaU1QxaFJaRkJWUVhZd1kyTXZSVFo1Y0dWM1FVRkJTR3BoV1RKQ2ExbEhRMVZaUVdobldVZFdkMXB0UVVJNGNFRkNUWGROYWtGQ1JVMUJUSGcwTW00eVVVNVdTMFZWVVhsQlVEbDVNWGNyYkhkd05FbEhaRGxrTWpOWVptWjJORmxrWjBwdlJEQlBUV05uV2tscVZWcFFTbHBNV2tJMWEyMHJhVk5rUVUwck9WVlZSbHBhUWpkNVEyTlNiblIyUW5GWVZUaDFTR05SVjFSbVFuQllNSE15V0dOU1YyUmFaVE5ITVdOTGFuaHpNMDFzY1RKb1dFRmhUbHBVWmtkYVpGTllNMUp3V0ZrdmJVWlBPRmh1ZW5Kb1lpdE9OalJTTDNkbVYyTmlhR05WTWs5UFJrWnBSazlvYm0xcmJtdERXakpKU21sNGVVZ3dPV3RTZFdkWmRqaHBPREJCUlRWSVFXNURRa1JXY1d0aFRFbEhTVFpqTW1kbFJrTXpTVGc0YzNkNFNWTmtTMWhFTWt0Q1FtZHVhVU5QZEZkcFkyNVRiMjkzUldGRlRVSm1TMmxrTVZsNlluaFhTR1oxYkdsRFZXVkxSVVJQVFUxNWJHNW9ibTVYTWxwbGVreHRWQ3RLWlRoNGVsQXZXR1ZqZWtkSFYwZGtTVWsxVkdveFRIVm1MMHhhY0VSYWJtNXhSSFV3T1U1S2VHcFdXRk54VVdwU01WUnpLelo1ZUhkNmJHaGlUMlpEWTFWSlZXaFFabFZMTkRKbVJrcHpWVlpOV1VwamIxSlVZbVZaWWsxMWVGbGpTR3BoV2sxRlJHZG5TVUpCUVVSQk1sUnlZakU1YkRKYU9YWkxNWE5RTm1GNk1tZEhVMGRuVlZKbGJGWlNRV2hEUVZab1dWY3pZV1JsYWxWd1ZuVlFXRzR6TmtSU1p6QmFUbWxKVlZkUVIxUmFaMVZOVjFoaGFrWnNlalZwTVZsMFIxUmFhV3hXY2pGdE0xbDBSMWhpYW13eE56bG9NRFJrUTFSeE1rbHNWRm80TldSMVNGUnNNbTh4WW1Rck5EbGxVRlJyTWxsMFdHSTVOVGtyVUZSc01qUTVabVl2TjBaNFExVnJjR0ZTYkZwUFdHdEdVbE5XYkVaV1ZURmFiMFYzWTA1NVIwWkJRVUZOUWpsTk4xZzNhV0pXZEhReFRUZFFjMWN5WW1SMk1rOVlXbmw2Y1RWTU5GbG5NRmd6ZWxaSlRUWlRZaTgzTlV4VlIwODVTRVJWY2pORVRWbzVTR2hsUkdwb1lucHFjR2g2WVV3MFdsSkZkV1ppZEU5YVEzRlJTVGgxYUZNMk4wbHpTbFptWVRkd01XMTBTWFozUjBSc2JEQXpXblJwU1VscVpITnBWRkp3TTBsVFlsWnhNemMyWWxwaU4zSnFibkoyZFZOUVprUkpVVFE0T1RoamVGUjZOekozTkhGWVdGaHVibXB1WW1WeGNHWnFaM1paT0N0WFlrOW9UbkIzVDFwNFVYSk5Wek5YZGtGVmVsTndWM0JXUzFaa2RWRnZaSFp6YzB4YU9FMDFhbHB5VldndlVDc3lRWGRZZDNOV1JHZDFSRUpCUjBsblFVRkVXVnBaVnpOaVpIWlhNMDQ0Y0hWck5GUkxWMnRhVjFSc05VSlZWV3hhVWxaV1RtWllkMFExUjBkYWIya3hkRWhXTURsbVVVNUVTVEpOVkZWNlRucERNSE55WVhoMFlrOHpjMGhTZVdSdVJqRmpNMlIzT1ZCTU1qaG1XSG81U2toS2JqaFJkakU0VjBaNVJHZExkMDlETm5GRVkwcG5Sa0ZpYlhSSk4zUldWV0pSWkd4aWRXTTJNMk01WnpkR1V6WjRhRzFvT1dsWmMyVmxablpyZG1kUWF5czBka1kwYzIxRFRsVndPVXRsVFd4b01USTBZbmRIYlN0aFVYQm9TMVIzU2pZclVqZENTamh6T0ZWb1dGazBVRmcyWVZsSWMwZE9lVVJSTkhkV1MycHhTMFIzU2tzclIxcHhVWEJvVEZkNVVUZGlWblJwVnpFM1VXRnhhU3RWY0cxblNqZ3pVRXh2SzB4b2VHYzNZVlpMUTFRclJUbGtUakJ0TlRkcVkzcE9NRXhzZUZKV2RtNWtaR1o0YkRObk0wSnpNMjE2YWtkVFZVdDBWbEpsU0RSa2QyWmtObWRSWmtZdmNsTkVPVGxJUTJWblEzSlhabmxFWWpFM09EZEVWR1kxVWsxRlNqSmFNbmxYTTIxc00wOWlNM0pXYkRGbFdTdGxkelZoU1RSVldpOVhUMXBWY2tGaFJXWnpha1IwVVdWS1lVNTFjRTV1Y0dabGVrWTVPVk5MVVhBd1dYZE5Xa2t6YlhwRU5tNUJla016WVdrNFIxcFRNM041UjNwWGFUUnRXVkV6Y3pOSkwwdHRPVWNyZURnMGVVa3dUVlJSU0hoYVUzTXJRVUU5UFNjcElHWnZjbTFoZENnbmQyOW1aakluS1NrN0NuMEtDa0JtYjI1MExXWmhZMlVnZXdvZ0lHWnZiblF0Wm1GdGFXeDVPaUFuVDNCbGJpQlRZVzV6SnpzS0lDQm1iMjUwTFhOMGVXeGxPaUJ1YjNKdFlXdzdDaUFnWm05dWRDMWthWE53YkdGNU9pQnpkMkZ3T3dvZ0lHWnZiblF0ZDJWcFoyaDBPaUE0TURBN0NpQWdjM0pqT2lCMWNtd29KMlJoZEdFNlptOXVkQzkzYjJabU1qdGlZWE5sTmpRc1pEQTVSMUpuUVVKQlFVRkJRVVZOTUVGQk9FRkJRVUZCV2xkblFVRlJRVUpCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUpJVWtWV1IwRkJRVUpYUVVGQlFVZFJRVUZCUWpoRGVWVk1hbXRrVVZReFRVRkJRVWM0UVVGQlJWbG5RVUZDT1hKeWVtSlJkVkl4VGxaUlowRkJRbWxCUVVGQlNGSkJRVUZFWVVRemVsSjROVkJWZVRoNVFVRkJTRGxCUVVGQlJrMUJRVUZDWjJSVFptcEpSazVWVVZaUlFVRkJhRWxCUVVGQlVrRkJRVUZHY0dVcmEwbEdXVEl4YUdOQlFVRkRTWGRCUVVGRVNrRkJRVUpOUTFOdlNFWkdibGxZVG5kQlFVRktWMEZCUVVGQ1FVRkJRVUZSUVVKVlFVa3laSE5sVjFsQlFVRnNiMEZCUVhjd2QwRkJVMGg0V25CT00wbGhSMVpvV2tGQlFVOXFkMEZCUVVFeVFVRkJRVTVvTmtrMlpYUnZZVWRXYUVGQlFUWmtRVUZCUVVOQlFVRkJRV3RFU3poSFVsZG9kR1JJWjBGQlJIRlZRVUZCUTJaQlFVRkNSMFJCUVdwQmVHSkhPV3BaVVVGQlVGSkJRVUZCU1ZSQlFVRkRUV2wzVmtkd01YUlpXR2gzUVVGQkwwcEJRVUZCUW5kQlFVRkJaMEZUVlVGc1Z6Vm9ZbGRWUVVGRU9VRkJRVUZDVDJkQlFVRnZVa1JWTWxGMVkwYzVlbVJCUVVGUlNIZEJRVUZMTTBGQlFVVnVOMnhKVTNSME5ESnRTbWRhUjBKcE5FZFBRV2REWjJkdE5HUkNhR05GVnpCSlFWa3lkMEZGUWxaRWQxQnZiRXRhVTFweU1rMUJTVXR5TVVkS1UxbFNkbFl3VlVOdlFtWjFiSHBsU21VcmMwcGFWM1ZLWkVKSmIwdFlWRkJaVFdWdFpsUk5iMnhrU2pKa2FFcFBSR2QwUmpsRlV5OUtRemRuYVVSU1dtRjRZek5FZVRobVJEZ3dObEpoTUdWT2NFNXJkMDkzU2tWelVWSlhPV3hhWXpOUGRuRXJNV0prZFRKUFlrY3laRFV2ZUdKa2RUSmlaSFV5WWxoMGRIcDJkVE56YW1OdFpteFVZekEzWTNwek4wczNjekppWjBGTVVrRk1aVkpDTUZFdlJFMUJORnBUVUVoVGFXdEthMmxuZFV4RGVrVlFXV1JUV1ZOVVRYZFpMMjVTUmxWWFdYTmljR2xhVTBadGNrWnROWEpCU1hwcGNGbGxWbTlKV25GQmNrRmpWeTlaWmpBeWFFZHhLMFJuVURGMVEwRlZTVnBXWTNWcU1qVXljRGhSUzA5TVpVZE9aVXRQTkhKTlpESnVRVFZrUlVsTVkyZExXSGMzZWxseE4wbDVObU5ETVhsTWFWUm5iSE5GTkZoVmRFNXFTVmhYUkRKRU1tWk9kMFJhS3poQlRYVjNRbWxWTkVSTlprRTRaalIyWWsxR1YySk5UakkzVDBGa1dFRmxjVWM1VjBoSGExTk9UVXhzT1RsaVVFNUpWR2RQY0RkRVZFSllWSHB6UVZOeVZVVlRXRFkzWVhaT1VGVlJNMDQyWmxVd00zQklla050VlRJemFFdHlVR2d6WTJoVlRGaG9hMVZKUVRWUFNVcGtWbk5FVERKMkt6bHFkM1pZZUVRd2VVdGtWV0o2YURCTWQwOXNNVEJsZEhSblRWZGFaRlZrWWk5Q1dqWXdkVXM1V1RBd05FNWlURXN6T0dGT1RXVTBkVXBTYlRONWNEaENlSFlyYTBvMlVFaG5XV2Q2WVc5VGNsTk5SbVpZVFVGWGJURTBWblZzV1ZWS01raHVNRmxqWVZwSVNtOUZhV05DYTBGV1lVaE1LMVkxVEdOaE1IbFRMMnRvVWxWYVdXWkNRVVZhYUVsU2NXZHBTM05ZYW5WUWNYcG1iV1I2TkRaWU9FeHJhbVZDTlZCWlZIbGxkMlYxWTNkRFduTTFaM2xQWTBRdk5VNHlVMUp5VUdSbWRWUXZPR1J5WkZkRGRuaEhkRGx1ZEdSR2JGSjVXazV4Vld0allWTlJkSEJLTVRKclZqSm5Vakp6YTBGSFUxcHFUa013V21KVFlWUTFRMjVLZVVKNmRWaDVSVVpWYVZwSWVVaEdlV2xuTmxKeksxRkRkVlY1ZFd0YWRtdEVjbXhRU2pobmFuSklkRUpVTlV4WVpFc3haVFJySzFGa00xTlhaa3RTY2pOVVpubG9XSGR1ZGpob1puTnNOako1YlRaUWMwMXBiaTlKUjJoVE9HbzBSM0kyWlc0MlpIWXJVMkkyYXpJdmJFOHZhSFYyYnpobU5GRmtValF2ZDFWUU5FODFja1l2YVZZdmEybFlLMGRRT0dsbU5EQXdTV3BtTkRZdmVVWXZhSEl2VHpNclRIWTRRUzgyVG01Q05tcHVjVVpsYjNRM2VtNHZhWFl2UVM4clRqYzRlSEF6SzI4M1dEWjJhWEZpTVZsSE1sZFZlVEp4UVdSV1IwOHlhMUJJV2twVVVESnhWVlIwUW5CUGEzTllOa1JLWkc5NVpteFdSVWxrVW1neFJHNWhTRzQyVTFZMmJHUTJaMkV6VHpacVltOXVXa2hLTm1sSWNFTnVPVTVZT1VNek9WRklMMHMyVkZCeFJ5dHZVREZ0TDFkaVJUUTNUbEp6TUU1QmNEVnZWbkZ2ZDNsMlVFcE5OSEk1UVc5RWQzSkJkMHByZVdsdWVFMVhNbVVyTUV0bWJHNWxRVXhQY0hkSU5rZzBNVlJaYTFSaFVpczVOMWQ2WWxCbVJGWTJUVzV4TTJkd05EQjJlVm8yWkUxNlIyNXVMMkl6Y0N0MEwyNWxjaTg1Y2poTVNYUm1XVFZJZFVOaVR6Tk5aa3RGZUZRNFNIbEhiakJ3VUd4R09VdFVkRlJhZEM4d0wyaERha2RxTnpaTVYycFdXRFYwT0dRdlRqTXlXQ3RrVDA5YVJtcHNVbWs0YldKVmNsaG5NMGtyVW1OdVUwMTFUazEwVHpreWVXazNUWGhQT0RKNVZIZElNRlVyZDJaUU9GQTRTbEJPVkV4SWRHSTRibEYwU25CUFNtNVZMMUJQVFcxaE1rVmpkV3BrTlM5aVZEQjZWbWxPVjBrNVluUTFWRU5PZG5KSVJrZzNRalJ4WmtaM0t6Rk1jalF5SzNjM1MydFhVRGt4T0hWbWJUQXdZemREYmxJelpXbzFVV1o1VjNaTmJuazRMM2c1VDNOVmJVRTRNR3hvYzNKQ1duQmlPVGRtU25Zck1qbFdlSEpRYlROMlVFa3lOMU5MZEdaWlRtMU9la3BNU2pKaVJXSmhZalUzY2tOVFVFNUNZVlJZVXpObFRucHNWRGd5YmxkclNtSldOVVozV1Vsak1tWjVhM0pUUzNCR2NVZHdiV05XUzNFMWMySlBlSEJtU0VSVFMzWTRNbWxhYW5CNU9YcHJjMnhyTjFSVE5Xa3lVVGsxTURsUU1uUTJURlV5TUdwcmVtMTZTakp1SzJaT1lWRnFTa0pYWldKaVJqYzNUMlU1ZVZReGNrTkZkR1V3YzNsbU5IUmpiWEpNZW5SbFpWY3llRTFpVW5VNFZ6SkNZMlJ1Wm5oaFdXOHpMMjVDUlZOSlRtVjVUVEp1V2t0bVUzTlRVM0ZxVWpCSE1qRnVLMnAwYlZKaFFVRkNOREp0TWxKQk5ubGpWVkpvUlhvM1pYVmlaSFV5TjJRellWRm1Wbk5MTm1oMFRqWjNVblkzUXpKSGVGSkNSVlJYYjJKWFVHRXpUSEkxWXpnM1RWaHBaVXhCVlZWS01IaFNMeTgwU0doelUzbGlhMW9yVW5oTVRGbHFUMmhGVm5OV1JsUTRPV2RZWkVzd2NrSlVlbFZhY0V3MVQyMWllRk5LVjNOWlpFNWlTa1oyVlV0b2RrZzRZelJTTDBWYVRUVk1WR1ZRY2s1V2RHWXhiamRoY1ZWVGJYQjVZbmxQZVZwbk1uYzFiMjU0WTJSUE5ESk9Velp2ZDJzNE5sSnJTakprV1V0Rk1XaEtZazVyU3pJNVZIZGtjVXd2YTJkSlltaEtRV0ZXV0hodlpWRTVUR2RZYVdwTmRGUk1heXMwVUU5aWVXbE5kRVJpZERoR1FXOUVTRk4wZEVFeGVYQmlWUzlXWjI0MVJXcENNMDh6V0RVcmVIUlRNV3g1VUdObE5sUlBOSFJyTWs5cVFXcE1keTkxVFd3d1pWQnBUV2xCUVdOb1FtdEZkVUkzUVZVMVFVaEpTbXRGYzBOSVowUkJRM281WW1sRFNWVjRZWGQ2VHl0WGRUTktXamx1U2xaaU9HdzNkUzkxVjJoWVNtVnVZM05OZG5CVVJtVkRiek40V0U1M1ZtMXlTRzF2YW05bFNHMTFWVXd4T0VseGRuTktTMGhWTm5oa2VWazVlamxxTDBRM2JUTnNNa2xIVlhGRlZqRjNWRUl3UVVkeVZrWmxSVmgyWTFOSVJ6TnhkMEZRUWpkcFFVRlNOVE4xZFRndlRqbHZMMWsyUjJaWmVVVXpZV2hvYkhoU2QzaFVlR2RxYTBkdFJucENRM2hSVjNkVVNITktSVnBMVFdNeFVVVXhPREZ3ZURFd2NGbFNZMFJWVjNwRlExQjVUMXBUUlM4MlRYaFVSSFZKTjAxWGVucDVUeTlQTkM4cmQzVk1NMnBLU3pFM2VtaHdUalI1VDJORlRXY3ZiRWxVZVZOM2VubFhVaTlCUlhJd1lrTlFSVmhLUTBWRWNqTkRka0l2TDFBelEwRkhLM0kwVVVGblEwMUJRVUZDTkRKdFRtZFpWMnhzVm0xQ1oxcFhRbWRPVjFrMWVUaEVRVTFCZEVOTk5URnNUVWRMWVhoSlFVVkhhR2RaTUc5RlZVNTRRbkpuVUdwMUwzWTNkV3BCWTFsSFVEY3ZOV1ZxT1hVMFMwSm5aVTFtVlhwalJFRXJUamhyUW5sTVFpdHpNa2xMV0VGM1FVbEJjRmxGVUd0blFqUXlaMWhDYzFGRlFsRlJRVVYzVG1zM2EwVkpRMVZKUTJsQlJVTkhMeTlhTDFKelVrbDRWWHBHV0cxcmRuWXdaRU5sTXk4NFVYQTJMelI1WTNKNFkwUkZVbXhEZVdORlIwVkVUM05QVmxaSGVVSnhSVVJqZG1OSGJraHFZV3BaZHpGUmIxVjRSRWxFVkVadVpETkRaVFFyZDFsTFpVRkZOMEpwVFhwaloyaEZabU5ZWkROYWJIbEVjeXRCTWpsUk9VWkdLM3BHT1ZGTlFXRldkMW81ZWs1U2RrZFZOMFZYV25sRlVsTkJMMlIyVjBoWGNVRlNXbGx2YXpKT2VWRlhOMHhZVTFkVmJsaEtWMDFUYWxKSFZqTlNSREJOZDBGeFRYaEliazEzUkRCMWQwZDBkV2x2Y1U0NWIzWXdkRnB6TUUwNFRWcEJZVVJUVFRCcE9FZExTMWRqZG1ocEswZEpVbWhpTkhoemVsQXlRa2xtYVZKcU0yMUhjRGRxVTFOeVdrRllLM055Wm1FdmRrRlFVV0ZJWkVGWFltUkpVVGxXVFdaa1ZrMUlkRlpCT1RGV1NUVndVamhOTnpZNFkxTklSVXRHZVVSblRqQnJSMWNyVlZwTWJEUkJWRFU1VVN0blFVRkJRVUZDUVVGTlFVTkJRVXRCUVRCQlFpOHZMMEZCT1RReWNERTRRekJDVkZJNVluZHVZbXN6VG5sRFNXaHBVV2RCYjFsUmEyaEJSR2hDUTFNNFJXSmxOM3BqYVV4NFJWRkZWa1pGVWxWU1JYUkphbFZYYUM5VksyMTRjblJXVmt4eVdGZDBOakZ5VlZaeE1sQlhjbGQxYml0MU5uSk5kbTVYY21ReGNtSlhNWEp1Vm1SUU5uUnJLMGRrZFV4cFJ6STVTRGhhYTNSNVkwOHZaazF0VkU1dWVuQjNlalY0ZDNCVFQxVlFNMjlXVVRCRmRsSXhRbWxMUVc1S1lVUnJTazVvYUVFemNWbFNWaXRMY2tGR1pGSnlRVUZrVWxsWWRsSTFRMVpNU21obE1WRTBXU3M1VDNob1psWkdVaTlaZWxOVmRuZ3dTemt4UkVnclYyVkdkVXR1WVZSdU0wRnFZekUyU1VkSGFtbFhabWRzTjB4UmVtbFhka2hHY2twVlZVb3hUR2t4U25sWVJISlpWVWRMVnpSMFZuQkRNMVZYTlZkcFQxSnBUMWN3WjJJMVNFRlpSbGwzY21oUUsycGlOVXRTTkM5VU9YRmhaeTgyVWl0RVZuaHNSRFJCYzBaVWFXNDVLME5RZEVSelYzb3ZaR3RRV0ZSbldHOVNZWGRUY25WMlVtTjNiMEYxTVd0VVkyRXlUSFZZZDJ4UldrSXhZM3BxWVhsRk9IRk5RMHREVUhVellXaFRjVlZXZFdKMU4wZEpSMmROVGxwdVRWSnZUVlV2TmtsNFZrUnZRalJxUlV4d1UwdFVlVkpwUzJZNVRrZEdkM2gzWTNkTlVIVjZOSEp4Y25CU2MyWjZRM2R5YTFoMWJ6WXpMemRIWjA5TVRXNTJMM1pwTjFBckswWjRWWFZPVVZGbFZqUmhUV1IzZEhBeVZVMUlTMFZITkRGMVFYZHZTbm8xV0hWbVV6a3diMk14TmpGb1ZHSTNiMmRaS3k4NFNDc3dWbHAwWW1Vck5UWTNRVlpZU0VoWGNUaGpiMHBNYlVSV1UxWnljVTQ0TlVRMVZUQktTMDlZWjFFeVIybzBRa3hzVWt4c2FucHhaM0JCSzJKT01FRlNaMGwwTVRsWFZYbElTVmxUVVhCUlVuazRSbll6ZDBwMk4zSXpOU3RpVHk5c01EQmxNV055YkZjMksxQkVjVUZtTmpCSVZtRkROMVF5VGk5Q1ltTlBiR2htTHk5cWVDOHpPVVI0T0RNeE1WTXpUazVtVlU1T09UWnNielZ1Tm5OeVJDOXlPRGxtZG5jelJ6ZDRkVkIxUm1nMmRVSTVkR3hHZDBWak9XVk5RbGhHTUZWWlNVVk1jR281YzJ4YVMwRlNlWFJSZGtVMVMyYzBhR3h5TlV0dVlVSldjbkpOVGtWbGFFODRaRlYxVDJaV1F6Tk5NazV3T1ZodFRXRkJURlExWkVkWFFWTlpjV1ZpUnprMVl6aDFSMUJUTWtwaWFYcFhVbk5zYkZobVRIbFZiM0pMTURoRFRETldVazVxYWxseWQzRklSRUo0V1Vzek5XazBMMnh1VEVNeFNsY3lRMll4V1docE4xZ3JiMkkxVGtveFpVNUhXSG8wYTBKa2VtWjZORWRYSzFoRWNYbFRhRzlVU2xsdVRXNXBUMnh0Wmxab1FXcHZPVkJoV2tKbGFUQnJiRGhuYkhWamRrcEtRVnAwYTFkdFZWTXpNREZJZUN0R1pYZFRNWEZNUlZkS1VURXhaRGhZUVhjeVlUWjFOMjVKVm1oUGJXMTBjR3RuSzJSWGJIQnhXWGxrU0hodGJYZHJiWFozTDFOUlQwUlRWVGhxZWpCVk5UQkJiREZ5V0hkNk9GRlNURWRaYzFwWmRHMUJjMGwwZVVoQ1JVdG9NMDlVY1dGbmVVWlZRekV6WXpOWFJsY3dlSFJrWldnMEsxRkxWSEZYYTNGVFN6UnFhVTQxUkc0MlN5OU1WelJJWjFOQ2FEVjVObEZDU1VwbVYyOXhkVzlUVDBVemEwRlplbU5wZUhaTWIxRmxjRlpwWjFab1FUUjVPVGhSWTA5VVMyeERhbEpHT1dOUlVWQmtZbVZxYUdZMlNIcG5ZVUpqZWxWeVVVOTZUbEYyZUZJNUwzbHlkMUpJWkdaQlZ6UmxVVVJGUkZaQ1NtTTFaRkowU25BNE5WUjZiVkprVXpKNWRtVkNUakJKZWxkdlRXUnZSRmRuUjNwdVVYaDJkRzlMV21kR2JqQkphV1pEVldVelNWRlhNREZEYWpocVRITk1TR3R6VFU1SlRraE1jVGRvUTJJM2IyNXJWR3cwZDJrd04yMXRXSEl5VWxjdlQyeERVSFZzUkVNeFlrUlRibWxoT0VabFRXdFhkV2hGWVhkSFdXVm5RM1ZXWXpCbFFtTTRRbUpYYTJZM1QyUlVhV3h4VEhrMVdYTnhVMmQxVERKSVZubFBhemRoYWtJck0xTllORUpKTTFRd1FVODJRemRNVEdSUlJITmhVU3RyTWxCUFVXbExSRlJDTWl0UU5XSjVOR0pxVFVWcmVGa3hSbmRLV0d4bFFuaEpNRWxITjJSM1JtSTBjM2s1VTBaMFdESTFPR05xTTJwVVR5dFBNM1pyTTJwNlRFeEhiV3N5VW5wb05XaGFhRTVyWkV0WlpqbENPVTFQV2pKcUswRnVRamtyUWtodFNDODBRU3RsZEVJNWNIRnljVGxIYzJKNmEzbG1abWRpVkZWdmFVWXZaME5YUjFkbFMydHpkRVp2VTFsNmVYZHhSbUZwUTI1RU5rSkhiV2cwWmt0UE1qVkVTalpCUjNSeVluVkRTbFZHYVVKbFVGRkVaVWxFVGtoVlZYY3hjSFJEWW1WM2NrVlpUMGxKVEZWS01VUkVVbmRMTkZwbmEyTnhXaloxWXpOM1NYcEhkSEJFUXpoTFVqRktaak40YlRjM1kzTlFia2MwY1cxbWNrcHJUazVaUVVKemVHRjFjbFJpUjFKbFVtdHZZMnBhYVZoVlprNTVNQzltTXpWYVNscHJUVXRvYkhwdlFucHFSRGhKTDBORE5IQm9OVkJDWWtaRFRIbFBhWFJuTVdWSlpVUTBVVTVuYUhCRk1sbFFkeXRvVEU1ck56VTJURTlZTUV0UEwzSk1PVkZOWlRGcGQxZDFlbEZzV1hSTGVUSm1NWGhzVW0xb05pOXpUV2gwVkRsclVFbzNPRUpPVGs1aGREZFdlVWhQZGpKM1ZuVk1lamRrVFZaSlNsVjJVelF2UzFOU1drSlVWQ3RUV1VWU1dWZzBRa3h6UVdod2RXZDNibWN3UmtoMWMwZDZTMFpTYkVKMWJWSnpTRXBHVWxsNFp6bDNXV2wxVmtaUlZXSkxZa2huV0V4aVJXTm5OVmRuTkZZeFRGQTJVbkEwUTFReVIySTRURU1yYTJRMFFXdzRObVJoUW5SbWRtTnJNVkF3VFVSRVV5OTVZM2wyWjI4NGRtNTVUVlV5TjFSTlNGcHFUWGN3ZUZVMGVUZEZjSEJOWTA1MVUwTTBjemN3WXpoWWJHd3ZUbm9yYjNaVE5uTXhUR3cxYVhKMlptWlpTMkpxYTFsMWNsUjNTamxqZFRabWRDczJLek5oZWpKQ05HMUxPRWx1TlZWUldGUXpSV0Z1TUdkM05tTndja1l3ZDI4MVluTTNTRE5RVTJ3NVIxUjBlREJCTDFCRmJuVkpjRmRXWWpSaWFFOVdVRFJDYTBaQ2VVSkNTSEJhU1VwTlRtMTJXV281ZDA5aFRtUnhkRWhWY0cwdk5rMUtUakZJY0RoNFRpOTFiRzg1V0hSa09UbGFaRWhHZWtGYWQxRnRlRTlZY0dzdk1FVjVia1JaVURKNWJqSTVLMWRFTVV0cFF6UTFUMHBZTUV4QmVrOURiWG80ZVRkWk9UazViM2t6THpkd00yTnhXa0prVGpCeFYzQXhaSEYzWVdwNk9HSTROMUZDYWpVcmJFdEJUbHB5YkVwM1JsUjVlSEpIU210R1ozWlVRMFpNZFZCVVkxRllXbmxKTmxOYU4yaFpkMHR6ZEZCR2NrcEVZblpPYUdaaFIwWmhUV2xSV0dGeGVXbDRXbmR0Wkc1UWJrcENUMWRpTjJsNFRrYzFLMlYwU1hKd1VYWjFTSHAwTW5aNlJuQmpWbG93WW1SVGVWZDRUMHR6T0hOdFJ6VlFTR1YzV20xQ1R6TlljRGh4VFdOMU9IZFdXWEpuVlhaaVQzaGpWbVF3THpOVlpHVjFjVzF2TDA1eWFqSjVkVWhhZEhSV2NGUTVMMHhyVWxSMGVXNXVPRkp1V210VlJscG9iVWRxVUZkUVZIZEdMMmhUZFRsNlJVaHBWVmdyV1Zkd09VOVBXakZNUzJFMWJuVmpNVmRpYzNVd1J6VnBlbGx5YUhwalRWRk5aMFZ4UTFwWU9HeEJaRUp3ZERkalpGQnFXamR6UVZkcVlsbHZMMHd5VURCNlIzWXdLMk5XZEVneFl6QXpOM1l6VVZodWREQjVNbVpLZFZWc1dtOWphMHRCVTB0amVUQTRWek13TjBoS00wOXpUME5qUzBacWVHWnpUaXR4ZVVGbFdERjJOMHcyTjA1UWRtUmFOeXR5Y1UxMWRqRkxWM0F4Vm0xNFMycE1MMjVITldreWMybGxLelpLTWtWdk1tdHhXRFp3YzJWcE1sZFZWa1p6TW1GWGJFWkVVWEZxUlhoS2JUUjBNa2hSYldKWlptMUNaakExY1dFeU5GbFBibE5uZFVreVR6QlZTMDR2Ukc5eVJuSTNSVXBOY2poRFFubHZRVkpIU1VGSlEwcHVaa0Z0V0RWek1sRm5Za1J2U0ZRck9FVjZaRUl6WkVkalFUbHNORTVoY0hCRFNuUk9jR1ZTVUhOREwwTTJibTUzTkRRd1JUbHdTRmhFUjJsME1FMTRjVU5tWm05R1ZuSk5Va2x3WVVGalRteG5NakJ2T0VodVJVZ3ZRVVkyVWtkelZIVlNOMFZaUzNwV05HdzNOMFJUVW1wYVVVUnNjSE4xYTNreWExTlhRMU5rZDJWSlQxaDJiVUZ3Y1cxWE5VdFpiVlJLU201U2JXSXJkbGRVVFdaVlJuUjJVSGQxZFcxNGVWWTFTVEV5ZEZKVldIUnlWVlpHY21SQ2NHbHBiWEJxVWxGSE1uWXdia3RuTTBkalNGbDFTM2xNWlRkS1dFeEVRM0pVUTBVclFuSlVUSFJvT0ZGeE4xTlhkbGxHZEdwcVozRm9PR2xOVmxkUlZWSk5TalZUWTBaSGJUSlNXVlZ6YVRZMVZYZFBMMDUyVUV4TlYzRjNPR1ZRTjBFMlJWaHpXVlpYUlRCU2N6TldNWE42WmpCc1pYWk1NREZoY1hoblVqRlVSRFUxYjNadFpqYzVaV051YVZOR1dHeEtiSEZPWmtOaUwyUjJLekkxTjNwd1NraEllVGhCTUhKYU5rNU1aMkZRVlU1eWVua3lPVUl4U1hVdlVXbHhVR2d2ZDFSdmRrdFRlRzh4VTNWSmRIcHhMMVIzT0dWV2JqSjNkR3BaTkVsVFluQXhXazVZTVdSd1ZUZExibFZMT0hkNFYwWmhOSFJsVDAxbVUzbHZMMlZ5UkNzeldXVmtiMUZHTTBGclQwOW5VMjR6YWpSSGIwSjVjMUEwY1RNdlpIcFhiRzVXZFRNd00xSjVSWGhyY0M5cFpUUkphbWxQTlRsRFZtOXFhamR0WkdnME5tbERTV3g1ZUZkdk4wcFZjRVY0U0RKbFFXMUlRVTUxVnpOd2FsSTJiVlZ2ZUhwc2FYUkhlSGRDVlRsRlFuZ3ZiR2RwVEVoeGJ6TjJRbFZUYzNaSE1UUkpaRVZSSzNwQkswSm9Ra3c0WW0xVFpYaDBjMlI1U0RSVFdrMTVjWE5KVDJWQ01FRjBhM0ZTUlU4M2VHYzJRVkZFVW5kVFduQnNhbTF5U2xkbVZuTjJLMVU0VjA1T1UyNVdjekp5V0VoT2VraDRSa2xVV1U1cWVDdHpaa1J1WWxwa1UxbHdUbGhPV0dGa2JUQnNNVFZGVmtkNGJHNDFNSFZUVWtKdVlWTnNRVVpYU0RFdloycFViVzl2V1VwelNtc3hiRVZhYzNjeVJUVjVhRlJYZFZNMU1scHlhM0oyYmxaSU9XTllibFp3ZDFGT01IUllkbkZaWlVRMFdXWXdVRGd4Y0hvNWVrTnlTWFZsT1ZjdmRuRTRWWEZVUTJnelUzRnJOa0V6U3prMlowOVNVMjg1TmtWTWNYQkRRMkl2U1N0R2NUUjJWV1pEWVZKT1IyZGFWV3h1YlZOQ1ltWnpWSFJLZUVVM09UbEVZWFpFYzFCcmFqbEZUbGR0Y2tvdlZGWkllRFJNTTNjeWFVRTFPRWxQYW1Sb1V6UTROMUJ3YjNselJHeHhlRkZuTWtKcFNYTlViSGgxZWxwU2RUbDNia0YzWlRJd2VsVlpVbE01UzBJdk1rTllibFF5VnpOUlZ6TmhaWE5VT1VGSlVDdElTVkE0UnpsdlFVc3hNRnBXU1ZOa2NWUXhkV2RsVDIxMmJHbHhRVk5qTUZoUFYxZEJjMUV6WjJoRGJsaHNWMk5HU2pSNFEyNXFTRW8wUkRkaVRWSXpPUzgxZUc4Mll5dG5aMjFRVEhvMmFXUnNOMVJ1TjNGcWRETndiVnAwY214bVRVZEpLMlV3T0ZWRU9UbFlObEJUUVVoVlRpdERia05QYUM5MWFFeDBXSEpTZFZwYVdGQnhNR0ZLWW5ocWNGVXpVV0ZTZFU0M1UxaHZVa1V6U1dsS2NrRlBia0ZLY2tsUFJteDJNMWxCZGpSSFZISkJLMEZpVmxjck9XbEJiU3MwUVRaM1V6bDZPVWw0ZFZsTlZubEJaMDRyU1RSSmVUVkVaRkJ2ZDJKWlpYUk1iWHBDUkRaYVRUWk5VMWhJUWpaNFlpdFVNSGxxYmxsQlFtNWFUWGhOU1hCbmNsSnVMMWc1U0ZSNFpGSlFSRmR5VFVGWldGRm5NRkZqY2xKbllsRk1hMUZNUVdONFlVNWllbGxSYVdwNloxcEpRalp0UVdWeFUydFVkVzF4ZVhVMFZXZDBUMWRsWW5wSFNtaDVha1ZHWjNCWk4xRjBORmxST1ZoM01VOXpNMlpHT0hKM1psaG1ZMEV4UW1kQlUyVk9UVVJ5VTJ4RFozVkNZVUU1VlZvNGFqUXJhVUZrYTBWWWIwaGpRVmRxWjBkaVVsbEpZVlZtVlhvemFISXhkVGRMYzBoU2FHUkpPRmxzTW1ad2MwTk9jRFY2Y2s1ak5UWlFja0YyUjBzNFdqUTNVa1ZJVVZSNEt6RnpXSGw2VUVzNWJ6aERRbmhWWjFwTFIwWndWbWRCY1VkV1lUTmpjbGhhWjI1bWQwRlpabWMxVTNSRE5FZFpTMk4yVUM5U1NFTmFSWFpHVjB0NVkwSnVUbXhMT1VwTE9USlZjRVZSWmtGcllubzVObVJRZDI4cmRtVkNkM0V3WnpaemEzcEZVRGMyWjBkMlZXbHNhMDVJWlVWeU16VXpaRWRSYkhabWIwSXJkVVJDTnpsdWJtYzVkVVV2VVdRMmVGUTVRMEptTmpRNFYxWjBOMk4xVlZnek9XRmtjM0UwVGpWcGVYaFlURzA1YVVONE9ISkVhVXBsVVZwelpHbElZMEowZVVGT1RIbHFZak56YW1GbldTOHhWMWxpYVc4eldUZEljREJ4SzJKdllUUllTVVYzZG5aaFdGSlJhMUpQWms1SldGRnFMMkYzVFd0NUwyaEdTbGsyVW1ORFQyWXlMMGd3VEdOdGJteG5RbkJKT0dObWJtWkVWMDFpYzNCNVRGRlVUa0UyYlRoT2FGbEpNbGRTTlVScVUwNHlSRzFRWkdSdlFXTXlUV0pFUkdGbU9WQklSRzlwYlhKTlFYWjJVVXBRVW14RVVqVlVaak5hTmpKalNrdFJWeTlXY1dVMlV6RTFkVEJzYXpSdmMyUjZTRFFyY0VSb00wcHVjSFZSVTNWVGJrWXljVzlWY2pCelpDOXpSMkpVWTA5SFNuSTBUMjkyYkU1NGJqWldkV3NyUVZSUGJHbDVORmRoY2xOMVUxZDROVlpTTW1JMFIxSmtUM2tyZFdOSGNreHROVGt6WkdRNGNHRkxNM0Y2UkZoRmVWa3ZkV015Vm5SNWQxQkhWM1p3VjNWSGFtMXZha2x5TVRCMmRXOXFRa1poVm1VM1RWWjVkbGRtVmxrMVUxbFBkV0ZCTUdWRmVqRTVWR0pGYUhkWk1YWkZXRzlOWlU0M1NWTm9SVTl5TVhSaFoxcHlVbGN3ZDJneWN6UXdaMUZTTUVGeVptRm5jVmR3TVZOeFZsRkZVVlZ1ZHpoc1NYTjFVbGcxYVVNeGNsaHZkVEoyYjNvclowMVhUR1IzWm13MmRFUnZkbWxoTUdaU1ZIaDFRa05ZYUdsbE4zWnVjbUpZVWtzcmRtOVpaM0IzWlRnME5qWTRiMnN6Y0ZwalVFRkdhWE01UVhOR2NYaEVZM0ZTUkVOdVJEaDJTazh6UWpneU5HVlVjR1pKZG05QlREQjJVR2xhTUhKT1NuRllUMmxpUTJVMFVtbHlUMk5rT1VKcFJHaHpUa0ZDT1VaeFJqRndTV00yYUc4NWVHcGhURTlaZFVORk5FaFFaSEZIUVhSamVVbHhiVWxaVm5sc1dXMVpaRU5yVW1KUlVIUlBWblZ2ZFZsU2R6ZzFVazlqVDNORVl6bHNSWGwxV21WUk9XWktNakpGVlRab1R6SjFVbGhPYmtzMVYzbzFlR0UxVjJwd2VEbDNjbEEyWXpGNkwwZEtNamRHTkdKQlJGZFhOamx3TVdVeldrZG9Zbmw0VVZGc2RrVlhiMWxRU2paNlVUTnZVRUZQTlZCcVRsaE5WMWRTUjNRNVJ6TkxRVGRqVVZkSFowWjZaMmRqUW1Kd2QxVldhMmgyWm1oc2VXZExaa2MxZUhBemFDczFUMHh1U0ZOcFMxQk5aRFZOTTBSMlFVNXBVRnBIWjBKcmIwVkVPVVJaTkZsaFJFeGpaemR4TmtaWE5HWlVVMlZ5TkU1RVpUUkVVbUZ4TTB4dFdWQlFNVGhHVjNsNFlXMHdURWxMY200MVRXUTBURmxtZHpoemVHRXlZakJXTlZsS04yaEdXbkJrY21sdFZWZ3hjVWhTTkU0ck9YWlhhWFl3U1hsbGJsTk5NSE5PWjBRM2FHb3laMFZGYkd4TFRXVjVlVE5sUVhkaFZVUnRUbEpYVEVjMFJ6QlJTMGs0WVdzMkt6QkdhalZHZW5GVFFWTlFZakZKWkZCYVJEaEpWRXBHYUhkdVZtZzFUakZEUTJkNE5FdHFLemhCUVRaclpUTnViMGx1T1VKalJFVlVSRTg0YUd4MVQxbEROa2RIWVhkcVpYUk9ZbkJSZW5wUVQyNXFRVkJ4Wld0SmIzbFhaalpoV21GV1JTODRXRmxOUjFGNWRraHpSMmxIYkhGTGNWTnZORWRLUXpWak1VdHNiRFV3VG5oYVMzVXZlSFZUVlVZemJFczRWblJRZUdWdGNHeFBja1IyTmpJNE9YVjRURW94WTA0eWRtUnNjMDE0T1U1WmFVVTNaRWRKUmtReE5TOW9TRGRMWTBGcFpYTmhTMmxsYm5ad2QwdzVUMXBOVVcxMlJtTjNkaTl5Y0ZZMlZucHdjMUZaVlcxWmQwaFlNMjVNUWpWaWIycEpWWFZpZFZjNWFEVXdXWE5rYlZSMFNYQkJVWGRLZEdKUmVWUkZTazFvVEdzd1JtWmxLME4yWkN0dFdsWm5ibVZtU0hKUmVuTjJOVWhHTmpCdk1rdHpOWE5HVDB3MVNrbDJXV1JzVVVkWVVuaFpiRFJFTVZSaUx5OTFkVGRVZEhOWWRFRmxUbWt3UWxkdlRrTllOM0J3VVd4d1lXVlRUVFZYYjJoMVEydExkbEZZT1UwdlZEWlBaWFZuYlVJNGFFZHBTa05LYlZaYU1UYzFNSFp3V0Zoc2JrNXVWemRuV0hJeU5VMVdUVU5qYUZGNE9ISmhUMFJUUXpSYWFqbGhPSGhhZHl0aVJIVXdPWGx0TlU1aE5IbE9TVkZSTVc1ck5VRTRlV3QzT1VzeVowTTBLMFlyUVZoU2NtdHFNamRLYkVSSWRHeGtWMHhVVlZsa2RXaG9hMjlwUkZoM2R6UTRURzVtUzJvdlVVSlNWMDVrYVZabWNXSnpRbU5HWTIxMFRFSmlhbEJxYW5WcmFEZENNMWtyS3l0bE5XODFkSGs0UTFFMVExb3ZRWEUyYVRoak5EVnVXR3hHSzFKU1YyWk5WRU0yWmt0blJWUm5VWG8wWjI5clFrZFVjblF4YkZObkt5OXNLMlF5UWpaQlJFTXlURXBIT1ROUU1VczVOMjlQYVhVNU1VODVUMEpsTlZoNEwzRldWUzlwZEdwVWIzaHVWWGcwUlZsa1pEZEVNV1JaYTJkU2RHa3JkQzlZTlVZdlduUlBTRFpPUm1KaGQyTXJWSEJ5Y1VGSVMwSkxiek53WVZCeU1tUjNaRXRHYTNkTlVVaGxNUzlyYzBGa1prZFFVVXhuWTFCYWEzbE9VMUV2YlV4TFpXMWtRV1J5U1hwVU9FVlRkRXMwZW0xSlkxVnlWa2hIUkd0b2NtOTVTamxSTmpWWlpESm1kRmRHTTJSdVJqTnhibUZCU1RGUU9VZHdRVEJtY0RGR1QxWTBiek5JYVhJelIxZDRlV042VkVWVWFVOHdjbEZTVEcxTlMxcGtVamhXVTBkalVWTTVVMUJwY0RGTVdsQnJNR05CSzFaVFNWaEhZamhYWVhNMWJXTkxaeTlHZGpWYVFYWjNZemhuV25FMlRuUXpSRlZVSzJvMWMyMVhhRmRTU0d4NFZGQnRPVElyV0Vab1YxQkJNblpsUjJwelYwUlJOMGRMYjFaRFl6UTNaamhqT1U5dmNETnZUSGx0ZGxaVlpWVkhOMXBPVkZCTGRsZDRjMWRJVWtWYVNGSlhSa3BQT1hWdVlraFRNall3TmpKS1oxaHdkVFZ3WVZSMFVVeHVVbXRVYjFJM1NqWnhUMlpQYTNjeWMxQktNMWhRVlU4ck9XVXJabUY0VWpGcFVWRjFTSE5IWlZGa1NFVnJia1pvVlZaR01DOUNMM2RwYmxadFIwNHdORGxzV1ZSNkswbGFWVTF1TVVKbmNHeHNNMWh1U1VaWVduZEZjbk54UzBKUmJucFFjRFpFVjNWTFZGVjJTamxWVTNOeWRXSnVjM2M0UkVsYVJtNVNhMWt3VjBkaGVXWXpOVlF6TVdwNmEyZHVSa0poYW0xbFkwSnNjalZOTHl0TlVXRjRNMlJyZVVoSmRHRjZlRmN5ZEhoalYzUmlXWGxFWXpnelRXY3paMUZ1VEdScVNsTlZSMWhZU2taQ2VtTm9hVlJSUjNvNE4yeDJTM2wwZUVFMVFUVkdiRGRtTTJabGJESmlkalF2U2s1NlowWnlUVzg1ZFhKeE1YbEpiMVJUWTJGTlFXNXdTSGcwVTFwVVRYUjZZeXN5VWtwdFJsUllWRXRJYm5ncmRrbENibFEyUkhFNGIzWkhaVkZ5V1dGSlVtNXZWME5qYmtJdlpHdE1kMUZQYjNoaGQwTTRWVGxZV1RWaE9FSk1aRzUyVWtKcmNVcGxRVk5oYUVOYVdtMXpTMVZMV0ZkSmJGQkVXa2xTYTNoaU9URm1iMUZ6U1VZclJHUXpVamxwVDBwVllrNTVZbkZPYm1SWlRFY3lVR3czYkZvcmRUSk5lVUpCTDA5WVJXRjBVMWx1VkRCMFFtazNOR2xCYUVsM1NrZEthell6UjI1RGRFMDNRemxzTUVkYU9VMHJjSFZQVEM4NFlXTnlkWFZaTUdKTlRraDZWRmcxWXk5Uk5WY3labW80V1hsRVYzVkVWV2xqVjNCdFptMHlNbGxWT1hsNk9XUmpPV05rTTFSdFVqRXJhREZ5YWxWNGEzbERNM3BxUjNJeVdVWnFlR2hRTkdOalprVklVbUpVU200ckwwbHZPV3BVU0hoV2FXSlNkVEJITDJSVVZFdHVUVGRsT1U5bFZtSmFaVE5HWVhkbEwxQXhkWFJOU0drMk5YTlNTRm93Y1d3MlprWnNUMVJCT0ZCV0x6TTFTMVowWlZoMk5qUTRSRFZ3Vmxnd1RVUjRjWEUyYTNCTE5uRnhhRmg0YlRScFpYaGhkbkpOZFRWdVNFdG1iR0ptYjFaTE1XY3pkREpIZVdaWmJYWlBaSGR3U0ZodU9ISXpUU3RpWTJ4MFZGQk9kMFpuYW5oVlIweE5jbXcyTlZSVmJtZzRaRGRSUzNwR1MwZ3JLMko0V0ZObllTdG5UMVZpVkN0VlZFb3hZVkpUY1ZwcmRHVkRPR2RKVWtwa1RrUlliWGt3Y21KWmMwTlZNVzAxWkhsMVoyeFVjMEZPVkhkSGREWjJTM0UxU1hkSWFWVTFiVFEyVkVacVZGVXZOblJUTVdJeWNERnNibVl5TjBZek56aGtaREJ1VTNoYWRFUklSSGRDZG0xWFNIbGxiQ3MyVkZjMVpWVldTVUZ1YjIweGFXZFRZV2RyYlhaRlZWbEdPSFZVTVhvM09DOTFNREJFWnpkVU9XWXhLM0ZpZFZSVEwzaE5NRmgyY3pneVZWWmpUemQzVDBWU1J6TjVVMUpSY0hoc1JXeGFiVUpIVFVJMmFVbEdjM1Z4T0VjM2IxTkxUblZuWkVGc2MwTjZUR052TVhBclJHbHpla2RVWkU1bGFYSkhUbVJGYlN0V2NHUXpjWEpLZEZCdFRqWjZPV1ZMZFZSMmJIQTFZbGd2Y2xvNVYzcDJOVzlWU0RZeVdrNWhNbWxRVVZwUk1TdGFPVlZVS3pkalREaG9TMFZTVWxoVVJ6bEplR0ZWZWl0dGNFZExPRVUwV0hGMGREZGxTRWxyYVhSTWJqbHdZWE01WlhaWE5VRkdWRlJQV0dWdmVsVmxWbVowYjB0TmVHOW5jR0ZDVkd0amFuRllWaXR3YTIxNVlUWXhNbm94Wm5KSGVVOHlVWE5FY0RkVk0xUm9NemM1VkZaQ01sbEJRM0pwYURjNFQwRXpSVEpGWW01emNHdHFOVGhCTVhwaU1tWmlaMDV5Y1VKVmMzaHRaM0pOVEZNeVFXWXdNRVE0VFVkRE16bGtjMXB3TUhkbU5uUmxOMHN5WVhaVFJ6YzRkM2w1ZDB0cVdURlFZeXRJUzBwV01UUlRibmx2Y1UxaU5FUmxWM3BZVDJKamNtWlFRWGM1TldVMGVUVnFaa2RPY0dsb2FWVnRUSGhOYjFKaE1TODVRbXhCZFRKdVlVeElRMFl5V1dreVFYSjViVlZoVEU1WFR6WlVOaXROVTB3MGVuWlBUalZHYTFCMlMwb3hWRUZRYUUxSFpWaExiWGxIUzFoUk0wVk5kVlYyTkVsRlNERlFWVFIxWjNGamNWcGFNbk5XVms5eGIwcDZWVU5ZVVVWbU5VdExiVWxhZFVWWk9GWm9Oa1pxYUZrMlpXZDFSbUpFVFZkUGJXOUhkRU5MVEc5TFNIRnhjbkZtU0dZelozQnhXa0ZWYWtkT1MwTnpORXMzVmtwek0zTXJjbmQ0TkVOTVUzRXhjemRxWldFeFdGRklaMFF4V25GU2JVVTVVbTFHY1ZOQmQwY3dNa0pXV1ZwcFkwWjBVVVJxZFRndlEwVTJaM1E0Umpoc1NXZ3phbWRSV1VRM1dGbGtieXQ0T1Vac1QyZHRTekJHTVhSd1EwMTJOekV3ZDBSelZFWnZhbTE0WlVSaU5UUm5iWEZIV1ZCemNIaHZSVVpFYjB4U04wUnVVV3BUWVVaeWNqWTBNbHBVYkRkVVdrcEZXbU5ZUzIxWmQydDRZVFZoU1V4alRrNUdhWFZRV2pWNGNYVm1WRzVPYVdkWlJuaERTakp6U0RSV2NERkhVSE5PTldsSFJqWXhXaXR6V2tGRlpXaEVlVmhSY21sbldGaGlPRWh3VVZCMlNXTndSRmwyYldkMllsSlNZMGx0WkV4blJYZDVjREZvUlZwS1N6VXZWbFpGVm05aVJVZHdORkZGWm0xc2FsZ3ZLMHRxT1RGWWMzbHJaV050TlU0dmN6QjRaRWhNUm1wVE0zaFNWRGR2TnpKd01uaFpMMnBWYmpOQ1dVaDVha0pxVlhaRFZVNHpVVTlxUVdkNmIzQTJXSHA0YW5FM1RtcGhhaXQ1UlVKVWNFRkRiMEpRUm5jeU5uSTVhV0pGWjFVMWVYUk5iRXR1WjFwb1lYVkplRTVsUmxkaGMxTnBSMGRuYTA5elJrbFNTVGh6U25oSVdrbFViR1JLVEV0aFpubDNZamN4T0dNd09XRTRXVVpzTUhOaFluWnhOWHByWldKSVVqZ3hVSGwyTUVvM1oxSjBNRU5uWjBKcmRWcEhWaXRsZURnMVlVTk5XV0ZCVlZGRE5IQXlNWEJTYWtWYVkyNVVUazU2TTIwMlpVcDBjV1ZSYTBaaWIzY3JabEZYU1cxbFFWYzJWa05yWkZacGMxUlBVMVpHUTJaTlZqaFlNVmR2TUdSMVVraDBaRnByVEVGM1MySjNjMDQzWTNsTVlXOVhOVkIxTjBwQ2RVSm9UWEp1TjJ0NWREQXhNbEZsVWpnME56QlRSVWx0VVRkeVZHOTRSbFpCTnpSaVdtbG5OMmRNY0VKcGVqTXJNakZDSzBweFFtSkpSMjltYzNGVksyaHVWMDByVFU5MlVEVlRUVkpqVlhoRWNIZEhPR3RKUmxWdlZuUndRVE42V2xSelUxaHVRa1Z2TVZsVk0zaHNNV1ZsZWtkcUwwaEVjMmxpVkV0RWFWSlhUbFZhV0VFNEwwbHNNRGxqVDFBNWRqbHlkbFZqVURaaE9GZHlPRGt4WjNOMFkyWjZZV0pXTUhGVlFpdGxhelF5T0hsR01HSnpOa3BCWlRSaVYwZHhNVkJ0V201VlJVSmpZMUoxVVRWS09EUk5OMjQ1T0hkd2VYQTNaWEJ2ZFVONU5FaExkRVYwTnk5SWJTOUljakJSTWxaalUxcG5TV1pSVEVObVkweDZSWEYxUW1ST1JtSmFPSFZKTTNFcmEyNXRSbUlyZVVSMWVqUkROV2MyWkZsaVdHRXpUWFF6YzB4MVUyb3dWVXN4Vmxvd1N6RmthbFZWTHpScFNVaHFXVE5pV0RsalNuUTJjVzQ1ZDJ0WVluaHpaVlZUY1ZWVVlTdHZaa1kyZEVwbldHSkhiVFZXUTJKV1FVbHZXbGw1Wms5ck5teHBiRkEzZUZOcWFFNVdNbHB4Y1ZjelZGbDROWFZtZUVGMU4wcERjSGt2UXpkV2NFVmlhVXBLTURaRlYzcGxVbWRXWWxObVdEZFNTMGhsVUc1R01FMUNOR3BqZVdVM1JTODJSMkl4U0hjeFUyaGFVemcxVldGR01GVkVaVkZCTmt4VUswOUdkV1p1YzI4d1pWQXdTMWx1VkRVMlkxSkVka0ZoTDFKS09FNVJVMlJ4TXpWaGJDOW1NV1ZhY2poQlNVWTNWMU5rT1hoYVJrNXZiVE5UZGpOQlRWaFNPRFJDYW0xVFZEQXJjRE1yU0RGV1FXMUxiMjUzYUVSa2QyWTNWalZGVGpWM1NFTkxPRTFWTmtGM01YVk9hMnBTZDNRdlNVazROallyVEdsdmNEbGpLMlo2TDNkemMzcHlLemxrYWxGTlR5OU5jRTlaVG1sbFZtaFpWV3N6SzIxa0syeENOMUl3VW5GVlNHVXlVbXhzY1Rsa1ZFcFJLMGRXUjJWaWNEUjViazlUTTJaNGIxSm1XV2xhWTJwcGVrazBaWFptUzIxM2NVSlZkWFZyVFROeWNUWkNXRVY2YlM5M2JreHpiRGs1WW1oWEt6RnBiVGw2U25GMlVVdERXbEZHVkZneWNqTk9XblE0V0UxWllTOVFNbWxKTjNsa1VTOUNTV0pxU0ROSFNHUlhXVmt6Um1sUE1FMVNObGhrT1dFemNURkxVMXBOTlU1VGNUaEhkRFpYYmtwTk1tTnRjREF3V0dSUFZtNWFkV0p1V2tkWWJEaE9LMWxoSzFVMFZubEZVM0ozVVhoR1ZWUkdSVFl2U2xReVYweEJOMmsxVTNOclVraFBNRXhZTTFGNUswVjNSa3RhWW1OclFtaEpkMnMzVjFsQlRHVmxWRTR6YjNnNGRrNVVXbVZCZFV4a1pUUkVjbXcwTWs1WU5rbElkVEkzSzI4cmNrMWhLMWhpTURod1JHRjVTbnB3YXpSd2FURnpXa2hrZFZJekx6WnVjbEZWUmxjdkwxVjJkbnBRTW5kdlMzUjJNVm93ZG1sc09WTkllVTlJY1hkQ2VWQTJjMmhIVFVJdlVtWXhMelp3VTJGUE9EZFBXRll4Y25rNFUyRTJORFlyVUZSVmRsUXlPVkpWY25KeU9XUk9VRk5PWldGTFNDOW1RMjAwUkhwc1dtSk9UVVpYY0dKbVJ5OVpiekZoTHpSR1IwUjNlWFptTW5oVldUQkdRV0ZPZW5OdE9UZ3lOWGhoUldod2RrczBlazE1VGxCWldGSkRhamxtY3pGc2QyWnpUbkpMU0ZvMVZXNU1iM0pNZDNBd2QwMUZSRXQwVW1wUVpuVlZWM0JTVEdOeldYWklNemhEY210VU9XNVJjVlkyUW0xa1FsSk1PV3c0ZUVWQlJEaHdOMUlyY0ZsTmRVMUJORGxDUjFCU1pEWm5Ubmh0VEVJNVJWRXZRV3BITm1jNWNHaEtjbWs1UjJJeVNEbHRkMFZZTTNOUFdETkxlSEIzWkZsWmVHRlVWVEY2UVVOVVUxUnFlRFZhZUhSSVJteHBNbWRCYW1kUVJHYzFiRVZWUTFkSGEzVXlablJ6YzJweldYSmhhVWxXZDNvelNFTlpTbEZNUzJSMFkxRjFSbEZxZWtNNVMzQXZUVmxsVVVKbE5UbDJabTFTV2psRU0zSjVkV05KYUVsVGQydGFTR3BFUTNKbE16UjRabmxEWTI1eU1uVlpNV0ZFUmpsdlRVcHhSbFEwUzBWWGFTc3lRVEF3YVhwMWRuUllPSGRqUjI0M1JWTm9hRmRQYzNBeWRuTk5PR1pOT0Raek5VRnVhR0o1ZURoUlRYWjROazFhVVc1MlozVlFObFpFT0ZkaE1XNWpPRXBFY3pVclpqbHhNRGt5WmxBMldtc3ljbGRrVDFaRmNFdEdTRGRFUWl0V056VnplblZ4WVhwemJWUXhibFF2YlZCNVpVWlNZVmRzVWpSamEydEliMmhhYkhrclVWZG1ZMUZuZWxWcllqTjFWakF3TDFGSGRuWkZSRFpLVHpaSlRqSjVVamxyWWpaalREUlJVREpQYWxkbGJ6TnZORGR4WTIwNVVFVndSRWhNTkhkR1NuaFFWMHRUY0RZdlRVNTVPVGhtWlVzcmNtc3lZakI0WTJ4NGIwMTVkWFpDUzFnemFWZFRaWEpzTjFkMmNXbFZibkp1U2pKNldXdEdORWROUldKVGVXWkRVaXQzTVRkeVZGRlBieTlUV1ZvemF6VnFXVEJ1VlZwNVdXVnpVbUpPYmpKbWJuQjRWbU5YUm1vd2NESjRUVkowZVhjeVpFWkdRbGRzTVhSdmJtaHBhVXg2UlRKNEszaHVjbmt5Y1hsdGVqQmpaa052U3pKeWNqbEdWamhJTm1samIxQlJTMDlDZG04ME5rZFdZUzlaUmtvdmVtbEtSWFZMTjFWRE5XdFpVbTFYWWprMU4yTXdWREJaUTJsMWJISlBlWEZZWlVKVFZ6VTBOekZXY3l0WlUyVTBURFJQVURORk5ISkxNMXBPVmpoQ1RVUlBiazh4U0U0MGVHb3pVa3A1UVRoNGVGaG5lazR3YzFOb1ZFMW9TbmxLVVZSdk0xcGlVa3BpVTFncmRWWlFNRmRHVkhKRmJHeHFaV0ZHZEdkek1qRnZNSGRQZW1rdlZuRkdhVXg1UjFZM1ZrSjZkWG8yTjA4elVGcERSVUo1TUM5VlRHSnFNRTF0ZUVaQk5ucG9OVGgxTUhka1JuZ3liekZRVUM4NVNFSlpXRmhUYUVkVlowdG1NRkpwWjJ0clVtdFpVMFUxVW1sRFpFOVZWMVF6UldaNVEzQXljWHBSV1dsWVoxQmxWemwxVVVaVGREZzBXREZXUVZGdVlqQlhZa2R0VDBkeFoyOWtUblE1UjJ0dVdqVXZlRU52TTB4dGJXaElMekI1VXk5WlVHNTJORFE1VkdSWk9YTkpXbEVyVG5kWVYwbGxLM0JSV0ZGVlZHdHRPVE5XVVhsS05HVXlRV2h4TTB0WlYzVTNhWEZZV2t3elFWUklSbUUyZWtoWFIwMDFSVGd2UXpOdWNIaDNlVFp2WWxkTWFEUjZUemN6ZW1nelkyc3ZUbnBuYjFWSWFIaHhRMEUwTW1oQldYcDFXV1pQV0dacWIwUTFLMWgyY2l0dmFWQjNja3h6WWpSTmNrVlhNR2Q0Y0VsUlExVTFSUzlCWmpKc1VVODNiMDU0Um1veFpVbE9UM2w1YmpnMk1YVnphMmcxYVRsa2IwbzVWV2t5UlZwVFJITnpNMGt5TTFBMFJXa3JUbmRqWmxsTk1rTTFWMHBsU1RocFNWZEplR1J3ZEZKMWJGRlJVMDF1UVVaTlRtMDVRV0pDWkhsQk9WUkJVbmxFVVRSdlNtRkpUVTEzWTJ0dWFFSnNRalJuZVRWRk5qZEVlVlZ5WlROdk9YZGtUa015VWs5WVNFZ3hkVzFuVW5CS1pYQklVbFZUWkV3elFXUmxRbFJhWW1WT1UyVm5NWFpNTVhoVVYyZHpSV1ZTTmtkUFNYYzFUa2RqTlZGdlQxVndZM0ZWUVdKSVZFWjNiVWszWmxkdWVGTXdUVFZVVlhkRldrZHFRbkZUVkZsb1FqRmFaVVEwTDNvNGRsaDRUSGR3WVd3emRHYzBabkV6UmtwSFMzb3dTSEJGUlRKUFkxUnNVbXBIVDBGUFNXdHVObXR3WmxkTFlrb3paSE55U1V0QmJsQmljRGx1Y1d0cFZqTklaMkUyZURORGVrWmtNbFJxY1ZSdFQzRjNjV2MwYm5KTUx6TlRTVEV5UXk5dVJXSnNNMnhoWkROUkwyMWljMXBGWW5sNVNXbzBjRTV0TldGWmJXRkJlalpaYlU1NmVISTJjVlJTSzIxVU5tMWhLMnB0T1VaTE1HWlpkV3BpYWtreWFEUlJja1pRV1RJdk0wWmphazgyVUZWalFYTTNVRXRMY0VwdFpVOXFLMDgwVjFWWGRGaGFZbnBKTDBGWVZXdHlNRTVxVDBzMlpVSjZSMFJxVnpKU1NWTjRWbmhsTUZaQ1pXYzVSbVZWZFVaMFYxVTFjVkZvZVdaM2VrRlFSRlp3ZWtkTFNWUjJWVWRHVEZsbGFIQnBhRFpDYzJ4b1ExQlhZWEZFWlVodmIyVlVjMmt2ZFhkWmNrOXdSR0pwU0VGYVVYZGxZM2RyU2xoTFVtWmhSbk0yUjB0dVJscG5aWGsyUW5WblVGTlNORUYyUVdoa1NHaElPVUpZWWs5RWREbHFaMWd4U1ZBM1QwRk9UbTVuT1RGUlJGTkxXbkZJYVhsb1dEZHFlV1Y2ZVd0M09FZFBWVk52VTBjMFpsRkRObmRyYm5RNWEwMWFlRzgwVDB3cksyRlFOMDh3VVRSMk5XaDBjMVpQYWpGNVdIRjBUbVV4UVVoa2VYbGhiRmQ2TTNZdlJqbEJUalpzYXpad1EyZHdVMHRZVlZWSVNIaERMMGhCVTNZM1RrZFZWVmRGUTBaME9FaFdPSEJvVEhGQ1RqRkdSMFJWY1VkRE5XeDZVVFpJTWpWNFZXZHhjRWd3V1ZsMU5XY3pTRkZvVjJwUFQybFVhRTFuZWsxMk9IZDNSVTlLTVdkbVdIcHllbE5tVTNFek5qZGpVMFJIWW01R2J6ZEZWM1JPWlV3MFpYUnlkQzh4TWt0dlNqUkVSREJTU3poc05HVTNXRnBKV2pGVk9GZExRMEZ3TkZaTWNVOUJiVEJXTDJaMFlYcFJWRzlRVGpsMlFrWjNSVGxDTVN0SU5HVk9jMk5FVEhKclVWUlBOREp0ZDNkbGMwZ3JkMmc0YzBKelRHVkJURmhRYzBOTFpucERZV0V2T0VkV2FYaGFaSFpDUmxaQmNsZ3ZhREJOTVRseVFuWjRhazAxZFVGWVRVcDNhU3RJYkRSUVluRkljRkZrVTAxcU5pOTNiMWg1TkhWTGRYSnNTbkpxWjFZeU5XdFRRV1pEYVd0MlFUaENkRFZJT0VOdGRYVjRaa3hzUVVSV1pIVTBZbFJNUmt4WFkzbHJWek0xUW10RE1tZEJhekpCUTA5dk1FY3dTMnd2V0dJeVQzTjVORzgyT0doWlJqQTJaVGxXV2pWQ2RWZEZTVzExTUc1TFRUQjRSRzk1YjBKelVuWm5hVFpxWjJvdlFXNXFZbmRXYzBsdVRXUjJkRzlOTXpKUFJERldRemhsVFdGRVYyZFdSMDF1VG01UGJtUkhORUY1UVVWUlFUTjNTVE5VVGtOaWVrSnFSRzFIU0hGQ1NFaDNUa2c1U2pocWQwbFlXbVpuVkM5bVNHZE5ha1ZJTHk5d1ZGbFZRMlpSWm5sbllWazVORzlsVFVrMlZTdE9TbXB5VVhRd2JTOHhVbGN5VWtsbFMzRnJhWGRXVG1KRU5uQjBhaTlqWjJOeEt6aG9MemhTZG5ob1lXTk1Sekp3U2pGTWVYRktlVWg2V2xBMlRVTnNWSEEyU1dkWFpWVlVOVFJQYVRVMVdrTjZRMGQ2TUZSc1NVODFkMHBKTTFaaE1uUTVaVUZ2UmsxcmFVODNiSFZYYUVKbGVsaHhVSGhLVkhJM1ZuTkZhbkpuWVVod1UzRjROSFZrZURWaVpIZHhVRzQwYzJaakwzZExOQzl1VEdkMlVWSTBTWFpCZGxKSWFGZ3hRMUEzWlVGT1RtNW5PWFJqTm0xcU0wczFPV3hGT0c1MFZXY3pVelJ5ZDJOV2NVZG1RWEJEV0V0d2QxbGpRbEUzYTBSRGRXSnpWVVUzUTIxcllWTnZWME53VkZSWFZXMU1TMHhoZFcxNFdFZGlRMUV3Um5ZemVVMHdXRll3VVc0MVVrUTNSRkpOZDNwc1YxSnJWbmhIUjIxaWN6aHpabkZrY2pkMVZHZHViRlJaVDBJd2JFTnlZelpEU1U1TFZXMHlkbE5VVlRGSlRFNWlWMWhrZWpBMmREUTBNelZ2TmxSWWFYVmxNRFZvVVdKVk1uSk1RV2R5UzFrd2MzaHhaalVyTkVWaVoyWXpRVFprZEZSRk9WTm1XRFZWYjAxb1JFWmhURlpVY0cxWU1EZFJhbm80VFZoTFExSkxPVEJEVG5VNGIxbEZTa0pVV2twNFZXNUNRMXB4UkUxck5uRmpiVkJNTDBwYVJ6YzVNRFY1UTNaVlZHbDFabWR2U3pobFkxTmpVMk5aWVcxRk9XdzVSRU5pT0hGeFdrWmhaakZGTDBSQk1qQjBaalpUTm5KS2NuSmlRekZ5YldWSGIxWmtjM0pUT0VOS1pqWnRRMVo1YjFwRWNuZDViM1Z0YTJ0aFN6YzJiRlZrZEc0NE9YQkdZa2x6VEZsTFRHUTFiWGxaYW5OQldVSkNaVWQyWm1KWVRXdHBjbTlYU2xvNWIybHlMeXRQZEVaUE1UUlBWRmR3TDNBMk1XbFVLek5UWmpKM0sydHRPVXMyVFcxa1Z6TldkbUZrVnl0d1NsUXphMHMyZDNGVVJFZEZTbE5zWnpkeVZWTm5aRkZoUVRCVU0yb3lkM1l5UTNoVmF5OURhRkEyVkRReFNVeEdURzUyVEZZck1sQldVRUYxZFdGSVlWcFhRVU5uYmxJMlpsTkNUMDl3VEZvNFpWcEJlbFp3ZDJGQmRuUXdZV1p5Tm1OQmFWRnRVVTlEZUZnelZFaHBTR3BDZVZwT1lUSmpaRVI2V0RsblJYQnhVWFJJZW14WlZ6VjRVVTlRY1Zoa2RrOUxUVmczVW5aNFdFSTVXbEY1VjNKNGFEUk1ibWRKY1hKalprdGFZVm8zSzBZcmFGZFZla2cwY0RsWGN6UnVkakpoV1dGcVEwSnhNVWhIUkhCSmMzSm1lWFZpV1M4NFdIUkNTbTlsYWtFd0t6RXdVVnB1Y1ZWVk5qQnViMDVvY25KYWIwZFJia05MWTBrdlFrUkhPR295Y25OTlNISXdWRlZMWnpab2FVVnNaR2t4WkdrMlEwdFZielJOV25CTlRFeEhORXhFU0VWclMyZExkamRSVkZFeVJ6SlZjemhqU0VGeWREbE9PSFJYYkVSYVYyWTRNbk5JWmpkaVduTlhUbUl2VTJ0TWJFcEtSMFJrTlhrcmREZHNZbXh4YzBNME5rNVVXbFEyY0ZWWFZuQkZkamhaVm5Wck4xTmliVFowTm5KcGNYVlhaRmtyYWxKb2ExWXpVQzlxWnpJeVlYZ3diM05LY1RsWE0waERNbGhvVEdoaU5YVndialZ4VlRGU1N6Tm1iMFZuZHl0WFJHRXJZbWR2VjFKV05TOUxielJpVDFCcFlWYzJjeXRtZDNWMlIxcEZLME5NVVU5QlNXTmpOekV4UjBKd1NXOUVlakpxV0dGMFJtSmlWemxoTld0aVdsWlVkVGRFTDBSVWJpOHlOVkJRZVZCWE1XMVdNSE5pV0dST2RraEZiV1IxY2xVeVNtcExlV2hxSzBjeVdubExZblJHWlZOWVZFMXFTMjFzWlZSU2VtdE9XRVpKTVRkWVRVMDRXWGsxYVVSbGNFeENWbko2U0cweVNHNWpZWGhzU0hwdlMwWlNaekl4VkhOa2FISnRWMVJtTm5wNVpsSkRNRTFNT1N0VlZURTBRVmxOUXpZeVNsUlNiR0l3U2xJNVkwRXhaMUpFU1hobU4zVnlaRmRuYkRKSVVraGFTRk55VjBOaFIyOWhabEZFSzNaa2FETmlUMkp6ZERRNWRYUjNRVkJ2U2s5TVIxZFlWbkF6TW5wVGNIWnhRVlV3U2pJMU1YWkxRa1VyVlhwRVEzQXpXVkZtV0ZCNVNEUXhOSGg2S3pNNU1VVnFkMUpoUWpkU1VHZFlNVXAwTW1OQlZWQjRNM2N4V1V0bk1VTnpTekZNZFdWNFJVczNlamhWYW5OVE0zUjRNRlJTWlV4UE1UaGtWRFZMTjJkeGMwOXZlRmhYT0hwc1QyTmpXRW80TDBvNVdGcG9WMGxoTkRkak5uTTJMMnBETlhaVVptWTBNRmQ0UW1STlZIRlNWSGxyZDNodWFrTmplRU5QVm10WVMwb3laWGxIV1dnd2IzUkVaQzl1YVhkdlNUVkJhMWczS3pod2NUTk9aVGxYTmpKTFdFUXhRMncwTm1wRVRsUjVhbVZsY0hOb05rMVdVVWhWWm5wQ1pHaHJNbGRQVmxZM2IxQXdObmxwWTNGNGQySkhVak5YUkUxR2FHTnRRM2t6ZUhOR1l6aHRZbmx4Vkd4NU0zUjNhemx6WWk5b2FXazVXV2hpUlhOQmJsbHFWVFJFUkV0Q1VEQkVhRGRYWW1wRVpsSllOMlIxUVdoUUwwZFdPREZUVWxreVpqQndjM001U2pOclpVTjVjM2hPZGxSaFQxUnFhemRJVVdWSWRESjVSSFpGTTFFNFkzUTJUelpVYW5KNmF6QkxiamR4VUVveFMwZHhaV2huVDNaRFMwNHhRMUpKS3pSUFlYWjJRMGN4U2t4QlJHcHVkMWhpV1hKMVZETm9Rek5rWkc1MlEzQTJPRE51YzNSSkx6Tk1XamR6UlU1UFQzSmpLMFp0WVhadWJVUktZbk5yVXpVMWRVUlVNMFF6Y0VjeloyOVVhMmhQVkZaUlNHbERVa3ROYm5obWNVaFVNRUV6VGpJeWQyaGhVVGwxUWpKQlVDdFhOWGxqYjNCV2VqVm1VMk5IWkZveGMxQmxLMEpPYmpSd1MxZ3lVM05OU25GdGJVSkNVMVkxVmxCWlQxYzJLMWhWUzJJeGJHRlZSa041Y2pkbGVYSnNTRWcwT1VGSmVtNUlibVJtYW1OdWRGcFpPRXN2TnprM2F6ZE9PRUZxTVd0bk5YWldhVlpDSzFJNFlXZFNjblJEVmtaVlFrTXpOMjlRTVRkQ1dISlhZbUprTm00dmVGaExPVEF3WlhaRmVHUnhlRUZRZEZWRGIxWmxlUzlUZEdGcFdVOHhZVXBZT1hSdk9FdEZRbmN3WkhaYVVVSktjRVZ6WmxGd1JHbERla2xRUWxkd1RrTktSSEZtVm1ObFYyMUdWa1o0V2xCV2NuUndVbEl3WVhaeFp6UnpTemcxV0dsbU1VaE5NekJXU3k5TFZUTnBjSFl6TUd4SVpDdEJkbTR6YUZNM1VWb3lNRXd6ZHpCR1EzUldhbTg1UWl0M1FVVnVVMlp6ZERSVVNISkxOMG8yZDJKMmFXVm9SemhCVG5kWFJWTjVlRk55VFZVdmJESklUbFZxUWtocWEyZGlaMHBzWWt4SVQydEhkQzlVVEZaNlMyMXJjRWwzVVVOc2VEWXZkVFIwV2s5MFIyOUpNbWMxZEdwWVEwMVRaazVJTTFrM2VraFRORmREZHpkcU9XWXlWVzEyTDBodGFHMXBlVlp4VEZGT05VRkhSM0ozWVM5dmRIbG1PVFZOVVdSSmFqTmpMekZUUjB4MVFrRnVjRlo2UmpCUlptVlVZblJGSzJwdlluWTNTelJHYUhkclVraEVWekpES3pRNFFVOVBOM2dyUjNweU9VWlJSRXBHU0RNM1FWZGhTSGQyVldOcll6azBOVUZMYTBneVN6VnZXbWx4VURWTGNVZGFOREpCYmpkSFkwdDFabWxrTTFocmRUQlZibkJWZW1GV2JESXdjVXRrYkZWV2NqVndRM0o1TDFsclpIRTJielJXVENzeFRWUTVMMG8zVTFZek1sY3laMnhzUzFJNGVuaExWRmxzWjB4eFkxcFNRWG95TTBWcFJXc3JOa0pvTDJkTFVtcHNLelZaU25FNVFUUjRhSGt3VUV0VmFuVk5iV1IwT1dKa1FYcHlNV2RRYmtGQ01EbElUMmRZT0VGR09VbGhXWGhvY25KalNXeGtSa3MxT0VNMU0zSnJZVXBTZW5KVmVqTjZhRGRFTkZSME56VnVZbEV5UVd4Q2VTOW5WbkpSVDFoVVozaDFhVWRFT1d4M1FUVlRUbTFrTTBFd01ISnZZVXhETkc5SGRuZEtNbk5MUzJOYWJYaDJjamxVWlhwRWJURTNTWEJDUW1sVVkyTmFSSFUzTkZsblN6Qk9NRmg0WVZKT2JtRlNhbmhvWTI1clVqQmxXR1phZWxaRmFrVXpTbTE0ZVd4Q09FdzRkRVpQVVZBM1NqQkdUMjVvU1dFd2NrcFlhSGh2TVd4MU9VSmxNeXN3WkVGTlEwOVVWRGQyTkhWR1pEQnBhRkZ1T0dRMGNqbEVWV2ROZFhOMU9IUnZUalJtVERWcVV5OURVamR2YUZCbU5ESllMMkpqT1c1Q1dUVlVla0pJUWpVeE56RXlWR3hNWjBoalJqRlVTM1ZGT0RNMVJrcEhTWFpWYmtOS1NtcFNLMWRtVG1OR1JXRlRkM2R0TjJkSGVqRkdhVUUxZVRsRFQxY3ZaREJQZWtzd1dtWlZLMDlITkdaMlFVOTJTV3B0TkZwa1IwSXhNRkpLTkhoQlJYbERaRU5uZFZwQ0syTkhSRVpwTldKT1VsWnRUWFJHTURoa1FtRlRObGd2V1Rrek5sTm1MMlZrUTBWMFdUZzVWRzgzWjNOWWVIaEROVWt2VlRWUWVIaHRjRU5YZEdGTlppdGhUWGxPU1RsdGJrSlNhbUVyYkdKaE5ucElXVVF6S3pSVGNGcHNjMlJsTUd0emJHNVplbEF6UXpsVFJYcHBUa3BwVVZNclpYTnFaRFkyYTBSMU5VUXJMMFZEVlV0M09HVjJiWHAwUm1WTmRXczFWRmxyUm5GRmFFMTJWMkZPYVV3eE5tWkViMVZpV0hReU1ESXpNemhZV2poQldGcFNVa3d6UkZWbmIzWlhWMEZJVG5OTFpYUmpiMVJLYkVsSmRHOUJhbXgzWmxCdlMyd3dTVTR2TDNSdFExVlVhakZDUkZJNVRVOVBTMHhuV1dGMGNuUm5WV3RpVlRSSE9USlhja2REV2pKMU16TlNUVWhvZWpkWFpqVnJaVzB4Ymk4MmFHRXpaR0ZaUzI5dFVGQkdUWEI2ZUVGaGFrdEZhSFZ1VFdwTUt5OVhkWFZ5T1ZkaGRrNDRNMHh5UmxJMFZIazVjbVZEWkdwVFYzQkRWbkJDV1RGYVp6WmtOelpzTXpoc1RFeDBTRzh2VURCV1JUaFdaM1IxT1RSeU5HeDFTVzh5ZGxORmRWSXpVVFprUm5VM2FsbHhNWGxaYkUwMU1HZEtUV2dyTTJOR1dXVlZZbU5sWWtwSWJVRjBhblpHY0doSE9XWTJRbmR2U21rclRucEZhRTFzZERsWmJtUTBPRGQ1VVM5S1UydzFkR2RaV1RKS2JXZHRaR1ZXUm1oQ1VWWm9WVWhuTjFoR1p6Rk5iMVE1TkhKbmRVcERaRlZXVm1sbGN6TnFXazlMZW5ack4zZ3JhR2t3WjNoU2N5OVFhbFZSTDNCellrZHdiVnBIVWpKT1RuZEhkRTk1UjBrNWFVWnJNVlZOT1dOU1VGaHpVVlUwU0ZscFMwVkRjbGQwUkhSTVNXdFpZbkZETkhGamNtNXFSa0l2Ymt4V1FrVlVMMXBoU0dJck5GZFlUWEJ4WkU1a01VOUhhVll6Y2pacWVDOTRlSFJEZG5oT1NXTjNXV040TTJsbFZtdHROVmd2TDFNMk1UUmhUbXAyTDNZd2VVdHRVRkF4Vm5CMFUzQXZaak00Tml0c2JHWXZObEJJTVM4dk1sQTVaSEl4TTJaUWNVWnRMM1p2Tm1Nck9WQlNSVXhHT1ZkTk5FTnlTM1JoVDJ4U1JVOWpVU3RtY1ZwcWIwNXFaVkF4UWtKMldHVm9NVGRxU1dkTFNscGxibkZWT1RWVVZYaDJZamhpWmxoNk9Xc3plbTR2VDJ4ck9EbEZjVlZxYkhKV1VEZHpNekJEVVZRNGRFTkRjVTh3ZDFNck9IWk1NRGR6ZVZOcU1UWnhLM1pUVGsxMVZHZHZVbXN6TTNWNGJrMTFjMDFhUlZFMlZFMVZRWEJ6UzJJd1p6VldVbUp5UVZsV2EyNXBWMHd5U21aTk1tVjNWakI2T1RWVWIxYzRPSFZ6YnpBeFpFMTZlVFY0WTNCMVRuQlBaRmxpYUVsWFJ6QkxSbXNyTUc5UGRreFVaM3BRYjJOQ09HUXJiMVJEZDFwS1NXMWpVRmhNYlM5a1pVNWFjVVJqVWpZdmRUWm1Ta1F2VDFsVFFrSTNhRnBXYUZCYU4wYzJaVGd3VDNCMmFUUlpTVWN4YldsRVdqbHlRbmtyTTJFMWQzcEVTRlEyTVhSV1kxUlFUbUp1TWs4eU1pc3ZkRmt5WVM5MU5UVkVOMFpMUWxkWk0ySm5NMFZDWW5KMVRsbFpkVkJwTXpSRVRESklWRUpXTWs1SWVVNWtPRWxWWm5wV05tMWFkVTR2Ym5FMWFDdEdUVzVMYVZoWUx6TkZaMjlIWW1wT09VRTVkVFZUUTB4Q2FscFJjRVV3VGpBMFkwOXpTVWhGVlROeWRWTnBRbTlGT1UxUVdtZDJUMWxqYURWR1RUbENjWEJzTnpSRk1WZFJabmhOVTNsamJqVTRiRWxpY210NmFVZHplRmcxVWtacE1sSjVZU3QyYTNsVmRWaEphbTE0Y205cFZsSmpZWFpIWW5oSVR6bERaRlZGYW1Sdk5tbENMMUpuVTJwclpHTlNlbVJuVTBKelVHbGpZVkZDTVhsaWFGUjNhMlIyUVdobVJWRjJlRFZDYlVoclNubHhiVkl3UlRSaVl6VkRSMVpuTkRsM2JUSlpUU3RaY1VnMlFXWjJVVlZTTTFsTmFqTjNOV2h3YUhWMmNrWm5aWGh3SzJObVVFVlRTRzU0Y21kdWRuRkNVVXhDTURGMVNqbGllRmhsT1RCVFZXSk1hRFl6WWpVNGJtTjVSWEpZYURsR1UyeGxaaTlXUTFJd2VuUmtNbVEzZGpobVZqWTJSVVpsVTJFelUwNU9kemRZY25SSFUwRTVUMFpUT0daMk1VZG1lamxZZFhNMWJucDBSVFEzUlU1cFduWmllRTgzYTBsWVFWRXdSa0ZrTmpoaVdISnlTelpyVVU4d1pUVkZSMHN4TjJ3MlRDOTJObVJqVG5ac05pdE1iM1lyWm1rNVpsSktNMkpXTmpWNmRrOXJUSGdyY1N0eU1USXpSallyTDNRMlJESTJRV1l6Y2pGTFNYWkdNV0ZrYlhwNGJHSnRhbk5MTDA1TGVUSmtNRXBhVTIxS01pOUpNa3hRZHpCWk4ySkJSRXQwY1RnMWNGZG1abVppV0c1c00wTjRSa0ZEYkdRNU1HdEphbFZwVTBGWk1YWnJhVWhUU0VKUlRVaElTVlJFTTA1NFUycDZUMlI2UTBoUFRuUjVjVWhCWkRjdlJtTnhZWFV4WkdneU1sZHZObE4zZGxaa2RURkJZalZ3Y1VSVFQxQXllbXhFVWs5MWNFaGtNa1E0ZG5wNVEyZDBlRGhyTTNvdlpubHlXRTk1TjAwMWVYWllhUzgyWldzeE5HSXlkRWxYVGsxUVJWWTJOVzVLT1VsdVJqRXhZbm94WlhWaGQzbGhMMDlxU2xVeE1VWXhjM0F4UmpSaVVWZzBPVGN5ZWtwamRXVTBZVUV2SzNaTE9XWnlTamRWWmlzdlptMTNUSEZ2YTBSdFVrdDNLMVZEY0hkdVJrUmlSWEo2YUZNeFdGb3paRGhqWm5WNlQyZE1SRmx1UzFOcmQxTlRNVlp0TWtnNVJWUkVLemh6Y0ZsU2QyUXdlVmhHVlRWd04wODRRWHBXZGt3NWMyWm1abVZ6Y1VrNVVIZzJiMjFHVmxOTmFrVXhTVVJuZG5kdlkwTmFVREI0ZUZNNVZYSm9MMjVMT1dWU1dHVldOa3h4WVRkcVlYTlJSRk5aV2toWlNWaFRPVlZPVEhoaGVUQXdUMVpYUjNGeWQzbHpaV3RyWm5sQk9WbGpLekpHWlZWdGMyMXliR1JtTDNSV2NtUnVXSE5LTmt0NlZraDZjSFZ1S3paNVZIUmpiVkpMYzFRMVJWcEtVemxYY1RjNVdYbFJOamhhUWtnclVUWllja0ZhYjFsWU4ycElWM0pxVDBaaVNIcDBVekJrWjI1UE1qWnVWemhSUldOMVdDdG1SelJRY1V3cmRsVlBOQzk0WlU1UVoyaExWMEYyUTFCeU9YRlNla0kyVUVkS1ZHUldkRWd3T1hZdkt6ZGtOV29ySzFkWFZIQnVOVk5ZYTJoNVkzQndSbkZKYldsUU0xZHFaemRKYnpSaGQwWTNXRlU0Umt4dFFuWXZUM1V5TTJRNGRIcGtOa1JDYWpkQ1JtVjRWbmRZZDBaUE9VVTNNRVZCTjBORE5XSTVVMEkyVVhaUloxUkpaREZuYVU1RlJDOUxVV0ZCZURWM1RGWmFlVVZPYVZsUlVqaEtUR2hKT1VOQlVEaFpZbkIwUlhoM1ozVm9Ra2hzU1Vwdk0wTmllalJuWlRWRFJqWmhTVUpKWTBsdVZHZDZZazFPVFZBeFpGbDFSREpPVUhwRWVEWnBkekE0VG1ORkx6bDNSVkEwTHl0VlJITnpVbGd2TVRsd1dGSlpNMEZCUVVKQlFVRkJRWGRFUmpJdmVuZDRNVGhRVUZCVlFVTjNaMEZCUVVGQlFVNXVUWGQyWTBGQlFVRkJORmgyWW5GbWRHc3ZhRkZKZFhka00wRkJRVUZDWjBGRFFVRkJRVUZCUVVGbFRuQnFXVWRTWnpSUGFqbDFORXRDWjJSUU1HUTRieTltTkRka1VVSkZWWGREWjBKQlNsTmxRbWRPTkRKdGVWTkJWMUZpV1ZKVVNDOHZNM1ZtV0dSYVZVVjVaMjFMYjBsaGF6WmpjV2R4VEZWb1ZWSlZVa1ZXVmxaVmVGVlNSMEZ0V1hGcFlYVmFWVEZaZVhCeVQxbE5WVTE0VFVGV1RXOXpTbkZhWjJodFNVTm5XbFpPVkU1emJHUjJMMnRXVWxoRVZDOHZaQ3N2WlhVM2VuWXZWQzgxWjIxTlFVMUxhMEpXVmxGc1VVNTFWMnRhUlVrd09UUmxUVzAwUkZKV1RrUXlNMUpTU1dwT1UyaHBPR1p6UjB4aGVVcHJaRkJFVVZZeFNuaDBTa3ByY210cldHbHJkMHBLYXpsV1FuWkZSRzE1WVhwWGJYcHdlU3R2TVhKcmIwUnViekp4TDBGeVlVSjVRVnB2TW1rMGFXRmFRVXR1T0M5U1pFTmpVVzFTVG5sSGNTOWhWR1ZaVUVWSWJFaHBUbmd6Y0UwM05qQlpSeklyUXpkRGMyNTZSV3hFZFV0UVluTk1Ta052V1hSNVkxRlhkMGRyYURkNmNEUkRiRzVrY1d4YWJWbHZka0ptUjFaek5GTnhXRXRHYTAxM2FVWk5NVXB5T0hCT2JsYzBRWFl6TlVkNVMzZHFUbEJxV2s1S0t6ZFpRWFZOT1doQmEyY3hUSGRrTUROdmNXVTFlR281Y1dWd04zcElUbVE0SzJ4Q00yaEdhazVyYTJRelVWYzVNbFZWWjJKUFQzWk9kMlpsVldGa01DOU5VR1E0T1RScE5uaEthVVJ2TVc5VVZVTjBUMUZWV0dKbFJFWmpaRWhaU2l0bmNFUXlObVU0TUVvMGFqbFBTR0pQWVdOM1RHdDVZWGxsZUdSaGFEZzJlbkIyWnpOUWQwaDZUMU5WVURkNU9UVlpMMDEwY210cWNqbFRhVXRxWlRjNFREY3lXRGhYTnpGUlNIZGljMFYyYjFGMk5rRlljalpzZG5sVFpEWk9WRGN3TkZSaFkyRXhaRloyWW1sS1pXMUhSbEJWUTI5bE56aE1ZalJPWVZWU0x5dDRLM3BJUldJeldXOTFObEZSZW5WQ2NHRkZVSFE1UnpreVEzQnFaVzVGVkRsVlNUbFZPVmMzVWtNNVF6ZDNRazQzZUhRM2MzRm5Oa2MyYVdGbFdFeEZLMEZLVmtGVmIwcFpiMEZWZVZwbk1raHFiRGx3UldoSE1XaHRibFZZU1haUFZuUkpWSHAxV1dNMldsRkpiVlZqT1daWWRYbzNhVlJ5UVhSU2NFRTRVRk5LTTJ0NVlWRkJSMFp1UlRsVE9FSXhVRlEzZDBaV1REQlNiMU5yUzNvM1FuSTNPVkZZY25jM01ESlVRVVEzTTNOTE1UTkZkbWRpYzNJMVNHSlJSRGxXSzFGNGJuZDFSQzkwZW5kaWRIbzBMekpCTkVFNGJrdENaRnByUjJWRGMzWm9lV2xKUjJOSmRVcGtWalpoU1d3eU9HcEtXakZVYTI1SFpqWk9lVXhPUVRWVlNrRkpTVUVyVXprME1tdFlRa0UxUVdOQlVVRkJjMFoyWWs1dGRtSjBiVE5pZEcwd1VHRjBkVEppWkhVeVlsazNObE5UUzBwc09HbGxOa3BFV1VKM2FFRkNOa0V2VFVFNE5FRnlkME5OWkVGRU1EUkdSbmREY21kTFNFRm9aVUpGZVc5aFNsRklLMmRuWkVGWVQwSlFaVUkxT0VwSU5GWjJkMEozVWtoNWFVSTNhMkZrYjJoT1drVkNOa0pVTUdSWWIxa3ZVVkJTYlZCd2MxQktXV1pYZHpCMGFIQTNha3hPTkZkaWR6TjJhQ3N2YUVnNGJreExTWGhOV21sWlZIRjNha1JvU1ZocFkyWkZSRFZKWjFFM1NWSlBXazA0VW1WR1ZXWnhielZrV1VnMlZHUjBNRWRpYjNwUVdVUmxVMlE1YWtaTFdUWk5ORzVhZDI1NGJGRTNXVEF5TlVwa2R6VTNiVUZGTjI1TGJrVk9kVXR1WTJkWUwzWTRlVnBtYlZvdlVFZ3JSblpEYjFkRlJuTkpTbXRTUVhwcFdWaEdNSFZKUzJOYWRqUlRSVXRzZWtaS04yRlpVekJTWW05eE0xcE9VazlhWWt4NWRETnJOMUZ4Y1hSR1dsZExaSFZWVVRodk5UVmFZbmxVUlRKeVZteFhXSEZvZGxaMlpYQktPV0Z5TmxWSU1uSXZkRkozVEZwa1YxUkxkV3N4WkU1aFlXUXlNRkZrY0RnM1drMVBOa2w0ZFRaTmJqQlVTRzlrWm1JeUsxTjZLMjFZT1ZSMk5ta3ZNRXd3V2tSWk5USjRNSHBvY1ZoRVFuVkhPQ3RPVkhsYVowMXRXVVJ6TkROYWQzaDRhV3BxWlc1dE5IWk5RekZhYjNCaVpIbFhPRmQwVTJ4Wk9XRTJOakYzZEhCcFNHSkNVblUxUlRsNFNqVnZURGRHVURKYU9HTjVRa2RqYkVVMGFIQTNWRlF5V201b1RFaFVNazl0WldSUE9EVlliRE5QVkhVNWJtUkZaVFF5T1RScU56QnlUemxFUmpZdkwzYzVOWEEzZWpNemJtWm1PVFYyTkVNdk1qRXZhemN2Y1VndlZtWXJjQzlEZFZSQlExcEpTRWRaUzJOUllVZG5XblJCYjJGQ01UQkRabTlIZHpSTWVIZGFVbWRpY2tGelYwSTRPRU5sUlhkVE9XZDZia0prWldwWlNXOWhlbEY0ZFdock9XbHNOVWhZSzBwRlZFMVNhV0pOVm5odVF6ZFBTSFZtTDBNdldFbHZWMDFCWlU1d2FsbEhVbWRaU2xKblEwZENaMXBZUW0xWlFVaDVhMEZGZWtGNVRVRkZVWGRCZGtocVlXcGFSV3hWU3pGU1JrVmlXRGxsWmxkdWFIWjFiSEZFWnpkb05YaGtObVJZSzNCRGNGTkxTVkJtVldvd1VVODVPVmRQU0dkUGEyWXlNblFyTWxnMFFWQklRa1ZxUlc0NGRFZ3dSR2REUW13MmMyaDNNVFY1ZUhkcVNFeFBRVGhrZGpWRFZEUkdkbXRYVDBWc1lYQkRlbmRDT0c5cFp6ZEpZMmRZWlZKdVkwRlNNMnRTTWtFMlpqUkZkR3RNTDAweVl6UTRRUzgxU2xCQlVEZ3dMM0JaV2tac2RHaHRhRmRyYlcxWFMwNVFOVkpSYUVWbWNWWlNibGhrY2tOcldGcENOa2RPWVhWVGNESnpWMFIxYWxCdmNGWldURWQxYmxaS1luZFVhRm80Y0hCeVUyRXJZMUYwWTJzd05XaG9NMmRuUm1wS2J6VnFlWEZNY210dWJVZEhaRU5YYWtKdVZsZ3dlSHBHZDA1Rk4wMW1aa2x2Tm5SemVHWXdZU3N5V1c4MGVIVnpNbHBhUmpCbFZta3JiR2REU2xoTFVsVXdNRTlHY1d0RlMyNXhlamMxUkM5VWNFNDRUVE5aVm5KbWJWWjRNV1ZzUmpGbFVHWjNOWEYxVFVkd00xZFlOVTFNVjBwWWJuUkpkWEZyT0ZrM2NVdGxWa0ZqWVhZdmMwdEJUa3RoWkdWeFFqTlBPVmw0ZWpkQ1pXdDZSM1F5WVU0d2NUWjFlV05CUmxkUVYwUktRVUZDTkRKdFZFSkJORWxEUVZGQlFYZE9hell5T1daYVpHMW1ZbmwwWWtRcmJYTTViMEpyYUc5R1JWaHdWbFZSU1ZGblJsbFhSblF5Ymxodk1VdFdZbW94TlRrclp6QlpUa2RVV1dsR1JtcDRhekpaUmtSR2JESnZlRnBqSzFsMFYweFNhekpaY0ZaaE9WcDBNa3hTYkRJME5XUmxMMWxrVDBoUmF6WjBhVXBWTW1aUFdHSm9NRFZrY1U1WE0yWjFVRmhxTURWT2JVeFdNaTlsWm1acU1EVmtkVkJZTXk4cmVHTlJiRXBMVjJ0YVYxUnNOVUpWVld4YVVsWldUbGRoUWsxSVJHTm9hRkZCUVVSQlpsUlBNU3MwYlRGaVltUlVUM28zUm5SdE0ySTVhbXd5WTNNMmRWTXJSMGxPUmprNE1WTkVUMnR0THlzclV6RkNhblpTZHpGTE9YZDZSMlpTTkZobk5EUlhPRFEyV1dNeWFTdEhWVkpNYmpJM1ZHMVJjV3REVUV4dlZYVjFlVXhEVmxneWRUWmtXbkpUVERoQ1p6VmFaRTR5WWxscFEwa3pZa2xyTUdGa2VVVnRNV0YwS3l0dE1sY3JOalExTmpjM2Eyb3pkM2xGVDFCUVpraE5WVGdyT1hOUFMyd3hNVFUxTkRVeU0zRnhXRFEwVERKUVVHeHRlbTlVWVdORWJXTlZTM3BHZERGeWQwWk5NSEZXY1ZaVGJGaGlhMHRJWWpkTVF6Sm1SRTlaTW1FeFNXWjZMM1JuVFVZNFRFWlJORXhuZDFGQ2FVbEJRVUV5UjFkR2RESXpZakYwZW1aTFluQlBSWGxzY0VkV2F6VmxVVlpHU2xkVlZsWlVXREU0UVN0U2FHMWhTWFJpVWpGa1VGZ3dSRkY1VG1wRk1VMTZZM2QwVEVzeWMySlhlblEzUWpCamJscDRaRmhPTTJOUVZIazVka2d4T0M5VFVubGFMMFZNT1daR2FHTm5ORU56UkdkMWNXY3pRMWxDVVVjMWNsTlBOMVpXUnpCSVdsYzNiazkwTTFCWlQzaFZkWE5aV205bVdXMU1TRzV1TnpWTU5FUTFVSFZNZUdWTVNtZHFWa3RtVTI1cVNsbGtaSFZIT0VKd2RtMXJTMWxUYXpoRFpYWnJaWGRUWmt4UVJrbFdNazlFTVN0dGJVSTNRbXBqWnpCUFRVWlRielpwWnpoRFUzWm9iV0ZyUzFsVE1YTnJUekl4WWxsc2RHVXdSM0Z2ZG14TFdtOURaazU2ZVRaUWFUUmpXVTh5YkZObmF5OW9VRmhVWkVwMVpUUXpUWHBrUXpWalZWWmlOVE5ZV0RoYVpEUk9kMkpPTlhNMGVHdHNRM0pXVlZob0swaGpTRE5sYjBWSWVHWTJNR2N2WmxKM2JtOUJjVEZ1T0djeU9XVXZUM2N3TXl0VlZFSkRaRzFrYzJ4ME5YQmtlbTA1TmpGYVpGaHRVRzV6VDFkcFQwWkhaakZxYlZaTGQwZG9TRGRKZHpkVlNHbFhhbUp4VkZvMldETnplR1ptVldsclMyUkhUVVJIVTA0MWMzY3JjSGROZDNReWIzWkNiVlYwTjAxb2N6RnZkVXB0UlU0M1RubFFlWEIyVW5aelprOU5hVTVFUlRCQ09GZFZjbEJuUVQwbktTQm1iM0p0WVhRb0ozZHZabVl5SnlrcE93cDlDZ3BBWm05dWRDMW1ZV05sSUhzS0lDQm1iMjUwTFdaaGJXbHNlVG9nSjI5MlpYSndZWE56TFcxdmJtOG5Pd29nSUhOeVl6b2dkWEpzS0Nka1lYUmhPbVp2Ym5RdmQyOW1aakk3WW1GelpUWTBMR1F3T1VkU1owRkNRVUZCUVVGUU5FMUJRa2xCUVVGQlEwSm5kMEZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQ1JWVXdiRWhCUVVRclFrRkJRVUZCWjBGQlFVRkpRVUZCUVVGVlpFVlNWVmxCUVVGSFZVRkJRVUY2ZDBGQlFWTnZMemhxYzAxU01VSlFWWGRCUVVGdFVVRkJRV0ZKUVVGQlRsTnNSR1J1S3pGSVZURldRMEZCUVVrM1FVRkJRbG93UVVGQk1GRllNV052TXpBNVZFeDZTVUZCUVRaTlFVRkJRVlZCUVVGQlIwSm1aVE5pYzFreU1XaGpRVUZCUkhSM1FVRkJibTlCUVVGVlZtdFJTRXAxTVdwa2JsRm5RVUZFTWpOQlFVRkJTRUZCUVVGRE1rSnZjRVlyTWxwM1dqSXdRVUZRWkUxQlFVRkhSVkZCUVVSU1dqSmFTVUk0V2pKR2VtTkJRVUU1ZEZGQlFVRkJTVUZCUVVGRFFVRkJRVUpDYm1KSWJHMUJRVUZaZUVGQlFYTkVTVUZCVlhWalZrbHRNVFJ0YUd4WlYxRkJRVTFxTkVGQlFVRk9VVUZCUVVSWlMyVTBWVlZoUjJoc1dWRkJRWGxVUVVGQlFVRm5RVUZCUVVwQlpVdENXbVJ2WWxoU05FRkJSRXBWUVVGQlFrTmpRVUZCT1hkUlEyOXZja2Q0ZGxreVJVRkJUVEUwUVVGQlNHcG5RVUZDTjI5dWVHUlBWMkpYUmpSalFVRkJNVkZuUVVGQlFXZEJRVUZCU1VGV1FrUXhlSFZaVnpGc1FVRkVWa3RCUVVGR1VFVkJRVVZLYlRsTFVXTktNMEoyWXpOUlFVRlBiMk5CUVVGTmRHZEJRVWxHTmpGMWVERktZMGhLYkdOQlFVRXZWMEZCUVVGRGFFRkJRVUZ6V0dvNWFWUndORUZWTTAxQk1IY3lXVUpSUmpSSVVHVk9PWFIxWVdkcWVteHdkWFJpUVM5YWNuWnVOMXB2WmxwT1YxcHFla3MwY0ZreWNVdG1lbEJVYldZclREVXdOek5uUVVJNFFVUjZVbmREUVU5RmIxRnlVRXRWTTJaSFYwdHRhMmhFYUhONFEycHBlRWQwWVhoR2N6SjRSbWdyZWtadFFucElhRXA2UTNSR2VrZHhiSGhZUlRGMldXeDFaRFJzUXprMGJEVXZOR3h5T1RCQlpXNVBTVUp1UzB0Q2JreENTbTVGWkVwdVJraEtibEJCYkc1TlRXeHVRbVYwYmtsSlpXMW5SVFZaYWtoSlJURTBVMWxqZEZCT01saHBOMXBLWW14b1RpdFRjSFpaWkVaQ1FYYzRSVUZFUTBKVVUwNHZNVEpFUVhoNFMwNDJWVFZSUkhKd2FFdEZlVkZtTVdWM2RHZHlaWGN6WVZjclYxbFFORFZqU3pBNFFXVkJSekZXWjA5UlNrMXpWMUJXYlZac1ZGaHlabGcxZGtabU1HWktkRmxqZWpaNmRDOXlNakpRVm5KNk1tSmFkREkzV25ReU4ySlNMeXRUY0dsMEswSmlPRlJGVDJabWEzVmlaSFl6ZFhwTGNtaG5XVUZGTVhodUwydEdkMXBDYUZsNVlXbGFaVEk0VG1aV2IwSjNjMEVyVkhkRGFHMWhiMUZ3VDBJd05HUnRUVWRVZDNkSmExcHFRblZqU1RBNFpGQllRalpDZGxCSWFtZ3JWRkZsTWpSTlZVMTVWMHBqWWxCNllVUjJVMkkyYld0TmJUVnJXbTVqUm5waGR6WkNOWEZuU3pCVFJsZEpiSEZ0ZVdGS1YzRkRTekZVTldKQ1ZuRnRTbk51WVc5cFlrcFBjVXAwWnpKV1ZUSjRTR0poZG0wM1pIRkNVVFJSU0hsRksxRlllVWNyUVV4NFJtVkpZbmhJWlVsSWVFRXZTVmcyYUdKcldHUkRjbmRvTDJ0RU9HaG1aMGc0VWl0bGFsSlBNMFpIT0hZM2FVRjFSbTVqU0VWQ1JHMHZlRWxFYUZBdmVtRk9SVlZYTmsxT1pHOWlWbEJ3YXpCMloxSnVSMGwwWldkM2MxbHRNMUZzTDIxcVlVSm5SMkZaZWtrdlFWVjVSVkZUTTJwa1RWcFdlRUZoZEVSbVlWRk1ibW8zUlZsa1NVRXpUMHA0WkZKSVJWTmpTVUZZUzFscGRHeFpRMUJRU0c4dmJWQjVXVGhDTlUwNE9UVTNaRTlJU2xBelNFUlJXRVkxU0ZCRmVqaHhablIzZWk5aFVFVmtPRXRaYTNWQk1ub3ZkM05IVlVSeFRrOXVXRnBJTldobWRITlBlR3BLY21ReVlYTkpaMkkwVGxSR1RYVjFRMDVKV0V4VGMwSXlTamQwVWxScFpHNURaRGRoVG5wU1JFWjBjWFowWWxOMGMxQXJiMmg0UTJsaWRGcFBOVzV0Ym00eU5sWmpNVGx6TVdSd1RuRlFabUY1UWpOcFVFOU5kMlZaTUN0NVdqbHFlamREV0RKTGRWWjFVMFZGZEROSFluWlpaU3RJTms1WVlrbzBha1ZtZVRaT09XUjZha1pqWVRNM1FXWXlUVGhhZGpkRkx6SkVlRGhxUjNwWE1WQXdWM1JpV25Sdkt6Wm9aR1pHVnpCak9WSlNZM3BLU0hKNmRGSnZhR3hhU0RGWGVIUnBTV0UwVG1WTmR6Vm5ZbTk2Y1VNMmVIcFlWUzh4WlRCWGVUZHBXSEJvVFcxUE1ETkVOVUowU1d0aGRHSTRVWEpXVFd0dmFUTmhXalVyYTJvdlVrSjRRa2hGWTFOc1QxTmxZelJUTjAxSk4wMTJTVkJUTDFGSVFXdDFiek5sVGpsc1VXWXhaRlZNUW1VNGJWbHliVGh3VFdOa2VFZ3ljR1p2VVRsdWFVbzRMMnBFVHk5WlNTdFNNMFFyTVM5VFpFVjFiRTAzZUVGbWNWVTVlVzVwT1hOT2RuRlBPRkptWW5oelIzVmpXVFo0WldadmMzWjViRVYwTjFoT2RXZ3lXallyUWpKa1dqSlVabFl4VUc5cmVXRk9XVmh2WVc5b1FubFNNWGRKTTNnd05EbDRSWGhsYkhWeWJIUk5XRGc1VGsweU0zWmhkREp4V2tSaE0yZGthRVJhT1VSaGVDOW5jV1YyZEZJNU0wOUlkVXRRT0dNME5uWmphV1UwTURsM05WQjBjR296UlZkTlZqZHFjamRJYm5Wc2NXbHFkVGh6T1hkUWNrZ3pSRkF5UzNabFUweFlXbloxVUdaalNqZFpOSFZZZFUxT04ybDJNbEJ6TnprMFVFNTFTbVZwTjJ4NkwxcHlUbmhGUW1aR1RHVXdUamhpWW1OeU5ESTVTVmhzUjJobGFqSmpOMWN5U0M5TldsQmxMMkkwZFV0dlMzVTBZVGszWWpONFVEZDFNMGRhTjNndk1sazNlRzlRTUZoUWJGaFlZbW8wYkVaNFRtaHZVVlEyV2l0NVpHSklUVE51ZG1KdFJHUXZTR2x3TjJsRFptZzFOemxGZW5oNlVsWjRabGREWTNoWWFFNTJhWFpsUzBRd2FXVnVaSFZRVGxsbWNFNDFTR05YT0Zadk5TOW5XWHB1YzFNNVdFeFBjRGs1U3l0b2VWTlhSMFUxVkRONVIyWnFLelkwTDBZMWVFTllMM1V2WkZFMFpEQnFMMjlLWTNkNk4xVTBZa2hyTUdwVU4wZHViRFJsUTFrMVN6a3dWRGhIZW5rMVNVaG9TMlZTYVU5U01UbHNkbGhRYTI5bVNrZGhUbVJHY1c1dVdYWnJUSGhDTWxabVZtNDNWbXRxZGtscU0wRldLMGt4TVZOU2RuZzJlRFJ5U25wbE5HdHVTbWhOUlV3MVIyODFOV1kyT0hCb1ptZFhWazlXYTA5clJHNXhWamRCTlRac1ZuZFdaRmxJUWxWemNWQTROMmRyY2xjcmRYcGFielZ4V0hCV1puRjJOVm9yVTFaQ1R6TkxSa3QyZFVWdE9HbEVPRGwyY2tkNmRGUTNTakZhSzJnMVIzRnVPUzlhVldaTWNWcElWRlkzY0ZNeldISkpSMU5rYm0xTWFWaHVUSFpHZG1OWVZEbFJNVE5WWldSNE1tMVhhRlJxTVU1bVp6QmtVRGhzY1RodlJHZGxkRGxDTDJsQ01YVXdTRnAxWkVzeE9IQmtTV28xWW5WTU9UTkROakpEWjNWYU9EWXdURzAyY1ZaMVRuVjJWazFrYkVac1p6SlpkVUU0WjNKd1lYVnJNVEJ2VUM5MVRrSlFORzFqSzJOclZGWktLekkyYkZCcEt6UlNTQ3RoZDJSeFNFMU9PRE4yYUdFNVYyWkpLMlUzT0VkVWVVRjFNMVpVT1RJMmFVaFBOa1psWm5KTVJsaHpkMVJRUzB4NFIzWk5hbVZVZERsSFQzSTFhMjU1VlU1VlYyRmFjM1JsV1dadlNqUnVZVFlyYms1WE1uQmFhWFpTWWtsT1ZsZzJTRXR2WVhKek4xUXJURGt2TmpScFpubHBVR3BXVHpKVVRHUm9UemR4V0VOeVQybGhPRTFvY0VzelZGYzJSbVZ2TjFWTVpUSnZjV0phVEdacEwyRjBOQzgyVERGRE0ydGtTbFI0U0NzeWVHVlNiRFJZWTNkblN6aFFWMmRhZEhGS2RXcEJlWGxCWkhOVVQxSkZaV2xQZVhneFVqaGhVM1l2WTNVd1R6bHVaU3M1ZWxCeVNqVXdWMlU1V1RVMGR6YzJiblpOVEZGRlRVcHRXVk5qZUZBNVZreHdaMnhrVUhKRmJqRktiVWwyYjFGWVJ5OVFWeTl2ZFZadmVFUnlLMkpqUlN0UFFXaElMMEZrZG05bVREQjJXRWRpVjB4a1JucHBVbkV4YjFFM2NTOUpNamhYZG1sNFRqaHJVR3hPT0V4QlNsbHpOMlphUW5wQ1NHMDJUVkpvU1N0SFRIbEJUVmgzY0daUlUzTlpRazFGVHpSVk1uTTJWVUZGUVVOSk1HOWtkVTFLTTBWdlVYaHNXRVpoYUVOVk9WSm5VRXd6U2xCT2JXWk5TbVJ1TmpSNFlVNUxRVlZoTTBGelMyNUZNbnB6UlRCWVNVcE1UVkZRV0RSdWNrMTNiek00YlRSMU4yTkVabTAwV0VjNGFHZFlORWRLT1doT1lqZEZOekZwVUhaTVJUUjNUVkp0WVhoNGJYUnFUblJqU2twd1lucHlhRVJPVUVaV1QwcFRWVEpRUnpSNFlWUk5lRkIzYUVwc2MzQjFSWEJOT0UxemVHNU9iWEZrYlVsME9FbHlkM2wyZUZSWWFFNWxRVElyYUdSSVdtcG5ObVkxTlcxdk9GYzJlVkZ2UkZFM1QxQlFlazVOSzBJMlVGUk9iMUJvUTJNM1JWZFlaMVJJTldwT1dtZ3ZiVWhuSzJaRGNEbHFPWFZZZDJ4aU9FRTNiR0ZhWmtoblFuWk5kMFJqUzFwWVIwbGlhQ3N3VG5NeU4xcDBNamRoWkZKWE0ySTFjVU15WWxobU1FUXljbUowYnpGdVlrZDVlVUk1WmtKRGQzcEJNMlJxZEM5RWNHMVpNMUJ1U1U0MlltTXZkblpLUWpCaU5FbzVMMk5CVFRoRFEyRlBTVzF5Y0ZsS1p6VjVia2R5UnpJclMzQmlLMmhpYWtOWGVsbGlLeTk2ZVhodk1qUTRiSE4xTjJWcWNHcGxZa00zYzNwSFYwWXZkRGQxYlV3MVpYWkRMMGhOVGpGelREaHFNVzluU0dSVVZIZEtTVkkwYVhGdGFtdDRTRzA1WlN0UGFWSmxhRXBLUWtwRFpsWXdUV052UTB0SFRHaFVVbWxLV2taR1MwRTVNazF6V1dkcE1sQm5VVlJvVEZwc1RrWkpSQ3ROYzI5UmFFOHJRa3BDVFdwdFZUQXdVWFpGZVhscVEwMDNORVZWYTB0MVZsUlJWRUlyVkhKTFFVbE1kbWRVVWxOd05WWk9Ta05RTVU5emIyZHBkVUpDUWs1SGRteFZNR052UVRBMmVXaERSelJGUld0Tk5rSldWRlI0YVVGNmNrdE5TVGRuVVZKVGQyRkdNVTVFVDBWTVRuTnpSR3N6ZERkdEwyVmhiemhXTVRSeGNqVlJNM2xxZG14bkwwcEtObHBFVUhrNVkxZzFkbHBpVFhRcldHNDRjWFkxV1M5NU9TOHJNV3ROTjFOVkwzSk1WVUp0T1hWSVVGaEVhWFJTY0hOMFkxZFRkM0phWWpGemJHUXhlVlZKTjB3eVpWWTVOWGhoYzFwaWJHSklhWEZRYkRKbVMya3JWMVk0YlZvMWNqTjRZMDlxV2pOTVYzaGhURGh5V0RWaWRubFpMMjFzTDBZM0swdDJMeXRZT1habFpXTkRUMlpYTVRNMlUzVkVXbUZUVFd3MmEzbFhlR0pMWTJ4cmNtMHpablIxTjJwVU4zQlVPV05zVWs5NU1GYzFURzVtVEVFcldHZzRiR2cxT0c0MFNIcFBPVzV1ZVc1UWJEVm1TM2tyVnpFNGJWbzFjRGQ0WmxCcGNXWnNiemM1UkhScE9XNHZNbk5tUm0wclMyUXJXRzQ0Y1hZMVdTOTVPUzg1TVZGcWNFeDZNRTlZT1hRemJEVkRMMFJhWW5oTmJDOXRlVmhPWWt4a2RHdDJlQ3RWT0ZsQlRFZFdjQzloUVZoMWN6bDROWEUwV1UxMlptNTJjRnAxUVhWTVpXdHRibUZYVkU1TFZYUllZVk55T1U1d2FpOW1aRmxxZWpOWFkzYzRNVU5UVW05NU9EaDNRM0Z0YTJ0WE5VZHRWMWRXTTFKNlRUQmFlazB5Vm5wTk5WWjZVRGRrZWxBMGVtZzBhMVJtTld0SU9FeE1VV05uVkZwSmIwTlBaak5oY2pGcWNqZ3pRU3RSU200eU4xcDBNamRhZEUwM1FVbHVSekpRZG1aaVdXNXViRkl3VjJSR1VsZ3JXbTVXV0RrMmJpOWtkaXR5VlhCcU5HaERZblJYU1dWeVF5dEJlazVXZUZWdGNteEpUbU5STTNGVGJsRm5TMmQ0VERGQ1RGWnVLMlZVTW5GbmJrdDFlV1EyVERKS00zQXpiMjVaYm1WeWNtZHFkQzlLTkRSd05XNVpWRXd6Y205YVJpOVVRVFV2ZW05eE5GWkJUbWt6Y0RSamJqWjFaM1pPTWxBck5sWlpjRmxZYTNoMGFpdHNkbWwwU0VJeFZFc3JUMWRZTmxOWVpYZFdRMEpqYm0xWlZsUk9XWGxFVDBwQ1JFOVZlbTExTDNneVJuWm1LekpNYkM4MVNqWlNUekJrZFRaNlZHNW1TbUY0YmtaeFMwdGhSMVZOYzNGd2IwcEpjWEZ4YkdoTFUzUnZiM0JyVjFaMFNrdEhNblJ3Y0RST01YSkhZMFJrWVhscGJtczJObUZMUTFKaWJuSnZXbFJXT1RsTVQwVk9Za3RSY0dWclZWVnpVbEJtUzFWTldsTjFUR0l2YVZjM0wybGxTQzlwVWxoNGFHY3dSMU5aVjJKQ2FFNTBTa2RqTlU5T2MySkhWMWx4YlZkaWFHMVhZV0p1T0dKSWEybHdTRWMxWTNoVWJrOXNVREJ5VEVFclZEUkpTVWt5U1dsSllXdG5Tbk5QUlRsbWQzaHpWVXcxSzJvNGJETnlNakV2U21GWmNsWlZTVFZoUldsV1FYQmlTR0k0UWpCTVEzZFhRbUpMYUVKWFNDc3lVbGR5UVc0MlZrczRlRmMySzNveGRuUjJVMHh3VGpkcVRWQTRWRU5RT0VOcFVEaFVhRkE0UTFKUU9HWlNkazVSY3pGVkwzWnhXVUl5Y0RRelZ6Sk1kRmd4ZFd4TlVHVjRLM1poTmtobE1UVm1ObGh6VjNFeFJrdDBWbkF4WVRGTFZVSm9ha2RIUkZCTFdYcEZlbTF6ZWtaaWMycFZOM05xZGpkNWJHaEhiMWhOTlZKak5XRm1kRXAzYVhadFMxb3pha2xZTDBWM1UzQlVRbk42ZW5OeWJGUmFVRTFqYWpkemNWVjRaazA0Tm5FMlkySXphVUo0T1hoV09FTXdkamh5YVRkVGNqZHFTbG8xZDFZNFdETjJUWGxVTjNGeU5XZFdaRFI1YkRCT1VDOUpjVlE0ZEZsNWFUaExja2RDUVhJNGJHOVpkRVJhWWtoTE1rZE5ObFphY3pWWFF6ZzBNa2NyWVdOVVRIUjZSR2d6VDJSVVlsTjFZMFpIVHl0MU5GTlpSbFpPYTJGMmVUWnBNM05qTlU5VE0wWXlWMkZ4ZWpCa1MyUXpXbUpvTjB4R1RWbzNMMnhQY0daM2N6TlBUalZVYXk5c2VrZGlUMWxLVUZwU2NXcElTMFpvWWs5TUsyMHJaekpxWXpVMFZ6SnNObnBtWm5nME5TdGxhMUpETms1bVN6UjVUVXhKTjFOS1VHbFFkMjFqYjJSWlpGZzRUelJIUVU5cFkyMTRUVzh6VlVwRk1sZE9UbGRJZUdZck5sRmFkalpUVGxkb1QyczVjRTV6TDIxaFZ6VlpSa0phY0c1cmVHb3ZNbEF4TUZWeVZEaFVOWGxrWVVwUFZUVTNUekJHYldGeFVFNDRWRWxzVm5CeldYRXdNbEZwV0dscmFFNUVVSGxWTlc1blIxWTJWbTl1ZFVsd0swODRZVlZ6WkVkdVZtNXVVM2RWZDI1bWFHZ3ZRM3BwUkZoUlFrMHpNRVprZGpVM1JFaGxOaXRyTmxjclptOVlTa2xsZG1RMmVsQk5abnAyVFVOTWRrMVVUSFpOUzNKNVpsZ3ZNemh0ZUhZelZsTkZSSFZhU0VSMVdrWnFkVnBJYW5WYVNWZFRLemt6UmxKa05Hb3pUMnN4WW1GdFpYWmpVRWt2TjFRd1JTdGtlRTk0WjBGQlFVaG5RbGt5UW1oTGJVdGpkMDFFUzNkTlJGVjRVbFJDZDAxRVowUmhSVm8wZUdwVlIwa3dXV2RKUTFacmQwVkhiVWxHV1VGalduaGpabFZLV1hwcVFYZFFSQzlRT1U4M0x6SjVUVmhEZUhGcVJsVkxSRWw1VkZGWVMwMHZOVzR5WjA1VmVVRjNRV1JqVVRCNVpVRkhUWGxOVjBKM1owRkJRVXhFVlZwUlJHTkxibXBvTTBsRU9WWTBTVzVJWlVoNVJFSktSV2hETVdrNGJHOUJUM0JIUVM5cFRXd3ZZV1pDUVRSWE4wRkNSRFJxT0VSQk1FMXFXWGhPVkUwelRVeFRVM0ZZVjJGTE1YUmlUek56U0ZKNE1WUnpOV1YyU0hKNk4zTlBia3c1T1NzdlVIQjZZMWhXTjBWblVWQkNhRWxCUVVGRFFWZDFlSFF5TjFwMGJsY3hOekpET1Rrclp6QlpUa2RVV1dsR1JtcDRhekpaVGtkWVlXcEdiSG8xYVRGWmRFZFVXbWxzVm5JeGJUTlpkRWRZWW1wc01UYzVhREEwWkU5VVdXbFdUbTU2YkRJMFpFOVlZV3BXZERNM2FqRTBPVTlVV2tNeE5qbGxabVpvTURWa2RsQXpOemxEVVdkTFExbDFTV2x2YkV4VFJYQktlVGhxUzNsVGMyOUxhVzF5Y1V0eGNHRXlhSEZoWlhadk5uWnRibTk0ZDBGSE9XdGhUVkJ3T1RrMk5YUTBNRGMzU2pKMllrNXdObmgwYlROaWRHMHpWbUowWkZkaVl6RXljM0poZEM5UE1uTTRWVFpUYzJNMWF6VnRla05hYlhwQ1ZtcEZSekkzUW1SV1RVVlBUVlZHVFhoRk4zTkZkbXhHWTFkSVJtSjBSVkZsTjBGWWQwZzBZMmRDVDJNMFUwbHhkMFpXTUVWWldHaENibVEwWTBSck9EUlJWbllyVFVGWVpuWkNTRUZCTjJsRlFUZHFRMGszYVVkSk4ycENSVGRwUmtVM2FrUk5OMmxJVFRkcVFXazBhVVZGUlVsU1oyaERSVmxhZDFKRFFWTlZXV2hIUkVsQ1dYaERSV1ZEVldsRmFtdDBTV2RuUldKTWRVMUxjblZKWVhKcFRsWTJkbU5CWjJwRlZtRmtRVmRuVFVwck1rcHRZVlprYVZGbU4wRkllRE5KUzJ3elFUVkpNbXRZUWxWVk1UQlZOalJEVVM5b1NqZzJTemg1U21FMlQwdExWRU5ZVkhsVmQzbG9lWGQxY1Roc1JEaHNhVkpYVlZkbGNVNTVjV2xJU2xGV2JGWmxWbFpKTVZaWE1WWldlbFpYZHpsUlZYUldhSFJXUkhaV1NIVlhhMEYwVW1oTVlsZFhWVGgxYWs5WGFGZHlZWG95Y0RsYVdsYzJablF4VVVzd1NrOHlZV2M1TVZKUFIxcDZNVUo1ZEdweFZXTkVlblVyYzFWNWVFOUdhemhNUkRaWFFVMXphSGw2U0V4TFkzTmFVelpCYkhoQ1NtNTFWelowWW1FeGRtSlhhblJoZFRGb04xY3daRGhFUkRFNE5WQlFOM28xTHpsUWVrcEhNa2N6UVRaaFVHaHhNRVV3TjBGeFJ5OUdVRGwxVVRRd2VXVkpjakJYSzNwNk5pczBiM3B3UlhsMGMydHFTMDU2U2tSeldTOHpiMDAzV0VsWk5WWlVOVlpZU3psTGJXOWhibm93UjJGd1IzRnhiSEZ4WkhGb1pIRjBPWGwyT0RkdWVpc3dSSFJ5VTFwQ09WQk1WalI2U0VkRU5uRk5PQ3NyVFVodVVYSktVRGRFWXl0MllYbzVWRm81WW5wNE9Hc3JPVUoxYkRKMmMwNTJjM3AzU0RSTVdIbEZNR1V5UjFsMlRDOU1PWFpoTHpkSUsyRXdlRFUwYVUwck9FaDNjR2MyTjNScVlqWTVablp1ZERWTGEzbE5hR05hUjFkNGRHcDNXbGRQVmpoWldXc3lNeTlCVEZrdllsZ3ZaMGt4WTNsSGJFOU9SV05oZDNCSmJFZGtOazlFVldNeWIwRk9aMlZtWkhkNmNpdEdhMDlCU0VkU2JVNHhNSE5QYTNkRmREVTVZMlkyVUdZeU1tWnJkUzl3YkM5WFJGUXdSekJQTDNKS0wxWlpkbG92WlZjcksyeE9PV1ZpTm1zeEt6Wk5XVWg2WjBkamVXTjBPRXhSY1VrMmNVdHlZV1JTV0dwQ1dsUlFMM1JPUm14TkwycDFaVXRvVjBzMVYwRXlTWFJtYUUxNWFFdDRSVGt2ZUZsUmRYaFllbWRLUml0SFJrZ3dhbHBSTTJsS1JYbE1kelF6ZDI4dmFGQm9hQ3M0ZUdveWVDdFFTVk5RT0VGSE5FaE5OVzFDTWpWblNqTkthRXhpV21sRkwySkJSRk0yTkdsWk1VbDNhWEp6VVVVM2EzZENZbk4zYm5GamVIaFdhM2N4TmpSSmVYVjVTVVIxWXpSSmExRkNUVWhNTjA1Rk1tcEZXVmw0YVVGWmIxbHFOaXRFV1V4cVJWZHpLMVZhTjFsNGVIbFplbk5UZWxCa05sQk9TV2hCZWxwblNXbGFaMFZ4V21kTmNWcHBVRFphYUVKeFlXSTNXbkZFTWxkaE4wcFBXbXBKVWxwblJWcGFaMDFaTjJkQlNscG9jVlp0ZHpsTmFVbFpNMmxEY0ROcFJ6VXphVUpzTTJsR01UTnBSSFF6YVVnNU4wRlVTa0ZWYkZWNlJURXdla0YwTUhwRk9VMTZRV3BOZWtWNmMzcEJjbk42UlRkamVrRnVZM3BGTXpoNlFYWTRla1V2UXpkQlowTTNSWGRGY1c1U1oyWXJhbWhqVmxwbmFWWmFhWEZXV21odFZscHFkVlphWjFKWFVrTnhiRnBwV2xaYWFGWldXbXBrVmxwbmVsWmFhVGRXV21nelZscHFMMWhhU1V0WFFtSk5jRzFpVFRSWFlrMXNWMkpOTURKaVRYUm1LME4wTDFGNGNXczFXaTg0YVM4cmVVaGtkWHBCZW5WNVJYcDFla00zZFhsSE4zVjZRak4xZVVZemRYcEVMM1I2UVVWa2VVWkpOWHBPVFdSM1RFMWphRVY2U25wUVFqZG5TVmwwVTNOVFJXSnpVeTgzVTFabWNHZFZaRFI2VFZwemQyb3ZORTh2TDIxUWVVdEllVUZWWkRGNk9WYzRlRzkxTkdGd1NVbzNTMGx1UkVwSmFITm5TVWRUYmtSYVMwTTRTMDFPYkhOQmVteE9RbXRzYnpGUFlYcFZibE40TW5veVFsVTBNaXN6TUZKTE0wVlBOak5wWlVZemFWSm5VWGhwVFVWTldYbHFRMGROTkVsNmNFTTVibmwwVUZOVU1UWlJOU3RXU201S1ZDczRhRk5rZFZsbU4yVkpRM1ZrUzAxTU9UTkpMMjVsYWtZdk4yUmplakZHZVRjd2EwRjRXQzlXTXpscVYwdHJObVZpWmxCMldpczFZbEJ4TVhSNGNscDBhakl6WW5Sdk0xbFVkVFpyY1hNdk5YcExNMVJrZGxkRlV6UlNSVk53VWtWVE5tcEZVMHQ2UlZOaWQydFRTbkZyVTNGSmExTmlTMnRUVEVORmRVWm5XRFI1VnpZM1lreFhTbFJ2TDFaNWRuSTFSR0ptTkU5TWVpdFJZamRvZG1sSEt6QmlNbUpSSzJWQ2R6ZEVibkpUVUhCT1VESklaSGRYTDJ0M01XZHRialJNZVZwbmNqVk1NV1JLTDNoNE16UmpkMGRaWTA1S01EUmFRVGRwYzBKdFNFa3lXWEpxY0hFNVQwZGFNalJpWnpWbmFFMXRRMGcwYlVGUU5tMURkMFp0U25kS1RrazBURTFLWjFOaVFYZG5lRmw0Um5GNGFVUk5OMFZITkU5WlVVbHplREpTU21oMFVuQm9XRkphYUZKcGVrWklSVzF0UkVWdFdrZEpUbmxQVVZsRldXb3dabWRvZVZsUmFUSlNVV2w0WlZGcU1WbFJhRVJsYmpSTmVreE5VRzFUWVhaNVRFeEdRMUJpTDBFd05YQm5RelZ3WjJnMWNHaDZOVXRGVVVwcGIzZFFlR1ZpZGt0RVJsWkxSVlZhUzJ4Q2RYZHNSbWd2YjBaTFRYZzFWbHBxSzNGVVV6RnhjazVYYjAwdk9VVjJVbTFGUW1wTlJXcFhXVWh0YzNrdk1GZDZLMmhTWW5wSU4xTmhMelpJVGk5Q1puUTFkaTl2VFUxbVVtRmxZV2g1ZVhoQmREVnRVRWgyVW1sSlZUWmhTbFJvYkVaMVRUQjZiVUZ3ZW1oeFNHTXlXVFY2Y0hWV2RVZENWelJMU2xwb1ZYUnRSRk0yWWpGaWFHbEZia1JXYmsxQk1YTjNOMWg2Vm5KamQwVXljM2g1TUhwSFRHWk9WVTUzZUhaREwwWlJNems1ZWtSSlFXb3JjamxyT0dWVlZqQmpabmg0VDFsb2FXWjRSa2RpYVdGaWVVdDFXR2RPY2l0MEwwc3ZTVWN6YzFWVVpVRXZkall5WkZCUWMwTlFPRlJhSzJkd09Ya3ZRVVEyVFM5M1kwZ3JRa3d2UVcxbU5FMHZORU16TmtwMkswcDJaSFI2Wm14YVpFMHZORVl2TkRZdk5FUXZOMHc0WTFCdkx6aDNMM05WWVRWSlRIQmxaVmxGTUVoM1dEWXJhMnRvYVhaQlJFWkxUVVZ5TmsxVldtWm5WekUxVlV4d1JHVlZRelpGTTJOVmRHWmlOMjFPVHpOcFZHbzVWV3RLWlM5VWVWVnlaVzh4VUhkSVpXRlFOa1JPUzFwMFFsQnNVWFZzVVdGWkwxRnpkMEZTU205NGFVUk1hbXRMUnpobGNIRndka0UyWVhKbFVtWjBSVXMxUkVaeFJrZDJNV01yVjNGV01UQTNjbXhPWkVFMk5WaFlVbkIyVGtsTVUxbEZWMmN4WmtFNE4wMW1ibmR0VlVrME9VVk5jRUp3YUdsRVJGSTFSMGRTZVUxalUxVlpTMmR3ZDBSQ1ZHaEVSa3MxZEZCYVUzVmlVazlhYVV4amFuaHFTMmhIYmpWT09EQnhXUzkxY3lzdkwwZzBjelF2ZEdZd1VFTTBkeTgxU0RGUFVtSnFaRVJrVFVoaEwydFFNMU5wWTJoR01FVnBZbkpRY0djMlVsaHJOVGxFZEVzdmEzVXZhU3N2Y0V4d2JqWm1aVmhzTUhGdVN6SXdhVzVMVXl0TVZHeG1aVTVxY0dKbFUwZ3dWV1ZZYkRCalpuaG9URFl2Y0hvMlNEVjZheXRxWWpadk0wWmlObk51VEdnNVJUTnNjR1JFWmpSM09XTk9jRkFyUjJZNWJIcHhZaTlWTjB0QkwyZ3JjbTFqZG05WGRYaHJZbkZWU0d4SmRXdENOVlZ6Y0VsbFZsTTJaRWhzU1hWcGVEVlVURzlqWlZaNU5sbHViRVYxYkdaemNuSnROazlXTmpKMVRXTnRhekJZYW0xbGJqSnVPV3hUZVdsWk5WVnpjR2hQVlV4TFNGUnNZbVZpZW14aGVXeEVObk5hUW13NVNIZzRkMHcyWldZME1HWk5TeXRzWVVwbU5UQnVXa2xxWkV3eVUxa3pVMFJyYUU0d1NYcFplRUk1VEU1VFoweHZSbWxXU0RaV1dXeDRLMnN5U2xnM01IRklUR0poUTJscFQwUTJUVkpwYzBwd1ZFWkxLMnh4UkdWMVdsa3ljVUZyYWxSWmNWTmhWazVoUjFaUGNFY3hiMW9yV2pONU0xRlFaa012TldWUEwwODRRMnRZVVVWamNFWXdaVzVMYUdSTWNIbHJXRkV5WTNKc01FbG1WVU0yV25ocGRtNVVNamh2ZUM5MGNXeHZaaTlOVlN0clpuTnlkSEJwU0VzM1lVVlNlWFV5YkUxamIyUnZTRWhMTjJGT1NubDFNbTVoWTI5a2NFSnVTemRoU1RWNWEzVnJkV053ZEhBemJFc3hkRXBETldWS2NFWmhjVnBrT1VGUE5XUnBkSE14T1ZVM2FFSTVWbUp1UkRsSVdHeHFkRU5tUzBobFZTOXNlVFZaTDFGeVprMHhPRzVRTlZOMVZWUTJTeXRXTkM5SFpqZExNV1pNWVdzNVZuTnZOVEp2TkdZMVRuVXdSblo2UmpoUmN5OW5URkJPWjJWck56Vm9kRTFNZVdwbFUxWlRMM2N6Wm5WT1MwSmxUek5sVFVvNE9GVTFabHBxVkZCaWF6QTNhRFlyTnlzMFExbFpaMEU1TTJkQ2NFaHpSbVpDZEVoMWRtb3plbVUxY1ZKaVlrWnJhVEZNYzNKM1EzazFTbEpHY0dwWVRYTnplWGhKY25SUFNXeHFRbmgzU0VNNVpUQlRVVzgxV25WYU16RkhkRGRVV1M5Mk1ITmxVVGgwTTNaSFFqaGtNREpPY3pONk1EUXJSR1o1WmpKYVYzTndWVEJtV21oWFN6SjBNalpKVURWbFNVSkJSVWxCYnpWRGNsVm5hR05ITVVZMFNtbFJOVkpLY21kS2IybHBjelpXUlZGTmFrMUhiRWRXV1VFMFFYTkdUM0p4UVU5eE9HUlJNekZJY21aTVlXRm1SR0Z4ZWxkcFRraG5hbTlRVERWWVZHOWtTWEJwVmxaS1NtRTVTMWRVZGxaRlJrMVhXbVJPU1ZCdWJtZzFXQ3RaVm5CNE5HTkhjbkE0V1cwemREQk1OVE4yUjA5WFdFUXhOaTg1Y25FdlZuVlpibk5RYzNSWVptVm1MM1JNVUhaU00yTXpPRVJCUlVKbllXWjJabWxLTVRoR0wzcFJSSEpPY1ROMU1HdFRSSGxYZFhSdllVTmtRMGxKWjJnMVJqVkpjRUZDUVd4RlRHTkJhMkYzUkVsalRYcE5hM0ZUYzBzMmFtVXhZVVpSYVVGQlJVZG5VSFJGV0VSa1FqWm1kRlEyYVhBMWREQlNVMHR3Ym01Uk5qSmxNWGxTZVVwU1QxcHhTbEpHVFhWa09GbDBPRGd3Y2xFMFVuVlBjVWt3TmpOU1QyZzRkVll2VUd4dGRHNWtlblZEZEc0eE1tTlRZV3A1WkVkME5sazNSVEV3VkdONVpFOTRNRnBEYVc1RVJXWnZUVVEwV0U1Qk5tUkhlREEwVUhoS2NqWlVhWEJxT0dRMFIyTldkMWhIV1hveldsQXZiemRzWlRoa056VnNTWEEyV1dweVZrMTBZMVZ1VjNkQlFVdFJjVUo0UTIwcllYbERhSGh2ZDBkMlUzZExRbEJWU1cxQlpVRjZRWGRFTlhCRFFXaEhVa3BCV1VReWNXNUZObEpaVFhKdWNsUkxjVmwzTVdGak1EUmFWMlpSSzJaTWNEWmxWVGMzT0ZNNVEwOXNSRWRXZDNJdlpETnhiMUZOTDB3dlREVlVPVVJJVURWT2RtZDRXR0V4WW1sV1NXOHdkVzlrVDBSUlQyTllRa2hIVGxWeVZqTm9hVUZCY21kR2FVWm5kRmR3T1ZaeGExRjZNVGhZUkZOSFZYZHNWVEozV2twamIxaDNhMDUyU3pjemNISlVUWG81TUZRcmJ6aEVLeTlXTldadlVUaDZhR1JKVkM5aVVEbEJUblppYzBvdlUzbFRlVGhGTlhGQ1JWVk5VWFpyWkU4NFVGazNkSFk0VG01NVZTOXZUekJ1WlZCek0za3JNSEZCUjJ0U1VHdDZZalV6YWpka09HczVka2d4TW1VMFp6QTRVRFl6WTFCd0wzVkNOelE1ZDFvNVRraENZM1ZoUWs1aVVWZHJRa1ZrZUZVMFkxTkZSVVZwYlhoeVIwSkRSWEpHUjNCeVlURXlNWHB5UVRGSVRGUkpSa0pvTnpCd2JuTk1kazlxVlhkc2NIWkhhRTVpYVhrdk9ITTBla2hhZFhweU1YaEhTbFJqT0RsaWNsaHJZWFYyZG1KcVlYTjZOekJxY0RoV1ZYTnRSakIyVUdGMWJIWmlibFZSYUZoM1NXSXJSMFprY2xOa1NXOU9Sa3hDUjBwQ1JrbFJPRUZ2UlhCdE5WaG5OVTE1Vm5sTlNTc3hVVmRGZDBSdlFUVkhXa1VyYURkWVFWWklSbWRzWkRGelRXdEZTVVoyVm5waGRYRXlWell6S3lzeUsxZERVV3RWV1RZd1dqVjVZMGczV0U1T2EyVnBWR2h1TkdSd2RERnpkRTlXTTBad2RVaEhhMlpRV25KTFNHeFhOMUoxY1ZoelUwWm1lVTFXZVhwMWQxVXJXRVJ5TXpOMk9XOHZZMVZzS3poa1EyWnhLekEwY1U5NlZWQTNWR3RoUXk5NlJVcElTMlJHUVU5SlZ6TnJPWGhQWnl0QlRYRllRbTVtUVRRMlFqbEdkbEJNTkd4WFUyTTVOa1ZKZUV3dmFXVk1MekZZZWxFMlNGZFNNRUZtY1ZkRVNrVnVVVkZaVkhSTlEwUnFLM0ZQYW1ZeGRYWlpabTlrV21sbWRXUktRVkZqTkVGUlUxTXpNRXMwYVVOUFNXeFJRVUZDTkZScFNWSndVbXRWWkhGclNUTlhWVGRpV2tGaWVrUnZiREJEZGs0MmVVSlJWeXRaT1dGd2NFbEZhR1VyVkRobGRVdHhOamxRY1ZkaFExUnpPRGR2WTJWd1VHVmFURTVUZEdwV1VsTnFLM0ZuZWtaVlZYUXlXbkJHVjFKVk1FVnVjRTVQV21SQlYwSlZXVnBoYUd4c1duQTFUWEJtTWs1a1dqbE1ZVTB2VjFoNFJqWTJVRnBMVFN0Q2RtTk1iQ3R5WW5OQk1HeFZiWEIyWTJ4QmF5OUVjR0pUVVVoVmNESnNOVEkzVGpWVmNsQkVabWh4VkVoWE1YUm1ZVUV6ZUVaUVpHSlJNVkkyZDIxdE5tdFFiVTlETlVSclkzVnhTV012V1Vab1UycFNOMVY1TTFkdk1EVk5lWEIyY0daRVJsQnRRM05DTm04M2VGVmhlVW8yUVN0eFRXVm9NWFJyU1RGeVRsZHBWV3BTVW1KbVVuaGlMeloyUW5FeWNYb3lNakF5Tmk5WWRXVnVaVGt5VjFkdFYweEVZbkpLWW1GdGFETnpNV1F3UldVd1NrdFRWMWRUV0Vkb1NGVXZTWFYxZGpjNU1HUXZTbkJXU1ZSTE4zWkpaV0ZKTXpsd2ExQmFNM1IyV0RFM1Z5dFBNMGhhUVd4WWFFVXlWVGhZTkVGMVJYYzFSR1pFUzFwalduQkdWbmc1UVZWTVVVRnJiRWwzZUhNMWNtdzNiV1JDUVdrclFrVktUekpEV1ZGeFRXaG5XSEZxYkVkbVVVVnNTRmxCZEc5TFFreGpRV0ZzU0ZObllsRkdkV3B4VlVSVWNEVkZkM2hIY3pKSVNsZHJUMDFLZEZOaWFsaHlZVmxFUTNaWFpFSnpUVTB2TWpsTlVtazBWRUpCVkRkdmJraFZka2RyZERGa2JsSXpkR0ptU0ZkalJYVlpUV2hFWkdkNFNVdENVbGhHVm05aVpVWnpNalJyZERKVldWSlJiSGhpTkZvME1WUjRhbUZaV0hCQ1pXYzFkSFpTUlZobVJ6UXdjekYxWlhWa1ltdG1ZMDB5YVZwcFVHTk5LeXQzVG10bVNFSXdjaTkyU1dkM2RubzNhbWxpY1hNdldtSmlWVEpMVURKd2JHYzROVUY1U1ZWelFXWlRValkzUVZselNXNTVVWG9yVUhaRFYxRm5lRlJZZHpsa2IxUTRUR3BoV1M5S1QwOU5ia2NyUkhGSldVWlJiMEZQTWtSS0szWnlOR1ozZFdzdmQzZEJUWFpQYVcwcllUQXZhWGhhZUhNNFMxb3hTRWRFZDFCQlNYaHhkRWd5UnpCS2JXcGpSSFZETmpCQmMwTjVSRUV2WXpoV1JubzBRVlJSUlZGSGVFTmFVV3RPV1d0R1NWRkNaMk55U0doeGNESlJVMEpNYkdKa1JXOU9lSEpGTUZnMlYyaGFiRzVSVVVORFJtRmtkMUpzU0hGblFVWXJhMGhxTUhSSlV6TnZTbVpMWVZkMVVHTnhaV2RNUVVrMU5HbE1XazFGUlhWMEsxTkZWSFpxVTB4V04wNU5UakIxTVhaSE9VOVlhR296TVRBMFVFeHNkMVZqZFRrMlNETnZNRkF3Tmk5SmFtYzFZMlkyWldaNUwzUnVkRzRyVGtZNGExZFJkMDF4TUhOdmFVa3pUbnB3YmxkR1lsZHdZekJuTUV0dVFUbENXbVJTWVhwRlUyb3JZbGQ0UkZsVFIxWmtRVzgyV214T2IzbEdWM2N3WWxwcGVqZFRNQ3RJZWpBNGVGRnRkbll2T1RCd09UaEpPV0paUjBkTlpuUjBZa1FyUlc0NFNFeHVTemhsVGxkSVVVcG1hWGxDUVVKbmRuTldTVzlIUkRsV1pXZHpTU3RFTlRsM05VTTJabVJQVkVreFpFdDZZVU13T1hrNFdtSTJWMDlHYW5aa1EwRkxZbFpwVm05RVVXSlBVbWRCYlVJMmExWlNlazE2VlRaUmJrUnZlWGhTYmxCaVRsZEhjVWw1V2xFeFJsRkJRMlpzT0dwSVpWaFdURVJsU0ROaWNucDZLME5NU25wT1MxSjJjMnRhWmpaU1JtWTFVazF2Y0hOd2VUbFBLM1VyY1U5a1pIZDFMMjB5ZUc5WVJ6RXZkbTFtVW1aTk5YaDBaVmx1Y1VwbU9UY3ZaVzR2Y3psUk1uWXZMM3BOZUM5T0wxRlFMMnhRZWpkNksyTTVMMGhwTUdaQ01rRXdNbVkwZDJOUmEwOWhTVTlWTW5VeE1rVkpUR1ZDYkVWUloyTlRXbGh4VVhOcVdYbHdlVkppVkZCaVFVTTVSM1ZPTUZoeVYwWXZWa1pIUWpaclUwbFRlWE56WWt4clYyYzNiMWRxVDFWSlV6ZFlSelphVjFkdVRWTklVRGREWlU1d2NEUk1iWE5UVDA5UVl6WkdibTlIZURKa1NDdDRZM3BMTjBoTWRtSlBNVGg2VmtKaVZEa3ZNRkpQTDJVemNVNDNiSFpYYlhoV05XWlNNbGxuYlRVMWIyTklaazQ1ZHpaMlIyVmpXR3BOVUhSWWJpc3dTVFZpU1U1TWNGUnhNbko0YUVkRlptZEJVa2RoZEhOamIycDNhR2RDVmpoRlNXTk5aa2hZYldsdk1YbGpPWGxGYTJoRlJtNVRVbEZsVlZReGJFVTJMMEpoUzBrMmQxRlNhREprY1RCSFEwRkVZazVOUVVaUmIyVkhaWFY0VDJsUk5VVXlSMGxRWWs4d1NFaGpZM016ZDFsbVMwZEhWMVUxVHpaUVdqSldOREZEVTBSRWNTODBibEVyV0VNMmNXOWhVMmxVT0dab2N6bFFiMnhOU1hRelpEWlpMemRYT0U5TGVsZGtjamxNYUVWeE1tbEtWVUl4UVhwUk5qTm5hMjF2TWsxTVl6bFBRa3RWTUU1eE1IWmhhV0l3TkZjNFNXVjZTbVpPTUVsS1pXTnRaa3RPU214MmFUaGFXbGxRUWpjM05scFRablJyZWpkamVqTnpWalo1TVU1WFdXMW1NVXcyTWtwSVVsTkRSalZhUkZKaE5rMDBUM1F6WmpORU0xWXdSRnBVTWtnNE1VWmhaVTFaWW1WM1pHOXZNa1J1VmpNNWQwOHlUMGR2Y25wbmVGUnVVRzlvUWtWcE5uRnNjbGx0YkRGRmExbHhURkpxWVVwRmJVVTFNVlZJVTBkUFREWkNiMXAxWWxocWNVSlpXblJpTHpWVlprUklMMEkyTjI5S1lUaDNkbmxLV2pkQlpTdDZjV3B3WVZkM1JtRnJOak5rTUZSQ1pERmxaSEJXV21sWVJVbDRlVlUwZVhoWE1sUXpZazEyZFdSRFdrcHVLMEo1TnpKRVJXeHpOMUYyWjNkNEswNTRieTlPWW1ndlYyVllRMjB5YURsamJYQjBXVzVvTVhwVFNXVXpVbVE1TlZReUswSkxaRE5rTW1oVFRXWkhZazlDUkVFcmNGVXZOVFZGTVRSdFZpOUljV2xNZURoYU16ZE9NM1JMTDFrNGJFRTJZek5xVUhVd2JFUmtPWEZtUkZsak56UnhSMU5PVWxvMlRXcDZWMjVvYjBKUlFWRnhUVEExZDIxWFJsaE1ZME5HYTNsWmRreEpVelpDYTJkc1FtTkpTbFJWZW5kakwyWkdOMVYyTkZVMGNraEhjVEF2TkV0MVdVMUpUME15T0VnMmNIaHNZM2xXY2tOVWJ5OTVlR1IxV0dseFJVUTBlR1JIYVc5R2NtSXZNMDkxVUM5cGJHTXlNMlpYYzFGRlJqVk1OVE5xWjBwdVRUUllWM2RQUmpCT1FVcEtjR3QxYTFKWEwzWnFReXRKUmxGalpXNHlVSGx4VDJZdlVIUnRNV1oxT1c4eEx6VTJNMWhJWjFNcmJIcHJORlEzZDJ0RVZEUjFRVEo0TmxGUlZFVjJTMWQxZUcxVFZXTkxjWGh2VWpWR2JVTlRTVUZNYUVWMVJFRlZSVUpDYlhKWk1WZENOVTFDVmtsYWJscExja2d6UmtWeGVrNHdXa3R6Tld4eGIxZFdjVTV6ZEZJMlVIbEVPRmxIVFROUE16TlVZVmhIVW5oWU0xYzFNVzVRTmpZdlptSjVjaTlRZUZreGJreEliWFoyYzJacFNtMWFhMVE0VjA4NU1Xb3lWMHhRTWxKNk4wNDVWR05OV2tWcFFUVk5SRWRLUkhkSlFsbFZiRVZ2Y0UxSlFXNU9LMEpaUldoWFdVSmFRVTV5Um5oUFZXdGplWHBSY1dGVWIySnNURTFGVFVReGJGTmxaVmRJYTFNeU5UVTJjWFpxTURBd1ZVNHpiaTlsV0hOQ056UlJURlZuVlZkMGNXRlFlazF1ZGpoWVFYUlRZbVZHVDFnNE9WQXZNWGRtZUd0aGJIQlVSVkZJTkdwbE0zcG5XRVZvVTJaUU9YSmxUMjVVVDNvdllVaFJRVXBaUWtGSU9IRndZM3AzVWt0aVpqUXlhRU4wYlhWdFJrbFZOa3Q0TW1Gd2RFMDBOVGhvUmtsMGN5OWxaVzlNY25OQlpEbE9UakUyYzNWQlRrRkZhelJ2UmtSdlozaDRTV0ZKTVZGeFRFbDBZbTV2TlM5aGJVeGxlSEJoV0ZKSE9WQm5SMDRySzFKS2NWb3ZSMUI2UlU1NGJHZExjV3d6V21wRlkxaDZPVE4wVERWV2QybzFOVE1yV0hZeFNIQkhXVGRTWTJKWVVVRkNSVmxXVUhSQk1VdE5hMmxPU2xkNFZURnBabXB5ZW1nelZHRjJjbmhsUm14TWQxSnllbWhaUzBOMWIyRTFaVU41Y1VWRVdGSXJWakJWVFhaV1FVOVdaVVpTSzJFd04wVnRZMUJ5U2pkMFlVUjBOMWxIVm5OamRTOUxLMDlUVTA1NFRIaGxjVTVTY2k5dFVETTNkblkwVm5SUFprZFRaRkIxWTNZek0xaDRiMVZtZFhaUWRrSTNNRmxpTWt4MVIwdEpVSHBKUVVGNGEzbG1RVUZKTVhGUVprOVdVbHBwTm5wcUt6SlhaMU5FVnk5UFQzVlNUMDlITlRoeFRGaDZiV1pqT0ZkcE1GZzRVbUpMTkVKQmFqZEJWV2RPYUdSclVFVldWM0J5VTBaRk9DdGhjbWhaTDIxd1ZuSnlkM3BJUnpGRlRXdE5NRkoxT1VaSE5HdDRTakJDZG1SdWFUZHVNbVJGYUU0NU1EZFlSblY2YmtaNlpIVTJXalJsZVhNeFNuVk1ZekIxS3k5MU1tSmliV3B6UmtsaGFYcGljR1ZUUzFvdlkxQnlRVFl5ZEdobE4ybHdjU3R3WW1nek1ETXpSVmxHWjJRNFRHcHdkWE13ZG5SQ09ISmthVkJrUjBsQ1JYRlRRa3B4YzFOdlIyOVBWMk5EWjFsRGFrVXlaQ3N6Y1ROVGIycHpja3hhV0ZST1UzQTNlVFZtT1RRNU1sUk5kMncxTDI5aFkzVlBjV1V5WkZFNVdqVjZPRzFhTTI5Tk9XNVRNM0J2WTBkVWR5dGhTR2QzVUZwcldVZ3JlVmxZYUc1MU5taFVSM1JuWlVjNU4wMWtNVkprVEd0UGFsRjVjM0IzUVVrNVRrcElSalZXZGxKeGFVSnFUbkJxVW05SlEwRnBSalZYWVVsM1NVbG5SVTVuUlhoTk9FMXpia3Q0V1UxS2EwRlVSRmR0UjJweVFXRk1XR0Z5U0hGTE1HMUJjVzFOUzJ0c1duWnVWbWRJZGt4cU1rSjRZa2hFYURWbUx5dE9Sazh2U0RWd2NGQkViMDVsZDNObVZsQnFOMU5NUm1zMVQzVkdLMEl5VG5GS2IyOVJaRlpDUTFJMWIwVTRVVTlhVEVsSGJFOTJUbmxKY0VGUU5XMXhlakJqTld0cGNWZERZMVpGT1hSUGNWTm1kamgxYzFCaU1tNXpZWEEzY1ZOVmVUQnFVR1pRY0dkelpIVkdhalphVms1eFltMUJkRTlZUkhKc1RHMDNWMUV5UjFkeFkxTkpNM1ZJUjNaSVJYZHdPVEU1TWl0T2NVeGxUVTF1ZDNNd1VERTFTMEl6Wkc5RVEzQmhWV0pIVlVoeFduZEdVV3h2YVVSNFJYbFNjVW80YW1wQlprRnZibTFhTDBsNE0yaGhjV1ZIWVZOWVQyeFlTRmRGZG14R1ZIUkJMMjVWWjJSbFQxUXdkMDV1V2tkckt5dDJaamxSWlcxQ2NtRklRbWhpYlZJMGVpdExVV1ZsUzJWMVlUTklXQ3RsV25SemVXWTNkbGcyUWpRdk1XcHdkMkZ0VGpoNmJrTjJkVWhTYkdFeFNFTTBSR3RFTUc1SFdtaDBVbXRTUTJWaFFsQnhiakJNYlUxMGVUQlJSbTgxUkdSM1VVcFpOazVSVWxkVmJtSk5jMFZWTUZZNVdYY3lXR05tTW5ad1JEaG9WamxWTW14TGR5ODRTbk5pWmsxaGRscEJTazFWT1dsRFJqTlJkRkpUVFVkWlQzVk1VVVZXU0VGMlNYZERhVVpUVDFaSmExSlFZVmhMYW1ocGFHOXhjMUp2UTFoV01IUlFVakZvYUhScVJGRXpNRk5yWVVWd2Ixa3lWbGhzVGpkTGRuSmtjbkZUVm1SR0x6Vk1VRzVTYTJONk9GTTNWVFJtTml0M0syeDFhRkJhT0dORmVsa3JibU5YUlRseFRrcGpaVEpTYzFwcGVXWkhkM05YWTA5WVRtdFpTR3BVWVZvdmNqWkROVEprVWxjM1R5dGljM0p0VUVSQk1HTjVLMHR1S3psMVZIZGpURXM1ZGk5VVVUTkZaMnRHTkcxTlVraE5ZMUpuU2pWRGNVOW1kM1ZuUTJoalZ6RlNRVkZMYjBGelNWUkpiMjlOUTFGalFsVkpNRFpWUlV0aWNtUmlZMVJqYmtsb1JWZE1ZVXBwU1RoT2RHc3liMFJVWlZsaWNqQkVlR2c0VG01d2F6SmxLMWRVTDJ0bGVsRnRaRWhpTnpGd05UWlFVV1kzV1RKUGRDdGhTMlU0V1VjMksxcDFTR1pKTVRsU05HUkhSR3MxT0VvMlRGbzFPVFp3VVUwemFXbE5kRzgxU0VZMFVuZHFURTVJTUVJdk5HeHRUVUZPY2xkeE1EUnhTblJXV0hSRFdtcFBRVEpYTVRJeVUzaGpjRlJEUjJkNWNEVlVSelp0V0dsdlpsQk5hREJFVGsweGNHWm1jMkZvZVdrMlZUSXJjbkJsZERZMk1HcGFRa2xKYTJ4a2VETmlaa040WVcxQlEwUm5VRFJJVEhka1kxVmlNV2hXZFRCTEwyOU1TemcxVm5GV2IzRTVZbGgyVlVSdWQyZFZVMGxEY205eFFUaHdRVkJWYUhjclJsVXlRMnhLU2taQ2NYaFVPSEoyVVhaUVdFaHBPRGhRYW1WME56QldRMDh6TjBKQmJtZFFNMFV2WW0wM2JWTnBUekZUZURGQmRWQmtObVZOWlVJM1RWQXZhbHAyVEU1TWNXdGhXRmN5VEhJMkwxZFFlaXN6Y2pFNFpuaG1jQzlyWWpRdmFWUjFOREJ2Y0hWclZuUm1NbVp2TDNZMFRVMDBMM1ptWm5SaU9YbzJkVGhrYmlzM1dpdFVWM053YmtGWmFFUlhhekJEWjJkQmIxaEJTMEpvV2xCMVFsbENlVE5DZUVWalZXWkhUbFJWTVhoYWRHRjNNVGRHUm0xTmVVeDBlRlJHVlRsNlMyaHlWRlppVTFZd05tMDBjVzFyZEN0TFRFNU1aRWhTTDNSSFduaGplbTFYUnpacWRYbEZZMmxEWlZkaE1YQmhUMEp0S3pGRWJsSkdiRVJUYzJaaVFuRm1OMEpxV0ZRelkybHZNa1pRVDBjeFpUWkhlREpLWldJMmVHbGxlRUp2YjNWa2FtdDFOamRJZVZsNFQwaFBiRzFsVEZjMVRHTlNlVnBDUmtkVmJtVjFMM1ZNYTFCNWNUVndXV3h4UW1OelJWVlNXbmRvVDJjd05WWkdRa0puVFhkcWIweDJLMXB0VVVwaU1UWjVZbFUyTVZZNWQyRjBUakp1Ym5wTllVeFpjSGN5UlcwMGVVd3dia1Z3VVVOTWFGQnFXV0ZwUTNsU0x5dGFaMDVSTUZOSU0yNURha1ZaTmpCRmFUSXZiSE5FVmpac1dGWjZPSGRCUkVGM1QxUkRVbFY1YkdFcmFVeG9jMFF5YzFKRFNURm9jMkZMY2tzclQwbGtUa2h3WXpGT2RsaHJkVVkzY1hKd1VuWTNiVnBIZGxaM2FDOW1WMnh4TDNSV2VtaG1UelU0U0VOclRXRkpURVJ1WVhKdlpFWTBWVEY0Ym5wUWIwWlRNakZVWVRKaGRHUXZWRlZSVDNKWlYwOVBRWFY2WW1VMkszZE5aVFpQWkdsMEt6aGxVQ3RhVFRVdllVdE1lSFZhWlhKalUwUm5OSFY2U0ZSMlZFVlphalExTHpNeWJESjFUVGhYT0RKbU4ybDFPRGhWU0hwc2FrNUhaekYyZWxaVmJqbElMemsyUW5Kc05VODFlR0kyVlV0clQydGhSVmQxZEZJeVJUUnZSVGg2YjFWQlpXcHVUMFpsTDJ0clF6UkhZV0pZUVN0b2NqbGlWekJ5T0hoT1kyVmhiRXRVU1U1ck9XbHFRV2RXV1VaMlEzWXdOemxKU0daNVlqWmlMemtyUWpaNlRFNVpkV1pQY0ZRMVQzRXhjMVk0YUZKSU1tVjRSR0pVVEZSNVpqUlBWelZNYUdZMGJWY3djVzg0VWxoS1EwTktVa3R3V1M5YVExcHJWa1ZWUzNoaFozZ3lNbkE0TTI1a1ptOHZabUZoT1hwWFZubDBWRmh4Y1hvcmVsaFNaRTFWZFhoYWRtTXhZU3RPTnpVd2VDOUdUVll2TDBWdFpsQm1LMll6T0RkTmMzWjJTR3h4T0ZCS1dtTjJXR3RtVEV4bmMwOTRXR2tyWm5kSVVVMDVjRGM1Wm1WcGVsZ3ZXWEl2UVVWRFdXOUVlblp2UkhwbWVWQkpNamxTTm1wUlUxUkpWbGR4UmxBMWFqaEdWRmcxUXpCRE4yVlRUMmhwUmxOa01HNU1UREUxVUZoVVdHNW9OVE5sYkhNelpYUjJjbkYyTkU5eFNrUmplVVpKYms0NWFWUTNTR0pOVUZKMlVHNDBkM2h6WW14NlpuWnFZMVZUZUZwa1RucHllSE4yYWpOMVJ6VnZSSGQyVnpaM2RsYzJibFp0ZW5WNVoxSnJXa0ZMVTNOM2JXMDRWbXRPT1hOcVZGcExSMmxyY25WTU1VMHlSMkV6Y213ME9YQkxZaXRJVkRkTFJWaDVXR0pPT0M5NVprNWtLMEp6YUhCVlZXWllUVlZIU0cxblFVTm5hMmxGZWxJelpteHZkV3RPVTJGVGMyeE1hRUpvWTNOaFlWWnRSbTkyUkRCMVkwZDJjamt3T1ZsakwzaEdWbmxrWmtoUVJqVXZiSFJ2YXpKME5YWlBZbGxEV1VkdWJtZ3pTa3B0VWxGTVVVUm5XVEp4T0Rkbk1sb3pWblZ2Unk5V0wzSjNURE0zUWxwNWR6bDNaV0ZpYjNKVWVGVmtiMFZ0VWxFeFIxbHRTVmRCYkZOaU1UVkliMWR3VEUxUmFFNTZSa05OTUVNeFdFaGtSWEZKY2tWVWVWaDRTbXB5Ykc1aU1EbHVZbms0VnpsMmEweHlibEp5TnpGU2QyTmhSaTgzVGtvelpXODRUVzFVWTNaaWVIa3Jaa041V0ZSaVV6QlZNSEZrTHpocVMxWklRaXMzT1V0R2IxUkxZMlZ2TjBSeFFuQnBhSEYxUVRScFdrSkNjVTVQU1hONmFtVkRTSFYwVURoVlN6UldlaXRtYm13MVpXUndNRTlCTnpKSVNuUkVTRTlzZUhodGMwb3JiR3B0T0N0d2NVVXdhVUZyYUhKSlJXMWFSMUZIV21SUll6aE5ZMjF1Y3l0blRVUllSbFZ5U25CcWNFdFRRM1ZRTTBGQk5sWlVSSHA1UVRkNVJtNXlMekZ6Wm5BM05EVTFiV1JUU0VWdWMwUlFTSFZKYlRkSmNHcHVkR3A0V0ZBNGVHRldSbTF0YXk5c09HUnhjbEpZWW5WMVFqa3diVkJXYm5aVGF6QTJUVFZzYzFsbWExWnhLMkZZYUdSeGFXczBkalEwTVV3d2JGZGpjV1JQTlcxbE1sWjZSekpYUTFCTVdrRnJSVEIyUTI5VVltOUNiME5pUm1FM2VFVlRSMGxHYzFaUGNUZzVTMlIyZUVjeE9XRlhSamNyS3paT1VDOTNkbVYwTVc0MlZ6UnhTRkE0WVRKbWVTOHhZWFpRZVZCVmMxRlZRblIyYkhCaFZsRk1TbUYwWWxGek5EVjFUbHBhZVd4M2RXRTVlRk54WVU5RFIyOHJiVEF4WWtKMVdWSjNWR2RYSzBsVVQwcDRWMFl3S3pWVmRVWkdXVEJyV2s4MlRraFVNRmxYUmtOSWNYUnBiMkpoZVdST2IyMUJLM1JZSzJVeFRqRmxaVE56WkcxaFpEZFhNSFkwWmtGdU9FTkxXRlEzTjFjMk1VNUpNQzl3TlV0dU1WaHlWMVpuTUZkV2RXNTJSU3RZTVdOdGFubFllVlpMUTAwMlJscFJkVW94TVdjMlZtdE1kMWRNZUU5a2JFMDVkRXMxYmxGR1pFSlFLMlZVZGpGWU5XOVpObVE0Ymt4TFRWQnNhMVZLTlhabk5qaE1SVXQ1WVROV1pqVXpjRmxNUVVGWGNqWllRalZoUVdSaGVVOWhOaTlJYVZoMmRGQlVNMlF5Ym1rMFYxUXpaREZ1VXpkUE5VdGpUR2hsYm5CQmNHUkZSSGd2Wm1WdWFEa3ZaVWQwYUZrck9UVlBTMFJJTnpOcU5HOVFXRFZZT1U0MFIwRXlTVll3V210QmFUaE9TMFZwU21wcGEwNVhZVGN4WlhsdlkxWnFSRlJVY1VSMWVVdGhaVk50UTNaVFMxRk9jalY2TVRWdFR6UTNUM1pYVURkU1QwMTJPR3R4Y3pnM01YWTJSM3A0V2xOUVdFMXNOVGRZV1ZBME1HZzVhMDlKWTJseFMxSlpibkI2VTFSRFFVZENOVUpyYkVvelpuTmpjRGR4Y21OUlVraFJOVWg1UzBjd1lWTmFObWxKV1VsYVlXRkNjUzlDUVZkRFlXbEhhRVpGTm1WNlQwUlFZVWRYYjNOV2FsQjVkM0J1VHpSNlpXWlVZMHhNT1dOSFkzaDJiRk0zWnpWdVUxZzBkVlE0WWtoSlptVk5WalZIYVRSeldtUjZORE5ITVdoVFEwdFhTRVptVGpCSFUyVk5aMmhOTUU5UmJqUkxVVVZ5VW1FM1pYcEZaMnMyTWt0M1NUY3ZkM2hNVlhOWVNFb3ZZVnAxWm1WemRpdFFhemh3TDJaMVZsZzJlVU56Ym1odlkyMVlORzFRYm5KWFYzWnZZVW93Y0N0UmNUZGpkak42TW1VM1RYaHlPSEJZYmk5V2JXTm5aV3R4YWpWMk5YcG5WSHAxTjJkQ1owZHdaSGhSU1V4cFZFUllWbFJtUnpnMmRHeEpkRTVpTjJwTVZDOU9NVVl4TkVwcWNtbDFha1pyWWxOamVqQmtLeTl2Yms0cmRtMWhMM0JoVDNKTWFHSklkSGhMTjAwcllVNDBNeloxZG5OSVkzb3lWRVJXTm5WdFkzcElZbEIwTkRWdFIxRkZkRmhMTmpNMVkwbGhNMnh2WmpKa0wwTTVPSEJ2UkZwdFQzYzROMmRVTWtkSWNYSkRTV1pPV1hWRGFYZGpiWGh4WjBkUlRVOVlPRWNyTDFKRk5GZHBPV1psVnpScldIVlBaMk14YzI5aldFTkNWV2N5WjBacE1USjRZWGxDZVhkV1ZXeDNZalU0Wm01c1IxWlhaRmRNY0hkNWRpOXdkQ3RHZFd3eVZFOXljVEptV1RrNWRHVkVVV3BOSzFKdWJTdDBZWEpsYTFSamJGSmFiRlZsZEdrMFlXUmtVMU5GYjNOaVZVaGtZa3R6WlN0cVp6TXdlRkp0WmsxeWNXMU1jMUpNTkRKNGRsbGFRbE5CYW1SRE5GaHNlakZIVVZKRFFXbFZUVU56UVUxMlJsUXpUMmwxZVdoRk1XSk9TM3BCYWxOdmEzVnFhMmxEZEVSRGQwbEpaMjlFYUdSMmJWWnBWVkpYUm5obmEzRktOMnBoTTBNM09XVjViR3B4U0ZFM09FMXdWVmRZSzJ4dmNXbHJiREppY2psQlMxTk9iamxOYlRGWFpsTlRlRzh2WVVwRlFURkNhbEZhY2s1NFdWSlNWVUpGUjNoRE1HeHhiR2R4YTJKbFQwUTNNVE12Tm5WUFNETXZRelpSTVdONFZWQnZjRzV6V1Rsd1ZreHdaRFp5Y0hCblpXWXlhME51UmtwRVFsVnpSamxHZFcxTlNFUlBXVVpEWjNaRE1HczNablpZWjBZMVpTOTJVRVoxZFhSV09YQllPVVZDTXpaek9VZHNSM1UwYjNSM1QzZE5Va05NYjBWSlNHdDFVbEJIWTBWTGJqSjNNekpoVTJGQ2VsZHdhbXhGVVc1Q2NXeDFkekpEUzNWRmRXWjNSMHB3UjBwa1RGUTVTMGw0WWxVdlYzaDNiV2xVTTJGWFptZGlSMmxtTDBGcU1FeE5hbE55UVZOQmFXUjNRMmhyYTBSRk5uaHVUWHBsU2xRNVVFMHpVRE51YWtjeWJrbGtUemRoTkdoNVlqUjZhVTUwV1RjclJqZEdWME5hVDBsNk5XSlBOemhZV0d3MFQzUkRSQ3RxWVhvdlRqRnRZWGhUTUVSWFpFeG5VMkpsZDJ4UEsyeEZVMlZGUzA5dmJGQXdNbFl2T0c5dk5UaHdhelZpWlRodVkwcFFhelpJWjJSU1NHeEhkbWhHVWxVNEswRnllRkZKUVZSblNIZEtlRTV4TkROd1QydzBja1ZQVlcxT0x6YzVkVGtyT1RjelRqZFFieXRpZGk5M2JFaHBNVGxEUWtKaGRIVmxTblYyTUZGRFFrSm9ZeTh6YmsxWGN6SnNXbk5sZEZKaWFXVmlVMjk0VXpaMlJXaFhaa2xVSzJkWVVVbzRka2xOTVhad1NXYzBjbXRpUW0xSk1EWmpXbUptZGxCcFZ6UnFObmRST1hsUVdFZEJNV2gyT1cxd2FXZEJZVXgzVFhSV1pHZ3dhSEZGVmtKSFEyWjNLMjl3VFRoTVNVWlhWR2cwTVVGUlFYWktjV2xWYW1WV2JUbExhbFJEWlhWNWNVWnNUVmhxV0RCM2FUVkJXQzlHS3pScWNIcEVWbE5TTlc4MlkxaG5jV3BPSzNCc2IyRlpSM0ZNWlVoUmVVVkVlRmhpV2treldtWklPVFpzSzBkbGNVMUtVR0ZwWkUwNFkxbDZZV1V3VGprelpFWTVVMjR6YTFKSGNtMHhRalV4U2xSUVVsVkVMMlZ1U2pSaFUwcDBXR2s0V0d4WlNGRTBSMWhDVUdWdlNVeDRNSFZtTjA5cVVIUXZhak14VkcwM1QyaEtjRlp4VGtWYVZrbFVjaTlRZVhjeWJsWkpZVTlCTTJkWmFVTnZVMXBuV0cxWGVEVnFVMEZRV2tGMVptZHZlRGhQYm5ORE5GSlZjelIzVG5VMkswRjBja1V6TlU0eFUySlFTbFpzVnpkNlVWcG5PRGwwT0Vob1kxUmpSMGMzVkV4c1FXcEZVWEJETW1WelJsRXlMM0VyUW14S2VGaDBOa1pGWW13MVdUZ3JaR3BKYTJaVWRHMDVia3A1WmtoRmRVMVZlRVpxVURkSGVFeHJORGRHVTNsa2RXdFliSGc0SzFKMmJtbzJNR1ZRUW5oMlpVUlpXVUoxVTNkRlJXOHZSRGxOYmxSdlpFSm1OVE4yYXpkMlVqa3ZSMEZQZUZGTGJGbFdkR28yV2tKT1MzcDFLMFF6WmxBelpsaHBaRVl4TVRkNUwwMUtZa3cxVm5JM1lTdFpZM2cyWms1aU56VXdObE13UkdaaU4zaFpMM1l6U0RSdFJrZG5aRWhuV0VSaWJteEJPREZyUldwM05rMWxRbUpFWWt0Q05YSkZRMnRsYWxGWlExWllhbXNyT1VoM2FVRjVVRmhIYUc5bFMzaHpSbVpIUm1WUFVsZFZjVkJHTmpOWmVVczRhMUphYm1wclZ5dGtPR3R1YTJoaWVuZ3JWaTl3YjJKcVJ6ZDBUbE01YTJ4SlpIUjFTREk0Wm5oamVuWjVNbVY0WTNaeGNERm1hakV4Y21Jd00xQm9OWEF2TTJobk5XTnRSSGhPUWtSWmVUTXhTRlp2Wm10bk1UUXhURk5QUTBobmJWTlFTM05WUVdad2FFWnNUVFZ6UmtSb1lWcFdTRVp1TVhWWWVtZFRZWFZoSzFGVlowOU5kREpqWTFZNFpsbEplbmxZWTI1RlNWcFJLMWxLZDJSSGEyd3pRblprTVZSYU0wczVjREpoVDBoU2FHbFNVMU5aZWxCVGRqZDJlbmhWVkZkeU1IcGpXRk5vWlVoTU56TnZiVE5RZUUxTGEwcHRUbGt2VHpkbWNWbDVjR2g0UmpGNVNWWTJNbFV3TTFJdlNVY3hUM1pzWkZwQ2JGcHNRWGxoWVd4RVowUTJjWEJZWVZSS1VVSXdhMFZsZURodU9USkpOREV3WjAwM1NsQmlVMHQ1TlVoVlZIQnZlbTkxUkhnMFRIWmxPV0p5VXpjMU1EVmpNbUoyZVVkRGVVeFZNM1ZEVVZsSFEzRllNMFpSY1RSV1dtZGFOaTlRYTI1YVdGbGhlblIxUlhoaVpFUk5SMkpPVFhKWFYxWkZhVGxRUkc5S1FrWlNTaXRUT1haRlYyOWhiRzVXVDJkYVFtdHFVMlpLVkdOcVZUSkhaekZtVTNoek9FMTZTMmROYVRWWlZYZHpURWxNTTJoR1pYWk9LM0ZYZFdaNFpVVkpaVXBYU3pOU1kwbFhVRlJZVFcxSU1sbHhhMkU1VHpoWVRVSTViRmQ2VW1ndlpHUjFVMlUyVXpjdk1HaDJOWEZwTmpCeVJqQXplREpVU1ROaU4yRlFUbXRtYlVoclRHWktTVE14UVdkTlNHaDRiVmhLU2twc04zbFlSR3BHU1hGRVMxQjZVMFpFZUM5amREaHNiMUZTT1VVMVJFdHFORzkwY0hoWmVUZENXWGREWVhKd1ZuTlRkbU5rWTJoWmVUbE1USGx2TkRRdlpEVmpObXg0WWpJeFoyRlRWamxoU1hBNWIwdG1NMGcyUXpCWVUzUXZTSHAxYlhoT05XRXJlblpJTjJWblJEaEtabXRUYlUxRVNtSkhaMXBrTHpGcVUyUkxkR2RWTlROSk5WWTFXVkp4Y2pkcVdIcHhTemNyYUhGcGRXWlpabUV5UW05SmRVNTVRbWRFZGlzMWRFeGlNeTk2Ylc0MVJURXJjazl3ZVdVek1sZ3pkVmN3TlcxMEx6bENNa2hPTDB3eEwyTjNkamhZUXpSemFHa3hVMkpMU3k5alVqSndjMW9yU0hoT05tTlpNVXRrTm1wUmVWUkdWalV5Y0hKTWNESk1SR0ZuTVd3ck16ZHFjekpFZFc5dU9Va3pTa0pFTlZJd1VHZzVRelJFV1V0Sk5VNU1VRnBST0ZWck1XVlJlVWxtVkUxRGNXWmFURWhZWVcxWFlXeGllVzFXY1doeWJXeDJNMUF2WjJGWGJGQjZlakl5YVdOM2N5OVpPVXBxU2xCbWRUUk9jRlJrWlZZNWRISlpVR0prYVRWVWVsZHhPSEkxTWxkc2RrWnZXbkl4WWtWVEwyOUxaMDVCVGxGT1RFVkNSVVpaTDJ3eEwxQlZSVXA1T0hKU2VHVm5kbkpsZEd4dVUwSktiRVUwTjIxeFNVSXlSeTh5Vm10bVprVndNSFYwTDA1NVZtSldiekJSTm1GR01WQnZabmRoUkU1M05EZE1TMDgzTjI4cmEyc3dkSEo1ZERNMGNUaEhhVXA0VVU5R1pETk9ORnBpYVc1SU9EZ3diVTh3T1RCaFNXRmxPV0UyVWtoemJsSnFTVVExWVN0cGNtMHJORnByUWl0eU1tUnRNblIyVlhWTE4xQkhkME5IZUZJcmNIYzFVbkZIZW1SNmFURjVVMlZTVmxSM1ZFd3JNMXB5Y0hoR1VsaEhaRkp1TVhwc2VtRndZVUV3Ukc1elJtOXdjVGxRZDFRNVYwOTBXREo1VEZRMmN6aG1iVU54T1VKS1ZFWldPR3AwZFVSVGIxUjRNbXBxTTJ0Vk1ETXJjMmsxTHpWUFVDOUpPVzRyZG5aUVZFVXhjSG8wVnpWbVNEVjFablJ4YzFocFozVllhSGxvZWl0S1JtUllOWG96SzNGNGIzZG1Na2hUZGxoTGNXWTFTR3hwVmpCc1NGWlJWa0ZCWW1kbVZVbFlNMnR5VW1KTEwyaHhRek5HZUVwSlVtVjZSRUpqVmt4bFFsWjJZMFJoWkcxNVFqWnlZMDFWVkZsaWNYZzJTMmhTVlV4Uk5WTmtORFppTjNoamNWWnNOM3BFU0ZaMmJtRmlWbmxWY1RGbWQyOWhXakptU0ZscFEwMDFhRGwxU2tKMkwySTNjVWMzWWpKeU9GWm5lSEpxYUhoWlQxSTBUMUJxYzA4MVZtaEViR2hCVDJkNE9XVndkVE5YVlZsTlEwOW9NRlZDYTBSUlFVbEdTa3d5T0cxT2VtRjJOMmRNU1hGb01IRkpSbE00WTNkWlowbGtWVUZXY2k5c1FVUkphbkE0VldWaWJWbEJhR3BzWTBaalQwTTFabmhLZEZGVVIxUXhUVWxTTkRsc2VuQTVTVTFGZEc1aFlVUmxUV1JKZVU1cVl6RXpkV3RNUkVZNGN6TjJkVEpSU0ROcE1tdFpWVlJUTWtKbU1VdFZNRGhYUkVjMWNHTlRRVXRSV25FMU0waHNRazQzUW5jMVVrRk1TVk53Y1UxdGJGZExRazlGTW5GWVRFTmlhRk5VTTI5dlJ6UjJNMGx3VW1aMmNVMWhjaXM0YW5KbGNGSnNRbXBNYVZSaFZIWnhibG8yTTJWRWFWTnlZbHA0YXl0Mk1qWnRhMDlNZWs5SVpHNXlOVWRqTW5SdFVqQjZjREVyWkN0dWFuQXdPV1ppWW1reGFqVm5PR28xTjBSM2Rtb3pkVkJTWkdKak9FRTRkSEl2ZGpaa2QzUjBkekJPY0VNM1RWUmlVVUYwU0ZGRE1rMUVURVJvZDJjeVZsaHlkbEpVWm5JeldqTk9ZM2N6VWt4UVMzUXhkRFpXZUhOamVUWTNVRGxwWWtoWGRFeE9VMVZUZG1KdVQyOHdkbTF5YkdsNVRXRnZNREZaWm5GeVlUVkpZako0WjNWcVdHTXdaRkJyWkZGaGJ6ZDRjMkUyYUhsa05XWlJORlJtWmpWVmVYQk1XR1JEYW1SMGJWbHNUVGRNVDJseGEwSlRlRGRNVG1neldGWTBUV2RJWVd4VmRIQjFkR1pIU1V4MFkwNXhVWGt6VW5oNmJHUkpjRThyWTIxa1pIazFPVFpzVDBKbFMwUkdZbGhVTVZKTk1IWjNLMGhEZURGMkwzVkdSRFpSVTFKaFZ6RnpNRzFaU0V4TlFsbFVlR1V5ZVVSQ1RuZFNORmxTWm1wd00wcFNiVzV3TjNaalUyNHZkVk5xU2xabVNVVk5jWGR2T1hOSEswWkhVazltVnpFNFpWUjBNak56YkV0bVV6Vm9kblpTWldKVGJqZzJUUzgwVjJKRGRHaGtOVTh2VlhBNFJuaEpkbUpPT0ZsbUsydzBNQzlxUXpObGMydHphVlJZTTNKWWVIVkJjbVJNU0RJNU1ERTBWbmR3V1ZKemNtNXZRVTFyTDI1amFrUTVXazVHV0hoU0x6WmtkVTFRVkhOa1R5OURTRVJJZEZoU2FDOXlhWEpHTkM5UVdsa3pSVVJzWm1aT2JqQnNSVzFSU2k5S01HeGtPWFZpWTFCd01IVTVNazlDYzNkWU1FbGpWRTUxWVZNd09YQXJOVGhEU1VVeE1GUlRaWEpyTjB0aGVVRTBRV3hVUTI4eUsyRXlUV3gxUjNWWk1VMDVWMU5aYkd4WGFXeE5abkZwU1V4VGJ5dHpiak5GVVRCSE1EWnpVQzl5V1N0cWJVUlhZWGQ0YmpGMFNDOVRMMlV6YVhwTFpIWlFZbVl4U0RZMVZVNXRkU3Q1ZDFCUlUyOHpWazl3TkVWeE5raHNZMFJvUmpKc05HRldRMEZyVFZkb1VXOVdUa1EyTW1Od09YTnpURFV3ZEdaVGNqVldjamhzT1VscU9YRlphemR5T0RKeVR6TTVTRWd6T0VjeU5YSnpVV3RrUVdsSlMyaFBVWEpCV1dzcmVsWnlVazFJWkRsaVEwdGFVV2hoY1hkeFJIcElSbkYyTkZwdVUxQTJUekZFZVRoWGMzRldXR3dyTWxFek5rTjRaMWM1VTNWNmMwTXpWM0JJVVRoWGRrSTFSbHBMUTB4c1lWcEdXR3RIYzBwWlJEVTFRazFNZEhkWVExRldOMkZKYTJSU2RUVlJPSFpHTTFGeFRFNHpURXR0TTNCTlYxSjVhMHhpWnk5MFQyaG5UVTFTUTBvd0t6UlFWbTFsYW5WVWVtRXpkVE52ZWxnck4wczNZbkZQYkhBNVVIQlNVSEV5T0hoU1JGVTNiVUl5VjBka1MwaHZTREIzVHpWaFpXSlhSMVYxZG05a2IzaEJaMHMwV0RoVVVGSTJNMHQxTDFGaE5sbEdabUk1ZDBGRU9WY3dRbTFSYkVsbFZqZEZWblJoVVZBM2IzcHFNSGRNU1ZGd1NVOHhUazl0V2xac2VVaG5TWEIzUWtaaFZrRjFWbmRXUlVwdk1XOUtWR1p2VUhRemRIcGFNMlEzU0RsSWVubHNaMWhZY1c5RVl6ZHVVblJKUkROd1JsVlVZemhQTlVOaWIzUkRZM1o1TTA1WlkzWmpaR2htYUdOblZISTJTWEl6VVhvek1EaE1hRVpxVDJaWlZqbG9Ta0YyY2xvMGJIRkliVmc0UTNwdGMyVnFVek5WWWtGMlNqVmxjMGhGUTI0M1ZqUnZiVGR5VkZWWVdrcHNNSGd2U1V0Mk5WZG9lamxEYzNOTk5XWjVZbUZHVEVkNmRqbFZVbkpNVGxwaGJYRmlkbFZPTjNKT1ltRkhkbUpPWVhaS05VeHNWalJQVkZKRVIyZENiR1ZKUXpKelpuTXJhRXBVZGlzMFFsRTNiazlUTXpKelMzTXZlRzV6TUZWVlpFTkpWSHA2UzNsRVQybFhTRzVWUVRsSVRXTlNSRVpVT0ZGWlEwRmljemxGUVRaRk1tRXliSE5KYzFkRlFuVlpabU50VTNJNVdGWkdibUZHTjA5aFdrWlljelZMV0hWR05XMVVMek5DWldVMlQzRmhRMUIxTDNNdkswd3ZiMFJVTldabE4ycDFOMnRoVGpsak1YaDJjMGhDTTNSaVR6WjBkVE5hVDFOUVp6bHVjVmx0YWpoa0x6ZFhkVlo0UXpOUWFtUndOV0pxVVVwaU1WTTVlV1UyVVVsemJ6WkVOSEp2VG1oT1FrNURSamsxVDNOU1kwaHliV2x2Vmt0VldEVlFSRVpET0VKTFNVRkpjblEyVVhkU2VVUklVVFpoVWpCcllWcHBiREZ1WkU1bkwyZ3hibGxXTnk4M1VHVnhObTl3UlcxeGJHOVJZM0p5VkdoeVdrbEdLMWRZVFZodGFYVmhVM2x6UkhrM1UxUkdPRzVKTkhZNE4wOUdZV1kyVW01ME5sWk5ObVJhV1Rac01UbDRNVGxtVlhCbFdUSlBNalpUY0ZJeVprWlhUMlJUY1VrelIwcFJiSEk1VUhVeFZIUkhhbE5qTDNWSWNHb3hjR0pUYldWa1V5dGlNaloyZGtzNWRXaE5RVFZZWVRrNFEySmhVSE55ZG1kUU1IaGlZaTk0UkdocVVEZ3pReXRIWkZBMFFuRkRZV0l6WjJaSWRpOXRabVpLT0M5MUsxVTFlaTlCT1VKcEwxQTNZWE16WkhWTVVVdFZaR1l4TTFaMmRsUXdlbVJ2UmpSU2Rtc3hjWEl5V2pOaU5sQXJRM00zZGk4eFUyNHJOaTh2VHpjM1ZVdEpkSHBQTkhack0zVkNhMWhpY3poTU0zcEhUa3RrYlRWVVpISkNZa1ZvTTNSVGNrOXZheXR2VWt0T09FbFJVRzFIUTBOYVJVbHNSalJrU1VsUGFFVjBRVWd3VTI0elZHdHBaVWw1VTI1eWRuRlBZV3RSUTNKV1VXdDBVRmxzTDJNdmIxaHFhM0J2Ulc5bVJ6VldkbEZ0TlZZMEwyUkhTbmRoZVVWdGRERTFUVFphTTNwcWJtUmpSbkY0YW1OUVRUZEVPR0prWm5jM1kwUTBSMkowVXk4NUszTXpZVWMzT1hWeE1uQXZXalptSzBGWWRYWlFabGhtWlM5M1ptRXZSSEYwTDJSblRqZFZjMll3T1hKUU0yUkVLM2N2T1ZoUVl6aDZUeXN3VUdGUE1tRTNPR0p3WldKU1RYbzNUemh1Wm5SU1prbzFhakp5Y0hWMVIyNDNNSEJrZFRGek4yZFBiRWhXTDNONFR5OTNaV2QxYWpsaU9URm9OVE5hVUdGbWJtSTBPVFZUTW1Kb00yTjBTRE53ZVZwMU1YTXpWVE54T1hGbU1tVnVMM2RFVlc4eU0yd3pSVWxJYmtVMVRuRmFOakpLUlV0SVQxTktRa2gzTkZVNFJEUTJlRkZFTWpONlkydGhUVGgyTjNOSFF6RXlOakV5UnpncmRIVjNWa1pMVG1VclZYZFBZMnczTVdvd1VuaDNTM05oV0VwNFNYWXhZVGhaV0RrM1YyaHJMMlJXYlhKSFNEa3hiVXM1YjFBemJtWm1VVmgxVW5KbU9EWm1RWEF2U1dwcE5WZzFjbXhYY1cxMGNXNUJWWEZZY1hGUFMyaE5Temt6UlZBNVZUQXdOSFkzY1VOcVRuUTNabEJrTTJKTmREZFlUbVEwVVRkUE9GQm9Xa1JMVFZRM1dFNWtXR0pQU21oTGVtNWFNWHBpVVhNNU1GcGlkVnBFVkdGQmQyaHVLMVJzYlRsNmIxZFdUSFJDVW5oRWNWQlhZVlJUVGtSTWFFc3lVVEV5TjBwUFMwaHhNbXhYVmxBeVRVUkJhbU5yVmxaYUx6RjRWMHQxUlZodGNsVlZhV3hXZEVKVVRuQlhTRlExSzB0alozbDFOM2M0VnpkM2RIWkhhblZFU1RaTk5XOWFRMkZsVDJVMFJqTkdSbVYyY25vMU5UVnlWek42YzFCdGF6TjRMMkV5VEdaMlRVUXhhRFV5YnpOQlFtdEdhV053ZW0wdk1YRXhiMWxEYzFOTlMxUkRWVXRsVWtaU1VYUkNVblYxTlZsVWFrOW5NRGhzY25kUEwyVlhRakZYVkhwb2NXUlVSR1JyUjBWSFFqWllZMVJZUzJOV1RWYzNTMU5WWkUxcEx6SjJjVmQwYkdGNmJHaFpZbUUzY3pNNE1FOUdORTFLVkhaNk5ETllNVnBLWVRSalJqTkpSbTFzWkdONmRDczFNVzVsYVROVVkyNWxabXRzY2s1T1FXWnVabU53V1dnM1ptUktMMnh5Y0djelUySlZkRGRPUWk4Mk5sQmljbWxGYWpNelVVMDFOWFJJTkd0a1JHOURWVEpHUTJ0UlIySnNUMHRMU1VKUldGWm5TMUZFYzI1dE5YTmhSemhKY3k5c1dIaDJOMm8zVm1Kc2RFWlpibU14UVRCeVZub3pXbVZHSzJSQ2NGZzNkV1J6WW1neE0xUlFaV1pFY1ZsVVNEQndNa3BTU25WaGR6ZGpWWGg2V1dGU2VtOVhkWFJKZEVFM01EbGhkWFJCVlN0UVdtcFVkV3BuT1d4bldrZFVVMWd6WTJoSFkydzBTV2QyWld4bllXSllkVGhMY0cxUFVtSkxNWHBRUkVkNGNEWlBOWEI1ZGxVM1FXdzNXRkUzY1hOb1ZVTkljbFl4WW1kWFVIaENka05FVVRad2RWUTBVVGxvYURFeWFHNDNTbEIzY0ZCdldpOUJNMWh6ZEcxRmRGcFRUbkpXWTBWdk5GRlhhbHBrTDFwVVEzQm9VVVpoVjJWYVRpc3hRbXN5UVhaQ1JIZEhlbEV3UVRCSVFVZDFTRkUyU0doalIxRTBWRUYyYXk5cVZFMHZjVXN2U1M5UlVEZDBMMVJIUldGTE1XSnRkMGhIYUhScVZVSkZia3Q0WTIwNVJrdDVZVVZSZEcxemNGTTRWWEZYT0hOb2FIRkNWbmhvSzNaTU5pOWpNbTVZVEdWbVVYUnJlRkJRTDNsTFMxQjRkeXR1Um5FNUsxQjNMMUpCU0doRlNUTjJkVU5vWkVVMmVGY3pXVk5ETmtWUmFVOUtRU3M0YjJzMGQyTnRaSGszUzFOMFFuWnBja1ozTWtSM1dFUlRhMHBvZDNOVUszZDBURzVhZFRKaE5ra3dNUzlyTm5KbVMycDJXVXR5TDFGTVMycFpNbWR6ZGxRMlVVTnJZV1E1V1VaelMwUTVjazV4WlVjcmRGQndhMU5ZT0hkYU5WUllZbE5MZGpOMlZ6WnFkelJPVEhGYWRIRnNlVEF3YURjM0wzZE5XRmRXZDJKMVNHRjVNWE5DVWt4Q1VYVmlhVkF4TlVGRmIwRXpVMk5LVkV4dmJqTk9TMDlzTlc1YU9HdFRTMHAzZVZscVNUZEZLM2xDVkVsWk9VeEthRVV2VVdkcFdIQndNRGhUVEc5V1pFMDFWVzlNUVdKcGIxTjJaREIwYzJScU4wTTFORk5NUlVWTVNEWlFhVEZRVFZoQ1JtSkdaV3BMTVV4UGJISTJPVGQwVDJ4cmRIaEtWbTVHY2psbk1YbHdaamhDV0hZeVdqSTVhbFkzT1haRGJuVjBXRmgwTmxkeFZ5OHpPVmNyYjBoVkwwVkVhVFIwWkRCNE9HWkhkbXBsV1ZwbE0zZFlNbGxtU0VnNWEyTXpUbEk1WVRFMU4xWlVPRFl2Wm5VdlpqRmpNMUJ6VDFrdlJtTmtUa2czY2pobVpqSlBiV1pXYUhCalEyeGhWRmh6TVVodWNtaEZUV1JEVFZveGNXcFdSMkpDVUZCQmRFTktVVGhGVjFGa1EwczNOVmQ0UlZka1JFcFhkMXBPVm1oMU5ISk9XbnBYWkROVmVFWkVVVEZPZFZWVVdHRXhlR0ZRYUV0blUxbDVaMmswVFdKWk5GSkxOa1J1TnlzNVlXTTNjMHd4TkVWQk1VNXlPRmxXVlRFMFVuUXpTbXgxTnl0cWNUaE1XSEZTTm5sR2JFeHJZVU5WVUZaUFJtazVPRGhxWjJ0WGVXMTVlamd3YlhoMVptRlJOMVphZDJWQlowRnNaRnBKTTFoWldHaEJMM3B6UjNaUlEydE5NamRZUTJrMVdWTlNjVGN5T0ZkRFJuSkxjMUpMVUU5ek1HUlJVRWg0SzJGR2JIWlhRalJqVFZVcllqaHRXakEwWVcxQ1oyUktOemhLUm1Zck0za3ZUSFV6TDNndlFWaDJkRVI1Y2tOWlJDOXZlVzhyVFZBdlZuVTNXVlJ3TXk5UU0zWk1lR1E0YzNBME5rSjNUV1pLVUc1NVUxQk5VSEl6WW5ZMU5rTm9Ra3hvYTBsTmRFVm5RMkZNUVdoTlRrNWhkRGRhYUV4aGNYSkZSak14WkRsbVJGQnFaRXhIYm5kdWRra3pNbUZqYkVWa2VpdDVhbU5SZG05SWFrWkRaREZaUjJaYVRWTjBlV1IwUTBKeVRtWktiWGRpVlVGM1JUbFpZMVU0VUU1Q1puSnNVVzlQTWxWWGFUaFdkWEZXZW1sMFlrUnpSMGt2TkZVMk9FMUxWVnBhVjBWeE1ubG5TU3M0YlZSd2JubzBlbVZSYW1KelptdFVjak53VmpCWWNtWTBhVWx5YWs0emVqTlpWWEJRVGxSQ1REaFJTVFJMWWpoMVZXbzFNSGRySzBOTVRXSktNMWxWVTFaUVFUUjZZbEp3WmxWSmEzQkRiall5ZFZwTU5UZElNR1ZNU1V0b1VXbEpWblpGUm5WaVYxTnJWMjk1UlhGdGEzTkVTMHBOUm5RMU1YZFhhV2R5WTFoTldtWjRiVzV3TVRaSUt6bDFXRGxqVm5JemRFUmlVWFJ4T0RCWEwzWlFWV0pWZDJwaE1qRXZlSHBQZW1WVVNubE9jSEpoUTFoWksxQm9jakV4TlVSeE5TOUhlR3R3VkM5WWFITXJTMDR6ZWxCWFdGQnFhamh6V21aM01tNXpaMEZpU1VKS2NXaHFUMU5aVW1sWU4yNHphRFI2TmtkSFZIRXlWVVJqY2pOTlMxWmtibkJuYlcxdVZrcEpORFF3TXl0V1RFSjViVEFyV0c1R0x6VnhSMGhHZFc0dmNGaGpkRXhuU1dka1FVZFJSRXQxY2xsa2JGWkNORWxDT0ROdlJXMVNaakZJT1dOb2ExcENXRzFDY2xKWlMwSkZOSE5YYkV4cFpFNWhiRmR2V1RaSk0zSkVSM0JWVlZaaWJGZ3hiMjFOYVdWNFRVNTJaaXRqTnpNM2JqQnZVVGs1TmxBeEwzUjJTRkY0ZHpkcE1FMVVTWGhQTWpNd2QyUmxTMjR3UkhWNmFDOXVPVzVQTkhaUE5FUllZbGxMUzNONVExRm5VVVp5Um10VldFZ3JWU3RSTDJRMlVHaE9aMGhNUlZOU1dVWTNTSE0zWW5BMFNUazRhV1l4VG5oaVNDdFFhR2hEWkZGYU5ESkxaMll4Y1hkUFNpdE9Sbk52WW01a2RISlRWWGxhTm01TFpXdG9kQ3M0VEUxbVMwWXdiR1p0Wld3clRtMVNTbkZhT1VONkwxRTVhMmRsTm5oclpEVk9jMDlwZUdzNFYxRnlTWEY2YmtWb1REaFlVRTl3TWxKc05TOXFXbTUyWlcwMWNWbHFVR05JUkhoSWRYWjNlQ3RMUjFKSmNEZ3daM1phYm04ck9VaHBPREU1TVM4M2RFUmhMM1l5YkhZeFRFTnFWVlV6WjBkaVZGZDJSVzUyUkRRMlFtZ3JXblZsU21oQldEaElSWE5IVDFOSGNGRjNjVmxCTUZWdFFXOUtVSGt6Y0hVclJXVnRZbFpYTW1kM2NuZzRSazFuVjBsRlp6WnNURnByTVVGSWIxWjFhVmhxYlU1TVFpOU9aWFJTVmtWSVpXaEZkVWhUVkROMVNrOWlNa05rWVZSeVdEVXZVRVptUXpCU1pYbG5ZMkowV1dJMldHNVJWbEptYUdNNVZ6WlhkM05UZFZNMmFqaEZOa2d5YWxKWE4wMTZTRFp1ZEdRNFpUWktSR3htT1ZoUWRrVXZkR3hEYmpneVVtTnlVMnN5ZVV4WllTOUlhM2c1Y1VoQk1scHFXRlU1Y2s5SFpETkVVakJ4VUdSMldGbEdNSGN4YjFKRGVsTXdUVkF6WldsQ1dEbFBPR05RYTFkUFpDOWhkUzltUzAxdFRYcHVhVEZHUzNVeU9ETXJkM1JpVjNsaU1uUnlXRFpoTTA0MVVITTNNQ3RwTldNMmRISlVkbHBhTWxwdFdYRkpkMDk2TldVMFRGRklTVUYxYzFCd2NsTXpiRmhNTjNNeFZVcHRSM3B6UjNoRE9ISnhOMVk0ZVZKMVZ6SnpOemhCUjNaVlpsWlFMelpVT1Rjd2FtVXJMMGMwV0hWNlRUVlFkaTg0YkVNMFZGWklhamN4TVRSMFltaEpOaXRsV0Zabk5DOXpNMFprZUhjMk9VazNSbXQ0TDI5WVowRkNka1pTVDBaWlowb3ljVUZJVW5WSGEyVnlkMWRyWkdoeVEwdERUVUoxYWt4MFEzRnBTa2xhVVVwNlJ5OUliM2RwUjB4a2NUWkJkRkpOYjJsaVpXdFRjelZQTm5CTGVWcEtkVzVWZW5rMU5tOTFhMGx4TVdRMFQydENjRTQxV1ZsSE1tNTJZV1UzYnpjMlVYRktSVVF5Y1ZsVFZsVmFMMEpYYkdaVWMxWlFVelJMT1VSSmFYQXZjMFpGTVVVMlVrOHhaVW8yVDBkakt6ZFNSRFF5V0ZKNmMxTnpkekpFU0c1emFtWnVkMjVwV2pOTWNFbFpZbmxJV0RCT1ptVnJTV2R3Ym5WR1VUWTNhV3BtYW1GRFVqZEZOMGROZFVseU9ISlpVazF1WVRSWGNIVkRlbVY2VjNGRFZtOUlTWGcyU201M1FrOWtZVWwwYkdJMU5YQmtZbGxXUlUxMVRVeHdaSEUyZFhKQ2VtSXlSbmczYURsVFUya3hWbkZFVkdjeVdrVkdiMXBMWWpWRVkyUkpjM2d5WkU1dFNsTkZTa3QyV1dacGVVdFJiakYzYkRGV2RFcFRTbVJWUkdkVlFXdEZRVFI2TUdNM2FXeElRbFF3VXpWWVdrUjFOME00TjBWUE9FWnRiWEpMWTFORWRtNTFhMXBaTjJwTWNHNVBjM012VjBocWJEUkxTaTlPZUZCR2JuaG1WWFZNTkRCTVJXaHRaMGxOUWtOaGJqYzJTSEJVVERrdmIzWlNZMG8wWW5SU2R6bGpNMlI0V0RaRGFEa3pOalprT1ZkV2NWTXhjMHBHWkdGUldVUmtXbWRoUTBsb1NXWnZhMGxpYjJSTWFHSkhRMUZKTUc5YVRYUjZOR2RoVjBrcldWazJNMUpOVDB0NE16TlVWV2RNUTJRNEszVXpiWEJXT1ROSmRFdFZZM05yT1hwQk9UQmhhblp6WWxjeGMxazNZbkV3VUVKbWVVdGFOMnQ0Um0xNk1FOHpVRGswTHlzdmRWQmpRV3BMY3pSQmIxb3pPVEV5THpBcmJqWlRWSEV4Tml0eWRHUkVjREZ1V1hKV2NrZFpNVTR4YlRKeldUTmpWRlJGWkVWc2NtOU9Va0YzYUVwaVVXdDFSRVZGUkVGc2IxRlpVekJyVFVsclJVSkRSRlJWU2s1WVZGRXdlamczTnprelZGVjNVRzR2THk5Mkx6QXJOblV6Wm5ZM1l6ZE5lbk0zVDNSd2Jsb3Zka2RIWWxJek1IcEJTV1prZURONlJsVjZablJZVFRoVmFDOHhLMU5MU2xWSFdtMTRZa2xUV0RCYVpXRlhOVEZqY2tONldUWnhWM2xFUmtaaGRXdEtWMEZaTjI0dk0ySXdjR2RCUjJ4eGFtOXNNRlpEZDFad2RERjJjelprV2taSVpYRkZUMGQ1VlhWTGJGaEVhWFJUYTNWMlRHOWhZMWhUYlRWemFHUk9NMUE0ZEU1a1NqbEdMemRFT1V4Skx5dG9WMmhLUzA5cldFdERVR2RRV1dWUE9XWk1WVzFhU2l0MFprWTJSMFo0YlM5WVlqWkhMMFpWSzNONksxb3hZVWw2TDBsVlJqZ3dSVFpZVUc5bWQydGxUMWg1TXpGVmNtaHZPV1JJVTJSbWMzSkdaVXh0TWxNNFRWQlZSVlpwZVVOdlRtd3hjMmR0VERKcGVFZ3phMHhyVkM5VldHUmtXVTVFYVdKTVdUaFhSaXRrYms4ME5EbG1Uak5wTVhOaGNWRjJkRlV6TVhCVVNUWklXbTFhTTFneWFXSklNV0V3ZWtsMWVGaDNOR0ZGZWxGTGJWb3JNR1ZoT1VKeGNWTmFiQzh4YVM5SVJWSnRkSEJXU2tGR2NsQlBZa1JSYjBGV2JHbEJkQzlrYTFRM1pqSnlaSFpqZENzclNTOWlkRmMzT1haSWVWVjZjMFUwYW1aYVRDOXdlbWxqYzBwTmExTktPSEoyWjB0SVVVbE1aMlk1WkVwVWExTmtTRTlTTjFCSFozcEJWMDQxVEZsNmRuUmlUSFp5YzFkVE9IUTFWa3RYVmpCWE1WVlFURnBsTkRkd1ZUbElSemxZWmpSUFNVdE5OemcyYlM5MVdrVmtiVGwzY1hWV2RsbExlRzFpTWxNeWRTdHhibFpvUzJNd1JtMUZZVGxrYzNwdGNuZ3hhbTFuTkRWNlZGb3hSM1ZUZWtSWFRqWXZTVGRpU2twT04yczJXbk54ZEZnMGNVWTNTRTQzTkdScmEydFdNR1Z0TVU5b2FuVndjRkpTU0ZKb1lUaHJWak15V0VwWmJuSXpTRlYzYlVvd1dtaExVakpoZWtWRFdFaGpiVWwzZWtkYVQxWnpOMHBTSzFKemMyNVZPSGRpYVVkamFWbHNVWFIyY1hCRVZYWktORUpFZERScVpscHZURUp0T1N0MmRITjFVM2c1WmpKWFNXZFFXaXQzYnpWdGVFTXZTSFIxWVU5cWR6aDJURVJvTUVrMVRsQjJXRE12Yms5ck5rdHNiM2xsV1RkUmRERk1OMDFqWm5aUVIwUlVZMlppYUc0cmVtWkJUWFZsZURkWFZYbFVaV1YwWlc5dmVUbG9NRUpRTlVsUGRXazFTRkkxUVhKdmVXNVJOVWhwV1hkTWVXYzNRVk5aSzFKelNVVkpPWFpEY2xVcmVGaExRVGQ2U0hKSGRtWm9UbGR2V1RkM1lWZHNabW80YUhCaVNGTlhSMWMxZGpoUlVEZ3dTVUZzZUdOTFVVOVROMDVIVDIxTVJXcHhUR3QwYkRWNFpXUjBOMUZZZUdsMk9YSjJTSGcxVTA5c04yODNhWGQyV1VNMFUwMTBla1pWVEVGME5XMW1NVWMzTWpsV1lWaEdlRnBWVmtwVldHdzFSVkk0YjBSb1dFaENZM1ExY0hBMU1pOXhZa2x4ZG01MldUWXJPV1JYTVRKaVJUWnZjVXRaTkhReWVrZDRZblIyVnpsU1VHSXpNWEphVURkTFF6WTFZbVExU0ZBMlIyVXpOQ3R3WjFkRFVtZDBOM0ZpYm1ZNU5reGxOa1pSWnpVcmVsUlpaV0ZVT0hOdGNGaDVUVzVGYTJad1V5dDZaaXRQT0VjMmVYcE5lakYxYnpBMmNrazVNRU5hVVVsb1pUTklhRVY1WWxFNFRubHhUV0p4YTFWU1FtNXBOM2s0VmxSWWRqbDNSbmRJZVRaWFdGbHJVRVpQUlRGNWQydFhXblJPU0RCWlNGbHZXRWx1Vm5Zd1EwOXpORWRQZGpSd01DdEdTekoyVDJNMldVdEhaRVpGUzA1S1VWWk5UelZDVGpnNWVrOVVTSFk1T1d0NWNHcDZRV1Z4VUhGdGFqZE9jMWxUZVVaYWVuRllPVXMwTDA0clFTdDNWRVZFV0hWMFZVaDVRbVJEVG1saFlVZE1VV0pJU25aSFNsTnFObkZqT0RoemJYaFVaMEp0UTJOcWVrRlZlRlJ3ZUV4NGFtaENZWFJWWTJ0MVV5OW9ObmhwWlZkNVkxTkdXbFY1VjFGVU5rNTFWWGczYkdWdGJHTlNSRlY0UkZZMlNYaG9iMFoyV0UxTmVXdE5WMU5YY2s1WFdtNWhiMDVPV0dSS1oyRXdiWGhRY1VwSmRIWk1VV0k0YlZjclFsa3ZWVmhqU2pOd09USm1VMDQ0UTFGNkt5OHpaWFpPTDA1cVRIbGtRalU0ZHlzNE9IRlpPVzluTjFsYWQySm9aMUpzYVhwTlQyZFpXRGRRVVVOMFFWcHROVzVVVTFNeUx5OWxNMUZpTXpsaVkwNHhNVEV4Ym05a2NuQmtka1ZMT0dkd01HeDJhWEVyVTNKUFNrdHhOMnh2TUhCamVYaDBSVzl2Y1VSbFVuSkhkMVpVTWpCM1oxWllORTR4T0dsNk1FRTJhVkZzYzFGMGRVSnlUM0ZIZUc1aVJrZzNRblZDYVhCa2J6bEJVRXhVUmpobVJrRkJVbVZ0YVRkQ1pXbHZReXR3YzBKWWFrVmFWR2MzWVdkWVZVOUxiV2RNYjNONFJYZEZTMk5EYm5KTGNVMUJWa042VmxOWmNVbEZWbmh5YXpCRFFXMXJNMjA1YUZweVRsTlNORFpFUVVGVloxcFhkek4zTTFSNFFVRnpZM3AyVTJwRWJtTkZSSGxaTkU5UU5rSkllRXAxTlRKdlQyWjZOa2xPT1ZVNU9GcFZZVzlaUzBwNmFqZGpOazlOWkhWVFYzVXdPRGRaY2t4bVdIcG1VM041UzJSemRYZ3pSMlowTVRsMlpsTkNOVXBxTVZJeU5WZDZjM1J3S3pOd2MwbGxlVEJxZFU5MVMyazJkak5NUkZGSlkzcHRSelF6WkVoVGRUWlRObkZoVFZsNU0xRmpaa0kzUkdab2JsWlhSRmRXZVRWT1ZEWkdTbVZyUVZrMlJEZzRVMUIzZDBGeE9XUkdlWFl2ZVM5M2NFTTJLMlowVlVsUFFXWmhhME42WjJZd1J6WnRPSFJXYzBWcmNub3ZOUzl0U0hOVFpWZ3JVbkphTTNwcU5WRnJTM2hMYW1wc2RGUk9RbXQxZEVwT1NVNXhLMHhMVFVJNFVIVjZPVlY0UkdGSlFYbEpPVWd5YlhGcFVrZE5MMVZWTW5GbmVFRnBXakJqV2xSU01WQkVVbUpTWTBKV1FrSjFlSFl5YVhablNGZ3hOMUY0YkUwM1VtWk9NbXBMU21VMVduTmhSRTQ0YzB0VWJrNXdUbThyVDNOT2FVOWhUekE1UkZSVWFHRmtUWFZGWVdSU01ubGtNMVZrZVhkQkwyNXhSM1pwUmtJMVZHbEhZbE0wSzI0emFVWnVVbllyY0d4ak1WWm5TV0pLV1RWQlpXRjVVV05sTDFBeUwzZ3daRk5PVGpFeFl6RlZZalpHVTBFNE1DdEJjelpTVHpsbU4yWXhTMjVZWmxwV1N6RlNUV2w0ZVdkVVZVWTVSbE5VVjJaTlNrZDBlVk16Y0ZaSGRWWkJjbFpDVkRJeWFFcHlVRTl3UVRSTk5UQjRla05IV1hwWFZ6Z3pNblpSWVhkcVR6RjBjMkpxVUVkeFNucGhZbEowVUdFeFRIVTVZVVpyTDBkWGVISnhRM0Z2VEZseGExbEtjRXRQTURaU2NuSkhSemQ2WVZoRllsWjBPSFJ5TldkTVZFd3hTVFpLUzFaTFZ6WmliVFp0WnpnemFXZFpjVXQ1Ymt0SmEyMXVlbU5KUm5sUFZUWjJjVXQ2WjNZdlpGaDFWWFo1SzJOWWRqVkJaaTlvYlNzM01qSXpibXRrTUdVeVRrUlhkRWhzYW5OdWJIcFFSbXhoTUdScVJUUTNjbFppTW1oME1uSkxlR3hrT0U5TU5pdERRek5vVjFWMFNGVllSamRTZVV3NVlubHpjV0pHYUd3M1VHY3ZNelZ2T0hJd1dqUkNNRGxVVEdGVU5WcFpUR04zU0RnM01VcE1aMFZ1VGsxVlQwUmxhelJNUTJ4aldUTk9NMHh6UVRGNldrbHZNRWczYVcxaVduWjFTakIyVFM4elEyZHViV0poWVZGR0wyVm9WbGhzVm1GVk4wUk9SM0ppYVdOTlFUSTBlVlZXT0ZvM2VTdExNa2RhYVcxUmVUVnFVVU55YW10dGExVkhjRnBQWnpkcWRWZGFRVWRpVkhsM2Frd3hlVWRaT1ZFellqaGhOM2s1WlhoblZuQkJVRFIyTlhGWmFGWk1XVXB6UWtGcVlWVnRSbFJhV1U0eVQzWldRblYzV1U1c2JFUjFRek5QUm5aWWRERm1ZM056UjNsUWVDdG5UM2xTUlVGRVRuWndXSFJ1ZFRkUlUxZDRUbXBVTHpWMFVGZDVURzF3Vkdaek0wUnNOREJrYjB4WFdFeGtkVzExZFhkWVMyUjNZMkp2WVRKQk0wbFBSSE5TTkVvdlRWcDFaM28zUzJKRWRETlFhbFZrZW5WYWFqSnpiMjUxWW5BMFpsQlFNMEZRZGxveGEydGlTMDFJSzFGVllqVmFVV1puUXpOamNWVldlV3RXUW1wSU5IUTRWVkpSU0UwdlpXRmphSEJwZUZkQ1NpdGlOa2R6YjB3eUwyOXRNV3BFTW1sbE5tbHRTM2h2Y1RSS2NFY3JSM0poVEdKalZEbEViMWM1U21aWk1YYzFLMnB6TTBGWVlrWldlRGhJTWtGYU9VUmhRa0ZyUjFwb01rSlFXVXhWVTFsek1qQmFjbWRqZGtGVWFFOW1XVVZwT0dGVmNFODJSVzU0ZFVrMVUyWjVkVmN5V1VJeWVrVlhSVm9yU1c4clltaGxWV3c0Y0hVMVVGSnBNME00VUhrdldHSkhVMkU0YWtwMVNXd3pWV2hLYTNoWFVWbHpaekZwY0Vob2FXTkJiMFVyWnpOYWMxQnNZV3BTV1daTk1FZE1VMVJSUkUxdWJYcHpOVkZEUjNodGExUk1VRkJIVDJWdFIzcHJPRGRpWVdGdFpGcFNXVkppT0hKM09XRTJTM3B6YjFkaU4waEJOVXRSUzFvck5VeDJVSGRzTDFwR01ubDZZMjVxVVU5alRuaEJWRE51YjBZM09ESllWR28zVWpkT1EybGlWME14YmpoSE4xRm5ZMGh0TlV0cVRWVmxOR3RUZHl0aWRVaEJVVUpDVFRKeVRtRjBORE5WVWtsck1uTm5NREZuTXpkTmFVOVhRbEJPZUhNeGFraG5ZMEp3YWxWemEzbDJVVVJWT0ZKeWJrNTRSV2d6UW0xUE1EWjVjM0ZwWjJaTlZXOVlTelJvVmxabmVraDRORGxZWTFoNE1sZ3JZbmcyV1VsWWF6QkxOblZ6YUdaeU1uQk1URUZ2Um14VVpUQjBVWGwxWVRJMVRIUXJZVWQxY0c4M05qaFpOMUl3V1RZeWExcEhNamhoVERKYVIyUnBXa3RvYUZkVmRHSmpXRVppVnpOMlJEUkhhR1JhTVU1SU9HWkNSVlF2Wm10YVNHWXpUM1ZEVWtWMVQxRnJXVUpMY0hncmJUWlFVVmhHTDFsT2Myc3pXVlJaY0U0eVJrNXpjbmx5ZGxSVmNtVnNOV0pOS3pkeFV6azRLMUZHSzFCUmVrSm5lRVJ2TWxnMVNreFBXa3gxVUdGd2JVeDFlRGxKUlROQmRHODNVa2hNTTNaVFNGVTBSVWhrZWxkalJVOUxiRU5qZVhoc0swUTRSRUpqY21sS01uVTBaVWh2T1ZCbmNFVnhUMVZKVUV3MFJHZFZSR2R4ZVZobFV6RjVaVGRYZUUxaldYSTJXbXhKYzJWa05YbHZjRk5EV2xkd1NWQm1lSFJCYms1bFYxWm1WelJ3WmtreU5YWTVTMWcxWmtkWU1HWmpiMmxrYm5SelVtMXJPWGh6ZWxSc1lrMTZTMU5aTVVwSlRubFlWMXBzUVd0YWJFUkpOekZrU0hsTmNXSllOV1pPY0c1eU5FRjRUREpSWVdwV05uSjJlREJsY1hGRU5GRnFUMjU2YW5SemFtVm5hMk0yWVU0MVlWVkZSa3BUVnpWTFNWWm1USGhtYTBWWlJFNDVaMjR3ZDNWRFdIRnRUR1UzV25GcGNtUllSU3RLWWpkak1sWjFaakJHY1ROWmRVZGxiM00zYlN0TmFucHBlbmQzWmtaMWRtUXpkRU5WTkRnM2VHeENVekZ5VHk5SmVXMTZVSEpsTm05cE56RmtWVEUyTm5wR1VIVjVNUzluT1hCeVVrVmFVVFJWUzNnMGRuazNjeTk2UnlzdldsbEdPV0l3VXpadWRHRnphbVk0Vlc5d2RtWjVlbVUxTUhwamFWZ3paRGtyVXlzM2JEazBTQzlqV0UxUU1sQktTSFYzVVhGTU1HNTVOMFZXVTNZemR5OUlOV1pUUkRaelMxcG9NMnhXVXpOdmNrWTRlalZRV0VsMmJWcFZjR1ZpYkdReWNFTnlkbUZWY21Wc05HdzNhV0o1VUV0dWJDOTZMMWwxYVhaa01UUnNNbEZrZUZCM1VqVlVkM2wyZHpWSGRUaFFSWGxMVUVZcmNXdDJSRkJRVEhWRGRFVXJRMlpwU0U5a01XSXJSRTVRVWxNMFdtbGFaRFJuVWpCMGR6YzRkelJyWjJwVVN6SlRTVTB2YkV3clZYWlhVVXA0VGpBeE5qRktWbnB5Vm5NMWVITmFkRUY2VTJkNFEwd3pabkpyV0RGMEwyRkRjV1JXVTB0eU5sQllORGRLWkZCamFYRmxiVVpRTW5OclRFdzFZVkZSUVhCTlVGaHpWVkV4UTFacWFFYzVaMlZ0YmtaeFUwTmtWRGszVm14YVYwNURjMU0wVmpSbGExTkVkWEYyZFVRNE5YZDVSbUpqVUhSaVEwUjBTRGd5TlcxemRXRjZNSE5ZYms1WlkycFNNbnBxYkdweVlUQXZWRXh5YzNwaFYzUjVORTEwVWxWVksxZzRkRko1TDNWUFlrdHlZekprTVZsMVMxWmlla0V3Um01MlFrWXhkelpXUkZwVlZERlVhVlUyTnpVMlYyWmtPWFJ4UXlzd1J6UlVaR1E0WVZkbVkyUnZZM0pNTnpsbVRIVjFLMVJLWmtzcmNuVlVPVTByV21SUFJWb3JaV050T0dwNWNEVm1PQzk2Uld0eFQyNHpSbWt6VFRWalNIRm1Va0kxYlhwTFZsSnRURFZGYVU1VlMwNUhUMGN6WjJGellrOWxaMGQzVVdwT1ZraGhRV2hJZHpWWllpdGtkamw2UVdGc2JsUXJSbGhvYmxsSlFteFlTMmg0TjJaWFZqQlBVVzVvZGtaMU5UVTViR2czYlVRM1ZWaDVibTlGZEVWa1NuQXdZMDlCVWxad2VVVlhSbWRZTjFKVWRsTk1hbkJDVXpOc1pHMVZUMmRvUzFKSFExWkZUa052UVdjeGRsVmhaMjFSYkRaMGExaFNha1J3Wkhsck9YQk9jbmhNVGtWd1NYUkVVbUZYYkhkSmEwMUxSa0ZXWmtWUVlYTlplVFZuZVRCV1REaHdMMVZ4Y1hBelUyUnBSRTVoVXpCME4wNW5VMUkyT1hCNFdrMDJTakZHVkc0cmRrdGpOVlZYZEZKNlJsQmhiRGQwVmtOVlEwZDZWR1I0TDJabk5EZFZabTVUY3psdFZtdE1RWFJzSzJGQ1VYcEpNbVV4VVhadVRHUkNSM1l4VkZneU5rd3lkakF2U1dSWk4zaHlSRUoyYjNwNWJWQXpXa0l6Y1RaYVRXeHJibFJWZUV4UGRXdHJWbVEyWW14TWVDOVlhVkoyZWpCM1drWldTRmRLYlZsclYxUjBRbXhtWXpCS1V5OXZjV2RXTlN0NFNIWnZlbmwyWjB4TFYzZHBkQ3RuVkVjMFRVTTRValpIYlhsTVZHbzJZM2QwVjI1b04zWnVPRFl5Y1RKNlptVlNiV0pzY0hremIwUXllV05DVjJ0WFUyVnNRV1kwT0VsTFZqVkpURll2YTFFMFpuRXdTRWR1WTFSTVZubGtOVmRJTWxSblZFVjZURXA1YkZWVVRXZzRTbGxFTnpGMVRWVnFkMEZzTkhOUmJEbGpSblp6VjFGaFZHSk5kbkJZZGtreVJHZE1ZMjV4UWs0Mk5HbDVSRVZuTWpjMk1Ia3ZTRlkyZDFsc2VqVTBTa00xYlVoc05GQnlLMGh3YWl0cWJIZ3dSa0pMWkd0R1pFUlRRamR6ZDJsaE5VcHRSU3RXWlVjeGIwNXZPVEpUU0haUlFtRm9ORzlzTUV0YVpVcEJTMjVHWW5Cd1prSndkbTFUYlRaeGJVZG5SazgzWW10d0swSnBORTQwVEVsaVFVZ3hialF5WVhKVWExYzFiMkZQZFRKdVpETm1NSFpNTWtKV1dGWkplWFp0VW1oeWFrTldZWGd4YVRSMU5teG5VeTlqTTNWQlVEUnNPVlJXTW1SaVUwcG1OWEphWjFvNWJFVllZMFV5Y1dWWFkzSnVORVpwWTBNdk5WSjBaemhZU1UwellURkVkMkkyZGt0M01VcDRXV1ZIY2twMlJHVnNPR3RMWVZGV1dHVnROVk00WmpFMU9FeG5OVFZZTUM5c2FGUlRha0pIVDJWM1ZtZzVRblpXV1dNM1NrSndZMlJyTDJGVk5GUkRZbEZXVUhSeVRsSm5kMDFYV0ZoT2F5dEViRk5VY25FNUwyNUZaRXAxZFV0SGMzUk1kRUZJZG1SS05tOTJTRk40ZFVWMVIyNVNhSEI1VlM5cWIxZzJTa280TmxGMlNWZElTVFJVUVRCelVXOHdSMjlOZUdkb2JTOXFTbkJRYVRKRE5FWjZSVTEyWWxJemJDczNValo1Wm5OT1pEVlpURXhPUmxGSlJXTTFLMk5HYUhoM2JXZGFaVWgxZFVWS09HSkVOM0JwZFRrNWMweFZkUzluYWsxMVV5dHpTeXN5VFhsMmNETXhhVWdyZVRkMWFFeE5kVGd6UWpGVk4wODRjbUZOYVZkcGNVeFZSRFkyUkhsSE1TOVpaakpqUVdzdkswRXJWbXhhVUV4RU1sUjRXRXN6YldWWFExUlFRMU52WmtKT1ZscFZNVU51U0RKd01uTlFkRlJoZW1GclVtSnZVRkJETUZkYWJrUjBaR2hNZG5JMVpsY3pha1oxZDBGV01HaHhVMUpxUzFGaVYyaGljRlYwZW5kVFNqZzVhVFk0YjJGc01UWldWbWxCUXpSdmNuUXdhbmhCVDNkVVdsWldTMFpCUVdOdEwwa3hVWEZUTnpWVVpWTllibXcyUVdReWJrRmlOVkJQVGpBd2NWQmlUbmRJYURWV05rNVBZWEJJU0cxbksyOWtVa3R0UVZaeFdsVmpOa3haT0RCVFpWRjNRazl5U1V0NU5YbFZaR1ZTVWpCb1oxSTNhblIzY2t4YVFuWnlPR1Y1TTNkSFdrazNVMjFWV0drMU9WVjJSVlE0ZG5GdVkzSTRaazFsVURKa2NXSlBlbHA1VTNOUVpraHVjWGxZVWtkbVNuTTJTSGhCWm14UWIyUm5UM1pIT0ZoWGNrRTRabGc1Um0wNGFpOUZUR2hGZG1jdmEyRTFZa0ZMTlZONWNtSllXRXhhYzBGM1EyeHhSbFp3YmxkTWJFWm1PRUZ0VFdaWlJqWTRURGxZYm14WlEzSllhM0ZtZDBoRmIzVXlXRzFHVW1sSVZXaHBTSFpuU2tGYVlucE5UR1ZtUms1SlNuUTFiRTAxZW1Ga2VVZDFRMDFIYVM4MVJGUnRabkJRVEhWc0wxQnBabFp4ZERac09UUkhaSFpzVDJOVWVITXpNRXQ1ZFUxdGNWYzNUWE16Vm1wUlVHcDBUWFl6WW5CbVVuZFlPRkJOYlVZMVZreHNXQzh4VXpkTUwzQTBSazF5VTFKSk5VSjNlV1ZPTTBoUWRsQXZRbEIxWWpKUUx6VjJaVE5qU205bVJVUXZReXRzTkRWWk1rWXliazlrUTFoRlRVSXhlRFk0UmtVNVptOUxiVkV6VWpVM1Ntd3JRakJKVEZSd1FuZDBNRUkyYWtodEsydEZiVTlhTmxkdU9XRmtUalpEZUhObVNYcE5Nbmh6V2tneGREVm9NakZXU0ZnMVRHbENjelpIUldkNWN6SlhOMFptV1RobmJHa3dWRnAwVlcxTEsxVlhhVFZ0VlhsMlJVazNSVzlCZVZCeWJIRmhWUzlrTW5JNFRHczVVRFZpVnk5MU5FNHlhRE5SWjBSTGVFSnhTVTB3VTBvd1ZXSTFZVEIyUzNWUFFqSnpXVGd2WVZWeWRITlJURW8xUlRnMVRFUTFXR2RPVG1aclFqWkxXaXROVm1wbFdrcDRaRVI2TVUxWFZFNDVZWEkzWkdkMVNYcGtTbEJwVFRoVU4yOTBiVGd2U0RaSU1ITTRjMjUyWkRGS1pTdG1WbGh0TTNGMFduRXZPR3AxYkZCTGVYVllia2hhTXpKaVNVMHpNMFpzTTI1bVYwbFNka0l5VVVwcFJHeHVWa2h5VVhKVWRsSldiamwyYVhseWVEZ3plbTgzYjA0M0x5dENabFpQVWxCVFptazJkVXMwU1ZBelQyMVRMMnQxWkRCWVkyNTFTa1ZUVEdwdGNFeHJNMHR5U1U5aldXeDRUSGR2ZWpSbWFpOVVjbmhRTm5kQk5WaDRTMEo2UkdobWMySk5Lek5KWW1aS0wwUldVRUpsYUc1dVZqVjNiVmQzTHpGalEyUmxXRFp1U21oSVJVdHJjekYyVTBwM2RtNTFRbWxRTkVRcldXUTJkbWswTjFWblRDdHliMkpSZG5rM2NEQTVlRFZCY1dadFlsTmxTVWN4ZDJ4cE1HMVdlVms1UWxKRmJsRTJUbTlNVmxOeGNFOVlTV1pXUlRCNWRUVnZhRmxVU0dGT1RWSTNLMEpoTlVjM1ExUklRVkV2TVcweFZEWnlTVTE2UnpSVGFWcHJOWEZqTDBwWVNrMVlRVVJWVGtOVlJHSkZWbGxVUjFSQ01qZFJURkJDU3k5UGNIZHBlR2gwVldaR2NIQk9ia0pUYlZjNU1ERmhPVFJxYWxCclIyVTRjbkpXYm5CTVRqVldWVTV6V1RsMlp6ZDJVa0poTVhSc1ptTjBRVGN2Y1dwa05qZFBia3hqWXpKeFdXUmlPRzF3VTBSVVZURllVbTFsYVhOSE5qaHpTRk5wUldsSk5YbHpWa0ZSYmt0M1Z6TlVTWGgyVG1GRFVFbDRWSFZDZFVObVExZFRhR3RZZHpjMldYVkZaMWc1VFUwME9TODJWbEpNWlhoUmJXRnhiRmRaYjNReWJHOXRjV3RHWVUxdllrNTFWVzkwVFZaTFpFZEthVFprU0VwclNWcEVWRmxtWTBocGQydE9iRWx0TlRGeE5DdG1WV3BvYjI1MVVHNVhWSEp2Y1RnNVdVWnBOazFPZW1KSWEyZFZZbXh0T1hKeE5qRndTMkY1YjNFMk0zRkxRbloyYm1NckwwUnVNVnB2UTI4M1JYTjNVRVl5WlRSSmJsWkdhbFF5UkVWTVdXbFBlbVpwWkc5aFZFWlhRbnBLTTBWUVdsWnlPRUZ0VG5OdlJYaHFSM3AwVFd0dGJHOWxlR0ZqU1ROWVREazNZM0IyY2tKMFpVNDFSbGczU1VoSFN6SllSMWN6WnpZclZqWlNjR3hsU2xoT1IzVkhNMWw2VG1WS1dtRTRSRWhaTkdzMVkwMTJZMHQzVERSbllXb3pVVmRqUTNOeGFqTnRRMHRJV0c4eFR6VnhaSFkyUWk5bU9WTlNVRFl2V1M5WGVraHBhRmhVTXpSc1RHaGhVR3RaVW1wNmRtZFlPV0pTYkZwdU5YZEpWVUl4VEhBemIyUXdSM2xSWVdWWk56VkdORkJGTjNGS1VWVXZNVUpwVW1OcU5GUnFkbXByVVc1dmNWcFZTUzlQWlZSNlIxZEdTVkF4UVZCRlZYRmxURUl2Ukhkb1JVdDNXbUkyZDI5b1kwdzJZVWhZVWxaUGJIbFdWVE5xTDNKSGExcEhlR0l6ZWtSdVpYTlBkVmt3UmxwUldYUldSMlZpZFd4NU9UTnFWakJ0VWxRM05EVnNRVTlFTVhSNFFUSkZXVkpZUzA1cFFsRldkMWR2U2pOMmJUbFFjemR2UnpWbWVIWklSMDUyYml0WFUzRmlhMk56ZDNaV2J6TkViMHRQWldoUE5FRmxiR1pzWTFrdkwzbFROMHBVTWpKUE4xZ3pNV2RzTlM5bGFHNUJhbUZKVjJ0d01YbE1TWFJ4Ym0xT1VWaExWbEZMVDJka1RIWXdORzh6UW1JMU9IcHRZa1pVZDNsdGJqaEhiemcxVWxSeFdHdEhSbXRTUm5obGIxZzBZak5WT0d4V2VsTnNiWGQ0VlhnM1FYbzFaa1k1VGpGaGJXcHlPWGRIVW1zelEzVkVielp4V0ZGMmIxSlBVVzlOV2sxeWJFVXlWa2hIUzBzNWIySk5SVlJyUm01M05tOUZUVVpETW5OMlVrYzBObTlaU3paalprRTJLM2d2WmxSUFRTOTBSelZUUVhKd0t6ZHdUM2hPV25JcmVFNDRkbXh2TnpWSkt6aEtUQzgzYURoV2RqRTJaV2hwYURWRU1WQjVVSEpXYXpOd2RGTmxVMGhPYkVOeWRsUlZjbVZRZVN0YU9UTlZiRGMxTDI0MVNERkplV1owYTB0cEsySnNNV1ZuVTNRMGJscGFjVGMwU0RZdmRFSm1OMjlVVkVjeVMyWlBjUzlVTjB4YVNXWTRNSFpUUjA5Tk9DdFdkMk5LT0dFMU9WaE5VRlZxVFd4NlNVdDRWWFpGV2pOWlVXaDRaRWN2U21SVlNGbGtkM1ptT1VSd1JHaGlaekpXYURKc00zSnNVM28xUVZSU01GQnNNMjVQY2xVelNYTTVOMHRhUjI1b01VWkZXVWRvWTBkcWRqTlFWa2RpU2tzdk1uZEJkR0pwV21Rck5tRkVXbFZ5YlZKRVdUSlJSMDlyVDBOd1JEUktNRXhWUTBRdmRXbEpXRFp4YUZSQ1VXTnJVMVI2WldwbGIzWmFjMUZWZFZwUlFsRkROVU5EUmpaeU1FMWtZWGRqU3pGUGIzQnVkVk5pVVRCUlRHMWxha1pFYlc1S1NtdDJNR1J6UXpKNlRHd3ZValpKYlhwTmJtcHZObkJPVDBaRWNXaG1kV2Q1T0RaWU1UTm5VUzgyUlZoUFkxbDFlR1o2T1dreU5WaHZXSGhrVkVSMlZITllkbVpWUm1VelNDc3ZOMWQyZVUxcVRESmpNRXBUWVM5UlRsVjBOMUJ3VkVaVmVXUm1iWFprTlVKV1NHaFFWUzlEUTNZdk1FTlhZM1ZCVGtGUWMxVmFOVE5TZFRKVWFpOXZUVGhSTjBsT1JDdG5lSEoyYjNWa1FtcHFlVEpoVml0aVZqQnVibFoyZG05WlJIaHFTSGR2VG5wNmNVTkhiVnBQT0ZZM1VraExiVTByVldGVkwwUmtUa3cyZUZwSVRHTkRSbU5ZZVhkcVNIWnJPV1pHWkd0d01HdG1VSGRqZWpsRFJGZFFjR0ZUYjIxUFRYTnlWV2g2Y0dkNksyOU5RbXBFUjJ0emNIRXphRFU0YURsMlMxSTBTU3N4ZUdkaVVsSk9OVzR5THpZMU5FUnlaR3BoUWlzMUswMTJUMmRJTTBsd2RrZERUVE5qTVc5VlZ6RnNSemRyVFdFdmEwMW1jRk5sYVhKaFdUbGhWVEl6YldkWVNqUkRjRVUxTmpjck5sQnRhRzF5VTJkelUyZDJkWHBEV1hjNFNWcDRabFJzZG1NeFJscGtTR05pVEVJdlIzTm9NbU5HWjJZd1R5OVVXVGxvZWxKRFEyeHJaekpJVjJWWFZEY3dkbUZXUzFsUmEwcHlNbkkzTlV4a1ZVdG9ZbXM1VkVvemRFOHZSRlpSWkdoSVFXVlNZbWcyUlcweFFrTnNUazlSYUZabmRWWnJSa2xGZUV0MmF6aEpjbWszTlhnclVTdHVNa0VyVVRoYVRIRXdSakpHVXpoWVVIaHBVbXAyZWtOS1VUTm9TSFp6YldWclZWTnplV2h5U2xRMVZITnNaM2xOYkdzMGR5OTBVRXR6ZHpoV2NVeFVPR3BOT0c1emVVRnZWMUo2ZDNoR1IxUlJka2w2VFhadFJqTlZhVmcxYjFaTWVVMWtZemx2UWxOMlFVd3dZalFyWVVGWFUyWmtRMGwzY3pCeU9ERlZSekZ0YjJKWGVrWm5ORWRwVTBGYVNEVlJkRFJYU0dOM2RUZEVUR0Y2UlZobFIyMHJWamRhZW5WSlFtMHdkR04zWkd0VVpsRmFjMk0xT1VFNVRqZzFhRUZTY2s5R1MySnBTRUppVFZKblkzSnJOUzlKVFdOTFkzaE5SbXBOSzI5TlIwOW1VVWhhVkRNNFpESndVVWxsV0VSbVprZFRhWFpwZG1VeVQyeHBhamM1WlhGV1RTczRNMDUwWmxkbWEwWjJjazFuUjFscGFWRlVla0YxWm1kclpsQTNjRUV3TjNGd2IwTllNREJOZUVreGVFVTRaMHhoYTNWTFozZEhia2haTTFwSGQwaGhhWGhSUXl0bWNVMUliRkpuZWtwT1QzVldXRTFpYTI5VVZVMUJWSGgxSzAxQk5FTmpjMFJWWTA5eE9XUlVaVWd6VUVkd2NGbHVTbmx2YUU5RlEzbHlTMUJNV1c0M2J5czFXWEp5Y2s4eE1ERlFSbWRxVnpKMmNrdFBia2hDU0dGUlJrVlRka0ZJVW1wNFduSnZOWGxXT0ZSWVJXTnFka2RITTJoblVra3dlWEp0ZFhWa1FtRkxNR3RVVTFWMVlXRnhiMHRuTDJ3MVQzRkxjRXRJWWsxUGF6aDJaSEI1UzFGSFRUQllNRzE1ZDBGQ2RrODRVMFppUVRSRmFXMTZSM0JPUjFKaWN6SjVUek40VjIwNFVGTmFSVEpGTm5Wc1JYSXpaMVJPWms5UlFWRlhSa3hoUjBJMWRuaFJTMFE0YmtWemJXaDBjMVJ0TVhKaVRrNVNSSFZKUTJOcVNqZFRjM1JMZDJvMVRYWk1USEUwVkZnclYwZDJUbGRpVHpsdk0zZ3JUMkpQY1dGUE5sSjZiemRvTkZrMmRYZGpVVzQ0TDBkSEx6bEVjemt5UzJkRVlqVkhRaXRIYlVodlkzaHVXRFJqTlRoWmRHSlhVbTg1T1VjNVRIWm5SWEp1UWtGbVNsUkZUalp1YW1KaVZtMDNjbFJEV2paaE4zTnlaa1p0YUZsSldVaGlVREE1TldOWGJHeHdjVmROTUROd2QycEtkSEIxVmxoWE9XTk5aRXhtZGpaQmVXVldlR0ZKTVZCblF6ZE9lV0V6ZGsxTVZteGhkVFZpZWpCQmFVVmlNR1ZtVVVSWVVVVlBVeTg1SzFKclpXMHdWVVIyU25weWQxTlVkMEpTYzI1a1RGVlBkME0xZUZOM09HSkpVRlJJZVZkVGFVNXdiWE5tWm5aTGJuRTFPVE5ZSzFCYU1sSnVXalY2T0VkaVdIUXpZM0k1UkV4bWRVWmtLMm92ZUVrNU4wTkdVbE0zSzFsaWNWaHFWakYzZURCT01ERXJSbEo2VFN0bk5uaGxPRkYyVEdoU1dqSmtRek5STm1seU1HdDFPRU5STTFNNFpEVTBiRVpXY1dRcmRHMURVVGRqWlRsWE55ODNXRzFtTUhKNmFIcHZVSEZzVUVrd05UWmxOSFpRU0dFMlNXNVVlSGgwY2s4ellVdHFVbk4xWW0xSVkyWmpVRVJLZVRoNlNIWmFhMVJRZW5oeldtOTZabVpyZUcxd1pqQkJOa2t6TDIxSksxZzRPWGR4U1VoTU0xWnVPRGhOZUdsTGNVNHhhbFJ0UlRSMk9VTTFObUZ5ZFVwdU9YQjFTV3RoUkhsVWFFWkVSVk4yVFN0cGJrcEZjMU51WXpZNFVHc3dlWFZQWVc1MGJITnhURTlZYUZsR05VOXdkR1pxYzNGamNsbzNXbUlyVkVKTVptUnlPVzlTZWpGeVZISXhMM1J4ZGs5MlZtSlBaSFk1Y25GWFVDOHhZVll2V0VkVFZHWk1TazF1U200d2NERnRXVmw2VlhoSlJVSk1ZME5CV1VGQldXOVBiVlprY1dKeGJHbDVNelp2VWswcllsUkdLMnBzY3poRFZWUjVkR3M1V0hjNVJHNVlUakZOZEdaMmVqaHVlRXd2VGpNeFRtUlhWalZYVmtaQ1pFZFJhbTQxVDJaclQybE9RbE4zU0c1dlZVb3hjWEIxUzFocWRuVnRLMmNyV25OVUsweDRRMHMxVjFZMVVGUndSM1V3Wkhsa2FVTm1jbGx1YmpWM2J6bHVOazFXWm5jeWNqWmpiVTVQYldwdVpHRnVXRzAxWW5GTE5DdFhiR2RaYW1RM1JFUllabmt6ZW5SWGNUVTBlalZzY0VvM2MxUkhOMHh6VkU5VWExTTBkV05xY2s5T2RtNXZZVU56TVVWd1VGcGhTa3ByVEdneU5IQlJaV1UwVVZNMWIybEpWVFJ2U2xoVlZqbFNSalFyUm5sclRteFNVVmRYYjBOWFVUUldSMFY2ZWxwbUswSmhZMnRNZUZGS1dIQnRUREZXYVN0TVQyVjJUWGd3WkROT1JsSlpjMjVRVkU5MmRUazJZbXRsYm5oYVIxbzJiWFl3TlRKWlJrRjBhMjlUU3pCTldrbGhUU3N6ZUVWdlRGRXpXVUZ1Y0dwTFEwNWpPRkpQU0V4a00yaFRUR00xVkdsc2QzVjBNVTkwTVZCdFF6aHdhMmxDVkdkM1NEaHNUMU5tTlhKaWJHNDJUbVZZVFZsbk5uQkVjRWt6TUhGc1RWQXJObVJKYjJoR05HZENkVWROZDFSa2JYQnRWbXBUZWtKaVZsZGhhMDl0Y0ZwdFdFY3JhbEpzUkhSbVpqTTVjbUV5Um1obFJYZEpaakYzZWxCcWQydEhVemxZV21kellrbHVTSGRuVm1ocFJUSnBiazFtZGs1Q04ybGxabnBoTHpVeWFGZ3pWMFYyTDJwU01UZFBXak55ZVd0eFJ6TXJkamhJTjFJd1owODRXazAyTUVGb1JIbElkbkJZUmxkQ1ZVVmhNVXBDWVZabFNUaElNVUozY1RjMlZ6UlBXRTQxTXpsc1dsaDRPRWsxVDFsVE1HcHVWVTlpYVRod016VmFabFZsZVU5V1FWaHhRekJ5ZVdaWWJpdDJVSHBuU1hoek9FWkpTbWhVYm5acFYzSXhSSFJ6TmprMFdGRkJNM1l2TjNwTFpHRm9kV1JGVjNSNFdtMDNTV3dyVlU5dFpYUTRhakU1Y1hwUlNIbzVkVFpQUjFoSlNVeE1PR3gzTVVaeFl6SlRRMUZZTVRadGRuVTNkRmt6ZFdsc1FuQjNOVnBFTlM5WlkwaFhRV2xXYURkbWEzcFRVbGhqYm5RclV6VnRlRXhCTm1oUVduZDJWV3RaVUN0dVVsUk9SVlZDZWt4d2QyVnpWVE5QUlU1NFIyZDVaMEZLVmtSelMzaFZjRTFLWms5RmNIVnpURWhKUjBwWVpYSnlXa2hIZFV0M1UyNDFNR0Z2YjFKS2JFcHFObE5JWmxwc2JYRTVibkZCVG1WbVpFSm9LMDh6UkdNMWIyRjRNR1k0WkZCbVFtVmhPRmRRVUcxMWRWaG1OMWxKWWtSeVp6SlFlVFlyY1dsS2VWUXJSakV4WjBrMFZtdElWM1JvVWpaWU9HSjJhelZyYlZGRmFIWTBOM2xJUjNjMU0ydDRLMU0yTld4a2VFcElkVWx1TVM4M09EUkpSV1l6Ym1wMGJGcGxaUzgyTVhadWJrUXdjbkZ0VG1FNFkwZGxPWEZpUlhCWVJqUmllRTFhTlhGbE1tMUJZMGsxVlVzeGQzZ3djWFZ6WVRGaVZrZGtVakZUV0ZoMVYzVkxPV0kwY2pkdEx6aElPVzFwV0dkVk5EZzVURkV5UjBSdGJqSjBXR0kwWjBJclQzVjRkMWR4T0UxQ1VESmhTVE5YY1RFeVlYaFhUeXN5TTNBeGJuUXZSbVZOY0ROQ1FVWnlTR1pCWW1WamJHcFRTREI1UjJ4amRFTXZRVko1Ym10Nk9YTm5RMUZKYWxBMFZYSm9kMEV5YVVkbGVIVXJjRzlWUnpaSFdUWklOSHAxV1hWeVYwY3dPRkJtWWtGTlVYZFRPREU0YW1WQmQyVTRkMEYxU0VWVFNHMVRhVVpNVDBRM1ZERkpXbmRWVUVSMk9EVnBVbmRoYVZoaFZ5dFpPVVF2VURkVlFXbE1VVGh4ZGpSaVJHaDZaV1ZNT1Vvd1dreGplRVpFVWtNM2QybEVkMDB4VmtKaVIwMDBSbUozT0hwVU5WTlhUVFZ2T1dwbFlrUmFNVWhzUldzcloxUXJaU3RaYW1WU056TkxLMkpwVEVoamFUaFRTM2RuZW5oSkswOHZPWEJoWlc1eFlXMXVjVU5YVW01Q0wycGlVRVkzV0hOSGNGWlJMekZaWmxSM1dYRkpOemRCZWxkRmEyaG1OVGRLV0dGcFNqUXdURXc0T1ZONmNIQnNiRXN5Vnl0dWJqVlZhRFZVY21wT2VuQm9OMlF6WWxOSVNtRTNZbkpyWm5adk16TnpXa3BrSzJkSU1HZ3ZUMU5pUWpRelFVMWtlVlZ5UW1kU2MyMVZLM1pTZVVkRWVFcHdOV04yVUZoWk5uTk9VMUZ4U0V4NFJWazRWWGQzTVRSbGFTOW5SQzlIV1hSSVVEZGlTMFpZUTFoRGJXUk9kbkZCTjIxV2FtaGhSR05vT1V0U0wzUldkbUZpTlhFNFdtVnFUM2RFV1dncmFuUnhPRGR3TVhsNk4ybDJVRXRSTDBkdlVTOURZemh5YW1WMGNIcDRPRWN5WlV4NGVscFdNMmhVTmpaMmNsUjBlV1pLZW5vME1qZG5lSG95UVVwM1pqVk5ZV05tUmxoeFZrMWlTRk5zWVhJMWIxaFNLM1ZPZWpWc1dqTm1NR295V21WaVJrOXBjVGh2UVZZeU0xVjVaRzh5UjNkbFNtTnhRVVZpUWpFeWNWaFBTbUptWWtOaVJtNHlNekZsVGl0U1NVd3hVMkZSWTB0ME1Ia3ZWMFpxTlhReVlsWTFWakExVjJWV2JHUmFlVWx5VUhwalJETklWM3A2UVROc2VYcGFXbkZ3TW5SWFdsaG9VMGhYTVVNM2VtZFlSR0UzVXpWTVltVXJSR3BrY1hkUVQxQTRTMDk2TlZwaGNtUkpRekoyVVZobVIwWjBXbkphTjJseVZqazNWRW92V1c4d2JucHJRVFZpY1ZSbGNrY3pTMDlRTjBZeldYUnVhbTFsUzNCV2VUbDJhV05GT0dSRVNWYzNORWg1YjB4c1VscEhXalE1Wmt3NFRGRkVaamxpYWk5cWNGWXZaVU0xYTFCeUswSnBOV01yV1ZSbGNFSTJjMWcxWjBKYUwyaDFaVWt5ZDI1QlFtcEJiVlZVVjIxcmEwaHhZVEphUWpaa2FuVjJiM0ZLVVVWSk9GaHlNR3huYkRaSFVYSlRZalJzVnpJcmFrdE1TMXBHWkRsVE9YUlNSek5qUm1keU5rMXZSQ3R5ZVVwd01GWkpWMmt4V0ZWV1FTdDBUazR2UzNFMFZ5dDFTaXR1VGpsRU56SlBUM0JLVDBGclJrSkJUMlJVYWxsd1FqQnRlWGhrVTJzMGVFUldTa3d4TlZWVU1Fb3dja0ZUTlRCYWQxcG9kMVZVYW1oVU1GbFhUVXBYV1ZCU1MwNTZUbUZGTURObFFqWkZVRWxtZDBoc2RDczVNbE5IY0ZGdWMyVTFSalZ4Y25Fd1MxUkxXWGRNTmxac1lWUlBUV1k0TXk5WWEyNUxiR2hUWWxkcFMxQnNObmd5TTBFd00zWmFOREZTVUhJclExTkVPVmxVUWxCVWJUZGlaMDFxWm5GS00ydEZabGswT1Rod1dEZHBjV3RyWVN0VE1uVnVLMnBwSzI5dVpXOWtTbEZ4UzFCdlRHWlJaVWhRVGtSaVMwVkdUMnR5VWxSVWNrdFJOMDF5V1ROc2FIWnZiMmt2ZW1SV1Jrd3hiRXRTTUVaUVRIRmtVRmx3ZEVGRFN6UnhibGhWTUhBMVVXa3laM0Y0THl0eGNXVnFUbE0yWjNFd1JrMW5WamRtYW1WQ016aHdNVTFFWkVoaGJVMW5XVzVMVlROc1YwdHBjR3hEUlhjeE1VNVJkR3AyV2pRM1MyVm5iMmxDYzNBMVV6WjVZMlJ3Vm5BeFN5OXpjVTVsV0RSbU1WWk9NRnB6VUZkVkwxSlhLMnhDT1dwcVYwVmpWR1ZWWld0d1UxUTRVbVJhYW1GUFVYSkxLMVE0Y2t0UWNtTnZhRzlMV21abk1DdElhVVF6VlRoNVdVOTRialYxWmprck5URTJRMWgzYVVGUmFUaFlhbTVYWkRsU1NtUmxXV3BpUm5GMGVtNURWbmRYVkZJM2VsQnZkRWxLYW1vMWJTdERURFZqVjJzellYbDRZa3g1TW10aFRHUm5TMmxJTmsxMU1FRTJWMUYwWWxONlNVSmljVmxLTkVOYWIwWk1iV05EUzJadlJtcEVNbE53VVZjd1ZGYzNNR2Q0YlUwNVZtRkNTMDlLTUZWeFRsZGhMMWhXYjNRemJqQk9OM0V6VmpablRXMXhiVVp0ZGs1UmNtbDBUV1JyTWxNM1pXbDFZek5JVjFKS2JHOHhNSEF6UnpaUk1HbDVUbkZ4VG5kclYwdGphakpWYUZSYWVHOXdObWQwUmtwT05sVkdUeTlvU0cxa1lXdDVObE13YlV0Q1oyZzRNbXN6U1N0NWIwaEhUVFZSWlVWUVpsZERZMnR3YVhkUmIzWTBhR1JzYzNSUGQxTmlNbXRHWTNKV05uWldiRlJUV201S01rMXJjVWRrWkRCMWFtcDBZbEpPZGpKWFJUSjFZMVp3YWxaR2FrMURNMDg1TDNsdlVYSm5VVVY2YW5aVkwxRllObkUzVkVkSVZXRXpXRVpCTjFoRllYSmpObTkxVlRWdVRuSXhjRVZNVVcxdldrUXJVWGQzVmtOcllXUlVkblZ0VTFVeU4wNTNWek5LYUVwUVQwaEdZbmRWZG1oRU9HNVhZVE5ZUW0xS1JsWmhZM2gzVjFrek1EZGlVVmw2VTJKNFl6UjJVV0ZVVEZseFpVRXliVmhtVVU1WE0ya3pXRWQwU0d0dlFscFJTRmxDWTBSNlIzQnVia0oxVVV3d2NIaFJhVUV6Y25jMVN6Z3dTVUpMU1VkbmJFWmFMMmQyUkRodmFXTTFWa2xFY0dGSEwweGxTVmRvTVdoTmVXNHlPSFpzUW1OVFVYazFNRkZTV2pWdlNtSnlNVlpJT1c1T1prUlZja3RzYVVwdlRtZHZWSEJaVFVWdVlrTmFWRk0yTjJSaVZFSTBjVEpRVm0xclFtRlZSM0JEWjA1dlVqbEtSRzF2TWxGQ01HeDNTbk01Tm5sekswZFlXbTVzWTBrdk0zZENSWFJpY0dSbFNIQlFNRnBSWld3MGVHMHhMMEpaYTFaWlZsaHBLMUJQTTJFMVVrSlJiVTE1Y0ZWMU4yVnlVbGwyV0hVNGVqUXhSSFkwYVhkMGJYUnNOblI1TDJVNGRYaHhXVk5uUTAxSGNGVXlRbGxTTVdFMVpHbEhjV1l6ZGtscWJXWk5VaXR3TDBrelRWbGFSVll5Y0U4MFUxSlNja3RXYkdKQmNFbHdRbk15UTNWM1lVTm9hREJGTldobk1rb3JkbE5pWTFWWmJXRjRha1poY0hGeVdqZzROMm94WW5GV2VtOXBNR1kyYlRaWVdVUklUSFZGU21ONmVVbFNVaTh6VEcxcGVtWjRNRlE1TUc5SlZrWjVXRVZETVc5MVIySkJhWFowWVdwVVQwWm5UMlF6U2tsUFVIcFZhMlF6TkhSS01VSlViRnBIVldGalF6bHRjVlZLZUZOb2VFeFZTVWxRTmxWTlRIbHBlV1ZOU21FclowUTFZVTVWV1ROTU9HOUlRWGd3VkdJMWRDdFpSa2hUT0ZKdFVqbG9hVVJ5UVRVd1VXaGlTV2hzV0V3MVVsSndhMGRZUTBRMVZFVkdVRXBaYmxWNFVWZFFlbGhwYkM5TGEzWm5TMU5vYlV0Q04wOUpVMVp1TWtWSVdUbGhWa0puZFROVlFXMHphR3MwUTNJMU5EZElkMmRFT0hOb2FrcHpUbXRwYkRKRFJTdFVMMloxYzBkdWNITnFiWGxHUzJKcVptVkthMWRITmk5R1ZVSTNWMGxoZGpVelNrNDNWWFV3Y2pWcFpHaGpWek0xY21WdFdEUkxjamMwWTB4dGR6azVSMGRFYmtWUlN6QlFNRFJMUVV4aFIwbFBNSEYyZUhjelVXdzFVVWRPZW5kdmFqbFpWemxRWmtoaGRuVXliM0ZSVEN0bFVYSjNSRWxsZFhVeWJXOXJSV1UzZUcxaVZVdHJaRXRoTm5SNVpTdG9MMDVSV2l0WlZXMVlWemhsU0hOVFlUSjFkMkpIYURjeWVWQnFlamgwWVc1SVpIZzFXVUV2WldGTlRqWlhUSFJQYzAxV1NFOXViRmRLZVhSWVpGZDROM1kyWVdsYWNrVlNUVEF5V1U5cVVEVXlSMDA1TDFKWFl6TnZRVTB4UVVkR1JXNTBjREpxYldONmQyWlhlVUVyWVVRNEswczNXV1pJYkU5Q1RIRkZhbWsxYUdJelRIVTBibTFTU0RsUVYwb3ZNWGhoVmpWaFUyeFhkek4xTlhCVlVWWnVUREEzUTNORmRGRTFUV05WVkZodFZsUkhSekZEV2xSeFVVZFdOSFJYTlU5dFRqWlNUa0poUzJSS00xSXpiamxDV2tkTE4wcDZTMnRoY1RSS0wxZ3dZVll4UlUxTFVuRlBUbUYwYm1obmJ6Wllka054TUhKb2IxTlJka3RoT1dWSVlYcEpObmRzUkhGVmVrNXhTMmhLY0RGQ2FFOXlTV3RVZFdjMGNFRnNLMlo2Wm05TVZGSXZibGQxUW1abFV6Sm9lazR3TWpNd2EweDRjaXRyTUZNdmQyOWlZVFEyVkV0T2JTdHpUMmt3ZFV4VFRVbHhTSEYxVmtkVFowWllRelEwZUVwR2VscFhjelpNVDJVd2VEZDFablpMU0RoeWNsUkxXbWRwZUN0VVJGQlVlR0l2VWtGeGRqUlBhbGhLWlU5c1pYQlpSMGRCVjNSU1lWVlNkVzlWY21acGFrdFhiV00zVERWUk5VYzVabWRtV0V0SlpHVlNVRFI2TW04Mk9WbzBOSGhPWlRGR1ZYVk9ObWc0VjNsNksydFNkRlp1T1UxaE9XNXlhVlpZZEhsbWRUSllUR3hwTm14NmVrRmFjRmRNZFV0cWRqSXlSMDgzYVZSTFpXdDJRMGhHY0ZFeGNVcGxTbWxqWTFOTmJEVXhiVmRXTUZKaVdXRkpUVTlxTjNkNFdrRlhNazU0T1dkdVJUQlRVRTFwYlV0eFYzWjZOV2t5TlM5a01rRjBNbmxZYjNBNFJYVm1keXN4VGpNMWVFaFNVRXh4Y0hSWlpVVlpTU3RoVnl0YVIxRklVV3BzYzFsaVZXaEtjV0ZsUkU1bE0yUjZVV1pHUVhGd09WRXpZbXdyZUdkNFpqa3ZRbGgzU1c5b1VFZFlLM0E0U0d4T1owazRkVE5uYmtSWVFrSjNORmcyT1ZwalpqaFpaa05QU1ZocVVqVjZiSEYwV1V4alpXVXZkVE5tWm5SUldITnZiV0k1ZW5rMVpVYzFWVTVqZDA1blJsQlZLM0ZtUlRGTGRWaFNiVU5pYWpSSWFUaG5XV3cyZUZobGNqRnFZMmhvVEV0RE5tWklRMnhTTTNoUFp6RmFSRTlVTkhGR05FOXdaRVprVFhKVlQzQkNVWEJVYkdSTU9WRTRaelJRY1hCblFURm5ZV05aWkZOMlNqSndRWEYyUjNNeGVDdG1SWFl3VERSdlFrczROblE0VVRFME5tTnpTVE53VkVObFFuRTRhSFpuU0ZsTFlXMTFVbmM1ZERKT1ZpdDZTRWgwU3k5eFQwSmtNVFI2ZVRoUFZWcHpUbmQxYVdwTlkxaHlWa2syYjFkQ1lWVkxTREFyV0UxQ2VWUklTRUZNY0hvMU9WVnhNRkpJZEhwQ1pITkZPSG8zWmpCNWRuQlVLMmRrT1V0bU1GVmtTVmh4ZFZaUWEzcDJjQzltVVhVcmFGQTJXRFUyU1Rjd1QyNXhZbmhQUVV0UlFUQjNkMjlvU0hCTU5FeHphVVprZW1WdVFuaENUVzVDTmxKMFUzQjFZMWhGWVM5SVN6WXdTVFJPUm05UlF6WnROV2hzWVZkRk1XTTFhV2RsTkdOYVZEaHZlVGhxUVdkbVVXTnRNMHBNVFZoRVVHUmllbG80UWtaSWFrTXZlRWRVU0haWE1teERhMkZFWldveFFWSXlMMmM1VVdoQmFVRm9hMlpNYzJSblJ6QkhVSHBGYURKQmVtbDJaVGxWUWpkelFWUjNlVU5aWjBnMlNYWlFVR05RVTB4bFptMVVObGQ1VW05S1dVbzJiMFJIUVVsSlJpdEdkekp4VWxOalJEZDNTV3RETDFWelZWcHdaVTVKU1VNdmJUUlFPV1ZzTlZOaGJEQkVibWhzSzFrd1V6TjRSV0pFUTBFMWJuQXpUMmRXTjJkSVJXeEJlVFJQV0dsMlJUQnFiRlpQYTJoR2VFeHJRbXQzZUZRM1VXMUJVWGx4YVZod1owcDVValIwZWl0VlRHZFNUalpXYnpsek1XMU5aSEV6U0cxek4yTldjV05QV0dodlMxVTViRkZsT1dodlkyMVROVGh0VGpKbk5WcHhiMGs0UkhONUwwSTBVRU5yVlZVeGRGcEdhMmxLZW5WWldXRkZjM2NyY3pGSGMzZHRRM1oxVVVKcldURlVVRVJoTjA1YVVXZFJSREpSYm5FM1V6aDFXVEZ0TkRGSFZETlBRVVJwVWpKaGQzVndNVFZxTVV0allrMW9la2RJUzJaUVdtdHFXSFE1YVRCQmRsQTJUVEpJZVZwdFEwMUhVVk5VYjBKWU1ESlJUREZ3VDJ0a1YybEdaRzg0ZGs5alIxbDRhbVJtYzJSQ2FUaENjRE5HYjFKTmMxZHFRak5OUjNaVFpFWlVVWGRMU21GQ2RFOXRSMUZVUW1KRVYyMUhNMUZOYVU1bGJEWTBSV05MT1UxNVVXTlFNRXB4WVhnMlRUTmFWMlZzVlVWTVVUQXpOVlJzV1VaeVFtMUhZWHBhYW5Wd1VWRk5aM1JOZVZkaVlsZHJOamt3UXpGV1IxaFNjUzlNY0ZGSlJuRnZRVkZJYjNKV1VVMHlUemxNYWxKQmFHUkhhbHBzZFc5NmNXZHJlSEpYWVVGQk5rRkVVbEZTYjFWM1dscEVXV0pPWWtGVWR6QkdVSFJxTUZkVldsUnNkRmxIVTFGVlNISkVjVzFCWkd4UlpuQlFWM2R4ZWtGWVIzRXdWMmRUWWxCalRtWXlZVFY2ZDIweVprNHlhbGh0ZWtwNVRYTXpSMWRIT1hBclZrTmFjbGhCWjA0NWQyVTVTbTB3YlZSaEwxSnVRM3BPUVdkSllVNVdOakJ2ZVhWa1NuWldXVGd4VG04emNHTlJSRVJEZDI5bVpWbFZhVE5uVTFkSk0yMTNNekp4TVZwM1EwTlVNV3RFYUhoaUsweDZWMnRQUTJkUk5XNVNjV1JWWlhReFRXRk9WelU0ZEUxT01XdERja1ZSZDNCNGJXOTZhVUUwU0U1dVRIcGFia3BJU1ZCR05sRnNNM1Z4U1VKbk5ETjZWVTA0V2tOQlRWWm9lRlV5YkRWdFIyRmFkM1ZuT1RGd2RGSnpNRUZET0c1Sk9ETm5NVlpMY25kWFZUTTJabWR4YURCYVVFZGxVRFpFWVRZd1pIRnlVbUZEZDJGTk4wNUVORkpyZDI1c1J6bDVNbkpLUVZKaVJIcFJTMjlSVlVacWNsazFRMVJ3VFZkdFFYbE5WR1JrWVU1amVYVTBObVJsY0U1MVN6bENZVVJXVWtKTlQyNXpUM013UW1SQlRYVXhTbk5aTUVwbmFqWTNkRkp2UjA1Uk9IbzRZalJYVGtwRmFtMVRWR0pLYWpSVFVucEhhMmRWUWtWNE9Vd3hhMmxFZFhCdllWWktRbmx4TUdSV05sWlhaRzlDUzA1VGRIQkRUSGN6T1ZocU5UZERSMGxDTlVKMlZITTNNRnBNYlVOc2QyVmhNQ3RyZDBkMGVuWmxUVE5VUWxOTmRHOXhaR0pyTTJoSmNrOVVkM0pxVW1GUGRGSjRXblEyTmpadlRYbFVUMlUyU2xkTmR6Wk1hbUZsTW5CaU1HVklTR3hTVURFMWNGa3dkVkV4Y0cxMFRFczBUa05LYjJKVk1GWm1Tak16ZURaNVVETnBabk53Ym5BMlRGTklhMVp5UVRKS2RYb3lWeTlyZVV4NVRUTXdNSG8yYWt4QlJHSmxOMEZGY0RSUlVHRlZObEZ4WlRSaGJWazJURmhtY1VWQlVUSnNka3gwV1VWTUwzZG9VRmRVVlhWbGMwRTJhRzlzTUhWdU9EbFdZMHhVTkhBMlQxQm1iRU4zV2tSMFpESmtiSGRUZUhoeFlqWm1RazV6YTIxbGFEaGlielE0U2xjMFFTdElhaTl1U205dEsyMDBRU3RsU0ZrelZ6QTNka1ZSTmtoYU9YcFlPRWRpSzJwT05TdHpMMVJ6VUdscVdEZGpTakpsU0dGcWRXeDZORGRDTmtGbFZIWkRka2RzUW5ablQxRTNNRGRyZURneWNHWkZTWEV6TlRKemJuZzBWV1J6UjNwWEswUmFURkpNVFZkNmFYWkxURzFZVkdSTE4yaFJhMjlrVUM5NU1pOU9OSHBFYkdkcGVUVXhWa0ZuYUhWTVJWcHNWVFpKUm1oblVuaHNVMUEwVVd4YVFqQnNTVkEwVTBSS2ExRTFUMnRTZG0xSVpEQjVSa1JXTkZsa1dFaGpOU3RQVkZaV1FXWXZXVXg0T1d0Mk5sSXpjMjhySzBwc05uaEJZVXhzUVc5cFJFbDJkR3hDWXk5SVowaGpXREExT0V0YVZHaDFkMkl4YkRKWVRrZFRLMWd4T0hkTGFGUTJUMEl5TTNGUlNWTXhRekJqYkZFNVVFTXJLemh6ZG5ZeVVtbFNZMVZsUWtGa2IyWlRlRXR5ZUdOMVNXMWlkVEI2TjJaUFRuWjBXV2RaVUhsclJXbG9iakZFYTFCaFZYSlRja3B5YURCeldWWXlhbXBZZFRaTmVsa3lZbmg2UlRoMmQwYzBVRkZxYmtOWVMwRTRlSGhaTTIxM1R6UjRhRUl2ZGtoM1pISnphMnhXYkZsU1dXUkNSVUZhTTFoellWSXZUelZpVFRoTk1GQjJTVVZXVWxCTWQwNWFWM016TTAxT2FUbE5OblExYUdGR2MzWlVhWHByY1RSclZTOUVPR04yYVRsVmRISnFiVVp0Y0ZCRU9FRjZkemhSVEdkMlpsZG1WRFZpVkZBNU9VWTJlVkk1YjJwdFZtdHNVREVyYkZCT09FZ3JVamxFSzBabGJUaHFUakV2Y25SdUszVm5PU3RJZW1admRrUjJRUzlwTTJ0NE0zY3ZTMjlWWmt0aFIyWjNMMEYyZURONldEY3dSUzlSVURCVWFYb3ZaREZRYkVZNVZHeDJNMDV0YVVJM1JUVTVZM041Y0N0RVRYaHpaeTk1VVRndk9WQk5PVVJUVkRSRk9IcEdaakl2Y0c1bVRtWkJjbEJ1ZVVJd1YzQkRaa00yY201c09VdG1hMmR3TkM5dFpFTndVSGhOYkZvdk5scHBjbkE1VjFGbVVFZzRVMjV3ZG1zdlExbHNMekl2WjJWVU9Dc3ZPSFZwZWpjNFFpOUlkVTgyZFVNMVUwbHFXVXhOUlZodE5WaHVTamhNZWprdmFIcDRhRm81ZG1oMVpXWTBTRkJVVlhNNFdEQnJMMG8xTDBSak1tWnhUMVpWTDFBek5tMXNOelZFVG1aRVkwRTRLMkkxVUhoT2VYWk5URWxRT1hJNVEyWjNXRXgwYnk5MUwwRTRlUzkzZFZnM1VqVTFaa0k0Tnk5VFJ5dEROVmxrU0c1cmVrMXliVkp1ZUVkNFpEbHFkbWxTVURKamN5dDJlR0kwYmpjMlIyVlpNMHd4Y2l0bVkwTm1TalZCTHpGcldIcFlkemRRWmpCT0wwTk5MMVJHTkdOUWVub3ZhRFZoVFhwcE9Fa3ZSRFUyTDJoUVJFcHZkbTF1TkZCdGVqbEJRVGh3TkhadEwzZEhWVGQ2YkRaRGVuZFlSbk15TDFVM2VFWnJaeXR0VjFSVUwzcGFSQzlIVlRRdkwyWlhhWHA1T0ZoMk1HTXpNRnB6WjNZeU4xSTFNM1ZCWmpZNFp5OTVlVXhRYWpoaE5uTmxSM281VFZkd1pUbE5TMDR2ZWt0R0t6SlNXamhtUWk5VE9XbzRMM1JwZWpkMlFYWnFOU3RPZVhnMlVFNXFlRXgxY0dsTk9XUnBPV05tZDBnNFMyNDNjMWhRVFdaWlpqbFRTelV6VG10clVXYzFUbVZ1TVZWclNHcHZWWGhKY0RGdlpWTjNNRzFyV0dkRk1IWk1ZbEJrUkdRMVZVNDJjbGsxY0VwVWRGZFFWSEZIUzAxalNWTkpOR3B2VlZkVFJVaHBSelpZUVV4eWNIbERVR0pZWWtJemNtWkdMMGRHTDFodFFVOVNUVTlJV0VsaFNsYzRVMGRFV1hOSGFHNVJiMWswUlN0Tk1qRllWbGhNYkRReWN6Y3dhRmRzV21JMFpUTktZeTl5U0dsUlMxVk1UMjlwTm1sb1RESTJOMWw0T0dNeGIxWlZMMGh6YXpWbVptMXNXbkJ5VUVadFV6SmxXRnBrVFhNd1prTjNWVWxuT0VaMFVUVnJLMFZKZDJremFVNXRVbVJQYlhCUlRFMTViVlZhWjJ4SFowVjJjbXhNZFRaVlExb3dRWEJyVDJsNU5WaDVabTAyZWxoTmFWbFlUa1owTldoUFdFUTFNbmM1T1hoWmRWb3hRa0ZLTWpSQ05UbHBlbkJUTTJkelJrOVFibE5OYzJaa1oxUTNjSEkxWlRoQ05qZHJaRUZ6TW5VNGRtSXlkVVoyTDNkWlpYUklVM1Z2WW1FNFN6RmhZbUpoUVV4WU5rMW5jRmxRVUVKWVpEbGhVbGN6WVdNd1JEZGpNMkl6UXpjemEyY3hlUzlPTW1NcmFsWnFla2hMY0U5VlNsbHpPV0p2YWk5NlUyaFdXRTFNUzBwTlpGbGljRGxTVEhaU1NqVTBWMGgzYVVkMGQyRjFXVkp6ZHk4MWJGRllaa2hPZVRBemFHbDNUbXh3UzNONFVIaFBUbmhtTkZjMWQzbzNWMU5MTVVoaU9YUTJZa1pXUmxwcllrOUZVR2xPTlU5V2ExWk9WVU5NTm1OQkx6ZFFRMnRqVWt0emJWSmxSVzlqWkdWSGJXaEdTR2h3VGtSRGFUUnBXRk5LVUVkVFkydzFVMWRyYUd4WWNXSkpjRmhSYUV3NVRrSTVZVkp1Y0ZkbE5tNVpRVzE2VWxocGRraFRhMUpEVTBKRmIwMUljM04yUml0Tk1XaHRNRmsyVXpOME5rTnVjRXhoYlhwb09YUnlSMXBLZUdGcWVuUTROblJxUTBFNFNIQkllRlJGVDNaTGVVZzJORm8zUjJ4aWVXVllMMUpMUkM5UVZIbHlUSEIxWm5oeFlXNXNRbWRyY25weVVVb3hWRVJFVW5rd1YyNVJkRkoxVEZsbGIwcFZaVlI1WldKSkwxQklVVFJHWTBGU1NEbElOMVpIVW1sd2MxUkRjekpOVjBGMVVVSm1MMHgxYUhKaGVXMTFRMmszY0RaQ2VGUm1iVTlPVVU5aU0yMXFWWFpyUTJKRGRXdHljbkp4VDFsRlZtMVVkak50TlhFelNGUnRNQ3RPTVcxbWNrOW1NU3RuVDJGVFdqaFVkSEJLVFhacEwzWnZVV0U1Um5kb2FuWlVla0ZKVUhGblVqWllXVlZsZERCc1NrTkROVmx5Y21SWFIzRnNiMDR5WmtSc1RtaDFlR2xKYUN0aWJ6UjZUR3hSVGpFMlFtSm1RMU5tYzBWa09XUjFXRXBzWkhsS1YwZERkMVIzUkVscE1XbGhLMEZ4VUhvelRHSXlkV2R3Ym5Fd00xTkZlblpLVm5SUlZETkxjblZqYzJ3eFRFNHhSSFJTUW5sSWNGTkZhMVJMWkRCUGRrUlBlSEpXYm1SV1UzZG5SR2hNVGxKNlNIcE9TbGxWYUdOWVNqWlRNR2R5Wlc5RFNtTlhVbEZ6ZURaU2F6WlpVMmRQZWtFcllXbG5SSFpHYlVGSGFTODBaalpJZFc5SVdWaGhiM0kwZGxCcFMyTXlUMGxRY21RNVdUSnBlVEkxYTI5eVJuaFNWVlJaWXpjMGEzVnBPWFp6VG1SdU1XcGhNWGc0UW5KbGRFYzFUVEkyYVV4c09HVjVUWEZ6TW1Rd1NqUjJXWEZSWlVsVkx6VTNObk12VFVobGVuVkdXbEI2Y2xGSVVUVlRiRk41V0VoUGJsTnlWWHB2ZUhKRVRGb3liMnRYZUVRMFVYVlhRVm92VWtSVmRUUjBjSHBXTlRVemRreEtaSGxUY3pGNFZtRlhWemgwTm5WblVDdFZjbXcyYWpkbmFWaDVXREI0ZDNac09VOU9kRVpPZDNWSVJWUkVTelZFV1Raa1RYTkNTVzFOUkU1UVlsTlZZWFpvVlZSUlR6WmthM2NyYUZWaVJFb3laemhOU21OMFdHSkxRMjFxT0RWdGVFNHdlV2t2VUhvNFRFSTBja1pCVm1KWU56WlFjMFoyVkVwR1FUY3ZSMWxzTWxSNmJITlZjRzUwWVdWa2JTOUJNbGd2UVhOd2RUVm9XbGxUYm5kdU1VcGtkMVZpUW1OclRGZHFUa2xLTTA5VVdGRlVhVzFIWlVWeVdUaGxhVVZJTlRkWE1EbDBOekZtWjFJeE9VeE5URE53SzBOcmNFNTJVREpoU1RoVkwyTjBhVmhCWlhrdloyMHJPR3RXZEZKTGVFYzNNVlUyWWs5TmRWRnZibUZpV1UwMGEwTXpUVlZSYUc5bVNTODNkVzFOTXpWbU5rbFVTVXhYVUhSVmJEWmpXa3B0VFdwUU4wWm1Sa1JtUkhSVVNuRllZVmhOYWs5VWQyNTVPRzV0WWxGUFNFOWxiMDVsUWpWT05XRkVNa3RXY3pocEwwUmtMM0Z2VDI1VVMyTnlWWGcxYVdKQk9FRnNlQzluZEZKclJXMW1UVlpGTDFoWGJXVnZhVFZyWWs1RFowcEpiall6Y1dSSFltNDFjMDVJVkhGRGVreGlUWFYyT0dsalZuQklTR1owV0ZwRU0zTmFLM1Z4UzJ4cGNtOXRlWFpCZFhVMWVtVnRUemhLV2t0VVJ6VmlZVEl5TlhGd1ZpOUpOU3NyVmtwTFNGaFpja3RIYmtSWFNreEdPVzlIVjNoWk1uVlVkREpTTURjeE5ucGtkVmhPZEdaVVNsb3pPVVJUTUd0RGRIZ3dkMlJtZG5oNFZUUmpaa00wTkZCWVUzTkhaVGR2UjBObE9HSkJaazV1ZDBSallqaGFSazVUVW1WcVFXdG5WRFpJVFhKb1dUbGxWM3B3YWxoU1NWQjJZV2t3UzJGdlpqZHBUWEZoTUdGakwxQktOMU4ySzI5bWMyOWtVMHRGUjJabVlYTjNiRVJSY0dwT2R6RXhkV3hQTlZKUGFYQlNjR2hwTkhnNWNUSmxhazl5YnpKTFdYUkxOSEJ4TTBRekwySnRjWEJoZHl0V1RtSk1OMUUxTmswME4xcE5TR1ZRZWpOb05UUmtZa0p1TWxWcVpHY3pWVk42TDFsQk4yRTRaemRrYm10SVNXeExWbnB2Vm5GTmMwcDBRWFpaZFZSUFMwb3hlbmt5TW5vck4yUldVMFoxZWpCeldHUlRkVzR5UVZodk5tUlFkU3RVVmtWV1ZGQTRXazlZTWpNeldsRjFSbVZWWkVZM1dIQldjMGRQVUhCS1FWVm1abEpMY2pkemJVOXljbkJ6VUVaUlpGZGFZbkJVTTFsdWEyY3lNVTFNTWpkV0x6aG1PRGRKTTB4ME1Ya3pSMW8zY0VJMFdsVTNkWG9yY2tjeWJtOUhRME5XU0djeGVtSnZTWGhsT0hWeWVUSTRkVUZZUWsxWVZtaGpTM1F3THpWdlYxWmpPVFppYUcxQk1tVlZTRXRGWkd4aGJUVXpXVmhRY1c1VlptbHJaQ3M0WWxORFUxWTRlR1Z4UlN0MlZUZ3ZSV0phWTNONU1HcHBla2xCYjBsTWRFZG5hRTVXUlZOamVGY3ZVMDV5Vm5FMlZWYzFhVlZsTjB4bmNVaGtha01yUjIxUVZYSk9VMGRxZWpaSFREaGtOMDVZWW10dGRFOUdiRGxhZEZwS1pUWTFObTlaVERsNVdHSmhRblIwVkhSNE5qWnlUakZKYlRaWlJqa3hSWEZtWjBoWlZUUmxabEJsWkhkRE1IaERSekYxYVUwNFEwOXBRVlJtTmxkbFRWbHBWME5aTDBGblNtZzBja1J4U3pSWVJEbFZla294V2xCclQzQklabEpZWlhCeWVHZFRXRzF6YjJsWmVUSnFjRkpXSzBkd2VrRTRWMnd4WlZoS1lVbHFXR1JSWVVSU1dqY3ZWR3hhVjJaclpXUXdOVlp4UzNGNGRHUkRWalptVGpSak9YcFBkazl3U1VscGJsSmxWRzVSSzFKMGFFSjRVV1prU1VkVVlUbGFaWEZCVUdGTVZrSTFXbGxSVjFsRmVFZE9UVEIxTVM5YVNtNVBUR2hhTlhjMFFVWkdTRzB4UmtaUGNVVkdUbHBQVkhsNUt6UkpSRTlaUm1KQllraEZWaXRoY1RKMGIzRjZkSGR6UTBKMGFtWjZMMEphVEdvNGJVa3JUVGhGTDAwcmVpczBhMFF2VFUxQ2NEQkViRTFpT1ZSeE1rZDVla3QxUnl0a04xVllabXBPU0RneVR6ZE9UM2QzTTA5QmFISlVjbk5HWTA5NWRFbG1hbmxHV2poVWFEbDJjM1JXVmpkQ09IVkNabGROTmtoUVdGWmxZMjVpVm5VMGNVMVFWM1Z4VUN0NFJHOVBTVFZ0TUhabFFrUm9VSGhLVkUwd1lVY3djRFpTYWtOWFEwaHljek4wYzJkelJVeFhjMDFLTm1wWVFtWm1ZVkJIT1doclJtZFVWR2h2UldJMlowaGhhRE50YlhSSGVIRkZaa1l3ZDJrMllYbG1TbmhZZUV4cE1EZHJaMnhWUVc5T2JsZENiazFITnpaTU1HVjFPR1ZFZGxGdVFUUXJaVGQzUm1SRlFtbDJSbFpST1RJNVZGUnliVTFFY1cwcmRYQlZaRUV3WkZjeGNuSlhabEZoT1ZNeVFXRTNMMEp2ZDA5SmVsZE1TRGRKUTJ3MFVHcHdRVnBxVFU0NGMyWnZTbTVyTUVVMVVHZG1ZMGRCZGxKaVRrSkxZMmxqUVdOelRFYzBTWFZTWkZwUlRGbGlMMFEwWWtKd1ZFMUJjSFpwVjJOM1EwUTVaWFp5TlRaT05HcFNjamszTm1WcVYzRmtSa3hoWldJemRuWm1ZMko1TmprNVRHUlpWRGhsVVRRMmJVazFNVFZ1U21JeE5rUmFOREZzUkhKNVoxZE1RV1o0UW1ORFoxWkpRMFJGYmk5WGJtWXpMMjloWW1ocVlVTjRjbXd2ZFhad2VtVk1VRnBXYmt4d1JUaENSRU5QVURNd1RYQkZNMUpUV0VwYVZYQkRUbWRPYm1FMFQwUjNia0pPU1ZwSVdGbElibnBTVVhRNFEySkpZMUl4Y0ZVck9TdEpURFI1UVhRdldWQmxXR2x1T1c5TU5rNVdOMkZwUkdkaWJ6QXJaelUzU0UxbVZFVk9MMWRCWkVSMFowRkxaMVUyUzBKdWJVRk1WR3RvTUdkTFZVMUJPSEZ0ZEV0bVNGRjNaMlpWYldSdFVVWmFXSGRDVlRKQlJIRXdiRFZFTTBjdk1sSnNVR05HZERKeWJEZzJWWFF3YTJsaE1HSkJlWFZMTmxKU2RGaHpZMWhyTkRkYVRrZ3hLMGsxTUhKcFlWTllTR1ZyV0RsWFluRmtiSGRFVHpSTFN5OTNSMFE1YVVOelYwdDJjamR0ZWxvME0wcDFTMlphVURWeGVVdHlVbGN6YW10bVNHSXZMM1kwV2xWd1MxSkZOVmhoWVhrek5IcE9WMmQyTjNocmJ6Uk9LelJaYjJwbU1VUnhaSFJYYm1kaU5UVlZhbmdyTUcxRlpFOTRkRmhxWWxOMVdHSTVLMkpsZGtseGMyRmtTR1ZpZUUwemIzWTNSREZxZGtkR2NrMXFiVEFyTjBGTVJEbHpNVzFGZUhWaVdrSTBNbFJKUkc5dlZtbzNhVVJSYlhBeGFHMHJUaTlFY0ZKSFRWcHFXWGRvVFhkdWREUlpZamt2WkROT2VuWlpNVkkzSzJkaVdHUTRLM1pRV0d3NUx6bHhkVGwxTm5oNmJIQk1Za3RMYURrMGFXMDRkVW80TmpkR04zUlZVRElyTXl0NUwzQnlTalJpUlhWM1RpOVNNRzlPYkZjME0zaE1VMlZLUjJOd2JUVkhWMHg0WmpKd1VDOTBjWFZyV0RoTWNqZDJTRGRzY2pWSk5sSmhXWGRDVTBaaVVETkJPVFYyYjJSNGFsZ3lkMUkxTmxvMFdHSmFRbEZHZEd3d1EzVlJWR1pLWW5vNFprTmpZVVFyUjFwMU9HWm1aVkZYTDJSbFRrNXNRalZ5SzFGM01YZGlVekZ4YldweGFtbFZNVTltTnl0cVFTdEhNM1EwZEdZemJrZElLMDVzWkdSNVJXVjZjR2wwUjBoUVUxUTBiMEpVTUVWblR6aDBkRUpFZUhwVWNGWldTSGx6VEcwMVNsTTBRVlZPYzJkcFVHeHZNMFpTZVRSaE4yVXlTV0o0ZDNKcU5EbGpUMDVNWmxoeVRuaFlRbnA0TlRNMVVsZDBiVFJ3V1VadFNFNDBTVEV3VmxaNlNERnpNamhvUmtrNFJ5dEZOSFZRWWxKMU9XRkRVVEJqU2t3ME4yeEJaVzVZU1ROVWFsYzVNa1JxVmxkRWNWVktNVGQwTlc1WWJHYzBPU3QwUWtWM1VWWXpjRXBpZFRoSFEybFZjVXRTU21aQ09URm1Zbm96VTJkemVtRmlMMFI0VjJ0R2RsUjBjVU5HYWtZMVVYWjZSM0ZXZWpSYWVDdGhUVTl2TlZCM0sxWjJWbmhzTVhSeVdYQlpjbmhZZERRM2NuVjBRVlZQVlROdk1YbERTR3RxWkVGYWRGQmFNMk14ZEU5Q09GTXlaMlptUTBsMU4wcE5PSFYxVUVveVIwcFhPWGxvYmpGNkt6SnBjMFJLTTFvd2JrUnFkM2x0ZGpCUlJtUjVjVXhXY25GUGJrbEliV1pRYm5GWmFFbHZRbU5tTlRsR01rRmhVMUptU2twSFVHZE1TM3BSSzJveVZFeEJWVVEwVHpSblRXeDFSVzFaYm1kTWJHcEVkMlpFV1hZdlYxaGFlRlE0Y1dZdldWWlNMelZuWVUxVmEwbFBiak5FTDI4M1lqUTRkbTQ1VkdZME4zUkhNakZDUWtRMWR6bGtUVGRSTlVrMlRXc3hXbmxzUW5NelJHZEZTbXhYTVhCcmREQk5XV05ZTUVGSVJrUlhaWGhIV0doaE5VdFFRVnByUkVoRE5XVldjRGxEV25oUmRDOWFVMGd6YVhZM1lXUnRTbWhoVW1vemFXRXpWRlJzY2paeE5uSTJhakYwZFdGS2JVNDVTMDFqZEVGTE9WVTFiekFyV21WMVIxVnZUQ3RZVG5wcFMwSk1hREV6VTFCNlFrRm5WVGw0UW5ZMFRrMXZhazVPWlRSQmRGSjZXVTVrWWxWUFNtSjFSMHBHZFZoRWRVSlFSbFp6VGk5TmJFUXZaMVI1T0ROM1drdElPSEF3U0U5clNGUnVSVlozUjJsWVIzWndXUzlSZGpaM1NGSlJVRFZuTDNKSlRscFNaamx6VDNsMmNqbHFlVUp2VUV4eWRGVXlWa1p2YlRsbVpWY3haRUl2UVVkTlFUWmxVV3R6VDI1emIxUlhTQzgyTm5GT1ZUTTRVVlptY2s5YVRHVmhXVWw1TVdObk9EQnhia3RHU1ZSRGVVVllhV3d6VkdaV1QweEZZbVZMTDNGTEszaFZlVGxQTUVwMlUxUm5XVmRsWldsQ01rZFRWR0ptTVZKbVpGWldabFoxUVZOU1VtcFhTRGhCVUVKSlFVaHpWekppZG1aaWREbE9lblZJYTI5bU1UUXljM2htYWpSbGNtaDFXbGt2TVRoTWVrbE1lbkJRT0ZoMmFsUlFURUpsZWtSaFdYWlJMMlZYT1RnNVNYbHVjRnA1V1ZCRGJTOHhkelV2WlVVMFdHTXZkUzh2U21WdldIWmhRVzFzVERSUmVUZENkbHA2V1dzM1drbFljbXBXU1doRU4xUnhjRE14TVV0T1VpOVVMelJvYm5aRU9VUTJabFZZT1hSTVRtUklSRFZ6U0dsbVpVNU5TVGh4UTBoc2NrazRaWEZ3UTAwNWNuWTVaRUp1WVU5dVNVTk5ZVXg0TDFBNGFEQnRWVVpWVERaS05tdFBXbEJzZVZsMVl6ZG5SUzlEZDJsbVIwTk1NR05NYldKVVpuQTVSV1ZDY1hGS01FZzBXRlZCWTJ0Q1lsUlpSMHBYU1U4ekwxcFpSU3RJWjBJNWNrOUVNVEJvYWs1dmFUaHZhSGxSZFd4cldVeGhaV2x1V1cxRFkzWnZRMHBCVDJOQlQxcHVOVmRCVUZGc1ZXVXdNSE0yYTA1b1ZXWXZhamQ1UjNJeVpDOW5NMWd3ZDNkSWJtVnNZWEpuZEVNNGNFeFRTWEZ4WlU5MWRqaFFWbGdyZFd0RFozcHpMMnBoV0haNU9Ib3lkaXRYZGpsV1ZqRm5WVkZtWmxOWU9XMWFialVyV210WlFUaExZazh6VjFCclRqaHFTR0Z2ZDBKbWVqaDRjRWRVU2t3MFJFUnFRbVZIVUhwVWNqZEpZbEZYWkNzNFltWllWRlpLVUdJeVprVjRZVFYyZFhkUVZtdFBZeTlxU2sxQmNVMWpObGRaTW1JdmVrSnZOVGQxYjJGWVoyZHNlbE5PVTBkelRHODVNelJyT1ZkalNtTnBSM0phYVZnNGNrTkZiMWN6TlRKd1p6ZExVbkpwV0ZOTmQwNWplaTh4ZFdjeFQyNXJSbXBLTlZOc1J5dFpjSGs0TUhSNWVUTjBRMUJuU0dGMVNuSmhiWEpYZUVkelJ5OVFiV1J3WlVzdk5uWlFPSFJoUjFOc2NGbFRLMnhTUkZVeFVFUjVkbUpIZFcxU2MyOXlOU3R2YW5CYU1UbHBLelp5TDBwb2NXRlhlbkJ3TkVveUt5OVNkVVE1U2s5emJESmtRamRPUlVRM2NsTnZTalZQWjBsMGJDdEtkV1pOU2xGVmNHZDZhRnBXYUdVdlNuaDRja0ZzVm5VNU1UaFBibU5ZTUZZMVpESlNlV3RTTWxac2RERkJWbmQyVEhkb1ZscElkSGsyYzNSbWFpdGhZWE41VG1WYWVsRjZTeXRMYTI1cloxZG1SMWRHVFdkNFIySTVSRWhsYlhVelpGaFdkVk16VVhOaEszUkxZazkyY3pKc1dtSlhSbU12VFVORFpUSnFObUV5WkZsVFYxWmFWekpvYTA5a05XRlhaR3RoTm1WNlR6ZzVWRlpaV2pnelFYbEROMjl0TjFaTFpTdFZUbnBPTURoVWRTdEZWSFpRYWxWYU5HMURiV3hoVjBKMWJUQlVRa2xyTkVJeVVtSXlMM0J6WkU1Mk1HeDJOMEp2WkZwWE1XeDJSRFpwVFRrdlJtUk9RbTVSTXpFME0wWmhRbWRSZDBVclZFcGhkM1V2YTFGM2N6aHpUV3RNU1ZwWU1FMWtZbE5KTVdvM2VsbEtOREp3ZFVac1ZtNU9iRkprTUdaWWRYSjBabU5JTTFkakwxZzFXbmRzV1Zwdk1IVm1iMlJtYzJaTFdIUTRlU3RWTnl0MUwwWXJjelJ1UTFaaVNreHBUblYwVEZoT09HeHBlSFoyU0RCS05EUnBTRVphVVhWUVdHTmlhMnBRWmtOV2RIQmxNalZsV1d0TlRqSjZjamRGTVROT1YyVnVSalZXVnl0dk4zbFBPVFpwVDFOMVJHWmhSa2xpY1ROWVpDOHJWRzFhYkZaM1ZYaDJWak5hYmpjNFdFeDFiWFZ4ZWpWRU1uQTBNa1ZqUWpCNk1pOWhORGh4U0VkalpEVnNkMmxQVFRsbU9IVlFUMk0yZURoRVVUTm9WbFZIV1djNFNrVjJVV1I1T0Zvek1Vb3lNbVpvYURsSldrNDBjVTlWVEZkMlpsRnNaVXR5TjJGRVVFVk9jRFpQTWxGTU9FUnhSSGhFZFhFM1pFTXdjMVZDSzA1RlRqazFNRUY2Tmt4Qlp6TmtZMmRuYkhaa05Fb3hOM2gyZGtjNU9XVmpaMVk0TjNGU2RraERZV1ZTUVdOeGVGZ3JLek55Um5OSk9UQnlVR3h3U2t4Vk9UTjVkbFpoVWs4NGFrOXdiREpJUkhORlFtRklOWEk0TVM5WVdHWldWbVpSSzNOWmMyWTFSVVJKZGt4VGIydDVSWEJ1TjAwd1VUaEtNV1l5TWtkMFFUbERNbWsxVFRKM2NIQnZPSGxOVGtKdlJtNXNXVmRoTDFab1JFc3pTbEJTTUdSMU1YWkllSEoxTjNnNFJYSnZVVTFEVWtjemRVVktLMnRvWlRNNVpsSXphVmc1U0cxSVpsSmhSMW94UWs5TGFYWlFZWEJKYWtoblFuSmxZV1J2T1hKSE1XbDZkbGQ2TTFka2JGTnVjRmRhY2tvME1rdE1NMU4xUjA5eGFVRm1TRnA2Y1RBeFNFMDJSazB6ZEhoSVpHNU9ObFZGTkRCVWFFZFVWbEpJY1ROTlJqZDVjM0I2V1RReFZuUlhWV3h0WW01MVVHUmpORWN4VG1vM1VFUnRiWE41TW5WNU5XMWtUVE0zU2xZd1JWbFlLMXBuY0dkQ1ZVZEhUQ3RUT1UweWRXSm5WV1kwTjA1TFduWmFjRzFsUWxwbllsSnlRMVU1UW5GTFVWaGlURTFZZG1nM2VVWTRSSGhMZVd0bll6bEZRemgxY21kdlZUaDBkRk5FU0VOV1ZFRm5hMUpYV0hkb2QyNDFhSGhDUkhoT0wycGpaa3hFTm5KNU5FbHFVM3BuY21wRk0xWTNSWEI2YlhWdmF6UllTMk52YURFdmFXcHlXVmx5UzJremRHTldaVzVzY0cxaGRDOU1hVEZLYmxkcVlsWXdRVUV2ZFN0UmFVNW1RV0pwV0VWeWNtSkhUMHA1TkdOVU9FTnNlVTlrTjBkeGNXUXlVM1k0Um5Wb2Mwb3ZNV3RzUzNwc1ptaG9jakYzUWt4UE9FbGhSRk5rVjFSaGMwOXliRkV2VlZsWVRuQmFlR1o2Y210Q1kzRkNTbmhQV0RGMGFFTnpWSFpHZUUxb1lrdE1abmd5WlVwV1ZYQjBTalJrWVd3d1FtTmtjSEpWTmxaeVlsRTJXSEJ4TmxocVZYTlFiRTVWVmtwemIwdHJjVWxJZUZOWGJGSllVeTk0V1ZWc1REZFJXamR6WVhrdmMzUlJZbWRaVEhrMk1qbFRWbUlyYlhwWWVVMVZLMU40UXl0TVZqbGxXWFYwY2tkU1RuVkdUME12U1ZkVE5qSkNWRTFoWnpWc1dsRlhUa1kwU1ZkVE5HVTJaa0Y0TkhOS1duTktSazVyVGpoNVFqQTFUMWR2TkRkamRsZDJlbkJ2TUdKTGFsUmhRbGg0VVM4MGFEaElWWFp0TDNaUmMzbHdLMjlRWlVzeFFUbHBVWGhLYjFWdmVEUTNORko1U2t3cmRGQnJjalZRVjJrNU9XNHpNMk00VjJWc1pVeFFLM0JPVkZaVFpYUlVWaXRsWTBsTE4zSlhNMUJ4VFRabFpYVnZXVGxOUkdjd09HVllNMEowWVhWSFpucDBjRTl6U1ZwT1RUWkJOVE5GYVRGR2NXMU5TMHhMWkdVMk1GcEdNWEp4VG10aWF6QlpOa2h5TldOdlVXRjBjM0ZZVnpGNVZFazJabkpRYWtaUk9GWk9TM0ZaUldGUWN6VkpiRUpSYmpCMkwxcFhXbEFyVTI1eFEzSTVlV2d6UnpoRFdHaGFlRTh6ZDBRMmNYZHZTRFUzWVVaVFduaDFVVFIxU1haT1pYUnRiSEZoTlVzeVZsZEZVbEZoWWtoV1NVcGxUM2hIYmxGUGRGVm1UVkZ4T1dsTVJtUkVLMGxOY0daNFJGUktNVzgyWWpKTVpsWkxNaXROTUVaS1FubFZaM1IwY25oaGIzcE9RbWN5TDNZMmNHZGxlamxHUTNFNFUxVnJNSEJzZEdVNVkybHlVU3RLY1cwNFZHb3JXVTQ0VURNMmRFWndUeTlPVjBod1V6TmFRbTlISzA1d00yTkRReXQwYVhsU05GbFlOSEl3TjNSc1NISXlTSEZwZEdjdlQwRk9ZV2hUUTJkM2EydDFTMEp0WW1VeGFVWklaSFJqTTFFd1UyaHlhbmw2WWxkdVRFRXdVbEFyZUhWWU1VcHlXa2N5WTFac1NGcFZjSEpFVFdSeWIyNVdiVWxDYURVelJXSlBRVXd4Wmt3NFYzTkJXbkY2VFRObldWQlhSblZIUkRKdGRYTTFabU5PV25sUlZVaFBOekZLYmt4eVprbE9LMmhRUXpkTGJIYzFaa1pRT0U1YWQzZFhjRTQzSzBSbGNtVk9ia0UxTkRZd1oxVnpRa3A1UTJZclpVZGhXVkEwWTJvMlFVZ3lTVnBRU0ZJM2FWaDVkMHB2SzNoRE9GbFljMnBxTXk5bVNVSkVNa0pQV2tKMWR6QkdUMDB4ZFdGYWIxaFBia0pTTlRWNFpqUnJTbWREU1VVNGJXeExRUzlYZUM5UlJsZENNVk5uZDJZd1MwMUdTVmRSUzNodGJHTm5hRVpyYVdaMFNIQXZRbFo1WjNkVGRucFFMMFJ5TUdwU1dVUXdibGt3YTFOYWVFdGpVVE51U0RjNWFHVlZlRkJKY1hsUldFbE9ZMGwyVWtObFpqVjRWRmx3VGtZelRIVkRRMUpLZG5OcmVWZGhUakIwYWpOVmNXTjFWM1J4UWs5TlVXRldVamd5YW1VeFRXczNjVVJYTjFOdWFUZHJiMUprWlhKM09FVklUMDB2YUdSUlNXZFhOazVyYVc0MUwzWjRXRVkyYWs5MllXdG5TVmx5UTA5MmRFVjJlVU5vUm5Kc2JtZ3llRUZLS3pkaFlsQnBRM05YT0U5NFVIRmxjRXhyV0ZReE9GQkJWRGd2YTI5dUwwNHZTazAzZUUxSGIyUllkMk5MWlZKaWVYZHBUMW8wSzNSc0t6TnlZMjl1WmtSUFJWZHVOV3M1UjA1S2NXUkVaUzk0YVd0cGF6QnlaVGg2VG5OV2VuRTRkRVJDVWpWc2IyVmtjbHBGVERWaFpqQnFkMVphZG0xcVZXd3hXSGR6UWs1bFdHRlBhRzlPZEhSMEwyVk5hR3RRV0VaelFtUmxRWEZGVldGRWNtRmFXa2hxT0VVeFFuaFFObmg1TlVKQmVqRjJWVmg0VUhvMFpVOU5UamhGYlU5bVRYZHBVV1ZUWWpOSlRHZG1lR3hLVlhndlZqSnlUVGQ2WTFWNFVXOXlUVEJRWkROdVRHeDJjM0ZKTlVWTFNIb3dia1pDTjNRMFYyUjBRakJQYWxoU2VFSmhhVE5vWm14YVRYWjVVMFpCUkdSTVV6RlBNbmw2YW5CVlpsazVSWEpxVGtGWGFGVXZhRVEyUnpWdmFYYzRiRWxRVFM5c2VsQldiVnByWTJsWFpqZEhlVWhEVEdaRFRVeGliVlFyY1c1NFduQkhUbFpWVmpFMVVsWnNVblp4T1ZOT05ubDJWVWMwVlRWMmRYRjBRMDFUUkZZMFEzUlZhV1pLUkRRcmFHeGllRU42WlhCS1dXRm9XRmx4VmtKbGJWZHNVbkJPVlZjMUswcFNNbXBLWTNaTVR6aGxNVkZzUjNWMk5FdE9UV1pwVm1RNGVrY3hkVGQxVDNSeE1FbFlTRTFaWmtwV1JHTkNMMnhTZUVaNk1sUmtlVVIxVUZObVdsaHNaMHB3VWtkUFV6WTBXbk55WVhGSWRsaEhTSGhJY1ZoQk1XZ3ZaR3h6TkU5NFdVcFdSMWd4UmxoMVYxSm1TVk5yVjBOd2RERmxkVFF5ZFdkUWRqVlBjMnBvVFVrMksxQm9RblJ5UVhSalpYTmhOMng0VldSUWFrZzNUMkU1VmxSc1FsVlpTM2M1YmxreU1VaHBORTlxTlZOVk5YUkpSbGhpTVhKaGJHNVBkRWhMYkhvMmJuY3pXVkZFTjFsYVFuSkpkbk51VjJwWFMyWTJTblZEVkcxRFpGa3Zka3hEY0VvNVRVTkxSbVU0ZFd0RFlVTlBTRFpQVDNObFRFOUVTWHBVUzJocVJqUmxVSHBZYjBwWFVsWjJiM012VVhGbWEyODVieXROU1VrdllVRlZZM1pEV0VsbVVGQlNhR2RxYld0UE4xVlZjazFoUldKS1RHSjRVRzRyYjJobVJtMWpjWGg1YkU4dldEVjBWRFpyVjBWMVlsZ3JiM0pHWVdneFRYRXhTbEpzZVRocWVIZzBLMk5aTUROdVQwWXpNbkpsWm5GUFJrcGFTalYzU2s5SVpHaDFaa3BCU2l0U2F6ZzNTVXBZTVRJeWNubHRabGRCVW13dlRWQTRUV3cwTTAxdVRHSTJTMnBGZVhkdVFYbGtkRzFOWmtSVGJqSklWRTFGVldWR2JVUldlVEoxYnpacVZrTlRWVUk0T0hkcmQyVkRLeXRRWmtScmFEVTFhSHA1VlM5RVZIb3hhMXBqTVdOeWVIRlBkbUpYYWxsNVRqRk9Za05TZURONWRYaEViMDlDTDBoa1dEVlVhWFE1UWtaak9GZzBZblJZV25aMlZrZGlOVGR1T0hJNVVWQjNaMlI1YWpNclR5OXJMMUJTVURSbFNsbEVhRWxVY2t0MlNVaG5lbUpLWkRjdlVtcE5OSE51U2pCS1pubFFOMUJUTkU5U00yVjZUMFprVmtwSGNsaHVTVWg1ZDFZNWEydHNhWGRKZEhkc2JHdHNWbnB2T1dwRGJHNHlNMDlOZFhnNGRDdFpVaXR6ZW1GWlZ5dFVTMnBpUkdGc2NtSmpVa1JSV1dOMlJISmFSM1oxTTFCMk5VVmhaREJ1S3pWNE1rNUxjMEZXT0hwb1JqWjRWM1o1SzNCeFJVZ3JVVEV2WkhaTlMzVktSVWRFTVZsUlUzSndRakVyVTNsTWJFbE9VRU54ZVZOVWVtbFRUMWhoYlhRNU9HeDRURk5qTjFCRU5GZEtTbEZ5U1hGcGRsTk9XVGt6Y0U1dFVsZHNhU3RUV0RWeFFtd3piVXBWVFRGWmRYbE9aRmwwZUhrNE1tOXVlVzh6UkhKaWJqQm5UVUUxV2pGcFltSnJUVXBrY0hncmJ6VlpMMUYyYmpsS2RGUm9SMDFvVTA5WmJVSXZSbHBYUWt3MVlXWnVXQzlsTlhZeFRHUXlVMFE0TmxnNGRIWnRNM3BvTDJWR2FHRk5OVEJEVDJ0a1NteElSV3d2YVV0S2QwaGpaREZqU0c1ME1HdHRTRGtyT1V0Qk1XTmljU3RVYUROamVqTTBXVXhoVm5waFVrRkxjMjFHTUV4bVZUUndjVmxSZVd4d1kxWkdNbGg0YzJKVWFsVlFjMlYyWkhodmRqYzBVRTlzTlhWMmJFNW1NbmhrWkU5VWNEWjVkMmRWYUdoRlpESmpjMDlaZURCclJGaFhhako1V1ZGQ2NsRkNTMkpPVW5VM1dIRlpOQzh3ZGpkek5XWTVRbnAzZEVSUmFXVTNRaTlLZFROcFZTOURlSHBpTlRGbmEyVmxkVXhGVVVnMk9IUlVWMlZRZWtSNEszTkJSUzlMYUhCaVlUQm9SMFZLY2taUmRYZGpaVXBIZG1WSWVtMUVWbU42T0dSVGFYcE5lR3hhTUZrMWQzY3dXRzVyZWtWVE5rTm1TekpzWVRCbGQwMVNhSE5EZFRVMGVVOWtlU3RvTnpaaVUwOHZZMnB4ZWtnNWIwSk9LMjVVZDJOYVFXOUVSelJaWjFjek4yeHZhRkJvVm5ORFFUUlFVVGg0THpVdlFYZFlRMHdyTTNkUUswRmpRMlpEWm1rNVdEUllaa1JqZVdWNFdtSjBRa2Q2TURjdlVWQkJSMk5YTm1kSFVVUkRURXA0WnpsQ1RtazNSazlMVEM5cmRHWlVkbU5UUWxoblppOXJjMWRDWldWSFEyRkRRM1JHWkdabEsxaHFWMU5tVERSdFFuazRiako0Y0VNclRqbHdLM0JqY3pKRWQwUXJPUzlUT1ZWelptbHlMMXBzYlhBNFpsWXpVbXRhZFVoU01UbFJhRzVtU1dzMFdEUk1lSFJEV25sUFVsaEVjVVpvYmtoa2EyZHZUamhKYkZsbmVXMTRjV2hZU1RoWkwwWnpRMnhvU0VaS2JrRTJZbVJYUlRWMldEVkJRMGN2TVZCbWNXZHFTMVZFVXpGdGEwZHFhWHBKVDBSRlRXWklWa2sxSzFCcGFTdHJVbk1yUVUwMFVHTjZRV0ZhVVZvMGNrbE5ObU5pVG1ScE5WVjZTV1pHV0M5aWNFWmFkVmxXWlU1UU0yVTNSRlU1VGxSVlIzcDRiMlF2VldneFRGcFlWRVJVYWpjMWRVeE5RbHA1VEd4S1RUY3Jhblp0TDJGaUwxUnBSVk5xTmtsWVpHRjBMM0ZRUjBzNU9IaGxXUzh2TjFNMVdrZ3ZNSFp6U2tsbFVGcGFkekpRWTJkNFJGRktWVkJTYjAxQlVrc3JObUY1WW5SWVIwOXpOM3BPVG5SMGJYTlphQzh3YldRclIxQllOVWxvUjJaTU1IQjJlVUU0Umpnd1pFZzRORTlvTDBwSFZFTm5jSGN5UXk5TVpFRlVjVGQzUjFFMlZtWkpMMVpTVUhGMVJIVnNRM3BVT1RaT1RYYzRWVlY2ZEVocmRFUmxVVTVMUkVsNldETkdTVmhETDI1bmJsRjBkRkpoVVRGR2FXczVia2hrYVhjM1NtMW1VVEJXZEZOMlRubDRVMkZ3WmpWMWVtODJaVzVKVEhrMGRrd3ZOV2RhVDFSMmQwNDBWVE5OWlVwcWEyWndRbUpuVjNNeFJYWlZUbmxZUkZWSlRXZGhRVmMxU1ZrelZrSnlaazl1Y0ZaNE1WVnFORzg1YkZkT0t6ZzJPSE4yYWpCTloyaERkMEpvZUVWUFNqUnBNa3A2VVVaYU4zcHFTMnBCTDBkU1NGaDVSWEl3WkRFdlpXUmFaRFJ2VVZKSloyWk5NMWwxVVd4Q1ZHcHdWbTkwU2t3dlFubFNiVTFLVEhkM2RHOXVjVGxFVDNKVVZsVmxSVkZ1ZEZkR1Z6QTFMMFp6ZVZSbVIxZDZXblJpYW5WdWNESmFiV2xUZVZCRVp6TXdlbkJOZGtKYVkyVlhZbXBJZW1wWVVVNUJTVlZwVW5GT09Fa3hNSFo1U25jM05HVnlNbkUzTlZwd1pFNXZaRVpWU0ZWcFVrOVVlV016WTBkbWFFUmxURWhGZEM4d1EwUmpUV05ITW10blJGTlRaR3BLU1ZKemFFczBhM3BoZUd0YVdFUklWak4wUkZSNFRVZFpiVzl3T1hSRk1rSlROMnRoYW5CaVJHczRSalIwVEN0aE5GcFhaRFF4WlhoU1NEVlRkSFp2VFVweFZuQXhTM1IxSzFaQ1dIWk1VMjlMVjJveU5qUnRTMlI0TUhCQ1NHWjBjVE5PUkRRM1drWkpXazVqTTB0emNXbHZWMG95VGxCUVdYWlFZWE12UmtOQloyOHJjbTAxTjNVeFJuSmtWSEJtU0ZCcFdWZzNVRVpaWTFoSFZsVmtabWx0VlRkVWJUQnZNbElyTURGNGNXcENiR2czWkZoTFEwcEdlRnBZYkZKbVdWUkVZVWhNVXk5NmNVaFJkMEZCUzB4eWJWZ3lOMGw1VFc1SVptNTVjemR3ZGtVemFWZHdRUzlRZW1SaVV6Tm9aRkZtYkhkVVVtcGxZVXByVFhCYVVWWjJlblJXWlM4NGRFdFVTamRtVjJ3eVdETXllREl4ZEdsT1NIUXZiRTlNTW01U1duYzNWek5tZFhwV1UzVnVSM0l5TVRjMlRqaFRiWEZyZEdOUWVXbFhNV3h3UzFOM2NHaEVVMFZ5U0dWeFUxWnBkSGhFU0Vkb1ZWbHNha05MWnpscEsyaG1ObTVOTlV4Q1lUTjZaVTExUzFNNFNXeDZhMmd4UnpaS2ExRm1kMmhtWldKemEwUnNXazlYUVVRM1lscHJjRGRvYW5CVFNHTTBRbVZqUWpBeU9USkZWVmd6YWk5amExTnRhbU55TjNaa1MyVnFXVE5RVXl0cU9FMVVTbGxPVEVNNFYzaE5kbnBLUkN0elpqZFVZbXQzT0RrNFdHOHlUMmhhT1U5eGVsSjRPVFpoVUZSemExUXZPVk5hWWk5cGQwTlBOVVowY0VKd05HRlZla1ZvYmtKTVdpdFBOVUk0ZGtKT0wzcEZPR1pEZGl0Rk5XdFBUeXRVTDBGak5UZE5NSGR3VDNab04yOWlhMDB3U0U1bEswMUNabEZ3SzBseU9WZE5NVko0SzFoMVoyNVVORmt2YjFadWVITm1aMVV2WTJaWk9FNXFkMHRoWTAwNE5qaFVWRFZVWWtWd1lsSkpkRTlYZW5adFpscHdSVWt4VFdkRlRHczBhMFZ1Y21aNVRXaHNjVmc0YVhwNFpEZEJUall6YVVFM2RGVjNlRFpJUWs5R2R5OUhkMDgwTUVKQlNsbHVSblJQYm5obU1UQnNUMlF2TlZWalJIUTJNRGs1ZG1vdldXdEZXRFZ6V0RGMlJWRmpZMjEyWkVaTVJsQnBSR1JDTjIxTVNYVmxZalJaT1dabFRtbEJLMmRHYlZKNE1FaEpLelZUYVhFNVN6UjZhMDVrZUZoR2NuUlhOalYwTWxJMVUxQjZiR1JMWkZOcFJUTm1OM0owYzFwTmRsVm1ORmt2U0ZaclkyeHpXRTFoWTBnMlZXMW9RbUpuUTFGNU1WaGpNa1JST0hSWFdHdHphamQ0Y1dWSWFGZDRVaXQ2UkhkMmQyTkpPV1Z3ZEZWS2MyOUtRV3RuVEhCdWFpdENUWFZVWVdSMmNDczVXVkJSTXprMFVETmtSamQxV0ROb2RqVkNhVms0T1VKVlVVOW1OM1oyYWxwaWFHdGFTRTk2Y0VkU05GSmhSUzk2WXpGbVNXNW1WSEV4WWtNMlZGTlNZV0ZSVjBsT1NUa3dOeThyVVdWRFZETTNjMWdyUnk4clRUZG5UVFV2TnpKV1QxZzVXREJpVTJsREt6Tm5ZMGxzYVRoSVFrZ3hVMGRSTmxGRmVsSmFja0pXZDNCQlIwOU9TMDlQWTFKM1UxYzJVRk14ZDBkS2NEWXpVMFl3TXpCUVZHZzJPR0ZYYWtRd2NHWTJVSE5LVFZCM1FVa3dRbWwxZW1sUVdUUjNhR0pRUWtWd1dEbG5helpDZEdsMFJYWXpjVlpvZFV4aWRqaFJZVFZEWnk5TFRWTkpWRE5NV0ZoRGVrMHJha0pQY0djd2MyTTVTVTFwYjBncmIzSjVhM1ZIWTNSM1QycE9SM2wzY0hFMmRYUnlVMjFLYWl0Vk5XSmhSRkpYVld4UUwzb3laM2RYUWtGT1FtRlBkbTVzZDFKblVrRkliR3BTTTNOUFRHdGFaREp1Vm1oVE5HSlhiRzFvTjNWbk5IUlVkVEpHVW5nNFpHRnhLMUJpVXpCMU1YaEpRV1pMTmxsU2VDOWpNMU5sYjFKbFYydFFWRkkzYUVSc2JreERhbGRTVFRVclZYRlZWSEJpZVZVeEwyUnJTREp2U0U1RU5qTnFja0oxWkdjNVoxWnlNVFphSzJKdVZIZHVlbE15V214c0sxZGlVR2cyWVdOT2VsZFlOWGs1WWtGbFVVbzBVUzh2VlZVMFdXMDJZMWxqYmxkTlJqTkNZbFZQWTJoc2NVVklaMDVNVW5aVFZEWmxObmh3WldOU1l6RmtkemRZYzJSaVVsTjVOR1ZYTDFodVpETnlObVIyTjJoV2NrbFJhR2xFUWtGQlFqWk1jakZsUTJOYVRURXpSRGx6Vm5kTldIVnJXa2h4V200NVJ6TTVNSGM0Y2xKcEt6bGxTRlIwVFhnNGFVUkdiWFZ1YVUxbFowOUZlWHBrVEdoVUsydGpiME5sUW5OSWFHcG1jbUZOTm5OWFdIZHZVR2h4Vms1eVJHNDFXazFTYUcxR01FczNXR3BPTkhobVFVcEtkM2RtWVVKMVdYVlBZV3RsVkVKMGJrczJkMEZuZUhBd2QwazRjakYyVUZsaU5FSnpTR0ZtV0ZoQlFWZDZlWEJJYlhrNE5sQmxlRWQ2Ylhkek5VODROV0V2TnpCWFVGWkJOekl6YjNNM1NVRTFaMWhGVWpKbGRUSk9XRFpTZFhSc2FUQjROVkZZTkZsUU5FSm5RMk5YV0hjek56bDNPRWhpTlhNME9XcHFlSFZtYkhwWGMxUnVWaXRQWW04MlQxZDNjbU5qVXk5SVZVVnphbGRJU0daemVFY3lSRFJ2VlV4clMyNXlRV1ZRYzJoTU1qaElja0ZoVms1Q2VEWlpaMHhwUVRSU2NIbHhSMkY0U1c4MFdGQkdkWFZLWjNOVVMyWk9NbUpoUXpSYVMwOTNjVUpDYXpOYWJsbzVWa1JGVms5Wk1WaElTSEprYlRoQlRHMWpVMEpoYVUxRFVuQjJMMWRhWm05cmEwaEtOVFlyUkdGaE1EUnhWamxOVWtKVWNVTmthemRJVUVKdk5FSmpjSGxwUzI4Mk5sWnBiRTVVZFROV1MwZG5iMGREZDBaSWJHY3dkV0ptYW05NGFITmhTRWM0SzI1NVJ6TlNWM1V3ZVVJMk5IcDJZMFUzVVVoVmJrOXVUV3RtVUZKWllteFFjVWhPUzBSb1pHeHJVRzFSTVhGWVpYRlBiemcyUkZGME9VZDRNbE5PVUUxYWRVZzFMMkYxYmtwbU16SjJhaXN2Y2pKeVpIazJSVVZoWVZWaE1IWTNXa2wxTmpWRmVVRTJRbTQwUVRGQlRWQlBWWFZNZUhaSWQyVlljWEJsV0d0U0sxcEhSR1JVWVZJNWRXdEdPVkZGTVVwVWFUQk9UbWRKWVZGaFNISTRPR05tTjBoMVZsRklNek13TUZRMlNuTkhVamR6YVRrMU5XODBWMEZFTjJVd2REZFRNVE5NUnpsblYzZFFWV0pyZEZSemFHZFJPR2xVUVdzNFoxQmhlWFpGWTJZMVpFRm1OMUZRTkVoRWNFZzRibk5CZUhWSE16ZEVaM295VVdSSlQxQjZhemxxVG1GRlJGbGFXVE0yTWtOWVYwUldZemxvTmk5QlFWQnFaa2xGUmxKbFozWnJOemQ2TVhNME16SmtORFk1WldRdk1uSlpMMVJrY1c0MldHTjVRakprVURsVllVUkpNREZUSzFaMlVYUm5OVXRXWjJOQ00yeG5VSGRCYUhWbWJsbExOVFU1Wm5KeVdHZ3pkblpITDJwWlptUXlUVzhyVlRncmFsbG5UbEJXV0RkV1dEWm9UUzlDVW05bGFIWjRkWEZCVDJNNVEzbG5aekp5ZDJOcE5EVlpaMGRPTTNKSU5YQmpkRm96TVhsNWVFNVBZWFkzT1hReFdrYzBWbWRIZHpoNFZGbGljblJXZUhoaVVWbzJPRW80TlRseFRYVXJaekJqZEdZeWMzbFBibXQyY3psUVpTc3pOM2QxWlU5UmNYQlFhMHh1UzNSYVUxbFVVRWhrVFZKaWEybHBNVk15VW5aMVUzbFBNek56Ymk5MWRXVnRWblJPTWtNMmNqSjBlRXhtUkd4MWMwUTJkMHh4ZFVrNGJ6WTNXVFoxYzJvd0wxYzJaMDB3VEM4M1EzbDRZbWhJTW1KeVMwNDJUbWRLTTBrMVMzUTBjbkZWY2xkSlJVeHlRMlZ3V0U0elZXUmpObFJMY0RaU2JGaENObVZhUzFseVlTdFdNeXQ2V2pORVJqWm5NMll6WkRRM1YwNDVWM0JrVkRkVlR6TjZiaXRoTjBvd1RteE1MelJyVjI5YU1Xb3pNMHhSVVcxMVowaEVNVUZJUTFkMVpFdzJTbmRxYlVaWlpqTTVUbGd6U21sVUsxUndOMlV5TjJWcFlqUnhWMEpyY0daMVMwOXZTM05ZWjNOYWNtNVFPRE5MYTBkNVVHcG5UelJUWlVwUE1tUXJSMVV5V2pGTldHWkxiR2MwZFdGWFdHWnlhMUpwVmprNE4ySXhaREZvVlVwa1ZsYzRaakUzY1RGelYwWmlZM0pwZDFCU1NuQk1OVkowVUdkR1YxWkpZbXhPUVU5emFFSlJka1ZSTVRSR1kzWkpXVVU0UzNocWMzbDZUamxMVVVsaFZESjRiMkYwTjJKcE1rRm1kSEEzVEVKV2REQjBibVYyYlhObVRqWndORXBwTW5wNlVIUkNiVmhJWlcxc2Iza3JLMWwzZWpCb0wzUlhRVTVxVXpkUU4zTjJXRGw2UVRZMmNXTjJjVThyU1N0U05EZzNkMGgwT0V4T1J5OWplVXRyZFRkaVRrcGxiMjEzUzA5Q2VEUmtjVVY2S3pCM1RVMVdUMWhTTmk5UFlWVmFRalZPVGpBeVVEQTVNbk5DWmtSTVVVVTVhSGw1ZFdsbU16aDZkWGxpVmpGb1VuQnlhSEZOYzJOemIwRjNSQzkxZFVKRllVZDBOalJXWW5kVk1FWlJUMWRqVTFoQlZUaHlNWFE0Y1ZwVE1WQlVPV2hUZGtsWmFEZHJTaXRwTmxnd1RIaG1VRFZtYmtabVMzbHliRVZIUW01bFJuaHRkR3hUZGs1bVExVklkMEl2SzJ4bVQxQlNXRFYwVkVONFZFeHpNWEJzTjNObU0yeFpVSFZNTlVkaFlXeEljRkZxVlcxWGNVazVZa3B3TlN0b2VtOXZSbFl2ZW5KMlFrOXVaVmxhUjBGV01IcGtOR2czTkdKbWFFbERSMlZDV0ZSUllqQXdhbTVTTTJvelVqWlVkWGRHZEU0elpIWklWR3d2Wld0alpIcDJaemxuVUhWUVFreHNkVkJRWkVkek5IcENVM1pYUkZwWlQxSldPSFZ2VWxRMlZHRkNZV0ZvWldaQ2NsRnlhak5UWldWa01XRjVPWFoyY0VkV05HZ3pTMkV5TkVkRGNrdzNUMVZFWjNkT2MweDRUblpMTmxseU1sUXlWV1V3UVdaeFVtOXFZbWRuVlhRNFdEZE1URzAzYTFjMk5IbFFVaTlOWTJaRWQzRXhlRWRuYlhwMlEwd3lUM0JoYjFOWFIyZHdNbFp0V1U5YVpEVjNkQ3N4V0hveVkwNWFkRE0yWjBjeldsbGFWbGxzTUhkSWFGRjFNMFl3TVU5QmREVk9iVEJoWVhSSE1tSmhkMGQwVUU0dmMwSllkMFpuUXk5QmVEYzRZVE5vWW01Nk0yOVlNV2xuZEM5R1JEaERURU5qWTB4SWRDdHZUMEYwWVZaVWNXUnRaR1pUVDBGQ1JFSk9jbXBQVFRGTmFGWXlOME5PVG5wRGJYTm9XRTAwZGt4dmJIWndNSFV5VW1SeE4xbGhSazU0VWpkeVJFZDVjMEpsYzBaUE1raGllSGczWkc5bFQyOVFNbWR1VFhSRFNqbEpja1oxWWpaQlYyUnhZMEZRVFUxQ1NHUlhSRTR2UWpOYVFYWnJOM0ZEYm00d2NFUklaR0owY21GU2NGVlZVbFJ1UlZCTWNpdDJjWFYxY25CR1UyWnNUMUV5WkdSWVYyUkVVMmxrV0RCRkswbFliVlV2Tnk5aVJIVTBaU3RKWlRab2JEbEtVRkp6VlRkU2NWVTJaMEYzYzNkT1RYRTVkR0pqYjFGaVpVeERRbTB3YTNOb0sxSjFhbVJJUVZVMlZqaFBTREZZYzBWd2VrSm5NQ3RKVVZrMGJtcGlRM2hHVXl0WU5FVlFSMDQyTmxOclJubFdZWEpOTVRoQ1JtNHZWWEJsVEdWaFZsVk9iRFV6YUhJMlFUTkZWbXhKZWxOdFkzVkhjVmgwUlRkS1ZHNHJjRlJGU1ZjNFNtWlhVRmRvZERod2JXWnpTRFI0U1ZOM1NYRnJjRzUzVW5GMFZuQXZaSHBuUm5RMmMxZHFWSGxyYTJkck5IWjNOMlpsV1hwMGIzRXhhMWhUVTJnek5EZFNVMGRRWW1FM1pIUmtlazlJVTI1aVlYRlZPVXRQUlc1WkwxTk5jM2RaU0RSbU9YTXZiRGt6VjBJekt6RTVaSFp5U1RoalpqTjZabU5qWmpGelZHSnNTMVo1U1RKMmNFNDVabGRJT0Znck5HMVBXVXBxYkRsQmFUZFJaV2h5VTI5bVlYVlZVMGN4Y1ZWeFRFRjFkR1JyTmxCNFpsUmpSekYwUlVkMlVFbERURUZVV0hWUEwzSTJSblZPUWt0UU9GRmxaVVF3WTNGT2NFMURiMGMyTDNkc1pWUkJWMGd4VUN0Mk5HOVNaRXROY1RSaFREaERRbmR4VURSRFkwcG1aMEl4VEhkWldEVnZhQzltUTFWclRWWTFZMjFwTkVrMmNWWjNjVlp2ZVVsS1RsRm1OV1Z0YnpSeWJ6VnRXbFZtTjBka1lrODFkRU5VTkhWc2JFWnBWVk5STldoQlNsZDFhRE4yZUZKNFdtVXpkRnBtZW5SNVl6UkhkaXRCWXprNVNrVmliVEIyU3pJeGRFeFRNWEp5T0M5TU9FOWlhMlZFVUhrMWRrZDBRMlpvVjJaUGFERnNkVU5vYURjeU9EaHlkMHBOVERkWU9IaFpWemxaUzBGU1psWk1SV1IyVTBWTE0zRTJkVzV3Y1c5NlZVWTNiemxDVVRKU2NXMDFORlpWVldKRGFqSmxjRkZyZGtOcFZuSmlTakl5YlhWYVVUWTNTbXh5WVVodE1sSTVhMEZpSzBSS1RYSTFTRkUzTlVRMVNHWlZXRzVDWW1sdFUwdzJZVFUwYVhNd1pESnVjVkIxYm5GUGNuVnlOaTg0TDJaaFFXd3pTRVozYUVSVmNqWTNVazlpYlhadWMxQkhNVmR3TWtkRlV6QnhXRGM0VkU1b01XZEtkMHh0YjB4SE5Hd3hLM2MxZFd4bVprZzNZbUpTTDNZdksya3lNM1l6Tnl0VEx6WXZiemt2TDA5UFpXNDRRVXd5T1ZGamRVWkJaVVUwU1ZSS1NFSTRaelJsVURGQ1FVMW1WVGxqVkRjNGJuWlhWa0Z1TTBGWllYUndNSGhGWjNOUlFqTlJRbWhGWm5wa1EyUnhSMmxFV2xsSGIxQmxlVEUyTDFWVGQwUlBkaXRsTm1aeWNWZGhZVFVyTkdocFdXdG5UbVJrT1N0VU1UUnBLM1YyTlRReUx5dFhObVZpVVRVclZHOXpNRVZoU2tsUWJXUm9VVWRyWld4elVWRkpjREpVZEhSQ2MweDVSRWhtTVhORWNrbG1kbEF2WlRWMVdqSXpUM2RQSzNsM00wTmlSMVkzU0ZSS1VqQXhZVWNyVDJSV2MzcFBWbTl5ZFd4VGRuQkxZVkJwUmpKNFV5OUNlbFJKZGpkeFQxUTFjVkZsTjFsVGNXWkllRGhWVFN0cFlYSnVkamM1WlRaT2EyWnNjVUpKVG5sblVGRnFTakpqYVVnMGVDdDVObWhGZUdvM05EaFJhR0ZyTVZSRlkxZ3lSemhuYUdoa0x5dElNRXg2TkdOSWVEQmtjRk01UW5WMWRFcENaakEzZFRCb1RuRjROWEJ3V0RrdlpsaDVZMjVxVGtONFV5dENNWE00TkhwSmRFbFBZVk01VlZCS1dEQmhXRmRFVUZGWldVTlNRaTh2TjBwS05TdE5hak01UTB3MlpUYzJRV2s1YVZVelpWRjBSMlZ5Y0hsMGJYQk5TRlpzVEdOWGMzZFVXbkYwUlU0dk1qTTJRVnBGTHpGaWJsRXhPR1IzYkdGcE4zZDVUMGRtVTFNdmVYRnVlVFl4Uml0MlRFZzJZM1pwU1N0UWIxUkpUbXN2YURWak5FZ3JVRGgyV1hWTFpHTlZRVlUxWlhBcmJUUlVhUzkyYUZOUloyNTRja2QxSzA5SWFtSk9VemhaUzFaTE9IVTFhSGs1THpBNVZXcFdTelJrU0V4ek9GRlZiekZzU2pOUVYzbFlVVmxVUlhBMU1tbHZlUzlJUlU5UWRqYzVVRTF6VDFBd09EQkNUWE5TVkdoaVZrMVlRaXRwYUc1TE5FZHRaRTF1ZGtKbGRFOURSSEZFVTBGbU5ERm5hSE0xVVhOVWQzaE5MMWczYm5sWFptbHBOVFEyUzI0eFRYUkZka2xHWmtnclNuUk5aM2RhVURodmREaDFRemd3VW14aVF6ZFNkM05tY2pKdlZHVjZWbUpsUnpNemVIa3ZjbWdyYlhSWWNtbFJlamhJTWpFclMyWnZlUzlVZVZoaFRUTXpXR2RxY0N0eWJXMHpLM2h0S3pSRGRVUlJZaXRHVjAwdlNFbERNMFJUT1dOdllraG1RbkJ3T1dwcE56Y3hNbWMzTmtkV1N6VXJTRXdyVVdGWVlrOVJWbXRJUm5RMVZDOTBZekpyTVVGSVVVUk5jSGxJY3pOM1p5OVFlRGxSYVRGcFNEaEdaVzQ0UVZWdFIwVTNNU3RNTXpRdk9GY3JZbkJNZFVSdlZGUm1TakZQTDJGb1YxQlpWMmhhYmxvMlIyUlhWVUpNV2k4eWRURlJaSFpDWlU5eFJUZG5WUzloYlc1eU5qWkpkR2RTYW1aa2IxSnNkV1F3TlZaNE1EbHBWMWh1U0RGU2FuTjFXbmd3WVRCbVlrWm5Vek5VUmtOUE0zWmhlV2h3T1dKak16SXpVSGxqY2s1eFJUWlBTakp4ZW1OMlFuZzNZemQxTDNSaFUyaDZlVWczVEdSaGVVMXdiVWRpUTNaWGNsUnhRMjFZUzNkQmJqZFBhVE5JUjNscE5EazJlVWxKWWpWVVRGSnVWMEZ6ZW1zMlRrUkplVVpITUVkeGJsTnFURTVtYkhseU4yOU1TSEoxWmt0NVQzVlZVbmd5V0VOU2VURnJka3MwUVhKTVpGTm9VbXREWmpkV1NXMTRVRmR6WkM5eE0zSkhXa2wyVUhremRuaFdaaXRqUlc5d1RXbEdkRXRPUzFkeE1HZDVOMUpYYlRScWJYTm9iM2hUTkZSc0x6aDBMMDgwY0RkMFlrSlhRVWhCY2sxTE1GSTJkRWRuTkRkQlJrZFVXVVpTV2xkRFZIZGxiVzR5UVZZeE1HaFplRWgyYTFkUWVUVnJTRGxWYkZZcmRqUXZhVVZHUkRZclpYazNha2hKVEUxRmJIQjRNRFJ2VmxWcWVtcDFPV2RyVUZsV2EydHFRMlZrZVM5YU0zRmtRemgzVkZaVlYzaHBkMFpsVG1Gd1ZFUm5aekJPYUdZMWNUQjRPVTR4WmpWRGRVMTVkazUyTDFKWVNqQjJXR2huVFZwdFlrTnROVGRUVlVacVZVVk5NMDVxVkZsVlJsUmFSV051VFdvemQzWm9aemgzVVVsbU9ETmpTSFVyU0c1bWJVbGhRbGM0UTNJcmRHNVFlRUZ5ZFZoUlRWbHVUbTl6WjFOak5IUnRRV0p4YjNoUWNUZzJha1k1TWt4NFFVRkZkSFpIVUhsT2VsZE9hVkV2WkdVdkt6azBjMDVxT1VkbU16TnVkakpOVEhwbGRuQm1OMVp3T1VoRFNESkNWRk0zYzJrclowd3plSG92U25CelkyMW1Oa2x0WlZnMVdIbGFPRVJNU2poc1FVTkpVbUZEVkRsQmRteFViMGxWTm5BNVYyazJLM1IyTHk4ck9XUk9VSE5qUVVvNVJtSjRSRnB2TlM5a1RFbFRTMjlsUTFCeVNFTndhRmhQTW5RdllrZFNRbEZVUTNnd1pXNDVkRWxuVjBobU4xbHZMMUpxYTBKM1ZHWldRbk0wTUdWRFdVNDJXbVI1U0hZMlRVczRSa2hHUkZwMlJWbzRXbTEwZGpOb01HbHdTRkl3Wld3elNXVXJlazVEY21nM1ZVeG1MelZsU2tWbVZpdHRhMjFuUkZCbFUxRkdNMHBCVkZWcFVWUmpja1p5VUVobE1EZDFTSEZyWVdrd1JpOHJka3R3TTFObU0zaE5ZWEptYnpkMGEySkJZV3h4VHpCU05tNHZiM1poYjI1aWNGbFpURzQwVmpWWmVpOWpPSFZIYUVkbWR5ODFZV2xSVG1sdGFEQklUMFpPUWxneWFEWjZOWFJ5WW5KRWIwNWtXbkpLTjBNM0szbDVZV3N4UldrMmRXWnVUVEJKSzJSVGFXRm5iMnh5WldKcFVVZDVRalpEVUZOT1pXZzBjMmhJTkRJelUwZG1SMVZTUVZvdk16WnhMekIzTmpWWWJHZ3JWbko0ZFdseWJsWlBTbmhHVTI1dFJURm1OMEp2WVRab1REbHBhRGh0TkVRNFJWQXdlVUZCWmtGelFVbExLMHQyYnpkV05ucHZjRU1yU3pKUlExVTRMM1J0WTJrMU9VUlFNeXM1WTBGMlIwSXJhV3BOUTJOUlNpdEpObTF1TVhoU1pHWmpaMjVGWm1wNk16VjZMeTlsVW1VNGEwZGxTeTgzYW1sek1EaFhUVGhsYW0xWGFWVkNiU3RsTlRWMmEzQXZVWFJhYVVwSGVHVmxWMjEzV1d4MVNrVlJabGQwYmpsVGJXNVdUemc0ZERaVFJWaHFTbmQ1V204eGJIZDVRVUpSVURaMVpYaHJhR0YzV0dKaWIwc3JXSGN3TVhkT2JreEJjMjg0T1VrNFIwUnZXVWxDVjBsV1l5czJOVWRCZUdWSlkxWllibFphZWxnek16RldlVEppTlM4d1psUlVOSGh1ZEZaaU0zQmhiaTlTUVM5b2NVTTJSWG8xSzFjMVVDOXNkamhuTHpsQlpsTnhNM0JWYkRWRVFYZ3lWRzFyVjJzeVVYWjRWMDVTTm1GRk56VlNlbFEyY2pGTk1qbDJOelY2TDBRck5HeHljalpWTTFoSVRVNDNNRVF2S3pFNE1pdGtMeTh6YmsxUVR6Tm5VWGRQUkZwVE9ITkJiR3R1WVhCNlRISkNXV0k0TUVWMGQwVnFVVkphWTNZck9YSmxSMHA0UTAxMVFVZEJSa2d6ZUZKaVZVVlNabFJrWmxSa2FHRkZMMXB2TkV4Q1EwVjJVbWR6YzBSRFlqSlllblpFYzBSU2VsRkZlV3MyY1dwdFkwVjNSVU55ZUZCSWVrcGtjMnBNVjJsTWRFaHFibkV4Wlhsek0wZEhiRGs1ZG1WdFRqRjRkbkpITVRrM1FUYzBZbmxQVEhCS1duRnFiRWt5T1M5dWNtbzJOamd5VFZRelZIWlJSVnBZTW5SclpXeDNlaTluV0V4WmVtRXhaamhJVTFCcGRXOXJVbUl6Vnl0R1YzbGpkekl6TTJSR0wwTnVNRloyVERWVGMyVjVRbXBhUVhKTVNrOTRVREpSU1VkNFdYaE9RbkpRT0VWaE5Vd3lhM1prVEU5Q2VIVlJkSEI1YXpOU1JVcFNhVmhCWVVwR2FHMUlRMUJCZGtwNlRVcERabWMyUnk5dE4zTjBaR0Y0TmpkM2NrdGxhbkJ3V1ZKbGVXczJRVGxvYmtka1kyVTNZVTg0ZVRGelRuVkJhVFpuYTIxRVJqVnhRVWxZT1V0NWFGazFkV0pxZURKcFpXeEdZM1pYV0V4aGMzSmxOalJpV0dVck9FWTBVRlpsVXprdmNGRXdUMjQ1ZHpCalRsUnNOVEZOUWtaUmVFTmxXbmxEVlcxNFRXVkpSM3B0TnpaVFJuWnhOMmRFVDJKWmFsbEJlalp3WlVkWVRrSnNlV1JPVm5WR1UwNTRObE5xVldOTFZXTldVMmxUVUZWVFkzWkZla05hTWtVcmEweEZTbTFJSzFKNloyNU9lbFJCUlZoUVdqbGpSRWhOUkZCTVQwZ3daVzg0UVZjeE1rVktZa2t2Y1U5S1pXVktWVzk1VXpCTFMwdElXRFZQVlRkUlpHTk9NRkp6WW5CNFZGaGpVbVpWWkROR1RHSlNNRTVDV0RBemFFRTVlVUZNTlhkRUswbGhVMFp3Ym1KeE4xcHpWMVZYV2l0Q2JtZFFNVGxDUTAxblZtWXZiamN3Vmk5SmVsZFhaSGxMVjB4M2NXUlBVSEJSYzBGVmFtOTJXSFpIYlhWT2FrNWpNV3BTTm5kbGJ6RTRaWFphWWpkNU9XWXliVTFZYkRsTFEzQjFNVGM0UzNreFltVTNVVVp2YUZsNGVGaGlSR2d5ZGxKWlNXRk1PSGRxYkZsQ015dFdaemQ2ZDJKalpXSnlTemhRV0hZeVVVMTVRVkJtVEZoTUwzTnJSWHBVU2tOQk1XVjZOVEU1VG5ORWRVcHBaWGRRVEZScVkxRkNjM014TlhSNE5rNVhhblF5VTBaak9UUk5TbWxXUW1VclZVNWpPSFJaVW1sdmQwbEJiRlJDWVVKd1lWZGpWR2t6ZFNzeWRGVnpUa1JsVTJwTFZEWnNVR2RRWTJoT1ZGSTNZMUJCZEZCSlJWQnJaVTB6U2t4SmJqYzRhVGRSYmxoaGNtbGtkSFpMWWxwcU9HbGpVMU42T0ZoNEsyMVFLMHhaTTJKV01UUmtWSGt6VDNKeWF6QndSVFZZTm1sbVVuZElTSEZUYjJOWlVHSklOMkp2VlN0M016bHVTemxTVGtGSU5EQmlXVFZZT0dWUVdFaHlTa3RKUTJNNE5GVXlXWHBRTDBGdU56aEhWek5ITUUxaVZtZHFXbXBwYmpKRGJsTTVRa3RVV1VzeE9VcE9TMnAxTm5wbGVsQm1XRE01TDFoME4zaE1Mek01VlRNeE4yVXpaREk1S3k5SFJYZzNiV2RHTlc5MFozSkpSWGxXZW1OS2JUaFNiMW8yUkZWak5rUkZPVUZMYUZBdlIyeG1NemRQT1dWNmEwZHNTemxYWjBodFMwVnVkRXRIV0daYVNtUTBRMGxNVkZGQmQzQmFPR1pEZHpaTWJIUTBSV1JuWTFWUVNXZHllVWN5WW5kVlQxTlpWSE5SYm5sUWFUTnNOVlJhUVZCNGNWRjRiWGQ2YmpCSVpWSTBhRTh5ZGswellXSnVjMDltYW1WMVZHSjFWblV5YUdjd1lqa3JNSFZpTjNoRFpsWmlZbTE0TVRZNWJtNDFOalZMY0hSelFsWXZhVEp3ZGtodVUzTkNTR1JIYzJ4R1IzVkdZVGxVY0VRekt6QlFVblZPYzNwYU9TOHZkSEJqZFVZMUt6bFJOak5YTWxvMGFtY3Jka0ZrVDBKdVl6TldMM2wwTjBaNk5UZEVVR0pDWXpJNWVqbGpPVlYxZFhObE4zbEdOellyY2s1a2JESTNOelZvVlhSbk1UTktlSEkxWlRFNWFsa3lWblZ4UW5sT1JFeFpjbHAzYkdoa1pTdFBSMkpWWXpBdkwwVjBkRE5YWkV4aVRUa3llbTFhVmpORVlrNHdkbkZEU20xUVR6aG1RVGxaYjJWdlRIVldhbVppUlhkMU1USk9NekkwVFROUVpIQndUMjFIYjJGTFpTOXhTSFF2YkU5WWFVNTROemhxWWpadlpHRkZORE13WVU4NVNYbE1WWFZ3SzNsU2FUUnlZblI1TW5aWWJESjZTWE5ZU1hjMWMyVmxUWEZsVG1kdE9FeEtiVFZyZUZkNlZ6VlhLekpIVmtNelUxQk5jM3BYTVc4MU1IQm9ZbFZJVm01NFJqSTVMeXRyTHpaR0swdzFhbmhJU0hSSVpXdFFNSGxNTTJsUWREQTRaVzB5YURaRFRpOXVjelJQWkV4bVVEVkxhMUF4ZFhwU2RIaElNMlZMTDBGVlkwNDBTV2x5WTJWb2Qwd3hWUzlpZW1NeGFtcHFNRkZ6ZWs4MGRVcHVObVJSYWxCMVRWbGpibnB5Y1haUlpqTk9PRzFWYjJRM2VVZ3pkRWhYTTFoWVExbG9ORTUwVTJFNVlVMXBVQ3R0WW5GdFptaDJNMHhEZEZsMksxaElhVzVPT1haWU4yaFlRM1ZXWjBabFMzRnRla3RIVFhVM05uSm1NM1pJT0VSdE5WbE9VREpXSzJwTk5Yb3dkRmQxUWl0Rk1tSlBVRVpUYm1SUlFYcElaMHR3YnpSRGVsbDJXVUYxVUN0WVVIaHNLM2RtYVhBeGJFUnpUMFp4THl0UGNrRklNSFl6ZWlzM1ZFRkpNM1pJV1hSRlRYWTVRa2RhSzBKWVREZFJPRXd6ZVRoc1RVVmtWMUpUY2t0T01rNUhXSFV3YURKcFpHOUhNM2RVVkZCbk5YQmllVWxTUldsUFluRkNOWHBHUlhReVNEVjBVMlJvTDBaeGNsSXJPV2hMU25ORmRrcExXRkJVYm1wSkwySlNaa012VkZCaGF5dDVaVzB6WWpOdVRGRTBXaXR3Ym5aWGVWQlFTbGxGYVRGblkybzVjRFZOZDJwNlRsTkpkbGc0ZWpSUk1rTnZWVWg1U21wdlYwZGpkWEJHVm1sRWRUZE1ibXRTTVUxdVdHNXVPREkzUXpCblYzTmlhbGQ1VlZSak4wTlpRbmRIYldsaVlYVlNha1JwYVZWaVJtRXJVRVIxV2prME9VaGpkMlZCUkVsd016aDRhek5tUzNGWFdHUTFOVGhvVVdSQlNVSXdla3gzUVdSUE5HaEVjM1U1ZUhCeFVEaHhVREZHYTFwNVJWaDFPV3gyVlM5c2RrTTVLMjFVTmxrdmRuZzNVVnBwTlRsblYwZHpjalE1U2tseVdEbEtNalJ2Y1Zac2VHVlhZbW8zZEc5VUwxZDRiM2hNWTFoSlFUZHhjMEl4VVZSQmRHZEtkRkZwWVZaRmIycGljMVJ1ZVdOVE5EaFdhbmRQZDNFeldqUlVkblJzTTIxRFdVWnZhRm8wYkhOdVkyRkJWRnBWUkhSaFpDOWtVRzl5YXpocWFHRk5lQzlSTkhwSE1ucEVMMmRTY0ZJdk1HbHFWamd5TDNoWFpVeG5VRXRhVWpKa1pFcG1SbGsyVm5sb1NVMHhhMjR2VWpkV2F6VXZlVEZPU1RWTVdtZExOWGhyZWt4NFRWUlBOWE5rSzA5d05FUlZkR1J6TkdwelNXbFJLM0JXZVd0dVMwVkxWWEkxU1RSMmRYRkxPVzFHTlcxMGQzRTVabWxzTjI4eWVVdzFTVWcyYVM5RllrVlRhWFZHT1RWVmNVNXRUMHBoUVRSNmRqQkRZazlxVkRaeVl6Sk5XRkp4UjA5dGFHNHZVVkpQVkdWdWNYRmxRMjlGTlc1MmFVUTVNVGQxTDFKSVNIRnVjakowZG5wb2VXUlRSVkY2YW1nM1ZVOTBWelpOUkhoR01WUkZVV1ozVUZaaE5WcHBTV05SUVZSWWVVbDFXV2hrUlROaWNIWlJWMVJGZFd3dlZYRlhTV3B4ZFVsVVNYSXhjRWhMTkUxa2RFVlphRmQwTjJWelUySkdOR3hUTmt3dlNYSTBOVlJQUkUxcU1GbDJlV3hGWTBsNWJFVk1iSGhDUm1wMVFYaDRiRkZNYzBWMGJIWXpRek5JUTAxVFRVOXNhMFUxTHpWWlVpdFFjR1oyUmpCaVdsVldSVTR4TmtWa01qWm1RaTl2UlVONmIxSTROV1pEZDJKcEswOU5Samx5UzBoUWFGbDBjbTFvUjA1bVVsQTBjRlo0V0V0b1ZIQTBZbXRLU0VZck16UklVbFYxUmxsNVVVVTJXaTlhZWxGS01GSjFhMnB1UTJFeVpFdDRTM1pyY2pWM1UweDRTM0FyYXprNGQxQlhWRzQ1TUZCQ2QzRnpObXBrUVdKcWMyRmhha3hzT0VsV01sbFRhamgyY1RsaVQyOWxTbmh1ZFU4MlRrWlFRVE5oYTJNNE9VSjRlRVUyV0RCMWJqTlNaMmcwV2xGVk9VSndSV1J1ZVdKTWIwTk5WVFV3UzFGemNqQTBUamxvWkZkT2FTdFhTa1J4ZDNoMGFtdHJabkYxZG1ReEwyVkJTbGxNTlRWTFNtSnVkREprZFd4UEwwcDJjbGxtUmpWWlExTTRXVEowVldvdlZWSnZSRnBMU3psTWVFdHNNSGMzWkdKb2F5dFFWWE5YY1haSE9XZG5TRmwwYVVaWlNtZG5kbWMxT0dGTWVrWjNhVmhwVTBOWWFYaHROVTB3T1ZCWVZIUm5jV2xTU1V4M09HSnBVV3B1WmtKU2NtTnBhbGRTYnpOVmRHcDVNR2wzVmxrelRtRTNTMFZXYVRoVVdrSklSV012ZG1FNFZVcDBUVzlzZFZKU05VMWhMMjFNZUV4d2JGcHlTMHB5UmpReE5VTmxURmxrTlZrMk4wTlllVnBTV0VGa01HdDRZbWhZWWtaaU9XSXZiVTExYzFsUVpVdzBaVFV6WTBsdFNWRjZkRmhaVkU5bVJYcGxXVEJtVW1wMGJqUmpibmRFTWsxU1QyWm5MemRITHpjNFkxaHBLMGMxT0dwNlJFTnVOMHRxY0UwNWJrcHFPVGxMUzBSWFNsbzVTREYzYXl0SmIwNDFOM0JMWVhoTlpVVnViaTg0VG1GSWIwSnVjRGh1VURCbU5GUndhbVoyY2tKbVVFVjBZa0ZOT0VaRlowUTRibUpTYW05aksxSm1TSGQyZG1kUWJtUndlbGhqVXpaUmVFWXJiek40VnpaR2RWTk1jWFpMV21KMU5qaHdabEJ0ZURJdlJrWXJZV3BHZGtkdVpFdE9keXR2U2psYVMxUmlUR0lyY0ZwUmVHWjNkVzVwWkRCbVJqYzBLMHN6SzFZMWVWRjFVVGszZWtZNGFuQldaVll2V1dwNUwwbGxiRzFJSzA4d1R6aFVTekJETVVSTGRXWnBZWFZpY1hkWFQwUjRSSFo1VkdrMGVVWXhhV2hzV0doNFIyUkNORTB3T0cxb1F6Uk5XRUp4UjJFMVFtVklVVmt4VVdoMlZrdEhVa05ITVZOSlZsSkxUWGRSV0d4VU5EZHFPR2QyVEUxa1MxUXJhVlZpYVhoYVNuZHJRMFZNYlVGTGRuVlhRVWxDV0hKUFVYWnVWSEIwV21aTFkyZHhVakI1TTJsWEsxQXdORGRTTmxOMVNXeFBORVowY0haMWVHNVJRMVZtWWtReVZ6ZDRMMWhITmlzeFlsSkRNMXBzVWtwSk0xTk9aV2hVYUdaRlpFc3ZkWEI0TUdvd09UbG9SSGhLVm5WME1ubzRVMVJFVUVwclpqQXhNM2tyVUZKRU4wVXdhWGxVSzFnM2VGRTRTM0pWVUZOSGFXa3lOa0o1Y0hSMldXUnBXRTQzYzFoVFVFZzNjbVJCV25Kc1pFOWpTamhQYUZOS1pUQXdNMGhsTDJwa2NFSTRSRnBuV0hOV1kzSnlSbGxHTWl0UWQxZE1SMjV0WWtaWU5tazBhR3RoTmtWR2JGVmhaRFJ3WmtOVU5sTjBRVmhxUkdRME1TdGtOM1ZHWWtwV05HODRTbEV5ZW1wa2NqSldTR2w2ZGpGMmRuTmpaWGhEY1VGa1F6aENkazFZVkRka055OHJkVkJ6YW1WdFNHVlVjbFZMVm5kdVMwaFhRVnBaYUVKSFducEJUVGRhT1hWck0xTkxNSFZyUVZvMmVEVklVMjFFVDJVNGRWZHNhVkJOTW1Jck1sVjNUWEI2UmpBd2FHZEdRbTFFVGtwTFRtOXpTVWhHUnk5eFFrUkdSR3hyUlhCRWVUQjBjMGN6TmtsbFUySnVUbUZaYVd4c1NqZFVSMlZHVURkdlpWYzVRekp0U1ZwTlNIVlJZbFV2U201S2VtVnZTa1pyV0dRMFdYQTFVRlU1ZFhJcmQzQlhVMnBQTldkRU5tcG9OamxYTmtVM2NEZ3dTamwyZG5Ock1YRkZlVEZzVUZsR1UwSjBRakpJY2taWVoxTkNjelpOTkV0bWRYaHNaRU16TWtoeGVHVjROM1JuWjBsaWFXZHlVV2syUjJ0QlNpczVlVnBLUzFkV09XRnBjR0ZZT1hJdkswOTBTV2x3VmxSaGFrcDRWMHQ1YURGSE9GUmhVbEpJTkM5SE9YTXJlVWRyVWxaSFFYUkxNbkYwY0VocFRqVldjSGRIV1dKbU1rWXZPR0pxTkU1MU1FRnpZbWh2ZFhCa2RFZzFNbVl6YjBKMFNFcE9la0pJVW1wSlZGRTRPUzlxTjI1T2MycFRTWGxUV0dzeFRFUkVSMEZPVHpGWWVVOWljSFp4Vkc1elZTc3ZaMjgzWkRsTWVuQlFOR3g0SzNKMFlqVTVUMmhXT0hGdmJFeEtXVVYwVjBoeldGVjJiMFZRYVdSU1FYQmxaVWhPVGpaSWJscExNMGxHV1ZWdWNVUTRlSEpoZDNaelQyRm9SSGhtWmtKdFlVUm9TMmcwYW1Zd1NEQnhSMnRzVmt4VVdFUnZjSFpuYzAxTUswbGFWMmhsYld3cmJFOVJZV05pWVVSaVEwdzBTbkZDZDFSeE9VaHhWbXByWVhWdlFWSjVkSFpETUhKVVNsQlZSVGgyV1c5alJVZDJhRTUxVW0xTlRFdFJZbmw0YVZkeGFFVlhiVEZHTDFoMk4yMWxOWGh0U1Vvd2MxSllZM05NYWxVeE1Ib3ZjRlpYTDNaV05taFhNSE0zYkZneFJHbElPV05vVTB4SGEybDRWRFZXSzJ0eWRqVjJXRWxJVjJsUmNtOXBhRll2VTJ0NWNEWXpXRFExVGxoWFNuSTBSRmxWWm5RM2FGWkRTbTFGVGs5Mk1VRXJMMHBFVEZKR01XcHZTRnBsTldaRGFHaFNWWEU0UW1WdVFsVkhhazVMUm5GWU5YcDFSMHhhWTJ0UGF6TmFZWEZZY0Vac1MwTldUMWRxVWk4NU5sQnNXbWx3WldkSFZrNTZiWFlyTVM4elZuaDBNRWw0Y0d3eVlVSnZWbUZ5UVhSTmFESmpNSHBQUjBRelJrcFJRVlYwUlc4eFoyWmphRFZGWjI1c1lYWjZORkJqZG5wMFRXTlVSR3hrY2k5cFoyWjZURWxGU0hrME1UVnJSWFoyZW1sdFRqQnBOMnRRUTFwV1NIbEdjSEpSTTFVcmN5ODVZakZJV0dWTGNVSkpSekZNTkdkc1MzVm5kVEI0Ykhjd1dEQnpZalZLYmt4T1UxaFFNRlk1VW01cVprVmtPR0pXV0ZCMlMwOXJXR0ZWUmpWbU16WTVSemxNVmpWclRtUjJMMVpEVGtOUVRtY3ZObVpyVlZoUlVIQXhSRmRRTWl0dEszTkNZbGxSTW5KSE9HYzNRa1pyV1hCaE5VUnlPV1ZuV0VzdmVsTnJVVTkyV1RkclJXZ3hlVWhxVm1oMVExcFNRazh4T1hGNlZGQlZUM2hXYkU5c1JqQlZaV3BJSzBkVlFYUlBjVFY0VGt0WGNIaEhLMDlHZEhWd1YxY3pORXA2UWpVMVYwNVhPVkV5Vm1KUlQyUk5SVFJtVkhCU09HVnVTRFZZYjJWRmJqaHJSamRCVUhBeVZGaHdhMWQyVFZOdVFYVjRWSE5ZVDFaaFJWVTJjbWRWTm5Kd2VFeFNlVzl0UTNWb2FGQjBiV3RJVWtOR1lVZFJSVmxrT0VvdlpVNUNORTExWXpsRk4xcE1kazVQYjBWVFlWaG1Tek5PUVRkSGRuVlpiVmxzVkVjemNXeHdjMW93WVZsVU56aFFhekJZTTNobVVFVnVTa2hTYTJWdEx6UkhPRFY2YVhkbWVreFBOalU1ZDB4dVJXWTBTa0ppYjBSVGFsRktjWGRFUm5CcGJuSldVR051U1RoemRWUmxVMUk0VTNKM1ZFcG1VVUZSTWxWbU5IcEhSbXNyYVRGRFdrNXRiRFl5V0RaQ1JYRjROME5wTjFoUU9YWTBlREp1YXpZMFdXMWhObTUyZURsU2VHcFZTR3RVWWpGWVJVdGhWSGgzUlRCb05sRmFhRko1UkRodmR5OWtNRXRpVkhwSFJHdDJhREJOY1hwcE5HUllhV3hrVTBwNUwxVnNLeXQ1UWpJNFpFRmpTREZUY25wcVpGcE5ZVkY1Ym1wWlpubFVVamhVZVZoUFNYUlpRamR1YlRsVVprdE1VWEE1Y2tsNFRqbFVUWGwyZEhoUGIwYzJTMEpYZWpSV2NsVmtlRXAwUW5BeGEzTTBUazFyZDFwS1RVMU9ja2hqWmtvMFFWQllRM1ppY0U1dFoydERkQzlKZEZoU09YRm5PR2x4WmtkS1VFazVRWGx6WVhaQ1lYRlpPVGgwTTJ4WWJrb3pXRW8yU0ZrMmNrcE9Ta0V6Ukd4MFdYWkpRa3RCWTI1eWJ6QlVhRE5MU2paWFZ5czJVVlJEVlhadmFHcERNRkpoYjJadVFXbDZjM2RUTDJaMlVsVjNWRllyYUcxclQyZEViR1o0VkVReVVIZFBOVU5hYUhOMmFubEtSRXRPWm0xQ1dFdE9jbEkwTldWTU9Hc3pZM0p2V0hsQkx6VmlTMHNyV1hodmVqSk5NamhpZVVOc1FtWjZkWGx1U3pSRk9HZ3ZNek5wWlRsU01tNTNVMFJRWTJsYWFXTkxORmwyY1U1UFpVNTRZekp2VFV4SFFqVmFWMnRGYW10eWFUSkJSbXhvWm5obFJVVm9XblpwUTFBeWFtUk1SMkpPYVcwemVtZEJZemRtY3pkRVJGTnFWazFSV2twcU5VczVVblJ5UlRJMlNFUm1WMDFEWTFoR2RGRlRWRFJvVDNsRFYwcENVelY2VFVkM2VrSldkMnRaYlRockwxRXZkbE5zYkRZMk1tUnZNRTFSYUhGU1NHZFBkREJDWVc5VGMxcHhRM0ZpWkRaTVIzQmxNazVoUkdOaGJURlFOa0V3WkhscFJGUk1kWE56ZVZSaGNsSlpPVFJDVVZWdVNuaHFUME5XUVhaS2VuZG9LelZtYVZsM1ltdFdjbGc1Um5SelpUQnlNM0ZZYVVoTmFXSjRTRTlJU1RRd2RGcENaa3B6YmxCaE5WbDZkbm96U0VkV1VFeGFOa0ZLYzJKT1FtVnNkbE5JWkhGMllVZFFUR1p2TVZSNlNGQTRVMHdyWlN0a1VHOWpaSEkzUWpoRWJUVmFWbkF5UVU5NU1HeEtOSEZaY1N0U1JrVllXa1ppYlZOYVVpdEdXa0ZGY3prek5VZ3JOVXh4TkRVMVJraDRaMlpJU0RNMU5HWkNRbE5pTlRoMGJIWlRSall5VFVGU2VXMWlibGhxTlcxd1ZFaHNXamRIYUZWeFZFdHhRV1pzWTNGalEyNXdaMHBrTUhObWFrRlBXbUZYZFd4bVZHNDVORFZVY1RaeVNXNDJTMUZVWWpob2FsZGpTVFJpVTFOVU1HMWhOSFlyVG5KemFHOUhLMUZKZDFaeFNUWmFTMUJNYURZNWFHWndkUzlZVkd0clp6aDJUbFZGTXpaeWRFWk1kVTVYVDFJcmRYaGtVbTlJU21oS1YydHViWEZoVkRCdU9UUnBkbTVoY25sWVZIQm9OV1ZOU1VjNWIwazVjMHRhVmt4M1ExaDNTbGRxU1VwWmNIRm5iRXBDYm05Wk1tcEdlVTByT0ZSWVFVSXhhMkpyWVdOTFVHaEthVzFGYm1GUllVTlFVVXhNVW1sNkt6WjRSMU5wYWxWQmRGbHllRmx5YnpsWVdtNDNRM3B0VEVSeGFsVXdWVU5FVVVWd1dUTlVUemx5V2sxTlRqQXhZekpNUldwSWMwNDBiMUZKTjI1emNUSlJhRUV4UkUxeVlYUlJXbFYxVUZWVlRHUldUMlZGYlVKVFIyODVVbmx6TkZNek5reGxRblpGZERoV0swNHhRM1VyTVZWbk9URkJkVWswVFZwaVJHUlRURWd2YVdObGMyNVljakZzVkVVNE1VTklZVms0Y0RGRWJqRkVVa2R6T1dwc01IcHpTbkJ4YldWRWVVOU5Wbk5UTUVkWlIyZEVjV1p5WVdSWk9FZEZXVmxYYVdkM0sxQm5TbU4xZVdWU2QyUjBhR3hIVkhSRFdrUnplRnBpS3pWaVNWRkNjSGN2VEZkUlFtZFNRWGxaZEVGM2QxZFZlazB6THpSdkswSm9Razl1ZWpGTGRIcGhkbGhVYWtJMlJrNUNRVzA0Vm1ZNFIyeDFiMWR2VGxocU9UTnlVMlpIVmpOeFMyVlpSVFJRVm1kdlEyVmFkV2hMYTNGRkx5OXFUVTkyUmxndlJVWm5hMVpvVld4NGNrTm5TMUJwZG1WeVoyTktaVFJPYWsxQ09IcEtlbnBSYUc1d2JrUmpVMWhrVVRZMGJUaHVhREZTYzJSaGJVbHBVbFYzTUVoNU9IWmpXRkE1Y0c5c1NEVkxTRlIzZDNCTVVGTnJlbWRVT0d0alRtaHhNVW9yVW05a1dHODFUVzE1VWpSVGNVUlVhWE0wWkhVeGVVTkdiMlF2UkVKYU9WQjJaMnAwWVRKaE5XUk9Rek5tTWpaVE0ybDRPSGs1TUM5S2VXMXJZWEl4TUZodlZIbEpOblpXWVZRNWNrbHNaRlZqWTFSME1qVnhRUzh6WjNkeVNrOXhSSFJMU2t0UFRtMDNaMUE0WkhCeEwyeHhMemRzTDI0NWFtUkVaamh1T0M4cllYUm1TRFJYYW1wVmNXSndObFJqTURabWRtTnJMMmM0V0c1a1ZqUXhiRTlqWmpGWmFrZzFVWHBCUVZocGJrNHdZbkZuVkM5elpFRTRkakZ0TWxabWQyZEhVVzlzU1RWSFYxVkxaMngzYlRJMWJuZHpNbWh6U2s1dlZrSlVUMDVSV1VwSlNXRkdkVFU1V2pkck5GQkZSME5HTld0SWNqUjZUa3RSTjJJcmFtSlRNMjh6Ykd0SGFWaDVjMFY0WmxaVmNHRkpjR1p4Y2pCcFNUWlFWalJyWmxWVVRUTnljVWx0WVhoWk9XdFBMMVZFVEUxdVUxcDFWVFpCV0ZGV2MwbDNSR1JHVERoUWRUWm9jakpIVkRkRVJFTnNUMk5WWTJobVVtOXFXRTFOVURCd1VWSm5WbkJLY2xaemJrNVZZV1Y1TUdkb2JYRjFWREFyVjFGNFIyMVFjVUpzYldaWlMwRkNValV4Wkc5d1dsUldWRzQ0UzBsRVoyMHlZbVk1VFdadmFDOVdRMDVST1hSQk56TjFUVloxZWtRMU0zWktXVFo0Vldadk5IZFRhR3R5Um1KelozaFVOVWwzUzBOallUWkhZMUkxVFc5NGJ6UjFTMk5uTWxsUWQxazJZa0Z2Wm1kWmQzUXhRa2RwTkVGaFluVmhUVXB3YVhBME5tNWpUM1pYUW1GUUwxRjFWSFZNZFM5TlEzcGxSMk55ZFVwUGRESTNlbHB1Tm1wTGVuWlROMUJrVEU0dk4xb3lSbXBGU0ZWV2IyUjZRM1p4TjJwTWNtUjFlVkpsWlVOS1NHNUNOV3RwTW01RlpuSnJWelJ6Y1hrNGNXRnRaMjlMY1hKSU9EWlZTaTlSZW1GYVoySkhjWGRvYTFsaGVuWTRTM2d2SzJoNGNERXdZemhqY0ZGTmNFbDVkWFpQWVdGVWRtbG1hMGRTYTI5MlVEZDJaRlZDYVV0Q1lrZzBlak4yVGtveWQzY3hkRWQ1ZVRkYVVraHhNM0JXTWxsWEsyZEpVa056T1M5bVJVTmpZemM0ZVVocFpGVjJibWRJY25OWGNXSjVkVFZMVDNSQlNIVkJTM1pqUkVSRmNYWk1hREpSYlhCVlJUVXpTR3gyZW5sc2VWaElUV2hzYW1KNldHUjBZazFpUWxKTVVWZGFOMkZWTTBobVpsSldOMjVvU1daVWNVZE9PVGh5TWtScVdITlNhRXREVDNaTlduQk9hamgyUWpFMFVWY3hRMVV4WVU5MFVWazNOMjlTZVVoUVNXeGtXVGRUT1c5RU5ITXdRamR4WVUxMU1VNTVVbGRHTkdKa2VuSnFkR056VkVoak1WaG9TRXB5VXl0d09VNUVaVmdyZFhCTVlXNU9SRXMxV1RNM2VHbHhURTB2U1V0TE9HTXlkRWM0V0V4SWNrcHhkMEk0U2xsQk0yMUpXR3g1VjA5VVprVkJPSEZ5V1hKR1prOUVhemxTWkdsclowUm5PREJrYVRKeVpGaG9UR2MyTVVaU1lUTkNWVzFrUjI5eFQzSmpVME5OYUVOSWRXVk5kRkZZVjA4emRISjNjakpHV2xVeFFtSnpTM1JtTWs1T1VVNTBZMU5TVDNGTFZTOVRjR2xDZUhKelIybzBSMWxpVERkVldUSkZhM1Z1THpoaFQwOXdja2wxYVRaWGNuSkxibXBTTm5SWFZXVXdSa2tyY3paRmIyMVBaRk5OV0dsR0szTlZiVVE0V1V4aFRpczNSMDVwTlZSQ016SnZOa3RPTkdoc1ZHUXpOV2xNTm1kWWVWZGlTbGxXTUcxdWEwVnZTa2RzZVVwWFMwd3ZSQ3RLZFhWTGN6Wk9LeTlZVjNZd1FtUmFWWFZZWkVodGJ6TnRPRXBTV0hsS1JVdE9WR2NyVEhFd2J6WlJMMGQyYld4UGJFZzBSbVZ4U0hsaFoyUlJXbTA1Vld4UlIyYzRUVVJDUTJsUWFEbFlTUzlyVDJGWVIwMUlabEJpUzFoWVlVVXhOblZsWTFRdmFXZzVNUzkyU25obFoyWllWV1ZNUm1SUFUxaDJlRkl2YWtoWmMyMUdZMVJKVVVaNVJFdEVVME00T1VNelRXVjZORmg0Ukdka05TdGtkWEE0YkRKV1p6QjRNMFZOTWpGNksyWnVRV0p6YjBVeEsweHVRVGRtVFc1bksyTktTREJhUjFsU2F6VkhZbXNyVEVsbmNYbG1aMnBvYVUwemNteDRSWGhLS3l0a2QwbFFRMGhaY25kUWVGQXliRmhST1UxU2RtVXpZa2RvWnpsNlZFTlZURWQ2UzJvMk0xa3dWRFpyUlZvcmFIazVkbGx5TVdaa2RFZG1VR3BUZFVnNWJUSk9LMUJoWld0d1psaHpiVXcyTlVwUFQwOHZjV0pESzJsRmN5dHplWE5FTHpkUU5GVlFaVXhqVnpoTFZVeElkMHgyZUdkR0wxWklhVk51VldsRGQwMU5MM05IZEhCQ2RHcDJUVmhhTjJ0S2RWVmhaV2s1VGtWUE1rTlNjVVJRUXpWdFZIQXlNVGRCVW1WUGFHSnVXbHAxUzJ3dlVGQlhkbUUzZDNoSmRqRlZWbFJzT0hkRVNtWjJkVU5ZVmxSSVl6SmlObmhuT1ROSVJrdDFSRWMzYzIwNWVuTnJZM0l2YjJOUE1XcEVlblF3T0dOUFlVZHNPVzlxUW5aSmVISXpTalZGY1hkblIweHZVR1F6U1RoSU5rOU9ibkpHYlVwQ04yaFpiakI0YTFFMmFIbHFZMEp2Y25oaGIzQlBjekZzVGt0WE5WcDVLMFpIVm1WaU0yODJTV1ExWTJJd05qWktPVEJPUjJSTmFXVnhUbUo0V0dSelFqZDNNelZ2WmpaUGRtZG9TR2RLVVdRclIzVTRkRXBrWVRBNE4zVnRWRmd5Y0ZWa05sbzVSazhyU0hvNE1tZFlLeTlZVjBjNVpYWjFiVzR6V0RZMlJXbzRSbUpxYUd4eWNFeDFZbkF6T1RjNE4wWnFWR1ZMYkhwaVNXWkhTSFZJU2xsV1YyOUVXbmxvTWpWNlVqbEpTRTU1YTFwSkwwdHdOalJVTWpSNVFrMXpRWFJCZUhnd05qQnpSblJ2TmtWV2MwaGxhMlZRUlVaTlExcE1lblozWWpFNVkxTkRTMGRGUlVObldVbDRWRmxNZDJoelJFa3ZWakZzUzBKRFpqQmhSRlI2VkdFdlVUWk1XVXhWZVZORE9VOUJNVWR6VGs1MmMyOTVkRWw1VUdaQ2RVUlRLMWxLWldGSmRIVnJhMmhYUjNsck1WVkRXbEYwYTFaUVFsSXpWbUZCVjI5WU1FcE5OalJxU214UFFtNDJkR1J4S3psM2RYQTRUWFYyTW5odFdUQTBlRGxqZEVKcE9WWlBRbTQzYlVaaEx5OUNSamRxZW1aRGFUazNRV1F4ZDNkT2NraHFjSEJTVlVSUk1qbHFXV0l6YnpZelJTOTZaM1I2ZVU4M2JIUjRaa05SWmtKU1RYcFZVbmxyZUZGTVNVNUNkWGMwVVVwd1dXSkNVVmxHVjNGbVdFMVpNbTF1Y0M5UldITjJaMk5RWjNjdk9EQm1iVlJTYTNrNFNtTmpjbkpXVTFaalIwSkRiazk1VUdKQ2VXWlJUMUF4UVdOelJtczBlV1I2V0VVMlpYaFJRM0UyWlM5eVVtZG5aMnRGVVhKRWFIQnpkRkl5TkN0YVlubHVOWGt2WW1RMWRXRjRUVE5WWVVkb2RDdE9ZVVJ5VTJKNGF6SXZVbmd6YjFCQ05VWTRjazkxVDNwbU0wWmtaVWxJYVZwS1RsZE5aV2N5YkdkU2RYZzVkRzlFVEUxSFIzTllkMHh2VWtWUk1WTjNRMHhhUlZGWFFrNVZWMWhHV21jelZFSnhVRzVCY0ZSWllYWTBPWE16U0RKalUyNWhSVWhIYTJSbVZHWTNRVGxYVlRNNU0yVjJSVFV5YUdwbVJUTXZlVzQyUldaa1NFMVljSGN2VjFGRE1sRlVibEJWU0ZwT1EyUTFZbFpLZVdJMGVEZElRWGQ0ZWsxdlZEZDJObnBtU3pncldHNXpUakpCWlhOQ2FrNU5hbTU0YVVjdllsbDZVMGt6T0ZCTVEwMW1TSFZQYURRMmVsVllOMkZzT1VkUmJTOXNiRTA0V1dJeWN5OTVOa1lyU1ZacVZXVmtSWFJDWmtVdllsUTJUWEp1YkVkT1RHUlBiSFJpZFVZME0wUXhkMGgyVDAxR1dIRkJNalJxVkRsTlNEWkNjMnRJVnpJM1dFUmlaRGRDYlRCVGVIaERZU3RZYWpZelEydEtVbmgxYVdWUldFWmxXR3gzWm5ad1RVNTZRbU5VWkdOS1VFVmxka1J1VUVScFl6Sktka1I2VGtaTksyeEVWa3N2ZUZwNmVWRk5Tbkp1TVhkTFFsQkdTSFU1VTNGYVpISkVTVnBNTm05MWNVOTJUVGx3VWxoTVJURnlieTl0ZUhsS0wyVlBTemt2ZEV0NGRYTkxlQ3QxVXpoMlRrZHhlRzgzYzJock5ISkhPREk1VFZSUWVtMVdaRlpISzI1d1EwcHdlbUZZYTJod1Uzb3lUMEV4ZVZwcFdsVlZVbVkzTkhaTE9URnhOV3BJUVc1a1NrVkRXWE5aUkUxaWFYRmpZVVJYZDB4TFdqVm9OMVpSVjBSaWNTOXpXR1ZZVnpnemJHWmhlVk5aTjJKRFNHOXdNQzlQUzB0cWNFZFNOVlpyYlV4ME5sSkdPVTVvZERKWE5tWk1Zek4xWTBwbGQwTlFNREJzUWpGTE1TdGpObU5uY21acGVsbFhUbWhoT0RreWRpdG1ORVU1VEdFNWNITTVNbE0xYldrNGRsWTBOa2s0T1VWT2NrWnNZa1JZTW5jeU5pdGFiV0pUWVZwVldVaHNSM1F6WVM4elNtbFRTRkEwZDA0NVFrRTVVM3A2ZUVsUU1Va3ZUMlp3Y0RGa1ZuUk1ZVzB2ZEd4eE1HWlVSbEZpY2prMFRVVlBNVll5UVVoM1ZEUnJNMUJuTm5sWU5ERkxkVWd6YWpSU09XUjJibEpDTXpZMFkwZEVORzlzTURBcmJXNXBMeTg0T1hoNk5GZ3plRUpRZUdGSU5FOXJWazVMU2tkbldEWmphRXBYZDBvd2ExZHBXa0ZwT0cxNlUxcGhTalpyY0haRVJFaHZkakZTY1VWWWJITTJXVGt6VEdJelpVSmthV3RYUzA1T1VWTm9hbVJaY1VWSGN6UTFjRmxYYkRCcGRXb3hNa1JQUVdKcVJXRlVaWFpUY1Uxc1ZXRXJjbnBUVVhGd2FXMW5Uazl2VGxjNU5ESTFWMkZyVDI5eFkzTnNWRTVhYzFSQlZIQk9TV0pwU0RWTGJGWnRWbHBtV0hGYVFqUkZTQzlGVWtWcE1rdEdhRlZYSzBOSkswOUNTV1JwY0ZKd2FDdFdhVm80VW5GNlJra3hUSGs0Y1ZkQ04xUnFUM04yWWtOV2VrRTRUQzloVmpGV01XSnliV2x3WVhOak9EUmFZVEl3WkhreWIzSnlaWGgzZUZGa2NUSTVkSEpJTmtwWWJtaG5ZbW80VmxkNGFreGpOamR6WWtNM1pEQnBlSFZNYzNKTU4wRjBhemRoZEhaTGVURjBMMmhtTlhCaVZHY3lkbXd2Y1RoVU1tODRRMFpuYWs1c2EzUkJhbFZoT1VSeVRrVjRaM1pTYjB0NFlVMURLM2RoYUVaUVZYUnRXVkpUTVhCSksxRnBRbXBrYlVadFZVRnpPVkJyV0dwV1dEQTRaMlU0V1VSNU1rTmlNall5ZVZKd01IcGpaWFl6YmxWamRrMWhVR2hLWkRjMVYwVkhOblZ6T1dSalYySjVaRWhyUkc1bkx6aDFNbTB3WVZsa09GQTNNVE5zVnpoeWJrOUJjblZZYjJ3MWQwWTNZVEJxTWxGd1ZuSlFUbnBFZG1WdGJWTjRSM1pXV25KQ2RFbEpNVnBNUkVSV1UyNVRlWGRZUzB0WE1YUk5MMnhKWjFFNE5ISktZMWRhUkZaaFZTczVja3gzYmpSRmQxVTBRekowWTBSeWFFUmhTV1pwV0hKak1FWnpSM1pVUkdGYU9IVlVXVGxrYzBjeWJIUklZamx4S3pacU5HNHdjVVJzVmtwa1pEVjViR0VyYUhCdVpVbDJZVkZPTDJRclNWaDJSR1Z1UWxkNE5XMHJMMWx6Vms5VVdUQk1aR1pUZHpsRGMySmtOM2hCZW5GallXVjFOVVIzVlVGMGFrZHpjV2R5VlcxNVNWRm9hMGhUT0dWTFNIUkpXbXRpWVRsTldrMDNUR0ZDVUdsV01raENNM1oyVUhKeGVtMTFXVGxhY0hJeWNTczVkSEF3VVZwVk1FVjZlbFIzY1RKNFdXOVNVazF0Y2xJMVkxWnJhRTVWTWsxS2JWUk9VM1V5WkU4d0wzTTNiV3ROYkhOaGJIbFhTazVoWWtOd1FqRlJNVzVoU1dKNFpYWkdhamQyYURaVmJrSjRhWGcxZGxGUkszTTFjRU5MZGpKa1FsSTVXalpOVDFsVU5YRlRPVlZoY1UxNGMxbGtRbXBoVEZWRFEwbEpPVTVVUTJJNVQyMW5iSEZsTmxsclVIcGpja0Y2U1RSMlNFeFdWMEY0V21oak56VjNOR1EzUTBScFUwZEpNRFZXYWpaNE16TTNlR2xtYURsbVEzaFBPSE5RTnprNUszaE1TekpzZFRScVlVODNiWGRTTURkQ2FtTlFNRmxJYWxac1ZsQk9aekIwY2pRMWVGQTNWbTExVWlzeVozSlNWVXA1YzBvd01tY3hWRkJ6VG05eFZXRk1WREphZDA5b2IyNVpORk5CYVZKU1MydDZjWEZUUkZWRGJqTXliMDF6VUM5NldVUktOR1JVVlVOUU1YSmthRE5DTVVsbGJWUkdXVlJ0YzJWSFEzVjBaRUUwVDFRdk1rbFljMlYyUW14YWN5OWxSVUZ5VFZKamJFNTFZelJMYzJ4MU5EVm5VaXRYTURGSmFtWndLM1F5U0ZsR2RTdFZVMFJqVVU1SGExWmpOVXBCWnpGT2NFSmpibWRYVTFjclFtNVlTRkowYkc1VGVrVlpXbkl4YWxGT01EWkVkMjFuZUUxS1lqRTRWbWhKVHpWbFdFTlBRMWxJVVVob05XYzNVWEpNTUcxSFFtWnJka2hvVG1sVWRteFFRMFZoYW5WdVVWYzVUVXBEVW1kS1JUSmFkR2R2TkU1V2VUSnZOMkZ3WkZaRWFUSnlObWs1ZEZOVVVXMXRhMjlIUzJnck0zZEdXbUZYYlN0b1YxTXZiMUJ2Yld0aFZGUTJVbE5SWWpNNGMyRlRObmhrYm1OMmNuTjZTMGdyZURBMVprNHhRV0pIVjNKYWJHRjRVamxIZG05M2IyeFFRWEZzYjNCVGMyaERPVU14T0UxUlZXOUVabWQ0V1V4SlVtRjJlR1ZQZDFGV1NsUkxSRlZ6VmxoMVdWWkxiWFY0WmxjMWRXVm9SQzk0TXpWdE5qTkxPQzlDZG1JeU4zRkhPR1pYTkhCWFFXNTVSaXM1WkdnMlNtVkhORWRsVjFsRFZVZE5kMmxKV1hoWlRVeHZTRTlaVHpKRE1HWlNValJUUVdkclJESkhOalJEV1RWQk5rUlNkbVpOUnpacVVWSkJlVkI2YVRBM05FdFZkR1ZqZHpBNFdUbFFMMmhNZDBoTllTdGxhRVJHTTJ4clFUVktPR0puYVRCS2FuQlJRM0p1TkN0a1RtTlpUVU5SV1M5WGQxaGxXVzFNTUc5MVQzcDRhVFEyUVZkQ2VGbEdVekJCTm5sNlFWcGhUMUpDUmxOT2FUaFFOVlJOZG1WdllrRkhRMFpCUkdwNlZUSlNNR0Z2ZDJSb1ExWkZPV2d2WW5KdVZITklUREZ3TjBsVmRYVlhPR05vZWxsWWJGSXhaMlZFWTBwcGJFRk5ha0ZCY0RCMlIwUXdTV2hVTlcxQ1luZzROR3RNUW5kRlV6Qk1UblZJV1dab1dXVXdlbkEzVUZoVFVtOXdVWGhvUWt4TmQxcG9RVzlEV0dOdVlqQXpjbVZMVVdwQlkxVm9hV05SVVdOWFoxTkpVRWs1U201MFRYaDZkbGRxU25adllYbHpjMklyYVdKWGMxQmhTbkp4U2xseVMyaHlaM04yVTBkTmRWbGhVbU52YW5GR2NVVlZUWEExTm14Qk1rcFJWMEZHVG1od1dtRnFRV2w2ZDJFNVFuRktZMU5oWVZsV1ZHcHFhVEk0UzNoRlUxSlhPR05CVVhBdmFtcG9Oelo1Y3pkTmVGQTFTSFI1WTNveVpUTkVkek41T0doUU5VWlhNSFF4Wm10S1prdGlPSHBOZVdOdVRYcE5ka3RTV0hvME1rNXVUVXNyZVZCNGVuVndkRUZuVW05TFRFRmtNMnhOUlVOT2JrRldZbWhCYUhkcWFFOXpNRkk0YW5SRFMySXlkRTl3Ums5bVpYaGpZMGxoVnl0RVNua3diREZhZEU5VGQzSk9iRXhPYldFeGJXc3haWHA2U0hsc01WSnVWVlJaZUdONVV6YzJaRVJ1YWxSNlQyZFNhVVpYY0RObkwySm9OSGh2ZUhwYWFWVjRRVmhJWkcxTUwwcERiM2hNV1hkNVoxVkJNRkpsYjI1QkswZDZka2QzVkhWRlJXRnVRMHRvU0dKRWNXRkVWbkJKYjBwRlRGcHVaVWRSYW5CYVYwUlhjVU5GZDBKbVVsUkZXREkxU25SM1VYSmtURm93VkRJM1VXMDFiVmQyY1hkcGEzRm9kWEl6TjJJM09XUnlabGMyYm5vclFtRXlWa2xTVEV0clJHMXJORVp0YkdGcVdETkpUakJzVVUxT1NrWXdRMjlVTUVWcmJWbEhSVTVvV1doelJXWm9aRzluVEZNeWMwUnpiRFJvY25NeGJrSXJUSEFyVEVsNk5tTTNSelZPZEdsYWVqTkliWFZyYjB4ck1ucFliR3hZTVhWWU0yWkZiQ3RZZUZrcmVuQllaRUZNWmpnME5rUTJSVGxLTW1sTk4zRkpUbmNyU1hacU5sWlFhVUpXWTNaM2JXVnRWbGhEWVdGcVptbG5OV1IwZURKNVdHaE5PR2tyZFRGcmQxSm9OVzVVYUdWcU5WUlliMHBsTVVRd2JtZGxORkpDUjNwcmRra3hMMDF1VHpKalFtMHdPR0o0YTA1dVExQXdSalJuYkhCRmVqUktja3AxYzBwb05UUjVhekpOUkRFMGJsaFpkME01YTI0d1FVeFNlR3ByVFM5RlRIVnRVRzFGV25wWWNHWlFNVmRETURaRVEzTnNNRVpRUWpSb1RYbG1VVVpRVW5GQmJ6aHdiWGhOU1ZCdFVWcHpTbHBvWkRGbFkyb3ZRbE5WYVRKMGQwRkJTR2RDV1RKQ2ExbEJSR2sxYkhacFRXSlllQzlFV21aSFdtbGFXSHBCUVhkYVZXZExNMWwzYm1Nek1qWXJMMnBtTWpCelVqRnFWV2RHZURKQ2FXRlJTMEZDYlVSUmVtbEJRVUZCWlVGR2FsbEhVbWRaVERjeU4zZHJha1k0ZFVaMk5DOHZjMkpGWTBGWmNXZEJUMWszUVV4d1NrTkRhRFJCWXpOWFFUUjRhMU5SUTBnNFltVXlZbVU0VHpGcVdVY3paazV0WWxKMmFrOWtkVEppWkhNeWIyeE5NSGRrYlRJM1puTTJLMVJ4Y0haSFZFOVRka3hNZGpGNWRuRjBiWGRRU1c4d1FVMXplRWRsVmxsbk9UQjNSeTlQZUVOWFZsbHBkVE5KTVRoMmJXUmlhWEJaV0cxRWJIVlJVMlpKZWt3d1kwWTJVemRUYUZCNVNXWjNNVVpaWjBKblptMWFLMmN5UkROWVdWa3hlbkEzYW5aSmJYaEZSM0ZXWjNaSVVHeHVVRGRKZDFOaGEyNU1Ua3BLVjFwR01FSTFTMHBZU1U1YWNuUXZURzlhYUZkMFJESk9ibUpuVGxwVE56Y3ZNVmxwZWt0V1dVSnJUMUo1YlRJMGVHaGpZVzQ0TlhoMGNHVmlSbk5MTkRkQlluRjFlR0puUWpaMVRuZ3JOelF5ZW5ZdlIzcElOVk5wVms5T1RsTnlTekZJUjFwWmJFaEpUblF5VGpKNWVubGlXbTV1VVRCaGJFTktjbUpxVDNNeWVFRmxOMWhEVlRkblIwVmliMmg0YUdoVmJ6ZDJjamRIUnpWc0wzVjBkMDFsVDFCU1IweE9VMmg0T1haaGRWZFpjMjB6ZGpGU1pVUTVOSHA0VW1kUWJWcElNRlU1ZG10dWJUUktOazU0V0ZoU05HaDFaalY0Ukd4SVNWbE1ka3hTVDI5UlMxY3lTVUpXV1VkcVowY3JLMEYzYmtsUlJEaFVUV1YzUWxCSmR6WlBUMGRaZWxsbVpGbHRPR3RDZWtwVFREQmpjU3Q1Wlc1TGNtNDJWazlIU1VKcFlrMUxlVnBIVEhaU1REQkZZVlJOTWpVMWRXeHFkSFZQWkhGb1FrOW1Xa1ZTV2tOV05XcEliVUZsV1NzelNFMUdjM0FyU0VoQ2VVTnFaRmt6YjJONk4xZDFZbUZ0T0hsNmQzSnhOVkJhUjJKSE5XSXZMMHh5TTNSQ01IQkdUbVZVVW1WblZ6Tk5NRFJqTkc4MVMzWjFPV0ZQTjNWSFV6UlBNbk55ZDAxSFlXcDViSGxKYkZCWGJESlFOSEp0V0dJdldsQnpkemxCYUhsUlJrUjJOMm8zZW1jeGVVc3pXVkE0UTBSbGFrZHJNM2RCVkRkRWFXSjZNMVE0WkhCc1NTOHpSR3h3YVVRelVrUmtMMlpLY2pCa2RWcHFORm8wVVdFNGFrcDBkMGhqTjBkdVdEWnROM0pNT1hScU9IYzNhRVJyV1dGNGNHNW1ZMGw1V0hSdFJqbDFiVUkwYjNkR1lWQlNSRFpQWTAwNFNqVnpPSGw0TldsRldXRXlXVEZSVlhWbU9EUndabVZpTmpkalVXWnZZVGxEVEdaUWVETnVPREUxYVdKclNGbHNMMVZoYlRoamFucE9kMGRxV2xsUU9Fb3hWRGRrT0V4TmNIZE9ZWEI0YUZnd04xbFVZMk5xY2pKUmVHZzNNa2hhYVZsMU1qaDNMek5xU0doUWRsZFBkRFF4TTFRNVkyMTZTRUlyYm5OcVFqVlBPVGc1VjBzd1JYVlVUbVJaZUZKYWFVSlRiM3BWUTAxVFFtNXNjbWR1V0RaRE9GbEdTbUZKUjFwSFMySXJNMGhGVEdOckwyTnFXVWRaY1ZSdFdXbG9VRkZuVUdaVlMyVlRjM2h1VlU1dGJFSjFiSGxyU0VOMlVVbzFhVWhIWWtSTk1FRTVNM2RDZFVwbVZWbHhVM2hNZVcxVFEzUlBOa2swZFdsUU9VOXVVRTF0TTBWdU5WQlFaVkF2TkZRd2NpdFJZM2w2VUU1UFZVVlhiWEZYV1VkdlozaEVXRTE0UlZKUE9HNHpZUzlTYkRFclJGTTNRMmxsYVVjdmNIbzVXVGxTYkNzemJuUmxNWFZtYUhaSWIycE1OVUowYzNsNVptbDRObTlMV0ZOcWN6TlNWa1l5UWxRelFWRmFhblZ1U0hkaGFHOHlTMDEzUW1kamVXMHZXRGd5VWxobFZ5czRXamhCZWt4elNYa3lNRXhLT1RnNWR6Y3pRMDF0VW5saVVFNDRia2ROVkdWeWQwdGplV01yY0U5a04zbGxUM1JrVlZsQldsTktiWEp0VUhSV2FIWTVVRmc0U2tFMk5qTkVkWEE1VGpaeFVteDNVR3hMT1V3dmVUWXZNVXBxZGpsbWFTOUxReXN6YWtaMGRIVnphM2RxU0RJME5tSTJiVzB2T1ZVNE9GRTFVVzkyTldKc01ta3dlRWhwTUdNNE1VdHRWSEkyWTNKWFkxUkZXbGxxUkRkdFNXeEpjMk4wVFZSdlNVdGthR1F2ZERJd2JHbE5kMFpxTVdSbU1HTkdWM1YwWlRneFIycG5ZV2xIZUdKblVrODRiR1IyTDNKelFVMUVNMGdyVVdOM2RsRkNNM00yY21sa2JXOXFVQzlqSzJKblRFWlNSakJaSzNacmVETlZSbU4yVWtNNFRuZEhRVFpQYjNGcVIwOW1kV2hCTW5RNEszZHpZV2xKZG01QlNHZENTazFGUkc5UFRrbEJRVVJSTm5SbE1rMXVWV0pqZWtweU1qZGFkREkzV25ReU4ySk9PRGx4TW1Ka05UZHBkaXRXVmtkNFdGQkdRVU5LWVd4RmVXOU1TM056Y1ZKNWFXWkxZbmx4YW1GeVdUWnhVbUpXVW5wV1FrUmhOWEJ5UW0xdk1tRTJOV3ROVm0xcVpGbFhNV1kyY21aaFVYbzJNMmhrWWpreGVUTlhibVJCTnpGYWFpdDJOelo0Wm5FM2VHdExSMjV2WVZSb2NrUjRkVXhIYmxOaE9YRmlRbkJ4UjIweU5scDZjRzFpYld0S1lTdHNjU3RYZDFaWEwwNWlWekZ3YmxkcE9WcDBVR0psUm5Sa01qQnFZbU4wYzA1MU9XeGxNV28zVldaelZWSmtURkl6VkVoVWMyUTVlSHA0Y0RKc2JtVXlaRGcxTUVodVpHVmpNekY0U2xZeVJsaFJPV05XWkRCR00yWXZZM1JFS3k5d04yNXVibmhpTTA1MlkzVTVOVGQ1Wm1aT1ZqbGpNekF6TDBGWU9XMTNUalJ2U0dSbldqRkJVbFJCWm5KQ05tTkhPWGRoWm1oSVMwZExiMlp0YUNzMlJUTnZWWEpvYlN0R2JqSkZTM3BKYTBKcVRWRlJWbWhCY21rNVdFVlhiVkJ1YzBaMldVMHJkMVF3UVVsdVFVbEJSVU5DVVVWYVZVWk9NRUpTTUVKSU0wSlRSRUZXVEVGU2NuZGhUMGxIUW10bGRWSlBkRWd4TUdNdlZIWkhlR3BpUjFsaWVHaDJTRGs0WWpCTFZuRktiVmx0VUdjemJWVjRWMVIwTlVwNFZrNVdWVEF2VTBwa1QzSXdMMk41SzJ0NlNsUlBMMDB5YzNkdU0wbDNSRzVOWmpORk5HbHZVMHhSYkU1b1NYWjVRME5hYm5oNFRISnBWak5yYTJaS1dqRlNNWEZwWXpGck1YQkxZbUZUWkdSSVlUWk9hakprZVdNMlZWcEhiM3BpV200cmVrVlNiVXh5VDJVeVl6TTRlV1I0WjFoeVJXRXhjemRIVjJObk1sbzRaWGt3T1c1ME4wRlFUM2xXV0c1R2JrdHlkV0V6WTBKVU5IWllOVk4yZW1wbWJYVXZTVVFyVlhSRFltRkhkREJHVFZsTGEzZFZSbWQyY21oWlVFTnVPRWxPTkZsdWQxUlVVMHRaV2tWV2ExaG9XVkJEWm1WRmREbEpRM05yY0VGaGJYUmtSVlkyU200eVExcDFhVWhLUlZOM1QwdDNUVFk0VUZkelF6aGpSRGd2U1hWS2VGUk1hWEJZYkhoMlRGaGxWMEk0Y0RoSmIzRkxiMHhMY1ZCWGNWQjFZVVJDWVdsWVlXbzBLMmRUZFc5a1pTOVhRVWxJY1VSWlUwRkpRV2RRWW5OMU9YRXlNMk0xZVZscWMzWjFlbEI0VDNGb2RESTNXblF5TjJGV1ZqbDFNbVJtT0RNdlozRnhaemhpUVVSclNrRkJTekZDV0hwQlUxUkJWVXgzVm5GM1JYaDNSbFk0UmtRNFNtRnZWRmhSYldob1NWUnBZMWhGWlhWSloyTmFZVFJUTjNkcmRuQktMMnRwV0VweGJWSkVNR3R2UjNsUlZGcHJkWGhMUkdsamJsVjRVakZyWW5CTWRtRlVkRGxHWWpaSlNESlhkbXMyTDFwRGIzbE1XbTVsZWtoQ2JVcHlUMVV5WXpSaldtazBlamsxYlZBM1N6bHphVW96VUdKdFZETnphbTR5U25aellUVnZTRFZaVjJ4WlJucE1VVU41VDNkTFpYZEpLemhMVW1ORVdtTkVjeTlFTmk5QksyWkxOSEp5UzA0d1lXUXhSVE5XUmpsbWJqRklMMWRXUkdGVlVFTnZRbTF0UjI5ellubzFjMVZqTTI1NlVsVjJWekowVFRZNFppdHVZbFF2WVdwTVluaDBjMUF5ZDNaaFJYWmlaamx5Y1U5dFVUTlFNR1FyVVdOa05UQnNibGR1Ym1GdFprOVNZbTAyZFhoaE4weHljQzlrTVU1MWVsUXpWM1prZGprelRsQlpNRGxYZWpCdVVHSmhMMkV5T1hNM01tNTJWR3c1Wm13NUwxZ3dOUzg1T1N0dk55c3paamRtTDFrMlFpdEpRblZaU0dKbllVeENjSEZJZW05alQzTTRWalUyY0hscVZHdDZSaXRSUlhKcWJUTnRUblpRVUdWWWVqaDNVblkxZWtkbU5XcDJlVUV2YlVvdlJVb3JTVE1yVVZBNEwyWTFPU3RxTXpGR1VsWkNWVko1U1RSM1UzRlBUMkZEUTJGcFFtRnBhbVZuWjA5dkwzVnZMMlkwWkRGM1ZWWTRWVVYwYlU5Tk1EZG5ha2h2WjI0MGIxWTBTWG8yU1hvMFpVUTBXVE5vT1hoRlkyMVNkRFZJUnpCYVdGSm9PVWRwYzFwTk9HWnRlSEUzU0ZsWWVHeDNjRFpaYlhKcFkweEtkVEJLZG5OdFZubGFVRU16YTBWMk9VSlhiVU12WTBaRU5reGtZMWQxTkcxU2VHOHphR1JMYVRGYWNGcGlVMU4xYlRoa1JpODJTMmhsVlRZNGRFZEhZM1pPTlZvM2VXRkliVzFtUm5wUGVXTXJWa2cxVmk5R1lpdDVWWFJ0ZERWT1VtWldZV2cyTVdGNllWaHdNbkZ5YkZsUWNXOHJNWFpHY0dwNllYbEdkRWxYY0RaeGJWUTJabnB3WWtod2RrcHJLMjFpVFdGa2JWcG9XbTV5YldWaVptbGtTVWhuUVhOb2MwbEJRVUpoVnpSUVlUVnhRekppV25WRVdTOVNMMkpFZFRkeFZ6TmlkRzB4WkdKa2RtMWxOV3cyTlhGeVRVeExVVlV3WnpCb2ExRllTVXBVVVZneVoySnNNRlF6YjFnMmQxQk9aeTgzYVVKbVJIZ3JSbFE0UTNSRlRuRkpSVEJaT0VscFUxQkZNekJUZWxKSFdrTlVObmhLV0VWb09GUndXa3hrYTNWbFNXNVBVUzlWYVdGdVJVbGxTV3c1VXl0aFoyRldReXRMY0VKYVVsWTJhWFprUVRZMlJuZ3pVMkVyYUhvNVNHVnRRMnBQUTIxalVtdHpZVmhaUm5WM1dVWnlRemN5VG5aellqWTBUMDQwVTJKM1lUTnFZblpLTlN0SWNqaEJUamRzWkM5SVVHaFNURU5KUjBkTFkwVmlUVWxVV1ZGUE5HMDRSMGwwVEhoRlVHbG1aa2R5VmtWbllVbE5XRk5VWW0xVlVFVmlaVzl3VWxGU2FXcFViRVZRUzFrM1Yxa3lhMHgwY0RaaGNYTnFjRUpZWVZsbFZVY3JjbEEzVmt0WGFXTjBWbHAxYXpka1NHVTJkekV3VjJjdk1VSm1iMEl2WVRWU2VtaG9iU3ROV1dFME5VSjRNeTlvY214cVRtSnRXVkJOYUVGdVRVUmxXVlk0TmpKV2VqWndhWEJXZFhoMFkwYzJXa3d5TUdNNWFFNDNSMFV5WWpJcmVWaDZjekZ1U0VaUE5rOTRkemR5Y0RVelIxcDFjV3AyUWpObFZtVmtOemsyVm1KM0swaDJRazlsUkM4NVpYWTBVVmd2VjI0clMzWTRRVE0yVnk5Nk1HOUZNMUZLZVVGQlJXTTBTMkpaV1cxM1VUUnBTSE00U1RFMFpUSnZWVTVSY1hkeFRsb3dXVzV2VFRablIwSm5SV054UTBGSE9EaEJObU5CYnpob1lteG5SbVJuU25CelNWRnliMDlJV1VKYU9FTm1MMGQ0WlV3dlJHTkZla0ZHUWxKQlFVUkJZa012V21Ka2JIVjZZbHAwTWpkaFpTOWhNWE15TjFwME1qTmFNM2hWUVZaVlFUa3dRWE5RUVV4TFJFRkRja0ZNYmtGSU0zZENaVmxDV21GQmRGZEJURTlCUkU5blFYRjFaMWxtWjB4bVowcGFWVUpHVlVSWVZVSlFWa05yZUVKRVN6bEJLMlJCTWpsM1lXeDNTR3gzVHpFNFRtUTRRV2s0UVZCME5FVjZOa1J1TlVaVmNFRkRjRkZ3Y1ZKQlYxRlhZMk5yTW1OdlJ6aHZVbXh2VFZaeFRIUnhSMFEyUVhoeE5rUndObXBPTm1wUU1XZDFWbTgzVmxrNU0xbEdRMkpaUjI1aFMxQlhTeTlsUWpWbGFWUm1hbGw2YW1seEwyZEdMMnMxYTBWdFZrVkpPVVpJVEVKRWNuaERWMXBVYUdGVVpGZFJTRTlWTkhWcmNqUTRTbkV2U2tZdlMwaDVjVWxMY1VaTGNXeHRjV3QxY1d0NFlXOUllUzh4SzJwbWRXdExkWEF4YldWd2JtVndheTl2Unk5eFJpOXRWM2x0UVVwdGFVWnNhRzVzYWtaeVJqZFhTRTEwV1RVMmVEY3hhRGczYURrelRIUjFNSFJVYW5GdWJsUlFUMWRsU1RoalFuVTBOREY2YVhKdVRWQjFRU3M0V0VZMFJFd3ZXWFVyWlc0NFpHWTJkbTlGTUhkS2VtZFJXbWQyWW1oVlpXbGtSa2MxY1VWck1FdHFURkp5ZFdoV1dFTkZaVVppVURSVWNFbHVjVnBMVFZOQ1dXeGhOVWw2TDNkRVJuVnJXRzVCUVVGQlFWRkJRVUU1ZDBKM1owRlJRVVZuUVVKUlFVTkJRMmRCVDFGRFRFRkJRVUZ0VVRCWFFVRk5RVUZZWjBKTVRWbHNVV2RSUWtGSllsSmlPR1J1Vm5aQ01WUlhha1F6WkROc1EwWkVkMUpEV25oRFJIcFRkVUZqU0dkSlZHSkxXRVFyYkhnMVVVUkNNRkUwYkRoSU5rTkhhV1JQWjBkTWNVODJVMWxGV2pOaFMwZEVaREJ0ZHpjM2RWVk5NbEkzYkV4SWNHVTBValZyWWpONVprOXJRakpaYUdoQ05tMTRhWEp2UldWS1YybDROSFJRTjBkdE9VSm9jakZsT1RaR1UzTXhUVFZwUlV4Q0wxbHlWRzVZVVRaVWFqVmljRUpNVGpabmJTOVVSazh6VTB4b2RtbGxZblJOVjFBNVkyUTJkVXhZZFhOMFF5OUdVRE5wUTJadFpFb3JaWGhMYjJWUFNESktZM294VFZFck5VOXFPVU5WT1M5U2IzRlRkbVp2YzJVME5uUXZWM0UzWjFrMlVHcHRkbUp4TWxoT1pIUTJUSFV2UVhWdFdrWlZNVTVVTVRWUFRESjBUazk1VlRONk5WRkpWMk41YkVOQlYyczNTMDh2VkZBeVprVkVRM1J6WTJGVWJUVTFOV3RzYlVGcVVURm5aeTlQVTJodmJtUjFhM1ozZHl0WlJYSnBOSFZtZDJJeFFrSXZVbmRxZFZSTGJtZG1iV3BPTkRkcU0yOXRVV2xOUlZodFJEbDFlSFZuZW5sWlIwOUhSMEZ1TTBVNVpXZE9XRFUxWkZoR2Vqa3JkRmh5TmpZNUszWmtLMWN6WkU5NWRtSm5RMXBtUlhJMVQyZHZaMDU1T1ZkT056bFNhSE4xWjI5SVJYaHRTbllyUjNWblpHOXVOVVptYjA1M2FITkxTMlUwSzJZcmRGTjRlVFp6UlRSVlMxaHdiVGc0YzBrMGFqbFFRMWxCUVdGTlJVTnJhMUoxUlV4a1duUk9aME4wTmxveVpuZEpWVFJQUlZseUwweDZUR0pIZWs1Q1J6aHdaRk0wZWpsSGJXZEZTMnh6Um1sRVdtNUpWMGN3WVZSa09HZEhhM001V0hFd1J5OXhSVTVKTUZsSGMyRm9SRVYxY2twNlFrY3dXVlZYTkdaWlMyMUVNR0ZQVTI5cFZrSnVSa2hFTXpWMmNFZ3hNaTkyY2pndloyTjZXa2czVGxsMWJrSndUMWM0Y2pCd1RUWnJhSGRDYlRONk9XTjRia1ZwV1VsaGVEbHhORUpUTnpGNE5GRjRLMGw2TjFkdWJYSnFiRkZPWjAxb1lXbFhkMlY2ZW1wRFYwSm5SRGR0Y1hwRVEwSmliRU5NVkVWSGJEQjRkV2xoZVVkU0sySjBjekl2UjJkeFNubFZUMk5aYzBwbE4zWlJWVmx0UzFSVlFVZFlaMFpQVHpOaVEwNUVlSGN3TVZCa2FtTkpNVXBWYW10a0sydEhWMEp2T1dZNWJIUktUVWRxYTA1aFlVVkVTVzVYYlVsSGQzTlBUM2x4T0hoUFRXZzFZMU5OWjBSWk9YRmFiM1phZUZGRE5EQm1jbEZ2ZUdKYU1VWnpSWGR0TUc1UFlsRjNOM1pTVVdocmMwdFdaV2xzZUVrd1ptOXdUVmxyT1dwaWFtTnlXSHBNYXpONVpYZE1PRTF0UTFSc1NuVmxURWhMVVcweFNVRjBSMWw2WkU1UVdqWnFUbHBOTHpBeFFYVTNaM1ZaYUZGemQyNURaMlpqTjNrNVlrWnNUVWRzYUROMWRVVmpkVTFOVVhGeGN6bDNSelpxTlZOdE4yRkhRbFJ2UjFVNFJtZzBZMWhGUms1YUszbHRXVVowV1ZaRll5OVhjWGMzVFhWd1pVWllOU3RtWWpkbVlVMHdaVmx2ZW5wTVJITm9hbnB4Y0ZkTGJHaGhTbk4yY1dRM09FTXhZWHBDUlZoTE1XMVdWa1pHVjJKYWJYUldjSEJFY1ZGVU5FWk9Ra295YWpnM2NtRkdUVlpvYTBKbUwzQXZWRmhqVTJOeU1XTkVSbVozV1U1dldFbzJTbk5tYlhWdFIyeHZZMDVLUXpaSGJHSmhaRVUwTkZNd1UyMUpNWGd6ZEZGbFdXVjBVMEozWW1WUVVEaEJTbll4Y1ZaaFMwMUVZbk5vUW5oUFpGQjVUbVZ1SzJWWFYzRXhWek00YkM5UGVVUXpjakl2YUhwa00zUmFOMmdyTHk5TU1UZGhabGh6Ukc5QlFYRmtkemxVVGpSbmVsZFFhSEZqWXprNFdGQldOblpVTURsT2FUUlFOMm8ySzJNelREWTFabG8zWjBsaE9IQTBaMFp4U2poVVp5c3JSMFl5WmtOTU5XdHVla1UxVUhKU2JUUlNVM281TlhGR1ZuSmpiMHRsYUhnMVJFVlRhMDByYURCV2MydDBjMmR4UjFsT1ZFd3ZSRXB6Vmt0VVdYcEVVVXA2Vlcwck5uRkxaMngxWWs1MU9HOVdRazFKTVhKeFIyMVlUWFUzUVdWd1kwdGhkelEzWVhOYWJFbHlSeXN3UnpaQ1pHbEdVRXh3YTJSMFQzaGtaMjE1ZFhsVk16aFNaV3BPUW1wU1FUZEpMM0ZxVDJWdVJrTkdielZQVW1oUE1HcFBaRWN6WVZwSlYyeFdWVlZyYUVzMVRXaGFWVGxpUm1OeE5WTnZjbXhTUjBwWlVreFBRMjFGWW5JMVMwMXVOakZ3V0ZCRVJrdHlOME55ZURSU1YwRlZka0pTTDBGVk1XMUVWVFpMVW10Q01HOVJlVmwyTm5sdFNXWndZbmxxTm5WdVQxZFdXR3QzVFc1R1RVbEdSbVJ3YzJRMlVrb3dNMjA1VFVWRWFERnliVUYyVVV4RGRqQldjalZYY1VGUldFOW1SVFpyTUdwV2JrNTZjSGhhTm5KamNVdGlUVEZxUmpSTWNFMWpOVzk1Tm5jMFFXNUxRVmRXZDJRM1IyVk5TRmN4ZUdjMmVHZDRWV2xPT0hwQmNHNVRZMlZPVVZVMmJHRlJORU4xYXpkMU5Ia3ZTSGd5YWxaS0swc3lTbmRKVW5CcldtTXZjMlYwUzFWc2FrbHlXVVJKVDJZMVMzcDVVamd3YjFaMVdYQlBWV0ZvVG5NeldXUTVVRVE0VjBWQldqWlhhRmh5TVNzNEx6Y3lMMlZtTTJRM1pXWldiamxoWVUxdFptZGlSa1pXYTJseFowdG9aREJxY1ZCalVUWXhTa0pyWld4UGIyUmxXWFk0ZHpOcWVWWkJRVFo1ZWpCaGVuVnFiSGRpUldKMlNFWnpkV3BLVW5CTlRFeHpRMmQ2WlhWbGQzbHpXR2QyU1ZkcFRGZEtiMnBzZERkTlRXWjZjRFF2TnpsSGIyTjBObUZtV1hsb1ZXeGlla2hCVW5Od04wNXJOVzFFV1ZaeFYzcHRVVWRKTW5KT2JrcHpXV294VHpNd1RFZE1LMWg2WTJZNGFVaDRaMVYzWW1kVmNGb3hjbXhLUVV4aFVVbGpkMnd2U1RNdmFUZ3lZbVpuWTJNclNEZGtUMko1ZVV0T1YwOHhjMUpLVm1Wa1pHcDVhamh4YTBOWldqWTFhR05IYlZob2FqQlZkRnBHTUd4b2Fub3JWV1Y1Y0d4cE4yZHNjRmhJZDFabWFYRjFiRTFYU1hWNmJISm5NMWR0YVhsTVEwcGFRMjVDU21jMlMwZG5SblpCYzBoR1RWRmthVlpOU2l0UWNWTk5LME54TkRoQmFYQkJZMWxRZVU1aVFrMDJZalpZTnpSU1RrbzRPRmhFTVhReWEyb3ZhVEJ0T0VSamFWTk9VekUxU0UwNVpVcHFha2RrTjFGbVREWTBPRE0zZWprNWVXNHdRVE0wWlZoa04yVjJVMnN2WTBrdlkzVlRjMmQ1THpkS2VIcENSbTFEUTBkS1NFdHNkVlY1ZEUxelRIcHFRM1pNYVc0cmNHdFlSa05hTURkeFUyc3dZMEU1VGtsWlkyRmxOMVUyVlc1TEsyaFNSRWx5ZVhwVmJ6aE1aVloyVGpCWmFXVnlPRlUyYWtoTlVETlhSM2cyWm1SVGEwaEpZazUxZWpCd1NVMUNkMGhpVlV4Q1R6TXlVeTlYY1RCMVZDdEJWMjVpU2padVRUbEJSRXRXYzFoSmNtYzRjakp6ZFV0UWVFSjRWV3RoYWl0WWFqWlViMk5WTTBoeGMza3haVmR3YTFjcmFtSnVTbTF5YXpJck9DdFlVbXRaYlRKbFNIWXZhWHBMWjJWRVVUQXdWR0ZqU2tWV1NXdHRWa2c1YlZwdk1tZ3hTVkpMVEd0SGVHWlJjMlEzVUU5U09YbFFjelpLY2tabmNXWktkVFZsTldGbVIxVXdRa2tyUTFoMGVHRTBZbVY0VGs5SFdUTldaREZoV0ZBMVFtcGhWbVJHVFVkVFoyYzNlV1JLWkRadFkzZEZabXAyWlZrNGJHTjVNbEp3TmtkNlZrMUdPVk5DZEhGblRHaHhaV1J4SzFWRmNEUnFiSHBvTkhwdGRXbzRRa0oxU0RJeGJYTndSbTgxV2l0bVNIVlVWRzlMUTJ3dlRubGtlVlJZWlU5YVdHOHpURlI2UjB0SEwzWjZTalZNTW5STlNrRjNlVWhFVm1jMllqQmlVMFZFVUVkbldVcHZNM0JIU1d4d2JrTkxUbXQyZVdoNk9IQk9VRlEwVTNwalFUZDBaVU5TUlRSTmFVZEZha2xGZUc5eWNFdE9RV04wVlM5TmJrcDZjVGxSTkVaT04yUXZWRGQ2U2pKUlkxWk9SbkExYlVwdVlrZGxlRE54TlZGR1YxaHZXVGxLVWxSc2N6aFJVbmhhWVhoSEsxUnJaRWx3VDFJM1VsaHRZbXRIUWpJeGJqQXpkMlJoVDNaU2NuQllkMWRSVDBablZ5OUhXRVZ3TkVGYWNURm1jMjlNTkdoMlUyczNialZ4V0VKNlNrUlRla2hDUldacFJrMUdlREJPU1VSdk9WSnRSbXBOVTBGNlNrMW1jbkFyUlZaU1VrWkJka0pXY0dWUVNEWklMMlF2Wmxnd0sxQnRjemg1WVcwMlpua3plRm92ZEdSV1dUQlBPV1ZDYVRreE4yY3lOVU41TkhSdGFuTlJibkZMVWswclVGZEhiallyVlRNelRqWk1URGRFZUdsSFFWUkROelp0UTBGMlUyeENlWGhvYVRJNWJGVkNSR1Z2S3pKcmIyRkJPVFZrZFdVclVtdzBUVFF2WTJ0SVpYbE1OaTh3SzA1allYVjJiMFpxV1VGSVpFNU5la1o1Y25kcGVVOWxMM2hLWXpKTGMyVkVjVVYzUmt3clFuSnZRbmxuZUU1TVUxVkVXR0pxVVVkeFFVaDJkbFJJUms4MVltTnFjMHQ1ZDFKSksxVlpaa2RQTTNSQldHRm1NV2hYU1dGRmVGcGFZMjh4U0ZoTWFYZ3plRXR6TjBSTFdtRXdRVkpQY0hCNlVHaHZZVGxOVHpaRVozQkhRMkY1ZDNKQ1dsWmhRMlo0UTJOeVlXSTRXbUk1VWxGdFNqUnRja2Q0WW1Fd1ZUVndTbXhUZGxwSVExaG1RVTVNVFVsRVR6QjZkM0YwWjJKNE9XTlBRWEZ4TWtWbGFVWnZha1YxYWxJMWVFbG1OVGxtWjI5Sk4ySnFVU3N6VFdKMlJHbzBWRzFKWVU1b1FYaGlaM1JGY0RnM2VHaExWM2xWTDJFM2ExRjFUSGhrY0V0NWVYRkRaa2t4TmtVM2JGVnBkMkZZVTNaUlVVeFpUM3BhVjJWWVVuTmlhbWcxVEdsaGRqWk9ZMlZHUVVOT1FqUjZkMjF2WVdObU9VcHpXWEl3Tlc5RmIzQjJWaTlwZEcweFVIcE5lbXg0YlZjclkzbGxaMDFqV1U5SFduWldVRzFHYldSdmEycDVVVTVIY20xRldrMW5XWEo1THk5RmEzRjRXRzQ1U214MGVsVm9hVUpMTWt3d1FpOTJiamM0TkdsRGJESlNUMWsxTDA1bFkwb3pSMnhyTHpsNmVUSkJkVGxhU0UxaVptUmxOREZMZEhJNWVXZG1VRk4yYkcxU2NGaHJjbEJqVjBwSlowdFpXbUpZTUV4eWJqVTRMMHhyTnl0WWMyOUdSMlprT1Znck9USXpUVFZzV0ZCbk1GaGhXRzUzVUd4Rk5rdzJPRUZrYTJWMWJXNU1RMDQzTVROTk5rVndOblF3VEhCTE9FTmlWVmh6YlhKd1ZDczFiR3hQWlhKRllTdFZiWGR0T0ZsNFQyZG5hRlZoUVVWRWExVmtkVWhuU1dVd2NuWk5Ra3gyUzA1dVJUWkdkMEZST0hVM1VqUnpOSEEzVVRJd1pFVTNSRTQyVURGSWJuWjRjbEo1VTFSNVlVUXpZWEJ1UTJZMFZsTTRSa1JGTVUxelJXTjNNVVJHYVVoeFFXZHBiMWMyZVN0S1ptTklMMVl2YVUxUUwybE1TVGw2VVcweVFWQjFSVGh1TWxCT1lsVlNVRWxIT0Vac01FWktXSFpZWWpWMk5tcGtUR1p4YURWa1ptbE9NR1JMTmpkTVpVVkhlVTVQVVU0dk5GUjZMMWxoVlhWdFozSXZjRTB3WXpKV2FqSkdjSEUxVlU1WmFGRnJRMlpMVGtnMFFUWjFTQ3RWVmxCdk1EWXZjelpEU0d0bVVXNW9hV1JsVW5JNFozcG9SMFpHYmpsMEswd3daVXRJYjFkSGNVeGFSVmxYU1N0S1p6STNXVE5GYkhaNFpXSXlLekJaUlc0NFNEQmlObkZ1ZERjMlNrbGpTVEY2VkZwak4xcGxaRWszYVZJelFrMVVaVXR1YWs1TWVpOUVaM1pzZW5waFJ6UmpVMkZMZDNwdU1XUTNOMGhsZVdOU05tSTVhWFJrYWtoNVduRmlibk5yV1dsYVNGbHdhMU4xUTFWMlVHWTNPRTFZUkRWSFVsVlZTMFEwTURSVVEwcEpkMVpXYlZwTU16SkNUMjV5YTJoWksyRXplVlY1VTNsTVRIVjBSSHBZYkRkbkszZFdZekZOUmxoRU1qZHlPVzluU2xCS2MzRmFOa3AwVEVOd2VDdEZTbGM1TTA0NVdIRTBaRFpNZEdRMFkxUmpWR1V4Wmt4alNXSlhSVEJxVGt0bE1raHpNRE5RY1ZWSFUzSnNMekJ4T0ZBcmVpOUpZVTFhUXpORk1qUlhORzVYUmtoMlZrTnVRakl5YzJ0b1UyaE5PVTg1VDNwVFpHZENSV3NyZUdNeVNFSmxjbVUyZFdwUllUY3JTMmQzYWs1aFdFMWhObkpzZEdVNFFscFVZV0V3VDNsaE1qZDZRMjQ0VkVwclRHWjJhbUZvVVRabE5sbE9WbmRPYzBWNmNHSTJUa3Q2V1hKWVRtcFhPRkpRWlZKWlNWcDNNRE14Y25Zd2IyVTVOV0ZSWkdVNFZXSklVV3htYVVGVGNVOVBXRUV2TUdOb2RURkJkMHhsVm5aTk1HZDZha1ZFYnk4d05USnROV00xU1ZSTlJsZG1TRXhJZEcxT1RtcHRNRGRFVkhCRFVEVTBOWGN3Tm1FMFRYRjRZVVZDUkZWRVoxaHlVVmRKU1ZSdVkxaFlUbVJuWTJka1RYcDBOams1ZVRjNWEyOW5Za000U21SQ01XWnpjalJrY0RSWFZ6UXhhbTh2WTBvMFdGZDJUMDVtY0haMlpHcFFUMlJPVkU1SVJVOWtaSE5PUjJnMVJEbDZZbGRrUVZGUmFtNUJLMFUwTUd4elpVOUZNRnBMYkN0b2NEZ3hRV3M1U1ZGM2RsbzRlVFowVWpOblF6UnViazFUVFdKSk9XVlZObmhzWWpncmQwMDJkbmhGUmtOTlltaFFVbWRrT1VoSFFWcEJNVFp1UkROaU0zbHpTaXRNV25OclZWWjZNVEpoTW5jM2NuTmhNbkJxVERCb05GTmFOWFpvU0d4UU5qVjBObGhxWnpKSFZERnpXRmMxWVZKMmRWSnpORGxrZEhwR1lVeFVhRU5QTW5nek9XUlNjbVV5UVZFME0xVk9Za2MzY1VaV1UycGtTMlpPWkdWYVlsUXJTVzVGUkVkNVpHZ3hNa1Y0YVdKV1RtUkpTRWRrTkhNeWVGWjBaMEpaV0hRMVZVMDNZM2M0TUdwc1VWbG1ZekZoZFdFeU5rbEJjMUo1V25sSFVXMDBjbTQ1V1djd2FrVlRSRGxwV0ZwdE4xQTRkalJ0U2xwSE0xaENibTlMY2paUE1WRTROR0kyWlZKS01YRlhiMjVKVUhwNlNuRmFVVEp6VkhvM2JsVmpOMGxWZFVRMlVuUnFaMU5KWjJWeGJtWmFXVnBXS3k5S2VUQnBaWFpoVFhVNFpqWnlhbFIyVlZWVU1IVTBSbVZtT0haelIyNTBZbTlLT1d4bE5TOWhOMGhsYzNVNFIxSlBUa00yVWpaSksxVnJXREpXUTNNclRqZHhNVGgzU0RSUFFtRkdTR2RtTVZJM1drVlpka3RwWW1OWUsyZFVZMVJ2ZVdaUFJUUTNVSFZvTlVoTVQxUTNNM0p4WW1GVWVuaDNOM2xuV1hveFFsYzRkMnhRYW5CdFVrb3dNWGN5VUM4ME1HY3liSGRWUlVaM2N6bHVWRWN6YzFkNE5XSjBVa3RJWkRReFIxcEZXbWRSY0RGcUszUlRUVUZuWW0wM2FXMVlSR2xIT0dKUmJsSTBWblJ0YTFCNlptZ3JOVUZsTnpaTGFXVmxWVlpZVjJ0bE1XTlZWSGMwVW13MlJtWlFRaTgwTUhoNk5YSm9ORnBWTWs1bmVqWmhObXBxYUdsWGJrOVlSVEExZWpkRVEweFFiazEwVFhWeGNtbFlSSE55UVUxbGVDdGxSMUpXYkVkVmMzbDZPR0p0VEVaWFlUWTNZWEZDWkc1RFpEVjVkSEp4YkdoemEzcEpZVW96WTJ0UlZWaHliMmRFV1ZWa05GSjRiV2wyY1RocVZEUmFiRE0zWWxOUGNtUk5TRWhYWTFWV01HcFBXRzgzU1RSR1JXdHRkemxXZDJVeVNFaHBSMFZ5UnpCMFprSnJObVJoTURVMU9IcDFhMUJ1ZWtSR05GbHJVbU5JTTBreE9YSXhLMHhCUzNaTVpGbEpNbFZNU0RWeE4wMXhXVmd4YW14UE1UUnNiRVowZVhOalltTklla1YwZG1OV2QzZHFNRzlQZW5CWWNEaDJia2M0ZDJsYWNqRjNSMEp5Ukd0NGRuSnJlbmxVYmxCTmFWbDJhVVkzU210VFRtSmxka0p5TW5ZNGFtSjFaM05aY0N0cVZDdEZVbTUxUlN0dk9Ha3JabVJzVTNaWmJYaDBiVlJWVlhwUVlsQnVVWFJDTWsweFpIaEhPRFZHTjFNcmRXMXpkR2xzZUZRM01rZzFUM0pXZDBkaVQxVlBkM0YyUmtGMU0wNVFibEpLT1RsTmRVdFVObkIyT1dSVmJqRk1VMDU1ZDFGd1IwdGtWMEZrWlZGVFNYTlRSWFJWZFhSYWF5dDFTSEV5Y0ZoMGEzb3ljbFlyYjI1ckwxaFdWVVF3V21RM2VsUjBhamQ0TWs4eFVFVnhXWGhJUkdNMEwybEhTalEzYVRsNFNFcDNibGhJVW0xMU4yTjFOV0pxUmtod1lqUnFSRFpMWmtaMk1tcDNiblJFU0ROMk5HTmlPR1ZpUmxoS015dG1kVTlDZVhoVE9HNWlZVGRUWTNFNGNucFZhVkIxVFZwMmQwaGxkV3cwTXpBdk9XZFlZekkyV0dGaGRFSXJXRWd6UVdJcmIwRkNObkJzT1RaMVRYRlBNRnBzY2t0TmQyZ3ZZaTlyVEU4elduZEVWalZPZWsxUGRtTjFUalI0WWpGM05WazFia04xZFdSUE9FUlBaV05OSzFwb1NEQklTMmxMZVhSclpGVllPSGt4VWxSakszRm9hbXR5UkZoUEwwVldaREp2T1hWSWFrOXJaV0pvUlV0cGVYVllaV1pUTDBSMk5rbHVNVVZPU1M5MVMzTnJhVUYyV21KUk1rSmtkMlVyUkdVeVZHeFVVR1ZhYm1VeE1qSm9lVUl4VmxjM01ISkViVGhyTmtFNGVpOVRZMDFtTTI1TFpuQndZV3hMWmxJdmNtRjRSbWM1T0ZaSlVGbERaQzlST1RWak16WmliVnBrY0RaRGRuUklVMWMzVG5JclJFOUNXRFZ2VHpKVmFtMVVXbko2V0hreVVHMW5WM1p6VW5aMFIyVmlLMk00YjJaSWFXbDBiemc1WjFoakx6VnVlakpxYjBWQ1ltbG5UMnR5TVhSeWMwOHhPR3BsYWpoMVdWb3ZibG95TW5WamEyRlBZV2t6YUd4dGIwMUplRVZ4ZFdkV1N6bDFLMVJMVGtZek16RjFXWGN4TTNrMVNtdzJLM0V2Y0V3elVXa3hjVFEzWldsMGNscHlibmRoWm1acU9HOHdibkpEVDBjcmVtUk1ibkZ6UzJSbk5VY3hiR0pHS3pkS1VEbEZZM1kxUW1ac05HbzJja1IwY25GcFpqazNZWGhzVHpCblkzRmpXRGxhZW1waWRYZHFLMUZaYkVkMk4wMTJjbGxwTkdKcGRFZHVhMlpwTXpOSGRrSnNXRll6V1Zvek5rbzFRamt2ZW1SV01WcDBOMHN6ZFUxNk4ycFFWMEo2Y1U1dGRUYzRTMjV0WkRRMVJUbGplRGQ1WlZNdmFIWnhaWEZqU2xoelEzTTFZMUl6V0ZoWU9EbDZiR0p4ZWxaTEsxbzJNbmxtY21kc2FYSXpkMFF6VjBaV2FuTTFkalJUYkZoa2JHUjBlR05oVFVSV1ptNDBPV3BRTUd4UWRWZE5jelYxZDFsSFRYbE5Oall2WVdSeVZpdFJaRkJaYjNGRWRuVk9URFp1V0M5T1YyODRkRFZoVGxCeWFGRlVUMjkwZWpOeWJGWkpPV00wWldaSGNHczRlbTlLV2pGbWVXWjBUMGRzVTJwVVVHeGFXazlpWW1VeVdHUXJOV0ZuZUVobVlWVnFLMFZ1V0dremJYSkdTazV3T1RSRFpFaFNORE01ZFRKS05GRnFWRFJOZURsV1VpOUNjM2MxY2poRWEwaFBNMUZ3ZW5WdGRXTTBZbkpyVW5wdU1rbGhLMGcyZFcxYVJteEhZakJ1UjBKalZuUTJNM2hLYVhwRk5rVlJVRmxqZEdkS1JtbEhWa3B0VjNOWk9UbHhWaXRFUzNJMFlUbEpkekoxZGpCWkwxWTVLekI0WVZaWE5IaFpNVmRoT0UwclkyTnVVR05uYTB0VVdVMDNlR2hxVUUwdlQzUlBObXBFVW1abFMyNXpla0pWY2xSNGVHcENOak5rVms0NFV6WlhZVkp1V1d0UUx6UlhMMEk0WmpsNU1sUm9VbEl4YjJWd09FMWFNR1pvUVdGVWRrbDJOMnRRV1dsUU5Yb3lNbTA1TDFsaWIxbHliWEpLTW1keGRXVjVhMjVxVml0eFJWUkNhM0pEU25admVUZE1ORUV4U2pka00wNDBhbmxLV0dkeVJWTlhhRFZaWTFkbkx6ZElUM2d2TjFZMlZqTlFVMlJVVjBzNWNVOTFaak51U0hWNU5uZGtOMWhhZVdKQloxSnZVeXMzZGxnd2JXcFFXbFpzU0VnNWJGVTVkVmx2ZFdReVMyUTJZM1E1VDJweGVWbzVjbHBJSzJ4elJqTnVSWFkzZWpKbFdIRjJaR0Y1ZWtaNmNqZFJUMDlQWlV0YU5XWm9UekZ5TVdwNmRYUXplREEyWldrME1qSm1Oa2h1TVV4VGVuaEJOVEpNYjNOaFpGRm5jMkZQYTJKUkwzUkVka1pwY1hVeU5uWXpkMGhQTjI1VGRXRmlMM2t5Tm5ocGNTdDZjWFkwVUZOQlpESXpVRkJWTkhwclQwcFZNU3N6TlZNdk5FSjRTSEUyTW5abE4wOWpNa1JHZW1wV056TTJjMjF5YlVOTmRYWkNSMkpwU1M5cGN5OUlXVzR5WVN0cFNtWTVXaTkzWm0xbEsyUlRNVTlTTWtKclUyaEVPRFZyTkRKMVJrdGtNMVlyY0U4NU9YWjVhMk5KVkZCak5tbE5XbEpQVUVsemFubElRWHBTYUdwd04zZzVka1pFVW5KM1ZWaDVaSGR2V2xkUlluTXZXRW80YVhwNlpuZ3lNV1psTkVNeVpqWlNjM1ZqUWpWV1RsbDNhMlkwVUNzclVISlpRalZPTDFKVldHNTFXVE40VldGSWNVaFdXUzlSZDI1T2FsQXZUR0o1YTBSSU1rbG1PU3RVT1dOSkwyZzVZVkl5VlM5S2NHRTJTMFJZUW5KM1EzUlFZVmxNVVd0WlptTjVaWGhFVFc4M1dGUjZiVmh1UlM5YVQyZHBXRmRFWjNObVEyczJXR1pSTXl0SVlUWmpaVUZpTVVORGRuZEJMMmt5Um1GalRXZ3pPQ3MySzBwR01IWkhZMlIzYnpsMFZuSmFWVzl2UzFocFVrNUhVMlJrWTBkUlZYTmhaQzl2Tkc5V1pVa3ZValI1YkhoVVdsWTNRekY1ZGtoMVMwVkpXVlp4ZUdSMFdXZGxRVzl1WXpOcWMwNVdaV2gxTDJ0U015dEhaamg1V1hacVpVNDJOVzQ1YjJKbGNuTlRjQ3N2ZEdaSFZHWlFVbEEwZFRsbVYwaGtTRll2TjFCcVNUYzRMelEzTkV3NFoyeGpWSHBYWkVJdllWcHVkbmw0TlZseVpubHdXVk16UTJwbE5pdEtObUV2VkdZeVptRk5XRFF6ZWt4elFWb3hOMWhHZHpObVl6bG1PRGRxVmxSb1ZDOU9MelYxYURac2FEQkdWbXB6UkRkRE0yOUtiRWR5WVhFclEwTmtlak5XVGs0MlRESllRaTlNY0RkbU9FSkVUbU5uWm5kQlFVRklaMEpZVFVoRVVXMTNRa0ZCUkZGTk0wNTJkSFV5WVdKT2RUSXpZeTh3YlRZeWVUbGhjSFEzWkRnMWIzTkVkblZTWjJrdmFFNWpTVkJFWnpCaFZYSXhNalE0WldaaWFURmhNRGRZTnpScVZWUXJVa2xDU3pZNWVUUlZTakUyUTFKRmJWTndWV2xXU213eVIxUkdiWGsxWTJsV1NqRXJRbEZyVjB0c1UyaFdjR3g1UmxOc1YzRXhZV2hXU2paYVpXY3dXazV0Y2xadk1XRmFaR2d3TldSMWRsaHZNV0ZtWm1kRlJrUm9iekJaVGxkaVkyaEZiRlJ3Y3pKWlRsZG1aV2RyVmt4c2NURlpkRmRpWkdock1XSjBkVE5aZEZkbVptZFZUa2hxY0RBMFpHWmFTRVZFZDJkb2QwVkJRVUZFVEM5TmVWcDBWek5pZEcwellqbDBWblZtTjB4RldqRTVPRGxqTVROUUwzb3dlVEk1THk5UVZsQm5SVUpDWjI5VlNVWlRXbU5vUldoU2IzTlhTVVpUWkdWbmExSkthM0ZXU1d4VFdtUm9hM2hhYzNWWVNXeFRaR1puVlVwR2FYQlZjVlUyU0RaNlVXTk9iV3BTY2pCaGNFNTFkelprZFhaWWNFNHlSRWx6UWtkcWVHOTVZazFIYmt0MFFtMTZOWE40WW5OUWFtMXZNbFZ5Vm5FeFduUXlTRlJzYlRBM1pIVXpXbVFyUkZGclYwMXVWSEF3TldRclNGTnNWM016WW5ReU5Ua3JSRkpyTW1OMldHa3lPU3RtVTJaSlNHcEJRMmRCUzBGQlJESTVOV2gwTWpkYWRESTNXbVJhT0NzeGFWSkJjRk55VVZselpVeEZVelZCV1daelMzWktUV3hUY0VsWkwxRmFjREJIWTJsVlNsWjFUMWhJYm5sR1UyaFZjRVpvU21WQk9HWlRjRlZ3VmpaR1UyeFhiekZoZEZkd01UWkNVbXN5V1hRMFZrOXlUblV3Tm1SUGNsTnlWV1YyVUhZd1IwUkNiM2xpVFZOdlRXVk5iVlJLYjNsaVkyRnpUMlpOVjB4R2NYbGlUVmR4VG1Wek1tSk9jWGxpWTJWMVVHWnpUMGhFY0hrM1RWTndjeTlCVm5ad01qZGpUMjVMZEZKMU16ZDBlRGM0VDJwS2MzaGxkak4yTkVwbloyVnpRMmRCUVVGSFFuWndPRFV5Wm1SMU1tSlNNblI2V2xaeVRqSTNaSFZtWm1jd1drNXVUREUyT1dWbVptZ3dOV1IyVURNM09VTlJaMHREV1hWSmFXOXNURk5GY0VwNU9HcExlVk56YjB0cGJYSnhTM0Z3WVRKb2NXRmxkbTgyZFd0aVIwSnZXbTAxYVdGdFZuUlpWMnh1WWpKT2NscFBlbWMyVDJKMk9FVjNVVkJTYUVGQlFVRkRRWEoyTW01bGRIVXlZbEp6YkVsRFoydE1RMGx4U21rMGFFdFRWWFJKZVhOdWNqWkRiM0JMZVdseGNXRjFiMkZ0YkhKaFQzSndNamxuWVVkU2MxbHRjRzFpYlVad1dsY3hhbUV5Wm5ZMFQycHJOMDlNY1RWMU4yZzJaVmgwTkN0Mk0wcDNaMlZFUTAxQlFXZERRVmhtVHpKaVpIVmxPVVJHZEVVNFJXWkpjVXBwTkdoTFUxVjBTWGx6Ymt4NVEyOXdTM2xwY1hGaGRXOWhiV3h5WVU5eWNEWXJaMkZIVW5OWmJYQnRZbTFHY0ZwWE1XcGhNbVIxUm1vM0swUnZOVTk2YVRaMVluVTBaV3RXWm5ZNFJYZFpUbmhCUVVGUlFVeERMMnBHV0dKMGJUTmlkRzB5TnpRelYwWkthRXhwVUhZMGExTndTWE5TWVc4d05tWkZkRkUyWVhOMVNrRjBValkwT0N0UmIxVkxiRXR6VWt0dGVXVkdTM1ZSY1ZWeE1WZHlWWEZzVDNaUllVMXRlbFp4TUdGMFQzVlJObU4xTTFoeU1EWjBUblozUzBOb0swUldjM2hMWjNnMGVWcE5iV3BLZEhoeGR6VTRlRmx6VjNKS2MzaGhiekUyZWxwemVIRnJkREl6WW1sTGNUZDBNbkpRZG5kTFJXcDRNRFpqVDI1UWRYZHhWWEl4TWpkamRXNVFkbmRoVFc1Nk1UWTRaWFpRZFRRMU9HZGxSRU5QUVVGQlFVRklZVmd2WW1WdlltUjFNamxpV25ST1JFWnBNVXBvZUVWNVdrNXRWRnBxTVhCNE5VTjRXWFJYWWxwcE1WcHdNVWQ2V25ReVlscHFNVFUxT1VKM05HUlBXR0pwTVVwc2VrWjVOV1IxV0dKcU1YQXhOMFI0TkRsbFptSnBNVnAwTTBoNk5Ua3JabUpxTVRVclFXOUtRM2RwUzJsWmRVbFRhMnhNVTAxeVNuazRaM0ZMVTNOdmNYRnRjbkZIY0hCaE1tcHhObVYyYjBob1VEQklkMWxDUVVGQlFVRkJja1p4TW1Ka2RUSmlaSFV5YW1SbVlrSkJaMVZvUjBGb1VXOVZTa1o1UmxOc1IyZDRXWE5YU214NVFsSnJiVkZ3VlhGV1NteDVSbFJzYlhjMVkzVllTbFkyUWxGclYwbHNVM0JWY0ZZMlJsTnNWMjh4WVhSWGNERTJRbEpyTWxsMFYzSldjREUyUmxSc01qUTVaWFpZY0U0eVJGRnJSMFZxVW04d1drNHlTRk5zUjJ0NlduTXlXblF5UkZKcmJWVnlWbkV4V25ReVNGUnNiVEEzWkhVeldtUXJSRkZyVjAxdVZIQXdOV1FyU0ZOc1YzTXpZblF5TlRrclJGSnJNbU4yV0hJeE5Ua3JTRlJzTWpndlpuWXpPVVYzVVZCMVFrVkJRVUZFUVd4MlZHcHpNak5pZEcweVpXSm1NMmcwY1hwV2NVVnRla1p4TTJGMFQzWlJjVlYxTTBoeU16WTVRbk4zWVUxcGQwVmhVRWRxU25OM1lXTnhNRWRpVUcxNlJuVjNZVTF0ZVVaaGRsZHlUblYzWVdOMU1raGlkakkzUkhSM05rMXBlRVUyWms5dVRIUjNObU54TVVjM1puVXpTSFozTWtaRU16Vk9iVXhXTWk5bFptWnFNRFZrZFZCWU16aERaMnRNUTBseFNtazBhRXRUVlhSSmVYTnVUSGxEYjNCTGVXbHhjV0YyT1dNeFJtMW1iM0p2VjBKbVFucDZOMGRuVlU5MWNqbEpMMEk0VmtkU2JuVmxOU3Q1TUVaRlZrbEdhVkl5UTA1WWVqWnhPVzVNVTFCVlRDODFWblJLY21WRU16QnJVbWgxYzJ4VVIwRk5jRFJQY3pBMGIwZHhOREl2WVd4cGRXeG1VVm8yWVRKMVRtUTVlbW94Ympoc1UzRldOVXhqSzBrck1uRkxUak5CZWtZNWJFeFBPRTA1ZUcwemFuUktZelpNZUhKMGFsY3ZTQ3RZYmxCRmQweGFWbWxsWXpKdFIzVlpkbVZLYldaSVNYZDBhV3N5ZGtacVNpOW9VWEI2TUUxeWIxRjBkM2w2T0RCaVkxSlVMMFE1Vkdwd1dtSlJhblEwZUdVNVF6VldPV2szTVRSeWVGZzJaVXcwVW1FMllXaHRSbEU1WjJGcWJEY3hPWEZ1VFdWMlRIaHRaV3hCWkVoME5ISkpLM0ZEWlRoTWFYWTRTVGRGWVZRemFYUTJTbk5RYVhaalIyUkNXRzlvYmxoNkt5OVJWMDltYXpWMmR6TXhaWFl2ZUZVelpHaFJiamc1U0hJelp6RjFlblJzTjJKaWRuWXpWbXBIWWk5eWRqUlFZa3B2VGxOamVUVnlTbEYxVkdWWE1YQlZNRFpMTXk5WWJERmlLME01Y0ZkaVYyeHpTR0pSY0d4Q1psaG9ORGN5YlRsd1VGaDJLeXQwYkdZdk1UZFhhVGgwU1Roc01uRnFWbUUzVTNJcldIbGlUQzgzWjNNdlVUbHZiRU5MT1VRNVVXOWFZbTQyVlVoWGVWcE1jSEpoZEdGYVN6bFZabTlWTUZKcVJXTm1NbkJ4TVVaWU1GZ3hWR3czYm5kc2RFZFlMM1V6TVZnek55OXhXamR4Y1VwTU4xTnhkRmw1S3psS2NtWnVkazgwTjJVdk1qVlVla0UzVjFsNFZFdDRlSFJKU25JM2VYTmtXWGw1UkhJNFpYWnJWR3M0ZGtjdk1FNWxiM012YW1Rd2NIbFBPV0k1VTJSNmJreDRWRkYwV2xodVZFZzFPVmN6U2pVemNTdHBVQzh5SzJ0WVJFdHNha05hZVUxbWRsUmxNMlF3TldWNk9VdDZVVFp1TTFKRkwzRkRUak5zZFVKSVNXSnFiWEpYYVVSMU1WQjVablJJUlVJNGRtOVdNaTlZYURrMmRYWXliV1pTT0haM09TOXRTQ3RQYW1sU1lURnJNbFpMZGpCeFZURlhZV1JJTkhwRFlWaDJNM0JzVDBoSVJIVnBWMFl4Tkdwd1VESnJaVXMxYTFGWVVHcEhVbTVHZEVkaUsxQkhRbUpKWTB4R1kyaE1XbE5vVWs5NVUybENUWHBMWlVKaWR6RnZiVWRIUmpGVFdrcHVRVk5MVFcwMVMwTjBWR3BWTW14UFdFazNNbTl5T1V0Wk9XSjJkV05UUVRkMGRXMXhXa2h1T0M5VFFsQXJOMWxtUkVsMFdIQlhVMDVXWTB0emEzQnRSSFZ4UkU4elQwNW5XbUl4VjJ0cmMyTmxPRlowZWxSUVNITlJVbGh6WTFSYVVVTkhPVWxhYzIxMU1GQmpUVWRqTUdOV1QzTk9SMlYzWVZNeVJsQk9ibTVGVFU5TlRrZGxOR0ZPT1dkNVltWkxZVEYxZFhReU1Vb3ZiR1pIYWtncmFtZFVjRlZXWjFNMFZ6WnJObWR6Y1ZaTWVqZFhiazlxUTNKWWVXeFJRazVwZDNkUE5YWkJTMkpzWlhkblVrODBRbFJQTkVKM2RUUkpjbU51Um5wRVJrYzFkMVJuWjJwSFRVMUZPRFUzUkhwUGRXazFOVTQwWm1sU1dreG1SV3hETWtWRlNqTkJTMW96UVU5R00wRktWak5CVGxVM2FVSkhZbXRKV1ZGU2FtMU5RVXB1VFVsYWJrMU5SbGhOU1ZaWVRVMVZZbWxFVDFoWldYZG5ha1pOTkVGU1R6UlJlazgwVVVsMU5GRnhkVmxTY0dORE4yNXNWMmxuWkRWRE5GWk1iVEZrUzJ3d1UweDBNalE1VFdOc04xWk1iakIwTm14UE5XTmxXRWh3TUdsaVdHUnFkRXN4VXpkc1RHaFZkbU53WVRGTU5WTnVVbGc1Wnpab1NFWjNLeTlUVmt4QmIyRjBNSEUxZEVoUWNHb3dkalp5TlZaNFdVNTRjbTVWZGpkMk1EWmxXVE5oUXpoVFNqUlFUVEkwWVhaUWNXcHdNek5yVDB3MGFEaHdjU3N5YmtWWlZGUnBPVFpKTVZoQ2NtaGhjRTVNTTNWNlRWRTRjMDVEY2xCTVZYSk9RMk5IYkRoWWRsQnRORVpCY1djMFp6VnhPSFV5ZVhsMFZITldUV2hvVW5WWmExWkZTVVY2YVVKVmVtZGljemxhZDB4a2NtSm9jR3RMZUZGV1kzZHFWazE0ZW5WMFpHdHZZbTlUVTNKb05HUlJjV1pKV1V3MVozTmhNRFo2TkdkcVIwMUpSVlJQU1ZkNldXRXhTMnRpVDJGNVUwcEJWa2h2YzNCUFJ6WTFabTU0YTBsMFQwaHdOeTgxTjBWMVJXaHhSMmRuUVUwM00wTTBlVzVRU2t4dU5FOXlUemRsYm1nMlltNDRZU3R6VmxkaksxRmFZamRNUVZodVZXRkVSblF6T1dacWVsbEViMkZ5TjFsQ1MzZEpaMHBOZUZwWldWZ3lOMjE1ZDIwNE4yTjBaVmx6WkRseFRGaGhUa05wVVRNdkx6aG1UVTR6YURaMU1UbEdTRlJHYUdkb1ZGVXlNa2RMU0haU1p6QkhjbFJ2TUVkUVFXbEJhM3BHYkdob2FsRXlNakpIU0M5UFRtZGpTbk5sTXl0WFJEVk5Xa0poZEU5bmQxbHpTMDFDVmxwWldUUk5kR1IwYVV4VFlVNUNhWGMwT1VKdmVWbE5SMDlDUm1SaVdWbEpjMlE1YlV4WFlWQTJaV2h6UmpKa00ycG1SR1paZGk4NGJuWlpZa012THpOc2EzQmpSakJsVG05UFptNHZWbTFLV2tWd2NUaDZSMUYxYzNOTldVZFhLM2wzUm5kMVRrSnBNRFk1UVNzdmRqUjZlbmRZY0NzeVJrZExUREZLWVVoUFlqZDVXSEFyYjFwNWVIZEJjSEppVEVSR1JHNTJlRzA0YVRaUlFrVmphVUZKYjJsUE9YaFBjVEZLTUU1aE9TODBNVWREZDFseUwwZEdabmh6V0VsNFRYcERlWE5oWWtReE9FOVVhVFYxU0hWeVVHazFSMHB0V1ZkV2FsUmpablpvZVdOWVRuYzRNVVk0V0VsNFRYcDVOeXQyZGk5NGRqUTJOMGR0ZHpsbVJHczBkV0pvTjNFM05IVlNhVnB0Um14Wk1ETklOelJqYmtaNlkxQk9VUzlHZVUxVVRYZHpja2N5T0N0bVJHczBkV0pvTlhGUUx5OVpiVkpwV20xR2JEUTRNa2hNZDJOdVJucGpVRkF4YldGaWQxQkNVVkZCUVZsRFQxSlZNbVJ6TWtncmF5c3pRM0ZXVDNJellucEZlVTFpVDNkemNrWjZZMGhLZURncldFaDNNSFF2YVd0NlRVeExlSE0zUW5saldFNTRPQ3RtU0hjd2NEaHFSWHBOVEV0NGN6ZENlV05ZVGpFNUsxQk1lakJzT0dwRmVrMU1TM2h6TjBKNVkxaE9iSGc0VUV3dk1ERk5ha2Q2YzB4TGVHTXpRbmxqWmxCc2VEaE9UR1kwZEUxNlEzbHpZazkzWTI1R2VtTm1VRzU0T0U1TVprbDRUWHBEZVhOaVQzZGpia1o2WkdabWFuazRPVWt2U1hoTmVrTjVjMkpQZDJOdVJucGFZMlpFTHpFdmNYSkJTMHhKVm1oSlRIRkhSalEzUTNjclZYQm1ieTlKVlVOU1lWbG1aalF5TWxGSGNUSlJNRGRvTDFCRFNWQnhZV05IWmxWRmVFeHljRXhJUWxwNmJsVk5abVIwYmxVeVRqRTBjVUpWV0dkVlJXWkplSEY0T1ZCR1kwZHRXVVZ2UjJ0V01scHRibkF3VEZOYWIxTjNUblZSTlZGNmMyaFFTR0l2ZWpCMFUxQnZTbTFEYm5oRVZXTnpZMnN2UVdoV09IUnZTbGRQVlc5Nk1IaGlTVE4xTm5wTlRuaFBPWGR5U2sxbFlubElhWHB4TlRGemJWVk9OMGhqUVhaNFMwVnFiWEpWTkdSSmFqSkNORTVvYlRjeVluRXdUbXBQZDBscVJWSTNSV0VyWkRRemVUSk9hRU4zV0U1bmMxb3hRak5yVlVSQk1HSndZblJqVFZwUVRUWmFORGhYUVV3eE9ETm5jRzE0U3pWaFNUWklkSEpYWjJOSE1qWnllVlZQY1VGRk9USldjMUJPYjFGdVpqRkpZVEZNUzFwdk1GVjZlR0ZFTUZjMVYyTXZXVmhOY2t4MWVVaHlNMGxyVW5OelEwRTJZamhWY1VOeGN6VmhWRnBGVWpCVE0xSkhaRVV4TmpKQlREYzNSMjFEUVdSNldXeFRNblZPTlZGdWJqRkNZM1ZvT1RobmIybHRWR0pTYVVoRFdFbFFRamxDT1hKSWJucHBRVUZCUVVGUlFVSXZMemhCUkROblFsbDVRVThyUVVOb1J6Uk5ZalI1Y1VkWUx5OUVMell4YUZWbWRsaDRjbWxMYTJVeUwzbzNPV3hKUkZwTmJtcHRTR0ZSSzJwS1JVMWxVMEY2U1ZCelNFbDROVUZDYkdjNFNGRnFPRWRRTmxrNVJFRjRUVnA0Ymk5TmVrUTRUbmRQU2swMU16UXZORmh3VEVKUU15OTVPRkZRYTBsa1ZYbHFWRXBoV210dFJISnRXRU5hZGpWcVUyMWFTbWMyUVVaSlUwMU1SalJCWVhoV01UTmlZbEpvUW1SelMyNHpiR2huY0VFMkszQkxUVXRETjNKYU5rRlZWRkl6WVhKdVFVdHRRVEp1ZG5sc1JqaEpkbTFoWnpsTVpEaFhkVFpCY0Vod1NuTjVWVTVrZG5FNVRURnBkMDF6VW5GT05uaElVa3M1TDFZdk1tSnlOMjE1TDFWWVNWUXllV1ZwZFVscVUyNWtSRXhzVTFSUWVuQldjRGx5WmpFemRUSTBOME5MVjBGV05qZFdhRnBMYjJnNWFua3pSRVpDT1RWWVJFSXdVVkI2YmtKd1kyMTJlbWxsYzNKeFJDdHVObVJMTDFoUk5GZEpNVEoyYjNsa1RGSnFjSGxJZUhobldsVkxOVVpPVUVOT1VFMHhSa1ZYWkUwM1QyVkJjSEZHYjI0MFoyUnBabmRDVUZwQk1Fb3pZVkZLWTJaa1IwZEZUa1JaZFhWWGNESm1lVGxEZVRJMGVXbExZa3hpWTB0T1MzTk9jMHhFUzFCTE5HRkJhRFZUZEZWRmJscFhSR3BhUkV3eWRXVkxPVzlGYWxscGRqSjFSMUV3SzNGTFJISk1lbTVyTVdscldUZDJXbWRtZW14VmJIcG1OU3RMTUVFeVRrRkxZVlZ2YTBRd2IxWjNSbmxOTkhjek4wZFJja051V0d0U1RWRnlNbmxHYzA1eFF6RTJNM1JqVG5SM1VuVk5aWEV3UjFOeFozRlFNazVpU0ZObWMwdEdkbE5QTWpsMFJVWnNObU01TjJwQmEzSm1XVVVyTnl0WU1VSTFTa0pzTmtwSk0wZEtNUzlLVjA4NE1YaFNORGhMTm5ZMk1HTTRTamxzZW1zdmFTczFiVVp6ZGxZd1FVNHpWRkJXVlVvelZGRTBhM1phZDJsdFZIcFRjMjVNUjBVMlQyeHNjbXgxYVRWS2NIcDJTVlZ2YURaeGNXZFljRTFFVDNVM2NFeHRURmwwYm1GcFlXTm1hbEJ3VFZaRGJsVXJVMDVaT0RkcVpIZEtUMHhsTkVwWFJUUXdTRGRGWm1aS1lWRjFibEJ3ZHpoSWEwTmhkMXAzVTBGblVEZHhUWFk1VVZWNGNGUk9kMUF3YW5kbFRrczVNM2R4ZURCelFtSmtORGMxUkM5WlVFaFJLMkl4V25ab05uVTJiVEJJWldoSVkzWXlkM2xrVWtGelFuUnRRWGROUWxjMGJsQkJOamR6VEVSaVdub3pjbXhVZUM4cmMwUlhkVU5VWnpKM2EzcEpRVEZ2TDFSVGEzWlBLekZ2YUV4WFpqZGhXV1JKWm1wT1RsSkhVVTVPUWk5Qk9YSjZiemR3YldkS2JGTkplSEJ6UW1GNVYycHBNMHg1YldNeFdXeFRiVU4yVjJSclFXVXdWRE5ZZFRCVU5UTmhlWGxqVkhwSVN5OTZTVEJhUzJ3ck5XWjBjRzVCTVZoWVVEZFNkR1VyUTNCc1JtZEhNMFU1U0dwUFdrcFlTV05RU1hWalRVWnNValZCWTIxTE5HNDRNRWRTYkd0WVpFMVdhRVp3YlRaNFJEVkZZMjAyZUZRMWMyTnRObEpJTlhWa1NuUXpjbk5TWjFkR1QwNXlZUzlzUW1aR05DdHZlSGd2VFZRMFdHUlFiMjVxUms5dWFHa3ZZbmh2TDAxWmNqY3pTQ3RDTnpGUVp5dDNVamxGWmtOS1pFbENVRFZHTTJkRk5tMUNWQ3RST1RSQ1RscENWRFpTYXpoQmJqaHFVR2RGZW10R1prTkxUbTlaVmpoVVZESkVjMnROZUVKU2NraFJSVmxLZVZWYU1uUlhZbGxqT1c1RVZ6TnFaa1ZFV0c5dGFXNXhXa1ZpVEdwWWFXcG9lVE52U0RWNVRURm9jbTRyT1U1YU1sSnhjbWgzSzJsSVQwUkVTbXBRV0cxU09GcGxjSEl6SzNob0sxWjJNWGxGWWxwalJrdzVZWEk0V2k5V2RrcDJZbFZ1VUZwSkszTk5VVWd6UWtGU1VUUTFjVWRYVVZoS2FrMWtVRlJYTVdsM1pVNXVkRGRzYVdjdlptZ3ZhSGQ2VldWT1ZuRnNSa1F6Ym5oM0sxUktUa2MzY1doRmQzSXpVVUZDWW5WQk5tVlhaR0paUzBOcFpFMVhhVXhDSzBaWGNYVkpibVFyVDNWM1JERk5ZVFZ3YjBsVlZ5c3laazExVmtkMmJUUm9TVEE0UTFOUE5XUktXVEpSZUM5TGJFTlNOMG80UzJzNFZUZHJVemhZWVZObWRWcEtNVGMyTTFjNGQyaHFjbWhoTkVwMFJGTXZSelJWWjFCMFFtTkVTa3RFYWxKRFNIaE5XbnBNUW1aYWVGcG9SVVV3Y0ZBMmJsVk5WVFpRUTA5MlFrSTFSbFpwZFhGeFNXeHBiMkZzYUdsVGVUbHBjemh4VjNONVEybEpjVzVyVkN0TWRsSjJRM0JRWVRKSU1tTXlNR1ZEVG5KNVdrbHpTSFpSUTBzMWRITnRXVTAzZERZM2IyaFNWMVkyUXpJeFlrUnhZa1p6VG05S1lUZFRaMGhTZFdGMGFFcEtWREJrVVhGbFREQTRkWHBZZGxSdE9IRTVZVFpPVTJ0MGRUY3hOSEJ3VDJkUVlYRlpTMVEyTmtOTWF6a3phVmRxY1ZOWmMzSjJUbWRGUnpkWkswZFVVMUZzVkV4aGRHRnZOaTlJZVU5bGRWZDJXRWhQZFc1S2JEZEZNRkp4TkZwdU0wcHpTeXR2V200elVsTTVlVmcwUWpGTVYzVkhSMmxPWVRSblNVSklTeXR0TldwS2VWRktjbGR4UTJGdWJXeHNXR05QT1djd09FbElVQzl3UldwbUszSTNNRlpHU0VwR1RGZHFZMUZ0WXpKNFNXeGhVR1JhVG5CdFltTk9aeTl5VDAweU5tcHROSGh2VjJaUFp6STBRVGxHYW5wQ1ZEbFhPR2syVURGUVowb3pkV05ZTVN0b1prbHdNREZQYzBwUU9HWjZTemhJVDBreE9FcGlTRkZVVkdWdmJ5c3ZkWEY0VEhCQmFXbEpSVUZwYVZrME9UWkRWV05CU0dNelpERTVZMlJtUmpOVk5ucE5hR1ZyWmpOa01sTnNLM0ZtYWtsMVkySjJSR2RXY3pSUWVWRmpRMVZZYm5WblYycEJaeTlIVVhSRk4wMUROM2RaU1V0dFVucENTa0UyV205M1JGRk9iVUZ0U21NMk5VUk9RM1o1Y1hKdFVXVkxaV0ZHTTI1V1FYQXhTR2t6VTNGS1ZISldUWEF4Y1doWE1USkRWbUphU214b2FtMHlRMlJpV1VsT2JXdzNRa3BuTTFsdlowaGlUa05FUkRsc2VXNWhTV1owY1ZoaVdtNXRjVkEzWVc0eU5sUjNObTlHVFdRd2NXMVBOa1pVU0dOdk5HSXdkM1EwYjNGT09IRXZSRlV5UTFrNE5EWlVjbkZHTVVjMU5raG5XVE5OUW5KaWJsVjRjMlp0VTJsWk0zQmhkR1ZOTjBsYVRqbENiVE5GVEV4ek4wcFBSRTgyWjBKbVpsRm5aMlJ3YlRsUU1VaG9iRm92WjFGMFpqUmhWM1k0YWsxSFRIaERRemsyWjBKbEwxTjBjVlJ5WmxSRGVTOUNUbUV2WjFWMEx6VmhXazFtYVVKR2RuaERReTgxUTFWc2RGSldkbkJhTjJGNlVERXlWSGsxV0ZocU1tUktNM1ZQUldaMk5FYzJUbEZCUVVGSVowSlpMMFJsZDFoQmFVdEhTV3BKTWs1bU5VRmlSMjVTZDAxSVFYcEtRbEp6V2pKS01qSm9hbTV3ZVdKRmQyRkpTRmxFYkhsbFNFdFpZM0Z0ZVdsaVEzZGpWVWxHWjA1dWN6SllVbHBhUm5KQlFYUTVUbVZ2VVdKbFFuTTBSekZuV1VkR1oxcFBiMEZwTHpBeE5FZENkMmxGYVVSQmVuVkhlRlZaWlhkSmFrNXFaekJDUjNoclZHNUdXbUZOWVdsTVpVeHZORWRDYTJOWGFFbDZhMnRCY1ZGclJXZG5ZM1ZNZHpWNlJHNVZNbU5VV2xkSWFUQmtha1FyWWprelFUQnlkVkpwWTBac1RUSnpTMGMwVDB4RGQwRnZNVk52V1VGQlFVRkJRVUZCUVZGQlFVRkJRVDBuS1NCbWIzSnRZWFFvSjNkdlptWXlKeWtwT3dvZ0lHWnZiblF0ZDJWcFoyaDBPaUEwTURBN0NpQWdabTl1ZEMxemRIbHNaVG9nYm05eWJXRnNPd3A5Q2dwQVptOXVkQzFtWVdObElIc0tJQ0JtYjI1MExXWmhiV2xzZVRvZ0oyOTJaWEp3WVhOekxXMXZibThuT3dvZ0lITnlZem9nZFhKc0tDZGtZWFJoT21admJuUXZkMjltWmpJN1ltRnpaVFkwTEdRd09VZFNaMEZDUVVGQlFVRlFNbmRCUWtsQlFVRkJRMEkyZDBGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkNSVlV3YkVoQlFVUTVjVUZCUVVGQlowRkJRVUZKUVVGQlFVRlZaRVZTVlZsQlFVRkhWVUZCUVVGNmQwRkJRVk52THpocWMwMVNNVUpRVlhkQlFVRnRVVUZCUVdGUFFVRkJUbEpLUldGa1NuaElWVEZXUTBGQlFVazVRVUZCUWxvd1FVRkJNRkZZTVdOdk16QTVWRXg2U1VGQlFUWlZRVUZCUVZSblFVRkJSMEpuVVROcVpGa3lNV2hqUVVGQlJIVlJRVUZCYm05QlFVRlZWbXRSU0VwMU1XcGtibEZuUVVGRU1tZEJRVUZCUnpCQlFVRkRNa0ozVWtkaE1scDNXakl3UVVGUVluZEJRVUZIUlZGQlFVUlNXakphU1VJNFdqSkdlbU5CUVVFNWJtZEJRVUZCU1VGQlFVRkRRVUZCUVVKQ2JtSkliRzFCUVVGWmVrRkJRWEkyUVVGQlZYb3dSbXQwV2xZeWFHeFpWMUZCUVUxb2MwRkJRVUZPVVVGQlFVUlpTMk52VlZWaFIyaHNXVkZCUVhsTFVVRkJRVUZuUVVGQlFVcEJaVUZDV2s1dllsaFNORUZCUkVsNFFVRkJRa05OUVVGQk9YZFJRM05WYVZkNGRsa3lSVUZCVFhwdlFVRkJTR3gzUVVGQ04yOWpSM05tVFdKWFJqUmpRVUZCTVVsQlFVRkJRV2RCUVVGQlNVRldRa1F4ZUhWWlZ6RnNRVUZFVlc5QlFVRkdVakJCUVVWTE5IbHdTRmRPYmtKMll6TlJRVUZQYmtGQlFVRk5kR2RCUVVsR05qRjFRakZoWTBoS2JHTkJRVUV2VVZGQlFVRkRhRUZCUVVGeldHbzVhVlJ3TkVGVk0wMUJNSGN5V1VKUlJqUklVR1ZPT1hSMVlXZHFlbXh3ZFhSaVFTOWFjblp1TjFwdlpscE9WMXBxZWtzMGNGa3ljVXRtZWxCVWJXWXJURFV3TnpOblFVSTRRVVI2VW5kRFFVOUZiMUZ5VUV0Vk0yWkhWMHR0YTJoRWFITjRRMnBwZUVkMFlYaEdjeko0Um1ncmVrWnRRbnBJYUVwNlEzUkdla2R4YkhoWVJURjJXV3gxWkRSc1F6azBiRFV2Tkd4eU9UQkJaVzVQU1VKdVMwdENia3hDU201RlpFcHVSa2hLYmxCQmJHNU5UV3h1UW1WMGJrbEpaVzFuUlRWWmFraEpSVEUwVTFsamRGQk9NbGhwTjFwS1lteG9UaXRUY0haWlpFWkNRWGM0UlVGRVEwSlVVMDR2TVRKRVFYaDRTMDQyVlRWUlJISndhRXRGZVZGbU1XVjNkR2R5WlhjellWY3JWMWxRTkRWalN6QTRRV1ZCUnpGV1owOVJTbXRyVkdaa1ZtUldZakl5ZW5RckwzaDBlR2szVGxoemJrcGlabFJqZW1GSGVIUnVNamRpZERJM1RuUXlOMXAwTWpWcUx6RmxkVXR0VFVKMmVFMVNOeXRUYjNwUGVYVjZjVGMyVDJkUlNGRkRabVZpV0RWRk1FNVZPWFJSWW1OMGJIVTJkMFprWVVWQ1dVTXlUbWxSTUc1V1IweHFhRkJ1VkZOdFoyRm1URVZzWjB0dFZIazJVelV5ZHpCalZqUkNlVFppVG0xR2NrRkdkRTl1VG1oWGQxVXpTRWQwUVV3eVlWRnJOV2czVlZWT2VYSm5hRVpxUkc5RmRGVkRZbkJIYkdGS1lsWkNZbVJ2TTB4dlJWcFdTSG8yWjNrNVNYRnhRVE53U0RGU1JqbHZkWEZGZG5WcE16VmtUSFJPYzJSQ05IRlFSVW8wYmxCRmJEaHZkbXhLT0c4dmFFODRXVkJwU2poVmRtSnlialZzY0hacVZHWkhTRFJwTDBaUU5ISXZSRWQ1T0hWS2RUUnVNMmgwT0ZaRWVHRkJRVXBaWmpSMlRtdElObEEzWTFkdVpFRk1jVEpOWjNKUVdYQlNVSE56ZGt0SWREaEVjRGhSZEhWNGFGQnBOVlY0T0d0UVRVNVhVR2RITUhkSFFVd3libTB3TW5oSE4yaEVWM2hzTTFRd1VsSjNaME41ZDJoV2JFbG1VbWgzYWtwS2FVdEpkVnBuUldONVptbzNaRGxGZUdkbmRuaDFORXhqY3psd2FURjNNR3RJYzNsT1pVbHVkMmhOZW5oTWVHNVVRMjFRVEdzNVRVbzRhVUUwYVdWcWJ6QmtiRGRXTTJKMFpVVnpXWHBoWjJKVE1YaEpVM2RLY0hGcWJHazVhWEZwZW5OalIwa3daRnBIV1VremVIWXJPV3BXYVZsSlpHRnJkSE54WVRKdFltbFRZVGRKV2pKS2RHVjBaRzlHWkhoMlZXMWthWFUzWnpOSlJHUnlVRGRDUWpsNGEwUXpRMGh6WlRoVkszaGFPVzU2Umt4dk1tZEdjVFl5VGpkTU1qZG1VblJaZFRoc1kzWXZSREJYTjBOYU5TdHJabVEySzJGMEsyMHZaRUlyWW5JclZpOWtiaXRoVkRrek1XNVdlVkJXZVM4M1JXRXpjR2h6V1N0MVVqWlBSRWhoT1c1SWJEWndTRFZ5Y0dFMWNGYzJRMWhsUTJFelZsSllXa2Q1VDJGb1FuVnJWblpDT1ZkYWFFdzNaRTV0VFVoMGJGQm1iemx5UkRORmJqTmpablJ3Wm1OSlprbEZkVFp2T0V4M04wbGhPR3BtVW5GNGFYSm5kelIyVEZsNE4xaHhVbGRDWkZkMlduZE1Wa2ROZFVwdEswODNWMjQyYVdoMlJUWklaRVl6VERKclF5dDJZMVF2ZUdGT1VsQmpORmxZYVZKQkwybElNaTl5ZFdOSk9YWXJkVE5wYTFKbEwzRlpLMFJMZG04emJTdGtOeXRITDJwM1NXSTNabmxZVjJnM2VHSlFPSE5PTXpaQlpUVllkbnBhYW1jdk1VbFFlbUptTVRGalV6bGtURTFoWW1RclJYSkdLM1ZCVG5WcldqaGxja2N2ZURneVUxZ3JTbFlyUXpkMFVFOU1abEZuT0RaMWF6azRkVGM0TTNaUmRYZFdXblJDWVU1eWRWSjJaMDl2Y1M4eGFDOXdhSGQ2ZEcxT0wybFNMMmhxT0ROWFNIVkZkalZxTWxOdUt6bFFZMWhtTm1kaU5uVXZNa1I2U0M5ak16SnlVRGs0TDJGbmJpOWFkaXR1Wm5RMFdEZzNkRVpsTm1vNU1XNVdhbkpoTjNVMlpqbGhUalYyY0Vndk4zUm1UekIxZVVSMllsTnlRbll6TmpKTmRucGpLMjh6Wm05RWQycFBUV00xTUZZM1RsaGFWVVpsWW14WFUydzVjMkZ6TW1jemJpOVRNMHBIYUd0bWJXcFlXakJ0ZWtSalNtUTVVM3BaZWpRek0weFhjVzFtZEZwMGEzWklaakpWZFZsMGVYcGhlRkZtVFRoa1FTOTJPV0oxTkhGa2JGYzNaWFpqV21wMGEzVXlXRGRhUVdac1dpdGpVRmxOTkZJclZ6bERPVEZaTWs5NU5EZG9aakpqUm1VMlJpdDZXQ3RXZGxRcmIza3lNV3BYTlZKa2FqZDBheTlyWkhwNU5HeHlkamRtWmtsSVlYWjZjbXRNT0d3eGNrVkRaRzVyYVhWcGRFaFllVkpRVkUwNGEySlRjVGhNUWtFMk4yMU5ZakJPVUVsdlpWVlpla2QyU1daSmVtWktUVEJYTjNSTGNtMVlVR3N6Um5CamJ5dHljakpJVTNkbFNGaE1kMjFoVEd4NWNEaHpibWxvVUdoWWFrUjJUR1pyYldSRGJsQktWMk5yWXpoRFoyUldVSFZpWjFkRFEzYzVRbWRuYzNaVVVscHBNWGRYVUVSb1lTczVXWEpQYVVwdU5XcEJjVzV4ZGsxWFdVaDRiWEZLVmpKdGRWVnZjRmg1Y2swNWJ6WkxaRE0yUmtObE5uSjRRM1ZvZFRWellURm1hVkJMT1d0bFYxcHZabVpVYms4cmNtRktUVGhPWmt0TmEwczFVM3BhU0hsT1RYQlVTMjR5Ym1WSVRDdDBiRlowYVdseE16WkVNVTFzWWpodFpVeHFOemx4Uml0alowNDFTRkF4YTJkSWVUVnZhazVXWTNwaU9UVk1kMlkyV0hKd2NtdEZibXM0TUVReFNXeHRWMVptVm1Gc1VuUmtURFpNVFdobGIzb3ljRlpZYVhjNVdHNXhiRGxOVVM5SWVVbFlPRGxPVldoaU5uTkZSRkZ5Y0VObFJWUk9kV3RwWlZwdmJIZDNaek41VkZCS0syMXdOVXh1WVhCVk5URlNiM1J5WkZWT1R6VlNVbWh5YlU1RFRtWnJNMDFpWlZGbE1tbDJSRGd4VkRWQmJrdHhWbE13VW1veVVGWm1NbXA0VkdWdmQzZHdNVlpoTm5WSGNGVXZUMWd2THpKeU1VSjFhbEpWZDFCMEx6TnJSaXRYWXpsUFZYSlZTbWxzWW5KUWJGSndiREZ1YVhFMVNYQTFUemMxU0ZaRWJGTmljWGhLWlhGMFFVOW5NR1JSVGxaWlltYzRNREZUZWxSd05uQTBaek56VlVvelVqbDZRa0Y1UldzMlNrZ3liM1V5UW5SWFFVSnlSV2RQU2poUWVHOVhUM0pvZEU5V0x5ODBka0ZZTVZNdk5FZGxXRnBRVGxOcFFXRlFaV1JwT0hGaWNrNDJRV0ZuYkZab1FVeEpkRFpGSzI1dmFUbG5jVEpvTWtreldWTjFaa1J5SzFZMFVWWXlRWHBpT0VjNGJqZEpTRGxqVFdrdk9WTXljV3BHSzFBeUswODFhMDlZV210S2J6VTJZMFJCYWtwTWNFb3daaTlpZFVsNmVGTmphV2RVV0RkdGRqQkJZelozTlVacmJqWlhVRzlwTUhaVWJEbEdWakJvTUVkVE9VVTVkbHB6TjJGU1FVeEJiMU5QT1c1VWJVUlNlVlZ4ZFdGd1IweFVjV2hJYWxCdllTdFdSV1k0UlZONmFsRlRWekpDY2xaSVJIRTBNVWRFWXpOQmRUVjFTbE5ZU1dJMWRVRTBNMWxEUm5VMGREaFRNMGt4TjNOQ1VsQTBTRlZ6ZUhsbU5FaE9kbXBMTDNsQ2JtUkdiVXhCTkhsdFpXMUdTVEI0Wm5ONmNFOU5WM1ZhUlZScFRETTFTV0ZZUjJKeGVsRjZZMkZ2Y0cxWmVuaHdWM014WTFCSE0yMXROVlkwYm5aa05sWTNlV1JZY0ZabGFGY3ZWR0U1VG5JNFVqSk5XbXB6TW1aWlJYcFZaVTg1WmtsVlJYRmthM1o2VFhod2JqUm1VblJLTVdoUFRVaGFWMGxYTXpoTFNGb3paWHBJTWtKUWNEQXJibnBxVERaVGRuWndXRkJTVTBocWQwRkJaVUZIT0hwQlRuZHdiR05aYUhWSU4xRXllbUowYlROaWRIQXhSbUprZG0xdlRGcDBaQzlSVUdGMGRUSnFWMlJ6WWt4SlNERTRSVXhFVFVSa01rOHpPRTl0V21waksyTm5NM0IwZWlzck9HdElVblpuYmpNNWQwRjZkMGxLYnpScFlYVnNaMjFFYmt0allYTmlZalJ4YkhZMlJuVk5TbUpPYUhZM0wxQk1SMnBpYW5sWGVUZDBOazl0VGpWelRIVjZUVnBaV0NzemRUWlpkbXcyT0V3NFkzY3pWM2QyZVZCWGFVRmtNVTVRUVd0b1NHbExjV0ZQVkVWbFlqRTNORFpLUmpaRmEydEZhMG81V0ZGNGVXZEpiMWwxUms1SFNXeHJWVlZ2UkROWmVYaHBRMHhaSzBKQ1QwVjBiVlV3VldkUU5IbDVhRU5GTnpSRmEwVjVUMXBVVkZKRE9GUk1TMDFKZW5ablVsTlJjVFZXVGtKTlNEVlBjMjlCWjNVclFrNUdTMjVzVlRCclNTOVZObmxwUTBzMFJVVkZNR0VyVmxSU2VXZEVWSEpMUlVsaVoxRlRVWHB2UmxaT1VFZEpSRTl6YjNkcWRVSkNSa3hDYjFoVk1FMDBVWE15ZVhkUFZHVXpkV0k1TlhGcWVGaFlhWEYyYkVSbVMwOHJWMFE0YTI1d2EwMHZUREY0Wm0wNWJITjVNelZsWm5seEwyeHFMMHd6THpkWFVYcDBTbFFyYzNSUlIySXlOR001WTA5TE1VZHRlVEY0V2t4RGRHeDJWM2xXTTFoS1VXcHpkbG8xV0ROdVJuRjRiSFZXYzJWTGJ5dFlXamh4VERWYVdIbGFibTEyWmtaM05rNXVZM1JpUm05MmVYUm1iSFV2U21vcllWZzRXSFkwY1M4dk5XWXlPVFUxZDBrMU9XSllabkJMTkU1c2NFbDVXSEZVU21KR2MzQjVWMU4xWW1Rck1qZDFUbEIxYkZBeGVWWkZOMHhTWW10MVpEaHpSRFZsU0hsWFNHNTVabWRtVFRjeVpXWkxZeXRZYkRoeVREVmlXSGxhYm0xdWRrWTRLMHR3SzFkcWRqQlBNa3d5Wmk5aGVEaFhZalJ3TXpWbFpubHhMMnhxTDB3ekx6TldRMDlyZGxCUk5XWXlNMlZZYTB3NFRteDJSWGxZSzJKS1l6RnpkREl5VXk5SU5WUjRaMEZ6V2xkdU9XOUNaVFo2TTBodGNtaG5lVGtyWlN0c2JUUkROSFEyVTJGa2NGcE5NSEJUTVdSd1MzWXdNbTFRT1RreGFWQlFaRnA2UkhwVlNrcEhha3g2ZWtGTGNXRlRVbUpyWVZwYVdsaGtTRTE2VW01TmVscFlUWHBzV0UwdmRETk5MMnBQU0dsU1RpOXRVV1ozYzNSQ2VVSk9hMmxuU1RVdlpIRjJWMDkyZW1ORU5VRnRabUowYlROaWRHMHdlbk5CYVdOaVdTczVPWFJwWldWV1NGSmFNRlpHWmpWdFpGWm1NM0ZtT1RJdk5uUlRiVkJwUlVwMU1WbG9Obk5NTkVSTk1WaEdVMkYxVldjeGVFUmxjRXRrUTBGeFJFVjJWVVYwVjJZMU5WQmhjVU5qY1RkS00yOTJXVzVsYm1WcFpHbGtOblYxUTA4ek9HNXFhVzV0WkdoTmRtVjFhR3RZT1UxRWJpOVBhWEpvVlVFeVRHVnVhSGxtY1RaRE9ETlpMemR3Vm1sc2FHVlVSekpRTmxjclN6QmpTRlpOY2pRMVdtWndTbVEzUWxWSlJubGxXbWhXVFRGcVNVMDBhMFZOTlZSUFlUY3ZTRmxYT1M4M1dYVllMMnR1Y0VVM1VqSTNjazVQWkRoc2NrZGpWMjl2Y0c5YVVYbDVjVzFuYTJseGNYRlhSWEJMTW1scGJWSmFWekJyYjJKaE1tMXVaek5YYzFwM1RqRnlTMHRsVkhKd2IyOUtSblZsZFdoc1RsZ3pNSE0wVVRGemNFTnNObEpTVTNoRk9UaHdVWGhzU3pSMGRpdEtZbllyU2pSbUswcEdaa2RIUkZGYVNtaGFjMGRGTWpCclducHJOREo0YzFwYWFYRmFXblZIV2xwd2RXWjRjMlZUUzJ0allteDZSazlqTmxVdlUzTnpSRFZRWjJkbmFsbHBTV2h4VTBGdGR6UlVNUzlFUjNoUmRtNDJVSGxZWlhaaVdEaHNjR2wwVmxGcWJHOVRTbFZEYkhOa2RuZElVWE5NUWxsR2MzRkZSbGxtTjFwR1lYTkRabkJWY25wR1luSTNVRmNyTWpsSmRXc3pkVTEzTDNoTlNTOTNTMGt2ZUU5RkwzZEtSUzk0T1VjNE1VTjZWbFFySzNCblNHRnVhbVJpV1hVeFpsYzJWWGM1TjBnMk9YSnZaRGRZYkM5d1pYaGhjbFZWY1RGWGJsWnlWWEJSUjBkTldWbE5PSEJxVFZSUFlYcE5WblY1VGxSMWVVOHZka3RYUldGb1kzcHNSbnBzY0Nzd2JrTkxLMWx3Ym1WTmFHWTRWRUpMYkUxSGVsQlBlWFZXVG1zNGVIbFFkWGx3VkVZNGVucHhjbkI0ZG1WSlNFZ3pSbGgzVEZNdmVYVk1kRXQyZFUxc2JtNUNXSGhtWlRoNlNsQjFjWFp0UWxZemFrdFlVVEF2T0dsd1VIa3hha3RNZDNGeldVVkRkbmxYYUdrd1RteHpZM0paV1hwd1ZtMTZiRmxNZW1wWllqVndlRTExTTAxUFNHTTFNVTUwU3pWM1ZWazNOamRvU21kV1ZUSlNjUzlNY1V4bGVIcHJOVXhqV0ZwYWNYSlFVakJ3TTJSc2RVaHpjMVY0Ym5ZclZUWnNMME42WXpRemJFOVVLMWhOV25NMVoyczViRWR4VFdOdlYwWnpOSFkyWWpaRVlVNTZibWhpWVZoeVRqa3ZTR3B1TlRaU1JVeHZNVGh5YWtsM2MycDBTV3NyU1M5RFdubG9NV2d4Wm5jM1oxbEJOa3A1WWtWNWFtUlJhMVJhV1RBeFdXWkdMemR3UW0wdmNFa3hZVVUyVkRKck1ub3JXbkJpYkdkVlJtMXRaVlJIVUM5WkwxaFNVM1JRZUZCdVNqRnZhelZVYm5NM1VWZGFjVzg0TTNoTmFWWlhiWGhwY2xSYVEwcGxTMU5GTUUwdlNsUnRaVUZhV0hCWGFXVTBhVzQwTjNod1UzZ3dZV1JYWldSTVFsUkRaQ3RIU0RoTVQwbE9aRUZGZW1aUlZqSXZibk5OWkRkeU5sUndZalVyYUdOcmFEWTVNM0pOT0hndlR6aDNTWFU0ZUUxMU9IZHhka281Wmk5bWVXSkhMMlJXU1ZGUE5XdGpUelZyVjA4MWEyVlBOV3RvV2t3M00yTldSak5wVUdNMlZGWjBjVm8yT1hjNGFpOTBVRkZVTlRORk4wZEJRVUZCWlVGR2FsbEhSWEZaYjNCbldVZFdaMWxQYjBNd1ozZE5NMmhEWVUxWk4wSnVUa2RKUVZGcVdVOVNiR2RuUW0xSlJsZEJZMFl4WldaTlNWbEdSRUY2THk5NlR6a3JPQzlIZVUxWGFYaHNhV3gzVFVFMFIxTlVTQ3RLT1hCRU1XZDBUWGRCU3pGbmVuVkJRVUkwUVZsNlNYaFpTRU5CUVVGQmMwNVNiRUZPZDNGbFQwaGpaMUF4V0dkcFkyUTBaa2xOUld0VFJVeFhUSGxYWjBFMmExbEVLMGw1V0Rsd09FVkVhR0p6UVVWUWFWQjNUVVJSZVU1cVJURk5lbU4zZEVwTGNHUmFiM0pYTVhNM1pYZGtTRWhXVDNwc05qaGxkbEIxZHpaamRqTXpOemdyYms1NFpGaHpVMEpCT0VkRlowRkJRVWxDWVRkSE0ySjBiVEprWWxoMldVd3pNelpFVW1jd1drNXBTVlZYVUVkVVdtY3dXbVJ4VFZkWVVHMU1WbWt3V2s1dFMxWlhkbGRpWkdrd1dtUjFUMWhZZGpKSVZHZ3dOVTVwU2xVeVprOVlZbWd3TldSeFRsY3pablZRV0dvd05VNXJURmh5TVRVNUswaFViREk0TDJaMk1FcERRVzlLYVRScFMybFZkRWxUYTI1TWVVMXlTa3Q1WjNGTFlYVnZjWEZzY21GSGNIQTJLMnB4SzJGbGFraEJRV0l5VW05M0syNHpNM0p0TTJwVWRuTnVZVGx6TW01eVJ6SmlaSFV5WW1SV2RURXhXblI2V0dGNWRIRXpPRGRoZW5oVWNFdDRlbTFVYldKTlNtMWlUVVpYVFZGaVluTkdNVlYzVVRSNFVWVjZSVlIxZDFNclZWWjRXV05XZFRCU1FqZHpRbVpCWm1oNVFVVTFlbWhKYVhKQlZsaFJVbWhsUlVka00yaDNUMVI2YUVKWEx6UjNRbVFyT0VWalFVUjFTVkZFZFUxSmFuVkpXV3AxVFVWVWRVbFZWSFZOVFhwMVNXTjZkVTFEVEdsSlVWRlJhRWREUlVsU2FHNUNSVWxDU2xKcFJWbE5aMFpxUlVsU05FcFRTVk5QVXpCcFEwRlNjM1UwZDNGMU5HaHhkVWt4V0hFNWQwTkRUVkpXY0RCQ1lVRjNiVlJaYlZwd1ZqSktRaTl6UVdaSVkyZHhXR05FYTJwaFVtTkdVbFJZVWxSeVowcEVLMFZ1ZW05eWVrbHNjbTgwYjNCTlNtUlFTbFJFUzBoTVF6WnllVlZRZVZkS1JscFNXalp2TTB0eFNXTnNRbGRXVmpWV1ZXcFdWbUpXVmxoT1ZtSkVNVUpUTVZkSE1WVlBPVlZsTldGUlF6RkhSWFIwV2xwVWVUWk5OV0ZHWVhSeVVHRnVNV3hzWW5Bck0xWkJjbEZyTjFweFJETldSVFJhYmxCVlNFc3lUM0JTZDFCUE56WjRWRXhGTkZkVWQzTlFjRmxCZVhsSVRFMWpjM0I1ZUd4TWIwTllSVVZ0WlRWaWNURjBjbGM1ZEdGUE1YRTNWMGgwWWxJemQwMVFXSHByT0M5MlVHNHZNQzlOYTJKWlltTkVjRzhyUjNKUlZGUnpRMjlpT0ZVdk1qVkVhbFJLTkdsMlVtSTNVRkJ5TjJscVQydFVTeko1VTAxdk0wMXJUM2hxTDJWbmVuUmphR3BzVmxCc1ZtTnlNSEZoYUhGbVVGRmFjV3RoY1hGWGNYQXljVVl5Y1RNelN5OTZkV1pRTjFGUE1uUkthMGd3T0hSWWFrMWpXVkJ4YjNwNk56UjNaV1JEYzJzdmMwNTZOamx5VURGT2JqRjJVRWg1VkRjd1J6WllZU3QzTWl0NlVFRm1aM1JtU1ZSU04xbGFhVGgyT0hZeU9YSXZjMlkxY2xSSWJtbEplamQzWmtOdFJISjFNazUyY2pFcksyVXphM0ZVU1hsR2VHdGFZa2N5VUVKc1dUVlllR2hwVkdKbU9FRjBhamwwWml0QmFsWjZTV0ZWTkRCU2VISkRhMmxWV2pOdk5FNVNlbUZuUVRKQ05Ua3pSRTkyTkZkUk5FRmpXa2RaTTFoVGR6WlVRVk16YmpGNEwyODVMMkphSzFNM0syMVlPVmxPVUZGaVVUY3JjMjQ1Vm1rNWJqazFZamMyVlRNeE5YWnhWRmczYjNoblprOUJXbnBLZVROM2RFTnZhbkZ2Y1hSd01VWmxUVVpzVFM4ck1EQlhWWG9yVHpVMGNVWlpjbXhaUkZscE1TdEZla3RGY2tWVU15OUdhRU0zUm1aUFFXdFlORmxWWmxOT2JFUmxTV3RVU1haRWFtWkRhaXRGSzBkSU4zcEhVR0pJTkRob1NTOTNRV0puWTNwdFdVaGliVUZ1WTIxRmRIUnRTVlE1YzBGT1RISnBTbXBWYWtOTGRYaEJWSFZVUVVaMWVrTmxjSHBJUmxkVVJGaHlaMnBMTjBsblR6VjZaMmxTUVVWM1kzWnpNRlJoVFZKb2FrZEpRbWxvYVZCeU5FNW5kVTFTWVhvMVVtNTBha2hJU21wUGVFeE5PVE52T0RCcFJVUk9iVUZwU20xQlUzQnRRWGx3YlVrdmNHMUZSM0J3ZG5SdGIxQmFXbkp6YXpWdFRXaEdiVUZTYkcxQmVHcDFRVUZzYlVkd1YySkVNSGxKYUdwbFNVdHVaVWxpYm1WSlIxaGxTVmhZWlVsUE0yVkpaak56UWsxclFsTldWRTFVV0ZSTlF6TlVUVlF3ZWsxRFRYcE5WRTk2VFVOMWVrMVVkSHBOUTJSNlRWUm1lazFETDNwTlZEaE1jME5CVEhOVVFWTnhaRWRDTHpaUFJuaFdiVU5LVm0xTGNGWnRSMXBXYlU4MVZtMUNSbHBGUzNGV2JVcHNWbTFHVmxadFRqRldiVVJPVm0xTWRGWnRTR1JXYlZBNVpHdG5jRmxHYzNsdFduTjZhRnB6ZVZaYWMzcFVXbk41TVM4MFN6TTVSRWR4Vkd4dUwzbE1MemRKWkRJM1RVUlBOMGxVVHpkTlRIVTNTV0oxTjAxSVpUZEpXR1UzVFZBck0wMUJVak5KVldwdVRUQjRNMEZ6ZUhsRlZFMXVUVGhJZFVGb2FURkxlRWxTZFhoTUwzUktWaXR0UWxJemFrMTRiWHBEVUM5bk55OHJXUzlKYjJaSlFsSXpXRkF4WW5wSGFUZG9jV3RuYm5OdmFXTk5hMmxIZVVGbldrdGpUbXR2VEhkdmR6SlhkMFJQVlRCSFUxZHFWVFZ5VGxOa1RFaGlVRmxHVkdwaU4yWlNSWEpqVVRkeVpVbzBXR1ZLUjBKRVIwbDNVWGhxUzAxSldYcG5hazlyVERKbVN6QTVTbEJZY0VSdU5WVnRZMnhRTjNsR1NqSTFhQzkwTkdkTE5UQnZkM1l6WTJvclpEWk5XQzkwTVhwUVZWaE1kbE5SUkVabU9WaG1NazVaY1ZSd05YUTRLemx1TjJ4ekszSlhNMGQwYlRKUVltUjFNbXBrYUU4M2NWTnhlaTl1VFhKa1RqSTVXVkpNYUVWU1MyeEZVa3h4VFZKSmNrMVNTblpEVWtsdGNWSkxiMmxTU25OeFVrbHpTVk0wVjBKbWFrcGljblJ6ZEZsc1QybzVXRXNyZG10T2RDOW5OSFpRTlVKMmRVY3JTV0kzVW5aYWRFUTFORWhFYzA5bGRFa3JhekF2V1dRelFtSXJWRVJYUTJGbVozWktiVU4yYTNaV01HNHZTRWhtYUhwQldtaDNNRzVVYUd0RWRVdDNSMWxqYWxwcGRVOXRjakEwV201aWFIVkViVU5GZVZsSlptbFpRUzl4V1V4QlYxbHVRV3N3YW1kemQyMUNTbk5FUTBSR2FrVlhja2RKVFhwelVXSm5OV2hCYVhwSVdrVnRSekZIYlVaa1JtMUdSMHhOVldOVFlWbE5VMXByV1djelNUVkNaMUpwVUZJclEwaEthRU5NV2taRFRFWTFRMUJXYUVORlRqWm1aM3BOYzNjcldrcHhMMGx6YzFWSk9YWTRSRlJ0YlVGTWJXMURTRzF0U0ZCcmIxSkJiVXRxUVM5R05YVTRiMDFXVlc5U1VtdHhWVWMzUTFWWFNDdG5WVzk2U0d4V2JWQTJjRTVNVjNGek1XRm5laTh3VXpsSFdWRkhUWGRUVGxwblpXRjZUQzlTWWxBMlJrWjJUV1owU25JdmIyTXpPRVlyTTIwdksyZDNlRGxHY0RWeFNFeE1SVU16YlZrNFpUbEhTV2hVY0c5c1QwZFZWelI2VkU5WlEyNVBSMjlrZWxwcWJrOXROVmMwV1VaaVoyOXNiVVpUTWxsT1RIQjJWblZIU1ZOalRsZGpkMFJYZWtSMFprNVhkSHBCVkdGNlNFeFVUVmwwT0RGUk0wUkhPRXc0VmtSbU16Tk5UV2REVURaMk1sUjROVkpZVW5ndlNFVTFhVWRLTDBWVlduVktjSFpKY1RWbFFUSjJOak00Y2poblltVjRVazQwUkNzdmNsb3dPQ3QzU1M5NFRtNDJRMjR6VERoQlVHOTZMMEozWmpSRmRqaERXaTluZWk5blRHWnZiUzgwYlRreU0wNHJWbXd3ZWk5bldDOXFjaTluVUM5emRuaDNLMm92ZWtRcmVGSnlhMmQxYkRVMVoxUlJaa0ptY2paVFUwZExPRUZOVlc5M1UzWnZlRkpzSzBKaVdHeFJkV3RPTlZGTWIxUmtlRk14T1haMVdUQTNaVXBQVURGVFVXdzNPVkJLVTNRMmFsVXZRV1ExYnk5dlRUQndiVEJGSzFaRE5sWkNjR281UTNwQlFrVnRha2RKVFhWUFVXOWllRFp0Y1cwNFJIQnhkRFZHS3pCUmNtdE5WMjlWWVM5V2VqVmhjRmhZVkhWMVZURXdSSEpzWkdSSGJUZ3daM1JLWjFKaFJGWTRSSHB6ZUN0bVExcFJhbW93VVhsclIyMUhTVTFPU0d0WldraEplSGhLVW1keFEyNUJUVVpQUlUxVmNtMHdPV3hMTlhSRk5XMUpkSGxRUjAxeFJXRm1hek42VTNCcUt6WjZOeTg0Wm1sNmFpc3hMMUU0VEdwRUwydG1WVFZHZFU0d1RqQjNaSElyVVM5a1MwcDVSVmhSVTBwMWN5dHRSSEJHWlZSdU1FOHdjaXRUTnl0TU55dHJkVzFtY0RrMVpWaFRjV055WWxOTFkzQk1OSFJQVmprME1rOXNkRFZKWmxKU05XVllVbmd2UjBWMmNpdHVVRzltYms5VU5rNTJjV3BqVm5aeGVXTjFTREJVWlZkc01FNHZha1F4ZHpKckx6UmFMekpZVDNCMk9WUnpiMFFyU0RaMVdua3JhR0UzUjFKMWNGRmxWV2syVVVoc1UzbHJhRFZXVEhBd1pWVnBOa3hJYkUxMWFIZzFXRXh3YVdWVlV6WldLM2wxZFdKdk5WaHlZVFI0ZVdGVVVtVlBXalptWVdZeVZreExTbXBzVTNsdFJUVlJjMjlrVDFaME5YWlBWbkpMVlZCeGVHdEhXREJtU0hwQmRuQTFMMnBTT0hkeU5sWnZiQzl1VTJScmFVNHdkbHBLYW1SSlQxTkZNMUZxVG1wRlNEQnpNVXRCZFdkWFNsVm1jRlpwV0VnMlZGbHNablpUYjJOMGRHOUxTMGswVUc5NFIwdDNiV3hOVlhJMlYyOU9OalZzYW1GdlExTk9UbWx3U25CVk1XOWFWVFpyWWxkb2JqVnVaa3hrUVRrNFRDOXNORGM0TjNkTFVtUkJVbmxyV0ZJMlkzRkdNSFZ1UzFKa1JGcDVkVmhSYURsUlRIQnVSMHNyWkZCaWVXcElLekp4VjJndk9IaFVObElyZVhVeWJVbGpjblJ2VWtoTE4yRlZlSGxvTW1kalkzSjBiekJ1U3pkaFpIQjVhREpyUjJOeWRHOXFia3RUTmxNMWVXMHlibVZWY2xjd2EweHNORzFyVm5Gd2JETXdRVGRzTWtzeWVsZ3hWSFZGU0RGV2RXTlFNR1JsVjA4d1NqaHZaRFZVSzFoTWJHbzVRM1E0ZWxoNVl5OXNTelZTVUc5eU5WaHFPRm92YzNKV09IUnhWREZYZVdwdVlXcG9MMnN5TjFGWEwwMVllRU42SzBGek9ESkNObFIyYlVjd2QzWkxUalZLVmt3dlJHUXJOREJ2UmpRM1pEUjNibnA0Vkd3NWJVNU5PWFZVVkhWSWNqZDJOMmRLYUdsQlJETmxRVWRyWmtGV1owaE5aVFU0VUdaT04zUTBaVk5VY0cweFNrWlpkV3AxWkZSeGQxWlRlV1ZYVTFsdmRITnBXRXhpUVdOa1NqUXlSRlJwUmxsVWJFOUplVGw1YlRaVmMzaFRaVWd4VldOdlRYSTRlVTFsVW5sbUx6VnVXblV2VGtwVlptOHZZMHhMTjNWMGJXZzNOWFZhYWpjNFJrRnRORUV3YTB0bFowVnlkMUZpWmxOSlUwaFNTVTF2UlU0d1FWVm9VMVYwUTJ0S01sRnZaWGxFUlhOQk1FRTJWRlpXVlVGV1lqUnhjamhtZEdOcWNITjBSbTFHTWxKNldEWTFlakUwU0VSWllsSndUa3BIUzA5YVRreHRkRXRWZERCNGNWQlNlVXd5ZEVveFpXVlBlRVoyVmpCMlQyWXlNbTV3TlROSVZqRkxlbEJtZFdWMlJFSk5aa3hGZDFWbFYwWjBLM2RwWXpOTU1raDZjRXhoT0RaTmJtcGtNa3BsVjNaM1owVTFhVFF2VVRWNmEzVjRRMEZsY0doVFkyazJibGhWUW1seGNYRnpSVUZJTVV0SlMxRmplVUZhUVhkQ1VrRnVSVlJGVFd0TFJVNUpNMGxoVFd0RFUzTmhUMjFrUm0xQmQwZEJXVXd4ZDJKd1dXaFFZbXBPTjNacVYycHdTbEo2ZVdWaFZ6RnlVelpqWTNwdVp6aEpVMlY1T0ZWVVJ6UmpkelphVkRjMVUwSjFZbVJMVW1GWk4yTTFTRTlyTDJJeldqSklUelp5TmpkYWNGY3lTemx0VjFONVdUSlhhVWs1VFRoc1RIWXJWa2RhT0hKRE1IcFdkREZTWW1WM0sxQnFRbmR2YVdacllXSnJjVEJLT1hGa1VXazNhRmhvVUdFMmNqazBlbVpqT1hCeWJESmpObVYxV201bFVrWTRUVUZDUWxOQlMxTkNOSEpyUTBkd1VtRjJWVFJ5YVhkS1FreFJURzFCUTBFM2QxbENXVVp3UTFGa2FrbEtVVWQwVmpKUE1tbDZiRWRtZW5OcFduSkViSFI2ZEhCc1pUbG9LMkp1VkRBNFN6SXpOSFJUWmsxdFkzbDFSQzh2VERaMGJsWnlPUzlEU0dvdkt5dHVkRE00YkZoM1FYaE9VM0l5V2tsdmMwOXZaRWREVVZCeldFSklSMHB5YldKSVFrVkZRVmhCVEVWa2NIY3dNamd4YldzMlVub3hPR1pUT1c1Q1IwaFRZVk5EVEU5Q09GQkVURGh0WkdaUWFtdzFjbWRyVG1zMVQweHBOSFIyTmpGNmRWSlFPVU12YkhZd1ExcGpkbmQ2VW1SSU5XWjNVM0ZuUjNSbmFVTTRRakY1UWtacU5YbGpkbEEwVEN0Uk56bE1lVWszZWpoVE5GaDVUbWREVTBac05WQjVObVExSzJKbVNqbGllRGcyU0VsMmFXWk1ObkF5WnpWblZXUnpkMG81TnpaVE0wdGpaVmRCVW5GVlQydEROREJwYUhOaGJFbEJTVVYwYkZGTlUxbEpOMk5LYTFwWFYyeHZPVWxsVFRobVEwcHdhME5aTUROaU1EWnVRMUJ5VWtodmJsRTFLMUppWTNVemJqY3laRTEwYlhwUE0ySXlTamxXTjNaNWQyaGxVMG9yTmpncllYSk5WM1E0UkhaNE9YQmhVbkkzVEZKQ1dYVmFkMjFqWmtwUVdVbFpRVGxEY0dSQ1FXdzBVRlZSWjFaWmFVTnJSVTFuVFVkWk1rVlNkMFpSZFhORGQwMURSVk5HTDJkRGFVRnhUMGR0ZUZkQlNWZG1NREE0UzNSR1RscHpNMkVyVWxwVU5URkhaSE5OZEZFeVJtVjVibVUyY214Uk1WQllPRkJuWld4MlNHaHFTMWd6YTBSMk9FVm9ablpOWkhFMk5HMVNhRFZMTHpsbWFqZGlPVFk1S3l0aUszcHpPREZaSzJwQmJuSnVWbXRRT0ZoMmJYRkxjWGxyUVRSb1RXVndjbWxoUVZWRFdqUjJXV0ZsUVhFd1NEQkNPRGxMYkVnd0wxVmpiakp6UVN0Q1pVOTZPVkF2Y1hWTUwwbE9RVzR4UVVGUmFGaDNTM1JIUTBWWGJHbzRaMGRhT1ZOS2JqSjFTV3hYWjNwc1FWZG5UbWhCZDJkSlNXaEliM05rWldwS1NYWlRRbk5wWjI5V2RHOUZOMUUyYmxoWlVHRk1WelpLWkVKd1pGWk5ObGhYTVU1SmFEZDNUMlV3Tm04NE5XOU5WblpOU21kUVJpOUJZekJOU1ZOU1ZFdHZkRzE2V2tnMVJYcFpSRzB4ZERKaVdXa3pRVzFQUlVsdlVGZGhUMUkyV1ZwRVdUbEpaakIyV0Uwdk5WTTBPR2xtYWpaaWFsaGFZazgyYjNaTGIyTlVlV0pJVjNoUVFtWXphVTh2VUM5VFVtSTJOMUJpT0VnMksyWnVUWGN2TUhoUGN6QnNZMXBMTUhobGJEWlZNakZXZDJacFduVk9WbGxaWlVWTVprRTFaMUZRYms5RVVYSmliRkpMTlhSUmIzbFZOMEZIWjNOQmNXcFdlVE56Y1VSVlUzSlJOREZsY1RaRlJuTnVObkJCZGxkNVpuTnliSEZ4YWxFMlZuZGxiRFptUTFkbFIydEZOMlJoZWtaWFZrcFpRM0prWjBwWmVVVlJlVEpVVTI1a05HMU5XRUZpYUhaNkx6SXJSVkZ0VFRjeWJrUktOMUJhVDNabVpEZEZhbVV5WWxoTWNscDFMekIzVjJOV2F6UnBha3NyUVZGRVpWRldZMVk0VGtZek1FWlZkSGRtWlZCRlNVNWhZVWxWY3pOTlVHaDFPREZvU2pCUlNVbG9TMEpGVFVFeU1VOXpZVlZoZFZoamNsTkdVVVZTYUVVeVozQkZUbmRGY1VWU1NrRTVTVzFoUzNCUk1XMXVhMFJrUkhCcVltODVOV2R4YVU0MlJGZHhUbVpUUVhBeGVIbFpVVlYwY1d4TmNIRTBkVWhuWmtsYVJGQmFkWFJoTmpGdVVYRXlaRXhqTVVaQlpuSTBNMVJTV1dOWlVrdFFVbU5EVW5GTFdVRlFPRlZVVjJ0Vk4xSlNXVFZGVFhaVVNrWTNkSE55VmxkcFMyb3dXRTU2YUdsdWNrRnROMW8xVldkUVNWRjFlbXhvU0dwSFRrNU1VWEZtY25OMlVIUkxXQzh2VFZac1QwaGlOalpMTWtkd2RrcHNlbFpYUjNNelZuUnNRMmxKVjBsTVlYRlRVVXcxTkRaMmFGZFFaMUJCZFUxdlRXWkdPRFZCYWtoSGVYSlNaMU5qYkdOM2QzVnBTV1JKYVZKNFVsVlJlRmxSZDBOV1FVTlVaR0UyTmk4NU4xbFFNVEZKVFdwTk9EQXJZMjQ1V0RNd2FsZ3ZSeXRGVFhsMmFrbDBhbFZ1VTBNMFNEaGlSRkZCVVV4SlRVUlFlSEZIVGpKUllrVkVhVWxuUldOQlRXOVhSWE5UUTJ0TE0wMVBiRlpRUjFoc1oydEVNa1pPT0ZOWlYzQlNjMWxuYVdaVE1reHphMWxEUVZGVGVsSnRaWFpTT0hCTlFraHZhRmRXT1daNE1WQTBNbGg2YlRCblpsbElVa050TkVGNmVHdHNOSGRuVDJGRVRXMUtURkJXU1U5dFkyZDVMM1ZwVlhObE0ya3JRbk4yYW14NE9GcFBlbWxKT0U1dmRXdG5aa2swT1dOSVNDOXJOR3BEYmpKaUt6WXZRbVU0YkdVMVZFTmplVkZXYkhCRlNrbDVNMmxaYWtsS1dXVlBRMVJoZWtaVmJteDZVbTlPWjAxaGMwMVNiakYwVERWcldXWlBTME5hYlRCWVpFRjNPWEY1YVU5WlNYVjROR0ZxY0RjMEswWkhlRzlEU0RSTE5qYzNNM1ptZHpOMmRFRlJRMFJaTUVKblNVNW1UWGxJT0Vzek5FcG1TVVY0TlU1VWMxRnNPRTFKU1VGWFkzSm1TMGh6VkdSVE4wdEZXVkZKZFhnMk5ubFVOek5NYm5GU1NpOUxMMUZ0Wml0V05uazVaMlEyVjJGSWMzWkNUMGR0YVZWbWFrWk5PREZzVkhGRFVtb3hPV2d3UVZwcWFXaHRTalp4TUdoRFJsWnNhV2xEVDNsa1RVWmpVbWRoUkdSUk1VMWtXa05ZZFVwQmFtNDRNMGRpUm1sdmRFdEJRMEZaT0ZCMmIwMUZlSEUwZEZSRldGQnhiamc1Wlc1ek5VZHpaWEZXYkdaemExSm1hMWQ1UldSc1MxZzJlalZ5TmpJNGVHNVhOalJ5VWpOMkwyTjFaV3d4WW1OaE16ZFVUMVp3THpNM0wyNW1OalpQT1RFelVHSllkM2xNTlVnMllqazVhbmwzT0Rsa1VsUTJTMEZpUTIxSWVUaG9jM0IyTjBKRFNUSlRWV3hPVGtkRFNHODViMmxCUTNGUlkybG5UVVJKU1dkRmEyMDBlRkIzUkRabmFubFhaelZXVUN0b1JDOVBPRU5pUmpKVGJIZHhUbk12TUZWVWIzVnRWSEJEYW10alZHcHNaVVZLUjJOQlkwdFBaM295UXpCMFEzRm1aR3NyYkZkeWNubDNNVEI2TjJKMmJtUjZiMjVMZUdOeGRXbHpZakp2WkVoUGFtRXdNMngzWkd0T1ZITmhZek13ZEV0bFZGTmtOMUJoTm0xdFV6VnNNVlJuZW1GNGVFcENiMDB4WkdKSFlYQk5aVnBZYUhwalptTlNTVnA1UzBKblkyOVllVE5SZGtOWFFVZFFPVkpFUm1nMllXVk1VMWR5YXpkaFowcEpaVUpaTUd0VlNIQkhSMXBPUjNrMlVTOTFjbVJGYTFsMVFUSlphMHN4VDI1clZsTlFTMk4yZFVWTGNrSTJiRlJUUVVSSVpqbFVOWEpMWkU1WGFVUlJNa0puU1ZWbGIxbGFjMUV4ZFhGS1ZrRm1iMHRMYTNoWEwzaDFVbmxwVjFSVVJucGhXa3Q1ZFhWa1JWVjRSRlZoWVdzeVRtZHBVVFpaZEhvdmRtMDVSRGM0TDNRMk9GQkZZa1o0ZGtWNFpqTTRObTFyYUVWWkwwWTBOMEpsYWxjd2RHbGpVMUExVjNZM1pIRXZNM2c0WlZKTFpucDVXRGRIZFhaaE5rUkZkVlJIVkRNeGMyOVVTWGhtUzFGVVR6Y3ZWVVl2VUcxb1JteEpUV1I2WVV0UE1uWkpiMUpsU1RKR1JIWmpORzlUVVZGU1NubEliV1pWZVhKUk1HdFhNVkZhVTJsb2MzTXpabEpPWXpaT1JVbENSVVJvVVc1aWVFSTRUblZsUlhNeFdWbHRTak1yTWtaWGMwUnlURU54TW5WcWNVRjFiRkprVFdoSGFtc3ZTemMyYVVwTlIwRTRibTFJYWtWVlNsTk9XSHB1TTNOd1RubFdTRzlJYURkUFJVMUZjekp2WlVadmR5czVNekZDTTNSUWJrSnRVSEJsU1hKUFlrZHNkMlUzY25KVlNtRXhUSGx3ZG5kQ1dEZFRNbTlVTkdOeWFtNWlLMWRCYlRJNU9ESldkRTUzWWtZNWRYQlVOSHBGVWl0a00zcDJZM1ZVZGl0UlJIQXhZVTByY21sVGRsWTJTMWRGZGxSWlpYcHNaak5RVmpka1Z6bG1ZMEpaUkhkaU5WTlhXRTB4Y0dsV1ZYaEJZV1JoUzJnd2VFVmFNa1JWTlVZdlN6RkJVRlprTnlzeFQxaDZLMFpQU3pRNGNua3JhREEwTm1KVGVpdHBTMGhMYkRGS01rUkhTbGxQVEhjMlptMUVNR05YUWpZdmMwOWtiaTkxTTI1MUwwOTRVemcyWmpOeU9UTXJkRWQ0UVhVd1NEZGxjMVZOTDBSblpuSjRPRWN4Y1VWVVlYZFVSVlFyWlV3eFozZDJVbWN2VDI1RU9EaGxTRkJ5U3k5bGRuWjJlV3MwT1U0eE56Y3ZNMk5EUkhaMlkwTXplR3RWTjNjNEwwNTFNRkZ2YVVsUFdrMVdVbFZIZGxsU2FsQnZPR0pTVW1oc2VYYzJOR2d6UWtOTFUwRnFLMWRoWmpKallrOVBObGg2VjFwdGVVOHlaVU5GYm5odWJIQktPRzFVVEhOVFRVeHdiRUpOU2l0aWRsUjJWek5xU2pBclQxb3pjVzVvZVROWE5HTkxkazUyY2t4aGNqSXlaRk5XYkZocVJXeFdNWEZRUkVFMFpXRldNVXB0YkdKTlMyWndhbUZKYW1oaFVuaFBhME5CV2tGQlVGUmxNRUZuU1U5M1VtdFhaMnRuYzBOVlZFVkdaMEZCZEUxMlMxWldSRXAzYTAxclJXVTNXa1ZOYmxVeVIzbFJlRFJsVDAxcVNEbHVORXROV1M4NWNrY3hhak01T0ZSaldDOU1lVGxRTkU4eGQwb3hVMEpUWVcxdmIzWXlUekIxVEhKaGNFTjVSVzFtWWpGbk16RlRNbVJqT0VaVk0wSk5TVTR2WWxkMk9EQjNiSEJLWnk5WVRuWlRUVWgzZFhkUFpqTkllVk5KYVhsQ1FWRlFSVU5KVFVsbE1YWTRVMUY0V0ZOWFdFaEhTMlJDWlhNeFUwMUhZMlIyTDAxbWNVdG9MeTh4TlZSbWJsbGpUR1JPU25WNFkwWkxWbWRvZVZaWlFVUnZieXQ1U20xSk5VNDNVRmd4ZDJWRU9VdHhiMFIzVkhFeVlWaERNRmhRTlZCTGJtNTBTVGN5ZDNkbE9Xa3lNRUZ0UTNkaU1tOXNjRGROUlZoaUsxUlFNMmxJYTI1Mk1GRm1PVTVHZWpObmFtSldZMEppYjJoQ2FqbEpTbTlvV1d4UldsRXlhWGh2U3pGWlpUVm9jVXBTTlN0WWVGWkdXVU5sUjB0bFlVTm9VVFpoTlRBeVUza3djbFJIYlc4dk1EZHVjR1JOZUdOeloyVlFWRFo0ZEU1TVpERXpabVJRY2tGeVJFbDNVR1J6TDAxUFRsQktVSHB6VFc0M01URm1kbVptU1V4bVZtZzRLMk1yTVVSeWVuUTVOMkYyTDNaelltNXhNa1ZZU1U5M1IwbEVZbmxHVDJwQmNEZHBXbGhwY2tNeVFscGtNVWQzVTJSTk5rTktiWEZYVFhwRk9DdDFOamc0Y2pkWVNVSjNObVJCYVM4emJuaDNiRFJ4Y21WUlJHbHZSRUZJU1dFMVJVdHBjMGxWWWxodVkzVnhhbUZ2Vm0xVU5ubFhZbVZ3Wld0MU1HeFhNVkZSUkdsS1ZGRnpUREk0U0hwdU1HMUNkRXQwZVZaaGFESjFUM1ZET0dWWE5XZE1aREI1TTNSek0yOWpWMXBtVUdZclQzaGtjV1ppV0ZvMmNHSjFaRWRRZERSTE56Qm5ZVGQxWmxRemVHMTFibTFuY2pRNVVXWklkbkF6VDNCbmVqWnNNaXN5YVZrd1pESnJSRlZNVFdsaFpFaEpRa1ZXTUV0VFJrbHRkR0pDTTFWNGNVeG9ZVWw0ZEdSVlkxcHZlVEJVVDAxMGJreENaREI1V0Nzck1YSXZjMGhITlhCSWVIUlRUMnBQY0c1ek4wY3JhemQ2YzNabVJWWk9aRXR3Y210dE0yUjBlbVpOUXpSTlFtNVFjSEp5WVRKd1ZGWTVkV0pIT1cxUmN6SnFMMWh6YVdaVVRYVjFlVWhsYW5KWE1qTnNZMnhOVEhaWVZsSlhjV1ZJUTNObmNYSlZXV3RMUTBGUmEzQk5iRU5uWlVOVFIwRkVSVXhOVkZSS1NuQkdlV05PUW1kQ1JHaGhSME5PZEVOaWNXWTJhbkJoWjA1YU9FbGFWRXAxV2xKRk9ETkxXamRNWm5ocWJrUjVkM1JpV0hwdGNsUXpORzVtZW5kblltTnBXV2xxTDFFME5uSkxXVzl5VEhnd2RuZElRbXhSZUZOeVMyZFZRbXRMUVVWQmRFNVpOa2xuWTFZeVUwcE5aVXgwZFVGeFFYWTVjSE16V1RSeVZsTmhNekJ0VjFWeUsycGhNM28wV2pkQmFWQndVSEF6T1ZkWVNEQjNabWxsUTFRdldqRmtjWEpJT0RFeldHUk9lblJuVlcxMlIwZzFkbkUyWXpVd1NqTkdhamxYUnpOWWEyWTNRakF2TUUxSU1FNHdabXhITm14bk5tOWFkRlJVWjBkNGFtRlhXRU42VW5SRlFVeEpjRGhhVFd0eGFXWktObEZTZDFacWRrUm1hVGwwV1ZjcmF6QnRkbEp5Y0ZNeE1EVXhWbGRNV0hSU0syeFlTamwyTTNZdlpuTTBiMDFQS3pCb09UY3pjRGMzTkc1Q2NuRnVTak4xTjNCdFV6ZHFlVTB6VkhnMUt6WTBUbnAyVDB3dlREWmxibVUyVHpRdk1uSXdOakowYXpGdWRYWnpiMFJPUVRKQlZrRTNTSGs1V1d0dk1VbG9URTFCWWpGVVEydzFRVlo2YzI1R00xSXhja1JhYlU1RlN6ZG9kR2RxWWxwYWMwOUZVSE14TmpGME5IWTFhaXRpT0doVU9IcG1iRmd2TDBzNUswaHJXSFJZVVVsQ1pVTnVUV1JvWkd0TVExVnFSR3RPU25Zd2VFSlNkMHA1VFVGdmFWVnFjRk5TUlZNeFpHbG9TVnBaVjJOaGIwTmFaR3N5Y0hFNFExWTRPR1Z2VVRkalRGUnZTa3RTU3pkNE9DczROakZzUjBkcEwwOHZabTUxYTJRMmNXcE1kRUl4VlN0bk5qRmFaVzgzYUc1MlVHcExWamNyTVV0d2RuQTNWek4wYmxvemNqWmFiVlExYWlzNFNHVXpiRmR1WW1KSmJIWmlkV3hhV0dVMldtUk1jVmhQZG5SUVpHbFBhakptY1VkMGRYcFVXRmRhTDBSMFIwODNUVlJGT1cxMWEyWk1NWFJGVDFreVdUaEZRa0Z4V1VoUmFVMXBhV2QzTkc1clNVTkdSM0JDY1VkTk1XaEdNbWhQY21wTlYyRTJlV1JKTVRWRlNrcFBWVmRWZVhsbU9DdEpSMWd5U25rMWNIUTJUbXB5TlZSM2VtWmpkVkJrZERGNk5IaE9aRE5rVG5wdVVrNHljeloySzB3eVpHRjZNMFJTZW5CbVQxWk9UaTk2ZEV4V1ZqUmFjbmx5VUZSbVpUQmpNekpGVWtOV1dpdEVVSGRCUWs5eFJrMVRVbVJXZEhNeGR6Rk5hRzlDYWtVMmFuY3lUR2xpU1ZKMFRHbG5hbmR0VVc1c2JFczRZMFpsVW5RclVYWllkVVY1VWs5WFZtWkdkM1pIT1dSaVVtTm5iMFZEVWpOaldEWXphalZPVVVGU1JuZENjMEpvTkN0UFN6STRXVlowZGtoVk1IUnBWRnBqZVRGaVNIcDZZeTl1Y3pGVFVrbG9hMEpFWkZWelFuRkhORnBwTWxacFpHdHJhWGRZZDJSbWFWQXZSMFUxWmk5a1ZHVlVNbnBqWkZGRlNYSm1kRUpGYzFRdk5HNXdaSEpTU1VoM2FGaGhkRnBKZVRKWmJWUlBNbWt5Vm5OeFowcGFWa3B6ZVRkNGIxVlBTR1p1WW05RlVFTjRjalpXYW1vdlMzaEtZVGRZVTJock5uWkVjakpVVURSRWRFaE1jVVY0YzFoTWJYZzRVV3d5Ym1oamRDOUpWMkpQV2l0eGFGUlZhMFJuWjBGdmJrRmtRbkJRS3k5QlFVRkxPVzFaVVhoU1MyaERiMVpET1dGSE5tMUxMMkZWYzNOSlZtSmhNWHBRZUd4cU4xSmxORlF4VlVweVVraElSMWR2ZG1WVGNrTmpaV296V20xbGIxbE5NMGg0YkdOVE4yMXdZMU16YXpKTVJGY3hXRVZGWmpkc2JIQk9SV1pVYzJKeGMydE9aRWNyWmxNck4wb3hNMkpWWldRelZYazNVRGxWSzFKdlNEWmFOR1p3TTFCMWFFSkljMjF1YWxWUloxZzBlV2RFY1VKQmRXbHNSVlZhY1dKQkx6aFhhR3B2VmxGelMza3dWalpPVjBONFZWY3haRkZPVmxvMWJFZEpSWFEwUWtSVFlVRnBNRUZ1VlRWWldWcGlVR2RSYlZGYVpUSkxRV0pXWVZKVWRGbzJUSFJzTlhwaGFUSkxhekpvUWpOaFNsZHROMFJGYURac1VGbGFWV000WVRZelNIcDJPV1ZaVEc4d1FVOXJibEZpWmpjeE9YVlhkRzFFTVdKaldHUXhRVmhUVG1SQk16TTVNVWRGWkdOVWFsVlhjM05GYnpsWU5raDNjVVZUY3pNek9GbFVPVVpaYzJNeFRERnVTa3RDWkVsdmRreFdkR0l4Vm1WUmVYTndZbkZtTTFCNmJ6bE9XRFZwV25adVJXZE5WbXB5VkcxblExaFZhMnhPYkVSMlZESm9iSGhoT1hneU5uQjBjV1l5WkM5Vll6WlhkemhQWkhKVFlXMHhURzFvY0VGeU1taHFNRWQxWm1aalVFdzBaVEZoYmxoeVVqTTNUSEZDTm5ORVVYbHRVbkYwVTJOaFluWTVPR1JXVmpFd05qZE5lVkJJVDNWUlkxZGtPVGd5V1hNd1dpOXFRMlppWTJwTlpHcFNhekZFTUdKdmNtUjRlV2xPYTNGSlUyc3diVkpCYTFkQ1QyZDVTVUYyVVRWNmRtbHZTbWhKZEdKWGFUSkJkR3hLWWxObGRrdFVUbnB0Y1d4b1JYQnRXVk54TlVObk5FMXZlV1pxWmpGdEsxTndibmt6T1RSdmJGSm5lWGRpVW5RM09GcDJURVZ3VTBWeFpFVmthbk5sWjNaQlZVUm5Ublp2TkVoaE9FdHVRa0pyT0hGbFRVVm9LMUpuUTFGVFUxcFljM1ZoUm1WU2JFVnpVMjV3ZFd3NWExVTRURzFETjNGRVJGcHVTMkZ1WmxWb1RHUmxkVlYxVnpoSmJVcFdZbGN2TWpSdVVIWlFNVGt6U2s1WVl6QmtLelJQWmk5eWNIZGxTSEkzTTNnemRqZHpjVEEyVWtvME4wNUtTMlJ6YkhOWWRYcFFOVTltUkdwVWRsQnhXaTlPT1RGT01Yb3ZVRk0xZW5SRVRXWkNaR1ZDY1ZRdlJUUjZZbTlMVkRRME1ubDZjME13TlhwU1dsaHRRWFJDY1ZCeGNISlRNWFJrVWtoTU5VTnlaR3h1V0ZKMWRucHlXRE51U0ZRdmNHdE9PWGRHU0hWeFdtcFFRbmRrWWpaMGRIUjVNelZxYTNkaVRqa3JlWE4yZVZkSk1VNWthbUpZTVRBclkwZG9jemxPVGs1a1NHZ3pXVll2VW10MGJrZ3ZZbTFQVWpaQ1ZGVnBSV3hLUldwa1JtZE9VblJ6VW14ek9FcExhMjlMVjBscWJYbHhOREJ6ZURjek1WWjNiemN4ZG1kNmRsSnBhRFl3Vm1VME4zbDNjMEY1VFdSNU1EZEZUVEJMZHpCR1J6TmxTbGd5VjJzMmQyeFNja3hoY0dOc2RFdHNabUZVU1ZWd1duRkxiRGszTXpRemRucElkbll4ZEZCRlEyVlhVSFpWTW1walVFRm9WRGRFZEVNclpGTndWak4wTmpOd1JYRk1RVXhUUTJwMlYzRXdZbXhMZG1STVdqUjZMMjFJTTI0eVYyUTFhaTlvT1ZsbU5URXdhbE5LTUdwalMwMTVhSEl3VWtWUmMwZHlRVE4wY1hoVmRWUm5XV2h3UkZwSGIzWkdObHBTTTFocGMyMUlWRXhrYTFkUWRqRXlZemQxYlRkalRUY3dZek4xTDBsS1RFdHFiMkp0Y0dwME5GZ3ZUSHB5YzBkTVkyVlBkbkU0ZEhOUGFpOVRNREZxWWs1dVFuTTBMMlpDVFhZeWRteHhhakF6T1ZKWVozUklRV05LY0ZGdlNVbG5RMmxvYzBWSFdYZGhhVlJCVGpRM2JUUlZMeXRNYlVOdFkyMHpPRFJtVUdkUU1VWk1kMEYzZWxSUk9VOWFMek56UnpaNFJVRm5jbnBRYVVKSlUwVlZRbUZCYTI1TFZHZHFTVXBFYm1kcWFpOWxibFZ0YWpnNVVtcDRTM2R4VVRWR1RXMVBSRVJFSzJNeldDOU5ZV1pCTVZwMlpsUnpaMUZPUlZCQlFVbHBlRkl6Vm1aNk9EQlNNMFl4VVRkTlkxcHRaSE41WTIxSFUzSmphekZuUm14a1dWbEdVWEpNVWtkak5sUTRjREptYmxSRGREbGxVbFJYV2tkT2RUZ3JXVUozWkhGTGRGQkVUVGRvVmk5UFRrWTRObFV4Y25GWWVqVm1NbkkxWTBwamJuTkRVVlJoUlV0Q1FYVmpObkJKYzBwcGRFVnBUV2huYlhsUE1FczJkR0ZrYlVzdkwycHdPR016VGpjMU16a3JOeTluY1dZek5UTXhSbU12UW5jNUx6Vmlka3QyVVhJd1dEUnNRME54SzI1V2VXWkZhMmh0VFRVd2QzaDVibVJwV25NMFVtOXVVREozSzFaeVdYTlVkMnR5UVZaelIyMW5WR3hGUVVRMGJETnZTRVJpYmxwM2RIbFpiRnAwVTBGc1RGZDVUbGR1VG5sclNrVnBRMk5UVkc1T2F6YzFTRTVEYTBWNVNFWXpabFE0ZVc1cVMyVkpWR3RRTWpBdmJXUlVhbkZ4V1M5b1UzVnNORkF4TlhVM09EUm1lRmxZTTFGVGNEaEJXbVZPWVhkTE9UUlNUSGQ1WVcxSVYxUnlUMFF5TlhJMWJVaEhSMWg2Y0dGUVQwZDNNQ3RGVHk5aGVGTktiWE55ZG5oVFRUbEZSVWhUYm5aTlkxRnJMMVIzWmpaeVRWcG9UVzV1ZW5KYWVDdGpNM0pXVVhNNVEwWllhVFZ3WVZGclpsYzVVbEJWZDIxQlNsQllOVWhJV1RKTlRFZDVNVk5RU0ZoWFR6Y3hLMlI1Vm5rNVpEa3ZWbkpoTVZnM2VITm1TRGgxVG1vME1rNUhlbVpsYzNKaU1teG5NekYyZG1FMmF6bGxLeXQyVlc1eU0yNHhSbklyY2tGWGVFMVVjVkZxUVhoTFFtaDNTVlY1VVdWSWREaEtiMDVTZEhSR1ZGcDZURXRTYUM5ek5sTjVPVmR6YTNVME5HODViUzl3UWpkWVNUbFBNMkl2Tml0b00yeGplVkpRWXpNMWNpOVFWalowWld4NFZtMU9MMUJaWWxwRFJrWktTMDE2VDA0d00xZFZRMEZIUWpWT2FuRnFjR0pyWkU5aWRVeGtiMVJpV1RGNFluRkpSMkZwVjFWSFdHTjFkM2RDYUM5dmNIbEdTa05YV2tSTFZIazBXV0k1ZUZwNE9GbDVlRnBpVEZvM1ZrZDRaMlpvU1dOcFdUbFlNVVpEVTNZM1pubEhhRFpLU0dGdFpIaDBaWFpCVmk5a1RERlRVWGhDUmt4UGNYUkhlVUpLTTA5NVVXNVRSRWxVTUZVd1JXcGhZbkpsZDFVd2QyeGhTWGRMYWtOUmVFUlZiRWhHU2prM1l5dEZkWFoxV0dRMU9EWmtibW9yV0daa1IzUm1VamRpTDFadWVqTlRXSFlyYlhocVRTODBaemhqWkROcGJXSTNiWEJuUjFZMWF6UllLMFpuWkRReVRYVndNRUpGU1VwbmNuZDNkRUZQVWpscWFHOVhSMGRQWkdveUt6TXpOVmhUVTFseFdtZDJkR1JGWm01dFlsbzRWU3RyTUhnelZGRTFNRlJNWld4c00zQjZlRGd4VEd4U01rb3JjbHB2VDNSVkt6RTVSekV6YlhSamVXdFdZVTkwZGxOcVpqRXJaRE5MTmt4VWJsaE5kR3RrUkU1Wk1uaHlNREZZY1dWdVlsYzVXRE14U1V4SlVHWjZjRGRuVFZGek9XNTVZMFJFTWtaNVVscHhiMU5DZVdOWWFreFNVbkp2UkRSWFdIb3ljeXRUY1dkM1kzWjJZVE5qVm0xQmRUbHpSVXBTUkcxSldtcENXa2t4V1ZaU1JUZE1lVzlxWVZvNE9YWkVibVF4Ukhnckt6VmFhbmgzYTNaNGMyWjZNQ3QwZW1OUGJuTXJaVVJqWjJ3MVNFZFBRaTh5UzNFM2VXTXhkMmQyZHpWMWFHbHdVa1JwUlZOUGRrMXhhbFpaZG5aUWNrMTZOV0p2TUdFeU1FbzFTVWN2VUUxc1luUm1NRUZLUW5BeWNHVk1NSGxMT1VsQmFrRjVRMDFDUzAxSWNrMUVkblJTVm5KRlQzVlVPWEZvTUV4VVRYZFRTWEEzYkVodk1tZHRaWFZpTVhkbmIxbFFka0kwTDA0M1FrbHNiemx6ZWxRd1kySndaV05CVURWNVptUXhhM0UzUm1ncmJrSlBUMHA1ZFhGeFZVZzFVVE5TWms1QlMxTkViamxYVVRScVpHOUtXRlptY1VKWlFqVkNkVkpDVTFaM2MyaFRUME5GVEVWTGNWTndPRU54VVdwMWRHWTVjMEl4V0M5NmF6bGlabVprZERCdU1FcG9MMEp2TDJndlFpOHJhMUE0WjBaT1dYWlVablpWVFdwd1NIVjRVMUYzYkZKaFp6TmhhMUJZU1UxWlZuRm5aVEZ3U1ZjdlJuWjZNM295T0U5bGRYVlpPVTlrTVM4clpESnFSbVFyV1M5Q1lXcEhTMjVCTldkamIyZHBSVlJSU1VGTVNtTlJUV1IzZHpOMGNtMVVPRXMwWjB3eFN6TlBWbWhVZEVkTFdqaEVPRTFhTkhOekwycDFVRFZPVERJclVVbzJXWFYyVkc1MFZXeFRWbUpFT1dad1VHRjZVQ3RDYm1kclduRndWV2RGU2taeWFESlhNamg1TUdKNlkyeHpWbEJVTmpWb0wzWjJXbVZoVkRWamRsaGlVRTFpVTNKVk4zUnlMeTgzUnpkVGNHaEhMMGMzS3pkQllTdDFSMEkwVW1abk9FaG1kRXBRYW1FeFdsRkxlVzl5VjJrMVlrZEViRTU1VDFWdlVYbzNlbEVySzJOa056ZDJibXBJWTNackwyMVdNVGQyZEhkb1psUlRPV2h3U1dORkt5dEVNVVpzTTFsQ00wMXFXVTh4ZDBWM1VtUldjMWxVZVZGQ2VHdHJkVWRwVHpNM2FqTXpjekV2TWxCa1VIVlFTM0pZSzBoU0wwdHpRbTlsWW5sRVJrVjFkbmd3UldsTVR5c3Zjbkk1Ylc1WWJIQkZaWFZvY21jcmMweEVRVFV2U2t0dmRVTTNlVWhrY0d4VFFuWmlNazlHWkhoS1JYWkhOV0pSTUhscmJsUnFOakpCZG5aS09ISnlXSE5rY0RSb05UWlVaMVpwUVVFdlJUUlVZa1poVlVsclZsRnBiMUpSYmpoUWNVdFNXRTE2V0d4c1RUbFRVMFZCTkVWRlNYaFdRM1JuVVd0MFlXcFVRMmxwZVhFd2NGSllhVlEyTTBOMFFsaDJTalkwZDJ4UlNWSmhVMDlLVEhWWWQzVnBUbVV5VUdoSlFqTmFZbGxzUm5GUlNHSldWRXBuVHpoemRIQXpZVXRtT0c5UGN6VnJhWGhWY3k5bFlWSTVaakpoZVVrMWRYTXlVbk5NU2trMU1XWklTM1JqSzBkeFpHeGtka3RFTTFWclZFbDFlbkprVUhoblMxSTViV0V2WVRrMFpDOXVhaXN3V1dJeWFHVTJjRU51VGpsaVluaFNOV1JGY2pOTE56QkdValJxWkVaNWVIbFRhV2N4TUU1RloxUkJVazFqWkRoSGJVMXhkME0wYjJoQldVNWpRazF4Y2tWcFJVWktlVkoyYVhWMlowSmllRGt5VWtZMGRrbGhRbVJDY1hOUlEzZFhRMHRZWjNoSE5tMUdXRzB6Y1ZGRk0yTktiRlZWVjFKMGRrdEJTWFpVTTNVNVpsaHVVazU0TlZkRU1qSnZNV3N2TkVKVGNUVm9jM1pSYldvek1URklNM1I1WTJSM1YxWmpMMDh6TTJKME9GbElOek5aZEZReFdUTTRTVUZIUjBwM2JVdHJOaXRrYVdaTlZuVXdNbTB6TmtWalJESXZWV3BHZW1od1owVlRRalpNWVhGdVJWSkdZVEJyTVN0MVdrNU1lbWxYVnpOamRXVjVaRGNyTlZoMWRXNWlhbk4yTTI5cVVFY3JPRGRqT0c5RGFtaDNZVmMxSzJZeVNsZEhRbTlFUVdkTk1EZEdNVWhKT1N0b2EyTmtRMjFEZWxWcWVGZEpiRWs0Vld0VlFYbDJSRWsxTmxCcFJWSnJaVTlrUmxFNFZtbGpTM1ZNVDJWUFZHVlhielZJWlRSNmFEQldTRk5HYWtwYWRHcHRNamR2Tkc1NmJXSllLM2h6UnpkbGRuSXhjMGRITlZkb1ZsWTBUWGxRVGxweWRsQXZPQzlFYmtaaEx5OUlOV3QwVG5Sak4wRmpjemxRV0dSWFRIVTJabGRCUVdwTlkzUTNUWEpJYTBJMlJrUmhXa1ZVVVVsclIxTlplRVZ0VVVNNGJVOVNWVTVHTTNobU9EbHROVmhMTmtGTE1FTk9SSFJXWTJRMGFrdFpZMkZ1VDFFM1RGSmFhMFZ1Tld4TldFVk1LMjl0UnpCWmVrUmFSbUkwY1d0NmRsSXdXRlpwY2s5a1VYaDVSbWh4VEd3elVsQnpiblExU25KVmMwdEtiMXAxYldRNU1tOWFSVGRPZFZsaFZWbGhZa1J1VDJZMmVHb3JRMGN2Y1ZaWVoyUnhXbE5sWkVoTmJuQlZTM1ZXVmpCRFYyMVhSRXBMUzFsSFFWUnhOVWxzY0RCdVowUlJVbkUyU1cxbUszbzJjV3hPUWtSU01uSnpSVlpXV2trd00zZEdUMlY2ZVVOYU1uWm1LMDFaV0RWa09YZzBjMU5LTldWSUsyUkdUMkZ1UVRjME1taGllV3A1TUhVMGRsUkRLMFZwYm1Fd09HaHdiUzg0WTNCSlNXWk1MMFkwUmpVeFpHRnpjMHRDUjJac2VFbE1RMVpHUkZSV1J6aFNRMmxXYkVSNlVsbGFRV3RXWVdOYWJVcEJjRkZXUTJvM2RHbzFOR1EyVm1Kd1NIVm9lR2wzTmtGNFpVVmFOaTh6Y1VwVE5WaGhOMWtyTlc4elIzRktlREF4WVV0eFVUVmxNR3R0VlRRMU5sbzBZVXBGY2t0c1prY3ZPRmxIU2xoMFlrOHpkbTUxZEVrM2RXMTZSRk4yV0RNcmVqQnRhM2hrTVZWeVFYbFFaSFF3YWl0YVRIcGFOU3N3TlhRMVpuVnNSMUZ6V0ROUUsycENZa1EwWTBGUWRtVklSak5pVDJNM2JsQlhVa2w0T0hveFRqbHBhVUZDVmtsTlMzSTRVVlJEY1dwNU1rbG5NWGR3VjBweVNteGlRMHB1SzFGeFpFSnVNSFp5ZVdGWVJqbG1XR1V4VG13eE9IQmhiUzlJT0c5U05pOU9abmhzY2xKMmNuVjZTQ3RFTkM5blYwRlFkM1k0YW10M1owSXdLMDEyUjI5dWNVWlBlR2wxUzNSRFVuQnNhME5xTW1KeVl6RkJVbTR6Umt0NE5DOXJjbFoyTnpObGRuaDJaRTFoYzJORVdVRkliR3BJU1c1MVRqTlBjWE16VjFveGRIQmFNa2hGWVdsVlltTnVSWFpIYXpkemRtWmpaRGs1Wm5sTWVqWnJPVkJLUXk5NmRtTmlaMllyTTJ4UGJuZHlhRGs0Umprdk5rNXBXbTAxVmxOM05IaE1TVFZHZVdKU1UxWlVVWGs1T1RKaVNIUmlLMVptWVZCc09IcENiR3RzUVVaT2JVOUZlbE5rY0dwdk0ydHlVVkJqWldodGFXeERaR1pDUlhOdFpsRlhkemRZY0daalkxaHhNbU14TDIxVFpHWm9kWGh4TmtKcU1GZzRaRUU0V20xUU1teHdTazU2ZG1kUFNXNVNUVU5MWkdaTVlsWlpjVkZVUXpGdVVFVlBZelZoY0RWbE9TODVXamN4T1ZFdlpqaFBRMVJYVEZBM1lUUjNNVmhRZFhoQ0wwbFFZbTlyWmpGcVJqVTVibXhEYUhNeFlsRnZXbHAxVEVGaFMzTjNRMmhUYmxsS1RIaFJUSEJ6WVVsQmVEZFFlRkozUlRWVGQwbEJaelF5UWpaWVZuRm5TRmRLUVd0MWFVWkxXRTVGUkRkRVpEZHhOa1oyYVZWWmVsVkljVFZ4U21oVmNYYzVNVUZyWW05bWVuRmtkSGcxUzNnd1MzbzFXU3N3YmxaT00yVnZjbmd5V2pWc1VucEJWVmh1V1VkUmNraHNRbVk1YjA1TFZ6TmtUV0ZKV1dVcmFDOVFkWGQyWW1ST2VXVlpMMmt6TWxvNWRqUXlLM0ozT0U5T1RWbEVUbVJtVDJGalIzTk5SR3MwZVhveWRIcG9NVXM1WkVOS1NrVklaMUpGYzNwT2RYQlZhREZGWTFsV1duWjNZalJIZWpkd1EyZEVZV2c1YkUxcWVrMHhaelZZVGxkS01HNXRLMGszTVhSa056QnRabGhzTm5sNlMxZEpiMDg0ZERSMVZHUmpRekJDWjJkUVMxaFBSRVp6ZEhkclRTOUtPWE5CY2pnck1tUldNV0ZxZUVnM2VXUjZaemR1ZUc5aFIzZzRWVVZxUmxKRWJYb3ZXRE16T0dwMWVUaDFlbk13ZGpka09EQjFSbGRUWlU1cU5FaEZOVE5FU1dOV1IxVkJRek5wTDA1eFpYTjJlRTAyV1dsNVRXdGFUVzVLTW5kdVFsSTFTRnBsZUZGMWMzSkRWRE5zVERsc2FVdExOM2x0ZGpJeFRWRnBTbWN5TTI5aGFHbDZkbUpaWVZOeWNIQkdabGN6V0RCT2JYcG1VM2RQYXpsTVpYWnZTRkp1ZEc0d05EQnFaVkJzVjNKbWRpOXNkREp1VmswMkwzSkZXbVpXWm5SdWJETnhMMjVIVURablpITktOM0pETTBjNVZGb3lhM3B2YjBKWFF6VXdOMGxMWjBGM1MybFlSalZRZEhoWmRGaEJSazlxVHpsVGNFWTRkMUZJUkVKRGVXZEZjbVl4YzBOTVJ6WktWbFJRUVZscFZXVnZOMGxaYlZkUmVuaFVXRUowZW5BM2JXZG1Wekk0T0dSdFkybHpjbnBqTVhoaFpWWnpWMGRzTUdWbWRrODNabkpzWjJONWRGcGpUMDQyUzI0NU1HWmtZVEZQTjNKblMwVk9RVU53TlZoTVNGSmpXRUY2WjNwdFlsQlJlSEpvU1RkS2REUlNhRVJPVXpaVVVuUndPRGxHY25OeWNtdG1VRkJZTVVkd1REWTRhbkl5YUZKc2FHMVphVVIxVTJSSU5WTnVaVVJuWjJ0UVUzZHJLM0V3ZURWU2QySlRXR0ZNYldSdU9DOUhaek5NYkRGT2NrdzRjVGd2Wm5aNGNERjVXV3hHTlRSUVdEUXlWRzgxTDJzeFNIZ3pVWGx6WjNwNVpEUm9jMHBhZDNwM1lWUnBWRzlGYjJkQmFFcFVUVWgzVUdKNlVqZ3hhMDVxUWk5TlNIUklOWGRCWW5jNVpXcFFlbUl3WmtObllUZDVkVXBvTVhOVFNHTk5NVUkyWmpjeGIwdEVZbWMzWVcxd1ZESmFOMDl2V2xscVF6aGFhMWhhWTI1SWRsUmlRVE5oTjBzNVdtVXhOV1Z5YWpKVlpGaHdMMHhHV0ZrMVNUTXpUbmQ2VFhGNlpIVnJZeTh3Um5CYU9FOWhSbGRUUm10aFdtTTNTMGMwU21sQlFsY3dUVTgzWmpSRGQwWnZWbFZ4V25KWFdVeDBNbEo2Wm5CRVNtTnFiRXhzWVd4c1NteFBaazlpVUN0dWRtVkZZWEl4TVdSdlQzcE9WMkU0UjNoeldETjBlbmt4V1ZnNFlqWnhja3MwTVV4U1owMW1LM2REVkRWbVJYbHRRMjVPY1d0UlFsTjZVMHc0VGxCSlMwNWxjVlpHU3pGdVNWWlRLM0JPVkhKc1YzQnhSakZXY1U1WlZsTnlUWE5pVFdNMmFYUlpWamwxVkdrNGIwZE9iblJVV21wUk0yNVhTVkI0YURGcFppOHJOVzh2T1RCWmVqSk5jVVZQVEhwSFFVRm5RMko1T0ROaU4xTXJZbm95YkZsSGFrNTRjMnQ1V0VSMWVVNHZkSGc0ZGpWRWQyRmtlbWxDVHpWaWJGTmlVVTFuZFRKc1psUnROMlpGUlc1S2RrNUtXazVMT1ZGVEt6Z3lWVFl2TmxWTk1ISnphRU40VEZrNWIwSkthMDFVWnpoU1YyUlJUVXhrT0hoUE1rUkJRMjFYVDBSMlZrNXNlVTl0ZURWeU9IUTNVakZJYUdRNVNXZFpOM2hITkdWeVowbEpRMmREY0c5WFRtSnRXVEkyVTJrNFNrcFZhVXRHYkN0SWVGZEliVkZvY2xacE9XMW5ha3gwUjFaT09WbzFUQzlsWmpneEsyc3dSbkpQV0VST0szbzVLemxXUjB3eGJVRTJZMnBXY1M4ck1USjFOak5MWXk5MUx6Vm1MemsxVnpaVWVtWTFlVUZHVkhwWUsyYzBRbTlaZG1GVGRTdDFhRzByZWtSM2MxTnBaME5vYUVoRlNuY3Zaa3RQYzJzME4ydHFLMWc0T1dKTlV5ODFSRGx6T0RWMFJFOUlOa3A1Wm5wSVFXWkJVMWhzWW5STWFHOUZVa0pVV1dGVGJYYzRSVFZXVkVaSVVuUTVXSFZyY3pSblRUaGthREpJTkdONldtWjNabEEwVUdGQ2NraHdZMWRTTDBKMWRsVnVTSGxEYlhJekswUnlVRkUyUTFkWGF5OVNXbWRGYVhkcFlVbEhjRkpGU0d4SGRrOXpZVXhGWmxkT05GWnBXV2dyTWtrNFkzbFdORU5aWlVkWGJWQmhRMmhLYzBoRlJqRnpOazlKZVROQ1VGZGxRMWh4WmxSSGVubDZSbWQ1TW5SVVZUSk9SR0V3ZEZGWFJIUTVNWGRrVjJWcFdsWTVURzkxVUhGSE9HZHBSRzVSY0hjM01EWlZaSE0zYjI1UlVEUkJTVUZKYzI1bWFsbG1SazlCYW1kbVFqUmlRbkZ2VWpjdmJUZHdXWFl2ZFdKdlRraHpjRnAwVTJwNVVrTnNaMFIyTlU0eFVXeDRjVXBTV0dod1RYaERhMmhxVTAxUE1HaFlVMkpEYTBWdGVtMUdTMVZLYUZWRFRrbFZaMjF2Vm5CelozSm5jR3h6VVRKT2FsRjZXVlJFU3pWa1FXRnZUMEkzZFZWclZqWjBjVTl6WkZaeWIwZGpTa2hqWTBoV1NGUlVUVVp5WmxCTlYxWkxVVGhXUWtoTmRtaFhZMFZOY25RNGJsVTRkR2xFWm1WM01FRmlNVmx0UWxOMVRYQkdVSGRHYkZaVk4wNUZjWGt4VW5WYVUxTlZWa0ZpU1hseE9WVjZNbGhoVWxsME9ISkxNbUZEUW5FNWIxaEpWMUE1VVUxRlRuUkxTVmN2YTJaeWNVdHZkMmczSzBOcE1sZDVjMWxGSzFkdU9FUTVlV05MVEc5S2NGcENWa2RIYVRkVFRUVlNjMUpWYzJjelFYRkdVVFY0YUZsSlMwUkhTVVpoWWxKRlNFUmlUMDVGVW5WWlJqTjBVMmxDYjBKbGFEQkZWWE13VlU1S2VHa3dWMjlQZUZsTmQyRnpVSEJxYW5KcVduQkhUWGxLV0U1QmJEQmxXVmREVDBVNE1HSldZVWMwZEU5TFltWlNaak5UV0M5bFIzaHNUSEJ6WWtSMmJYbGxaamhJY0hST2NDOVFkR3hxZVZVNU9XcDViMXBUU1hsUGNGVk1kbkF3WnpGRE1VOWtkeXRRTUU5b0t5OVRaRFIxSzJFck5HSk9iazlpWldoeVQwdHdOVEJMYUc5U2JXSXdTMDVGTkZWM1IwVnJVa1JCWjBWcGJGZ3dTMEZCVjB4RWVrZGtRMEZSUkZKeFdtY3pRbVJhUVd0T1lsSlFiMmxUTVcxMFYyZzNPRGd2WmpaV1JsSlNLMUF4VlZWcVZXRjBUVEpYUzFWM2MweENjRU5LVDNScGVXVk1aSFJGYm5Ndk5XcFFiVlpGVm1VeVltRnBhblo2Y0hRNFJHdzRTV0ZtUkdKSGRXSXlWM3BhZVZJNE9VMVRabFowVFZOaFQyMU1VbE55Wms0MGRHRTFhR2Q2U0Voc05UUnFiblZoY21sdU0wWXZVR04yVFRWRFluUTBVbWRGU3pWU1dHbEJiR2N2ZVdaTVQzWXdka3gwSzFkaVkxbzRXRE41U2tNMlVuZEVTemwzYVhaM0t6TTFka1UyVHprdk9IUjBXRGwxVUhwVWQxaE1WemxoZFRabVJ6QnliRkZzYmpWdWFDOXpWa00wU1ZoNVVXNTVPSEZtVEhSWEwyRkRiWFl2SzFacFpsUnlMMkUyTmxWRE4xZHpiazFRTVVaWVNVOUpkWEZqU1RONlR6TkVXbTAxYW5CQlJUbHpabFJaTTFZMFppOUVMMmhxTkRjcmVWQkJZalF2YjNSSFlTOHJMeXRwVHpsdlptTk9MMUI2UkRnelRESjRaVWhwTjFGaE5TOWtUblV5UjBSVVpXTTRNRmNyZUhwSVJXSmtjbU5XZUdad1lUVk9TbVY0V1haMVl5OWthWEp1WVRGT1Z5OXVVM0F2YTFkS01URm1kRVpNZWl0a09WZ3JMelpMVnpjNU5WZDJkV05VWVhadGVHSmxXR1lyT1daNVpuQTBkV3hXT1ZWNU1WVmthbkV2T1c5alRHRklLMlpzV0VvdmFTOWhlWEkwTW5Cb2VDOUpPWFk1YVhCdVRVWXhjRXQ2T0RaV1REbHBNVUpsYmpReU4xaG9hak5MUXk5dU9HaHVkalV4YUhnelFqTk1PVE40Y25BelNUSTNkVWQ1T0hGa1REbFRMMjFEZW5wcU9ISldSWG92TW04cmVGSk1jRmxGVVdkUmEzUlRSVlJyTUdOb2NXcEtWbFEwY0VWSFNXNUxaRUpWUkRGWFJFRXhlR3MzVEVwUFZIZ3JSMWhzYVRSeVQySk1WMkZ5VWxsbGFpdEJWVWxyU1doUU5FRkxPRVIzTVVGQkwyOW5PVVp4TDFreWRISlVaRzlPTTFKdU1qbHlkMjh3Wm5wRlpucGxWV1JQY1dWa1kzUjBLM2Q1Y2pkSk5WaHpRbEEwVlRoRlJEbGthREo2YkVoaGVYZE1jV3RZU3pKcmNrdHlTVUY2VHl0cGVVdHNaRGRtYmpCWGNHSnViVFYwYkd0NU1uaFVNREo0VEdSWU1UbGtXRlpxV1hwV0szRnRiVzFLVkc1a01rUnBaR0pLYkhCMWNXODFSMjB4Y1dscldtRkJSMGRFTUhkVlYwWjZVM0pYU0ZWaFoyeFRaRTVXVERWRmNqRkJlWGh0ZVdGdWJUWllWbTVsVjNCcksxcEJSVU15TlhoT2FYZzVlVkpQVGs5clYydzBPRmhuZUZNMGIyVjZMMHg2ZVZwUGF6VkxhemxsTm1KWGNtOHlka2R3ZGtOWVZYQm1aVFpTVm5aNGNUVmpaVEJ4Tm5kMVVFaGlkbUprYm1wT1pFUnZZMmxQTm1adVlqQnhSVkV5T0c5UGIyZEpRM2RFYTBSWk5qRjZha3hhZWxOcVVVTjRTV05SVmtWQmQweE1ja3BOVVU1Q1UyZHJkR2N4UVZKeFRuWkJVVGhtTkc1eFJtTTFXVE5IZWxRMmJuYzRjVVJXVEd3ME5WQmlOWE5YZUVGVmRtMVpaa1JJTm5GMFJWaElMMnRPVjJGUGNIcHlVR1JwWTFOSmVERmtVRlZoU3pOWU5qRTVNa3d3YUdkbGVrUmpaWFJwZVROWGFHWnBUazlhYzJZemRXdGxhbXRSTjJGc2VrcHZTbGMzTkV3MVdVYzBWa05MZUdSbWFFZFNObGg1WW05YWRFWTVTR2xTV1V0aVQxcDRWV3RKUVZJMU1HaHRTVGRHYTJWbVozUkJjWHBqUmk5WE5HNVdaSFp6U21KWFRtbFdZVVp5VEZCMFJrazVjbUpxU1c1cWFHSjFNMDVpZDFWMVpXWnlaemR0U0VOUVRsSXpkRFpGZVRKa09GWm9kelpRVTJWM1lsaEJXbEJPYjFoWVNUQnNNVWh4Y1dSdWFqUkhOMkk0VEdkMk1rUkdXV015VHpaV2JrWkdVakJPTVdKeVR6bDFjakIxTVd3M1ZuVklaRGhrTTA4d2NIcHVhMFE1VkRVM1RrY3JOVWhwYTJWWVduVkZWbVE0TVd4RGRGSXZWR0oyVjBaWWJGaHlaVE5uTldaNGF5OXFZalpGUzAxb1QxQmxkV2d5VFZwTGFVdGlRMVFyVTJKTldsaEhNV2hOWmxaVmRXOVBkMHhqTUdzd1lXb3lOMWw2UjNCV1dWUkZhMnRDZFV4NFoyTlRXRmt2TWtwU1NEZzRWSFU1UzFoQ01uWnJaRzk0VDNack0wZHhaM1ZXUm10b1JVSkdTRzlsUTNoV1IxQnRXVlJLYlZaV01ucEZZazV6Vm5KWVpITkdia2RpZVhsemVuZzVURzVxYlV3NFdGZDVMelZMSzBWaUsweE9RV3huT0dWYWJpODNNbEo0ZUVNeFJWSTVaSEozWVRKMmQzZHZhVWhaYTJkbk0zQk1aR1JSVkRORE1HeEZkM05UVm1OTmIwMVhWVGt5WnpSR2JXMUpUVTlLWnpOU04zVllaVXBoTWpGTllUZEhXalZ6VjNWc2RsaHpOVE5rZW1OUE5WSmtObVUyY1dKeVN6Vm1UMjVST0VscVpETjBVMUpUWVdFM01TOUZOemc0WlZSVVluWmhWV3hPYlRJMFNHVTBXVEpOVEdGalNtUk9aVEUxVWxwaGJUVjJZWGg1WTNZeldrMUZSVTFHUlhvdlJVTnFOV05LVVdsUE1IZFRSazlYZUdGeFZXUk1lWFZGWkVwclJWUm9ka0kyVW5saFNtdEZNbFJSWVZkWVpFSnRhRUpGY2xoVGFHOUZTR2QxSzJwRUt6VkdSVzlEVkc1eVlsZHNjVm8yYkhRMFpXa3dXazFSVmxCQk5XVkNjbHBwZVZOdlUwb3dhR1pYZW1KSmMwTjBWMmhyV25sUlVuTmhkbmhJYmtsNE0yZE5kak5FTURGa1ptWmpTRXd2TTBodGNIWlFPVk55TTJnNWRWUnplblZJTm0xYVpqbE9RWHA0Wm01SVF6WnVZelEzT0RRNGNtSk9hbUpsZEhGTVpVd3hNSHBsWm1ZNEwwNHlWRlY0Wm0wMWVUbE5ORlpvWmpWalRYWm1VMjByWVV0NU5VeGxhWGRDZEZKamRqTkpPR1JOUVhsNE9FdDFkR3Q0WkV4YVZscGxTRmxOUlZsSFEwdzBTMnRGVm10WGRVSTFiRkZUVG5ZMmJGUmhjU3RQTUZZNGRIQmllV3BGVlVKRWNVTk1WMjVyTkRNeGFWWm5Xa0ZuZDBaQ1Iza3pTeTloVTB4bVJIcDBlblkyUW00dmVWQkNhVmt6Um1ONk1WcFpZM1JyTjFsSEszUnhOakoyWkUxWWJtTlBjRFF5YkdsT2FIQkNkMGc0TW1WWVR6bGpOazA0TTJoNlJWSnVlamRxWmpjeU1YSkNkMHBoWkVwQk1VaHVabWxCZFROcVQzRXdRWEJMV0dWeFoyRlpjMHhCT0d4ekwwZE1RbWhWVDFVNGF6ZFBjMGhWUm1rMlNtcGxkREF3TjI1amFGZEVlSEZGUzJSUFJHRTRTRVFyUlZoNllsUXZNeXR1SzJGMksyeElNSGxUWm1wUU1VaFFNM1psU21kdUx5dGlMMjVKY21SUlNUaFFNemMzTXpWTlpGcEdlbEJyTDIwNFdpOUpNSHA2WlZBNFZtSktkMmg1TUd0RFVUQlJXa3BGUVZaSFNGaGhTU3RYWTJSWGMzRTRRbkZ0ZVhaNk9HUnBZbWM1TVdSWFpURjRVMlZhUmpVNWRXbFFSa3A0UVN0blVUQmxTREpvYmtoclFYbzRkVEpuUVZadGNtdFVaREJ4UjFadlNYbDROR2xTZGpaRGVFVmFRbEZZVGxwRVRGcFVXR0Y2SzNNdlJWQkpSR00wYXpneFRrdFJXWFJVVDA5WldtRmFUblppV1VJdlR5OTJWR2gzUjIxemVEaFpZWHBhT1dZd1VreDFOWFZ6Y1VOb1ZtWXZaSEZWUkRJemVYa3ZWRXhFVlZKWVpHODBjemhJT0UxUVRWcGFhRmt3VjFKb1NVbDFjRFJGVDNJclYxcHhTRkZQY1c5bFVFODFWbFZQTjBsRGF5OUhiMmhrY0ZCMVVWSlRTa040ZVVwR2REQXhSMWhVTkV4VWVXNVNXazVEUm5oTFNuUm9UVkU1TXpJNU9XRnpUSHBVVkdGTEx6bFFWRlZpSzFaNlJtcDVUbVEwTWsxWmNXWm9TbkpIVGpodVFYZDJkalZwUjJWdVZqTXpOMWg1VVhaeWN6WnpjbEJhV0VFck9XWnhWSGM1YmpobE1VOTJUemh1ZWtRMFFVVjVVMjkzZVROMU4ydG9SMUpoUlhZMWFXdDVVMmgzTTA5aFdGaEpWMU14Wm5aVGIycGtWMHRXVVd0TU1USjZUVmxOSzBacFJtbE9VRlJVYWpCMWRHVjBNR1l2ZW5JeE9XSkJNRUpKUVVwQ0szVnNXVTgxYTFjeVNXVm5kM0F3VjFGbFdFeEpXVkV3VkhwdWFXdHlValV4VDNKd1VWQk5hbGRaWVdWUGN5dEpTMGRYWjFOUFlXSldiRlpHU0ZwU1l6RkhNVzVVWlZCTVJrUjZOelEwVUc5eVdDOXVTeXMzTlRaNlYzUm1abmRhU0ZwM1dtMU9hbVp3UkdFdlVDOTRaMFJtU1N0MlZTODBhV051ZGxoeGJXODBUa2x3UVdkSVJGaEZjbGRQT0RVcmFTdHlUbXRHWW1OSlYweEJiM2RaY1VsQ1dVODBaM2htZVV0bVNUTlNWblkwYURadWNuaG9ZbTF5YVZCV2NVWTRaWFJvV0VKcE5teGpWREpDYWxCYVRrODVObmwyU2pOMmNWQTVTazB2YVVndmFHVkhNa1JuVm1JNE5tbGxVVGgyYkZnMVR6bGtTVFFyYlhOT2FEQnRTVXh6ZVcxYVNTOWhRMDE1TW1wdWJsWmlTVkpKWmpNMWRUbFBlblV6VGpWSGNGaHBZVUpITW5sbFkwdFBlSFJ6Y3pReVNWaFNiWFJqS3pKVVJHODNSSGt4VDBobU1HRlFOV1l2VjBoUWEyeE5PWEY1T1VWTkx6WkpOVEJRVm5kS2MyNUlibFY0YVdSdFMxSk1RV2RGYVU1TFIwRjNVV3BSVVVsSGFXNXVNMlpIVGxOT09ITnhaekJxU1VGQ1FtZFhkME5uY1ZKQ1lWWk9SMFJaUW0xSU16RnZUMHhaTUUxUFRsWTJhMFJWWjBWaFJUaDZkbFZHYTNVeFoxWlhiV0p0YzJaVVlWZ3dTbVZNVjJGRVVsZHlaRmhVT0RoRU5WVlBSV2RpVUd4RGFGUnJVMHd6WkdRMGVqSlhiblJFUVhKeFdtTmlZbUZvZEc1RmR6Vm1TRTkwU1hwek0zcDJZMkZ5WVRBeVIweEtNbWRvTW0xR2VtcFJNREU1VVdKMU5XbFJjRGxPY0dWNWJsQXZWRzlPVFRod1JFOUZVVzQxUjFNMk5VaE5MelpHTkc5aVVuTmFZUzlMY2psMmNESlNObVV6TURWR1UzVllNamNyTjNWaWJYZFJTemxyVnpGMWVVcGFkSFJSWms0eGJUVjJXRmczS3pWbFpETjFhMlkzSzNOaVJpdGFVbEZCZDFGV1FWcHNiVTFQUmpFelVuZFlURWQ1Y25Kb1JHdFlNR3gyZW5wYWFHbHpkRzVtZG01MGFGbFlaRGN2TmpsbE1VUm1WV05qZG1FeWFUTjBkemN3ZGk5MFZtazNjelpXY0dKemRuSkRlbVpPWWpZMGJHNTZSalowZWt4c05XUm1Ubkl2ZVdsMFVXRnplSGhUUjJwV1NFUk9RVWx5VkVGQlVqVllSSFJwY1VOd1FrbENXbVJTUWxJM1dYVkphM0JwUmtSWFUzaEthWEZZWjFRNVdtZFdPVWxWYnpaalZVOU1hVTFZTkVKTGNDdFRXa3B0ZUdOcE9FdFpjRzFOY0U1d1lXZE1TVVJIVkRabE4zRmhWM0IwWVZWNU1UQm9TVnB2ZEZRd1Uya3dZWEprUmpSbGF6ZEpPV056YkZwQ1JXVlBiRVZYUjBwUFoyUldaVTlsYUd0eVJtbGtTVXRJTlhKak1EbGtWVWMwYkRkMU9UTlBkMGRVVG1aT1FYaFZUazEzVjJsMkswb3liRkJPVFZSeU0xRlFlSFZwUjBobE5rbEhiRGRGYUVoRkswdzVOMUpYZVdOU1ZXRjNPREZTUlUwd05tMXVNMWh3SzI1MlUzWnZibTVIU0hCNFQwbzNTMnRhWVRCUVVETnlZU3RWUlRKeGRuSnJTbGN6VDJvME1rMHZZbEZ1TlRSNVduSmpNazVPUTJ0QmJ5dFRWVFZRVjJWNWJ6a3hRMUpDUzNCa2FtdHdhblpSZVRKVlRGRlhaV2hQUjFWVlVFSkJTM2hSUkZKdGFXRnpNbE01YVVweGMzUkdjM00zVXpONGJHeEtNMGh0Y2tWNFlqbHBZMVkyY25OalZFWnJUMHBRVDJaa2FucDFjbmcwWVNzeVRFOHJZbWQyWjJwbVpGSkVNbGhZZFM4MFIwaDBObEJQVDFodlVVZ3hSbVowTTNaWVpEVjBjVGdyTHpZclZtaGFhVEZrYlVsc2JFVnBjbGRpZEVGVlJWRnBiblZtZUM5alNVeE9TR2RzSzBWclVYQkdWMXBVY25SaVZYTnNOMjVpUlRKSWIzVkZibGswWkhkNFVVa3JOWFZ1WlRac1drSXpTWEJFZVVoT2VGaHpXSGsxVm5KaFFXaGxZemhaWkVSa1ZGWnlablJ4VVhaR2IxWTJXblpsUzFCeU5rUkVaVlpOWmxSMVVIb3hiRFUwTm5SVEwxSlhaVTlLWkhKbU5DOWpibWhsYkRoM1IxY3ZjVWRDT0ZsUE9XOVBhRmNyYzNSUFQzUm1VRGM0UjNsMWJVTnBTVkY2U1d4c09IazNOMDVuZVdaME9XeHZjbkZ5WTAxYVJsRjVSa0l2YVZJemRFUlJNR2hzYlZoWFIzRnFlalE1YlVkUlMwTkNXRnBqS3psV01uTjVNeTlxZFhwNE16ZHdNR3RwVGpoRFEyRktTMWRGUVVNMVF6ZG5TSGhGYjNGTlFVbFZLMVpDS3pkR1RVOUNUVEkwT0daNVJDdEJNek4yYlVaMFpubFlaMWd2YW5kSmN5ODFjbE5XSzNaRmNWVkRRMVpUUnpnMVREaE1iMFpsVmxZMGJ6UjVRbXQzYmxWUVZURlJjV3MxVGpkb1ZISktZVWhJUWxaamFXVjVkR1pEU0ZoT1ZGVXhhMGR3Y25Gbk1qVnlUbVJrZERkeWQwdDFjWFIzTmpoMk1IWlNaakV5Tm5JeU5tdHpOVzltV0ZaeGN6UTNhMkp3VEZsNVdGRlJTVVI1ZDI1V2VYbExTM2htUkZkNloydDFhVmRGTjNGc0syMU5WMmROVDIwemNIbDZVbkJuV0d3ek1WQnpVRWh1Y204MVJVMVFZbFEzTURCTGJVaElhMHMwVkVjd2VUWm9NeXR5TWsxM1VqVkxaek5yWmk5NWFHZERLMGRzZFRSblVtTTBURkUwZDNaM09GQkZOa041ZGtGVGJHVnpiSEp3YlRWWVIzcDBXRkpHV0dSalFsaFNiM3BXUms0eVpGSmpjbmwyT0dOTGJWb3pka3Q2TjNJMmMyOHJXRXhFUkVKV1pqaENVU3RZTDBGV04weDJLMnBoWjNadE9YVk1lVTluTDNkUGRWVXlXbUpNWkhCemVuSkVRbGh4U0U0eFlVSjNhRlU0VHl0aVVFRXdUME5OVFc1R1REQmlTbVJIUm5Odlltc3hUWHBHWVhCQ1FVa3djMkZUY0dWMlUwcFdOa2hhUm14c1VYRXhVVGxGUmpOc1lYTkRWbkIwYzFkTE5VcEdjSEZOWTBacmNubDFkR3hrVTFkb2JFSnZjQ3RaUWpoSFdreFZSM2hXTVVwbGNHVTVlbWxrUkhKRWVteERWVk15TTNoTlNtWmlkM1ZJZVRCRVRYVlljazVNZWtwd1RFZFJla3dyVnk4M1dYSk9TRmN4Y1U5NmEySTVSMUJxV1ZCbVpqaGlaamRxVUdzcmMxZ3hTRFpoVkdKSWQxbE9kakpVUTNWbVdHcDBTbmhXUWk5SFlWRm1XSFZDTjFKTlluaGtSWFZaY1VFMFlqUkJNRGRHWW0xYVRsSndMMEUwYVVWRFpVdG5jRUY2YjJjMlNXOURUV0pYYVRWdFNVUk1ObGxhUVVvck1rdENXR2xNWTBrNWVsbEhRVFJFVGt0WllqQTRibTFqUlU5Wk5tOVRNSFY1UW1wWWRFVkxibHAwZG5CeUwwdHlZM0phWmxWNmJGaE5aak5NVlhwMVlYSkJVREU1VlU0eE5ISlFVMHR0WVRKclUyUmhlVUpoVHl0RGQwdFlWVEZFVkZSWGRISTBLMnB3VGxsSU5EWnNVbVZQT1hRMU5pOHZNRUpVVlRsMlNuVlhjUzl6YVhWeWFFSk9UazVVVms1akszWTNPWEV3WmxkMGVUY3ZkVkJLYzFaM1QwVkZOMEpOTDJkbVQxQklaaXMwWWtoTFlucHViVmd6WTA1blRWTlFSVTFQTDFobVlsTlhVbHBpVldablNuWjNTUzl2TnpoclpYWmpUa0ZNWkRkaVJISk9Ta2xIZUdkUmEwRnpRakZVU1RGdGVXcE9WRzVWVjJSVVdsZEJSMFp3YTJnemNsbDBkakVyUnpBeVpHSnBObXRWV0Nzd1kyRkRNakpTVlZSbVQwZzJRVWcyYTNCWVNHOVlUVVJPVlRac09UUmljR3RSTDBaWU1VSXJkVUYzU1hadlVGQTBabGRGWlU1elZXTjBSbGxLU1c5M2FUQnFhekF4WmtSUU1XMTZUREp6TlhVckx6SkRjM1ZVZEdRMVdEbHFWamw0VkRsWGQxVlhjR0kyU21oQ2VqVmFabkZxZWl0amVuSXljbGg0Y3padVQydzBRWE4zZUdka1YzcFdlVVZuWnpOaWQwVlNURWRhZW1KWlZrOHZObFZNTjNaS016SjFZMDB6V0dKYVJEaHpkbTV1TmpGTFNqaGthR2RSVkVwWWJFTnFjSGhUYkVJd1FsUjZUR0ZZYzJaQmJGRkxjQ3MzZFU1Q1IxWnliWGRMV1cxSlMwOTRZVWc0ZFdGWVUyTmpTbUY2VkhZMmVGQTNTSE5PTjNGcFZXRTRNMFoyVUN0dGJXRmxMekJtYUdJdmVFOHhUMDlQZUdSNVpUWk9LM055V0RKQ1FuWlVSbGxxVTI5VUsxVlVRMm95WW5SbWVHSmhWSEJ4Y2psQ2NVTk1UbGhUUVV4TWRuaFdhMXA0WWpGVWVpczVOU3R0YmpZckt6YzNNelJxU0hOT2FpdFdabXhZTUZVeVRIb3pOMkpQYldKdFpIZElZMHR5YTBGNWFEbFpOVkEzTW1GaGRpdE9hMEU0ZWl0blkxTnNhRzUxWmxGdmNIRXlhbVI1Y1ZSaVFWRlNNakJ6ZWpNeloxcHpjbms1UVdaaFNISXJMMjVuTDFScU1VSmtZWFZDY2taTFRucElObFE1TVdOUE9FMXRUMjFoVEU5blNVNVZhMmxDTmtWdVFWbEdSMUZyUzJwTGFXZEVhMGRRYzBaR2VXZFZOa0ZZYlRsWlRXRk1RbTlDWjIxQlYyZElaRlJSUTA5b2R6RlhlVXhXV25CMldsVnhTSHB6TUVRelUwUmFUbFZhZFd4RU1EUlJkVk5IU21aUk1rNWxaR0ZrTmxSSlUyYzVTazR4YkRKU1QwOUtOSEJOVmlzeU5XNVdkVlpxZG1wS1MzSmxhbUl3VXpoU0wwTkVNV05PWkVrck0xUnZZazlxUm5OMlVGaFZWa1pZU1ZWVWJERTJkRFpQTDFwdVpFazVUVmRxTmxaTFRUa3dNMUJhV25FM1ZtWXpPRzFRTURsdFNFOTBObXc1ZEdaRWJFOXRZa3hNVjBsS1owUk9jV2h3VFhkR2QwMTNlRE50TUhsd1ppOTRNekp2WWxBMmVITnBOMjh2SzJOQ2VFVlFhMk14UVU0ckwydFRURTVRTVVzMVdXWkpWamh3YkdFclVrMHhkRGhRYUVjMGIwbFRkRXBwUzBsaWJIVldXR2xUUXpFMlVGUXdka2hFVUhCdFNXZE9Wa2xrUTBGV1dFVkVWazF4U1ZkUlkyVXZWVlpqVlVaVWN6VnNNVXhFVUZoV01GRTBVbTl2VlZwa2VGTjJWbmsyZEZGUVoxcEJlRFF5V1RkamVFSlNSeXROYWpCdFdtOXVkRzl0TlhOdk5GTjNPV0ZZWXpOMFRHSmxjVU12ZWtkaVJXWmlWekZ1WkdabVpITnpkSGt3U0hnd05EUnllbmxGVWk5dFFUbGhaSFF5YVRSMlpsaGhUV1o2SzBSWmQyTkdjVGt6WWpWbE9YUkZiREpQYTB4SFpsRlFkbmx3YTBZM09HUmtZMlF2T0RsMFVrSldiMk5pYUhwWkwzVXdiMU51T1hCUU55dElUelVyWmk5cWNpOWtMMUl6TWpCcWRYSmxVRXRCVUZGTlNIVkNibTEwUnpKQ1RGRjVlRkZ4VDB0Q2RGWkxSbGR4TXpkcGFsaE9Na2xsYjA1SGRqQnJXR3BYVFVvcmVXRnpSbEppUWxsSlFWWnpPRFJyYVRoQllUbG1aRzVOZFhsTVRHbGhWRXRRV2xBNWF5dE5SRzFsVlZSR09WaFNNREZ5VkdKeE5WVm1NaXRwTUc5UWVGTnhlRTF0V1RJeVZYSm1kazUwV25FekswOTZZa3cwU1RFMVYwdFdXREprTWpoMmVuWlViVE01TDFOcmJYaFBTbFowVFVSeVlXNWlTbGszVjNCSmREZFFaRGRWZG1GSFJWQjJhbk0wVlZoMk5rWlFjemt4ZFZwc0wwWmxNMG94YjBka09WUmxiR1I2ZVdsT1RHUXdPWHBqYmk5U09XeFlRVXhUTVdKSGRsQjZTVFZvYjFGRmFXaENTMGxDZDNSUldFRkpTbFpwVWxGUFpFRmxaWEZwYm1oWFRYUjJZMll4ZFhKMU56QXZaUzh2TjNFM2RUa3ZUR1U0WkdSbE9YaGtiWEozTVdFd09HMVBlVkUxY25OUU5uaDJZWGQ0ZEdJemVsZERlUzh3UVhOamRWSm5ha05tTjFvM1luY3ZLMmxMVG5Ka1JtaHNjbUpDZG0wdmFEaFBkR3RVZUhJeFZuUlVjVnA0TVV0TldrWnZSVEl2YzBoc2RWRXZlRVJpYWpWbVNrZFZSamh1YlZoNlQyUk1ObGg0V1RSaVNWZFZkR1pyYkUxWU5UUjVZVTB3ZUdkVFkxSnhXRmxtY2xwclRUUlJUekJSUW1relpsVkhjWHBITld3eGIyODBNMEpYU1ZJd2NXMUtSblZZTDBsSUswOUNUbTFQYVdwVVlsSjRhMGt5YzJjMlJtSmlRM012T0RKNGQxWm5VbUpQVHpCaFQxQTFiWFpVVUZsSWNTdE9kV0paV1ZBMU0xcE9jMUZMZFVsR1ZFNXJlRGQyTWtaWk9YZEdPV1ZEV1ZOcWJVRkRTR1UyWVRWSWJtTjVSMHh2Y3pjeE5pdFFkemxSUTBZM2JFOUtlRTVNTjJ3NUwxQnZaM05NWTBWdFFVMVJlSE5DTXpKSmNsZFBNSGRKY1ZsVGVqZEpaSFJGWWpKa1pHVlBOaXRRVXprNU9HdEZObnBZWmxCNlNFZzRSbWs0U0RZNVFsRndTVEpJUldWNGJHZDNSUzk0WnpkeVpHRlVXWFJXWW1Gb01FaG9jR2hSWkVSQlRWZE9VVFJqT0hWUVJHVjFSeXNyU25oNmRXMWtPVE5HYjNaMGJsRjVNSFIzWTIwNU1rdzVibTFqTnpaVGNtVmhPR28yUm1aVVNHMUhLMWRVTmpkS2RXSlpaMmhLUjJaTlUzWTVkRzFLUVZCaWRGaHFlRkJuVlc1WllVVmlkWE5QU1VjNFVXNWhNSE4wWlU1UlYwNDVZbWcwZGxablZuaFpPSHB4TjJoWGFGbDFORXBJYVZCSFdUaFhkMlpZT1VsWFpXZGhTMU5aTW1Ob1NGZHdUSGROUTJreFJtcFJWbFZ1TUM5SVYxaFFhVzQzUzJGRlVtSlhObUpCVkUxTFMxYzJURmxFUkRSaFlrMUpWbVZZWkVKSFJHSnhNVVZtUW5WUWFUaFFkWE5XY25SMWVWbHVkelJTUTI1U1MwVTVkM293WlhadU9GUTJVSGxWYVdVelVrVmxNa3RQZFVKYWRGbHNSbTQwYmxwWWVVdzNZVlJ4UjIwdmFIcGhaRXBOVjFGa2FESnRXbGs1YWs0M1lsUndjVTVETlVGRlIwMXdPRk5MTVVOWlZEQm9aRUo2YlVKdFF6Um1abVk1VTBseVJWaE1jbXRYUm5ab00yTTFSV1ZPY3pCUE5GUjVNRWw2Y0c1TFV6aHdNR3BHYVhGNlJFSmtjR2hXTW5oWGNUUXZjbkJ0ZW1sdWVqaElORzVZVEdocU9IRkdlRlJUVTFsMmVXcGtjVTVIWmpGamJsb3ZXR295WVVOa1dDOTNhamRVTDNJNE9UZFVUM3B4ZW5SaE5YVTJLMVJaVlVSM0swMUNjV1pqVGxaUVZHOHpNMkp2TDAxNlJWRkhOQzlJUWxobU5uZ3JSVlJRTjA1VVp6RnhiWGhaUjBFd1VIUTBNMDA1Y3k5TlZGVmxUMFJuTDAxeVMzZE5SRWw1UkRNd2EzUlRRVm80VjJvNEt6UnlNRGMzWm01NmFFMXBlblY0Y2sxek4zTkhjbUZ4ZDJFMVNqZENNa1ZHVFVObGEzUm9NWGRMUzFkVU9IRkpWMm8wVDFWclkyMXZjVTlpY1ZvMVduRlZTblEyYzJGa1EzbDRUa2RSV0VRNFEyaFNSRXBEYzA4MGQwdFFNRXByY0RWeFVXRndSRmxCWW5jNVlVeElXVkZMTlZCRFNrbExiRklyVlVwalZteDBSR04wSzFCUGVESkhVM00wTUVoVkwwZHRZME5rWkZWaWNUZGpNR3BVWVdveFIxWlhNUzl2WVZkMVVGY3hWVTVKUmpGdmQwWXpkSFJRY0dFMlVYWndaMFZ3UjFac1RWYzFiVkJCVTI5TE1raHZhblYwVms5dE1rTm9iRzlNT1U5WE5YRmFNR1ZFYVRJd1RtcG5UM0JKYTA5d01WSjFORzlFVlZweFowdFZTamR5ZERRelVWWk1SV3dyWVVWTVpFZHhRbTVpTTJScVZqTm5iMXBvTkVGbU5HZDJRM1phY0c5RFZFSTNVR1pNYTFoTFRYZGlla1ZaV2s1MFdURnFXRWxYTWsxRVdGbFBaMEp1UW1sNEwycEJNR1JDTW5KNWRIZHdSMlppYzJZMVVtSkhkRXhpUTI1eGMwRTVkRE5xVEdNeFpscFpWREYyVEhWTU1uQmtNMGh1UjJKMFl6TnRWbXRCTWpndlRpOXJaREkyYUdaaVptMUJlSGxzYjNkaWJISkJUa1JqVURWTWVtNVlaa05rZVZweE4wOUtjREZQVlZoeldXZEZjMDFrZUhaMmRYbHRUeTkxZDBoVE9Ha3dSRGR5Tm00emVVVTBhVFV4UVVoc2RGVnlOVzFLTTNwcWVrbGxZakpXYVVReFZIaGljbnBaTWpoc05WaHRlSEJTVEV3ME9EVlBZVXhFZG10MFp6ZHBZbXRCT1cwNFV5dDNPVEpaWkRWNVZEVkhTMGhQZDJVMVFVNXFkV0ZLTHpoSVkwbGtVVlJoUlU1MWJsbHNUVE0xZGxKMFIxZEVabWQyZFdwNFlpdEJSR1l5ZDJOcmJuRlZWa2xGVG1vNVNsQlJjRWRaUTFCbVQwZEhSVmxhT0UxQk5sbFFUVUUzYVVrdk9IWlhiVmR0VW1kWk9HSndUMUpWVjBwVGNHcHJWbGRtUTFBelpVTnJSRlpVVmtsNlNXRXlXRGRyS3pOQlMzSmxXV2RGVnk4NEwxQnJUVU5XYVdka1ptOUpjME5pY1RGa1ozaFphbEY0TkROTFQwWlNkMVZYYjBOck5uRjJNaXRxYXpkS1QwUkNSek5wTTNSNWRVeHZlWEphU1d0M04zbEtPVkJvU0daRlJHNWlNa2hDZW1WSWJqZDZiWGhQZURKSWMwTTFXREpvWjJaSFNuWnZZWFZ2VkdaRk5IbGphVGRUY3pjeU1YSXpOekI1TWxJek4zWTRTbmQ0VG1KSmF6RTFMMk42TDFWTVVDOWtRM3BxWkZOWmVtMHZTbTFOT0hJclJuSk5OR3hrYXpsbk4xVnpPRlozU2paVE1raFlSVFZ4Tms0M2VYbEpMMXAyUlM5dlRtbzRZemRoWjNRdlZYaGlWWEpoZDBNNGJXTkpTRzVEWVhGbGFWWTRRbVZvVTI4MGJUZEdhVVpEVVd4RE1rZHlLMkZWUWxneGRTOUZaekZuY21STE4zbExWM2xQUWpWbVZtOVlRV3hrYW1aV00wcDJPVTFtTlZRNGVtcFlXREJMVDNWM1JXaEpLMEV6ZDBaek1GUk9hVWRVUmxKcGIxSlNaVUl6U0VGTVkzTlBSRXBOZW01NFYzRnhUVU5qYkdsdkwzRnBRaXRqYm0wMFlWaENNV2hwY0VWa2ExWTFVVVZLV2toMFJtOHpiMUpCYUc5WVFXOHpUbmRKVDFGVllWQk9ZVUZPWlUxRmQzbDRlamg1YkVvMVJWcE9kRk4yVmxFeFpIRklNbXh3U0VWME1IRnplSGh2U2sxWVZDOVZRMjVrZW1Jd09XNXlja2hLWVRKNGRrZDZhMVV5ZFZKRllVVTBhbUZrVWsxWWVqWm9hemhuUTNsNU56QlBLemRuV0RJNFZtTlpPRUptZVV4MGJrOWFWalp6WTBNemVUaFJSaTh3WkRoa09WUTVVWFY1WjFkTk9XWnVTVTFrVXpkVmVrRXlTMWhZYkVvNU1GZFZZVGRLY2tWeWRXWkNZbWRWYzNobVJ6SnNSbFJJTWl0VllUZE1jMnRHYm5oVlJHNVpUM05EV1dOaU1IUTJaR0o0WkhGWFMxUkVOa0pYUjFkTFNsRjBPSE16Y2tKQ1dISjBhVFZtWVZrdmFGb3lWR2xhSzBoMGMxbExZbWh1ZDFSb2JEVmtUbWR6TVdaWmNrcEtabkZxWVM5VVRqa3hSazFOTHpselJUUnllVkl5Wm05eVNqTjRkMjlPYWtaWFFYTmplbHBpVVVWWlExaHdRbmRrUzJreFVuUm9TMjl4VVhGeWMxWmpRUzlDYkVSdGNGRkZlbll5ZUVGblZFbFNiRmxMVWt0V05rd3dkVmN4TUcwNE9IUm9lVkJuTWpWYVVFZzNNRTFoTlZsNGNGTkVXamhKWmtJd0syWndjRGxrVjFWSFQwZFRSM05HTTNsdGF5dDVTbXhvVWxSNmRreFJObmhwWkZaUU1XWkVZVTlWUTNka1ZFUkpNMEpCTnprck1VbEVkalZsU0hZeFduRm1ObTlvUW5KNlRYTnBOVGgwVW10ek5ETjRNemd6UTFsbGNWWnZjSFphY1RGbGQxQTFMMlJQVWxOUFNrUklOMHRRVGpnd1psTlFVekp5YVdGWlpUSmtOMlZRTDA5cEszWmpkMHA0T1dkc1drVkNlVFZNVUdkNE9YVnpkemRFWlN0UWFHeExSbVZCZGtoalFpczBUSFZNUjBaaVFscHNTSFJ6YVc0MWQwTk1MMGhPV0cxM2NUUnFPVzF6VW1WM05sa3dNa1JYU2xoakswUllWV0p6UzFsc1pGb3ZUVVYwWlVaVFJuUlRSM2MxWlVoT1REVk5LMFJDU25OMWVFSTJkVmR5WldwSWIzaElWSE15ZDFsMk5XZEZkbVJvT1ZocmRuWk5XbnB5UTBWM1IzaDZSazVrUjA1bFZsZDNTamwxWlVSQk5YSlJVSFY1Y0d4RldHOURTV1pLYTNST2FGQlVVM2hCYVRCNFRXSkpRV0ZwWVd0RkwzSm1iMk5JUjBkSldTODJaMnRxYlU1c1FpdDBWM1JGZG1oM2VUZG1UV2tyYkRSQ1dWZzJaRnBpZVU4M1NrZHNOemhKY2poc1FuQXdUMlZ3YkZNNWVsWkdhSGMxTVhGaFpUaFZkbVUzV21wWk56bExZMUZLZG5KTEwzSnlNMEpWT0ZBMlpUaEpVbVk1UnpaSE1HWXZlWEkyUjJwNEt6SmpNelZ5WTNONFoyRnhUVVlyYkcxTlNIb3laVVZZT0c5a1QzaG1hREl3Tnk5SlNYcHpaVFUxU1hwSFkyczFhamsxVFVKa2JUaFRXVlYwUlVaek5tMXVaRXBVUkdWNFJtdFRSMUppY0ZZMlZXRmtWMVkwUW5Jd1VEQXZaWEprZDJsdmNTOUJXbTFwU20wMGIyaGhUVkZvVFZWbmNFb3pSa3hFVkhweU1XTktjWEF3VkZnMFZFWldNVGszYkVNd1lVSXhlWFJzWkV0dlZVMWxSRzFrTkVsamRuaGliMUF6Tm5vMmRsbGtlVFoyTjFkV1ExQlVPR0p3VkhJeGFVeFliMHh3YVRSQk9XbFVOWHBYUzNsQ2RuazVPWEJ6UkhrcmFrdHlkMDlKWVRKRmRGVnVkM2NyWmtGcVlraFNWU3N2UkdsdE56Um1NRmRzZUVSSWFFUndhRGxVT1UxWlJISmhVM0ZRUW0xS0wwRlJNMFZ2UWtZdk5pOURUelJFZEhZemNERkpMMUEzV1hBM056a3JUR3gyY0Rac2JtNHZNV3c0YkdSUk1XbFJhSHBKU25JdmJHZHdjblp1Y0ZBM1JVOXhUQ3RuWmtGcVUwUTJjblJUY2pGRlpuRkRNalozWldsWVZtZ3ZVR1JaTDBwMWRVb3lUMUZFY1U0eVFWZEZlRmgySzJOV2FFeENSekZrTmxCaE1sQXlkV1JTWkhORVlXMXpSR0VyUTNwSlZqVlVTeTkzUzB0T05HdDNPVXd5ZVdWV01qRjNUR3BPYkhscFZpOUtaVGhvWVdWNk0wSkNZbFJoVjJSdE4zTk5NbXB2Y0RsNldWZGFLMUUzU0RReVNERjFlVlJzWkRCR09WSmlWRWdyY0N0cU1tdE5OalV5UjJoMlYzbFlaRzAwWkVaWFVDOHZUbmM1UW1SblZYRlhWbkE1ZUZOd2JYbEdPV2hVTTA4d05XUTBibGdyV21aSmNXOVlUbmhUTlhOak9VNDVlbVppVGt0b2JuRmhSRFJ3VFZwT1N6SjRZbkpOTkN0WVIwbHVaMlkyVlVaWVpqQmtTa0pvWlZGcVJqaFlkVzVaTkd0Vk5rTkNabEJSZHpGV1dHOHlUa1U1YURsYVMyaHNjVGMyVnl0eVNFWjZjR3RqY3k5MWIzUlNMMnBHT0RSSWVVdzBTbkpXV1VKMWNubFZVekF5UlhnMU1VZFZNWEJWU2xSM1UweEdVRXBJUm1wU1pESXhkbFJsU1dsTmN6Rk5kRnBMUmpWTVFtRnZhVGgwY0hCb1EySkZVRVp3YkdoUGNqVndaMkUwTkVWVVEwNTBUM2x0UVdreVNHTkNkMjFrTVVOak5rdDZNV2R6ZWpaWEsxZFhaMlpOYldaUVlVWlliVzFsT0ROSFQwRjZTbVF2Y1dFMVJIWjRLMVJMUkZoU1RsbHVRWE5NV1VVNVNqZE1iMGRsTUVwNmJIWjNkamxxTUZaNU4wdDRVM2hzWlVaMGFEaFFkVGcxT1VndmVXeENjMFJITnl0TFZGZHNPVWx6V1c4ME5XbzVhV2hwZW1JNWFrRkJabk0yY0hZNVZDdERTRlZvUlZFdmRFcFhXRUptWW01d2JEUlhLemcyV0hobE9FNDJhbEZuWkd4clpEY3dXVFV6YkVocVJVeEZOSEp2T1dsbGF5OTVaSFJoUXpRek1WcENNMnhEZFdsUU1YSlFhR1JtU21KdVMyTjJPVTlIU3pGaWVTc3lSVk5NY1hWWWVHRXlOalExZFdZclpVWlFObmxPVDJRemFHVnpjM1pKZWxsR1lsZGxlRk5SV0drek56WTNUbmt4Vms5aVRsSjVielZqYjFOVGFGcFRSa1JqVGpabFdXaGpTRmhWUjBGNFZWZElaRTlhY1ZvMlZsVmhiMWhTTm10SGEzVmFVV1ZuYVZCeU9WcHlhbXhLTlhoTGQyaHJXbUpRUjNSaWVIWlVUVE5aYm5BMlpGVkZjakZJWTJsQ1RYRk5NVkJ4WWtjemVHVnlkU3RyTWpCcFoweERlVXhMWkd4R2EyNHhTbE1yU0UxMFkxbFBXalkxTWxNeVdGaDZjM05rS3pJemVqTmFTSGgxWVRKNFRYZGxOMnB2ZVdSallVcHBZak50TUhKWVRtZGhhVXMyVGtoNE9HbFlUWGRsZWs1dWMybFBSM000WVRsaVdETkJTMjlzVlhjMWRGaG5Oa05pVDFKUGNIRTBaV2Q2UjBJM1RsUjRORTVpVERkdVMwbEhVRXhoYkRWQlVGRllkMkkwT1doSWVUVnRhWFJ1SzI5Vk5rUkpiRlExWTFwWWJVOVlhbUo1YlV4b2RFcGtNVzFGUkU1aU5tMHdVMWd5VVhBelYxTkJiMnAwWjB4a2RHeE1MMHBVWVZoeFRsTlZSblF6VDNObWMyODNOVkYxTm5Wc1pWYzNNbU5NZUROVU9USnZkbVJRYm1Jck4zQTNhR2gyTWxRemFubEVOMFZJYWs5R1VHWXhUM1k0ZEd4eU4yUmFXRXROVWt0aVdsSTBObTF6UkVWVVltOXlUVWMxU3k5NVRWcDBPRUZNVmtKalRYaHhabTltYld0bk9HZDBlSFpJVEV0aFpuRTNOR1JCTHpCaWQzcFlNbTB2UlRnemVXZzJNVU5VVURnd1QwVklkMEZhVmpkSGJrTlBlalpQUlhaRGJFOUJiakZKU1dwWlZXZDJUa0oxTkV0VVVGTnhNUzlXUm5NMWVURkhWelp4Y1dKdE9EaEplV1pYVUM5bGMxWnhNMU4wTmpoRWJURkNLM05qTUVsUVJHcHFMMUY0THpWbmNUaDJkWEF4YkRJeGMwZEVjREE1TW1sTVNIb3pXbE5HTTJjemVtTkJkalZUU0ZKNlVGUlZkMDE2VldGemRIRnZiamRhV20xVVMxcFljbU5pYlVwRldtcEdZMVJKTjFRelYwVTBZbFpLUlVsdldFeFdjRVJIUjBac09Wb3lSbTh3YkhOak0wOHZhVTk2YjJGT2VtWnVPVEIzY1dScFNHZzViemhqVVVaSE1tNUdXbkpIT1RRNWRUTTFOalF2VUV0eFlXdzVUSEZpT1ZKTFlVbGlhSE4xYXpkVFJIUlZkbFpSTjNGdGRHUXJOblJXUTJoT2FqUTVkVWRCWkdJd1RXUlBXbUV3Wkd4d1RWQnZSVFpNYURWM2REQjBPSFUwTW1VeWIwWXJaSGwyUzNKTkswUm1TR3hWYlhWbU1EazJhSEp4WW01S1RUbFpTRWd3ZG1WTFp6UkNkRkZ4TkU1NFIwNTVOVlJ5UzJVdllVbGFkRGx0VlhGcmFVZENlRlpNYW1KcldFSTNTR3BhTWtKdWVEZzNhRXBNVEV4MVRXWXZURXhNY1ZCdVFYYzBZMDlRV0hkbksxZFNSMWdyV2l0eFRHVk1ha1ZUU0dwaWFFOXpUblZaWm5SS1JVWlJhSFJhUVZSRVRtUk1hVGR5Wnl0VFNqaHVOSFpvZW5kbFEwUk5hWFk0V0dnMmN6UmlaRzFLUjFrNFMwcGhaVTlWSzBWMksyMUJWa3A0TlRNcmIzRlRkRUk0T0RoaGRGRnVTRzFJWm5aUWRrcHFNMDltZUZRemNuWnBabTUxTm10Rk5rRTBRekoyVTNvMGVuUTRiR2RXZVZReWJXOU1XWEl3Ym5OT1YzaGFaekV5VkRKUVYwTXlSazFUZFRVMlJpOVpVRVV2YXpoaGVYcGFaMFpaVUVWblp6SnRhaTlQTVdnemNsQXZUSGsyVUhac09FUnVXVU5pUWxwVkwzWmhSRFoyY210RkswbGtTa2wxV1Rrd1JXcHhTbEZUVm05aE5uVlFaM3BsYUdsc05WaDJhMmMwVVc4emR6WnRTRzByYkRGWmRIWnBiRUpNYkdaYU1GUjZObVJ3ZUVaQ1dtcFdWSE5pTkdWelpsQnphVXhWTUVoTU5GRkNXa1pvTlZSc015OXNjMk42YWtneFNFazRaamc1YmpBM00yaDJVbWxHV2paQloxcHRXbTF0YVVwMk1GSXpkSE12VGt0SGRXRnBUekZHUlRsVFIwdHNWbFkwZVhaS09FUmxSVkZ3VGxCclJFbENiMVZOYlhKMVdqWkNLMWQyTUdjM1dHSTFNa1ZvTUVGRVUwVm1iMDV4VVhGUVZHRnVWMnBqVFROVlRtMXpSa3hUUjNSMFNrSTFaWGxRVjA5SE9HTlJUelpsVGpWak55OTRMM2g2VmtkMlIySkllR2QxWkhoeFJHMUZNbEJOYXpONk9FaHBOMFZHTHpOdlZreERUVXhPZUVwTlRuaFFRMUpzVkhNd0szSTJlUzgyY1RKREwzRnBZV0pqWkROSGN6Rk9abGxQVGxseldVeFBSQzlaTVdwVU1uVXhRMFJCWlVWTmRXUkZNMWNyVTFaMGRUTjJaVE5HS3pkUWVHVmlNbFpUTlZkeE1VZEJNbk1yTkdwME5sYzVaR0l6ZFdKcFNIaE1aWEF4VkdKaGFVMWlLMWhYYVZCYWVEazFNM0pXUjFoVFRuTTBNMFo0UWpORFpYbHpNa1ZtTDNkSk16aEVlamh5UVRGVGJtcGpSM1JOS3podlJucGpTMWhZWnpkd1ZFZG5ZVUo0V0hOaU5YY3dSVkJaTjB0Q1RuTmFOMUZoTm1kTlRuZ3JjbVJSTVd0dE1tbDZORWN2YjJGU01qSXhVWFIxVkVkTldFdFRNVEJZUjBSRVVIbFZlR3RJSzNsaFRWZGlWa1Y2WlZodFJXdFZUa3AyVUZJM1FVMXJTVE00Tkd4UldtcE1WelZZYXpOMWVrVnlRek13ZFhOMlJ6SjBkV0V6UkZncmRsTm9NbGR2Ym5vcmMyZ3JiR3cyUm1KMVNrdExVa1ptVlN0dVVrdE5lbFZDVUdSd1FXdEVTVlIzUzFwUVJVZzJkWFZWUmtOVGRsTlBjbkZ2V0d3eVZTOUxNM2xIV0RkTVREQlVPSHBIVTFScVYyNXpjM3BxZFVwb1dFcGhUMWxIWVUxeE4zaFBlaXM1U0VkU00wMHZRek51WlVsMlMyeDNOVUV6VkZnMGJ5dFZRM0ZMVFZodVQyZG1SMFJIZVVsdU9FNVJaMUV4VW1KemJWQnNaR0p4TjFSVksxSTNWM1pPV21nNGRXSnFVbkIwVkdKdVVqVXZXR1ZQYzJkNFEyVktlSFJLYlZKUmNrdFNZMk15TjNwNGVFcHFNWGh3YW1rMVFUazRjbGxITmpCc2NXUXpaVzE2YzNoSVRYTnFTbVJCUlVkeFRHNVlVV2c1YldaVFUxWnZiekl3VTJWdk5qSmlSRE5JUlVWWlFVNWhWREZJUlUxYVVHTmxkeXRKYmxGU2NYTnJSbFo1UkRCdFFWTmxielJwTDNORFlVWnVWRGcxVFV4MWRITmFkM2dyTlhRMVlVOU9OMDByTjJScFpWUnFMMkl4WkdaWk9GRTVaVEl4U0dwVGRXMUpXVTk0ZFZCVWJGZENUamRXVTFKVkwyOWhkM1ZrTTFWMmQwOWxSMjE0YjFwUmQwWTVhSEZSY2pSTVZrTmlWWEJxVG1VM2NuaGFRa3N4Y1VSSlRUZEVSRVF4Vkc1WVpEQkRVa0k1VWpSdFNGUTFhWE0xV1ZWemNXNXRPREprTlRoNlIwUnRkMHBQV1V4U05XeHBjelJ5WkdaTGJWbG1LekJLV2s1Nk1tVnlSRGx4U0djM1QySlJOWE5ET1dGRWVtOVFTR1U1UW1GWk5EQXdkV2h4TWpGbWNtNTRjbTlRUlVvemJXWldhek5oVTA5RWNFTjRZVE5PVldVNGRGTTFSRVZVV0RGc1UxSkpaVlJhYWxSclVEWkRhVEJuT1ZwTWFUVjZOSGRZVFdremMwTlJlRGxQTkhGWGFrVlphVGw2WW5KSk5IcGxWMWR6YVVaNmFqWXJaa3hyTUc0eE1tcEtjMDA0TTBoSGIxazVjekJPTVZodE9XUlNhSEYyVVcxRmJUQmpVek5VTmxCM09UTndTRmRzZFdsWWJYRTJLM0ZpSzNCTU16aExhbXg2YzFSWllVdExjall2UkZrNGExaDRiV1pJZUN0T2VtODJRM2hvZFU5bE9VWjBkbWRvZUdoemREWjFSWE5FWWs5aFQycHBiMUZST1cxalIzSkpZa1pZZDB0bFIzRnVjR1pIUzNCNU1XOWpRMVVyVDFKaVUzVjZaRzUwUmpCR1NtSlFaa1l2Y2tnd1JsbENka2d3ZGtSUFNIVnlSVXA2YVVKaVVtdHJVelJpUlc5RlozbEtiMjlrVFVsaFpIWkVXakZyYmpWb1MwTlZjSFpFTlcxYWJWbHZTa05yTTFObWRFdHFOVzFhYlZwdGVDOVNUSEJ1T1RKVVRHMWtZbnByZGpjdlkySlVlbVV6VVhwek4zTXpaVE5QZEUxdFFrUlNiRmhtTDBjMGVUZFlRa2d2Ym5kclpUTnllRE5oT1VsUUsybFVTREJ2VFVaeVpsUktMMWgxSzFrMVlUTmlkMDl3V1dsTlVXbG9kVFZETW1zeFpXOVRla2c1ZEZSVVNIZHFObGhwVUhGaWRUQjBURmxCT1hoQmFHY3ZOMVJZYjJ4R2QxZFlPV3RWYVRSWEsxbHlTSFpFTWl0aFdGQjFiWGxSTDBZNFFVWXlVRUkxTlRWMVVHZFBNelpCTjJGTk9HTk1lakJHTUhobGJqWlJaa3QxYm5kd0wwMXFjVXcwTVdGNVlXNVdjU3RoSzNRM2NURmtlak5YYm5OeVMxUnVSbVpZU1ZVck0xVTVMMVIzU210M1lsVlRWVTVOTldweGVHUlhaRlI1Um5BclNHVkNkbTVhV0ZFM01UUTBkbVpIUmpZNFlXVk5VMWRYWkdoblZFaFRMMkl4U2pFNU5XaFZka05WZVRCaWVHaDVXRmczWWpSbGRIWXlOM28xZEhWMkwwaEZiUzlKY2tZMVFtMDNOMUZNVWpFMFNWQTRWMWRIYlM5REszSmliamgyVnpkMllUQnJlRlpTZVdOdmNYTTVURnBWVjNjMmRtSjZaWFl3WVhFNVpYWkZXV1Z4VDJaYWFrVXdWbGRHV0haQ1UwWnNNamR1VTJKTE9IUmFNMWcxTTNKNGMzSkVWR05zTkhSR1NVOVBRek54ZGxvM01rSjZTMWh5U0M4d1ozRTVNbmx5Tld4Nk5UTnpXbkoyZEhaeUsycDVlR1V2WWpCeFR5dHhPV3BxVTFOT1pWSk5UV1ZTYlU0eWNVWlFRM0ZuYVVGd1NYUnhRVU5TVUZKVVJHVnBiaXRvWlZnek5uQTRWM1JZUlhkQ2VFNTRTWE5HY1RCaVZFcGxRM2RYZGt0VE5WVXhUamxtVms1aE5YQlhSQzlpYm1ORFJuZGFNM00yVm1RNVdUTTJhamRKTm10TlZUWk9kWEV5Tlc1Vk5XcE5PWFE0TWxoaWNIRjZOMXB0Vnl0UFVsbERRMU5XVG1FMmVHZDFSakJpTjJWU1RERTBjWFpVUlVzeFNGaHVOelpaY25WSGJuZDNiWFkxYmxjMVptWkhTVE4wWW1JeFpFaFRObTVrTlc1alVDOVVabTQwU21NeWVIWlRWRE5aVEdwbWREQkhibTFuVUcxdGNESk5TM0YwVjBNdlpVRm5NbWhQYURKaGVrOTVLM0ZUTUVkc1MxVndVbTFsY25CVFlWZFpPR1pWVFRsUmQxZGpjVzUxVmtaa1NHMTZkbkJpYjJ0aGJHZElOa1pvYW1kbmRVeFlRM294YVRKSVduTk9PRmRJU21oTlVsZzJhVmxZWWxscE5Va3dhMHB2V2tOb2FFWnBURE16YW1wWmJUWlhSMDFwWW5KbVJ6ZDBXa2t3Y1VWdE9VdGlUMnB0V2k5dkszQkpVbXh4TjFRdmRUaGljaTltTjJaRkwwNTRSRlZSZVVVNVIweEVjR2gxVmtaaVEwMXllVlJUTldwTWVUQXJTMHAzYVVaSmFGVmhNWFpQT1doR1dGVTNlRkZ3Um1JMFowZDZaRWxRYzBKYU5XVm5jV2x2UzFaWVlqZDNZMjVqWW0xa1RHeHpaRmhDTVZGU2VuUTVORWhCVlVoV1VISXhiekpOZEV4bE0zUm9TM2szYWt4TksySndjRnBJY0d0aGJYaE9Lemh5TWxsdU5WcGhNWE55U20xS1FrNXlSSE5SUWs1dFVsVlFWbGhhY0U1VFZUbEdjak5CZUZkNWRqazNVa3hWUkZOalYzUTNja1JVTmxWUU1FUTNha3BGUlV0YVNsTnpXak13VVVGQ1FUbGlhVzlSUVVwQ1NWUTBjak5uVm0xRk5rWk1OM2RFVkdKMVdESjNZV3hXWmxneVRXcFhNM0UxWVhZeWNXUlNUbXBtWVU0NVNUaDFTRWRuZFU0cll6Y3lkV3RTWkc5eFJXVXlXV3BvUkhBeGEwTXJjMFJ1V0dWQ1RtWk1XbmhuTkVaa1pubFZUbVlyY2t4UE5ISjRUWGhMV1ZReWFHcFpVeTh2UW05ME1IUTBlbEJFYkZOUGJqbEtTMjB2ZEhGcVkwTlFkRE55YVhJMU1XOUNSRzlVVXpkd1pqTkxjWFIxYkdGSmVEZFRhWEJHYjA5VWJGTlFRMmRFWjJOWloxcGhLelp0VVhOc2JFSllMMlJKU3pWemEyZHBhV2x2Y0NzNU1tZEZiMlZ0YjJrck1UWm9lRFZSVGs1M05ub3ZkMjVtTDFwaVJISjBPVlJ4WkRKbFdGbzBaalZEZFdwbFRsTllWemh5WkRWVlVFOXlNRTlFTVRZd1N6azNZMkZoZERRNVVVNHhVMkpNYjJGbWEwVlFORFIyVUZKWFNVVlFOVzFWT1dWcGNqY3JaV3d6VEZWR0wyMDJXVlZ1TlhoT09EWkJiRzAyVVhBMmRFeHlibTFCZW1sb1NEaDZNbGx1TTFwVVpWTkdOVVJZYTBobFVVVXJVVTByVkVOeVZIWjZiMEV2WldWMWRWWmtZak51WkVzeE56QnVTMk5tZFRKeUwyeGtkRzR4Ynl0UVJHaGtOazlzUzBwaFRVTjBaMEV2Yms0MldtOHZVRzFHWWtSMlR6STBOVVl5TTBoVFpHaDRaVFZNZVRoNVNHNTRMek5CSzNaM2FDdERVSFprWW1vdk56TmxOek00UVZBNWNrODNlVFpFY0N0TFFsQmtOMlpJTlZCSE5HUndjR3RsTWxGWVdqWnJSbkJIYjBVMFdsaG1ja0ZrTTBSeWRreHZPRUl5T0U1b1FuZEpNME4zYVdkNFR6WXlXVVIyWmxNNGFHUm9TMXBWWVVnd1dIVm5aWFZ3ZVZCUVFYaG1kV2QxV0dWa1NWSlFObVozTDI0dlNrTkthSGcxTjBzdmVVdFRaRTl0U1VKSk9XUm5XVUp5YVhOTmRWaEVMMFo1V0UweU9FWmtNM0o2UkZCWEwwRlZXWHBVUVdGWVoxbFlTM280U2pGQ05rWm1lVFkzVFZJM1ZEVllTVm94VTBJeFpIQkdNamd6ZVRJNFFsaDFabGRrVXpOMVowWklPV1ZWVWpBdk1XMVlkV2hpZVdvdlF5ODBSVUpvVjFSbFVXRkNZbVJ5TVZWUlQwdzNUQzgyVUdOeWFYaE9ha2s0VjBvcmJHbHpkbWxGWVdKa1F6STVaemwxTW5wWk5FMU1UemgwTm0xd2REWmxOWFZaWTBGM1dHWkJjMEZPT0Zwd01ISkxLMFJpZVhObWNqVnRNWGR4YUhGeWNUTklNMEpCSzNBdlREZDVZblo0ZWtaMmJYVlpNMnRTSzFCNlRtNUVkRkZKVUhaMGNVaEVRMXBHWVdsWU0za3JaRkJrYVhNMlJIVXliazFqVkhBdmNEZFdSWGQ2VEhrM1l5dFBlazFIUld4aWNrNURkRXd5YVhWb1ZsVXJaVTgyVTNkeGNVWjNLMUV5YTFWdVdFcFRPRWRTYml0UVVHb3JWemN4TldObVlXazVaVnBpWTJkWEsxbHBNbFY2YVd0M1pIWnhRbmxXZUhVelZYbG9ORFUzTXpsb1pYVXpZbmxhTm1WUlRUWjFVV2h3UWs1dVQzQnJZa3cwVlVwaGVUVnphRlY1TjFSeGQyZDROVTk0V0hsVVNVeFNTM2QwU1Zkb2VVeFVkakE0YWxSbmVFSkZUREZ5U0Uxc0szQjNRWGhHYkdoaGNreGxMek5GSzB0Mk9EaGxUa1ZNWW5kMGJHMXRXR2RxU2xOcE1UY3ZLMlp2WkZsbGRYRnZkREU1UVhsT1JHRkRVR280VVdGRmJFWjBkVWgyTVV4c1ptVlBlRlJ6WVZVeGJrTTNjbEJ3TjA1bWQzVXpiVXhNVG1JemFHUnZLM2w2VDFkWFlUY3hNM2hoYUc5SFNsQlRNMHhZZDJoTlZuQkJjRloxU1VoMU15czNiU3QyWVUxRFRVTmxlV1pvYkROcU9TdExjRlZXYURNMVQyUllhbXM0YkVsb1NrSnJWak5LY0dVNFdrMVZTVVZKZDNVd1QweDFZVlJETXpNdksxTXZVbFJ5ZGxWQlJXWktVR1ZXTDNjNFRtYzRTSEJWYlV0SFJWZFRVVUpUYVdwVWFrTkRRMmRHTUdzNGExSTJLekF3VmpaVWNYSk1TbFZMU25SRlZsSmplV0U0VXpOT1RuTmliamRGZW5CSWJrWklUWFJ0VW1saFIxWnhOamRrWlRkRGVFMVNXblZUYTFOWFUwVXhUak53TjFkVVNHRjNaUzl3U3pWVVluTnVhMFJSTmpsUFdsQTBVVlE0UTBWNk1YaExjamhwUzBKM1JHWklOMHhaUzJkMFNtRTNiRU12VWtoalNVb3ljalpSTjJkbVpIUkRVSHAyVjBneGJucDRaMm9yUlN0bU5uZGpieTlDTDFOSWFVOU5kblpoVldObWNreG9SRGgzV1RKV1QwMHJNVm8xU3pGUlNWUllUVkpUWkZwa05HWXZhMVV2VDFacFRqUlhhMWhQV2pabVdsSXJRbWhTWnpOMWFDdFlSbFpDTUVnM2RqVTBLMWwxV1RsREwyb3JVRTl5YVZscU5VdHliR0YzVEhSWU1GVXhVRnBTWTB3dlRsTXpSUzlvWW5jNGVFOW1NMjFFZEhCbldpdDVMMHBOVFZCQk1qa3hVUzk2TTFwVUt6Vk9NRlZ1Um1wVlZIbEdVRVE1U2xCamFqZ3hWMDk1ZWlzMmJrWmtNbnBXT0VaaU5tc3ZWbGRqUzBzeWRUSkxLMmwwYTFVM2VFOXpkekZFZUZaVGQwSnJWRmhxU214V2RuQmtabmRXZEZvd2JETkNMM2hZV0N0SFpFNW1PRmw1U1hCeUsza3JlV3RhVVV4TFVIUkpkVFZMTHpNdmN6ZDFRMFV3TDBOWU9FWktaVUpvYkZsbU4zRTRjVW95ZDFZclduRXllR3BvVEV0T1VsSmxZMnhwUTFsSk5IZE9kWGxxV0ZsRE1GbFFkVTlsTmpsblExUTRSM2gzV1RseFpYcGFkVGt3Wm5oNk55ODBSMnAyTldwS1VHY3pSRUZpVlVWM1EyaFJTMU5OU1hoTGVIWk9NRzlQVXpnd1UyUktjMjV3VTJOVWNWWnJObTl6UTJaeFRsUjJhRU4xTm5oSmIzWnpMMVIxWkM4elMwdHJlVTh5YkZwU2VIWnRjWGxyU3l0c01rVnJUemhOVTJacFRGVkROamgwVVhsYVlrdDFRMGRhVTIxcVUydFpaWEZaVlROTk5FRlNTMkZ2YW5GRlVFcFZWbmhHYjI5bVpuaFdUVVo1VVZaRlVrdzRORXR0UzNFM1UwdzFNVTk2V0Zjd1pFNWlUWGRWZEhWd05uUndRaXRtWkhwWWFGQmpjbUZzZEVwVVIyZDVjak5EYzI5RWJsbDVlamQzU21zM1QzcGxUR3QxVXpjd1ltNUZaV1JPV0V4Q1ZIQnRRMnQzYmpoU0sySXJZemdyTDJsMVRrMXdZelowVUc5UlJEUmlWRGRTUkRORWREQklXbTQyWVdablZtcFVibk5rVEZwTFkyRjVTVzVQVjBoWGNGSjVTMDlaUzBWSlFtaHhaRXRhTkNzMlRrdGxlamxGZFZodmJYRXhaRTRyV1hSb1oxaHpaMHhVWmpWWUwyUjFWazlYVlZVNGVqQlNkVzQ0YTA5d1RIUnJjRE5pVDBsamNYRXdRVWRtVEZKVk5rSkdWVmQwU0U5aGJtWmpORFIyVlhkMlNHNVBaRGhDT0ZsSGQwRm1iR1ZUZUZWd2VWTTBPVWRKVXpnMldsWnNSM05aWVZGNEswMTFhRFppVWpCek9XTlZiRVpVVWxVeVEyVkdhREZEYTJOQ1lqRkJMMWhyUkhSalkyMDBhbXh3VVM4MFRWWXZZWFJqVWpWNkwyZHpWalJMY0ZGNU4xRmxlVGR1S3pkWVVDOXRSblJKUnpaa1NqTXllRVJTTjJWd1NsWllUWEZ3TVZSWFJGUmxhRmxPZVN0aVRHSkVLMGtyTjBWWE9VRTRWa013VVdGR1lYRnJiWEZLUWxwVlVVaHRORUZKYjNOUFkxVTRWVVV5VmxoT1FrRlhWRGhqVWpJM2FGWlZZMFowZUhsSGRVdFRTbkZ2WWpsdlJXbFRlVzk0Y1dsMU9WWkpjbVZNVWpWRU0wcFZaMnBrVFVZeWJXbDROMjU1VGtrd00zbEVSV3BoYWtsUFpTOXVLMGhYV2tsdFYyOWhiVElyWmxveEwyWldUVXR5ZFc5bFRWcDFZbTFuU0RWaE1XOUNObFZNZGtsbldEZE5RbVpsZWxRMk4yTmlVbWh0YW5Od1JHaHBablZpTkRobGNWcFBlWEpxVFhkUFpuUk1TRWtyTmswd2JVdHRZMGxhVVRrNU5tUTFhV28wU1ZrME56Wm5SWE5GVVc1SWN6Um5NM292VERSMGFFNUpiVTQzTVRkdlIyZGlMemc1T1V4b2RHbENOa0pqWjNWWFRUaE5TVTlLYlZGQ1NHSTVTa280V0c5alEzQkxlbXhuZDJoeUt6SndOMUZHTWxnemRXTTVkSE5YYW1OS1RGSnFTVzF6YjBoemEyZzJlWHBIYXpoNk1GTlpXRTQ1TUhNdlpUWjRWSGszWmxkNGNVMXlaalo1ZDIxR1QwOUZNWFZpUlVKTlN6TkdjMmhqWlhSdlpURjNUQ3RaU0ZGUWVrNVVWV2QzY2toVGNUZzJMekJIVkRsaGMzRnlUaXRvWVhGNmRsWkVhR1ZsYlZac1NGWlBVVVoxYkdvelFUazFTa2RoYm5sSlRteEZNRE5KVTJSYWFXcDRZWFJNZGpOcWNtcFBWbUoyTm5CYVVYcFlNREJDY0hKSFNqZElTR04yVTFaeE5GRjZUR2xLZFVWTFkzQjJPWE5rZVVKeFFqZzJTVTUxYkU5R056WlBWSHA2Y1VNM1FYRnFhMFJKUVRCVU1qQjJZakEzVEhCUmVsQkpaVEpqUm5ZNFRITkhkbmxNYWtNNVZXUnRabkJVTDA1SU1ESnVZek5tZWtob1kwMUlTR3RNWTBKcFJ6aFdibEZIWTFsMVJUZ3lOSEpSUW1wcGJVSmpTWGM0VFZBelRHMXFOelJ5VW5KMU5sSnhlbXB0T1hwR2FtVlVMMGhtU0Zab1duZ3ZPVVJRTkhCNVprSkZlalp3VmxCWlpsUTRiSHA0UkhabWRFeEdVbXhKTTFKVWFGZzBhVlpzZEROUFlYTkpXWFZXYkVobFpVeFVjMjV4VEZsNmJ5c3dlV2xKT1RGa2J6RmpaMVZWVWpsMFZXVkNlQ3RhVWxwSWQzZG1hRU5OUm5sR1NEVjJhRXBzTHk5Qk1UQTBTMHBKU0dwS0swaHVORFJtYkc1SlJFWm1WMWRoZUd0dk0weGxiM1kyV2xoaWREVmxLM00wYWxCdVJGcHNNMnRUZG5BelpWTk1UWEpqTjJWSmVXTTRlSHBWY2tGWVJFOTJiRTFzTDFCUE5HTmtVVFpMU0c1Qk4xaE9ZVzR5ZEdNcldVZElMMGRYU0hWeFIwa3hNMkpsZW5BeVpGSldTSGt4VVRKbFRFMXFOSGhrZURJMGRUVkdlSEZrZDBkMlNFaDJSMlZQUmk5VmFYVnFlRmRVVUhocE5YTm5XV1JJUWxwalkyZHFaekpWVkZOaGNqaFRhbFIyVkhCcVkybG1kMlZKUjNOUVpuSkNkblYwTjJSWGVIUlNjMkZUYWpsNlp6YzRUWFp5YkRrM1UwNXNUMHBZY0hwbVVqSjZWR1pCTjJ3MEsweDJibU5uT1U5eGF6Vm5kVFZ2ZWt4WVFsQTNWR0pPWm1FelUzVnliM2hQWmpWdFFUTTBUWHBvYjFGSVlUTnZVblo2YkU4MFdtY3hWVXgwTmtka00zVjVhMmt4TkdsNU0zUmhhVmg1V1Zkd2JYaFVLekEzVEVsbFJFbExMMGxqVDFSemFXaG1RMmhaT0V0UmVuTnZlR3N2ZFZKNUwyTnJjRk0zUzJOSFZtTkVabU5HWjI1M2RtVk5kSE4zVDNwMU4wRnBUMFp4UzJsdVZrVXlja1IyU0RKUk5HTlBSbGN6ZWt4Rk5DOTFWVVJYUm5GWVExUkROV0p4VGtNeGVTOTNiakI1VG14UVNYbE9iMFJNVWpWMWIweENVSFZETm1wcWVsUTNUSHBVTTBKTmN6VjZTME50VTJ0WlltRkpaRTUxVUZjek5VdHpUVEI2TWs1MFdqZFJUVTR6U0RCTVF5dGpZakpXUWtaSU5GaExXbXR3V1RWMk5sQjVPRmhWYW1oSlVFUkVRV1J5Umk5bGRDOTRNblUxZWtoa2FEVnFiM0k1YUVvek5GSlVjeXRoYkRsdWIwZFNjbE5uT1hKQ1IwODRkR3RhWWtNMlJXNUlOWE1yVW1wNlN6ZzRURzVOTTB0RFlqSllVRzAwUlVnNFdXWlJjeTlrY25CMVltdzRia0paY1dSclJVVnhjM0pZY1ZoRE5XSk5hRXcxTldsQmJHMUJPRWhJU1U1dGQweGhOVkpQU1hkMWEwWldSV3RGVW1jNGNWbHNRMkpFT0haaFpsTnNTV2xIVFVGQ05FOUtTSGRQUVV0VGVtUjZTMVZ3TjJGeE5uSmtNamR4TmpaNlRYTXZPVTQ1U21vNWFFNW1TazAxV1VNeE56VjJWSEl2VW1KeWQxWjVkV0ZqTkc5MmR6WTRaRGRCSzJGQ2VsUlBhbEppVUVoME9IZG1kV2RSTDI1c01taDJka2wxV0ZOVVVHdGhNekp0UlV4RmNsQnVOWFpaY3k5S2RtSnZNRmhQTVhGMWJqUkxOelUxUTNwMFJUVnNTVFZtSzJ4MUwwZ3JLMGMxTkVZMWVVVk5MMEZKWmtwUmExWnVjbWRKTDBGWlprRkVUM2R0YlRSRE1qWkNaSGxRVlZSVVluaHNSVk0wYmtOUVpHRnVOak5qYmxkbk1UQlNSeXROVFZkaWJVaHRiV2xJZFdGMGJFSnhlRVV5ZWtkalRWQk9NREE0Y3pKMldtY3hWekJJZVhWdmJFZDZaMmc1SzNNMFdtTXhWbG95WVhaUFZYVm1XVlJYTDBkRFJWRm9SRXhCYUdoUU5YbFRkMmhqYVUxM1JGUlhURTlwVGsxMmMwUktTVEZEVjBKcWNFWm5lR3BUUW1sNUswcElSSE5VUm5CbWVUaG5aa3gzUlVKRGRYTk5SSEJKU0NzMWRWRldRVkUxV0ZkRVIzSkxNblJ5UTA4NFRsZHpTVW81VGtWdVNtcEVaRlJEY1ZsSVNtZE1SMnhXTm0xTFNtdFNkMkpoT0VKbWMzaG5kV0pXVkVGSk5XaEtPVFIzTlVOd1VqWlVTMEZMWWxORGVtMWFibFZQVFRGWFJXUlpkV2xPUVV4TVMzVkdTM2RHVjJOdmFFcFRlVmxXZVU5b1FYSkxjRGhRV2xWTVJHeDNZV0ZyVmpKcVVuWktTa05tVXpaSVdIZHdOM1pFVkd0RFkybzBTbGxMYzBOTmJsSnNSVkJVV1RoSVIzSkdLMVpSUmxSUmJtcFhibTlQY0doT05HZzVjbUZ6VERsWVZYUkZVbVpSYVVkRk5GWkxZMGR4Y1ZOdlJrVlJjVWRFTmk5S05XdFNkMm8yV0RSbk9VdHNSWEFyYWl0WlNVSTFjRVJEWkc1dVExRlpWVEJoUmpReFdXcDFjVUV2UldaaGNGaFhaVWRVUWtkdk1GSmlUVTl4YkVwTFZsVkZWRXBGUjNCRmVVUnpWbTVTU2poSmNIbFlVMUZSYnpaTWFFUlBhWEZ2WTI5MVdGSmFZMnQxV2pCUFJWY3pSRWxNYnpsSWIybFdTRXR5WjNWRU1FOU1lWEZVU2tZMU1tRnpaMDk0TkhGVlZVZHJhV3RhUm13clMzTnBNMnhDUlVoRU5HRlVSMlJUYjB4RU4yWlFWVUpWUVZaRldWWkZabGhWWld3eFkwcERVMEpFVlVaVWEwSm9RVUYxVlVwSFYxQndZVVphZVRaT0syUjNORmxHUkdSTlNrSnJTa1pRVlVNNFdFVlVjMmxXU1VkRGEwRkxTMFo2ZFdSSmJqUlZRV1pZWjFVeVNVOU1VMkkxT0VaS1FtUTNkVzlIT1d4SEsxUllTbEpVTW05WVNFSTBXRWxNVUVneWJuRkhXbFZFWlVSd2RYUlFaMVpNVmtsbVpGUnhlVVV3ZFRaT2FYb3hkR0V4Y2xOSk1qSjRSRlZ3Tm0xelUyaFNRakZDTlhkUGFuaFNNazgwU21WdWVXWnpZVmhEUkRSc1VXdG9LMEZKUW00eVMzSnVjRGxFYkd4V2JrZzJTRE40VGtSQ1YyMVRRM1pxUmk5dVl6UXpWRzluVVRSSFFVdEVjMnRKTUdka2EyaDVVR1ZxVmxoTkt6QlZia2MwVmxwR1dGRTVZbkJLV2pkU1dYSTNiME0wWkZOaFdVeHdXamxVUldSTGEzbENjM0Z5Y0Vock1URlZTa2RMWjJGRWNVUXphamh4YjJvME5tbE9kVEZhUkVGdmQySTViV2wzTkZWTmMwdHZURU5uUzFobmF5dFZSVlZTV21admNFZzBWVzV4VEdsTFUyaENhalp6WlZaWmQyNU5PV2xFWjNWb1dteHpZVmR0YjFKTFVuTldOa3BaT1VrdlZFdHlSWFZNTVhSVGMzVXhVMDFKYlhWNWRsbzFWVkpDUmxNMWNFWkZjV0Z3U2tSRVNXZHBiRlZHWjNwaGFWb3hLMEUyZFc5T2RVbHJNR3RvTTFCTFZFeFFSelZ3VWpWak1XRlllak5RVUdGSk1UWklRMkZIY21WS1RVOXRNVFpET0Zkakt5OHpNRXBTZFV0M01IRnFkekYwYmxKSlMyOVRkRlZZT0UxUk1VNVNWRXRxVnprME5XVlpWbGMxV2tsWGJXaDJkRzVPWm5wQk1YUk5lWFYxTmpVNVpHeHNhMkZxYlRST2REZHhZMDFxVDJKalRqaExZalkyYWpVMGNVSnNlVGhhUTNGeWRXRk1jVzVaTUcxeVNWQnRSM1V2YkhwWk4yOUNVR2xTWTBKM2NtZElhMDU1UTJ4amJVVXpjbVpMWm1KWmJVcE1NMUYzVWl0TVFucG9OaTlvZDNoVWQyaERiMEpOV1VRNWVucFdVMWN5UVZsUlVXRkJlakZZTUdkV1NtaGxWMUJHWlZjM1ZHbG1WblZwZDFSQlUycGxSV3g0TUc5bVVETmljMk4zU1d0M2ExbHBXVmxSVkhCVU0xUXdLMEpDV0VsNUwwNDVUMjUzWldWR1FUaG5abmw1UmpCM2RWUjJRbEJMU0hORVRqQlFWSGRyU0VWVVdTdDRSakpyYzBobmRuQk5iVGRFVkVzNVlVSjNUbU5LZFhOamRrWlpWMlp3V2xoRFYzUTNkREZSWW5VM2MyUXhSRmhDS3pOV1pITktNVmhpTXpCSk0zZE5TV1prVUdzNVdGRkNObXhXZVVwelNuZHZPVkJZYkdaMU1XeFlTRE5XUlRVMVUyUlROWFJXZEZGV1MyaENhMkpIUTBaclJtazRhREEzZVRCMmJGWnRVbFpJYm14V2Jsb3ljbVEzWkRrNWRTdHphemxsTDB3MFdUYzNkbTl3SzBVd0wxSXZMekIxVDFwNFZYcEVRMDlMYzNsWU5ubFVlSEpTT0d4RU9VWldkM1kxUWtSelIwc3JiSGhhTlRsMVF6bEZiRk5sZURKbFJVdFdTRVV3ZDNKaGEwMVRlSGxDVlhORGRqUXJPVkJxYW1vNVRubFFiaXN3V1U0M1JHZFZSWG80U0Rkb2FtTlVSamwwUkZCWU9HZGtSR3hKTVhwUE1tZHJSRmR5YldKWVFWTk5aRTEyYWpkbWJGTnFVWEZqTVVSU05tSnlaR2N3VUhwNlVuaFlUMUpVYVVkemFuZ3hWbUpLWjFNMGQyeDNiVGczV1c5NU5sQnpOWGhPWkdsSVEyMUpNR3Q2VkZSUVJIYzNkbkZ3YnpoTllsVTFlVWQ1T1ZCM2IyWkpSVlpFWjBSWGFGUk5LM3BrUTBneWIxQk5VR1pxVkVRME9UaDBZbGxCWmxwbkwwRXpOSFZqZERWeWRWUTRhRmxNWm1wbVEzbzFURVJEU0RsVVRGUnFTQzk1YWtndksxbHhabkpFYW1aNlR6SXZlbnBJTHpWYWNXVXljSFptTmxrNFFWRTVlQ3RHZEhJMGFpdE9LMEk0YTNwR04yWldjRkF2Y3pWM0x6RjJOM1IwWm01SU9XYzVlQzkwTlZKaVV5OVpNams1Vkc1dlMwaFBabmxrVG1aRkwxVktOa1pOTWxFM2QzSTVZMloxVEdOUFVsQXZkVmhOTWl0TlptZFVVR3N2UTFBNFMyZFlVRzVMTDBSNlJuWjVhRGh6ZG1kbWRFdEVZME41V0ZsTVlXNTBkbHBuYkU1MGQwSk1PRW8wVmpocU5VUjVXVGRqSzBReFpqVlVRMDR2U1RSV0szWkRXRGx0WlZKNEswUm5URU5UTkZOVmFHdDZPSEJUUlV4bVoxQkRMemhJWjJ4T1lVVklNR0kwWlZFM1dHRnpTVkJzVEdSblVUVlRVRUp4Y0hkelRVOVFiR05tWjNJd1FWSklhVFpZVXpSUFZqbHZUVmN2UVZoWlVETXJRVTk0UlhVeFYzb3ZUVzlUV0U5V2VYQkRXRGg0ZDI0NFNUY3dZVFJYYUU4clNHWnVlbU5RY1U5dGJrSlBiaXQyYmtKVVdHaDZlWEZrWjJsa05HVXlaRTRyVml0UUszWnJWekUwSzI1YWRuWllTVkI0VEdOQlRHZ3pjSEozV25sUU9HTlRXV1pzUjNacFpuZElRMlk0VUhock5YSjBPWGxJT0ZveGR5OVZURkE1ZFRGSEsyNDRRWFJEUW1SeGRHbzVVM1ZvTVN0NlVFZE1UbVIxTDNZM2QwWTBVMlZTZGpndlZXaE1PRlZUTm1Oa1ozUjFkM1pXZDB4cWRtcDJVVkEyV2k5c2R6RTBaR1JuTHk5bk5UTkdNV0l2ZVdwbWNqZG9PU3RYY25wcUwzbGtORE5DTDFSbVoyODBhemw1ZFVZMFZHWnJNM0JFUmxVMVVFWm5WQzlyY2tVdmQwMVBSSGt5UlRoNmVqaGlkbWMxTDFSVVVFb3ZabU52YUVWRFVWRjNRMFpVZDJkelluaDVUWEoyYUd4aFdFdDJjRTVIZGtZMlUzRlhVM1ZwVmxnMFNtaFBja0pKVHpWRFUxWmFOSGhMUTAxSU5HUm1NWFpZUW1acE1reHpWSHBRUjB0aGRVVlJPVlZxV21GelFYazBaeXN4VFVObWJHSmhiVnBJTVU4eVNqUnVOaXR3V0hSek9XUlpjbFozTHpGNlJGTjJZbGxuTWxCeE1uSjFWbEJRZUhSd2VXNVNialkyV0dWVkwzUkRlV1JJZWxaeGNsZFNLMDlhU1ZsSE1HOVlibkJrWWpjdlZETmtWRmxyVDFSNVVHaDJiR1pXZVRSb2RtaEpVRlJzWTBSRGIyZFJRM2hMVWxsRlEwVlJXREl3YUdwSFZFZEZhakZrWlV4VGVXUnNSa2xRYzJ4RGFYUkRSbXh1WjJKb2MwaEZOVE5UYTBKd1JqQllhRUYyZWxaamNqSXZlbTU1TVc1QmIyOVFSVU50WTJFNVRrbGFVMll2TWpWYVdXWnpVMGxLUlV4aU9UQmhTRWMzWTNWSWRtNXNiRkZQUXpKRWJUTk1OWE5KTjJsNGRFTnFkSGx1ZDNwSFJESXlPUzlEVGtkNVdraFNhV1p4UVhjNVJUWXdhR3htTlVGaVptOU9PVVo1V2t4cGVEQkNXRlpXUlVOdFFuUkpWVkJ0UzA5WWNHTnZWWFZaWTNKTk1VbHZNVzFwV0ZaeFF6WTFjMHBWTmpWUWMybG1jbFkzTHpkYWJuUXlORXRFTW1GNk1tVTBVbGswVGk4eWQyazBhbmd2WTJRclQyaDFkWG8wZVhCWWFtY3ZSeXRSWVdKRVpsVnFNMW8yYUVSTU5HeFdaRVZvTUZBcmNsRkNXVUUyWkV0cFZUSklWRWxsVkVZeFEwVjVTRUZITTBGa1YybENhMDlIUms5MVUwWkxSMHNyWVVOcFFWcEVla0pLVDNKUldXcDBXRmxIWVVOTGFYcHJjV2RLT0dSMlptVjZZWE42TWpkaU5VTnhiakU1VlRCeWJIWlZUbHBOUmpsM0x6VTVUakphVDNCaksyWlRiMWhwUnpkTlVHUkpLMUJNYkM5SUswdzRRaXRtT0VnMmFURkZObXhxVms5blYwRnhUMkoxVDNoSVZrdHlURVpGY0V4RlkzZDRkelYxYUU5M2NtdExXVFUzWkdORWVWVlRhbUo2TWxKMFVtMXRkekZSTm5KNk5FWmFXbmxoUzNCSmRqZFRWRGxVYURseU5VMVVNM2w1WXk5dU1tNXhkRzB4S3k4NVVsb3ZlVkphY0hab1VpdEdaVzlsVTJoWWFHb3ZOVGRwTDJoMk1qY3pOVmRCVlhaSGMzWTFPRTR3VkdkS09Fb3JSVzFZZGl0TlQyZExaMWw1VW1sa1dXZHJWbXhLTVVkVmRFcHNSR0V4V1VkUmFrdFVNV2hpZEU1ME5qZFZXVWszTVM5c1dGRkdVSEpQYTJsc01VcEJNVW8zWlV0RlRVY3hURk01T0RSVVYyeHVNa2RQZEVrd1JIVm1XakJYYjJwSGQydDFiVk12TDBOdFltc3lkbGg1ZDA1NmFuVk9XRE5FUlZoSlNXWnZlRFpOYTJkNlpXRlFXbTg1TkhkVFFVbFBSMFpzZVVGS1YwWnBWR2N2U1RseVQxaEhXbVV5UlhsWlEyaFhNbEk0TVRCRmNWbFhTaloyVnpKak5FZFZhWFI2UlVwc1NtWnBiRm92UlV3d1JqSjNkRkYzVkROVFRsaElhMUp6UkRrME9FWnRURGhCWmpWRU4yZ3hlRTl1Y0U1bmEydzBkMFJRYW5nelowNU1XamxqUjNOemJtVnFWakZNVG5WV1IxVTBiRVZoTTFwYWRuSTRTRGw0Vm1aMk1tUlhXR2wwTTJSNlZXSjNaRGRrWVRGbWRIcGlWVEZzUnpkS2JuVTBXbGN4VjJOeFR6WXZVWHAyV0ZOWEszaDVPWGxCTlM5V1VWbFpkME5CYkRodmJXMTBTMUpFUTJSblkwRjZVaXQxUlRkaVMxUk9SMUFyVEhKMFEzRk1ja3BpYzIxNVlsUlBXbVJtV1Rsa2NsRTNMMWxPYkhGUEsxaHJkREYzVTBSb1NXNUVhWFUzYW5WTVVUUndhVXhvTUVoTGFsQkxjQzlCUTNWNk1GUkxRbFp0UzNWMGNVSkVjVTV4WTJGalpVVklVV1JuUlVnd1UydHlZMlJzUmtjMFkxZGlXSGxTWkhCcFFXcE9MMDF6VEhocUwwVTFVVzF1T0c1UFJHVnFWbkZKZUZsU1owNXBXRU5JVERsNE1WZG1kWGwyU0VoemN6ZFNhek5TUldGaVkxQkNjR1J2WVRGWGFISm5aR3hLVG1jMVpXaHViM1p2T1Raa1lrSlhXbXhpZFVzck1sazRlVVYzUzBaVk9YTXphelJHUVhsTU5rSnJaM0pVVFhRcmJuSTNjWFpqT1dOMldGaHlWeTlaT1M5YU1GRXJaWFZ4ZFRsSFFteHFOM2MxYUhSTFdESlBORmcwZVRSbWVXbzRSRE5IZDBaa09YTnlVMjAyTDJJelYyaHNUSEp5YzJKTmNHRTNhRkJXY0d4QlMxZDZjMDh2UnpCcFRUTTNWemM1UTJWNlJtdFlUR1owVDIxRWREQlBSV1YxYVc1VFFsQmFLMjFDUkd4SlNVVkZNbHBoVVZZMVVGVjBjWEJMY2tsblUxUm9ZWEpsWjFKSkszZDZaemh2U1hCaVN6Z3hRVXBsVm5aVFdrODVTMkp0VWxjeGIwa3pTRlJVZG5sWE0xcHJNemRoU2pKdFdVWnFUMEZJZG1WMk1XRkxlQ3RtVTBGVFV6WjVabXBRV1ROMFJITTRNMUZ1Tm5GaVJrNXdWQ3RCTVU0eVpWY3pTV1Z3VFRac0syTTNlbU5IZFNzeVFuRjJWRFZ5YWl0NlF6UTBWSG81VGtZcmRqRXhiSE5KTlZKWFVGQkxSbHBhTVdSRE1XTjNjVFJ6ZGpKbWRqSnJZWFYxYlVReGVWcEVXVE13U2k5UVJGRjZhMjFCZG1WbE9VOU9LeTlpWkhWSFZ6aFhRbmh1ZGpSNmRYTTRhRlk0UVZSeGFrc3hNak5XTUUxVmFFSkpUa1ZLUm5kUlVEUmFPRXh1TlZoaVVIRXhhbmxKUVVoak0ySkZPWEpTVmxCNlJ5c3dNbFJyY2tSMGRXaHhSVlV6T1d3M1kwZzRUemg1ZWpWYVdsWjFRM0ppUW5Kc2RrTnpPRWw1YUU0dmRYTmlZVVp6WVcxYVVERXJZamh0YzNreU15OWpVRXhHZGxJeVJIQkpTREp6VDBkVVpuTjROMU5xV0ZOamVXWjRNR1pMVlRjeFVFNUNWRGxaYkZoWk9IbzVSa3M1WlRoV1MxUjVOa0ZJUWtGcWIzbE1ka0ZLZUVWVlpVOVdVbVJ3Y2s5UU1qRlhNbVZUUWpCWmVVY3hkbE5EUm5oT2JtZGFTRVpSVEhSdlpHcEJVR3BNV1hrNE9UVnJhV2RXUnpoRGN6VXlWRnAyYjNKaVNVTk1MMXBHYzNreVluUTJOMW9yZFV0NmNVZHNibk5aVmpKWlNFTk5ibmhvTDBvelYweDRhMUpNUm13MVVUSmtlalprV2xrM1R6ZGxObVZJVWs1aFdrNVlORTB5TjFWalduY3JVbkpTVTJWNlZUVm5TVFJNTDNoNVpuWmpaa0phU1dkQlN6VldjbkJuZDFoUFJGVmtlVlZ6WTIwNGFtbzNOMWxvWmxjME5GVmtPV2QxVm01VGIyOURkWFJSWWtSU1RFWnFVa0pOZVZWVGJHWkNjVmxzTTAxQmEybE9ZVFZ0V0Rod2JucElhRFJYYlROUksyNXNhbWhVVkRaSEswMW5UM1JMVXpWa1kwSjJUVEYxT0hoWk1ETnNZall6UkdKaVFubGxRazFPTHpGVk5rc3dOMnhuS3l0cVdXWkdNV0ZzTWxWNlpYWkNlbVE0UXpoa1RXbDFXRUpEUVV0R2EwVkJSbEYyYkRaWE1IQlpkRmMwYTNwMFVHczRObXRZUldSYVdFWnhNVE52U21Nd1lsQjJRWEpQWmpZNE5VMVNkRmxETkV4V05HOUVSR1V4VEdOdU16VndUMWhxWlRSaE5rRjBNVTU2V214UGJrcGtabVZ0ZERRclJFOTBVRlJyYjJ0aE5ETm5aekU1UTFOWVJGazRjekZSTUdwSFNXbEhRVFJzYzNWdU9XeHdVVFJFT0hacmJEUlVRVXBOVkRVeE5XdEZia1pDYTJSeFFVTldjSGt5VVRSbWEyd3JWRXg1VEhJMlRWQkZVME5NVUdWT2VtbFpNMlZ6TmxkV1lWZGhZMHRZYkdRNWRUTmlNM1pXY1RKS1RsSnlVR1l3Vm05Qk9UbFlMMjVJY0VvMWREWndTRGxpVms5aVZVNUJZazVQUW1STU9VWllNazAyVEdodVNGZHNaREpNVFhWcFlsSnBNVGRpWWtKaFRqWkdhamg2TUVsVk4wSkVZMUJ3YW5wQ2NYTjNhbVpWZGtaM2JrNWFlbXM0ZFVJM0wyRnhTemx2UnpsMU5uSmhZMDVETW1sWWNuVnBjV0V6YW1FNWJrNHZTSE40WmpneFptczBkMmhGTkVKNmVXOWFSalJOVTB4NVJtRkhiVWg1UjFWMGRFVndaamxuYm5GQldqWm9aME0yTUVGTVRFWXpSR3RwYVhOV1UxWktNbUppT1d4RmNrVTVTR3RUVm1kc1N6Wm5jMnN3UTJoSFlWSkdlR2gwY0ZsNmIwbHJiMEYyUkdoTVNrRlljMUJDTDFCUFVWQm9NV2t3VVVoNFIyMUNXSE5PYUdwWFFXMU1Samw2YVVzd2FrczJjVlU0UjA1aU9IRk1NVTVDSzI0ck9YWlJaR2RYTUZWVFRVeDVOMVE0VjFjelIxSldaREIxZVVwUVpIVjVOek5HZEd4NFUwaGpaVTlGT0hWNFRHUjBTemQ0UWtOVFJHcERRV0ZIUmxGUGFFbzJTMFZqVWpSalRETklSekJuT1VGMWIxVlFiMGhaTmxjd1FXdElablkxYmprMk0ydEtlR04xTHk5aldESlZPVFpsZEhGa2JWb3laRzVhTTJSdVdqQjBiVGQyUTFWNGVFZDBSVlZsT0haQ00yeHJhbTUwT1M5SFVqRnNhWFpvVmpkcU9YRnFRelFyZVcxTGNVRkVkMFVyUm5KMFVrYzJXV3REYUc5NVVuZERSV2xEZVVGRU5FczRiVVZ5WW5KR2FuZE9iRlp2WjBSME1GZGtiazVFYW14UlJTdFNZbk5ZVkhkeGJERkVVeTl3T0hVM1JHdzRjM1ptWlhVMmMzTTFObGd5YWxoaGVFZEphSEZzUmpodVdtdFBSbTFuZUN0UVJXRnRRakpaUVVKTFMyZFhjVE5WUVZGNFNVSmxLM1JoYW5FcmMxaHlVVVptT0RSNGNEaHBlV3BDZFVGRU5DdG5OMEZEUzJaNFoycEJiV2RyY1V0QmVFMUpjRkZSVFZwd01HOU5MMDFTWjI1VWFITklLMVZFYW5GbmNHUkJWMEl6Um5rNFZITm1ka05tWlNzdk5XZzRia00xSzA1SGMwTndkekJUT1V0MFJ6QkdNbloxWkRKUFkxRk1hbWRZYjA5dmVXeDBjVlZCUkZRdlRVSnFVWEYzU2t4TVFYWlJSM1JMVEVwb1FrRXhlbVZOYzFaSlduUkNhMk5aYjBkTlNETjJVRVpUY1hONmMwUkhSVTkwZGxNNFpHRkpXa3BGVkc1Q2NGZHNVMVZhTm1adFUyUlZObVUxYlZvMVEzSm1VM2hrTWxObVZUWnJaVkJ0VFdZeFNGVTFlWFZOYm00elJ5dERWVlV3WlU4NVYwdFlhbVF4V2prM2RqRXdaR05HV0ZObVl6QXdlRTFKWjBoMVRqVlBSV0oyWlhwRlFWTm9TREprYUZCd1FsUTRXVlpMTkhKM0wySnZlRFpOUzBkRWJqTmlkbk5DVG1JdllrTnJjREpVVEZsMVRFcHhaVmQwTlRVMFNVWnVaVmQwZVRaMFYwNXRjVGQ2YlhrM2MwOHpUWEp6Y1d4a1VsaE9TVFJ6ZFZoRVZGTllSa2N6ZEVaTWFWbDRXSE5vWXpoSFNFTmFhMEY2YjFSNlRraFRXRzVwVDNoV2VuTlpiRWhTU21nNE1HTjBLMjFIWVhSeWVURnpVMmxJWW1KWmMzWXhSalZrZGpkWEwzQmlTMmh4YlVaMFprZHlSaXRUWTNWaFMycG9XRkF6TjFwcFIwdEtOM1ZGTjJ3cmVuUkhOV2hrVnpGSVVsaHNNVmQ2SzFKcFNHbENUMHBJTVVsREsxVkxXaTgyZUVwa1lrRnVNalJsU0doaU0zTlBkalYzV0RKRVpYZGFTRmRhZUVOT1J5OXpXV05vZWxCWmMxQnVVVVJ5TmpORlYyOHdSVzVEVFhvdlEyVlJXa1pDUXk5eVEwUlljMUJNVGt4d1NXOVFiVkF5Yld0eldHeHNlRFJXT0d0dVYwRnVNMUZzY0VwNk5WbFRNR3BrTmxFeVRXcG5lamxxZUhWcFpWQlhVRGM1YVVkQ1RWZFJjREZLYTFwaGFUaFVZMHhwYzBOWVNFZGpUVU5DTlVsbGVWUjZOaTlXTWxaVlRVNWhkMGt6ZUV4cGRXSjJOMGQ0ZFV0R2NtWnJNVTAwTHpoTU5XNXZZbWs1V1haRloyTk1VRzVQYm5WWWFtWkhabGRWU21OYUwyRk5iMngxV1Rrek9HNW1UbFJYTUM5UU1teEVXRU5VWkhSbWVFcG1jVGhKZEUxWFdEbGFXV1pNSzNOeFkyNXJWSGhSWVdkTVJuWmxiVzB2YTFaaFMwSXJNVXBLVUZoNFNHOUpjR1JCVkRkUlVXUkVMek12U0V4bFJISldSMmxPZUVKNFlXTm1OemxNWW05d00ybFhhbEZ3WWpkb01DOXdOMlZEYlRKWFMxUkxjbXBxVkM4d2NFMVZTMWRxVlU4NFVWaGhUelV2VHpaT2RHVnlkMHhKWTNwcFRFOWlhRTFYVTBkUGRFcHliMGsxYVZkWFFVNWhRVGd3UzBSRFdGRXpjaTltVTJSTlZqUjBUREZhTWs1Mkx6UkJXbmhNV0dKYU55OTNOaTgwZUhGeWVUTjJUSEV6Y0hFeGNtSkhkR0UyZERkbldVdzRjMUowU2toMlRtUlVhMVZQTkVNd1RsY3lRMU12UkRoQlEwd3pjMnBNYTJOTWFrRllTSFpGZWpoWFJGWkhSQ3RpZG5aUFQycE9aQzlKUzIxTU4xb3hPV2RIVW1WVGJUbExPSGhRZFhock56RllZV3RZUzJRd05TdE5ZVlJsYXk5MU9WTTBNV0psTVdoTFNIUTNaMWxUWTJOdk0ydGhkMDFHZUROamFGRXJRazA1Vm1oWGJFTktORFI1VjJoME1XUkdOR1l6YVRSd2FURXlRMFlyTlVac1lYVnVhMnhVYUdKbWVHOTBOMDlvWkRGc2FYbHdhblpoZFRjMlUzZHBaMEpYU1dWbFRFOTFRV3A0TmxORVlsTjFha2hyY0U5S056TkliWHBtV0RGWEwzVXJUMFpZU1VaR1kybHhPV3RFVFVwcU1WbDNiRTVpTTFaM1MwTnhXSE5yTTNCbldqUlZNREkyWjBSamNHcEVZekk0U2s4elUwaE1TRkZaWkVsUFQwMVBibFJzZDJkWldVTXhkVVZRZGtsQ2IxaDFjbWxXVFRoSlkwTnVPWFJTT1hkamNTc3hhMWhKYkVOMGFWUlliMkptVHpZeVNFbDJWalpuVlZWdU9WaFpVRWh6ZDNBd05HbFFWbkJsWmt4UVdDOWFWa050VTNNMFprWmpUR3BsUzBWM2FHRjRSVGxCTkM5elltd3djVlZtT0VORWRsZDRiMmxNT0dZMmJ6bGpRMlZhU0hwWVpXMDVNRGxhU1ZNMFJrcFFTamhKYzNWMU5GazRSV05CVjBwcE1XSmFNVlpPTkVOMmIxTTJiRVpHWmtjeVJWcFRVeTlWYVM5TE5tdDJlWFpvWkhwMFl5dERNM2gyYVVacGRXOUNPRkJvYjI1MFVIb3JORWxUTUdoTFlrWkdRbWhqSzBzemFEQlRLMGc0UTNwNU9FODRVRU5wTW1waldrRXlRemcwU25KSFlqbEpVR1JrVGtwbWIyaFNTMjlXY2pGblRsZFpaQzk0U2k5S01UY3dialV2ZDNoU1kzVjRjREkwWkhaSFFTdE1ValEzZDBScllUaFdUMnR2VEZCRFpFeE1MMUF6YjA1TVpIcFpSVUUyUzNkbFVrWk9TMUJZUTFGRVpWQlZiVlp2U0RoWWIzQXdaRXRZZDFSYVoxbGFWRVpNVERSWFlqaGlVak5KYVdST1p6bFlTV3BvUkd0cGIxY3dhMGxaYmtwb2JsTlBjVWRsZUZVMU4xcG9lWFpIVW1Sb1VGUXlSVEJ6V1ZCdlduZHBhbEpNVTFGRlJuTlJMMmM1Ykdkb2QzcHZVaXRQY0VoVlFVWXdjRk5EUjNSWlEyOURUV1pZZGxKdEwycENMMGRJWkZCM1FqZGtPRkYzSzB0amNFRlZWVEpDVWt0SVpYVnhNRGxMY1RkWVlqSmlhM0JQVG1oc1ZGVnZlSFl3ZVdSV09FVXJabm93Y1VZd1ZHMXpNVFphUTJWWlRtNUdVa3d3VEVwUGFsaEZSR0ZFU0ZWUlJuQkJha3Q2TTFkNVFYZFhSVEEwTkhONU4zbzRhekF6VEc0emRIWTJhMlJ6ZWpSdWJXRlBUbXRHT1VzdmVubDVhMUZKVjNWNWRESTNUbkY0ZUZSM1R6ZEhTMHB3ZW5wT05ERkpZVkpRUkRGV01HNDVWbW8wTm1oNFZFUnpkMVJyWjNKTGJFcHpZWEJ2UjNsSk4yczBjRTF6UzJGMVdIbFBhSGN4T0ZGVlZ6ZG5PVkJEZUVwNVpHeEtVMlJzVG5SelZGb3haRlYwZUZoVlpFWllXRVJ5VEcxMGNXTkxNelZTYlhCNFUyRnJkWFp4YTNKSWFEaHlTM2s0ZFVjMmFYUm5iSGhUYzFObVdWZ3hOVlpXVGtGNE9WZHNiRmRZYkZabVZrWlNVREl5TURRNFNEUktPR0ZDUlRaRE0wdHZaREJYV2tadFZGWkphVEpYT0RkaWFWbFJkMU52YUVWRFVHWnZWRWRZT0ZvMVR6ZHNTR0k0TDNCNVF5OUtibkJsWVZoNFkxUlZSa2RZVDB0RGJWcHVjSFZWYkRaMVRFdzRlall5U2xObGEyMHlUblJLYWtOdmMyUmFiVTEwYkRCS2NYUkdXbUpaYkVWckwxcE5heTk2WTJkcFUxVTVUbEYwY25wYWN6WjZUVFZqTlhJNWIyYzNZVEppVUdGTVRGWmFiVkpEYjB0SFlYcEplR0ZYTUU5TWRuSnZRMWxXVkVwaVNrMHJjRUY1TWxWa2NXOXFTbFlyWmtGMmNFVTFWU3RYY0dWS2EwdGhSblJNVFRCRFowcHdNMDVEVjNOUWEyUjJTRXd3VmxoNllrRndLMUIwVEhSd1VGTlRUek5qVkZOUllqaE5PVmRCZVZKbmEwVTJkRE5QYjJkMFdqbGtVakpaU1dSYWJWbDJRWFZETUdsTVlURkRXa3hsVjJsS2RTdDBiVmxzUm1WbWRsZE1RbnBWVG1RMldEa3piVm81UzB4VVdtMUtkVTV0WnpZMGVFNHJiMlkzT0dOSFpFRTBNemRYVkRCdVNWUmxjRXBNZFZKclkyeDNka050U3pGVVRUZEhXWFZwWTBScFEwdEplSEUyYkdWclNuQmhNRFYyU1ZwNVUyNVdRbkpPTkVveE5taE9WRlZzVW0xbVEzRkhhVVJLWlVwS04wcHljbGRLZW0xVVN6ZFVTbmcwTkZwRlozRm5Oa0ZzYmxOdE1UbFdjM0Z4TjAxNVZqQnljakY0YW1WeFFUQlJZa2hPVlRSWFJITndPVEJxTldOMlNqaFFXWFF4ZWs1b2FGQnVSSGR1UVVSNFFubFRkV1pITTA4dmVVdzRPQzh6T1N0RWNpdHpVa2htY1RsME5uTmxUSGhITDFsMmNucGlTVTQ1YW10Tk9VZExiVFZHWkVjdloxRnZZVkI0VTJKeFowOWtObWRDWTFKblMyVlVkMkZTYURGcmJraEtaalZYWmpNdlFuaG1VV1JtT1RSdVluTkxaVkJRUlM5eU9XWk5PSFZLVkhoWFpucGpUbXBDUjI5Q1JrczJVVUZRTkZKVmJraGFiVW81WjBaM1dESnJOMk5xZVROaWRuaFJOa2xJUmpSeFNFVlJjRXA1TDFWM1NrNVdWR040TkZOTWFpOVRRbTFyVUZFeGIxQkRkbEkxY0ZWVVRHRkJkMWhoUm05MWVuTklXa3B5WjNCaGFubHdjR1ZYYTNCeFJuVnFObVJ5UTBaMFlteHdaVlpNVnpoU016aGtiWG8yZUZwSWRrVk1jR2c1UVc0eFdHZE5XVVJFWkdKU1NrWjBVMUl6VlVKeUsyVnhWWEJ4UjJVeGRHRmxiMkZhVkZkcFVFdFdOMkpvVWxCR2J6WTFkelZ5VkdoWEwwdFNkRnBVYlVaakx6ZFpVblozZFRaRlZVUndXV1pDWTFwWGR6aEpka0o1U0dOUlEwNTZLMVZETmpBNFRIRnBhWFI2WTJoT2VVNUdOV3B1VWs5alVrOUJibVJOYVdOdFppOVRNbXN4YlUxa1FrZzJiSGhWUVhnd05HRXdSVGRoUlRCT09IUm5NRzl6Um1FdlZWWkZTblk1YkVsbmVHSlNSa3hvV1ZOclIydE5kMDl4U1VjNFR5OVBORVUyTmt0WmRIWXpPRzVQZHpSS1psVjJWbVJHWjFkdVlXSlNSa3RLUmtoeVdsaFVTazl0YUVaSE4ybHdiVXgxY1dOS2FrMU9SMFZzZVdsb1pWaGlVM2x1T1VwWmRFdHBOV1ZXVFdGd1RHeDBZM1pOWm5SNmFqZHZlbk53ZVdZcmFqTmhSM1JQY0hGWVNURlljamhzV2xoM2RGVkZjVlJSU0RsMmJUQXlRa3BYVFVWVUwzcDZiemRIT0ZSSGVqZzVaeXRxWVM5SVRtZHhaa0Z2TXpGeFFqRXhiMEkyTmxRMlRuSlJZMlU0Y0dkaFNGRnJSVXBzWkU5d1oycDJXbFkyWVhsUmNXbHRaQzlNZGxWUWMwdGtkMjFtUjFwUVRWZ3lUMkY1VlhnNUwyOVNVRVl2YkRSalpYaHdka2RESzFKWmREaG5WMHRzTWxGTmJFaEdkM016YkZwaE5tNURWMnhxY1ZCYVYxUnJhU3RyV2l0bWExcHlNMWh2WkhKRFUzSnBTbXRMTjNNMVVtUm1VakIwUzJoUE1EaHhPRWR3UTFSd1puVk9kWFp0WlhoaFVXMTNiamh0SzBFMFlYSjBiVll3TldFclF6Wk9VRlZIUzJWU1NVNWtabWRyYkVnNGFFRnhPRTkwUVV0MFVqbEdNVVZYZEZkeU1XY3JNRTR2Ym5wV1kyOUtMMFpCTDNOWU5YZ3JkMGt2VjJGaGVrSnZTM2RIYlcxTlRrNURiVXRPTkRod1VXUkZhM1JoZERCeFpuQTNXRU5hTVZwNU4ycHRZbFJxYldJNE5sZ3hUa2cyZW5SYVdHWTNSR2hHTjBkd2RTOTBVRWh3TlM5bFZFYzFkV0phTXk4ck1UQjBTRkl3ZEhvemEwNWhlR2xJVDJ4WGEydzVNMDFLUzI5b1pISlFSVFJQTW1NM2VsZHpiRlJuUm5ZemRXeFBNR2QzVEU0eFFtbDJhMkpXUnl0eGVVSmpSUzlzVm5aWGRrbGtZV1p0VWk4MmNrcHFMM0JZVmtZMFlYZHJla2RzZDFBdlRYRm5MMUJ5VjJKSVYyOVlUbFIwTVZGaldsRTJZbFpRYkcwNGVsZGlOWFZtV1U1UmJXbHJWazFOY3psT1F6ZFZOM0EwVXpoMVR6WmtWRzFsWVVoRlJFbDRVblpDV0cxc09ISjRVa2x6ZFc1aVVuZHpOVEl4VFhkMUswTXpkRFJPWW1GNU5FdEVMMUJ2YlVKME4wZzRNazFTYUd0eE1ISmtVVXMyYzIxYWJWZGxVMkV6VFd0YVVXUmxUakZDV205TFUycEdjbUpJZFVodk1tOWFZbGh1WVRWMFF6SlNiV3h5T1VKVGExWjFVekJTU1cxbU9UZzJTM2h1U0ZKekwwMDFjbE56YlRCSWNVTXJiMFIxU0RkUlJITllZVE51VG1semEyZzNNMFpPVWpac2MxVXdNVlo0VkhGeGFYWXdRbEpaUjJKR1NFSm9kVEF3TVVGaVVHUjZZM1JMUlRWd09YaGhjRXBWVW5remFtSm5URmxUUmpadFZsbDBNRUYyV1d0WFIzQmFVRU5CTTB4U01sUXpjVk5JYmxSWFpHMXpkazl0Ym5jMlkwOHhNRmwxVEd0NlRUVnJaVkZLTW1OTFlqUlJkVUYwT0ZOMVkwMXZRekpCZEhkaU5GcEJZelprZEVSUWMxbFlORWxYV1hRemQySTVWVlI1TVZsSVpIZFplR3N2VWtjNFNYVXJSVEkzVm1SdlJVYzRha1JyV2pNeVFVOVZXbXBKT1hwVlJUWlZMMmR1TTNBd2JFVmFUV3gyYUVNMGF6SkpWbnByUzI1cldGTm5hVGhtSzI5aWIzbFFXVEI0YUdOV05tNUpXVkpoU25KdWNIZFVXV3RqTlhaNFMzTnVVSE5HTTBKUVozbFFZMlpaYlU5S1prcEpWVmxyU2s1cmIwZ3pVMjFCU21aNFRXTlZLM2RLYzNWbmFIVnZSVGR5TUVkYVNWZDNaR3hwUjFwNlNrbGhXWGxGYkRGNWNVcFliV1ZST0N0c2RVRjRRbFUwWVcxdFFYVk1jME5LUjNwMk56YzVMMjVHVGtzMVJVYzVlRTFpYldKemVrMDVhVFpwVDJwVk4waFJlSGQ0YVhac2RFeDRhV2xDV0ZRdlRGb3JSWEl2VnpSVVprVnFhMnM0SzNwamFsSllXbVF5T1M4dk1ITlNibFJNTldJd1VrSktXVmhTUTJKUlNYWXdkRTVOYXpOc2FHdHNlbmd4WkhremJta3pVa2M0UlVkVlkyNDFXVEJ5VUZORmNrOTVSV3AxZVc1ak5sbGxOSFl4SzNoNGNFcGFiREpFU2s0M1VUVTVkbVpOYVM5cGRDdEtVMDE0VFZSTmVrMVVTR3B6UWpWbGJuTkZNSFY0UjFkRmJHOUlTRmR1V0VJek5VSkRRVTVrVkRWTlZXWkNTMkpRT1VOM1VHSk1WREJKUkZCdGVFeG1NSGhQYUUwMWFFaEJaV0psWTFwcVNVcE5XQzgxWkhOT1UyZEpaWGgyYWpWbGNqSnFNMXBTY0hsNWFFeGtXR3BOZFdVd1NrSlZOVzVtWjB4bGJTdFpXV0pMV0c1cVpIWlVRbW93VlVGbFREZEtUemh1VDFWU1FWZFdWQzl4ZDBKMWNWZDNhMFY2ZUdOM2NERk5LMGRDU0hSb2RFTm1Wekl4TURsWFZXeFdSMkZ4YjNVeE5rMHhlR0ZrV210TE16SlRlbG9yV1RSMWVUSTFUV05MVUVzMk9EbHplV00yZG5rNGFsQlRheXRDZDNsRlF6VTNOR3Q0UzNsQ1dEWkxVak5TZVVWNE5qaEtkSE0zTTB0RmFrZGtjekphWjNwRVVYQnZhbWxLTWxCTVFrbExZME54V2xSWldrbHliWHBETVc5WVN5dENZbU5xV1dWM2NteDZRM041WW1neWRHMTZTRU5VTW5GSGVYcGpVRlpxV1RKc09VRTNaM1kwZGxjMEwwNUtReXRQWmxOalVETk1WWFZDVDFaNFJtWlBjMGN6WTJ4bmVEaG9kVTFOVkVkMFozYzJOMFZoT1ZoMFkzbGxSVFpxVFhkc2MyOU1lVFIwYTNocWIzbFBOWHBQTjAxMGNsSnVVM1pXT0Vwa1ZFcFVlV2RQV1VKd2NETTBibU40ZFVGVlNYRjBkVkJ2WTBsWk56Y3ZNRzl4TVVaaFpqVkRhRTFVVjFneWJscFVhVWRwYURKS1pVTmhkRmxOZG5relZuQmhOR0p5VmxZcmNsa3lRbVJuTTNkWGVWUmFSRUY0YTFKU2FYVkJLMUprVlRCeloxUjZSMXBrVGt0Vk16UXJiMGRDTjNsa1NteEpWR3BpYzBGU2FEaDNUVkkxZUVaM0wxUnpUbEJDY0RBMU5VZFljMWRpT0U5ME5IaFZVVlV2ZUdkaldrUjRjVUpvZDJWYVFVMWxWMlJuWlVwb1oycEhaMDlVV0ZSS1JXcEZNamhYVm5sak5HNTZiREUwZVdocVRUTllaM1JJU1hORFZ6VlZNVTlJWTJsTmFYQlNTM1JEUWpoaldFdzFPRGhNZDBWcGFUbFhUaklyVkZGQ1JubHVZa0ZsT0VvelIzbHdVVU5QYVVWd2ExcGFUQ3RQVG5rdldTdDVhVnBzVVhacmJFNHZhR0ZtTjNkSFpsUXJTbXBPWlVSalFsUnBlbWRKT1ZkVE5IbERRa2RXYUVWc1dYcExNelpSUW1WNVUzQkRUbWhKWjBob2JIUk9kbFJZTTIxUE9IVm5OV041TDNCMk56ZEtkM1J3Y0VocWJHUktlR1UyV25ac2NUWnBRWFF3Y2tjMmQxTm5XWGM1Y25sNldrNXJUbVIzZVdGbVVGcG1VWGR5WjJWWlptdFhhelZaTkZoRmNqaFRaakJxZVVweE0yTnRabWxZWmpsMVpIaGFTMjl3Y21oNk1WbHNaWEF4U21rdmRrOURlRGxtYURZcmVVVjBObFZIUVRaWVJWbEdZazFYTURGS1dUZDZXVVI2VW05dlJUQlZRVk00WXpoV2NWcFVTMjVWV1VWbFQzUXJWV2wxZGxadk1td3ZkMkZoVm5CNVYyMDJlRVpVVTFWMEsxbFZkVXBOWTBGVWRWTXJNMnA2T1RGd2QyVmtOR3BSTmpKbGNWRnRla1pwYnpBd1ZrVXdjeTl1WkU1Qk5YQjBRVWhOWmtGblpuTmFRelJHUlV4NWFWaEtjRUZyVmtGdkwxTnZlVlZsVldGVE9IUnJTMkkzYmxSNWRWTjJSbTF3VW5SYVQzbEJieXRFZVdnMmNXb3hTWGhTY0c1blltdzVabXRWYlhadFZVaHNRVmh0WlVoa09HSkZjMHh2ZW01aVlWQlZTbUZ3ZFRWdWN6WnVWM0pNY0VoTU4yeE1aek5UUkVsVlVqUnhXWFZPVGpKNEwweHlkWEl2Wm14MFRtMU1ORVl6ZWpsU2QzWTRNamhqU0d4blptNVRkVlZFYmtOMVVXbE9RV3BSZWpoblNtNHpWbGxDWlM5dWIycG9jVEl2TUhOSFV6RXpNVE5JVkdKMWVHTjFSVWRUZGxFNU5sQnZaamhHVjFWR2VUVnBWRzVoYVVOTmMyRmxaVXdyYWpWck16SlNVSEZtVkdKNk5VeHFkVUptZFdoeGJpczRkVzR3TDFOMmVYRXdiV2Q1VTA1b1ZFcGtTMDE0VW10QlJXRkJVMHQ0YzA0dlN5dFlTRXhoYldZek5TOXhUbUY0ZG1JNU9XYzJSVE5rZGpCNE9FZGtObGMzVlM5MFRsZDVaMm92UTNCMllrOWtRbFpXVmtKak4xcDJXaTlPTjNWV1prdEtOVWRXUlhaVGVVRmFhMXBNYjJwM1lWSldSVVJ3VUhkNmJFSnNPWFZFVUcxUFZWRTVRMEVyVjBsbk0wNW5jR0Y0Y2pkWVVUQjFLMDg1TDBsclIzWlVNMnBwVjJWdVQwVlFPRVZtV1RRdlkxUlZORzVSTW5WblVVWTVVVzlLSzFGSWQxazNkblkzTmxnd0x5OVBlR3NyVHpoRUwwRlBRVkIzTjNkdEx6aEpkbmhHV1ZCdk5IUXpaMFJaT0VGbU5GcFpSRVJ2UW5KcFFXVnhha2xEUmtscmNFZDZVVlZaZFZwSVJrbFlLMGg2TlVkRmIyeDFNREpsU1ZkTVFsRnRSRWMyVTBGMFJXOHljREExZEZkcU1VdHZXR0UxZUZGQ2RHUXpTVTA0VlVST1N6QkpSMEZPZUhrdlJYRnhZWFpHYmk5d01HdENVWHBqZG1GNGFVUjNWMDVTT0VSd1VXVklSVk5uTlUxbmVrNHlRM0I1Y1V0WGVscEdaMjFzYm5jNE9XbEVUMEU0VkhGSE9HWkJOSGh0YkhoNGMxcEZWRk0yYm0xaE5sTjNhVll2YUdnNFRVbExWVzh5VkZkbVJETjJhMlZOVjJwMmIyNXFTR296WVZFeVdWUlFVamg2VFV4NFNtbFpZWEI1ZFhKdGRrcFdMM0lyUm05V0swTjZVamM0WkhZNFpHNUNTa05aWm1JM1VrRklOalJzTTBKaFFVOW1PRlZLZWtwblNFOUxjM1JNVGk5eVJWUjJkVTEyUVRScVJWVXZTRnBOSzFabU5VaHFSalk0WW5oemNqZHVRVVZ1UWxsNWVWZEdUbWQ2SzJobk1YbEVTekpCTVZFeE9Dc3dRa3BJVkhoWFJGY3JVRGRoUlhCSVVrZFNibUZMYldaUlpIWXZOVmhTTTNrNFp6RTFOR0kyYnpFeFpYSjZWMlZJUkdRMk4xUnRXa1J2WTBOU2VYVlpORWhYV0RCRE5WQnZhamxFUkVsa1UwVTRPVmhQTldad2FrcE9aSG8wTWxacFRuQTNNRlpTVVVwR1VuSndabEJFV1RaVGF6QkZZVVk1ZVhwU1JsVmFMMDlUZERkaE1HNXdZbU5IT1hWWGJHUlhiVWMxWW5GdFRWTXlla28zWkRSemVrdDZZek0yZUhWbU4wWk9aMkpuVUhOTlZYUkdTWFozUVROUmFIVjFSbXBDWWxvM1YwUnlOR3hrVTFVdkswSnZRelIxU0RsbllpOTFaVUZtUlVKRWJYWjBMM1JJVWxwUmQwbFJkRkJCU1ZscVEzTlVVR1pGVW5sQmN6Wm9PVGN3UWk4dk5FUlplVnBZY0RnMlVEYzVOSFJZVlRCQmVVOUtLMmRqUm5CVFowSk5aRVpoUmxKRE4xTmpSVUZOVGtwdGJrMDBVRkJEVVdZeU5EVkNVMWhoT1U5VE0wWlhjblF6UzJGVGFIQllja2RxWTA1dFprOW5aMEprYVdsQ1pFRnhUWEpzYzNCUFZFaFRSV3hwTmsxTGQwRnZSazVGUm1acVZFRlBTVVo2WW5SUFpYaHlNRGRqYkZGRFJITjBOVWxGYW1saFIwNVlVa3BuYVhCcmRqaFdkVXRpYlhOR01VRk9kMjgxUlVwV01FSndibTlZYkc5QlpFeFllR042ZG0xRVR6ZDBZVmQxVDJwMlpHRlJOVWcyYm5sYVdqZHRVbUpyUW5kelRETjFPSFpyWTNab1JpdFlRMlZ2TjFWSWJtSXJaVFJ6TlRKaU0yZFVTak5LYVZwaFdTdFFlbk50U2xSTlUwZENTR3BHZUdOWVIzaE5XVFJJU1RWV01pOUtlbTVaTlhOemFEWmliMmt5Tm1oRGFVZ3ZjSEZKUzBWUGN6TnhRamRVV210VlltTkRaamhGU1RsWVdsTldWbEpvWkdGNGNVNHhUMVZOV2s5blUwVnFWSEJaVkVkU1IxRk5XbWx3UzAxNlMwczRaRW93YlZOb1pWUkhhRWRXY0ZjdlVVcFdaM05EVXpOS1RWWklhVlV4VEhobkwxY3dibFZXVEZOTFRuSXdUbUZWU2tOWGFUbFZVemRHVTJGVE9FRmhZVzV0TWpBMFNpOUhVVTVXT1c0MVRWWmhXVFpQVm1WclUwc3pUMDFYYlRKUGQxaEtZbWRPWmpOU1kxTkZZUzlSZWs1MmNHaHFNekl2TXpWdWVqZFBVelpxU1dOWGF6UnNlV0ZXTVcxYU5sYzNORVI1UkV0TGFFeDZTV1JuYkV0bU1sbEhaekpHWTFaMGJXdEpSalIzVWpsaVNWSlhTRFZQVW0wMWRtaDVUbFpFUVU0NFl6SklNR05IVjFWM1VsQXlTR2t4VGxOWVIwc3dTbXR4Y21wak5YZzFWSFZVZWtGdFVsZHNNbXRrYUZwRlNtUmlWRFo1Ukc1Q1dtSlhZMlp0WVZSQmQyUnNLME5LVW1wc1dYaHBWR3gxY0V4WWVFeGhhSFJ2TXpkVGJEY3JZbVUzVVRORk16UjVkVElyS3lzM2VtSm1Zemt2Ym1sblJGY3dSRTlPVm5OaU5sVlhaVUp2WldsQmJXZzFlbFJVY1RWVlVuaDVOemhpYmk4dk0xRk5SR1F2V0ROSmVWUlNiMkZOTm1kdk1UZE1XbTluU0ZoQ1RtUnVhMEpsY3pZd04xZ3ZRamx3TXpSaFpEVlJXSFpqV25Sb2MxQXlXVGRvZFU1NWFETkNOemczY0hsQ1QyWXljbFoyV0ZScWVGVnlUMDg1V2tkVU1tTjBiV3BMS3poblNXbFZRVVpLTTBKeFNXaHRhRzUzTUUwelFrUTBSRFI0U2xwM1F6aGpOVWRMSzFweFJYRmFiRTQxU0VOVlQwbDRTMHBSV1VsS1JWaE5kM0VyU2k4NFVYcExTVUl6WWlzck5qTmlPVzAzVW1sRE4wcFFlbk5xYXpsa2QyNXJWbWh2ZUhjNU5HbFFaMmxhYzNsRWFubE9iekV2ZEhVM2VFZzVRVkp6TldwRE1HdHNTSGRZTVZaRFZGWmtNSGhRVTJKblJqTnNkVk5XUldJNFVGaG5UMFJ3V21reFZWWmtkVE42WkVNNFYyWkNjMVIyUWpaaFFVWmhSVVpYYkdnNVFsZHVhRE5LWjBSblJqUklaV3BuWXpNNFNuVXpOalIxT0dSdFFtZFVkVU12UW1nM2JtTlBTM0F2VDFWVmNHdDNSVWRSUlZOR1RVMDRORUVyYjBFelFXNWFTbmQ1WnpOWFpqTXlaRFZGY3pZMU1qZHlVemM0Ykd0SkswRlNUamxHV0ZWa2NrSnRXVTlPUkZSQlZ6UXdSUzk0VlZwbVNFOXJhV3RxZDB0aFZsUnBlWFpCY0cxVEwyTlpkakZ0WlN0VVFqVlBNM2MzUkhnMWVGSm1lV3hpVXpCWVZWSk1ZMFJ2ZUhwTlNHMXdiMEYyYzJaRVZHdHlXbTlKWjJwSWIwRm1RMlpCYW5kNGJEaFFWMDl3TUZOV09UTkRZbmh6TkhGNmRHSkVjakJsUjNwNmFIQXJWbEJ4Wnk5bFJVSm5UMFpwTkM5MWFURmlVM1ZwYTJkWk5IY3pjMVJ6VlhaclJEZHZLMkpRV1c1dWFVUm5ja0UxWm1SblQxUkdWek51WTJWaVpFNU5aSFpYV1ZrNFlrZFphM2x4TkZwWVdTOWhRVVE0VVc1c1NsWndORmh5U0dsa1JqTnlkWE55UzFNelQwc3JNazVVVlRKT05sTTNTa3Q1T1N0NWNIRlhiREpoTm5JNU1Ia3pOVlJuVUhNeGR6aDZUMlpLVDJKWGNscHNjRGxvUTJwTldYZHJkMW9yWkhSaE9HZGplbk4zWW5scE5HRjVjelJqVEdkU2QyOXdOVFJOYTNZelNWUjFUVUp4Wlc1WmFpOVlRa3h4Y21veVlqUlNWVTU2VFhkcVpGUmtVMmxrZWxkVVJXbzFObFF5UW5aVVZsUTFZekJTV0ZSdE0yaFBWRGc0Tldsa05sbENVbGhFUmxGMmJ6RTBWVFJtTWtkcVRUY3djeTlOYTI1M09IWlRibGt3VEhSUk0yRnBVU3RSV0U0NVJVRmxORWxHWlZwNWQzUjNNRk01ZUZGbFZrSXpPU3RNV21KNlkxQjZjblp3ZEN0aVFsVjFTVm92ZGs1YWQzb3lTSFp0TTI5SGFtdzRNMk5VT0VGemRYWm9jM2h4UzJkMGJXeDJPVGQ2TmtJM1VHRXpLMnA2TWtRNEwwZFBjbk5GV0hJNEsyeDBaRlEzTUc4NE1DODVaMUo1VURoWFRXdEdLMmN5V1dOMmVsZHZXalJLTUZGUWREbE5kMDFVT0ZGUFNERTVSM3B4WldreU56TkxPRTV1U1ZaT1QxZFNUMVJ6UjNSdGQxcDFTMWMyWVN0SGJIRjVaa0ZxUzBVd1QxbE1RVWRHTVV0blIyTkhUV2RJYlVRd05uWmpLMWMxYW1wMFdrczRaalV6ZGtrdlVGWktkMUIzVnpKMVdUWXlPWEkxY2k4MWJsZ3hXRkYwTUhoT2VFRlFUbkZ3UjB4dU9YVm9RMlJCZVZwYWNtZHlObEl3UVRORVRERkVUbWhTVTFKUFNsUXdNR042ZWtvNFUxaEtPRWxZY0hCUGJuaDBhM0UyWVVKb2JsaFliaXRsV1hOd1RuaHFUVzQ0VFhoMWIzWllRWEZyUlVjelVWcFpjVlo1YjBkR05XVk1WelpUVVhOMk0xTnRXbmxzUXpOVWVVSkVSalY2ZEdSWlZUVjJXbkpWVEVOTmFTczRlR1Z2Y0ZwT1NrVmtWRk55U0U5cWQyNVNjM1ZuUlhORFIwaHlRbHB2Y1c5SFNqTmlaR1ZwYVRGa2ExUmhURUpHYzFBNFJWVk1VVlVyZVVKTFVrSTFWRmRLTDJ0alIxZGhNbUpaUlhkeVUydG9lbVZpUm1JMlUwWllTeTlaZDJ3MlowcDJOVkppWTJSaGMyMVdhUzlPVmtWV2RIWndhWGxCU1Rnd1ZVczNNRmd2WkVsVWFHWnFkVkp5ZDFBNFZERnFhbHBOY21wbFRuZElaRkZqUmtSalVqTkZPVEVyU2pFMVEwWXZZall2TDNseE4yWTBUSEI1ZUVsemJYZFpaMDFhTTB0cFdqTnJaRTlwV1hSVmIyTkhVVUkyUm5vNFkyOUZUV2ROWTAxU1dqbE5UVGRGY1dsUVJIZEVUekl5ZDA4eGVucGxURzkzWjNRMlFWZHdUMXBXUVc1VlFVZHJSMmsyWkVaSVNDc3dMMmRQZGtWNGR6UmpUMDVCZGtWV1dsUlZPVTVXWXpoYVp6VlphVE14TVRsYVZUbHNWbVZZY2k5S1RtbHRZMDFhYm04eGMwTmlObU4zVDFoblFXSlRXWEJDZHpWUlNXY3ZNRUV6ZVdkdFUwWTFTRzlDVWxOcGMwaDZObXB3UVdsUlRWWXZMM0JzVVhjeVlXbEtNbk52WW5CbmVXY3hhR013VDJ0cVRXSlJXVTVDZW1KdFNuWm1SblZ6UkZGaGRYbzJOMXAwT1c0elptbGlkM0JyUnpRNGVrTk5LMk4xVkRGMGFsaDZSa2hMYm5OVWQwVm5TbmRMUVRaTFVtSjVRWGhwWVc0MFRGb3JPVzByWVhvM2NtdDFRMUV4UWxneVRsZHVURFUxTlZwUFRrNXZiVVp0TkZobGNXWlFaMWxoV0c5VU9GSnhaMFJPY21sYVVrRmtWM05PZEZGamExRnVWSElyTXk4MVVFeDVaWGhSYzNOVU1UbFVaSFUyWkRkclFVNW9Ua0ZFYzJ4RFRuVnZhVEZMVWxObVZIQlRhRE13Y1RWNlRXVXpTRFkxV2k4d2EzcE9RMmxTTTJSbFYxQTVVM05sYldKcFdUTkNUMFJsUVZoRFpHUkpkMWw2WlVGcGFWWlpha296TWpaaFZGZzRlVVZsTjB3dmJEUjNTRkJRYTI5SE4yMDJaVnBpU1M5dmRIRTJlR1JxWldOdGJHdFVjbUYyU2xCSVdGTlZaelEzWkRWWVVqaEJNWGxyYTNaUlRuRjViWE15YUdwc1drc3ZOR0poUVhZeVJXd3pRVlEyUkZSME5XMVBibGxYU1RJNGJtMXJjbkJZVWxRNVZFSmxNekIyVDJGbVRFOXRaRmMxWWxWWGNuUTJlWEJLYkdwMk0xcFdkaTlDUzI1WU5VOVJMMlpGWkRaWFYzTTNiR3d2WTNCalJWWXlRbmRoV0RoNWVteDRjSGhvVFVVNE4zcG9lSFUxYVZRM1ZVVm1kV2xOYUhVM01teHBXRmx1Y0V3eE5YTXdXbHBSUlVkTU0wc3ZaRU42VDFOUFNGZHZNREZ6Wm1SSldUaEtNMnd3V0N0YVNIcEdNMmxKVG1KWVJFSjZiR1IxT1dGMVlsSnlNMUJ5Y21SaU5qTkxPRE14VXl0MGNXeDRWMDRyUTI5emRHMXhTRkZPVXl0M1JsbE1aelZNZWpKSmFEZ3JRMGw2VUdzeU5FNTRiMkozTTBGUFRYQm9TRzVHVlRJeWVGWnFiMGMyV2xwV1ZsTXJjMnhYTmpCRE0ybDZaMWN5TldkamQwNUtjMFF5UkhseGIyY3lWa05OVVhKc1NFMXdkRzU0U21VelNDOXlRekYxTWxreFVXeEJRM2hMTjBVd1ptVXhRVTl0ZGtONk9IWjJhbkozUzJKMGNHeFFZa3ROVlVSc1QyRk5jR2xwUjJnNVYxaExOR2R1ZDFKbllsSnhhV1JKV0daNE1WVjJiVWQxU0NzMVJWZzBNelJ6UWxGYU1YUnVjekkzZFdZelNrUjRURzVLVW5aeWNtRlhSbUpVWW1relJHOWlUVWQ2WVU1SlJGWkJkMDVNZUZkMWFGaE9iV1ZEU0VWVk9FNVRlaXRvYzB0NmRIVndSVnB0VHpFeVJFOVVkV0V6YlVreFpqTlNVRXM0ZWpCRVFTOUplVUpIUkVSMVdFNWhUV2d6ZG14WFFqSlVLMGt2Wm5CV1F5OTZNbXRHZGxwM01sQldhbVozWlRZdk5FbFRNbFp0Um1wcFVreFBTemhJSzFwQ2JtMTJjVFJtWlZwcU55dHBLMFZZT0hoTVJFZHpNMHRIWmpCM1Z6UlRaek01YUc5WGRsZHZRMEZuYUhkcFVVeFdWVVJFVVRORU9IZDNZbTFyU0c1SVFVaFNZM1J6YW5GVU5rSlFSR0ZCVnpoVFUyZFBPRTFRVDNWdlVIZExWMm9yT0Zob2FrdFJUbXcwU0VVMmMzZGtTR2xoTkVONllsVlRNelphUzFvM2VESk9UVkJVU0hvdlFVRmpiM1V6TVZkaU1VUkdRMDFHWWxOTGJXNXpVMDVxVVVOUk16SjZhU3N6Vm5Wd09GRmhkemxxS3pGbk9WVmFjM3BLV21KaGJreDRaVUZHU0c5RFEwZFlRa3R2VDBzMFIyWmtWRzEzYXl0SWFUSTJVQzh2YlhFNFRpODNSMll3V1RNNVVtVjNLMmxOUTNKaE5IRmFNRGhRU1ZCWU5VSnBjRlpFWWpSNVMwTjZha3d3WW5SblF5dEVORFIwVkRCUVdXNUlNR3hUY2taUVZVbHVXV1JHTkRoRGJYVklWRzh6Wm1WRGJXcE1ZVzFZVmt0UmQwRkhjMFJXTURZeGRYbzJUbmwzY0hOV2EyWnVObk5tUjBwVlpYSklaRmg2UTFoMVlqRktlR2hrWkU5aldYRlJRaTkyTVdKMUt6TmxaRE01SzBKNE5Xa3ZXRFpuU0RSTWN6RlRMek5XYm1GQmJtY3ZRblJDUzFGa2NUaEJSQ3RUWW5WUFdIZFVXREFyVVRBMVFrTTVZbXhvWldod2ExVlNTa1JEU0cwMmNrdDZaRGRhTmxOc1NuWk1Namw2ZFhSdVNrcHlkMFpuWmtGNWNGcFVOM1pTYVhSak9XWnBXV1ZCY21WbldTODFlRVJrT0RRM056Sk1hV3QwT1RWRlQwUkdRbVJ2WnpkMlJVVXJRbmhFYVVSS2FWcE5SSGhsVkdFNWEwbElabHAyYUZCSE5EQlJkekpoTjJ4T1JXNTZTV1ZQZUhWRFkyNWtaMWhhWVVSSE9VWjRRblpOY1RKU05TdFNOR0p0Y21OWldIbFlObTlYVVZscU1UQjZUVVJ2WnpGc09FUlhWRVZ4WjFoNGNHNUVOME12UlVsc09UTjROMmxaVVVGTlJFbDVRUzh4UlhOVWVYUnNWSEpNZDJ0WFMxSlNNSFJvVlZGbFJ6WmtTR292TVV0R2NFbEhSazB4UjJaaVJDOUpPVlZWUlN0dmNucFNkREpNU21aQ1owazNVM2swU2tzMGFsQlFibXBOU0M5eksyZ3ZNaloyVHk5cFpuVlhlRm8xTjBwc2NFTklORWs1ZVVsTlpUUXJLMHN3VFROMVJXWk1ORVZWT0VRclVrWnFkbEZaZFZjd2VVMDRRVFZXU0ZsUmEyaDRRV1J6S3pWbFJIQjJOWGxETTJScGNFUjJORUZPZWpCTlRHWXJMMjlpVG5wTGFEWnJibFJCVUhwUFJIZFVTRE53ZDFwMEsxZG9OakJXTjJKRVpqRjBWbVV4ZEd3eWVEbDViMnRPUzFOUUwySXdSbFE0YzBvd2IxQTBRMk0yWm1wU1ZuWnNhVFZYVTBkQ1IycDNWa3gzU1c1bE5EQlFSR3RvTTBVM1drWlBRakJPUTFNMFdFRnVNRzF3Tms4NE1XZERkVTVwWTFkRFozUmlhbTl1YkhBNGRFVmhVVFJWV1VsdE4xaFBabXB5YVdOb2IxbGpaWFZ1YWpRdlYzaERVVzE0TUhoUVdrSjNibkkyYVVKNFltRk1Ra1ZDT1haTlExSlBORVp6TVRoRE0zSjRUM1pOVkdOTlMyMHlibXgzWmxwVVYwUkhiRUkyY1RSNlEwSm5USFpXTUhoR1dsZDFja3hDV1dGWk5qSXhiVnB4V1haS2NraFVlV0o0VmxwTlluSndRMk01TUZadFZrZE9hMlJET0hKeWVUaHFja2xIZG5sRFNuWklZbXBzZVZVek5EUXdObmR1ZVRJNFZXNDBLMUZyYkRGS2FWTXJiRGR5TDNNNFlrSkRMM2h2WVhCeFEzWjZWWFZ5S3pBNVlUSjJZVE4wTHpBNU9VRkxhR3dyYTBSS09YVmpkR3hOTTBJMmNXdDJXRmQzVFc1WlpGWkxVV2hUVFhWV2NqRmpUbkZCY1hkNGQwcHBlbkZOVVUxT2VuSnBSMWd6Ynprdk16ZG1OMnB3ZUM4eGVtSnljVXBtYzFCbU4zUXJMMlozTldNck1XMWlRMjlGVERWa1JYZGpTVWxGYW1rM1kxVk5kVTFuWTBoSU5rNVpNRFpsUzBGbWNWRjNOVXhUY0ZWRWFVdEJUM0ZCVG05cWJYRkpWM1ZTUlZsaWVrRkhOR1JCTm5wVWNUSlhRVTgzWlhSbGRuQjVOMEozTW1JNU16UldVVW8wUzFkWUwzWjBTemhaVjNKeWMwbEdUREV3Tm1kVVdUbHVWMDFHTW1wRGJHcFlXV05FWjBGd1dDczBSR3RIU1Uxd1pUSjFPVkJUYTNCSmVVMUtRWEY1UjNweGRXODVVMlJxY25KV2MxUTBNVVpzYkVsRWVteGFNbXhOYlZOUFRqQkdkbGRET1VsbmNFbDVUalJ6ZHl0UWQyODFVRzV3WW5WcFYzZEpNbFpPYlhBMU1Ha3ZkR0oyUmpJek5GQmtTWGNyYzJremRtdHNjRUphV1ZkdlRtOW9UMlZyS3pWcU9VZEhibmxwUm1JdmRsRTFVRk54WjJremNsVndaMWwzTVdWbGJYb3dTRGhtT0ZFd1QzZGhVWFpUV0ZsSWVUaGtkR3R3TlhoWFRtRldWbWc1T1N0RU1HazVZVUpFTDFSMmNrZGxUWGR0YkVsakwwcFNaRXRsTURGVlprazFRVk50TlRBME1Ea3ZLeXN3TTNZdk9ETm1RMWhsYVVnek5GbDBTek5ITUUxbFFUaHZhblpUUmpWWlQyRkZjemhPUW1WelZWVXZTMGRaTkhabWFrUXdVSGxGVjFGR0syNTJXWFpvWkcxTU5tbHNabUZoVlV4eVFUSkxTREZYVURNMVNtWk9MMUJPYzB4bldGVlFhWEVyVW1nNFVsWkthSGc1UldWUmIxQTBTMUl4UjNNemJUUlFhelpvZUhaNVRWSnBZMmRKVFdwTEwzbHJWbVIzZUUxd1NraGtLMFJUUTNjcmQzbG9SVUpRV0c5Sk5WTnFUVFZJZW1GSmIwZEhRMFV6ZDI1QmVEVkhVamQ1YXpFNVJ6TjVURTh3WW1SSFVtOW5lbWc0UmxsS2FYTkxjVFJ6T0RCblVEQlNRV1l5Y1RKRVNtdEhXVUV5VUVOeE5Ua3ZaR2M1TXpOcVdYazRRMmc1Tkd3d09HTndVMU4zYzFKUVVIa3ZZM3BIVVRCU1MybEtaaTgxUm05dlVHRTFNSEV3Unl0aWIyZ3ZZbTEyUTNkWlRHUnZLMDF2VEVoRGQyTkpMMmxoSzIxMk5IVjJVRTFzTXpoaE5XUnNTbkJNVEc1dWVscElkMU5NWkhaWWQwdE5hWGhwVFRsM1NURlZRamh6TW10aVlYWXZaVk5FU0RSSGMyZ3dXa2N6YjB0UVVFMDJhMGxKYkVsclVFVndjMEpqTmxKb1VHdE9PVUZMVEZoM1EzSm1RMFk0ZFRGRVJuYzBWRmgzWXpaeWQxcFNWVGhNYm04clNtdzJVamw2U0cwM01GaFlUSGg0VWt4U1VucGFkV3hRWWprMVNrVnhiMDVyUm1aRmVHeE5aWEZFTWpseVl6TkJNMGhEYkRGS1lYTnFOVnBhUWtWcVlpdFpibnBJUkZWVWNGQTFZMDFLWTBwaE1pdE5iVFUxSzBwRmFYazBNa0ZtZEZVNE1HOWtUWHBLZFhkaVVHNVdUMWhQYzBSbVZtZFhaRWwyUjIxYVlqVnJOVkJxU0dWVlRtUnpialZITXpKVmNIaGFkMUIxUlc4ME4xQnNTM0YzTVZSYVNXWllPRmxKVTBGbVp6UkhlSEpEVTJ0dVVFWlVLMG93ZFdsRGRYcDJiVE5DU1c1U05tVktkMGx5TjBsME9IZFZibmhvYm5GSGRYbDZPR2wwYldoT2FqTmFkek4zT1RWaldqUm9UR2xxWTNaUmQxUmhNRWMzVTFKc2VIZHdORk0yVldkb2N6TjZVVTFKVlhaVmNFY3pNRTlXU3pZMlMxQmtlbm93YmtoME0xWkJhVzFUU1ZjeGJrMUxNVk0wVUZkeFZreHdaSGxoVWxWVVVIWnZiemt6TkRCMVpHRlhiSEJaZWxKelFXSnBiRXhIZHpjeFJuRmhhWE5CVlU5SE9VNUNVVXR6UlVneFpWQjJhMVI1WW5CRGQybE1aakpUWlRCelIyWkpkbXRQVmxoeGVXY3JTVmxEVUV4cFYyNVRSR2RZVVRKWlNuSmthbVl4ZVdaR1NXSTJaamxQUjNSTFFUUTFNa3B1TTBOelZHNUliR2d4TW01c1JVZE5Za3RKZFVOdlVXMWlRa1ZJZEd4YVdXRXhWMGhPV1ZVeWVrNW5UblpWV1hVeGFHSllSM0ZsUzBoa1NHaGpTRVk1TldGdFdrWmFObFZ3VDJSc1ZtMWFiRkUyYXpWUFpERTJaWGhJSzB4VFJWQnZMM2RITXpZek4ycHFMMnBrY1Vka05HOU9aMkpXVWpSbWFVSllXbEJuTUhoaloza3JaVUZyYkdSaFRVVlZWVUl2VGxWS0wzSndNV3hFY0ZsSUwyeFlRVlk0VlN0eldHbFVLemc0UjBoSWVGUXZkVkZxTHk5alJVaDZNWE5KY25rNFpuQlFkV042TUUxSkszQXlLM2xtTUUxbWJTOVVlVU5pVXpWNFQxWXJSR1oxWlRKaFFYUXdOVk4zYVZGQk5HZEhiM0JFVGl0TlRqSTRhRFZzWW1ndmFrSTJibloyV0ZRek5rNURhelpIT1Roc0wyOTNNVzg0THpkbFJqUk9kbEJYVW1WVmFHZGxXbGhxWm5OUWFIaERORWxIZEVrMUsyeGxZMmxVVFROSVJHbEJhaTl3T0ZscGVDdFNSM3BCVW5aRmNteHVabk5IVDFGa2JuQjNXRTA1ZVZGWFdIaGtabEF5YTBKNE5EUnBVa1IzSzJaclJ6aG9OMFF6UmlzMWFuTlZVeXRCY0hsU2JGQmtjSGhGZDFsbGRFSnZTalUwU1VGemJtcE1kbnBTU2pJdk9XSlRWMmRrZHpWbFZEUm1MMjF3VEhreWJYUmxXRkI2TjNWU2JFeHBWa3AzWmxsdk9WVXhXVFU1U21oQk4waE9SVGM0YVZOaFRXWjZPRXQ0Tkd4SFMwUjNaR3BpTW1wSEt6TnBPVmhSY1ZoWlRXUkxOeXRsY2t4eFpsSk9hVFZrZW1KdmVVWnRlRVIwUlhwTlJuYzNOVFZEUm1aVmJHUm1jV2RyVERBeGQwOUZWSFZuTkRSMWFqUm1kbmcxTms5T2QxZ3pVRVpsVTFwUU9UUm1iVk4xWWxab2FrTmlOMWhUSzFsU1Z6QlpiR1ppU2pCNmREQllUVVFyTmxCQ1VIb3ZUaTlhU0hKdGNrWmlORzlHWWtWeWFVSmtTRloxY1hGak9IWjBObVJDV2l0dGFXbHZXRUZMTDNGUE1VZ3JVVE15ZG5SeWRGVjFVR2t6WmtORFIxQTVibEJtY2xsWmVrNXRUa1JaZVc1bldETmpiWE5FZFU1R1ZXSnVVbmRyTUZOa2NYQk1XUzlRVUhBMlJqYzRRbVJIWnpoUVJ6bHpSMWxZTkVGRVNFaDJla1o1ZFV0MFZ6UjBXRzV3ZFdScVdHWk9NM0pXYnpCaE4xcHdOVFZMWkZablFqWnBUblZ6Y0VRMVdWZFlVWE5YWVhsRFl6VldSbkJxVFZNeVRtTTJSa2RCVmtOQ1YxQnhUR2xCVm5KWlJTdExLMWxYTHpWck1DdFhOemN6YUN0cU16QmpPQ3R3Vm5GMlJrbHlkbmR1SzJSS1EyVmFTbll6WkdGNlYyRmllbGQ1TWk5clRHWTJRbVZ0VkROc1lqWjFVREp5WlZOaVNsQnJOREJUUW5WaGRXY3JTMk5sVlZwb01HaElVakpJUkRneVptWXJhRVp6UjFCV1ZqbElLemhvWnpCb01sQm1NM2R6ZGxCRlVqVnVaMHAyVFhkSFYxSnNjSG93Y1c5R2QzWnBhR3gxUXpSelpIUkdXbkkzSzJWcE1FWmpMMmxSVDBocVZsWlRWRGt4SzA1MVFuVmhXVzFJVEhabVVVRnFhMk5zWmtWRldVVlJXVlJVZDI5aUswdFZVMGhtZDFscFJIUmpRMjVGVG14dVFYb3pPRlk1VEdvNVdHUnBOR1ZzWlc5NVJYTmplR2t3YzNBd2FWcHhkSFV2UzBwQk4weFpPRGswU0hKU0t6Z3pPWHBuWldZdlJERm5PQ3M0UlhoUGNqaFRRamxPYVhOS2IzUmlVRE5xVUZFNVZFNDNlbVV3Wm5abkt6TklaeXRyVDFvdkx6QmFVMmxHUnl0TU1rUmhMMU5hVFVrd01ubzFORkkyUmxKUWFuaElNRzVKZFhoSVEweFVhRlV3UnpOa2NVbHZjbWhRV2pKdlltUkRVelJDWWtKbE9XMDNWSGhrWVVoME1HbHZSelphVTFkcU5sTnNRMEZ0UjBaWE1HMDNWMUVyWnpaSGFFMUNlVkZ1TkV0Q0wwSlJUV1pxV2pCcFYyMTZaa0l3UzBWYVJIWlhia2xsTWxGTWREQmpTRzFFTUZCdU1HRXhSek50TUZWSFZqSlRXVUpoVGxBNFJtNTZhakkxY0hWaWEzVldaemt5YWswME1rUlFObUpSZFRoMmRqQXlSMVkzWmpGek4yTlFibVoxT1hCc1pIRjRZM1JYZERJeFl6STFaRE5rZVhVeFVHbzBNVU0yY1VzNFptVlJOMWcwYVhsQ1QyVTFTWFZJU0VNMksxQkhiazFHUVVwRVJWZDBTbU5HYm5aSmJsbGlVa2x4Y2twYVVXazNPVXMyUTFSVmJIcEdjMFYxV2xCSFJIRkxWMDVNVUVweVdVaFlZM1I0U25CcVEwSlRURlJaWWt4SmJFYzFLME56Y2pSRk9VMHdXbEpyYmxsdVREVktXbmxuTmpKRFQyd3JUVEJ6TjJ4YWNuVXJRMVJ6ZUUwek9FVnFkVlk0ZWtaUVUxUkJSRGRCZW1aR1FsbFRTbXN6UWxvdlFtVjZia0o0UlVOamRHc3JPVzltV2xCb09HcDBTVEZuZGtWUldIWkxkalJ2VjBwMVVVbE1MM1JYUjI5MlNFTnZjMGRLYjJjelkwa3ZOM0ExUTJRelNGaDBOR0ZKVXpkSFRqQmxNRlp2YUdaWlIzWXZOWEZxTjBnd1FXczJTSFZTZDA5aFdYZFlWbGRIYVM5M1UxVjFORnBKWm5kelJYTk9SREJyUzBoUWJFUTVMMHhFUTNvMlYwaEhlVlptVFdOck4zcEdOR1ppY0RsUE9FSjFVbWh6UVU1MldFSnBVVmhaVjNKWVkwSXdaWFZJU25Oc1JEVjVUMmRNTTBOUVdFaDFhRVpPWkRkWVlVeEtVVEZPUVZWMVNrdGFNMDFZVldsd2EwMUZTeXRCYTBKNVRGbG5VRTF0ZUhoNk9FOVVNRUp5TUZSd1JrZ3liR3RoSzNkSE1Fb3hkMnBuY2pGMUswd3JSMHBIUlhaNlRtazRWa1o0VHprMGJYWnZaSFIxUjNwNU0ySndTR2RHZUhkaFFXNDFhMDAxVlVGb2VqbE5hSGw0VlZaeVNrZzBkamRaUzJoRVVIUmFha2MwUkdJeGFIcDVjMWMzTkhKRUswUlRPVWxxU1ZJNFFXMDJLeTkyZDFkM1RscEtabUZuVkRNNVpVc3JRbXB2TW5aU1ZIZE9MMmRJWW5CTU5YWjZWMUowZUZrd1RtNWhkRzE1WXlzeU9WY3hjMWQyT1haSVZtUnFWbEJDTVVWWFIxTlVlbWgyWjJOTmNIUjZMMjlCYTBGTk5rUjNRMVZFV0ZWVlEwNDBhREZrV0ZJdlQxZDNPVE5yYWpsRlJtWlFUR3hOWkM5WmJtRllWSFZKZEVGSFNVOU1kbVpvVjJOVVZ6TjVMMGN6T1RjNVJpOURibEZIYUZNemNrUjRka3BvZUdwQ1RYaERMMHNyU25WWGJHWnFlQzgyVjFvMWJUaFpLMmczZVhaSmNGY3dabkU1VWxWMGJVeHdaWFpuZVdoTGFtSkVNR05PVDNKaWJpOVVaa3Q0TkVwTWNrNHpaamRoVUhGRVdqRmlORVpzT1ZSMGJEWXJlSHBXZEdkc2RVNDRSRE5RWXpVelEya3hVM1ZDY2preWJYVkZjVTF3V2tFeEx5OTVaVmhwTUdaMWJHRjBNWE50VDFSWmVWYzBRV1ozY2xaUVkwZ3ZSbUp6ZDBoMU5teDVkelZLYmxGMFdFeFphV0pxU2xCelV6UXJaa2MzY3pkc1YyNVlNV1p3WW1OdmRuRXliVTQ1V0ZOalQyeHFiM1JZV0ZWQ2JEQlJTVXBhVmpGa1ExZEVWRTFsTDNsQmJXRnRWMnR3Wkc5VGRYbGlRblJZT1RsaVoxWkRSVE5GYm5OaU1TdGhiMEoxUkVNMllYVjVZM1p1VW5aNFJ6SXpiV3gxUlU1bk1qWjJjek16Yldkc1YxZGlZakJUVEZwMmRXUklkSEpqTkhKM1FtdDBOMmR1Ykd4VmRHSm1WSE4wY0RORVN6ZGtSamRhWjJkQmFsWXhXR1l2TUV0clpHY3hZak0zY1ZBMVNrSklaek15ZUZGVlQyMDRhRWhXVFdZNVVUZEJZVGxyTTA1Q01WUlFkbEo0T0ZabU5ITmtha3d6ZVhKMWFFaGpUSEExTUVoNVV5dEljbFkzV0VKbGR6QkVNWGRMZUZwQk9WZzBNR05HUWpoWllsSlZZalpQUWtScFN6VkVhRlZpUnpGVllsb3pTMEo0VjJsVmNGZFJTWFpHTkU1RVlVeE1PR1EyV1hwbFpVZ3pNekZRVmxobVdVbFhOWG8zZW5ZdmRYSjZjalZGZDNkSVRGUTBUMEZCZUZsQ1VrbGhlRXBHYUVOMmRGQmplV2wwWVdJeFZHZzFMMUpRUzFGQmNFVXZPRmQzTDI1cU4xVjZSM1pJV1ZBeGVWQnpUM2hpZVV4NE5FUnpjbWsyUVRaUVRsSjNaMFpsVFdOQmNrTnpRbFJaWVVFeE1VWXJWM2RoWW5wbVlWUnZlVFZxTDJsc09FUndTakl6ZUdwNk5FMXJRbVZVZEdaRWNuQkdaMFJZVWpGcVZYSTNiV05aWlVGSWF6bHBSbmhuY3paTGVFcExlRWRPUVRkU1pIRlNhazgzUTFRclIyRnROMWQ2VGxWVmNGQTNZVTVJYTBKT05tMHdNVmw2V0Vsc1V5ODBZbTEzVEN0SE9HeDNSVEJvY2tZMVVVRXJNa3hKWmtoc2J6WnpkR3h4Vkc1elNtZGlOMk1yV1dKamEzQnZObXhRYTNGaFZuZzBhWHBUVW5SYWQxZDRTVGhYV21zNWNYRlFUbmRGU0c1b1RYZ3dUWFZQU1ROYWMyd3ZiMGx5Yms0M2F6WnZLMGxUTVhjMVlTOWpPVk01WW1WelR6QmtiVTV3WjJONGRGWjZSRFJQZDJsRGMzcDNRVkZoYURCV1dUVnBUbWhIU0daUVVtNWxNVVJOVDBwdWEyUnFNeXRGZG1GbVkyUnNXWFYyY2xJMU5qazBhME5uU21jMlRXVmxRVlJ2TW05V2FrcFdNR05tU1ZKRE5VeDVRMnA0VVRGck5tUldiVEJwV1dWQk5rWTFMMGxvUkM5Qk1saFBjbmhLWlRrMVQzWjJZV3BxT1dJemVscDZXblE0S3pkYWRUaHdZbTVJYkRkSE1qUnZZVmRHTW5SelFYUjVjMGt4TmtOUVZteExORTF5UjFWVFJsRTJha2MwWTJ4dlMwaDRZazFCWkZCa2NUQTFiRkJ3TTNKVVkxUjRUV3QyZURCS1oxYzRTa0U1WmpaMGJIZzRNMEZNTUUxMGFWZHZNemxuVEdWNGRVTXZka0ZRTUhVcmJ6VjBWMFV3TDNobVpGRk1UMVY0ZEhaRk9WTjFTamN3Ym14QlUyUm9RVEoyU0U1SlFuWXpVVzF4Y21STE5FdDBaMkl5ZEZreE9XZHhURWx1T0c1MFpuaDRjbGxpY0RkcmFFUlpSWFlyTW5STFQwZ3pPRUpHTkcxQmEyeHdNRTVKZWt4NGRqaEhOek12WjBrM1dDOW9iSE1yZWxRelkyWjZVa1k1Ukd4cVdqVTBhMmw0YlhsMVdWbzBPR1pwUVV0cFVpOXZaMmx5YVVSbk1WWnVWM0U0Vm5SM1JqaG1SbVZsYmpkMGVtOXFNVFo1VFhWWVVHWTRVelJGVVdkMWRqZGxMM1pZT1ZOSlIwMTNPV2MxWjB4TlFrbENjR3AxU1hoRFZYTkJVbk5yVldOUmJTOUJOMEl4UTNobFMyb3dNa3RVUm1vNFdreEZjMDV4UlhOUWNVRkdORUp2YVV0R2QwOWtjVzlaWjFoTldFeENSSFp1YUhkc1RVOVhVMnhIUTJOUlEzQklURWcwYVdzMlRWVm9TbW80TVVkRllrTm5MMHRFTDNwTk9FZGhWR0V2YXl0aWFVOVFlbmRvYjFaT2VFNWFNa3hKZUdaWU5EY3lTbnBGZVhSSldUSnFXVkpZU25RdmVtUlJiVkJIZDJsM1NEUXJZVkZYTkVaMGIwZzJObFYzVjJac1EyOHlRekpGZEdSakwwdHJRWEV3VUdwWlZrbGhhbloyV0U0NFdtbEpVMGxIVDNsNFpuQkxUbmcwVERsbmJEVkVjRzg0VWxOWFkyMXFNREJTU2k5SldpOVFha1ZWU2tkcUx5dDZkbXc0WldaVVMxSTNTRFpKUkUxU2RWUjVTbFIzYmpocVFXdzBjMHc0VHpOcFEzTlBjMVZxUlVGWWMxUXpkRTE1VDA1elprMVVibEJOTlhWQ2JrazRWRkJQWlRWcWRFaFFMMDV2WkRsVmRuaEhUbWhzU2l0MFdrZzNSbm8zTDBWMlFXSklSVmhZYzNSRlpFNHlSa1ZsZEdZM2JDOVFRWHBwZFRZd1pWa3JXU3RXVFRkdFkwcHBZV3RGVkRaT1NFTTNLMnQ1ZDNVMVIwMU1SaXRMTmxOYVJXaFJWVUZDWkVkb2MxSnpkbFZ6VW1zMU5VVnVlRWRsT1dWelFVUlFibEpwYUVWWFV6QndOVkJIWmt0VmQyY3pTMjVzWlhoRFJFMTBWbWwxYkdsWFdYQnBSRmMyWlVsd05HeHBSak12WkZKT1ExZG9TMG8xY1VSallXVlVkM0EwWjNKVFUweEZZa2g2WlZaTVJXeFJaWGMyWkRodVJGTTRjR3A0T0hBNFZIRjRSeTlyWTFONFVrdzRVRUU0Wms4d2VqWkpUSHB5VUc5VVNHWnJXbVpGUkdoeVpucDViVWN4TWpReFdrUlVkbkZCVkc4cmVqTkJMMFEzVm1sUlJWbEViMjlYWlhSSUx6QjRUMDh6UVZGWlZYcEZjemRHWm5WQ1RVbzRhbFpFVkVsaFNHaFVkaTlsZDFKdlQyZDVMemN5Unk5akwyZzJiVXQxUkZOYU5ucHNaVzUzZFRSQ2MyZE1PRm80UlM5aFFqaFRUekZQVjFnM1pIcEhPSGh5VUVKYVRHOVRPVXhrYmtzM1NpdFdlWGxtU25JNWVsUmpNemQ2T1hkclRERlpVSEYzVVRjNFdFeG9UekpVTVc0NFdqTlZXaXRaWTFWM1pYZHVZbmhTZERrMGFqQXJWVmx4ZW1WNGFuazNjR3R4Y2pFMlZ6a3ZRV2c1YjB0emRYaDJSbE40Y2tZelpFbzJVR2t2Yms1UVVHaHlURVI1UVc1ak1YTnFPVmRhUmpWdlVtRkVUVEE0UW5kVVdVTm9WMXAwZUZObWIyeHljbGR6SzBwM1FrTnZlV2hFUlhRMVIxUnBUWEZCYVhCSlFYSlBRazV0Um5OYUt5OXZSSGhxYWxsR0wzQlBRemh0UVRSUFdUaG5hM0J6UVhKR1FYcERVVTB2V2xSUU5sVm5ZbXhXUkV4S1MwVmxUakUwY3prclVFNU5NM1ZuT1VvMlVqUnVlVFpJYzNsMVEyTkdNREp0U1RoMFJqQlpLek5JYUZFeFRVMHJRVXBJYlVSa1JGQnNObVYzY3pOUmRVaEhSRUYzVmpKWWNIUnZOMGhqU0ZSUldrWmhWMkoxSzBJd1VtWkpUREJwVTJZMVJHWndVVVkwVjBkdlptdEdRMFF4TDNVdk9Fa3hWMFZHT0hkNlpHRndNR2gzTkU5Q2NFOURibWxoVUZKM1QxcHVVa3B4ZUdnM1JHZ3pRazE1YTJOS2RHTTRNMVpUZHpsb09FdDNUVXRaZEd4dWFGUm9ibEJ0Umsxa1ZrSmlWMmxDWTBwa05EVmxRVGhDV1hWblRpOXVUelpHWjNoSmRscFFRalJITm1STU1ESlRPVEpJZG05cVV5OUpWVFpRV0ZORWVEZHJZMDlpYmtzM2RqQkhjMGhaVDI0MVFsWTBSemxCVm1WNWRFMUtXRXRrUVZGbk0xZEJjeTlKTkVkcGJIQkdaVzFUVVUwNFNYZFhhalJTZWs5dWRFRXdVbFJVVG10VlRXTkVTV042WkZKdlQyaHpjMWt3VFRNNVEyOU9PRmxQUzA1T1UwSnRha2RWWjJGRFpWZEdkR2hIVTNkd09EUXlia1JCTTBWcGMyRTJTVXB2VlM5MlQyTk9VMFoyUlVGYVQwUmFSRUZuWTNwNE9XMUZTMU5rV205WlEwMVphbGRRU0VOdlkwbFNVMVZpYUN0RmJ6Vm1URlpqWkRCTFdFUjJjbnBxVkdWdlFuVldWVk15YTJab04xUjZSMWQ1TVhkT2RVaENTbmx6Y0RaUlkxbHhNRVV2TUhveWFYQnJWR0ZDWlVOelMwZHZRVXd3U1ZObmNuZDVVeXRyU1VacVYwWTJaV28xWTFaRWNqY3pSMkZMUlhCYVZ6SkhjREZWUzNkaWNURnpPWEJzU1haRVprazRVak5KYld4d1NGVk1ZVUZzYm1KRFVFRmlZM2h3V1hONU1EVm1TMnBKVEM4MlJWbzBTbGszUW5oMFdUWXdjRTVJTUZsaEswMXpUMVZYUVd4NFZrTjNOSFozWmpCSE5VUlJWRW8wWTNSd1MxZEpXVkZLYjA5Q1kyaHRObGczU0dVNGFuaFFOa0pxU3prMGVTdHhhbGxvVURsNFkwTkpaRFp0UVZwbk5sVnphMnRVTVVKa1lUWktPVVZvT0dSeVQwdEViRGcxUVdvd2JrdFRRV05aV0hwb1QzUlFiSEJpY2tNeFlub3dTV1ZNVUhkUGVtMVVla293TWpaV05rRnBhelZoYkhoTmRUUlVhbmRRUkVNeWFVZG5jMjV3VDJRd1FqWk1aMlpLZWt3MFFsWkVkR2RGUTJWWWFUTlVNRmwzY2xaQlNWcFhNbXBoUVhNMFZIQnhZMjV5SzNSVFJGaDVSVTQwVUVwa1VFNHhSMHRyWVZsVFMxbzJZeTg1WWpONFFtRlJZbE13V0ZJd2R6ZFJSMmMyT1RWQ1pDOHllbkZGUVRGWVMyRTFabmw2VXk5NE4wRjVjVWRWWTNwMFNrTTNMMk51TVd4T1pFbGhlRUp4Yld0TE5FbzBTbVl3Y0VsNFpXODFWMjU0WjFsM05VTk1PVTlQZVV4UmNXaEZiRzlQYm01NWQyWldjMmxzZDFKSVJGZERkQ3RSZFVaRVEzbHpUWGRLSzBkR1oyRmhVMUpPVkRkV1VGUllZMUpoVEhOcU1FYzFlbkUyVjJwdFMyWkdUbGx6Wkc1NmVIZGxjRE5uWVcxc2JIRlRkazVpYURFMFZDczBTVlZ6TjFSVU1EaERjRFZtV0Vjd2NrZDZSREJNTkhkR2MwdFZPRU5qWVVOaVYwbzFjVWhKVjBZMVEzWTFNMGh6WW5odU5GbzFRV0pwWTI1RVoyVnNiV00yVUVwNFNHdEpaSGcyV0doSllWbE1kR2QxWmxKNVVHOUpVMWR6ZEhoUlVtRkNNa1JxUkZGUmVTOTNSV1ZzY0VoNUswa3hSRzlYYWl0S01qSlJTalZTY25kVWQySXZjVUU0Y2pSMUx5dFBWbU1yT0UwMldtSlJlR1ZZTTNSclFYcFNRMlZUYUhaRU4zbHVRbmRTZVRoUU5sQTFOVWh3Ym5OdmFGWjZMMGhCYmpCblVXWndOVVEyVVdSM1MzbE5TVkZxVkhKNFpUZGllR1ZLTlZGSmJsaG5aRGhTUzJSalFqUTFXVmQ2ZFc5U1JHRXJNVWtyZW5WREswdFBVRVJwT0VsMlpsWXJkMGxSVmt4TGVEbFFRazVQZVZsWlVWWk1jekIwVDFCalYwNXVZV2RoVjFocVFuQnVaa0pCTkZwS1oycGlValU0WmtkWU1XVnZkVTVHWTBSRVpWSTBOa2h3ZEdaNk9VTXZVMjlSUVRWTWNtRnpSa015VFVSeGNVUTNkM0ZzU1hoRU9FRXZVWGRJVjNsRGQxQnpaME52VnpCU2VEYzJlRGhRUVd3MVJEQmxkVFZRWldKV0wzaERLMDVNZFd0c01tTkhjM0l6YTFkb1dTOWlNMjU0VVhKTlRWbE1lRTVJYzFORFQybHRZMHhOTkVGNmJ6VTRlRE5zVFdOeVNEaExiamxCTDNOaVNFVlljMFJDVjNsQ1kwSjZiRTV5UVhoTGNFSXpNMUJrU2xSUVJuaDVjamhhU0hoSmRFZHpVRmx0VVVwVWFGbDRZUzlEU21rME4wZEpMM0F3TDBGdFNsZGtlVk0zVmk4cmRFZHZUMUJWTkdoSVpqYzRabmdySzA0eWVsZEdSMjB6ZDNOSldUQnVSR2RPY0U0d2EycERkRFpFUlhBMEsxRkNkVTVsVlUxRFQwcFNPR1JJUm10U1RubEtkR1JVT0M5UU1FNWpka0ZuZWxKMVNTdFVOWFZLTkZsR04xZElNbmg1TVdsaFUzZG9XV2x3VjBkUE0yZ3ZVVEp1YW1aMU5VMXhibVJOSzBsbWRWbHJUa28wU2psS1ZVZFlTVXRpZGs5SE1XZ3dhbmxtWjNwR1RrMXdTbWRvU21aMWFEaElaMVF2Tm1KNmFHSlRVbmwxYUd0Wlp6UXdRV1JTTWpWSU0xRlRhR2R1ZDFSSFJWcFNkQzl5VDBKTGFub3lLelZJWjNWUFVYZFVOamxwWkhCV1JVZHZaemR3VlRGTk0za3ZZMU5aYTBSS1RIZzVVMGhNUnl0aFdWTkZRVzV2UWpSak1IbHpSSEpoWVRaU2N6aEdaeTh2TTBsUlkwRXdaVzh4YzBSTlJqQjFTbmh1YzI1RlJYWm1lV05pVTB0VFpVeEhTRFY0VFZsUWNteGpPREZpVUU5SWFGUlJUSEUxT1ZNNVNYTnpjbmxvVkU1bVNHRXlSelZvVjJ0MlNrdGthbWxWV21oUWVqZHhUR3AyYXpKRFVXYzFVMXBVUW1vM1VtNDRUSE5qWlRGQlVuUlpXVTlZYkRCcmFIUmphV0ZQVFRaSGMydENPVUp1V0ZBMVoycDZlUzlXVkdOYWNGZ3JPWFY2WmxRdmJEZE9kWFYzUVdjeFZFTlBXbFJqY205cWRGZElRVmwzUm5kemNIaFZWekpDU2xCdEwzbHFkMFJwYVRGcVNIZzNhRTEzVWtKc1NEUnBjR3QyUms4d2RpODBNbGxEVUhScVNrVm9NVUZaV0VrNFFURXZSVWxXVTFoTlVWSXdhSFZUTW5GdVpIcFhOMU5XVTJFM09IQXlUbmxvUkVwNE1sTlhaSGd5Y1UxcE1VbENWRU5QUzJ0SVRGQlVUalJoV0U1eE1ETmlhSEpDUjNGaVIxZFBjMU5GWmtWR1pFb3JUV1F4VkVkUFRUaGFTRWMxWmxWMFNsb3dWVlpOWVZFck1UZGlVMmhrYUZjemNtWmhlalZuV1Uxc04xVXpiMFoyVnpOb2FsQkpPVko1Ym5KTkwyaHdabXd6ZW5RMlFXUnJXVnBJYTBsaWFUWnlaWE5CWkU5VE5HNVlUWGhzT0doSlZUbHhSR05qU210dVlVSkxjekJRUlU4dkswNHhZMk5PWmk4cmNuWTVkRGtyZFRjclluazFSbFZNUmpSeU1IWjVXVTlHTkRKSVZFeFVUMU50VkVsVWNWTkRjRlZwVlVWQmNsVjVjRmxXYTBaUlZVOW5SRkpHY0ZkWGF6QjJOMEl6UWxKR1dtczRVakJ0V21GUEwwMVVjMFJKVlc5eVQyODBhV2N2ZFRBeVdscG9OWFpqVkcxM1ducEpXbTlNYW5BM2RuVjRhMjR6U0V4alpDODNVa042VkZGcVUySmplazExTkd4UFpHcGpla2RzYVd4cFYxTmFjRVp3Y1cxck9VMWtka1pxS3psU1kwOW5UVTQzWjB0clRHSlplRU5tVVV0bFprcFlZMlp2Y2tKTVExZHJWMWhOV0hocFdqaERVSE5vWVhoWVoyRjRTV1pUUTAxemEzSlNSR2Q0ZVVkYWJFRkdXRUZpVmtKcVFsUnVkVEpQTTJ0bVRrcDBNbmRQUkZKUlNYUkpVMjAxZEVWeWJUQnJNMlphSzFWcWNrSTJkM2RETlhoRk5sZFJhRXhUUkdOdVoxUndXWFZQYTBGTVRtMUxZVVZ0UW1sRVJGQnZiVXA0VUVoWFMySjRWMUJwYzFkaGMxa3lPVmxDTkdoRFNIcFVWRkpQYUM5Nk1XeHFaM1ZQZUZoNk4yNXFTMGhQVFZKdVJ6aGxWRk5WV0RaWFUyWkdSVWRCTjIxSldYaHlSMEpEVFUxYWRsUnBOVGhCUVRST2NFbGpTR2RaZVVSSmMxaFZRMGhpYW0xM1JVVXJjalJpYW5BMWNqYzFiVkZCUkdSNksyMXJVVVJCTkVSU1F6QkVSRmgyVW5CaFVEUllOa0Y2UVd0MFNISktabnBxV1RGbVdpdE1kMFZoVFVFeE5HaE9NRzFHYzI5dE5FNVlhRGczTVVaT1IxcHVhVXBoU1VWdlVFeFNVMGgxV25wQ2JFcFhTaTlzUjFsd1pVcDZaRWxLWjFOd2FWbDZhbGhDYUZoSVVrbFViRkZYVHl0aVRTOVpSR2xoVG01cFdVSnVNbmRwWWxOVVpXaHhNMjFtTlhod1ZHdFliMmx2YUhoVlFWQnZka3c1WkVrNVdpOUROV1ZMUWpWSFJETkdSRGszTUUweUsxTnhOblZNY0daUGVtTlFTSEZZYmxVeFozb3hjbGRGY1hCVVRHMXdTazVwTkVKRVZITkdkbFpYYVRFdmMyNUdhalJKYmpSQk5HNTJNWGcyVUZaRGFsWnhibE00U2xWUGJGWnBiMmxxTW5ZMWEzZDZlSEpJVkNzMVQzSkdhWGxzZEVkamFFeGhjVWN4VW5wUUwwNWFUakJTYkZSd1NDczVOeXNyY2xWc2FHSTBVRFF6SzJ4NU5IVkxWbXhqVjJ0eFVFdERhakV3Y1dSaU5rUXZZMDVOVDBRd2ExVnNTbVpUT1cxUVIwSjJWV3h1Tml0cVNERTBWVXRaVGpsWU1tOVVPWEp0VTNBclJESk1TRTl4Y1dONmFuRllUbEpRS3k5WE1GZHZaVVF2VkhSeU1IQkJaMmc0V0ZkMFpVMU9Sa28wWjNkWVRrOW5TbVJNVVc5d1JHeHVOMFJoUnpsb05WcENiMnc0Y0VKTlpqRlNTMWhEUVZnM1N6RnZia05EYVRWdVpURXpiM2hOT0d4WmRUQm9TR1ExUlRaRmFtdDFNVEkyWjBzMU1WazNjMG81TkdjeGMyWllkMUkyVTA5RWFVRlNMM2cxUVdKMlR6aFlhMkpFVWpRMGFrSjVSV1pHY0VsNmMydExXRkkwV0hkVFZtdDRPVGRrUmxWTlFucFpRM0pUT0ZScWIwSlRSMmdyVkdsMlIzQkhlakJQU1VObmJVSnBUMU4yVVdzdmFFZ3ZTMDFsYUhKTlVWQlFXVzU2Y2pKVEwySXdVbEJyYUhveVR6UmxVbEV3YVU4MlNVVlZWakJKUTBGMVZtTkVUMWhqWjBaM2MzQnVUakpsYlVsWmFTOU5hVWhrUVVWMWREbEtkbGtyYkRWWU5qWmxOVzAxVm5kaFQyaEVTM0UxUjJWUWRtRk5lVTV0WlRGd1RtaHhTRVZ0WlhKSFlXcGhiV2xKVUhaQmEwOXRkWE5XZFc1Q2VERldWbTFZVVZSRFJ6WjRjRE5wZVZCRllsWTRURVJMUVVWc1V6ZEVXRTlTU2pWSVlWcEpaVTVHVm10YWJGcFhXbTFhVjBGSk1YSnZRME12VVhSMU1ITk1aM1YwYm1kWFp6bHplSFp4TURoU1RuSldWR2hQVUZwelJXOTNPVEUzT1hwaVJHWTJPR3RKTnpOT1RqZFJWako1Y25RNVozQTNVMlYwU0VSa1pHUXhPVUZtYzFweFRGVk5kWEY1UVhaaVlrcFZNbVUwVnpGMFVWSlNka2ROTDAxeWVFZGFRV1U0YVZOaFpHdHphakpWUld4SWVXZENNMmRHVmtkM2FrWjVXSFY2Y214U2NGWmlMMUJLTWxVNE9XeFlNSGswVW1waWFYWkhjV3hUTVUxSlFVWmtlRXQwY2pob09UWkxTQzlPY1N0S2FrRmlVV3hpWkZOdWFYWnROVE52YWxOdlRUUlRkM0ZTTkN0aVVXUnRSVVowVVd4TlQwaDJPRTFRZEhKMU5FVklRM1U0Y0dwak1tSlplRXd2WWxwMVZFVnNjV1pXVGt4eVlua3djakFyYUV0SlpqbENXV016YkdGamJHd3lVbEZLVDFSeldVcEdaR3hzZVZkdWVqSnRkRmQ2UXpOSmN6RnFlVU4xWVhWeFIyMW1hREZFWjI1TlZrdDNTbk5PWlV4TlRWWktXVmwwZFVKYU1IcEpNbkVyUjFRMmVteFBNbU5YUVRKRVJ6ZDVkRTVWUm0xMlQzTmtaRzVhZEdKaVl5OVJWMlEyVDI1aGNtRkVSV05hZDJ3NVZFOU1ZVGx4VldWYU5UZEJNbHB0VVRFeVZEVTJlWFJpU2poaWJUQktiM2MwUm5rek5GWXdaMFZPVDJkWE1WRlJhbVpYYkZGeGIxTlVjV1F2TjFOWFNqTnlhVmxxZHpWR1dUTXZaMVZYTkVwVldIcFFZekoxZERKT00zWnJXR2xNT0hSRVRVczBaR0o1VGxjeGEySkdla2RDZG5nM2NVaFRkVlpPTTJ4elNpODJaVzQ0T0dGSWQxaHdSa3g1Ulc5T1JqVnNTVzVCWkhkbU4ycG9aRzFLV21SWk1WWkhkbEZHTUd4VGNtVTBVR0V6UTBkd1NHMVVTRU51UldWNVpra3ZZbXRPUzJKNFlqSk9ZbEo0SzBoaU5FWXJSMGxJVjIxVU1uVlVLM2xUVUZSQ04zUnhVbUl3SzBkMFJIWlRhRkYwYjFod1IxRXlaR2hGWkM5UGRERmlhbEJXVUU5SlVEUnJMMDVVZWpKT056WkZOa056V1ZvNE5UazJVM0o1UkN0VWVYaG1VemhMU2pkTGFHdDNRMVpYYm1sVVlrVllibmRzYlVOQmNqWmlRaXRqYlhGQmVqaDBaazVhUnpCeGFEVXJNR0ZOVWtWTlZUVXJNMWQ2ZENzemJUUmtiV2hyV0dneFFtTlRiSGg1V1dkS2EwNWtkVTE2Y2tKM1l6QnBPRUV6TjJseWFYQjNOVXMxVmtKbVNpOHJiMkZoSzNCT2JXVmtZbFZEYm1oSUswdDZjWHBLY2xVcmRsTlNOblp3V2xOMlJrUXpSbkJNYm5WdEsyRmxNbUZITjNadVdIVnVVRlIyUjNaek9YWmhjMmR3U0V3eGVYcG1TR2RxYld0UmNpdE1VRWh6VkRkMEx6QjFZM2ROVFVablJrMTJMMEZuT0hCSU56aE1kVVpzYzJodVdtZGFaVWg1VUc1WlFXbzFObWhPZUhSd01qVnFRM1ozWjNSdVJDOXVOMjFSU2pRMVVYbzJlR3Q1YkUxRU9FWlJMMDVWT0dKUmJtaHhjMU5DYTFOaVdXdEtZMUpFVm5SUU1GQkJNRmQ2ZDFSR1R6SldjR1ZqVjNsNGRuRlNVMmRGVUdocVpWZDBlRkpXTW5aMlMzbHRaVVZwWVUxTFZIcElVbWR0ZEVoNEsyRTJPSEpYZWpkWVIwNXVjbmMyY1RCMGMyRkxjSFJ5UjA5WFZFTllVVk5qT0RacGQxSk9iRzlSY1RaMGQwcEZURXBCU1ZKRVkzQm5VbkZ3WTFBdllUbHpjRzVSUlV0VVlXRnZTMGxTVFZOaFlrVkxSMDlWUVZSS1IwOU9WR2hTY1hJM1drMHlRMlJ6TnpCQlRqRlpaWE0yUjBGRFVTdGxSa3gxYlhRMEwyNDFVM3A0YW5WdVVIVk1lblJPY1RVNVdraDNWSEExTlRWWmNrWk9OalZyWWpCMk1uSndiRnBuYUdVMFVqY3JObVZ4TW01UmNuazVWazl3Y25sV1JsTktNMmxCVlhWak9YRnhSa2RsZFVFdmVHMW5RalJ4WlZoSmVubE1SbFZRVVVOVlJFUlFVM0pWVTBneVoyOVZWMUZ2ZWpBNWNrOHlRV1pXV1RNNWFUSmlZVE5OZWtOT2JrMXFXVUZuUkVaVlowTkhVVUpQTjBwaGFWRlZhWHBHU1c4MFJHVXhRWFphWlUxd1FYRkVkRXhOYUN0RlFXUjJVUzk0VEVvd05HTktURVpwTjJzMWVXZHRVVGR6TUVscWFFaE5hSHBxVFV0b2ExUkpZbFpYUmtKb2FGWkxRVTlyV2trME1GVmhhbHAxWlZSR0syMUNRamxtWm1GNVQzWXlTekEwVld0M1QyTTBha056Y3pORk1XaEtjMjVxZERjdlJIbFdPRUZNVURCUE9IVTFXakJNVUc1dVVDdElkRzFIZUhZd09FNXpha3BwUlZaeVptWnVVVVZJY1RkMU1GZEpUWGN3VlVONGQzTkxWVmhyUkc5aVp6aFlRMEpVU1hFeFdWSm9ZVXREYm01b1pWSjFRM2RrVVdZNVZHNHZVMHRPUkhjMVJuYzRXRlVyWkhkWFMzaEtSbXRUUlN0S2RIVnNaM0pWUjNsTWFXRkJhMDB6T0hGT2NsWlJTa2hzVTFkWmRtOUhRa0pyUlZGd1EwOXpjMnBVZUhKbE5VYzViMlZITDFwb2IyZDVZMlJzZUZSWFdIZzJabVJWWVRRMlptcG9PWEU0TkhaSU9GVk5aRGwzZWs1amFHRkJSalV5Y20wNFdYUlpialY1UkRkT1dXVlNXWFJwTkU1TWNsRmxSMUpITDBoblJVWjVTbkpKUkZjM1NYWjBSM1ZZWlV4WFlpOUtTR1ppZUVvdmRWaHRXbEZZZDFod05YQklZbk5SWm10elJ6UnJhMWgwZG1WSk0wOUxPWEY2Y1V4YWFUVkNNRkoyYmxsU2RYcHVPSGQwY1N0V2JVTnpVSFpGTDI1a05pOU9ZVkZrU0dsblkxQXZkbFpUWldwM1JuZHlUek00ZDBGMlNtOURZVlp1VUZCdmVqQkpVSEpwYzNaNU5HRm5kVkJGVVRad1NVODBabTB2YVUxamRIVkplVzQwUTBaTVMySkZTMnBHUm5vemIzUjBkek56UW1odFdEQmFlbVZtZGtwMGJtbGpkVTAzZUVaVFZtUk9PSFEyUTFnNFFsQTNOaTg0WVZweWVFaE5lSEJaYVRsV2RYcHpNVTVVY3pkS1UxZ3pURlYxTVhveFZHbGxPREY2YTJKemJFdDBWMVp1VjFaTVltNWlkMVJHUlVsSFpWbDRibGxKTVd0aE4wOVBTMFJPZVZsdlNIRldiVlJOZFRGMWRHUk1VRll3VmxoYVNHUnJWbTFaV0U5eFMxTmxMek5oTWtWTWFrTkhaRE5TU0VSaGJrZG9UbmMxTlZoclpEVmFTRW80V0ZCNVlYaHlhbWxJWjNrM1puSlZlVWx3VDBwNE5VMDFlRlJwTWs5dVNUSmhaMFZzWkU4ME0wODNVM2R3ZDAxd2VsVXhTVlEwTmxOcmRtcGpkWFZzZDFKSmNtOTBNRTlqYzJOaVJHWmpWelIxT0U5UFNpOWtZbXBsWVN0bFdYQnZOVzlQTDFKd1l6bHpVbGx1WTFCc2RWY3pkRVJKYVhaSWNEbFVXVGh4ZEVacE1IQnBabkUwYlUxbldYWlVObGhQVUVoNGRFVlNOM1JFY0ZwdU5WUjRZbFZhUmxKdFdFZDBkMk42TkdZdlEzQkxVMHRKVkdoVFVrWmtOV0l6VlRGWmFuTjBaa3RUU2psTVFpc3lSV3B1ZWtSUmNWcFVSREpvYTNWd2N6WnlUbUpvWWtoNE9ERnBLMnA1UzNwNFdsQm1VVVF2U2tnMk9HWllkR2htYmpFNU5Fb3ZNR2xLY21aSWMwUk1TRE5wWjFWbVdWVTBUbk5DWm13NFNXWk1WVVZJTlhaV01FNTFOMWhXV21SVFRGTm5NbmcxTkZGRWQxWXJOMXAyUm5vdkswdG5WQ3RpTnk5b2JqaFhOVGhQZG13eVEyeElVV1pWT1RneE1UbHRZMlpzWm5KUVQyOU5SbkZzU25oRmQzUlNiWEpCZDFReWJVdHBRMWRzY0hZNWMwRkhhVlpNZDBWVFFrMVRTalJQUVV0SVlWWldSVU5XVDJwbWNWSlhjelUwUVRsRmJEUjFUVmxpYVZSWFlVMXpNMDFvVUdFM1kzbENURWxXUzBkeFkwdFZjVzB5YUZkaVJVdHZjRFZOYkRkTmRXWXpTVzFUUzFWUFVUSnhMMHhNVFhOVE1EbFFXRkZ4VGpkSlQxRkxPVTlXYlZwSFpUUkZlVUZKT0dWb1UwaEZObTFETjFkUE5sQkROREpXVG5rNGVWVkxiekZFVW01VlYyRjVTR3BuWkhGd2FVUjZaRzB4TDFGWE5VNVlSbGhtUjBkVlVERTVWVTU0ZEZSdVJuUmlSalZ5WTFaV2JGTllMM2QwWldWWWRGSmFWMDVvVm1KRVNEQmtUMVJ1VEdWclVXd3laa1ZLWmxsclYxaHZURXQ2U1hrelJXTTJUMmhDUjNSa2R5dFRObEU1ZGxscmNHVlJhakJ2ZEZkRlVuZHFXVWhMV2xkTFdXaEJNbWhSV1dsdlkwWnpaekZvZWtoUmMyOXFkaTk1T1VKTmFFTkNhbGxyWVdOWVVXczVVRmswYVdSb2NDc3hUVEoxU1doWlUyaEdOMVZhV2xCVmNXVjFNMlZrWlhWb2RHWkpZMjVvUm5veE1GTnFhRkJpZW5CcU0xUnRWblkxVVdoalZEVjNTRmh3YjJwalRqSXZXV2cyZEdFelVIY3ZUbXMwYkVsdllUWXJjRTVYUzJ4TGNGSjRkV2s1VWtWb1MzVldVMmt5VVdoeVFWTnFXVkpvYkdOeVpFeHRRMDE1TDBKTlozZEdTVk5xUkVWSFpVbG5jVEUwV0dWRlZsSTNWU3RhUzAxQmJIcFlSSEUwVVV4U1pEVnRUVEJGU0dGNldFUlpTV1Z0YjBoT2VuSklObWx2UjB4c05tVkZRamg1TlRWTmMwdE1SMHRYWjJrNFpHeDZlR1ZrZDB0aU0yMXpaeXMwYlhGeGFtTTFjWFppY0hWd2FWVnNaelVyTDJrNVYwSjZTSGRXT1ZoamVEWTJaM2hGVVhsbmMxVkhRVU0zVlhsVFF6QkdRVmhzYnpBMlVGVm9iVnBpVW5CUk5sQlpPVEF3TUVKaFRUbFpXamMxTVRFeU1tSjZURk5tWjFaV09IbEhaalJUUXpoNVNITm1RVWR5ZWtoalZsTnJRMnRCV25WYVZIbHNTVkV3VTFodE1uUlZja2QwWldWWGNFeGhOVlU1Y0RCUllVdEtZbTB5UzNSaVVWVldhbEI0TkZGeWVGWXZZbTlHWm5RNWFYSTBkbXhqUTJKNlNGWTJaa281UkdGMGFIcFRNazU2UlZaV1pHUldhRWRQVms1dmVFRlNOa1ZqUW1oSlJXSnZkRzlPUjI5MmRFcENRVGswZEZGaGJrczRhR1J4UVZaek55dHBVRVJGVEVodVFVNUdXVUpvVWt0S2QxVXlhM0l4T1RJeVZXZFFka0UyWm5OcWNDODJaWGxzY1RKemNYbDFjRmMwT0ZSbFptNXFNVXh6U0RGdE0zQkxiR3hSZEhGakwxQmhVVk0yVTJ4clkzVlpabHBYVkdaR1pGRlhTVXRLVVV0dmRIbEhiRUpuY3pGT1RWRlhSVTVsUmxWWlNWTk5TbGsyUms1cVVWTm5WRnAxY25ObGFYWTRlRFJTVW1OcFowWm1VR1UyTTFrM2RFNXlOMUJ6WjJkdE1HdHhOMFl4Wkcxa2VUaFpaVkZFWmpOQmN6TllZMDR2TmpSWldtMUxka3R0Y2tKUWRrZGlOVTF5U3pCMlJXNWphRE16VEd4dk1ESnpibWhTVUVWWlRqSk5kbk51VFRGYVpGY3dTa2xMTURKS2NUQjRSV1JJWVdOTVJFdHZhVWxXVWsxSWExWlNUa2RhUVVwTWFtVmhUVGxPVVZWTlNubFVRVmxMV25SclJtUTRRMWRLY2xORU9VRmtaVVZKYWpNdlJTdDZNRkJKYkc5WmFtVmlhVGt5WjBab2VIZFJORTFEZFVWdFVFb3lPWFZhVlhac00wUjRVRkprTmtNM1VIRkxObk55WVdwSlZqVmlORkZ3TVZWd01XVkpaRXh3VVc1RVFraEJOM1JWY0hGSFozVlVhRXAwWmpKYVltbGtTSFpQTTA5NE1rbFZNblJWVmxOWFYxSktWWGxVYjJkc2IyaDFNR3BGTWxGS05XcGxlbU5MYldKVE4wTkxZVzFpVkdRNFNVeDNSWHBGWTBKMmN5dEthVVZCYjNkb2VHaHBiekpDY0VweE1HZEZhM0V6TUZaVFMweHpXR1V5ZVRKbFRIRjRPREJ5SzFOVWNuTmpaa2c0V0had2EyUnZOalJETDBOSVRXWjRlWFUzYjJKVlpIZEZWVGgzU1UxWmVrTkdRbXBHWlhsa1FuQjZRVE5uY1ZjNVp6ZDNSRGRUZFVaM1ZGTjNVVVZsVlZSNGMyNUhUMnRaZEhVclNVY3paV1ZtVXl0d01qZDFXSFJ3U0ZKT2VVaDJiM2w1ZGtkcWJGazNibWRDVlRBMGMyZEJPRTFFVW1ORWNrWnVWV0pzWVVWWGVWRlpPVTEzVkhWTlVYRXpPRFY2VlhWQlExZENVVmxHYVUxQk1XOVZRVk0wVm1ORVJrbHBURkVyYlVsNU9UaHdhMEZKVVhCUlkwWldUSEJaYUZob1NtZGFUR05MYTNCMFFtVklhRzV2ZGpsR09VazJhRmx6YjBwQ1ExbFdhMXBNU2s5RGQxTkxXVUZyVFVGRGJsTTVSVWMxYlZWUWFuaExaVXhaZVVsWE9WRXdUbVZ2UjJaQ1FXZHdSRlFyY2toNmFVdG1VVlIyVEZwVVJITkNSbEJIU1VGNVF6QXdNMkl4YUV4aFQxRnBWVFI2UTJGcGNsaEdNSEEyUVRnM2VFa3lhREZrVWt4dEszSnhMMVJ1V25aeU4zVjRZbFJQY1RsTVl6WkRRVzFsVEd3NGNGTkNla2RQWlZGUlZuTTJVRXRIU1ZsamVXeE5Ra1ZpT0ZORGQwTXZWekJzVWtGU1lqUk9iMlZQTTNGTWFXOTFRVVZKYWxveVJ6VmpiMWh6UjFSeVJXcDRPV3BLY2xNeVJsSnBOMWhqWVd0cFJVMUlWVXBEVVZwcGRFcGhiRVpxV1ROR05tRlhWMXAxVkZSTFlrVlNTazF3YVdaSVRGTlBZVTV1Vld4bFFXdHhRMDlvZDBKQlVXOU5Za2xtVEdwNVoyaFdTakJNVmsxSloyMVRWVEo2VW1GaVJuUkVhREExT0ZsT05GbDZhM2w0ZDB0RmJ6aE1hWGR6YW1NNVRVNXBXSHBsZWtsMlMyeExjazFhYTNFMk5rOXBkRUp2ZW1aR1NUWllTMUp5WWtJek5YazBiVkJITW1zNFFUbEZSazVrZGxZeVVXNDFNVFF2Y0hocWNWRkNjRzVSVTFONEwyUkRVWGRNTkVsUlowbEpWbE5IYUhKMk1YTkVPV3MwY1VWbmFFZDNiRzlGZW5oSVFtWm5Va3RyZWxWcFVtSTRVMnRwYm0xS2RGSmFZVkpKYVRSSE0xUndkVzF3YVRCUlNVVkNiREVyYWxNM2FXdDFNMEZ5YjJaeWRGSm9ja0V2VG1oaVpUaFRNakZHTW10U1ZGbHhjbHBJUjA1dlRHNVBORk40ZGt4cWVtNVRiM1ZKVFhOWVNHaHNkVGR4WmtWa2RVOWhkVWhrVlVRdlpreGFXSFZhVkZKdWVGZEdUVmx5UjFGRmIySnJiMU5RUlVOYU9IQkdLMmRVSzJOcFFrZHNha2hOV2tGck1VTjNUSEJGVGpWT2EwSk9OMVJXTVRkbVZYUTVZbGhLVDJkVU9WbFdXazAwTmpVNGQzUnRSM1ZPWWtoWVNIaDRjbEU0UTI1Uk5UbFBRV2xoVkRaQ09YVXZSMUpZWnpWeWRYZFNibnB2V25aNWFtMVZNekJ2ZUVsM1RrTkVkVmxRYzNjNFkxWXhOSGR1Y0ZGcFNteGhSREkwVWpoT2FFWjNhalZ4VEZVeFJFdzVUbFpYTUVKWVExcG5jRUpoYjFSbWFESTNWVXhuVFdSRlNrdFlVMHAzUkN0Rk1rbEtZV2ROSzBkbFkwNHdVM0UyVDAxNFJYZG9jVTFYY20xRlRGbFRXRFJHYW1OQ1oyOUNMMFpNTDBSTGMxbG1XbGRFUVRaRVRFOTZiMlI1ZVVweFp5dEljRWRyVFUxbGJuZG1SakpsVlRkNFpEQXliVk5WWnpGNE9YTmpTMXB0ZWt4UGFpOUJkWFIxU3pKV05FRlhUbWRhUjBGQk5HMWFOMkV2YlZBNFpuY3lXSGh0V1cxV09IZEJUVWRXU1VOME1rMUtNMDQ1ZFhaMmVsZzVkRXhGWkZreFNVUnhNa0p0V1ZGTFNVRlhUMWxOYlZGQlFVRklaMEpaTWtKcldVZERLemwxT0VwSmVHWk1hR0k0TXk5NlIzaElRVWRMYjBGRWJVOTNRelZFZDJkaFpVRklUakZuVDAxYVJXdGplQzlITXpsdk5qVmFkbVJyWWpKM1lrdzNUbXBsTnpOcWJWSXlaRUp0Wm1KMGJUQkhOU3RuVlc1WE1rWmFPU3N6WXpjcldGWk9OMXBzSzFOVVdDOHdUSEkzY1hGcldqZGtZbFpyVTJkU2IydHZRVEpXUjBWQlMybDBRMGxNYkZKblR6ZDZlVzkyU1RZelJHazNaVGxhYzNwWWEyWTFNa0ZLZEdsdldEUXpUVGhwUTFCV1lpdE5PVFZSWmtsU2FXSnhWVmwwZVhoTFJVTlNZV2hFYW5SeVRURXhjRWxOT1ZwblRGSnhVbkJ1VW10TFRIWlNiM0paY0hwYVYxWlRSVWRHYm1odFNsZExVSFpYWkZSb1ExUlVRbWw2VUZKblF6VXdiMEpxVm0xSllYUjJhVzFqY25wc2RHbEdWaTluWm5GTGEwbG5RamRGVnpkNGIwdFNjQzlGSzI1TFJUZFFNRkJ5TVd0eFlUWXdkMVpoVUdkR1NHRm9NbTFWU1RsbGRGWXlXSEIwWW5Vd2MxaHFjMUoxWkVkSk4zSnJXVEJYZFVGMlF5OUZTMHh2V1VaUU9XcDNXVUpqUTJOVVZFZEZXVFIzTjJSbFozbzFZWFJtVlhCc2JHVjJjM2w0UTAxUlkzcEVVVnBxUlU4NE5XNTRjbXBJUmsxMk5qZHNWbmxGTWpkNmJXWjFNRTVsTW1vNGVtbG1jekJzV1hwdFpreFRaV3hIYWpkUlozcFdRbWh0VFV0Wk9HMVJZMnBET1hkSWVEZENSbXA1YzA5aGRHaGhOVGhIVm5jMGNtRXlSV2hVU0hReEwwVkxNbTluVEV4RlNVWmpUa3RKWVRkMGVteHhhazVSY0VONFZsWnBjSFI2WlhaQldYSlNha3gzWWxKcVYwaHNXSFZYVldOc2R6VjRhakV6ZHk5ckswcFBSbmQwUzJneVptNW1SMVZKV1RKT1EyOVFUbTEwYkdoNWN6VTVMMk4yYTJ0WVIxaFNWRGhSZFdKRVZETlZha1Z3VjNCNWFtcHVaREZGTldsQllXTmFVRlJXTkd4aGExbExLM2xJUm0xeFN6bEVLMHN4YlUxRmNtbzNTWGhHY3pWSVMycEVkRUVyVWxWYVYyOU5MMGxXTTBGc1pHMUZaVE56UjBoUFNuSlFMMmxySzNWMll6aE1UbG8xZDJoRFQwTklhQzlSVWxKeVZIbFJkRmhKWTFoallWQmhXaXRHTWpOSldUY3hTQzlVU0RWbk0wRm5LMmxzVlRZNVFWSTBLMDAzZGxWc01rUkpWVzV2VW5CMlVXOU9lVUpNUjJFd1kxRmlWRk5OVVN0TVkxSXdkU3MxV0Zoa055OXhaUzluVGtScFRXWXJkMDV1ZFRGUVRYUmFUMWxSUWlzMlRWbHlSR05UZVU5UmNIWnhTMXA1UjJ0NlIzUjJhakkwUTFBeU5FUk5aVzlRV1ZGd2RGRjBWbTQwUWtveE9XOUtXamN6Tm1wdVNIUXlNbU00V2pocVdqTXZXSE5pZFZBMVdUaGFkbU5TV25GNFJVdEJlRVZyTUVWd1Iyb3JaSE5TU2xaMFowYzBTbXRMTWpkQ1FqUm5lSGhIUlZKTmNrWlRWbTVJU0hNelZFZGhlRWRQVmtWdVZYVjFVRFZ1Wm1sUGVqbFNXblJNVUVscUswUnVZWGh6U3pWRlRsVjNSVmxsVTNSV01scE5SVkJNTm5ZclRsZFhkV1JtVGxKS1RHRlZVMmhFUTFsbUsyUlBUMlV4ZFVwMk1tVmtjbVl2YUU5TFpubFllakZqTlZGVmFYTXhhbTVNUlU5T1UxaHdka1ZyU2t0MmRFbzNPRzEzUTFoUk5WZDNZMnB0UTNNMEszbFFORlkxYm01UVdraHhhRTk0Yml0aGRGSndRbmx6VlZBeFkxcHhlbGRRU2xWeU5WVlpkVkpSWmxsQlluaHRjazFIU3pkR1RXSkxNVnBDSzFvNUwzZHZXa3R2YTJGTUwwaG9UbEUxYWxKSU1tMVpja1ZzUW10c1NWVk1jbTV0ZFdSaVozY3JkMmx5TTJaQmNYcEdhVVZWTURSd1UwOVBTVkZvUVRKdVNWVjBZWGM1YWsxbUwxUTVPVVYxZEZaNk0xaFdjek0yYzFOaVZVSnlVbVpZSzA1UEwwOTFObTByWmpsMlZtOUtlRWd3SzNJM2VucFdTa1o2YmpGWUsyc3dNelpvV0M5UUwwTk5kSGwwVmpreVQwODRiR3RxUWt4ak5UY3dNV1ZTVkZSMU1HdE1SbFJDWjNsb1dVVm5WWFpHYVZCUGVVVjVUV0ZYZUVsRmFFTk9Ra1p0ZERVemRYaEdiVzVUWjBkdk9YZDVjM0pGV1hoNWJrdENOM05pV0M4eFpHbEVaR1J3TDJjNVltMUpaM2RVYVVaSk4wSllOemg2TUc1R1MxSnBlbkpISzJaS05XUkxSVWR2VWtGbk9VZHpUU3Q1Y2tZMmRFOVNhRXhsWTFsdVVIZEVlblpJZWtGQlNHZENTazFGUkVaQ2RFSkdRVVJCU0VkTFlpc3lUMlJpTlZCaGRHMHpZblJ0TTJKbVMyaDBNamRhZERrMlNHMXFUMHN2YzI5eVRtbHpaVVZxTUdkUmJVTm9TV3hEVjBkRk5XVktjRGhTU0hOcVJqVnJSSGhRZEdGU01sVjVaSEJHVWpKcVJ6bEpSRFprWmt0emMzRlljWFZIY1N0aGNqbHhjMlJ4VTFZeFpsQldaemxZTnpGbVpsWjFSRTVVVlRFNGVsWm1kRlpuTjFaSWRGSXJNVE5ZVm5Ka1Zqa3hSMll4V21aV1pEbFhVREZVT0RKUVJGbEhhazh5VGtjME0xQlVVelZVVVdST1dUQXlZbFJpWWxCQ2JrNTBZekI2ZWxabVRtbHBjMmhUTUZSTVYyTjBlV0Z6Y0dFd09YSm1UM1IwTWpCeFJ6SlBjbUVyZEhadE1qTmlZbkowY2lzeWExQXlSMlpoZG5wMmVVOW9XVFpZYW5WNmVuTXpUM0EyTmxkeWNYUjFNbk15TkZJM2RsQmxhWGxsYW5BMllqTnZjbVUxWkRaSWRtOVRkblpISzNOaU5pOTJjV1F2YUdJcmNuWTNlamhsVFVGUlp6QkNZM0JyUVVWQ2EyeENLMVpDY0ZaU05ERlNaVGxSWW1wUlZXUjFRMEZEUVhWVFJtdHNRVlpIYTBwaU5rRnNSRmxUVEUxb1dsZDNSV1ppUTFOaVowdEVORTVUYzBobWQySkRaMUp0YUhVMlIxQnZXbkpvS3l0SU1tdGhiVko0V2tjemEyUjRaRWQ0TUZsTmVFMXNXVGxPYW5oMWFURmxUMFF3THpSRmFqQlVWalZQVjBwRk5USlVOalZOV0dzdlJsVnFiRlJ3Vms0eFZUWXZWRlJrVFVRd00xQlVaRFZyUVZVMVNuQjZLM2hyY21wUFVHMW1aWE5vZUROTFRHMWpVSE1yWmxveU1YZ3hjbWtyTTJ0TWRrbzVLMWhJT0hkMk5UbG1lRUl2YWtvdmJpOHZTUzk0VVhOUmExUkpRMmxYUm5GclNucHZZV04zVmpsbmRtNUNVbVZwYWpaNGRVUm9WMlpEYkN0R2JqbExTVmR0YTA1R1JtRk1TekpYT1d0dmJqVlphVGhYVGpSdk56VldVSGxzWm13MUwwcHVjazFKTWtoTlRWTk1iMjl5TkhOaE5Fc3JObUpKVkU5UFZFOW5NMUV2UVVGS1ZHTlJRVUZETUhSdE0ySmlXV0phVVdSaFMyRTVkVEppWkhVeVltUjFNamQxY1VneWRtSXZVMnBXUmt0TVlsTlJUbXRCUTI5Q1MxRkJWVFp4UVZCaFoxWTFaMFJLWjBKc2IwRk9ORUpETkVGdVVFRk9ja0ZtU0VGWWJuZENWbmRHZW5sSFRYRkdhalpCV2t0UlJ5OVJSRFYzUzFvNFRYRXhia1ZrTTBFM00zZHpVSGRLVEhkSWJqaERNemhDVURob2FWRm9NbFZuYUZWdk5HYzBhVTF0Y1ZWak5tdEVOV3RDUkd4RFRUbENRM1JDZUd4T1JVeHlNRlpoTUVSNE1VSndPVUZHWkVKUVpGSXdMMUpQTDFGYVptRmpiVlY2VDNCU1pGRkxObWRzVUVFd09HSlVkeTlRUlRsaFFqbFhSV295UWxNeWFrNHpaMUpZWnpGTWNtcE9SeTlDVDNaQ0syWjNUMlozWkZoNVdGTkRWbkZwVkdGcGFIaG5iSEJ2YTFaWmIzTTBTbWsyU2xJclMxWXJRMUJVZVZGTGVXcEJVbE5yTmpWelNrMW1TVXRZUzA5WVEwcFFlVkprWVVoek1tNWtaRVl5WldaT05VSXphak5sWmk4MFZYWnRXV0kxS3k5WWVVSk9ORVo0ZDFORGFHSjFSWGhaS3pjNVptVkZSVFJKVmtsME1HbHhlVXBtU1hSWGFVRTJURWh2Yld4cGVGZEpkRmxxVG1sTE1rdzFOR2xpYzFvM2VFOHZjRk5ISzIxNk9VTlFObG9yVFVscldVNVpOR2w0ZW1ab2JVTnlUMkoxWTNCTFdsRkhjbWhVV0U1MWJWcHVjek5XTjJkWU0wNVRaVTVGYmtSSVQwVmxaV0pYT0ZaME5EWTFkMGc1VW10T1lXWlZXRVpVZWtnd1NIZEJUMVV5UVVGQlFXUkhMMjFaWWxwMGJUSm1OMjlxY0U1aVltTndaM0ZpVDJSa05Ia3lOMXAwTWpkYWREY3ZMemMxVnk5TVpuZFBNV2RoV2tGYU1rRm5XVUZTV1ZsRVRuZEZObmROTVdkbVltY3ZNMEpHVEVGRlVrVkZlbE5KVDFSM1NWaG5VblpCWjJWQ1JqaERTRFpGUzJ0UU1XOW1XbEZtZVdkR1MyOUdVWGxCZWxJd1ExSnZTV0pSVWs5bmFHUm9RalZEU0N0SVMyTklNalJRWkhkbVZHOUdURmxDVVRKM2VsRTRRMVkyU1U1RlpFbGFSR1YyU2xVdlNsYzRMM1o1TVdaNVdIZDFZVU14U1VVNGQxY3phR05QUm5Fd1dFUlNXRWhTVTFoSFEyVkxRbGxMSzJKRlR6aFlVRXBWVFd4cFNWTldTRXBZWTFJcmRXcG1RbEpJVDFoUkx5dHNabUZWVm05bmFsVnpNMU4zT1V4aU1ISm1XVE5YZUd4c2FDOU1RWFJFVFVNeVIxbDVkWGhxWkdoS04wUmlNbGhPV21SR2NGSjRjM1JYZVRJdlMwYzRiemQ1YzJaSk9IVldhMlZzY3l0V1NEVlJMMVprVWxkT1JsWXdWbVZEUzI0NGNWcDVjSFZ4ZG5GeGR6WnlSSEZ6VkhCS2VsWmxZakZaZGxZemVsWndSM0l4YlhCMVlYVk9hMFUzVmtOMldHTjBjVlIxYzNFMmExUndVMlF4UW1aWWVTOVhZamxhWms1SVVUSkpTV0ZhYUhGUFJ6STRZa2Q0YVVscVlYcDRjWEZ0VkhGaU9HOTVWMVV5WTJGaVpuQnpWRzVLVUUxR09EQjBURmxOZEhsRFYwMUxWemxhWVhwc2RHWlhLM1JoYUZaeFYxWnpLell3U0hKVmJESlJjSE5sYkhaamRIUXpNakJPTjJOWWJVdG1XWEk1Y3k4cmNHODNjMmg1TWtJeVkxazNkbXB4WWs4cmN6aDVjR1JyTlhwSWJsRXJaSGxYTkZWc2VESXhNa3hZVWxSM1FubzRSbkJtUkhZclNGQXZjRGQxTVU5amVVNTFjRE4xUzJVMlZqZDJObVUyU2poVlZEazFlakl4ZG1OeGRsTmtPVU5pTkdOdU9UTklLMUUzTnpOb1NsWnBaVnBGV0hsTFRsRkJaM0pOV1VaWlV6RjNhM1p3U1U1NVlrZHJia3A0U2xoeFkyRlZlakp3UmtGeGJGTkhiM1k1V2xCMVZHaG1VVWRGTTFRNEsyMDVPVVl6Tm5FM0t5dDJOMlV2ZUVjdk0xUXZRM1k1UWpsdFlXcE9PVzFTVEVkNWNrUk5XWFZaTmpoNlVGRlFSa0ZYYVVGbFQwSjVjMGhsZDJGU1NVSnNZMGh5ZDFweGFHNXhTQ3RMU0RoQ1FWaFBhSGcyU0NzMFpGWnZaRzVvTUN0SVVEQmtZVkpuV2tkamFVcHZlRUp0V2tka2EyUmxValYwUjA4d1pFaFNNekZTVEdSSVNEaFpVMWxyVG1wUFZFVTRkR3A0TW01aE0wODViV0kxWWtwRVpIbHFOVzB2TVZsclZreFVLek40UVRoQlRVVk9Ra0ZCUVhKSE0ySjBiVE5pZEcwelltSnpMMGsxVkRVMlNreFZlVWhrV2pKQ04xWjBNamx2Um14VlFXb3dRUzlOUVdoNVJUUkNURFJCZGxCQ1VuSkJZa2hCV0c1UlVXYzVSMDFKVkRoQ2NEaG9Xa3RuU0V0blRYRnZZelp2UlVadlEyeHhSa3hNVVVodVZVMVFNRUVyWTBSYVprSnFXRUZRVUVGSGRuZEJjblozY1daM1NHWjVTbHBEUVd4VFJETlRhRmwzYUdsM1oyeHRPR2RvWTI4eU9HOWpiRzlRYkhGR2RIRkRSRFpDZUVzMlZGbzJaM1EyYWxBeFowOVdiMjB4V1dOUVdVbHhXbGw1VFRaNFNpdDNXSG80WWt3NFUyRTRSRFV2UXpFdlJWbFFPRk4yT0ZoamFXdDVaMnhIYjJ0Q1dXOWlXVWxFWVVwWkswdGxWRU5YVEhsQldubHRSbmRwZEZSM1oySTRhM1pTYWpacWFWUklRMnRGV205WVJFSmxjVVJUY1dkTGNXa3JjV2Q0WVhBMVlYQjVlVEZVWlRGVU5UbFJkRGxqTlUxYVpWbDZjUzk2Wm5sT2VHZElha2RtTmxKTE5tcHRObW9ySzJ4NFpYQTNaVzlETWpsVVppdEtNVWwyVFdsdlUxSlVNVmwxY1RWM01YaEtjR2xSWTNWNmRuUm9WamRJWVRKWk56bDRUV3ByVG01RWJrOUlWR1ZFVnpod2REVjJXbmRhTjJkS09UVmFXSGQ0ZG1oNVYybFVOa2xpYjI4eGFVOVhTbVZaUmxoelVUZDRabGc0VjFCNFFqUnJNR2xWY1VwTWIydHNhVkpPSzA5eUsyTjJPRFF2TldvNFNVTm5WakZuYmpkQ2RrZzRUa3BxUm5kQlFVRkNRVUZCUkROQlNFTkJRa0ZCVTBGQlJrRkJTVUZMUVVFMVFVbHpRVUZCUTFwRVVsbEJRWGRCUW1WQlJYTjRhVlpEY2tkRlFXaDBSbTR6U0ROdEt6TkdNM0ZNYVRkUGVGZElhR3RRUmt4MWRHZEZjRlp5TjBsSmRFVklTR1JCZG5GbFpFbEJhVmQ0YjJKUWVIQkJkSGhIYVZGaVptcHdWbVF6VlUxRGJ6ZHpVM2R5Y25aSk5XdFNNMnQ1UzNSbE5tcG5VWFpqVXpSRmNqTnJZMlZrTjI1bWF6STFlRFpuU2xONlYwRTVhVzVCTVRaTFNISnhTRTVRUkhKRFlXWTVVVkY2Y1ZGcll6SktkeXRaUTNReGNIUnpiMDB3Ym1ScWRHTXdObEUwTmxSS1puVndUV0k0TUd3elZXMWtLelp0ZVhCNmJ6TjFXWE5OU3paR01sQk9ObFExWVhKRU0yUTNNalo2TDNWdlFuRnVUR1k1UTBFeFpWSnNObkZNUVhCeU1HTlFZemxzSzI5RlprbzJhR3BSV1RCUk4yeDJVVVZJTjNoWVZqVmlhM1pOTVRseU1WaEJNbGd5YzJwek4xcEZlbkZrTUROR2JTOVFiVnBGY1VWVEwxWkhSVVJHU2xadmVETTVlVE5JWTJwM2JGTlFSbGh4WVcxbU56ZDVZMVpLVVVsWWJEaERPVGRRTHpkR1lpdHFXVmRMZWpkblNqaDFlbTFEYVRkUWVrZ3dRVGwzVVdaVlkwdE9RMEppWlhWUFdVVXpNV3RNTm5oblQycFNPVFpuVUc1dVkwbEJMMHRsTjJkdVVuZ3JlRTR5TDBvMmRrOVVjemRQVEc0M05pOTJVSFpwY0N0WE9YWkVOSFUzZUdWaWIwdDRLMmRsZDA1UFdrUmtXamgyWkdaNkswczRZVUZuYzA1TVdVc3ZORk54UmpOcFptODVNbWN6UWtaTWRtbzRLMEp6VkU5cVduVklZMmhXT0VZM1JteGlaa3RYU25kWFFWSXpVV2RCTkRocVpIZG5Za3hHZFZsM1FtOVdWeTl6UWsxaU5YZFVRbkUwWldkdFRYSktWa1V4ZUZRMlJYaHJObVZPUVhwc1RpdFhXVVJGWTBKdllWSm9XSGs0YURacmF6bFdjVkF5TDI5RlRVa3dXVXR6WVdoT1JYWnZjSHBCUmxOT1MzSklNWE5HVkVKaFZsQkxjRGhzUWtoR1VFSTBaR1psWkhVcmRXNTFlRkEwUmsxTlVtMDNWbmg0TkhKRWJHbEpPVzlXVG1oV01FUktSR1E1WlRGdVJXdFpTV0Y0ZEhGWlFsUmlNSGszWjFJclRGUnVWMnh0Y0d4RmQyWkJjRVJTTkhNelduRnFaRlZNU1dkRU4yMXlVa0pFZUhKc1JUSnBTbkJpYjFOa1JUSnJTWG8xVjJKU2RDOU9aVkZEYTNkVkx5dFpRemszVDI1S0syTkJjVmxCWVdORGR6WjRaSE5ZWVRkNmFHOXhUemxJV25odlZuQklWVFowU1UxelJGSlpMMnd4WkVKTlMxUkxZWGQzUWtkUlMzUk5VVXBvV1dOa05EQktSMlJ2UTNkWlJqVkJTSGh3UWtSVlpuVjVTVTlOWVU4eWNWVmFkSE5oYW1GRFdURlRWR1ppVWxOaWRFMXRSSEIzVWxncmJWZDFSemxzUkVwNk1HMTBZbU5TYkRadFRrNVhSMU16ZUZCbk5YZEhZbXRNYW5CVFUwMDNNbE5yVGxGSGRGZFJlbVZrY2tRMlVsWjBUbVpRUjBOSFducDRRM3BqYjBwQ09XSnRlVTV5TkVWTlIwWXpWRGRVVTBkU1J6ZDNXRlpUVW5sRWJFNDFWRWMzWVV0Q1ZHODJWbU5HS3pRdmJrRTFUbG95YVcxRlJuUlpXa0Z3WlRsNWQzQk5kV2hQUlc1d05tWmlOMlpoUlZWalkzRlVlVXhFYzNWcWFuRndZVTlzYUVoNGMzWnhNWEk0UjJSaFpFSTFXRXN4TW5scFMzRnphSHBPWVhKWFUwMHdhVlJCUWpoTWRYSm9aemd5TkU1dk9VOVpLeXRpYWpkU01EaDVjRWhNZUhsV09FSlVkbFpQUkN0U1dVZFdka04wVUZGWlIxTkZNRTVMTWxOck1XcG9SR1JRYjBSaVMxZEdWbUpvU3pCS1NGTnBOR1YyVFUxTGRuaHJUbFptY0VkNldrUk1UVmxpWlRCTE9GQnZNR3AwVm5GMGRtaGlMMDF3UTI1NWQyVTBaVzU2TkVKSVpUTTNlVFJtVUd3M1EyRm5PRWxJVFZCR1JDdEJTMkY0TkZaVU4waDFjM2dyZFZaelpraDRNMDlCY0hjcldHSXJOMll6YkRGSGRVRm9jbWx1YVVGWGNXNTRjMFEzTkdScmVEaEtUMk5zTlN0SFJEWlZaWEpCYTI4dlZ6VXlObFZQVFVkTVVUQTVkV2xDVWtkeVMzaE1SMGxXZWtGWmFHRmtZa0U1Um5SelozRTVVMmxJUlZscFNVNXJlVElyVkV0bmJIVmlSblpwYTB0RGIxSnlWRlZPU1d0NFlUbDRObXhCTlhJNWFXTnhjM2hzU1c5dEwxTk9SVU0zUlV0bFYxWlpPWEEzU1hsRVlsZGxZVXgxV0hvd1MzTktZV2RVWmt0VllXUjZObE5ZU1V0cWJIa3dSbmhyU201d2VrcENVR2h0VWxWU1UxZEdja1ZwUjNSRU1YUnpNVU5YVEhOdFVrSlZNbVJTWWsxRFNEQmFkRFZMUlc1aVZtOTZXakpMVlZkWFJsUnFkMFl4UVdsM1RqYzRSMU5YTkZCNVpWTmhSbUpGWTBKUVJteFNXREZ1YzNaaVV6TjZNM0ZoYTJ4WGVraENhbG8yUTJKUmVVZGhWRk5hWldrMEwzUkhUMWxHVkdvd05XSkJXVW81YWxaeVREQjNTMFkwUkc5c1ZIUnNlWGhTUzNWVVIzRm9WakprV210V1prWmxjMGR3U0c0eFFsYzNlbWxCVFdkbFdtdHRNV1Y1T1c0eVRrVlhUamhuU25KQlUzQnpXbWhLYlZSNlNtMUpOR2QxVWtwUlZ6QnFVR05TYkM5T2VIQkhObFEwVW5Oa01VSk5TWEJ1YkZCSVpFZ3dkRTQyUWs1cFRsRjVVaTlWUTFwUU1uSkhSa3RYTkRWUGFVWXliRU4zVVROWlVIY3ZjMFp1VFhkRU9XWTNlVFoyWW1nNWRGQjBORGhRU0RGU09GaFhka2x1V1VkNVVrSldTbGRSUlhoVU1HaHhUSFp3VW1GRWFHd3lVMjVXUkZacFRpOHllQ3M1Vld0RU1tTnZkVXRKTTNFMVkwZFVhamxYVUZSYVZXVlNSR2s1YlUxWWREQlViR2hDVUZKeGNsbGtXVmREVmxSeGVuRlpWRFl2Ym1wb00wczRjVmswU0RGVE9YRkZTM0o1ZFdaelFtMDVWRmxLVkcxdlRuTjRVekphVWtONFJFVkVVM1o0V1drd1VpOVVTR05DV2xsMGMzWjFVa2cxUVU5aVdXOUJURXR3VDNacmMxQlZVMEkxTWt4bWVqTXJTazlqT1RKVlEwUXpUeXRJU2pGbFlWcFNiMU54WmtKRGJGTkNVbTl6YUM5eGFFRm9iVk56WmxSQ2FHeEpWUzk2UjI5b05qQnNhWGxQU1daS1RqWnpjRlIxTkZwbFZtdzRXbGRyWVdweWJERndTM05LWlRWV1lXcFNXa1p3UlhORVltbHJVVlpEUkhkNU1tY3llR2R0U2l0NFMyMVhMMGN3UWtWbVJuQmpka0ZTVjJkd1JVWTFSMnhvWTNWMUwyeFBWMFJVZVdaWVJuZHdZVTV1UWk5NFVFYzRSSE54WkZWV04yOWtSbUUwUkVoWFNUWkxZMXA1SzJWSUt6bDFVRWhQUVdaM1ZGaHFNeXRRUWl0dWIydHVOVTQxTkV0V2JqaE1kMkpJVjBkSFJUUkJUSEZMZFhNeWRHTkpSWEkzUlhGNVQyWTRWa0ZrYkZoS1NUVTJVM1ZvT1hoRFFXSkNTVVo1Y204M1ZtVnVURU51Y0UxQlZWZzFhV2hLVUZNdmJreE9kVXhTTW5GV1VXbzJOemg2UWpkMVdEQTRja1JUU0dWV2JHaHdVMk40UW5kRVltdDBTa1VyT1dvNVduSmpObEEwUVVkT2MwaHZXVUY0ZDNoNlJ6RnFaMmRqVkRreU1rMUljRlYwU0ZSVGNpOWhOVGxwVDBac1ZDOTFjU3RPY25OSGFFbE1ZbEowVURWMVRHODNLems0ZEdKSlUzSmlha2gySzBsYU1WRjJWRkZPVmpBMlZVTkZSa1J1VFdKS05uRndjeklyVmtSblMzQnpibkZLYmtzek1FaHRVSE0xTUZaWVpFMTNPRFpzT0had1ZXWkxNSE5QU1dWRWJsVk5VM1ZITTNac2FtaHRWbFIyWlhOTWFqUm5LM3A1ZFVkalJWRm5VVFZ6VmtwQ05tMDRORFF6U0RObFdUUm9VRkZqVm05aFRGWlFXbEp4V0VVNGFVbEhjV1EwZVhGdFYwUnJOR1Y1TlRSYVRYbHdkamRCVVdKbk9YVmtWMGt3WlU5YU4wOWtNazV5TUUxSGFDOU5NSHByVnpOd2VtRkdUVm8zWlhjMlRETmpkbUV4Y0ZSRlozcElaRVJDYzBKcVFXVm1TVXRyYjJGWk1GRXZhMUpRVFU5U1NGUXlSa1ZaTlM5V2JWcHVXakpUWlhodmMzZG5NRVJ0ZWpSU1NXNUVSVWxaVTAxblpFZHFiVEZYYWtaRE1uVXJZakpxTlU0MWRXaHJNM1F6TDFFdmVXbFBWSGhWTUZkWWJWaEhaRGh3WVRaaFJEVkJiRnAxYUdvd1JrWlBXRlI0UWpSc2JIUkpZalZIUVRoVGMyTmxNRVkxUmpWb2IyTm5kWGhYZWxwbFQzUm9ZakZQYUU1bFRrWkJXU3RRZFZsamQzTjJVVmhOWldzemVVUXJSSFpJUlRkdU5YWnVRbnBKUkZKR2FtbFVWVlJ3ZDNGUFJGRm9LMWhxTUhkelZFTkpPVVZHZHpKcGJuZDRkRVpHYzBjNGVXUkdlVFFyUlRrM1VDODVMM1pYTmpGWWQxTnhNMncwU1M4MmVTOUxLM0o0YjFvMmVWUkNZVzByY21GclRrWm5NbXhzYWtZNVNsUktUSEJqV1cxWWIxTTBURE5tZVZjMmRYTTBhbWhyU0hkbE5scG5RVWd6V2tGVmRsazBhbk5hUmtsVGRuSktNSE5HU0ZRNVdFTnNMMlY2VDFBelNrSXpjMmtyZGpsUWFsZEhjbkkyUWxreVFVSXpWRlJOZUdOeE9FbHphak4yT0ZOWVRtbHlTR2MwZUZsVGFDdEJNVEJDTlZGWmJteHdTMEZ5ZERGdlJFWkJSRE51ZEdwcGFIQk1ZbXRrYURKWFEwcFFWa2RJZUdwME4yZE1jazh4VW1OVk1EVm9aMDh4YlhVNFdXOU1UaTlhWW1kd1ZtUktkVmxoYjBGblpIcFVhMlpFVVRNMldWWXdTRUpWV1VwWFIwWmFURlpvYjBvdlJVcHNURmhtYWt4bWNVdGFXVGhwWjI1amMwNURUMlJyYjFGWlQzRldSRTgwYWpNNFFWTkhSVVJ1ZFZSM2NYUm5ZbEl2VjBKQk1WWmFhV1ZwUm05cVJYVnFhSGg1TlhkVU1pOUNRVll6TTBkb09HTkNkUzlJV0hkVGJVRnpZa05TYlRKQ1MwNVVOWFp1UVZWMFoyOHJNekpUUXpSc1NHUlRTbXhzVlVVdlVuaFNhVGRyVjFJMFJreHdWSE5GUTBkRlpESldibXMwUm1wbFkwOUxOMjFpZVd0WVNIWlNVR2x1VlhOMWR6TkVVVXA2ZWtaaWVXdzVPVFUzTnk4ek5HaDBZV3BhUlRkVmVIQlNZMUJxVGk5c1JqQlpXVmx5UjNGVFRreENUMnRHYzBOcGNYZzVlblJPTkM5bWEzTkxSRTU1T1VKc2VWZEZRbTFPT0dwNFV5dHdSRWhxUXpKV1pHMTZXVVZWVGxNeVFVOHZaSFl2TUUxQ2REbERZelJ2T1hObFRVNTJNbXBUTVRkWFZIWmhMME5wV0RkbE16UjRSR0ZRWW1rdmJsYzRaVTgzZUhrMGVXcGpja3QyU1VaVk4zRnBZblp2V0ZWdmFEVlBPQ3RKWTBaSVJGUXhORGxKT1ROdU5tUlRXVVoyZHl0UFEwb3JPSGhHZDJabFFWZGhZamRXTWxSd01XaHVNekppYlROV2FIWmlOVU5zY1RaS2RsRmpNVGxrYnl0VU9UUldOMFZXV2tReE9IQmtObUZUV0dwVGQydFRhVlo2UjJOVVNrbFRibXROVFZsNlkydHdUM2wzVmtsTmVVTmpka3BGWnl0NFoyWnBVV1oxUjB0VVNEQm5TamRCZEVwMGNXSkhOVGNyZDJ0dVVWZE5RV1ZQVTNWclF5dHdTVkkxUkhoMFNrMWpMMEp2VFZoMU5VWnVWM1paVGpWRVpuaHdZVXA2UTJScllYVjVhakkxUkRoUlNGTkVMMXA1UW1GUGVURjFjMDU0UzNvdmFTczRWR0pCWm1sQlVXMUxjMHRhWWpKNUx6bFFNQzlZUzBsbFVHWlpRalo0TkZsaGJtcEpiamhTUW5FdmVHeDZkUzlvYmpGd2RFOXViRUZ5T0hvMVJEWnpaa3BYU25SeWFsWndjRmxKVFVaSE1FRTFVVEY2UWpGTFZVZDJURzFHZDNoaU9ITkdObFZEYkVKSWIwVnlNVTFKUzNnMWJWVjRjMEpDT0dod00zcGFObWhhSzBJM2FrRjBSMnR1ZG5CclpGWTJRbFJVYmtRMlJsQnlkRWcyTmxNeE1HRktSeXR6ZFdFd1F6UXdaRFYzVm5oWVVITmxkbE5PVEVvclVVRjBiRE40YTJ0bVVXTmpUMWxIV2toR1QydHlOa0phWTFRNVMwVnpVWFZoTVVzeUszTkJjRVV4VDFkbGNtdEhhbUpqZFVoQk9FRklOamRwYWpKb0wwbExVak53TkZvcmR6WlBPV1ZaTkdWUVlVNVJUM2t5Vm00elVVNHZlVTAyTTBGT1R6VkVkalo2U0RSYWVWcFlhMkYzY1ROWVZuZFdZa2htY1ZWSVdtWlpLM2d4UlVJd2QwaHdUV1ZaSzFsTlVsazVXWEJKTm5FdlJuSk1Tbk12U1hGQ1FUWmFhRmh4UVdKSlUyWXhTSEpKVm1Sb01HcDBPWEJPYlVaaVUxVmtabmwwZUVGUVprZHVMMFprV1ZZMVJsbHljM2N6TW1kU05ucHVPRm8yUlZOcWNuTktlbWh1ZVc4NFYwNHhVa1I0ZWxSMFFTOU5XVFJPZEhoQmQyTmhRMVptWkdOcEsyeHFObXBsZFRKUk9WVlVjbE0zYm0weFpIcEpZMnRRYUdaa05WZzFNSHB1Y0VaRVQwOVlSSG96YTBKbFZWaEtOblZWYld0amNVRmFTazkyWmtjclpsVXhORmREWVhWcVVsUlZPSFZpZFVSTlpFdFBRa0Y2VW5jd1RVOVpRVkUzY0RoM0wycDZhM0poWjJOVE1YTkJWMUpTV1hOa1VFUnJiR1J4VkhaQ1pqVmFSVkpWVEhwVmNYUjVSVlk1U0hCTFJYYzFRekZHYlVwWlRIVXhUMlJsTW5KU1dIYzRSVE5yTTNWb1psQmpObFZzZFhsVVVrcGlPVlZtTlU5d1FYa3plVmRRY2psRFRIaFBXVGcyY0M5UE9XUjZTRTQ1T0RGT05UUjBSRk5wVW5RM1pVZHhOVlkzYTIxSFZVRTBVM1pPTlhsTWFIbzNhbXBSWVU1cmVTdEpjakZ0UWxnd2FGQkVUUzlzYW1kbVdUTjRXR2xuTmxSNk1YbENXRXR5ZW5aWFJVeFVjRlJVWVd4UmVXMUtWVUUyZDBSMWVWQnVRVk5GVERaMFluVkJLeko0VkZKdFVIbEtXbFUzWkhjM2RFY3hXVlEwYlcxbEwyMTFWMHhxYW5WeU1FdDVZamt2ZEVKMVpsY3pPVEoyVUc5VldDczBVWGN5TTJ0cmNraFViSEZRZEVSVVNUQlpOemhpU0hwTlJGb3dNVnBRVmxCMU4zVlJkSGxXWXpKV09EQjBlakpaWmxwRk1YZDRZVzVaVGxkM2RXTnRNbXR5YlRONGNrOVRZaTlXYW1oTVUxQk5UR3N2U2xaWWRIQXdPRlV4T1V4a2IxWjBaRVpITmtocFdFNDJjVEJOZVZvNWJGcFRPRkZSYWpWVlNESlZjMUZpVm1ZMFJEVlZVM0YwY20xQ2JteHlXRFJoVFRsbU1TdEdWSGcxV0ZnMFlWVlJLMDA0ZUhwT1RIazVjbEo2WjI1elpEWnNVMm92VjFKMkwxRndhVXgzVkRkSGJtdFdZMko0THpSRlVXbFhaRkJtV0dNdkwyZ3pSWFpGTlVVMGRqbDBLeTlZV0c1cU1YcDJTek4wYm5wMlpFNTZkamRxWkdaa01YRmtjVVZQZEU5UmRtOTNUMDV0VkZkUVJUVTJUVFp2UWpoaFNGaEtVaXMzVUZkbWNXbFZWeTgzYW5SeU4xa3ZNazB6U3pCU1psVkRaa3Q2UjBkRWJWRjJPVGRaT1M5S2JUVm1hMFF6VTNocWVTOTNiSFZaTmxBMVNYcHJiV1pPZGxkUVVIbEhVa3hTTUVSVVdXZ3hVRFUxTmpkM2NsazJUamRzVTNjemRXMXBjMmxOVWtWWE9FSXhOWEZFUkV4SFRIVkRWV0V6UzFsdWJUWnhWVkp0WW1GSmFuVk9NV3RpY0U0d2JUVnpVM3BFTkZKVVZtcHpXWGhUTURVNGNWUmFhQzgyV0ZaS2IxQjVXWE51WlVkd1lUbHpiR3d3T0ZKUWJYTjNOV0pKYnpZMGVGaHRXbU01WTNRMmNtRjFRMU5TUWxkT2Fqa3piRzVLY1ZCemVVTldSbG8zUkRWelJFUk9UR0ZLY1RkWGNrSklZWEpXY1ZSc1RYUmphekkwY0U5R2NTdEJZVkp3ZDBsckswaEtUWE0zTmxoSFpXUjZUV2tyYTNKWVZXeHZkbXQyYjNkVlVqSnlXbVUxYmpoMFJta3lWbVJyUW10WFQyUktXV3hqUjJoR1pVbG9NVkJOTHk5UmIzaHpOa2cxUzBSTU1FRkZablZwY2t0bVl6SlpOVVkwTjFkeFRsbHNkbnBOWkhBeE1YUlJZWFprVUVOV2NHZ3hkaTlOVm1wclZIZHpaMUJpTW14bU1FazVTMDVOTVZveGVuZG1TRVU0Wm10RVFqWlJlVXRKU2l0T1lrOXdUbGs0WWtONU4wbEljMnhOYTJWT09VNVJXREptT1ZjemRFTXpla2d4YTI0Mk5HUnZXRWd3UjFJelZuUTNUbUZ4YW1OQ1lYbDNlbTQxYjFRck5VdE1TRmwzT1VSTWJYQlRLMnRzT0ZFNVVtazRNVVo2T1VvM2VVczFUa2gwYVhCR1kzSnVRMmtyYVVadk4yazNNRWc0U0dKemFWQm9OVGhtVkUxMlIxaDNSRkpKTmpoUmNVdEZXSEpaTDJFNGExSXpaako1ZVRaMGJFcDNPRFpQWkZWeVpHOWlWeXRzU0UwckwwWkVVRnBDT1U5WGMzVjNTalJVYW5WNE5IRldha3MwWWxaSVNWbG1XSHB4VERJd1kxaERURlJMUkhKcFZ6YzRhRmt3Tm5aQ016RnJTRFZTSzJoUU5uVTBkR0pIUTJ0bVlucGFSREJTVmpObE9VeFBielpUYzFsMmJIVndZVmhMTm5NNE4xQkVTVVZ2TVc1VVdDODRNRzVSWmpVM2EwRjJWak5vVm5JemVFRXZkVkYyY2xWRU4wZElURGxMYzJGblZqZE1XbTFXU0VaMk56UTRaR1p6Wmt4MlYzZEpabUV5Vms0eFRIVkZOelpQV1hKTGFGbFRkSEJuY21oR1dUZ3dWREJ4YVdNMFpGbEZVM0V5YjNkWlprdzFlV2w2V1N0WFdYcDBiazFWTkRsTGRUaDBRblprVDNGaVVEZzVTVk54ZUZKNFNEQm5kamxEWmpjeWRuSk5ZVWw0ZFZSTVNtMTNTalZ2WVVablVISlBPSFJRV0V4VlZGQnlUVVp5ZGs1dE1FNXFaR0ZMVml0cU1WaFVkMHR2THpneVlVZG1aVzh3TDFSVFdYRllZMVl2VVZwQldpc3JaMDVUZEhOSFVDOVpXREp3WWpOT01IVlZOUzlzWWs5cVJYUm1iekkwTDFRdldIRm5WRzFyVTJ0bU1EWlNkVFZVUkhkaFVHWjFRemx2WlM5UVlYQXlTVGhrU2tzelJIcFFRbVZxTHpCSWVVZEVOREpEZEZSQk4wdHVlV0p5WjA5UGVraHNZM2hpZW1FM04wODVSbEpWTlRKV2VtMUxNbFF5U1hCQmNuZFpSVXN6TnpONlJsUk1hSFpVVFRCeVNubDJZMGRNUjJKdFFpOXdVbk40WkRRelVFcHJXVTQ0SzJ3MGJXNHpORGh4VGxwVE5HRm5ZamhRTm5scGNtOUlSVU5YUzFCUU5tVlZOekpsTUdaUGVqRjVVRkl5V1dSNFQyOUVPU3RqVmsxV05ubHFZVkozUzNWVU1UUk1hSEk1YTJwT1VWcFlZbVF5VVdaV2RXcEtNRGhwYnk5V2NuUk9aRVJNZG1wd2FYb3ZlR05zYmk4NFRsSXZkWE0yU21JMlZEQXJOSG8xYW5FMlpsUnRUR3MzVUhsdE4ycHVla1Y2YkhsdFpscDNiRE5IZUdkR1lrSnJSMEo0WVdRM1R6ZDVkV1F4Vm1KMWVubDBabEYxYzFGdWJrTkVVSGx5Wm5SUE1HTldNbVpyTHpGeGEzbDFlRTE2VG5NeldXaHdNVkF5TTIxWGJpOXZUMWh4TjFaT1ZFZFpaeXRwT0c1VWRtcFllVTVLT1dWcFUzSnllWG8wYkRjNGFqSTBlaXN6UzFvemJWTTVkRWxCY1hGMmRXTlhiRlpIZG5KclNIWjNZbHAxYXpkQ1IxTmlaak55VkdSbFQxSjBSamROYVhSNU4xbFBOemhuWVRGNk16YzFVMUJ6TURsWlRHVmpPR2RGTWxnemMweHZlRWxrZW1JeVNsQkRSMlZrUm5OaWJWVTFjM0paU3pFMVJsSk9NbmRaU1NzelZHdDBaVlkwZGtVMk1UbHBiVmQzT1hsMGJuWnpTVE55Wm1WcldIUlRZMVI2VW1WYWIxTkJWSFpaVVZKSldrZG5hVlpYU1dGME5IVndlRXd2WkV0dlNIWkVNSEZ4U1hSRU16Wk5MM0VySzJGVmRtMTRiMmxRUlVSUFkzcEdSMFI1ZUd0RmJIUjNMMDAzZWpCSFQzRXZaa3RhTVdsaVpGY3dZV0ZMVFhocGNtNDFRbW9yTms0NWFUVm9WSEJ3ZEc1a1dGb3JUMHhrSzNRclZEazBOSHAzVEdnMlNYWkZLMGROTVcwMFFpdHNSalZ3T1hsQ2RrVjRaSGM1ZURoNWRtbHdjR1pTWkVoQmJuUlBjR2xVYUhJdmMwVTBTWGxaYjBOWmJVcDZTRGhzSzJ0T1YyTmlkbUZtVlZaUmJYbEZjRlYzY0RSV1pUZ3ZSQzlwTDA5MmVEZGxNVko2VVRGbGFXTmhPV28yYkM4dk1YSnJkbGwzZW1GaVJGZDBlVkpRVUZoVVZIYzVNVlJtUmxaMVYzaHRNV3hRV21SRlpFbzNSbFVyYnpWNlQyNVdhMVFyVG10bWVHcG1NM0JaT1RCcU9USTNabEI1V0cxMFpqVXZMM2czVWpoNFluRktibTF6WldKeFNFaHJiWFJqTmpoWmRTOUJNMWM0WlhGTWJtY3lPRzlGYlZCUFlUQnRUV05ZSzNwTVRYVkplamxEZVM4NFZ6ZG9XVWQxWm1aWGJUaFllVzExVTBoNmJqZDZkREp5WmxWaldIZG1WMDVPTXk5TE4zUlBaVTB3VVRGaU9FeGhOekV2WVZZclFXTlNObTgxYWtaMWVtNDNObXREZWpkTU1YaHliSEV4YzNWVU9YQm9iVFJRU0RNd2FYRm1SR3RRTVdFNGNYb3ZiSEJFZVRsNFJqWjRhbGRoUkc4eVVrcEZkbTB3T1VSdlRGWXpjR0p1ZVdaNFREbHFNMmhSVDFwVVVHRnFiVkpFZVVwb1oza3pUbkpaUlN0bk1GWlBMMlptZVZoU2MxUjZWaTlHYTJrMVZVOU9Ta3h5UVRsMmVsUlFUemsyY0hVMmFUSmFhblpMZW5aTFYxVklURXN5U0RoQkwyWjBjRmd6WW1ZNVlqaFNhM2QwTUhWUVoxUXpPV3hzWldReVFYWlFkMWczU1RJd2NsRlRaWGQ2TDNablRqRTVSRFo1ZFRjNVRHNHlVbFp1TTFGSVVVOXpXVVpyYW5vMVdVWkhjak4yVFRSdGJteDJVbGR0S3l0YVJUazRMMU5LYkVWa05rUkJWMGhVYVRkRlRDc3lOSFJXVUZGS05UazJNM2RRY0VRcllWRlZORVF2YmpOaFkzTm1lR05qYW1aT2FqQlBaa1JMUW5neWIyRktaRXBGTkRKVGNqTlZSa052Tm10TlpXbDVRekZ0YWl0bVJuWlNUMGMwWVZaaWVGcGxWV014TlRob2EwNVlWM0pvTkZWdWMwbEtSR1prV2poNVJubGtlamRwVHk5NFJIWTRiWEkwTTFFNU5YaGtZVTh2U0hSS1VEY3JlR1pzVkRsbFp6azFPVGd2T0dOaWVuWm1ZV0p0Wm1rd2JGcG1NWFI1UVN0eU1YVllUbU15UkZaUE1XUlFNMXBvTDNaUmNXeHVUVm81ZW1JdmFYWlFLMko1ZUdaUEwzVXZUSElyZVd0VVZHVkpkblYwUVZSVllVcHlTMmxYTTBJelZVeHlVMVoxSzNVMmVUbHpla1V2VjJwaGRteFRXVXBQU1ZSUlZHWkJaVVI2TUhWVUsxQTJRakpEVDI1T1RHVjFka1ptTDBKaGJqaE1VRGhCUVVGQ05FRldla0ozTUVwelFWRkJRVEJFVG5waU4xcDBNakF5TW1Ka1pUTTVTMGQwYzNaWGNXSmxNMlpQWVV4Qk56ZHJXVWwyTkZSWVEwUjNORTVIYkVzNVpIVlFTRzR5TkhSWGRFOHhLeXRKTVVVdmExTkJVM1YyWTNWR1EyUmxaMnRTU210eFZrbHNVMXBrYUd0NFduTjFXRWxzVTJSbVoxVktSbWx3Vlc5V1lWcGphRlZ3Vm5GMFYyOVdZV1JsWnpCYVRtMXlWbTh4WVZwa2FEQTFaSFYyV0c4eFlXUm1la2xDUWxFMFlVNUhSRlp0TTBsU1NsVTJZazV0UkZadU0yOUtSbE0xWVhSWFRGWnRNMWxhVGxjM1luUXlURlp1TXpSR1JGSTBObVJQU0ZneVVuaEJPRWxKWTBKQlFVRkJlUzk2VFcxaVZuUXlOMXAwTWk5aVZtSnVLM2w0UjJSbVpsQllUbVI2THpnNVRYUjJaaTk2TVZRMFFrRlJXVXRHUTBKVmJWaEpVa2xWWVV4R2FVSlZibGh2U2tWVFdrdHNVMHBWYlZoWldrMVhZa3hzZVVwVmJsZzBSa05TV1hGV1MyeFBhQ3R6TUVoRVdtOHdZVGxIY1ZSaWMwOXVZbkl4TmxSa1ozbE1RVkp2T0dGTmJYcENjSGx5VVZweksySk5WemRFTkRWeFRteExNV0YwVjJKa2FEQTFXblJQTTJKME1saG1aekJLUm1wS01EWmtUMWhtYURCd1ZuSk9NamRrZFdabVp6QmFUbTVNTVRSMGRtWnVNRzU1UWpSM1FXOUJRMmRCUVRsMlpWbGlaSFV5WW1SMU1saFhabEIwV1d0UlMxVnhNRWRNU0dsNFJYVlJSMGczUTNKNVZFcFZjVk5IVURCSFlXUkNia2xzUTFaaWFteDROVGhvVlc5V1MxSlpVMWhuVUVnd2NWWkxWbVZvVlhCV2NVNVhjbFp4WkdWblZWcE9iVXhsUmxSeGVtSjBUMjVVY1RCeE1VaHllamM1UW1kM1lVMXRla1Z4UkVocVNtdDVZVTF0TTBkeVJHNTZSbWw0WVhOdGVrWnhhbGh5VG0xNllYTnRNMGh5YWpNM1JHaDNObU4xZWtWeFlsQjNSbUkyWkhVelJIQjVjbFZpZENzM1kyVXZSRzk1WWsxWWNqazNLME5aU1VoeVFXOUJRVUZDWjJJMlprOWtiak5pZEcwd1pISmpNbFpoZW1SMU0ySnVNelJPUjFSYWVUbGxkbGh1TXpSa1QxaGllamtyTDFGclNVTm5iVXhwU1hGS1V6Qm9TMU5qZGtsNWMydHlTME52Y0hFMmFYRnhWM1J2WVcxdWNqWlBjbkJIZUdkaFIxcDFXVzF3YkdKWFJuQmFNamxxWVRKVWN6UlBhbTAzTDBKTlJVUXdXVkZCUVVGQlowczNPWEF6Y21KMGJUQmlTbE5CYjBwRGQybExhVmwxU1ZOcmJFeFRUWEpLTml0bmNVdFRjMjl4Y1cxeWNVZHdjR0V5YW5FMlpIWlpSMmhyWWtkS2NWcHROV2hoVjFaMFdUSjBiamNyUkc4MVQzcHBOblZpZFRSbGJtdzNaVkJ5T1hsalNVaG5kMnBCUVVsQlowWXplblJ0TTJKdWRsRjRZbEpRUWtoNVMybFpkVWxUYTJ4TVUwMXlTbms0WjNGTFUzTnZjWEZ0Y25GSGNIQmhNbXB4Tm1WMmIwZG9hMkpIU25GYWJUVm9ZVmRXZEZreWRHNWlhRmtyTDJjMlQxUnpOSFZ5YlRkMVNIQkdXRGN2UWsxSFJHTlJRVUZGUVVOM2RqUjRWakkzV25ReU4xcDBkU3RPTVdoVFdWTTBhamNyU2tWeFUweEZWM0ZPVDI1NFRGVlBiWEpNYVZGTVZXVjFVRkJyUzBaRGNGTnlSVk53YzI1b1UzSnJTMnhMZEZaeE1VdHdWSEl3UjJwS2N6RmhkRWR5VkhKclQyNU1kREUyT1U5eVZHSTRRMmR2Wm1jeFlrMVRiMDFsVFcxVVNtOTVZbU5oYzA5bVRWZE1SbkY1WWsxWGNVNWxjekppVFdGd1RHUjBNalJwY1hVM1pIRjZOemhEYUVrNFpFOXVSSEI2TjNOTGJFczVaSFV6VEhCNk56aEhha280T1dWMlNISjZOM1ZQWmtsSVozZHFaMEZCUVVGQ01td3ZNak54UnpOaWRIWlhNbUpVVVhoWmRGTlpZMUpOYlZSYWF6SlpPV0ZqWlZGelYweFdiVEpaZEZkaFpGSnpNbUprYlRKWk9XVmxabEZqVDBoVWJESTBkRk5hWTNoamRWaGliREkwT1dGa1pYYzRaVkJZYmpJMGRGZGlaSGc0SzJabWJqSTBPV1ZtWjB0RFVYTkphVzl0VEdsRmNFcFRNR3BMZVdOMlNVdHBhM0pMUzNGd2NUWm9jV0ZYZEc4MmRXNXlOa0kwVkRsQ09FZEJVVUZCUVVGQlMzaGhkRzB6WW5SdE0ySjBiek5ZTW5kUlNVWkpVbWRKVlV0R1ExSmphRlZ3VW05TlYweEdhVnBqWjFWYVNtdExWa3RzVTFwamFGVTFXbk5QV0V4c2VWWmxaMVZLUm1sS1ZYRldTMVpsYUZWd1ZuRk9WM0pXY1dSbFoxVmFUbTFNVm5FeFlXUmxhRlUxWkhWUVdISXhObFJrWnpCS1FtaEpNR0ZPUjFSa2FEQndVbkJOTW1KT2JXSmtaekJhU214TE1XRjBWMkprYURBMVduUlBNMkowTWxobVp6QktSbXBLTURaa1QxaG1hREJ3Vm5KT01qZGtkV1ptWnpCYVRtNU1NVFk1WldabWFEQTFaSFpRTXpjNUwxSk5SVVEzWjFKQlFVRkJkMHBpTURRM1RuUXlOMXAwYm0wek9UUmxTM014WVdoS2MzaGhkREp5VkhJd1MyeE1kSGcyT1N0MlVXSk5SMnBKYzBKSGFuaHZlV0pOUjI1TGRFSnRlalZ6ZUdKelIycEtjMmhYY2pGeGVtSnpSMjVNZEdneU56bDFkemRqVDJwSmMxSlBibnB3ZVRkalQyNUxkRkoxTXpkMGVEYzRUbWhST1N0VVdta3haSFl6YmpNME9VOVlZbW94T1M5QmIwcERkMmxMYVZsMVNWTnJiRXhUVFhKS2VUaG5jVXRUYzI5eGNXMXlMMWhPVWxwdU5rczJSbWRZZDJNNEszaHZSa1J5Y1M5VFVIZG1SbEpyV2pkdWRXWnpkRUpTUmxOQ1dXdGtaMnBXT0N0eGRscDVNR294UXk4clZtSlRZVE5uT1RsS1JWbGlja3BWZUdkRVMyVkVjazVQUzBKeGRVNTJNbkJaY25CWU1FZGxiWFJ5YWxobVl6UTVXaTlLVlhGc1pWTXpVR2xRZEhGcGFtUjNUWGhtV2xONmRrUlFZMXAwTkRkVFdFOXBPR0UzV1RGMmVDOXNOWHA0VFVNeVZsbHViazV3YUhKdFRETnBXbTU0ZVUxTVdYQk9jbmhaZVdZMFZVdGpPVVJMTmtWTVkwMXpMMDVITTBWVkwzY3ZWVFEyVjFjd1NUZGxUVmgyVVhWV1psbDFPV1ZMT0ZZcmJta3JSVmQxYlc5YWFGVlFXVWR2TldVNVptRndla2h5ZVRoYWJuQlJTRkkzWlV0NVVIRm5iblpETkhJdlEwOTRSMnM1TkhKbGFXSkVOSEl6UW01UlZqWkpXakU0TDNZd1JtcHVOVTlpT0U0NVdISXZPRlpPTTFsVlNpOVFValk1TkU1aWN6ZGFaVEl5TnpjNU1WbDRiUzgyTnl0RU1ubGhSRlZ1VFhWaGVWVk1hek5zZEdGV1RrOXBkQzh4TldSWEwyZDJZVlp0TVhCaVFqSXdTMXBSV0RFMFpVODVjSFpoVkRFM0wzWnlXbGd2T1dVeGIzWk1VMUJLWkhGdk1WZDFNSEV2YkRodGVTOHJORXhRTUZCaFNsRnBkbEV2VlV0SFZ6VXJiRUl4YzIxVE5tRXljbGR0VTNaV1NEWkdUa1ZaZUVoSU9YRmhkRkpXT1VZNVZUVmxOVGhLWWxKc0x6ZDBPVlk1S3k4MmJXVTJjV2xUS3pCeGNsZE5kblpUWVRNMU4zcDFUek4yT1hWVk9IZFBNVzFOVlhselkySlRRMkVyT0hKSVYwMXpaell2U0hJMVJUVlFUSGgyT1VSWWNVeFFORE5rUzJOcWRsY3ZWVzVqTlhrNFZUQk1WMVkxTUhnclpsWjBlV1ZrTm5admFpODVkbkJHZDNsd1dYZHRZMnBJTnpBemRETmtUMWh6TDFOek1FOXdPVEJTVURabmFtUTFZbWRTZVVjME5YRXhiMmMzZEZRNGJqZFNlRUZtVERaR1pIWXhOR1psY25JNWNHNHdaa3c0VUdZMWFDOXFielJyVjNSYVRteFRjamxMYkU1V2JXNVNLMDEzYld3M09UWmFWR2g0ZHpkdmJHaGtaVWsyVkRsd1NHbDFXa1ZHZWpSNGExcDRZbEp0TDJwNFoxZDVTRU40V0VsVE1sVnZWVlJ6YTI5blZFMTVibWRYT0U1aFNtaG9hR1JWYlZOYWQwVnBha3AxVTJkeVZUUXhUbkJVYkhsUE9YRkxMMU50VUZjM04yNUZaMDgzWW5CeGJWSTFMMUF3WjFRdmRUSklkM2xNVmpaV2EycFdXRU55U2t0YVp6ZHhaM3AwZW1wWlIxYzVWbkJLVEVoSWRrWmlZekI2ZURkRlJWWTNTRVV5VlVGb2RsTkhZa3B5ZEVRelJFSnVUa2hHVkhKRVVtNXpSMnQwYUZSNldqVjRSRVJxUkZKdWRVZHFabGxOYlRONWJYUmljbkprZEZObU5WaDRiM2d2YnpSRk5sWkdXVVYxUm5Wd1QyOU1TMnhUT0NzeGNIcHZkM0V4T0hCVlFWUlpjMDFFZFdKM1EyMDFXSE5KUlZSMVFWVjZkVUZqVEhWRFN6TktlR04zZUZKMVkwVTBTVWw0YWtSQ1VFOWxkemg2Y205MVpWUmxTRFJyVjFNemVFcFJkR2hDUTJSM1EyMWtkMFJvWkhkRFZtUjNSRlpQTkdkU2JUVkRSMFZGV1RWcVFVTmFla05IV25wRVFsWjZRMFpXZWtSR1J6Um5lbXd5UjAxSlNYaFVUMEZGVkhWRlRYcDFSVU5NZFVWTGNtMUZZVmhCZFRVMVZtOXZTR1ZSZFVaVE5YUllVM0JrUldrM1pIVlFWRWhLWlRGVE5UbE1aWEJVZFZoSWJIZzJaRWx0TVROWk4xTjBWWFUxVXpSV1RETkxWM1JUSzFWd01GWXZXVTl2VW5oalVIWXdiRk4zUzBkeVpFdDFZbEo2TmxrNVRDdHhLMVpqVjBSallUVXhUQ3MzT1U5dWJVNHlaM1pGYVdWRWVrNTFSM0o2Tm04MlpEazFSR2tyU1daTFlYWjBjSGhIUlRBMGRtVnBUbFozWVRSWGNWUlRPVGR6ZWtWUVRFUlJjWHA1TVV0NlVXNUNjR1pHTjNvMWRVSlJTMjlQU1U5aGRreDBjM055VlRkR1ZFbFpWV0p0U2taU1EwSk5OR2RXVFRSSE4xQlhZME16WVRJMFlWcERjMVZHV0UxSk1WUk5ZemR5V0ZwTFJ6WkZhM0UwWlVoVlMyNTVSME1yV1V4SGRFOXpLMGxKZUdwRFFrVjZhVVp6TWtkMFUzQkhlbTF6YTJsUlJsSTJURXRVYUhWMVdEVTRXa05NVkdnMlpTOHJaWGhNYUVsaGFHOUpRVVJQT1hkMVRYQjZlVk0xSzBSeGVuVXpjRFJsYlRVdlIzWnlSbFp1VUd0SFZ5dDVkMFkxTVVkbmVHSmtMMWcwT0RKQk5rZHhLekpCVTNORFNVTlVUVmRYUjBZNWRUVnpjMHAyVHpOTVdHMU1TR1poYVRFeWFsRnZhMDR2THk5SWVrUmtOR1Z5ZEdaU1VqQjRXVmxKVlRGT2RHaHBhRGN3V1U1Q2NUQTJUa0pxZDBsblNrMTRXbGxaV1RCT2RIUm9hQzk2YWxsSVEySklkQzlzWnl0VVIxRlhjbFJ2VFVkTVEycEJWbGRYUjA5RVRGaGlXV2t3YldwUldYTlBVRkZoVFcxRVFtcG5VbGhYTWtkRFRFaG1XbWt4YldvcmJtOWlRbVJ1WkRRemR6TXlUQzh2U2pjeVIzZDJMemsxV2t0WVFtUklhbUZFYmpVdk1WcHBWMUpMWVhaTmVHdE1ja3hFUjBKc2RuTnpRbU5NYWxGWmRFOTJVVkIyTnl0Tk9EaEdObVowYUZKcGFUbFRWMmg2YlNzNGJEWm1jVWRqYzJOQlMyRXllWGQ0VVRVM09GcDJTWFZyUVZKSVNXZERTMGxxZG1OVWNYUlRaRVJYZG1ZclRsSm5jMGRMTDNob1dEaGlSbmxOVkUxM2MzSkhiWGM1WmtSck5IVmlhRGR4ZWpSMVVtbGFiVVpzV1RBelNEYzBZMjVHZW1OUVRsSm1SbmxOVkUwNGRTOXlOeTg0WWl0UGRYaHdjMUJZZHpWUFRHMDBaVFoxSzB4cldXMWFhRnBYVGs1NEt5dElTbmhqTTBSNlZWQjRZMnBGZWsxTVMzaDBkbEJ1ZHpWUFRHMDBaV0ZxTHk4eVNtdFpiVnBvV21WUVRtaDVPRWhLZUdNelJIbzVXbTF0T0VSM1ZVVkJRVWRCYW10V1RtNWlUbWd2Y0ZCMGQzRnNWSEU1TWpoNFRXcEhlbk5NUzNoak0wSjVZMlpRYkhnNFRreG1OSEJOZWtONWMySlBkMk51Um5walpsQnVlRGhPUzJaSmVFMTZRM2x6WWs5M1kyNUdlbVJtWm1wNU9EbEtaa2w0VFhwRGVYTmlUM2RqYmtaNldtTm1SSGt2T1U1VVNYaHpOME41YzFoT2QyTnVTSG8xWTJaRVV6TXJURlJOZDNOeVIzcHpTRXA0WXpOSWVqVTRaa1JUTTNsTlZFMTNjM0pIZW5OSVNuaGpNMWd6TkRoMlVGTlFlVTFVVFhkemNrZDZjMGhLZUdNeVdFaDNMemxtTm5GM1EybDVSbGxUUXpab2FHVlBkM05RYkV0WU5sQjVSa0ZyVjIxSU15dE9kR3RDY1hSclRrODBabnAzYVVRMmJXNUNiakZDVFZNMk5sTjRkMWRqTlRGRVNETmlXakZPYW1SbFMyZFdSalJHUWtoNVRXRnpabFI0V0VKd2JVSkxRbkJHWkcxYWNEWmtRekJ0WVVWelJHSnJUMVZOTjBsVWVESXZPRGxNVldvMlExcG5jRGhSTVVoTVNFcFFkMGxXWmt4aFExWnFiRXROT1UxWGVVNDNkWE42UkdOVWRtTkxlVlJJYlRob05ITTJkV1JpU214RVpYZ3pRVXc0VTJoSk5YRXhUMGhUU1RsblpVUlpXblU1YlRaMFJGbDZjME5KZUVWbGVFZDJibVZPT0hScVdWRnpSbnBaVEVka1VXUTFSa0YzVGtjMlZ6ZFlSRWRVZWs5dFpWQkdaME01Wms0MFMxcHpVM1ZYYVU5b04yRXhiMGhDZEhWeE9HeEVjV2RDVUdSc1lrUjZZVVZLTXpsVFIzUlRlVzFoVGtaTk9GZG5PVVoxVm01UU1rWjZTM2szYzJnMk9YbEtSV0pNUVdkUGJTOUdTMmR4Y2s5WGF6SlNSV1JGZERCU2JsSk9aWFJuUXlzcmVIQm5aMGhqTWtwVmRISnFaVlZLTlRsUldFeHZabVpKUzBsd2F6SXdXV2gzYkhsRWQyWlJaa3c0UWpnNFFVRkJRVUZGUVVGbUx5OUJRVGswUVZkTlowUnJVVUpaVVdoRVEwOU5TMmhvTHk5Ukx6WjBXa1pJTnpFNFlUUm5jRWcxZG5sbFJVUmFUbTU2YldKaGQzbHFRbXRCYzFOQk4wdFFUUzlLUXpKQmVYQlJRbXBJUlUxbE1HZzBSMEkyVkhwcVpuZGhSeTh5V1dkallWbFVMemM0ZDI1WFpta3ZkamhHZDJ0bGIxazBjR3QxYzFOVlJFWlFTRmhOUkd0Nk5YcEtiRUY0VkVKM1EyTlVSRWRpUVVGQlFXVkJSM05XWkdReU1qQlpVVmhpUTNBNU5WbFpTMUZQZG5GVGFrTm5kVFl5WldkR1JUQmtNbkUxZDBOd1owNXdOemh3VW1aRFREVnRiMUJUTTJaR2NuVm5TMUkyVTJKTmJFUllZaloyVkU1WmMwUk1SV0ZxWlhOU01GTjJaakZtT1cwMkt6VnpkakZHZVVVNWMyNXZjbWxKTUhBelVYazFWV3Q2T0RaV1lXWmhNemxrTjNSMVQzZHBiR2RHWlhVeFdWZFRjVWxtV1RoMGQzaFJabVZXZDNka1JVUTROWGRoV0VweU9EUnVja3MyWnk5d0syNVRkakV3VDBacFRtUnlOazF1VXpCWk5tTm9PR05aUjFaRGRWSlVWSGRxVkhwT1VsSkdibFJQZW01blMyRm9ZVW9yU1VoWmJqaEJWREpSVGtOa01tdERXRWd6VW1ob1JGRXlUSEpzY1dSdU9IWlJjM1IxVFc5cGJYa3lNME5xVTNKRVlrTjNlV3A1ZFVkblNXVlZjbFpDU2pKV1p6UXlVWGs1Y201cGRtRkNTVEpKY2pseWFHdE9VSEZwWnpaNU9EVTFUbGx3UjA4M01sbElPRFZXU21NeksyWnBkRUZPYWxGRGJXeExTa0U1UzBaalFtTnFUMDFPSzNoclMzZHdNVFZGVkVWTE9YTm9Za1JoWjNSbGREZFlSR0pqUldKcVNIRjBRbXR4YjB0cU9XcFhlREJ1TjBOb1lqQnFkSFppVWtKYVpXNVFaVFIzU2tzek1rSlFkUzlzT1ZGbFUxRmFaV2xUVG5ocFpHWjVWbXAyVG1OVlpWQkRkWElyZEVoUVEyWmFZelZRTkhaMVdtaGlUREZrUVVSa01Ib3hWa05rTURCUFNrd3lZMGx3YXpnd2NrcDVlR2hQYW5CYVlUVmliM1ZUWVdNM2VVWkxTV1Z4Y1c5R05sUkJlbkoxTmxNMWFUSk1Xakp2Ylc1SU5IbzJWRVpSY0RGUWEycFhVRTgwTTJORFZHa3pkVU5XYUU5T1FpdDRTRE41VjJ0TWNIbzJZMUJDTlVGdGMwZGpSV2RKUkNzMmFrd3ZWVVpOWVZWNlkwUTVTVGhJYWxOMlpEaExjMlJNUVZjelpVOHJVUzh5Ukhnd1VHMDVWMkkwWlhKMWNIUkNNMjlTTTB3NWMwMXVWVkZNUVdKYVowMUVRVloxU25wM1QzVTNRM2N5TW1NNU5qVlZPR1l2Y2tFeGNtZHJORTV6U2sxNVFVNWhVREF3Y0V4NmRuUmhTVk14YmlzeWJVaFRTRFI2VkZWU2EwUlVVV1ozVUdFNE5rODJXbTlEV2xWcFRXRmlRVmR6Ykc4MGRIazRjRzVPVjBwVmNHZHlNVzVhUVVoMFJUa3hOM1JGSzJReWMzTnVSVGg0ZVhZNGVVNUhVM0JtZFZnM1lWcDNUbFl4ZWlzd1lsaDJaM0ZhVWxsQ2RIaFFValI2YlZOV2VVaEVlVXh1UkVKYVZXVlJTRXBwZFVvdlRrSnJXbHBHTTFSR1dWSmhXblZ6VVN0U1NFcDFjMVVyWWtoS2RXdFNLMkp1VTJKa05qZEZXVVpvVkdwaE1uWTFVVmg0WlZCeFRXTm1la1VyUmpOVU5rbzBlRlJ3TkZsMk1qaGhVSHBIU3lzNWVDOW5aVGxVTkZCelJXWlNTSGRwV0ZOQlZDdFNaRFJDVDNCblZTOXJVR1ZCVkZkUlZTdHJXbEJCU2k5SmVqUkNUVFZDV0hkcGFtRkhSbVpGTURsbk4wcEVUVkZWWVhnd1FrZERZMnhIWkhKV2JUSklVRnAzTVhRME0zaEJNVFpLYjNBMmJWSkhlVFF4Tkc4MFkzUTJRaXRqYWs1WllUVXZkbFJYWkd0aGNUUmpVRzlvZW1kM2VWbDZNVFZyWmtkWWNXRTVMM05aWm14aU9XTm9SekpZUWxNdlYzRXZSMll4WW5saU1qRktlakpUVUhKRVJVSTVkMUZGVlU5UFlXaHNhMFo1V1hwSVZEQXhkRmx6U0dwYU4yVTFXVzlRTXpSbU5HTk5NVWhxVm1Gd1VsRTVOVGhqVUd0NVZGSjFObTlTVFVzNU1FRkJWemRuVDI1c2JsY3lRMmR2YmxSR2IybDNabWhXY1hKcFNqTm1hbkp6UVRsVVIzVmhZVU5HUm5aMGJucE1iRkp5TlhWSlUwNVFRV3RxZFZoVFYwNXJUV1o1Y0ZGclpYbG1RM0JRUms4MVJYWkdNbXR1TjIxVFpHVXJkREYyVFVsWk5qUlhkVU5pVVRCMmVIVkdTVVEzVVZoQmVWTm5OREJSYURoVVIyTjVkMWd5WTFkWlVrSk9TMVFyY0RGRVJrOXFkMnB5ZDFGbFVsWlpjbkZ4YVVwWmNVZHdXVmxyYzNaWmNsQkxiSEpOWjI5cFMzQTFSUzlwTnpCaWQzRlVNblJvT1c1T2RFaG5hbUU0YlZOTVFqY3dRV2wxWW1KS2JVUlBOMlYxTmtsVlZteGxaM1IwVjNjMmJYaGlSR0ZEVjNVd2IwSXdZbTF5V1ZOVFZUbElWVXR1YVRsUVRITXhOekExZGt0MlYzVnFWWEJNWW5VNVpVdGhWRzlFTW5GdFEyc3JkV2RwTlZCa05HeHZObXR0VEVzM2VsbENRblV5VUdock1HdEtWWGt5Y2xkeFQzWjRPR3B1Y214eU1YaDZjbkI1V21WNFRrVmhkVWRhT1hsaVEzWnhSMW81TUZWMlkyd3JRV1JUTVhKb2FHOXFWM1ZKUTBGU2VYWndkVmw1WTJ0RFlURnhaMjF3TlhCYVZqTkVkbGxPVUVOQ2VpODJVa2t6TDNFck9VWlNVbmxTVXpGdk0wVktiazV6VTBwWGFqTlhWR0ZhYlRORVdWQTJlbXBPZFc4MWRVMWhSbTU2YjA1MVFWQlNXVGgzVlM5V2RrbDFhamxVTkVOa04yNUdPV1p2V0hsTFpFNVVja05VTDBnNGVYWkNlbWxPWmtOWGVEQkZNRE54UzFCMk4zRnpVelpSU1c5cFFrRkpiMjFQVUdWbmJFaEJRak5PTTJSbVdFaFllR1F4VDNONlNWaHdTRGt6Wkd0d1puRnVOSGxNYmtjM2R6UkdZazlFT0d0SVFXeEdOVGR2Um05M1NWQjRhMHhTVDNwQmRUaEhRME53YTJOM1UxRlBiV0ZOUVRCRVdtZEthVmhQZFZGNlVYSTRjWEUxYTBocGJtMW9aRFV4VVV0a1VqUjBNSEZwVlRZeFZFdGtZVzlXZEdSbmJGY3lVMXBaV1RWMFoyNVhNa05FV25CbGQxTlpUakpMU1VJeWVsRm5keTlhWTNBeWFVZzNZV3d5TWxvMWNXb3JNbkE1ZFdzNFQzRkNWRWhrUzNCcWRXaFZlRE5MVDBjNVRVeGxTMHRxWmt0MmR6Rk9aMjFRVDA5ck5qWm9aRkoxWldnMFIwNTZRV0V5TlRGTllrZzFhMjl0VGpaWGNsaHFUM2xIVkdaUlduUjRRM2szVDNsVVozcDFiMEZZTXpCSlNVaGhXblpVT1ZJMFdsZG1ORVZNV0N0SGJISXZTWHBDYVRoUlozWmxiMEZZZGpCeVlXczJNekIzYzNaM1ZGZDJORVpNWml0WGJWUklOR2RTWWpoUlozWXJVV3hLWWxWV1lqWlhaVEp6ZWpsa2F6aDFWakUwT1c1VFpEZHFhRWczSzBKMWFsVkJRVUZDTkVGWFVIY3pjMFozU1dsb2FVbDVUbXBZSzFGSGVIQXdZMFJDZDAxNVVWVmlSMlJwWkhSdldUVTJZMjE0VFVkcFFqSkJOV051YUhsdFNFdHdjMjl0ZDNOSVJrTkNXVVJhTjA1c01GZFhVbUYzUVV4bVZGaHhSVWN6WjJKUFFuUlpSMEpvV1VkVWNVRkpkamxPWlVKblkwbG9TV2QzVFRkb2MxWkhTSE5EU1hwWk5FNUJVbk5hUlRWNFYxZHFSMjlwTTJrMlQwSm5Xa2hHYjFOTk5VcEJTMnRLUWtsSlNFeHBPRTlqZHpVeFRtNUZNbFpvTkhSSVdYY3ZiUzlrZDA1TE4ydFpia0phVkU1eVEyaDFSR2wzYzBGTFRsVnhSMEZCUVVGQlFVRkJRVVZCUVVGQlFTY3BJR1p2Y20xaGRDZ25kMjltWmpJbktTazdDaUFnWm05dWRDMTNaV2xuYUhRNklEVXdNRHNLSUNCbWIyNTBMWE4wZVd4bE9pQnViM0p0WVd3N0NuMEtDa0JtYjI1MExXWmhZMlVnZXdvZ0lHWnZiblF0Wm1GdGFXeDVPaUFuYjNabGNuQmhjM010Ylc5dWJ5YzdDaUFnYzNKak9pQjFjbXdvSjJSaGRHRTZabTl1ZEM5M2IyWm1NanRpWVhObE5qUXNaREE1UjFKblFVSkJRVUZCUVZBMGEwRkNTVUZCUVVGRFFuQm5RVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVKRlZUQnNTRUZCUkN0SVFVRkJRVUZuUVVGQlFVbEJRVUZCUVZWa1JWSlZXVUZCUVVkVlFVRkJRWHAzUVVGQlUyOHZPR3B6VFZJeFFsQlZkMEZCUVcxUlFVRkJXalJCUVVGT1NtNTFVRmRDYUVoVk1WWkRRVUZCU1ROQlFVRkNXakJCUVVFd1VWZ3hZMjh6TURsVVRIcEpRVUZCTlRoQlFVRkJWVUZCUVVGSFFtZHdNMjUyV1RJeGFHTkJRVUZFYzNkQlFVRnViMEZCUVZWV2ExRklTblV4YW1SdVVXZEJRVVF5T1VGQlFVRklRVUZCUVVNeVFqTTFSekZ0V25kYU1qQkJRVkJrYTBGQlFVZEZVVUZCUkZKYU1scEpRamhhTWtaNlkwRkJRVGwxZDBGQlFVRkpRVUZCUVVOQlFVRkJRa0p1WWtoc2JVRkJRVmwwUVVGQmMwUTBRVUZWZUhkbGQwY3JZekpvYkZsWFVVRkJUV293UVVGQlFVNW5RVUZCUkZsTFlWbFZWV0ZIYUd4WlVVRkJlVk4zUVVGQlFXZEJRVUZCU2tGa00wSlpPVzlpV0ZJMFFVRkVTbFJCUVVGQ1ExRkJRVUU1ZDFGRE1FRk1WM2gyV1RKRlFVRk5NWGRCUVVGSWFuZEJRVUkzY1RKTGJVWkJZbGRHTkdOQlFVRXhVVUZCUVVGQlowRkJRVUZKUVZaQ1JERXhkVmxYTVd4QlFVUldTVUZCUVVaU1RVRkJSVXBEWjNRMVNFdElRblpqTTFGQlFVOXZNRUZCUVUxMVFVRkJTVVkyTVhSb01YTmpTRXBzWTBGQlFTOVlaMEZCUVVOb1FVRkJRWE5ZYWpscFZIQTBRVlV6VFVFd2R6SlpRbEZHTkVoUVpVNDVkSFZoWjJwNmJIQjFkR0pCTDFweWRtNDNXbTltV2s1WFdtcDZTelJ3V1RKeFMyWjZVRlJ0Wml0TU5UQTNNMmRCUWpoQlJIcFNkME5CVDBWdlVYSlFTMVV6WmtkWFMyMXJhRVJvYzNoRGFtbDRSM1JoZUVaek1uaEdhQ3Q2Um0xQ2VraG9TbnBEZEVaNlIzRnNlRmhGTVhaWmJIVmtOR3hET1RSc05TODBiSEk1TUVGbGJrOUpRbTVMUzBKdVRFSktia1ZrU201R1NFcHVVRUZzYmsxTmJHNUNaWFJ1U1VsbGJXZEZOVmxxU0VsRk1UUlRXV04wVUU0eVdHazNXa3BpYkdoT0sxTndkbGxrUmtKQmR6aEZRVVJEUWxSVFRpOHhNa1JCZUhoTFRqWlZOVkZFY25Cb1MwVjVVV1l4WlhkMFozSmxkek5oVnl0WFdWQTBOV05MTURoQlpVRkhNVlpuVDFWS1ZXdFhkbHBGV2tkV2JUSjRiamx4V2pSMmRHTnlWemRUZW5Sa01uSTRNWFJ0TTJKMGJuQmhZVE4wY3pJM1duUXllazB6WW5WWk5TOHlRMDVWSzJabFpDdFBPVVo1T1dWSlVEaHdSMEZCUm5WTmJEaG5ZVUoyV1VoblEwcFVkSFp6Wm1WMVYwSlZWMEZNTnpsR1owWk9TVmh4VWxBekwwUXZaM28yUm5NMlpubEhRakJaV21FNEwzRk1OVWN5WVhjMVkycFpZMEZaTjJwM056TmFZa0oyWkcxM2EyYzRUVzVtVFRaS1JUbHNSa2RhZVdReGFrRnZVMnhYUVRSc1UwWkxSVzFXVWxkdGNVbHdVMng1Y1VVNFZsUkZjVlZ3VjBoNWJGUnNiM2x3VmtKaGFFZDZVelZpTjB4clZHcG9WMlpMYkRSekwyOXVORTRyU3k5cFF6aFNXSGxQSzFKWWVWQXJTa1prWkhSd2JFcDZkMnBtYTFnNGFuWm5WRGhVWldWcVVrOVlhVWQyUlhFMGMySjRSazFCUWtsVU5YWTVaMEUwWmk5alYyaFRaMEZwZFdwSWJHSnlXa1pNTjBGS2VXaDZZbk5IVEhGRVRreDVSMlY1VURoRlFWbHhkMHh0WTBGRmVrUlpiVmhhUkRKcU1rb3ZaakpaVDBSVVVqaG9NbVEyUWxSQk5YTlRNakZEWTFOd2QzTkNhSEJJUml0MFoxVTFjSFUzZG5ZelRVMHdRaXRXVUhoV05HcElabVZuTlVOalZVTXJVbTUzYmpKWWRXMXBjU3RIVFdVelFsWmFORFZwZDNkbk9XVlNiamgyZEhsdVpIUldXVk41YW5Sd05qSnNOV3B1ZURoU1FXOTFWV0pVYmxWRE1rTmFhVU51VjFkWFJpODBlVVppV214WmJVMWlZa05VTjBGNllsUlVNa2cyVEU1eU1qTkhUekUzVldJeWVUQTFNM1EzZFdGMlpqSjFZMHRDT1c1RWRrazBOakZLT1hONk4xSk1OMFV2YzNJcmQyWkdlbXQwUWt4V2VrTjJRVm8zYkZReVVEbG5XV2s0WkN0WE1uVXlOWGhxTWpCRU9XdHVOMGhQTUhJNWFUTTNRV1Y1Ympsc2RqZEdkVkpxVVhGcFRXcHphbGhvVEZaU1MzWTJVR3B0ZFVvMWNITldWRkpHVUZSSkwyRnRablZxUzJjemJXaGpUbEpOVGxKc2NrZ3hWbGxRWjJWR1QwOTBMMXB5VWxSMk5sQlZVemRLZWpGSEt6bHZZbWxMY205WlN6QjJVa1ZtUzBWMFNIaG1ialV3WVd4S1NDdHRlR2xIWmtkNlJrdzVTaXN2YVZSbGFFWlpiRFZhY2xoclFtdFZNWGhITTNwV1lWVXpWMVYwTnpGSWVuRmxZMlpTVHk5aGRIaEZNMHBJY1NzelZFOXFUWFZsUm5veWFXVlJWRGRtTUhCdVUzRlJPWFpWUXpoc2RGUlNablExYUdwNEwxSm1iVWR5U0U5NWRYcDBSVmR3V0dZMVUzTTJObWx4YWtFeFZFY3lkV3gyVEhSVFZISjFiV3hGY0hwU2VtTjBZazVKYUdKdlJGTjRlRkU1TmpaVlZHTm9kVFpJWWpOSE1VeFFLemxPTlRneU4xVTRMM0Y2WlRGTk4wcHJZbVY0YzNadlZ6a3ZObTAxTTNGRWRtRXpNMDg0ZUVvemIxUnVaVXgyWWxWdWRYaFhNSFl6UXk5emVqbDRaalJzVjJSU1pUVkxOV2d2Ym1KMlJpOXpTR1JhVkZCMVFXWmxXV1U0V20xcmNtUklaVFUxTjJsbWREUjNOekZ1VmpOYU0xSlZNR05tSzBzclkyNVdlRVZQWkZKakx6STBlRW8yV0ROR1NFOTFkak5rVmpONk16VTRWbFoxZFRsTU5IQlhhamxxWjFST09XcDBOREJ1ZUVSTU4yWlRXRVV6TkhjemVFaFFZbGh3TjJaTmRIaGhkbFJaZW1KeE9YaGtla1p6TTBkeVJHNU5WeTlxWlVWMkwwSjJNVGsyUWpObE5FaGhUMmgxVDFNelJHbDRPR1ppZUhKMlNHVTRXVWhLTTJKdU9XOHlSamxrTjJad00yRlpNbkZ2YTFCYU55OUtkbG9yWTJacGN6WXZPVlJQYzBoUGFWbFJabUZsTlVrelNIQTVUVzVRYlM4clVWaExMMlZ4VVRONVNETnpaMG94WlVNMk5VODBNQ3MxWmpOb1kyNUxabVJFVUdjeVlUbHBXbTlZVEhsT1VHeGhaazVTTlhRNVJXNXBMMUJZU3pCNWNVcHhURFZQT0ZSVU1WQXdUMkV6WWtsaU1sYzVRMjhyUlRFNGIzQTFNbUZWV0VkWVVFaFBWRE52U3pkNVlqTjVaRUZSYUhWUldIZHlTRGRoZUdKTlFubzVTMVJCWXk5VFVIZDRTMlpLTDJWbk1VOHdOSFpqUVhvMGNUSnBablZXY3poQmVtNXNRekJYTm5Nd1FYQTJWakExYm5WeWExUTVOVkJ6VDJ0M2NtaG5aVk5sWWpKME1HaHpka1pDTm5KaFZUVTJNVmx4SzJseksxUndhM0ZrUjNWc1VGWjJhUzlRUmtock5uaEhNM2xZUTBkbGNFNU9kVlpqTTFweGFqbElibWsxY1hZdmNHVTJkbHBwT0c1VU5XVXhWR2hHTkhKUFZETnhVV1l4UWpaMmJsTXpaRXhJV0ZGYUt6VnRWSEJKZW1zelZuVnNhazVoTmpKcGVrSXJiM28xYTBGbFZYazJXRE52UkRaWWJtWXpSWEIxTVRsM2VYcFhNek5qT0Uxc1VITmpUMkZTWXpkeFVEZHhRVkJyWldWYU5FOXNOVXBJYTNwT1VtaGxibWxPWmxWbFZHeGlMMVJsU0hBMVJXeEtabVpIYlRWdVNubHJWamREZFN0YVpUaHBlR3hPYVZOdWNEVjRUMVphTkVKclNUaFVUREF4ZFZSaU16RkxURGxFVDFvelNtRm1kRnBsVDIxaVJ6WnBiaXRxTjNoUFMwTmpXbGh3TVhWcGJGWTNhR0ZRYVM4NFlUbEtUVXgwWVN0YVpYRllWREZHVlhKdlRGWkxMME40Vm0xS2VtTm5iVEJuUkRSUlpuZFJRU3RLT0dkTWNYRnBUSE5FYjNOblJsZEtaWEZMU20xQlNrd3pWVlJpTDNabEwyVllOSFJPWkRkUVluTnFiVlZTTDFaUE4zWk9VRXRQTmtGNVowSnpRelo0VFdKR2JIRnlaVmhVYm5rM1UzVmxkMDR6UjJkVlRYcGFObVk0T1RKQ2J6ZFpibVlyTjFsMVJHTlRVMDh2TTJRclltWlRaV00zT0RKbGFIWjVla3RXYlZSc2FuWnRWa1Y1TDJWVVZXWTJRalIxWm1oalFreEViVU5JVFd0WlRUUjNXbmxCU1RkM2QyWlJVbWNyUm1vMlFsVm9aMFZSVnpFMFIxaE9WMHAzU1VGRlpreHdUR1ZSWlVoRWNsSjVWa1V6Wld4SFFWZFNhV3BpTVROMVlVVXhjM3BxTWpGWlIyWnphR2MzZFN0cGVqQTBUMlkwUWxSaVFVZ3ZRa2hpU1ZGTVkxUkZNbmRoV0RneWVIcFlORmh3YzJkaWRuaEdUR0pETmpOblRHVXJSbVJtU1RNNU9Fc3llRTlPWWtWd1owbHViVEp4ZWsxd1lWa3hWWGQ2Wm0xS1lWUlJMeXRoUjJGYVRWWjRhSE4xV2toMVRXVnpZWHBpUVdaWFdXcHplVEJsVFhSMVlrRXZRbU1yVG1aM2NpOW5aM1pEUXpoQlFpOURZVWM1Ym1oQk9YcFVPVkkwVFZKcmFGRkhhVTg1U0hadFltZ3JRekJYTkV4WlltbEViaXRLYm1WQ1lYWnRTVkJOYTFsNlpFaGtORmhRYzFSdk5DdEZWRE4zUldkbmIwWlVaVUZIT0hwQlRuZHdiR05aYUhWSU4xRXllbUowYlROaWRIQXhSbUprZG0xdlRGcDBaQzlSVUdGMGRUSnFWMlJ6WWt4SlNERTRSVXhFVFVSa01rOHpPRTl0V21waksyTm5NM0IwZWlzck9HdElVblpuYmpNNWQwRjZkMGxLYnpScFlYVnNaMjFFYmt0allYTmlZalJ4YkhZMlJuVk5TbUpPYUhZM0wxQk1SMnBpYW5sWGVUZDBOazl0VGpWelRIVjZUVnBaV0NzemRUWlpkbXcyT0V3NFkzY3pWM2QyZVZCWGFVRmtNVTVRUVd0b1NHbExjV0ZQVkVWbFlqRTNORFpLUmpaRmEydEZhMG81V0ZGNGVXZEpiMWwxUms1SFNXeHJWVlZ2UkROWmVYaHBRMHhaSzBKQ1QwVjBiVlV3VldkUU5IbDVhRU5GTnpSRmEwVjVUMXBVVkZKRE9GUk1TMDFKZW5ablVsTlJjVFZXVGtKTlNEVlBjMjlCWjNVclFrNUdTMjVzVlRCclNTOVZObmxwUTBzMFJVVkZNR0VyVmxSU2VXZEVWSEpMUlVsaVoxRlRVWHB2UmxaT1VFZEpSRTl6YjNkcWRVSkNSa3hDYjFoVk1FMDBVWE15ZVhkUFZHVXpkV0k1TlhGcWVGaFlhWEYyYkVSbVMwOHJWMFE0YTI1d2EwMHZUREY0Wm0wNWJITjVNelZsWm5seEwyeHFMMHd6THpkWFVYcDBTbFFyYzNSUlIySXlOR001WTA5TE1VZHRlVEY0V2t4RGRHeDJWM2xXTTFoS1VXcHpkbG8xV0ROdVJuRjRiSFZXYzJWTGJ5dFlXamh4VERWYVdIbGFibTEyWmtaM05rNXVZM1JpUm05MmVYUm1iSFV2U21vcllWZzRXSFkwY1M4dk5XWXlPVFUxZDBrMU9XSllabkJMTkU1c2NFbDVXSEZVU21KR2MzQjVWMU4xWW1Rck1qZDFUbEIxYkZBeGVWWkZOMHhTWW10MVpEaHpSRFZsU0hsWFNHNTVabWRtVFRjeVpXWkxZeXRZYkRoeVREVmlXSGxhYm0xdWRrWTRLMHR3SzFkcWRqQlBNa3d5Wmk5aGVEaFhZalJ3TXpWbFpubHhMMnhxTDB3ekx6TldRMDlyZGxCUk5XWXlNMlZZYTB3NFRteDJSWGxZSzJKS1l6RnpkREl5VXk5SU5WUjRaMEZ6V2xkdU9XOUNaVFo2TTBodGNtaG5lVGtyWlN0c2JUUkROSFEyVTJGa2NGcE5NSEJUTVdSd1MzWXdNbTFRT1RreGFWQlFaRnA2UkhwVlNrcEhha3g2ZWtGTGNXRlRVbUpyWVZwYVdsaGtTRTE2VW01TmVscFlUWHBzV0UwdmRETk5MMnBQU0dsU1RpOXRVV1ozYzNSQ2VVSk9hMmxuU1RVdlpIRjJWMDkyZW1ORU5VRnRabUowYlROaWRHMHdlbk5CYVdOaVdTczVPWFJwWldWV1NGSmFNRlpHWmpWdFpGWm1NM0ZtT1RJdk5uUlRiVkJwUlVwMU1WbG9Obk5NTkVSTk1WaEdVMkYxVldjeGVFUmxjRXRrUTBGeFJFVjJWVVYwVjJZMU5WQmhjVU5qY1RkS00yOTJXVzVsYm1WcFpHbGtOblYxUTA4ek9HNXFhVzV0WkdoTmRtVjFhR3RZT1UxRWJpOVBhWEpvVlVFeVRHVnVhSGxtY1RaRE9ETlpMemR3Vm1sc2FHVlVSekpRTmxjclN6QmpTRlpOY2pRMVdtWndTbVEzUWxWSlJubGxXbWhXVFRGcVNVMDBhMFZOTlZSUFlUY3ZTRmxYT1M4M1dYVllMMnR1Y0VVM1VqSTNjazVQWkRoc2NrZGpWMjl2Y0c5YVVYbDVjVzFuYTJseGNYRlhSWEJMTW1scGJWSmFWekJyYjJKaE1tMXVaek5YYzFwM1RqRnlTMHRsVkhKd2IyOUtSblZsZFdoc1RsZ3pNSE0wVVRGemNFTnNObEpTVTNoRk9UaHdVWGhzU3pSMGRpdEtZbllyU2pSbUswcEdaa2RIUkZGYVNtaGFjMGRGTWpCclducHJOREo0YzFwYWFYRmFXblZIV2xwd2RXWjRjMlZUUzJ0allteDZSazlqTmxVdlUzTnpSRFZRWjJkbmFsbHBTV2h4VTBGdGR6UlVNUzlFUjNoUmRtNDJVSGxZWlhaaVdEaHNjR2wwVmxGcWJHOVRTbFZEYkhOa2RuZElVWE5NUWxsR2MzRkZSbGxtTjFwR1lYTkRabkJWY25wR1luSTNVRmNyTWpsSmRXc3pkVTEzTDNoTlNTOTNTMGt2ZUU5RkwzZEtSUzk0T1VjNE1VTjZWbFFySzNCblNHRnVhbVJpV1hVeFpsYzJWWGM1TjBnMk9YSnZaRGRZYkM5d1pYaGhjbFZWY1RGWGJsWnlWWEJSUjBkTldWbE5PSEJxVFZSUFlYcE5WblY1VGxSMWVVOHZka3RYUldGb1kzcHNSbnBzY0Nzd2JrTkxLMWx3Ym1WTmFHWTRWRUpMYkUxSGVsQlBlWFZXVG1zNGVIbFFkWGx3VkVZNGVucHhjbkI0ZG1WSlNFZ3pSbGgzVEZNdmVYVk1kRXQyZFUxc2JtNUNXSGhtWlRoNlNsQjFjWFp0UWxZemFrdFlVVEF2T0dsd1VIa3hha3RNZDNGeldVVkRkbmxYYUdrd1RteHpZM0paV1hwd1ZtMTZiRmxNZW1wWllqVndlRTExTTAxUFNHTTFNVTUwU3pWM1ZWazNOamRvU21kV1ZUSlNjUzlNY1V4bGVIcHJOVXhqV0ZwYWNYSlFVakJ3TTJSc2RVaHpjMVY0Ym5ZclZUWnNMME42WXpRemJFOVVLMWhOV25NMVoyczViRWR4VFdOdlYwWnpOSFkyWWpaRVlVNTZibWhpWVZoeVRqa3ZTR3B1TlRaU1JVeHZNVGh5YWtsM2MycDBTV3NyU1M5RFdubG9NV2d4Wm5jM1oxbEJOa3A1WWtWNWFtUlJhMVJhV1RBeFdXWkdMemR3UW0wdmNFa3hZVVUyVkRKck1ub3JXbkJpYkdkVlJtMXRaVlJIVUM5WkwxaFNVM1JRZUZCdVNqRnZhelZVYm5NM1VWZGFjVzg0TTNoTmFWWlhiWGhwY2xSYVEwcGxTMU5GTUUwdlNsUnRaVUZhV0hCWGFXVTBhVzQwTjNod1UzZ3dZV1JYWldSTVFsUkRaQ3RIU0RoTVQwbE9aRUZGZW1aUlZqSXZibk5OWkRkeU5sUndZalVyYUdOcmFEWTVNM0pOT0hndlR6aDNTWFU0ZUUxMU9IZHhka281Wmk5bWVXSkhMMlJXU1ZGUE5XdGpUelZyVjA4MWEyVlBOV3RvV2t3M00yTldSak5wVUdNMlZGWjBjVm8yT1hjNGFpOTBVRkZVTlRORk4wZEJRVUZCWlVGR2FsbEhSWEZaZEhKRWQwMXlRWGRPVkVaR1RVaEJkMDlCVG05U2JtcEhSSGRhYWxKcFFXZEpUMVJCVVdGWloxWm5Rbmh1Um5nNVVXeHFWMDFFUVRoUU9DOHdOM1l2WWtsNFkweEhjVTFXVVc5TmFrcE9RbU52ZWk5dFptRkJNVlJKUkVGRVRqWkVWMVkwUVZsNlNYaFpTRU5CUVVGQmMwNVNiRUZPZDNGbFQwaGpaMUF4V0dkcFkyUTBaa2xOUld0VFJVeFhUSGxYWjBFMmExbEVLMGw1V0Rsd09FVkVhR0p6UVVWUWFWQjNUVVJSZVU1cVJURk5lbU4zZEVwTGNHUmFiM0pYTVhNM1pYZGtTRWhXVDNwc05qaGxkbEIxZHpaamRqTXpOemdyYms1NFpGaHpVMEpCT0VkRlowRkJRVWxDWVRkSE0ySjBiVEprWWxoMldVd3pNelpFVW1jd1drNXBTVlZYVUVkVVdtY3dXbVJ4VFZkWVVHMU1WbWt3V2s1dFMxWlhkbGRpWkdrd1dtUjFUMWhZZGpKSVZHZ3dOVTVwU2xVeVprOVlZbWd3TldSeFRsY3pablZRV0dvd05VNXJURmh5TVRVNUswaFViREk0TDJaMk1FcERRVzlLYVRScFMybFZkRWxUYTI1TWVVMXlTa3Q1WjNGTFlYVnZjWEZzY21GSGNIQTJLMnB4SzJGbGFraEJRV0l5VW05M0syNHpNM0p0TTJwVWRuTnVZVGx6TW01eVJ6SmlaSFV5WW1SV2RURXhXblI2V0dGNWRIRXpPRGRoZW5oVWNFdDRlbTFVYldKTlNtMWlUVVpYVFZGaVluTkdNVlYzVVRSNFVWVjZSVlIxZDFNclZWWjRXV05XZFRCU1FqZHpRbVpCWm1oNVFVVTFlbWhKYVhKQlZsaFJVbWhsUlVka00yaDNUMVI2YUVKWEx6UjNRbVFyT0VWalFVUjFTVkZFZFUxSmFuVkpXV3AxVFVWVWRVbFZWSFZOVFhwMVNXTjZkVTFEVEdsSlVWRlJhRWREUlVsU2FHNUNSVWxDU2xKcFJWbE5aMFpxUlVsU05FcFRTVk5QVXpCcFEwRlNjM1UwZDNGMU5HaHhkVWt4V0hFNWQwTkRUVkpXY0RCQ1lVRjNiVlJaYlZwd1ZqSktRaTl6UVdaSVkyZHhXR05FYTJwaFVtTkdVbFJZVWxSeVowcEVLMFZ1ZW05eWVrbHNjbTgwYjNCTlNtUlFTbFJFUzBoTVF6WnllVlZRZVZkS1JscFNXalp2TTB0eFNXTnNRbGRXVmpWV1ZXcFdWbUpXVmxoT1ZtSkVNVUpUTVZkSE1WVlBPVlZsTldGUlF6RkhSWFIwV2xwVWVUWk5OV0ZHWVhSeVVHRnVNV3hzWW5Bck0xWkJjbEZyTjFweFJETldSVFJhYmxCVlNFc3lUM0JTZDFCUE56WjRWRXhGTkZkVWQzTlFjRmxCZVhsSVRFMWpjM0I1ZUd4TWIwTllSVVZ0WlRWaWNURjBjbGM1ZEdGUE1YRTNWMGgwWWxJemQwMVFXSHByT0M5MlVHNHZNQzlOYTJKWlltTkVjRzhyUjNKUlZGUnpRMjlpT0ZVdk1qVkVhbFJLTkdsMlVtSTNVRkJ5TjJscVQydFVTeko1VTAxdk0wMXJUM2hxTDJWbmVuUmphR3BzVmxCc1ZtTnlNSEZoYUhGbVVGRmFjV3RoY1hGWGNYQXljVVl5Y1RNelN5OTZkV1pRTjFGUE1uUkthMGd3T0hSWWFrMWpXVkJ4YjNwNk56UjNaV1JEYzJzdmMwNTZOamx5VURGT2JqRjJVRWg1VkRjd1J6WllZU3QzTWl0NlVFRm1aM1JtU1ZSU04xbGFhVGgyT0hZeU9YSXZjMlkxY2xSSWJtbEplamQzWmtOdFJISjFNazUyY2pFcksyVXphM0ZVU1hsR2VHdGFZa2N5VUVKc1dUVlllR2hwVkdKbU9FRjBhamwwWml0QmFsWjZTV0ZWTkRCU2VISkRhMmxWV2pOdk5FNVNlbUZuUVRKQ05Ua3pSRTkyTkZkUk5FRmpXa2RaTTFoVGR6WlVRVk16YmpGNEwyODVMMkphSzFNM0syMVlPVmxPVUZGaVVUY3JjMjQ1Vm1rNWJqazFZamMyVlRNeE5YWnhWRmczYjNoblprOUJXbnBLZVROM2RFTnZhbkZ2Y1hSd01VWmxUVVpzVFM4ck1EQlhWWG9yVHpVMGNVWlpjbXhaUkZscE1TdEZla3RGY2tWVU15OUdhRU0zUm1aUFFXdFlORmxWWmxOT2JFUmxTV3RVU1haRWFtWkRhaXRGSzBkSU4zcEhVR0pJTkRob1NTOTNRV0puWTNwdFdVaGliVUZ1WTIxRmRIUnRTVlE1YzBGT1RISnBTbXBWYWtOTGRYaEJWSFZVUVVaMWVrTmxjSHBJUmxkVVJGaHlaMnBMTjBsblR6VjZaMmxTUVVWM1kzWnpNRlJoVFZKb2FrZEpRbWxvYVZCeU5FNW5kVTFTWVhvMVVtNTBha2hJU21wUGVFeE5PVE52T0RCcFJVUk9iVUZwU20xQlUzQnRRWGx3YlVrdmNHMUZSM0J3ZG5SdGIxQmFXbkp6YXpWdFRXaEdiVUZTYkcxQmVHcDFRVUZzYlVkd1YySkVNSGxKYUdwbFNVdHVaVWxpYm1WSlIxaGxTVmhZWlVsUE0yVkpaak56UWsxclFsTldWRTFVV0ZSTlF6TlVUVlF3ZWsxRFRYcE5WRTk2VFVOMWVrMVVkSHBOUTJSNlRWUm1lazFETDNwTlZEaE1jME5CVEhOVVFWTnhaRWRDTHpaUFJuaFdiVU5LVm0xTGNGWnRSMXBXYlU4MVZtMUNSbHBGUzNGV2JVcHNWbTFHVmxadFRqRldiVVJPVm0xTWRGWnRTR1JXYlZBNVpHdG5jRmxHYzNsdFduTjZhRnB6ZVZaYWMzcFVXbk41TVM4MFN6TTVSRWR4Vkd4dUwzbE1MemRKWkRJM1RVUlBOMGxVVHpkTlRIVTNTV0oxTjAxSVpUZEpXR1UzVFZBck0wMUJVak5KVldwdVRUQjRNMEZ6ZUhsRlZFMXVUVGhJZFVGb2FURkxlRWxTZFhoTUwzUktWaXR0UWxJemFrMTRiWHBEVUM5bk55OHJXUzlKYjJaSlFsSXpXRkF4WW5wSGFUZG9jV3RuYm5OdmFXTk5hMmxIZVVGbldrdGpUbXR2VEhkdmR6SlhkMFJQVlRCSFUxZHFWVFZ5VGxOa1RFaGlVRmxHVkdwaU4yWlNSWEpqVVRkeVpVbzBXR1ZLUjBKRVIwbDNVWGhxUzAxSldYcG5hazlyVERKbVN6QTVTbEJZY0VSdU5WVnRZMnhRTjNsR1NqSTFhQzkwTkdkTE5UQnZkM1l6WTJvclpEWk5XQzkwTVhwUVZWaE1kbE5SUkVabU9WaG1NazVaY1ZSd05YUTRLemx1TjJ4ekszSlhNMGQwYlRKUVltUjFNbXBrYUU4M2NWTnhlaTl1VFhKa1RqSTVXVkpNYUVWU1MyeEZVa3h4VFZKSmNrMVNTblpEVWtsdGNWSkxiMmxTU25OeFVrbHpTVk0wVjBKbWFrcGljblJ6ZEZsc1QybzVXRXNyZG10T2RDOW5OSFpRTlVKMmRVY3JTV0kzVW5aYWRFUTFORWhFYzA5bGRFa3JhekF2V1dRelFtSXJWRVJYUTJGbVozWktiVU4yYTNaV01HNHZTRWhtYUhwQldtaDNNRzVVYUd0RWRVdDNSMWxqYWxwcGRVOXRjakEwV201aWFIVkViVU5GZVZsSlptbFpRUzl4V1V4QlYxbHVRV3N3YW1kemQyMUNTbk5FUTBSR2FrVlhja2RKVFhwelVXSm5OV2hCYVhwSVdrVnRSekZIYlVaa1JtMUdSMHhOVldOVFlWbE5VMXByV1djelNUVkNaMUpwVUZJclEwaEthRU5NV2taRFRFWTFRMUJXYUVORlRqWm1aM3BOYzNjcldrcHhMMGx6YzFWSk9YWTRSRlJ0YlVGTWJXMURTRzF0U0ZCcmIxSkJiVXRxUVM5R05YVTRiMDFXVlc5U1VtdHhWVWMzUTFWWFNDdG5WVzk2U0d4V2JWQTJjRTVNVjNGek1XRm5laTh3VXpsSFdWRkhUWGRUVGxwblpXRjZUQzlTWWxBMlJrWjJUV1owU25JdmIyTXpPRVlyTTIwdksyZDNlRGxHY0RWeFNFeE1SVU16YlZrNFpUbEhTV2hVY0c5c1QwZFZWelI2VkU5WlEyNVBSMjlrZWxwcWJrOXROVmMwV1VaaVoyOXNiVVpUTWxsT1RIQjJWblZIU1ZOalRsZGpkMFJYZWtSMFprNVhkSHBCVkdGNlNFeFVUVmwwT0RGUk0wUkhPRXc0VmtSbU16Tk5UV2REVURaMk1sUjROVkpZVW5ndlNFVTFhVWRLTDBWVlduVktjSFpKY1RWbFFUSjJOak00Y2poblltVjRVazQwUkNzdmNsb3dPQ3QzU1M5NFRtNDJRMjR6VERoQlVHOTZMMEozWmpSRmRqaERXaTluZWk5blRHWnZiUzgwYlRreU0wNHJWbXd3ZWk5bldDOXFjaTluVUM5emRuaDNLMm92ZWtRcmVGSnlhMmQxYkRVMVoxUlJaa0ptY2paVFUwZExPRUZOVlc5M1UzWnZlRkpzSzBKaVdHeFJkV3RPTlZGTWIxUmtlRk14T1haMVdUQTNaVXBQVURGVFVXdzNPVkJLVTNRMmFsVXZRV1ExYnk5dlRUQndiVEJGSzFaRE5sWkNjR281UTNwQlFrVnRha2RKVFhWUFVXOWllRFp0Y1cwNFJIQnhkRFZHS3pCUmNtdE5WMjlWWVM5V2VqVmhjRmhZVkhWMVZURXdSSEpzWkdSSGJUZ3daM1JLWjFKaFJGWTRSSHB6ZUN0bVExcFJhbW93VVhsclIyMUhTVTFPU0d0WldraEplSGhLVW1keFEyNUJUVVpQUlUxVmNtMHdPV3hMTlhSRk5XMUpkSGxRUjAxeFJXRm1hek42VTNCcUt6WjZOeTg0Wm1sNmFpc3hMMUU0VEdwRUwydG1WVFZHZFU0d1RqQjNaSElyVVM5a1MwcDVSVmhSVTBwMWN5dHRSSEJHWlZSdU1FOHdjaXRUTnl0TU55dHJkVzFtY0RrMVpWaFRjV055WWxOTFkzQk1OSFJQVmprME1rOXNkRFZKWmxKU05XVllVbmd2UjBWMmNpdHVVRzltYms5VU5rNTJjV3BqVm5aeGVXTjFTREJVWlZkc01FNHZha1F4ZHpKckx6UmFMekpZVDNCMk9WUnpiMFFyU0RaMVdua3JhR0UzUjFKMWNGRmxWV2syVVVoc1UzbHJhRFZXVEhBd1pWVnBOa3hJYkUxMWFIZzFXRXh3YVdWVlV6WldLM2wxZFdKdk5WaHlZVFI0ZVdGVVVtVlBXalptWVdZeVZreExTbXBzVTNsdFJUVlJjMjlrVDFaME5YWlBWbkpMVlZCeGVHdEhXREJtU0hwQmRuQTFMMnBTT0hkeU5sWnZiQzl1VTJScmFVNHdkbHBLYW1SSlQxTkZNMUZxVG1wRlNEQnpNVXRCZFdkWFNsVm1jRlpwV0VnMlZGbHNablpUYjJOMGRHOUxTMGswVUc5NFIwdDNiV3hOVlhJMlYyOU9OalZzYW1GdlExTk9UbWx3U25CVk1XOWFWVFpyWWxkb2JqVnVaa3hrUVRrNFRDOXNORGM0TjNkTFVtUkJVbmxyV0ZJMlkzRkdNSFZ1UzFKa1JGcDVkVmhSYURsUlRIQnVSMHNyWkZCaWVXcElLekp4VjJndk9IaFVObElyZVhVeWJVbGpjblJ2VWtoTE4yRlZlSGxvTW1kalkzSjBiekJ1U3pkaFpIQjVhREpyUjJOeWRHOXFia3RUTmxNMWVXMHlibVZWY2xjd2EweHNORzFyVm5Gd2JETXdRVGRzTWtzeWVsZ3hWSFZGU0RGV2RXTlFNR1JsVjA4d1NqaHZaRFZVSzFoTWJHbzVRM1E0ZWxoNVl5OXNTelZTVUc5eU5WaHFPRm92YzNKV09IUnhWREZYZVdwdVlXcG9MMnN5TjFGWEwwMVllRU42SzBGek9ESkNObFIyYlVjd2QzWkxUalZLVmt3dlJHUXJOREJ2UmpRM1pEUjNibnA0Vkd3NWJVNU5PWFZVVkhWSWNqZDJOMmRLYUdsQlJETmxRVWROZFhkV1FWY3hibGRQU0RkUFptVXZiRXBUVWtFdlFrWnBlRUZPUWtWclMwVlpSVWRMU2t4VGJGRnNjelpSSzIwd2NGWlJjRXhrTUhseWNETmFPR1J0ZURsbUt6WmhNbVJrVDNGMVpuSk5lVE0zY2preEt5OTRZakV2YTJFdmRtWmxiRFpSY0Rkak5qTlJRa3A1TXpWV2VucHFNek1yUVZWRFdtZEJlVk5ETlVOQk4ybG9VRGs0Y2tsa1JXZDVaMUZZVVZKVFJtVlRNRXRSY1dGdlVURnRSMlZSUkVsM2JsSnFTVEJEYW5VNVNHeGlTRmt3UzFSWk5uSk9OV3REZEdad2JFSnFXVGRVWVhKU2FFMUpiVUZMY0hCRGJIQlVjV1JVVUdWR2QwbEhRa3d5ZFdkTWFubzRLMnR1TDJrM1RIUjVkVkYyUmpKWVFqUlhMeTh3ZDNjNFVHczBjMGhZZWs4dk5UZFdURWRHYmtkNVMxVlFZa1J2ZUUxSWFIazVUVkJNU0hkWlozTkliams1T0ZKS1ptdHBhR0Z2V0U0cldVcHBkSGR3U1Vkb2RuRkVVMHRuUkd0VlVVTnFXV3RyZDBGblUybEJkVUZUU2xwQlJVdEhhV3BLUzJ0eVEyZHZXRVJ1YUZkdFVFSTRSRlEyYjJ0SEwxaFJaV3cyYTNCeVMxZEJNbk5RYUZaRk9EWnVaWGhYZDNWSFNVaE5iVVZKZVcwM2EyeEdhMFJ1SzBGbmVETjNZVEo0VjJVdlN6TjRMM0I1YUM5TmFtSllURTB6VkM5Wk1GcHNZekpPU1RjeVJHMHlObVI2Y0hoTmFIZE5ha1U0UjJwbU1FaDRPRnBRYWtoWlNHazBOa0oyY3paNldHZEpVUzh6T1Roa05sQnlaRGN5Y1hWWWVHNTFla1ZsUkZreFJHZHFkRUZMVTJRd2NtZGxNblpQZEdSVWNYUk1RVzlGZEZGb1dVRkpRazFyVVVjdlZEQkNRM050VVdGblVHRnhkRGxzUlc1VU1sZFVUVzF3YWtOc2NIazVhR3R0T0NzeVRXcGhNbVIyTHpsMVQydHVVRmhqYm1ObEx6WXdiREZNV0hwblJFTkdjMEZEUTBabVFYaE9NRFZ0VFcxWk1rMUVibFkyYWtKWlNFOU1VV3BwVUVsb2FXSTFSV2RCVFRSRVdXaGhibFJVWVZSNVUycHdTRXhHVVRCMVdreHhWWE5GU1dvMFZGaFJVbEJRYkRBMkswaFRlSFZLV2tNM0wxUXdOSFZNYVRBM2JWWllhRkZZVXpjdlMyNWpja0lyYW5GTk1Hb3dTa05wT0VSUWVrUkRRemhNTTNsQ1JtYzNWWFp5ZGpoa1REVlFkVEF2VVdoMkx6QnhOVkJSV2tGQ2IxSllNR1paZEhaUU1qZGFTbTB6TlRsWlNGTlRablpVTnpoRVoyUmpNa0YySzJzeVNrMVBWR2xqTjJSUFZHSkJUMjV0TUhaVk1VdEJSVkpLVEV0dlZXdHpVWE56U2pCUk1FOUVkbU5GVjAxdlZqaFNjR3RwV1RCdVlXdDBNV3d2Y2sxR1oyNVJVRTlsWkU1eU9URXhNREJ5YVRaT1lUY3hha05hVTIxaWRuVTBPV04yVDFBeU5qbEpTRGgzT0RsUWVHaHllbGc0VGtOUGVGcFVOVVZ2SzFKM01HZG9UVWM0TXpCRlExUlJjRkpEUkRGcFNVcFJVVU5CZHpKa2FFRmpRVWxKWjFGVlFVZERiVXM1UVVWMVFVZEpaWEEwTVVkdk9WQlpTRUV3UmtwTmNGbHNiM2QwV0ZsSVEwZzNTRXB2VEV0VFlreFFZbXN6ZEZkMU4xbGxkbkZ1TTJOSU5tMWplRmRrZHpoT09XdDVSbFJPYTJkbGVpOTRXRGgwUlRka2REWmpWRE13YVdwU01EZE9heTkwVTI0MVNHTldUV0ZOVVc5VWJpOUNTemhOVGxkQlNsRndWRlptWjBVMlFqbENka2hEU25rMGExazFlVTg0ZDBGRlQxSXhVRkJoTDFObVdXNVNSMk5MTUdaYVVqaEhjbEpuWjBaaFdXVXdXbnBoUTNrdmVHUkdSWFJDYjNOQlRrbGxRMGwwUVZGQ1EwcFJTVGsxU0ZWeGVVdERNa05FUW5KTFQydDFaekZsYlRCek5rUldOblZhUW5BNVZuUXhkV3hoYnpWSGR6SXliVE0yWjNjMlp6bHNhMDVvYmpGc1QweFFZVWRCVFVFMmJuVmtRMXB3UTNObmNHNTNNMU0yVVhjM1VGQlVjM2xLUmpCb1VrRjVMMkZQVFdoMGNIVnlNRGczZFdVcmJuaEdNRFpIYXpSSGJTc3dRbWt3WlhwMllqWlplbTgyTjI4ek5tNVdNM0I2Tm1aa2EyUnpjSE5MZGpNMk5Xd3lOMU51T0dWaGFrVmhSM1Z2VlcwNVZWVTJaWEZMVG5adGRFUllWMjExYVVWUmNqaENUbWRYV1RSM1lrYzNkMWxHWVRKWloyRk1ZbXRIWjI5WlMyZDBielpsWWxwQ1ZEZFJOakZPVW5CT1lsSkNjbkIxZG5oNmNUVmliazVVVlRNeU9WUjBabFV6VGxKamNqbFJja1pJUzB3eVpGUlpWVVZYTkRoV2IwbERObXhCUzNCUWF6UnBNbE5yYlhOM2RsQlVUU3N5WmxRMlpETmlZWFpFTldaTWNqbFFZUzlNY0Zaa2JWcDBhU3RtV1hSamFEUmxSalI1YW1waGQwUm5TRmhTV0VGVEt6aG5LelZ4Um1JdlVEQmpPREpUUlVWWFNIVk1ORE5oYmxsRFVrWmhSVWxzUVVOSFFVYzJNMU5rY1VzeVZFTnVVMFZSUlZKb1ExZG5ja1ZHZDBOaFJVSktRVGxKVTJGQ2NGSXhiVzVyVW1SRVZrZFlVM3B3Ym5CVGNEQmxkRzlWTlV4SE0xTkhaVk5PVXpORVlXNHdOMFpaU2tGTFVYcHhZWHB6VmxGek1WcFFjMVJ6VXpkUGRHOXFZbHBITWpGcGFVVkpVbEZOSzJkSmFHTjRiRGxEUldONWJFcGxOekpUTkVoVmRYbFVPRE5rTVhRNGMybFdUSEZoVDBkVVUwOURkRGRpUjFwaWJEZFFTbGxxU1RGMFJGSjFUVmN6Y1ZOUFdHUmtibVJ2V1hGcU1IRTRkRVYzTjJVemFHTjRiV2szYmtKdFZFMVpPVWt4ZFZjd2RYZDNNaTh4ZVc1TFRFbDRkeTlqZVZWd1FWSkVaVkZZWW1kek9FbGFRMFJRZEdSVFYxWm9UVXBzY1dwQldrbG9NV3RKYmtWQ1VrUkZhVlJCVGxVd1drOHhhblJxWm1sa2NpOW5VV3BhT0ZGTVFVRjZLM28zZVV4WU5EQmxSbFphVkhoMFVVUjNWRzVZZGpNNGJqSnVjMFI2TmpFMVkwWnVjRUpCUW01UFJrTTRNSHBQZWtwT2QwOUphVUZUVVRoeVRXZHJSbTFuUTAwMVRFdENRbWh6TjA0MGQxVndOekpIY0RaeFRTdEZabTFJWVN0VlNXbzFLMko1V214SGEzb3lWbEl4YTJkblowZEVVelpIZDNocGVXeHdSWFZxY2l0a1dGWldWbnBIVERWYVUydzFOV2czTlhwUGF6TkRZM1JLUWxJd1NWQnRMMVJLYVZCSldsVmtWVmw1VkVoRmNVMXhXbVZ6Wms1V2NqbDZNa04yTms5dGJHWjBaazFWY2xveE4zaDVhREoyWmsxVk1reDBaQzkwZGpRM2RrcG1lWFJCVVcxVFQySnFTV2hMYlNzd1VrVTFSbHBHWWpWSVFuUnBRM0JQYkhWcVFXUkRXVTVGV2tSSVpUQjJiVkpzWjBsVFIxWjBRV3RoY0hKaVZqTlJhV2Q0V0VoWFRXUmlXalptWmtnMEx6VlFXU3RVU0ZCNU5UazVNSFJrVUd3NFdHVXZSVEZJT0VoWU5IWTRha1o2YTNSc1luaFdORWx6VWtKTmFGRklWV2hXYjB0b2NtOXNjRVJEVEVSWVNYY3ZZVGszTXpkSlpuTXJZM0pJTUUwelUxaG1jMkpIWVN0cVlrRlVjbVZEVmpZMGRWaHBhR2xXU1RZeWNVRnFZVXRuYW05RlpXZFRhMnRWVFRoV1IweFhSbXRzVTFaTE5HeDZVbGRGTHpBcmNYbGxSV292VFZkMGFFUkdUV3BvY1RSYVZrODROMnhRVVVKbGFqbDBSbXdyUlVkR1drMDRjSFZ4VUhwb01VeGFaMGxhT1ZwWFZTdFZjMDg0Um1OblJUVkJkRGxOUldVeE0weHFjM1l4UlRRd2JraFpZMlowZW10WVNHTnpUWEExVjFScVUyUmthREY0TW5VeVFqTXlNbm81T0RaTFZVZ3pNRm92UkhJM01EQkpZeTh2UjBZd2RtaFJRVmxrVURaSE1HaEJUVVZOU0hCUVRHUnBjRlZSWkVSaFRHZG5aMnRDYTFGQloxbHNVVUZ6YVZWcFUwUkJZbkZCWmpnd1JHSk9OM05xTjJwRGFtMTRTeXRtUm5KRGExVTFRemw1VmtSa09HaDFWaXRTZHpKWVdsTlFTVk5rUjJ4Mlp6QjFhVU12WVZOME1FcHViMGhTZG5SdU9HNXpURXA2VGxSU2RWQXhNbVZxY2xveVJGRTBUVGNyZHpsMVVGTnpXalV3WVdrNFZuZ3pXakJsY1ZkbGJsbE9ha0k0YjBnMWJWY3pNSGhHVjNsS2FHNTZRbTFPUzFVeVJIVXlOREJST1VFd1VVTlFZbFpDTldscmRrTlhRVU5PTjFKQ1IzQTBjbGhuYWxNelZXNXhWV0Z3UkZGVFRVcFdVRnBTU21GaVVrMXhkVkU0Y0ZsdlkzUk5kMVUyZUVodVZUZGxZakJDV25wb1dsWlpOVmxsYjFaWk5uUkJjMGxwUWtsU2JEWTJaV2R2Tm1oQk1FRnVTREZGYmxVMFpsSkZVMFJFSzJJNU0wZEZOMVJGZUdWTmVGUjNaVTE2TVROeldGRnpiR1ZxZVhSSWJHRlJkMGQ2TWl0NGNYTnZjMjB3VW1jeVIxSjFiMFJoUlVWTlFXMU5NR0YxVjFKTE1VSmhjVFUxWTNOWFJITXZkbmhDTDNSTVRVODNUMHA1V1c0elVHeDFiamt2ZGxsNkx5OVFaVFpvVEdWUFluQnNjamd2YUdKWFlVTkVaa3RNTVRObWFrRXdSVm80WmtOck1UQmlWWEZGYjJ3eVNtTkxVM0owU0RFclMwUm9Ta2QzWTFkNGFFOW9VMEprTjJOV2RFTlRLMnc1UVRaWE0wTTJTMUZuU21WeVRYTm1hWFJsYTBWSmMySmhia2hhUzBGRlUxRm9TVXg2Y1d4aFFuUnpObkJCTkVsbmFYUjRiVWRwY0hsUk1HOXFSVWxCT0U0NVdYSlllR2hhWmxaa01FVXJZVnBIV2poME9YZE1aVnA1TlhaaVZ6QkdZVVV5TUhoelRrSkRjRk55Y1dNelVHcEljR1pvVG5CamFrUnhXamhIVlhoSlUzUlZWMlJPTTNORGRGWlpjR3Q2UlZFd2JrZFVOMWgwWlhaVmRtcE9Za3AzU3l0bk9GaHBMMjU2ZG1acFRscEpaREF6YkZKWlpETnJRVFEzU0VsR1JHNWlaakZWU0ZwamJVUnhLMFo0YUhaeE1qZEZTbTVoYzFkbGVXSXdabTgxY3paUFp6TjBabEZhVkU5V2FWaFNNR2hKVDNWRmN6azRZbVExYzNGSE1rcERSRGhwYzNGa2JUZHFZM05sVTA1M1ExZGpTMjVQVFZKSFptNUZkV1JZUkRaeFUwSnlhR012WldvMk4yWm9URk4wSzBjeWRqWlZXWGhSWWpaNU9YbHNTa2xPYUVJeWNFRk1iMUJ1V21jMVNHUjVWbEI2VG5kbGRVUk1SSHA2Tkc4M1IxZFhlVFJqWlU5b1lpOVpRbmRPTlROdWRtUmxXWGd5Tlc0NE9XazFUWGhhU2pKcWJGcEJiRGc0Ym1RNFZsQkVNWG8wZEVSdE1ESlFabVZQYW1kbE1pOHhhbll6YjNkUlpTdDJRV3RSYVc1RFMyVk5aMUYxVEd4elRVZHpSa1ZTUVV4NGMxbzJabG95UldzMk5XMUNORzkzZDJKWlkyTktXbmR2VTI5blNVZDNNblZWZUZkS2FIVnZWSE5xU1ZaSlRYRkZZVzlqYkVGNFZrUjZTekZCZDBsU1VscEZha1ZtYmpkMU5HUTJlRzgwWlVobGMxb3liREZ2WVVOcGQySTRaVTlzWWl0a1IzSnBkWHBZYWtNeVNHSmtkMHBGUWl0c1pucG9aRVp3UTJzMFVVeDRhMEpRWms5b1VVTkJaM3BKY0VsT1FrcENXVTAyY1VsRVEwVkNaR2ROVVV4MmIzVm1hR3RxWjBoaFFXbHJTMVJaY1ZwSmNtZzRPWEJzYm5wcU5rUXpkbVV2WmpSWUszRm1WQzk1Wm04MGRtaG5aV2hWV1hjMWRYTmlRbEZKVkVGSVFUSnBiRlIwUzA5cmNuVmxhMjQ1YjJwdllrOXNjME5ZV2s5MFREbERiVmsxY0hkMU5XZGxNMlJZTkZFMFVHZ3JPRE40U1hZM1VWRkNVRE5uYlVGRFRGQkJka00xUjB0eFVsRmpVekJ5TUVacmVqRkVjV0YzYlM4NU5YUlJjSFoyTkhaeFJ6WTRRbmcyYWxGRWRubGtkR0Y1VVVwRE4wWm9lVkoxYVVGaVNYUmFjVkJ1VGtoQ09WWjRibVkzTmtSc09VeGFNbVJNVXpabFMxSTRMelkzVTFSS05WTkxaR2g1T1RadWFrVkJWRTVqYzNKWFFWTmxMME5DWXpaWE1YVTBXRU12TXpaSlVEaHVVVGc1TVU1NGVHMW5RMWxKZDJ0TkswSnhSVlpLUlV0WGJHbHpaRVJtVjNKMU9GZG9WWFZDZVU4cmJtOUJVamxCVWpoTWNuSnRLMjlXYVRSdFR6RlJaREZrU0RRM2FHWlBZV054ZFVkcGIwWXpiak4yVWk5VE9XVTJlbTk2VUhwVmQwOU5iR1Z1YldwVk5ESnNkRGxTYVNzNWRrdHVkaTl0TVd3NEt5ODRaR3BMVXpRMFpHWXJkMng0TURRNEszWTFWMm8zZFRFeFpURndOVlJvZVM4NVFrWnVaMVZrZFZCSlR6VjFaVXROU0cxR1lqSnplVU5xY1d3M1RtMWhOVVpSU1ZRM0szcEdTQzlRZVRkSWVIcEthM29yVURkWGJGY3dRVXRwT0VJNFZrTmpNMUpFVDBKM2VEWlJiRkpRZGtaaWVYRkdObTF4Vkd0VldWVjRaR1J0TTBOc016SmljVzVRYW5NdmJXMWlhbTFTZW5GVk4zVTBZVTU0TlhremVsbDNkSEJxYjB0bk16RlVaV2w1VlZsbkt5dGlZMnBZU0RSMk1XUk1Za2Q0TTJGck5XNU5SRTh2ZFVOM1ZVdzNSMUpYVDFSamVXWndia0pGV1ZOcVpub3lNVmd6T1ZjeVlUaFdiWEJaUVVKVFNGRllTa05yZG5OV01rNVJiMU5oY2poRloxa3pUVGRWT0dseFVISTNZV1pNTVhOMk1tOURNemN2U21NM2VHcGlNMHByYjBjcmIzWjZNMlF3ZWxsYVQyVTBOblpZYm5kb2JsSnVkRWgwZHpSUFV6UlpZemt3S3k4MU1IWkRkRE5QZEVWaE4xTTJNbXB6ZDJ0a2NXTlVWelZ4YzJVdmNFaGlkV2RDVVd4alJrMXJZbXhYZUROVlVYbGlabGt3UTBOQlowbG9RbFp0YVRoRFQwbENRbGxDVFZaT2EyeHJOVmR1VG1KeVFXWlVNU3R1YnpadlRUVkZabE5yZEVwaFkzWTFWWFJvTUhOVFkwRTRjVmwxUmxvMlFuSmxaVzVhY3pjck9FZFlSaTlDTjNCaGJWUk1NR05LVkdGV1ptTlNjRTVWUW5JMU5raHZaVkpwVFhKdmRHcFpTVUZwUVVKRFZWRnRVR1ZFU1VoSllXdFliWFUwZW1aUmVVRk9kWFk0YTFORVJsWndXa3c1VFVkM2RtUlBjbTAyYkRSR2RtNTJVVTRyTUdOVFVUVjBOMnMyVUhocmVUWTRkbVpSTDNoMVZFRndiMDA1U1N0bGJVUlhNMlUyZURKMWVXWTNWV05EY1U5Q01Dc3ZkVzFZWjJGSU5XbGFVa05CVVVNclJuSTBkblZ2VWpNNFZFZE1jV3RVUjFSV2FWazRVa1ZKUlVsRmMxTlFlakpwWlc1dlZVSlZSSGhMZWpZemF6UTJkMlJXUkhKMGFFdFFlWFJuYjA0dlNEbDFkbkk0TDA5S1RXSjFORVExTTJNdk4weEJUbEpaWlZBNWRWaFFWRTlUYlhCdVN6VlJhVVp1UjB3NU5YazRjWHBrZVhaTWNHMU5lbFp4Vm5aTFZEbDVTa3hqZVRKS1VFdEVMMll3VlZCblVYaG5SMGx1T1VwUVJEWkhPRWg0UlVwR2IwTXJWVFp1VG5saldIUkhWbFp0VjI1cVVVTlhNRTVTUVRjd2JVUlBLMFpRUmxBM05DOXBkV1YxV0ZOMU9HbEdlR1F6Wm5WbWNtVTVOa1o2Ym5VMU0wSlJaMWhhV1dKVWIyaEJSWE5pZVhjeFdVNUZVVlZ6ZVVOcFFWTlBWa2hxWm1wUk1IVXliMmx2T1c4eFQxVkRhVU5oYWpOYU0zUnliMmR5TjBjcmFGVjZVek54SzB0cWNYTkRkalJzZEhwRVZGWnhMeThyTXpGaFNGSllSbk0yWXpOb01EZElRVEpGT0hSMFIycHZOMGhoWTNoMVNHZDFSaXNyWW01MU4zSkxlR0kzUkU1dFJIY3ZNMWhPTVcxTWFXUlVUM0p4Tm1SeFZWUlNNSEpUZG1JdmFHZEdjQ3RzV21zME9FaG5hMnhUZFRoYU4zVnJaVWRsYm5WSFYxbzNUMnRDZUdFMlR6UXlZMFJJTkd4QlEwRnJXRTFDWjFGdFVrSlJXVGhuWlVKRlJsWmhSVXR3WnpkVU5UZFRlWGRqV1dsSFowUk9NVWhFWWs1RllXc3dOSFZTWW1jNU9EZGtjVGxvUnpJd1lVODVUMVpRVkRsNE9IazJOVE16VUV4S09GbHVaWFoyUms1bVVXWnhhblY1TTA5VVMwaFNNR0ZZWlhBckt5dGpOUzlZVGxCb2JsbFFjRGQyZUZGTmFqSnZlSE5sTkhKelFtWm5RalJWWVUxMFNFdG5OMlZWY1RNM1drUkJRVWRDVTBRelYzcHJObTlOZUVkT1VrbFlOMHBTYkdacGNFVXJWWEp4ZUZGelpFeFVORTl4YUU4MlUyazVMMkpLTWtsaGNVODFUM00yTW1KeVQxSnJTVzFuUTBFMWVpOVlZMkpwTkRaQ1ZWUkJjbEZDTWtzeE9WZ3pURU4xYzBWSFdHOXlWemc1Y3pSaGNGWnhlbloyZEhFdldIRlZaVTFyYTJGTGFpOUxVVVF4VURCUGFGWk5aMjFUWTFKaVlYTk9kbXhpTmsxcFlVOW1Nbll2U25SU2RIWkJhMHczZG05WU1qRllUR1p5ZWxWbVFuTk1aRE5vZFhGRWJXTlBjRFl2YkM5c1RFWk1TMjVMYlZVeVNsUTJLM1V2ZFhKTlIyVkNjbTQyVkhwVVprOHhTbVUzTjFOcGJUWjJUSEF5WjNFM09VeFhlaTgxVG5CT1RqVXpOMnhNY0ZCekszVXZTWGhpUzFBeE5rbFJWSEpRY2tWSlFsVk1aMlJDU2tnck0xRnZRVFZXWnpGcFIwcFdWMHhYTUhSTlVtRXlhMHhQWjB4dFZrTmhkRTFVTkROUGMxRldObkpzUVRaT2JIWkJXR3RRWWxBM2RXa3piMEYyTVZwWWRGQTFUVGROYWxveWIwNXpVbVJGWTJseE5EZFBWSEFyZG5NNFVDOHpZMU50WkhGbGJuZDRaRXBFVUdSUFNFMHpNamROTWpJNWEyTmtkbTE1Y3pWU0wxcENjazFZUlVoQ1ZHNXBPVkZ0U0hSb1JURkxNM2xGZVU0NVoxbFFObWRSZW05d1VrZEhZVzFDZW5oMlJYbDNNWHBoY21ReU5uUnplV014SzFjNFFXaHZUazlXUkVSNmNXUnpUVUpEY0ZOT1JtdEhXSFJuYURZeE1uSjVWMlZXZDJSa1JYbzRNbTFPUlUxaFkwOW9SM1ZOVXpsQ2VHNVRRMEZVYUVvd1UzazRkM1p1V2xWUVowZHBiMEpPUlRObE1IWlFURUp0ZWtKNk1URlNlVFZJUlVKMVZUSTBjMUF3WjBwclp6SklaM0JaVVRsUmJuRmtZVFpaZGxaWk9EaGhUM1ZsYURWeGJUQktaR1JJY2sxck9USldjbUZPWm0xTk4wcDVRbk5GSzNBeVZGY3JObUl5V0hKcVUwOTBSWFY0VEZkUFRGQmtVVFpIVW5SMVlWRldhbEIxYTNNelYyZFBNMGt6ZFVoR1lrMHZLelJsTkN0aGVYbG9Zakl4VjJaTE1VOTRZa1E1VGxOa1VIWklVQzh4WjJReVZIQTBaRGx5WjBkR2NXRlVLeTkyWkdwMFdsQmFibGRQZEhFelNuY3paSE5sVjJwUWVteDBSMHhFZG5JdmNuY3hSMWt3V0RCeE1FcDZiemhMWm1SMFIyUlpRVTFFV2tSSlpDdHdVa3BHYWxGdlFXaEJXRFJsTlROd1VVVjNhekJ2Y2xKYVFUSTJRblJ2U0RGc1ltdEplakY1YjJjd2VrTktVbGxvVVZaSFZWcDJPWEkxZHpnME4yWTNTSGxwZVRoT01YTnJSMkZtUTFaeWVWRllURFF5YURWcGMzUnVVVTl0Y25kRFFYZFBNakJQUmpKMlJWSlVkMDF3ZEZOU2IyMTJVMFZCVTJsV1UzZ3hhVVpVYkVaRlZVczVZV0p2T0d4ck9VeHBZWFpCTm5ZelYzQlZWRVZ4YzFKamN6bHdkVFZoVUZKRGQzRkRSVFpYSzFaNkszSXZUMGhsZG5ONVVGb3hTSFF6S3k5UVpqZENkemRtSzBoQ2RqUnpWMjU1VFZocVRTOUdjSEV5Vm5aS2FsaG1hRFl2ZG1Gd01UbGtLMnhtVFhCRmFpODRVblJwZEdvMlNEUnBUQzlFVHpSWFl6WnJNbUZIZGtWM2JIbDBWbWh0UW5rMVVGSldWMlZCY2tSVlZWUm5WV3h0Y0ZSU2VYcFRWV0pQT1RaWmVFTlpablo0Y21JeU5USXZXblJZTTFsamIzaGFkbVZ3VUZoUU9UUmtWR3gwVUdWRkwwODJTbVpsZEVjdmRtMDBMM1JJUlhreWRGSldUMFIzZVdSdWRYbExkRkphTTFZelNXVm5PWGxsYzJwR2NqbEVTbkJTUTFOclVXaHhSRE50Y2xjeWQza3lZMGwxYTJ0eFVrTnFWWGd6U21NeGJXMXlOWGRUYXpKNFpsZFNWVlJpUWxaemJYTnlZV3cyZEVaR1VuUTJTMjg1TUVwV2RuSTRZa2xMTXpSeFJqQnVlbFJEVW14d1pXdE9jbXhVVTFKQk1HMUdkRWRzTnpsUU5EWmtTMGgyZGpGMFdFTkJXRlEzTHprNVMyUlBVVE5ZZFVsS01XSndNSEprYWxoT1RIRnJWVWxSUkhadk1rdDNZVmhTVDJac1ppdGhjSFpGTjNCa1kybHNkR0kxYmt0VmRsRXpiWFptY3k5NlRYbzBiVk5tVmpGU1JWTnpRa3d3V0hJNWFYaFhjbEJRUW5rd2JWTjVaMVZ3YlVKbVl6Z3JORVpqYWpoUmF6ZEdiams0TmsxSVZHSnViVEJJWnpCbWRGQmhTRlZ0U0dSTVNXUXhOemdyT0VocWJ6UmhSblFyT0M4M2NUTkljR3RsTjIwdmRFdHdOR1ZYU0hCcFRYUmxOR056VDNWWEwwcFdXRFJVVWsxYVNWQkJiMGx2YjB4b1NXdFBSM0JyVVdvelNIRTJhVzR2YjJKdlRDOVVZWG81WkZjdmMzQnFVVXc0UVhBek1EaERVVmwwWjJsSVFWRnFhR04zWW5sTVUwbERVMUJOWjFOYWJXbG5UWGhwUVRVMFp6Vk9UVnBPWW5KdFIwRmFUWEZ4VFZSVFVHdEpaV1pNU2pCeFJXNXVjMEpZYTNnd2JDczVSMm9yUWpsSVFWZEZOM0JXTUhwdVl5OUpUMGwxTjBaV2FtZDBhbXhZVVdOM1EzcFFUMDF2ZUVWaFRGTkdjUzlPVjFsNVFsSlBVbkJ3Wm01UVZXVjBkbGN5WkN0bVVHSlVjbUZhTldwbFVrb3lReTlHWWpoWVMydzNMMnhVYmpWVU1IWmpjR3B3UjI1VmVWRlNOSFpKVFdsWFJWRldVMWt4SzJGVVVtRkthVkpPUWs1bldHODVTbUZyWWsxR1VHWlllR3RpWlRCeVJETXpLMm8zYVhkMlpsRTNVMjg0TDI4dldYWndXVWg1ZGtKdk5uSjNWR1YyVDNSaFlWWkpTa3BLVDBwQmN6TndVMnBzZVVSVlpYQkpVSEpSYlZweE9YTlZUa3d6YlRCWGRWZ3JTRU5OUVdnMGRVNTBUbkJQWkZvd1IzQllTMUJDYjFsNVJtSlZkRkJTYUZsRFVYTlNkVTEzVjIxNmVUUXlRMGRNT1d0YVRreDRTRXM0TjNKcFJreEdTRmszZFhkNGRGbFVkMVJ5Y0daME4xa3pOVVZ5Ympoa1lXTjVNVTAyV0N0UFltTnNjVGM0T0RCcFdHdzJlVVJNU0dSYVQwMTRXamMxWjJoTVIwSkZSbUZZVDNZd09YTXdlVmRVTDNsUmVHeHdUekJXVm0xMlMxazBXSEZEVEhaTk9YSmhkbE5XZEdkRWFGb3lRbEY2VmtoNU5rVm1Wbk55TjBOMFZFRmhRVlpuTWpCdE5teElVblpEVG1FM1JrNVlNa3MzTmpGc2N6SjBOemsyTnpFNWNUZDBTRm9yWTIxSFFYWjNPRVV6U0dGNksyNVlOV2syWTFGcWFuZzROUzkxWjFaMVZtdEVNa3BuVGxOR1kwZEtRVWwyUlRacFNVUnZOVzVSTnpOV1dFYzVjbk5LYmtOTVVuRmtWV2wxY2xSTGNuTkVhazlvTDJGbWRGSTNjMU40TjJKbGRWaFpjSHBtUzNrMVQweEJaMUo0VG5rMVlpdHBSR1Z5YVZaclFXcDJZM3BJUnpoTVFrcHBkbE5oVUdwbmEwRnJVV3RCWjBKaldtSkZNVlY2YmtOa2JFdDZSa054T1ZWaGMxQnlZbmN4ZUd0bk1GcFhXa3RoYVdFd1oyZ3daRUpWVEZOdVNWbERURkoyVkhOV2FVOHlkREJIVVdSRmJrNTRkVEV5YkVOd1NsaEtXWEUxY2xwbFNqZzFaWEF6UjFSblZVVmhiRlJ3YXpKbldFeGxUM0JoVUVWclVWSkxOemR3U1d0blUwUjVaR3RwWjFRMVlWRm5SMlpEWVZSb1dqVm5RbkJ6YkVsRVFqVjNTbE5qVmxCSVpsTlhRbkV3ZVZCdU56a3JlRGwwZFdKVWNGSmxaREZ6TWtWbEt6bEVaQ3N3Y2twU0syZDFZbE12TlVOTVlTOVBTR1U1ZG1JcmJGTXJSM2t6U0VWT2NWbE1iWFJUUWtOSlEzZGpTbXgzWjBKQmNsTTFjbWM1V2xGbE5HcHljMjh3ZUdaRk5tTnRaMmtyUjNOTVdFSlFOekZtZEdOS1dsWjBXRll5V2paTVRHTXhhM28yVVRNM2VIRlBWemR6UkZWbE5sVXpNekl6ZEc0cmIxZE9SR2huVUdKdk5HMHJaVVZsTkhvNVRXTXpOVXBLTjNWNlpVOVNlakJTWVUxQ1ZEbG9XakUxZVZwNlpWVllSVzlFVVVGVlJEWjFRak5wZVROMWNXZFNkVzAyYVhKNVZYSlZOa2RJYUdOeVRtdERjR281TDJ0VVVUaFNkM0J1ZW14Nk5tdEtjVWhMYzJORVZFcFZOWFZIUTI5U1pFVkZVbXQyUVc5eFRFazFaR2hzWjFKYU5EZDJlVFYzVjNodFlVOHpPRlZqVHpsVUswRjZjR0V6V0VaWmRsaHpZeXRZZGtKcGQyRnBZMXAzU214MmEyMXlUMk5HYmpCT2RraDNSV292UWt4RVlrbG5jbTVMSzFsa1JWVlpUbUU0V2tZM1ptNDJSMjUwTlVGbVdrNU1OMnBFWjBSNUswNXhablJVUkRCRGRXOHpUVEpOVkd4dFVWRkhXV05EVVVGV1lYZFdheXN5ZVV0RmNXdE5NM2cyVUhKbVFUZFRNR2hWU0RnNFNYaFFkSHAyZVhORWRWZzBObE5RTnpWcVVVTnBkVWxsUm10U1pWTk9VMGc0U0Zkc1FTc3hVMGhHT1V4YVkyRTNka1poWkRGV1ltRnZZVFJrVEUxa2NUbEZkMDgyY2xkVGVXaDFjVFUwT0hGTk5YSk9XbWsyVjJaSlJVbE9aa3RGU2tSV1owSlVUREozVURNelVHWkRWbnA2ZUhjd05EQlFaazloZG1ZNFZtcDFTak50TVhrM2QwOWtWMkZFYW5GdWJITnJOVTl4VjBGR1MxQnhVRzFUVW5wemFYQm9SVzFDT0hKWFVYUlBSRWczZG01VGRWTXJaSFkxWkVOMU5uWXdVREpxUjJRMVV5dDVaazlLZDFCa1VuZ3JkMUZTUTBwdlJVbEZWV1ZRUTA1VldWcFBWbmN6YzJ4Vk1FZHRiM0J1ZFRSdk1qbEdSemxvTnpSVk9GcFZLMnBaVDJ4TFFUWlZkbXR6ZFRkcE1ERnVkRFpNZG5relNHUm1LMXA0YzFBdmFWbzBURWRtZURWTWVFTlNaVFJCTVdObVJYSnRSVEpvUTI5U2NEQXpLMGM1V1dObWNISklVbXMxWkdWamFFbFJhRzFvVFdSbVJDOXBTMnhMYlVWVGNVVk9aazgwVVZCc2IwTnlRMUlyYW1GSUsxcHlNSHBuYkVsSGRUWnZVa3BXTjBOWVZqbExUbFZXZERjME5GaFdPRFpEUmxsMkwzTnJWMVJ1U2pRMFN6UnNMMVJUT0ZKeFNUaFBlUzlETVVaV00xbEVNMDFFVlU5YWQwZFpUVEp2ZVUwdk0waERlRTFwTTBWVVNIbzVlSHA2T1hCNk1Yb3JTR1UzTHpOUVZuZDFVRkZGU1RCbVYzUktUQzhyWW1oQlozcFBaRFp2Wkdjd2JqQnhhSGg1TlV0dGNEZGFkRFF2VkdOYWJtczRVMWhyS3pkVFRHdzBLek56YzFvM1EwTkxaVE5VUVZGSk1HdEdWemszTXpGTFRXc3ZLM0JZWXk5ck9WRTRLM0Z1Y2tOdlVWSnFkWHBEZEVkU1RrdEpaMFp4VlhkUFRXMUhjMjVDYTIxWlJrNVZVRlZCWjBOelkwdEdZWGxxVmxNeFMwcEhTWGw2U1c5dGNFNVBabEJDY1RkelFXWmpWRGRwVVhaTmJHTnBURTVGUm10WmQwVnRWamxuVmpodWJGcGhUV3RUUTI5YU1HeE9jakpUZEZoWVJsaEdZMGM1TUVGeGFHTjZjVmx2ZFN0UGFsSXpTSGh4YVdvMWNUSjRSVXRTUlM5dFpIQTVaRk5sSzFwVU0xRlBlRmxrTm5WbmVEZDBiV1Z1VVRBMVVFbDFXakEzUjNZeWVtRjVWVkJvYW5SWFZYbFBTMDFIUVU0MmVuRnlSREJWTlhkcU5VZG9ha0pDWTJaNlZtY3dTekpQZUdkclZFWnRTV2haYTJ0bFEydHBia0ZVYkUxMVNWSnVhVzlHUWxsclVYTnlXbEprWm14U01FTmlLMGhQZVVsSVJqZHFVMHBKVFRoUlFVNU9MMmxXUjNwTlpFRjFXbHBYWVRaU1UyZElXakozWTNGVGRsTm5OMHhPYm5aNFREVXJjWEZpVTI4NFpFTkNlamx1UkhKM1JVSm1kVXM0ZUZaRVVXdEpLMVF2VTNveWRuVkpaSFl5Ym1KdWR6aHpOMmx3ZFRObFlUTm1OMmRoUlc1U1VVaEhPVWRFYm1WclZYRXdWMjUyWTBrdlIzUnViMGc1YmtKR1ozaDNibFpMYkhOV2QyaGFlbVl4YWtGS1puVjZNVE5tVDB0T1dGTmxZa00zTVVSUk5XdGFlRGh1VDNSNGMyVjJWek0zVkdOTlVHaFZXak5VVlROMFRGQndabmh0YXpOVVRtTXhPRlp2TWtRMlQyUkVaMWQzVjFOdWRFZG9RWEEzWVdwNFJIcFhNRFEzUTI5MFJVNUhUM2swYjFaT2NGWjNSVk00Ylc1YWJVMDBSRnBaTTFrM1JrdFpiMkpEUms5MU5uRklkMGx5YUZWMGVGRnZhSGhTV2xsclluTTBka1J5VTFCWE1WWllhbUZIY3pKaFYzQk5kQzlpYkdndmMwNXFPWGw0TDJOYWFIQXZNbnB4VlhWa1JWcDBiakpsU0RScWN6STVabGh3ZVVZNFpXeFRTRVo0WTNoeE5tOVVaV1pzYUVaQ2FYZFNTbEZaVFZOQlNEQjRlVFpyVXpaUFJEaDZRMFpWUmsxWGRIVkZVR2h2U2k4M1JFVklXbG9yWkVWMlJFdHZSMDlIZDNsalVYUnNkRFpyU0RBeVRtUnROM2xZT1RsaVdFODNjbGg1TkdOMVVGY3dUa0pFVEdwUGNpdDFlbXMzTTBRd1ZtRm9kVFZoWkhZeWJTOUxNM0pNYlhsMlpqQndWbFJoZFVGYVFVZExiQ3RoV1ZSbkwzRkxRbGRpY1V4QmExbEpUM1JXY0RWQlYxTmFSMXBhVFZWdGIxRkpUV05qTUZkd1EwSkpRVTlqWjFKTkwwMWtVMUlyVFdodlRFVjRiamRFY1dscFZGWjFTbEpwUTNkbWR5OTJhVGN6YmxZdk5sZFlUSGs0ZEV4ck5VaGxOV3hwWVVoSGFESjRRbVJNV0RGNFkzaE9WR2tyUjFObWIxZzNRbnBQU2pFMmVXdHBSWG96VUZGT01tdzNia05xUTFWV01FNW9Ua3BzVGxSelRXMDRhREZhV25GYWRHNUdWVGhaUlN0VWJYRktiM0ZNVlVzMlEyRlJSa05qYTFobFFqWTNXbHBUTjJZMFNFTjNZa1ppU1dGbk5YcG9NVVZhU2t0c1ZVUmlhMVpwYUdWUU5IUmhkM2hJWlcxMGRteGlkSGQ2YzNvMlVuWkhTbkJ4V0Nzd05rOXVaVGt6T1dwME5pc3dabmxLTjFWUFJISkRibkUyUW0weldsSTNiV2gyUzFkWU1tNU5hRzl6UzFCdWJUTmlNM1J6TVZSek9FUlBSbmREZUZWVU5ETk5OU3RLU1VGR1ZVTjNNSFl4ZUdkTGVVNXRXakpxUlVJM2FsSnJWRWRXYUZwV1MwNVdiRTVuTlRKeU0zZHpObXB4TXpGa00xVlBjamxDYVZodWFEbGpXRU0xT1VSc2RFY3JiazFxY0ZJcmNYTnZaMFpNT1daS2JEQkZVRTV6YW0xVmVreDVSVGgzVEdKcFVrcE5kemhoZW1OaVpEVlpWblpTYkZwdGVUWlBOREpuTVZKWVJYWldORlZSV0VSbFV6ZHZNVVl6TjNCSVV6WnBUMUJKU2tSNGNVcDBSMGhrTTNWaFRXNU1kSGhqU1ZCTVdHVm9hQzluTm5wMVdUTXlTWGxGYWtsb01XZENVbGhxYmtndlJHeFhMMDFNV0d4RVlYVjVWMmRtYjFoMlEydzVNVkpYWWxweU16VmlZekJEWWxCR1UzUm1LM1ZsY0RZM2NuSnlPV1UzTkhoR09HVnNTR3c1VkRCQldFSTNjbGRWZVdrMmNDdDVkbEJGYTBsUFlVdEJjVzR4VldFd1YzRnNSMXBwT0hGRmNWTnVSRmhPVXpOUWVrYzVkWFp4SzBJeE56VmpWM2xsSzJsd05XUmljREFyTTNWbVMyb3dUbFZHVGpkeE1rOHlOazQ0YjNSNlZtUlZWemRNVTIwelZrMXNkRmRhUlhSTVlrbHRWM2MyYmxkRFVHTlVZWEZ1UW5Kbk9UVnRaMmhMVjBaaFRXUnpXVXd3WjB4T1pHZHhVMUpRWlhKeGFWZGhaMWd4YmxSNldEQkxaRVp2VW5GdlVEVXZTa2RCUkhGV1RqSkRlU3REYTFRMldGUlBSMDVUZVVRdk1tNHZTbTB3Y1ZwSmRtNWpWREZuWVU1WFdqZFFNMkZPZW14UE0zRm5TVkpzYzFOa1VqRnFhRXc1TTA1SVUyaDZSMkkzYTNKSVV6VXZTSFpuVURoWk16QnpNSFJ5ZFV0V1VqVlhVVGhYYlZBMlowVldSMjluUnpOb1ZuSnJhemh6U1c5bmJWZFpSbGRDWmtGV1JtTlpUa2RuUldZMlJVRXhkMUJSVDJOM2JYbHBNRTVEZVRCRlZtOVBTbUkzY2paSGIzVnVhSGhqVUdSaE5IVTBabTloTDJ0a01UUmpPRWhhZW01b05tcGpZbUZZZHpGTGN6aFdlakZUVmk5eVMwUlJNRUZFV1RaSFNuRjFXbVJxVTBWMVN6bGpOSGx3WmpaVGJDODVibm92WTNKR05IRjFLMlZOTkU5cWJ6Uk5SRmt5VFVSb2MyUjFNMWhpVkhsUVFrNHlNamsxZVdaTVQzRmhiR1IxTmxsdFdqZHVkWG8xUVc4d1dFMHZMMWRFWlZOc1FtZDBZMU5wVlVrdk1ISmtSRmxSVG14bVNsazNRMnhTVW5rNFkzSnZWVXBJSzNweWQxUlhSblJXTHpsaksxcFZVM0V4UW5ZM2FsSnZaVk16YWtKbmRVMTBVM3BWUm5ndk1sUlJWMDB5YUU5MVVqVkxUek5WTXpKUlpXcGhSbk5YTTFSMFRqYzBWek5oTTNGdWRYcDRSVkpvVGpSRlREZHNVMmgwVG1GcVowWlpUR2hTTWpRNFZVeFFUREIzTkdWVVVGb3lSSGd6UjFSR1ZrZHhkV2RzTVRGNWFtaG5hSFJaYWxaUWNWZEpWVlF2UlZwWVlVZE1VMFV2VVhsNFZWWllaVTFPVm10MWJqRjVNakJRUVRGMGRqY3lhMk5ZWlZjME5qQkVWbWhYVmpST1FtWTJSblphUzJrdk1XVklTek0zVkRrNWEyWmtPWE5wYkd0Nk0xbHNkbmhYWTNabWF6bEVXVUZvUTFGQlUxaENaQzlET0daemFVSkNSRmRRVTA5MFdHOVNTVXQzU1d4VlVEQlJZVXBYU3paNE9VdHVPWGxQTUhZeFJFWkRUemhhY1U4NGIweFhjRkpzYUdseWFVNWhVM1JyTTBsdVUwVlRhWFpoU0dFclpIRlRiVk5qYkdwTGNYQjRWRmQyZWpoNVVIUkhTVXh3UW1oV1lrWllkSGs0T1VwTFlteFRkRE5ZV0ZrMlZXNVVjSG8wZEcweEwycDFhV1I2TlRSelJrNDNTM2htVERJNWJUUkJkMGhNVG5ab05ta3dTazVRUzBWcGQxTlRRa0ZIVFhOTE1XVnFRbmxOWW05UlVsRnBNVFJ2WlhGUFIwUmFVR1JXT1ZnclFsQjVOemRwY3pOcWMxWkRPSEU1WXpaclNTdDFla0UzZFRreU1USndRMDlTY210NGRXRkVhQ3N2UkhCRWIyMHpUVVZYZUhWMGJuTlZZbGhQZDA1NldtTmlRVGhPTWxKNVMzcGxTbFpJVURkQ0swMVJUVWxDZVdkelVEUlFiR0pOTWtKeGMxcFNWRmhFYW5CTlEyeHlNRmsxUTNFclRtZEtjMEY1ZFZabVUxbE1WU3RvYVU5TlZVNXJkM2N6Vmt0NmJHUkJlbUZLYnpobVdETXpVR1V2ZW1oMGN6WkhPV3hJUkU5Tk1UZE1ZalEyT0M5WVJqQjJUblZVT1U5VFZYSmhSSEppYUdWc2JUQkRWbTFWWWxGUlFYVjRiMVE1VlhSVk9WVmpjWFE1UTNWWVkxQnpiREZUVUZwTFRuTXlhR2xYTkhkbWJuTXdaRmhsVDBaWWJIRXZZbkJFYzFCcFMyTjVWV1pxY21GdWVIWkdiR2hKYlc1SU5VRlRRVVZSUzNGTGFHcHpWVzFNYzJOWVl6VllXV2hRTVhsaVJVdE9WRXRTZFU5aFkxaHdZbTlZTTJaNlVFczNhR1YxZFdrelQxWXdORloxVEU5aFEwMUJiV0ZPZWs1VVJ6bGFaRmRNVVdwVmNXdGhkRVZLWlhkdEt6UlpRWEZtY1dob2FWWlpWa3RNZUhsTVFYTmhTVk5DVUZGUFUwcE5hRVJTT0M5Mk5tUk9iemxXU2pKTU1UTjBUSGcxY25OQ1JURndZamhaUVhwWlVIbHBWa1ZoVDNGTk1qbGtRakZZVlZwc2FDdHBOamwwV1ZSTlUyOHhkMmhXWWtOeVVsVnpWM050VEdwb1VUTXhTMDh4ZFZseFpVbEJVekJDY0ZwRWJuY3lMMlZqYm5oSGMyOXJNbVZQWmk5MWFqVXlabXd5TW1sV1ltb3JXSFJVT1RoaVZHdHlaM1p2VkhZcmVEbExaRGRrU1VVMmRETlRVSFZvTmk5aU1VdG9ibGhSYkRkbWIwcDFlRXhFWVVwalVubHdSVmhFVUhwc2EzazVObXRXV1RKMmRXaGpObVprY2s5MmVHbzJXRTVYVm5oNWVtdzBXVmxNZDBsUlJHRTJjbU5SYzA1QmFVbExhRUpSY1hkWmNXTmhkRmR2Vmt4M2VXSndSazFKVVhSd2IyTTVNa0ZGTUd4bVRIb3dTM3BVZFhoMVIyd3laRXQ2VTNseFkybzVSelIzV0dWd1dGSTJRemR1ZUZoak9GaHVRbmhHYUVOVlZFc3llVXQyV1VabFZIZ3plbmxGUVZFM1prTkdabkZOZW14c05uUXZaVTVYWjB4aFJGSXlTR2RXVEhSV2NEZEZlbE5HY0hjMU1UWjNNREEzT1hwb2QwOUNibkExYjBwQ1RIUnZWMjB3VHpsa1YyaDJlbEp3WVdndldVZFdUazlGU25sUVYwNUVaek5XYVZoWU5XZE1UbGRJUmtSeFJUVXdkak0wWWtsWlFtZEhWWFo0UlVSelVFUlRPR1JLT1RCMWRpdDFiamhxVUd4UlZHRXhTR3RzTlV0QlNtTkZXbmR4ZDJkMk0zQjJRelprUkVaS1IwOUdhRmxYVmxwS2NFWlpUbFZ0VDAxVmIxUnBjRWREVVhCQ2JqUldjRGhDYWs1bFFYWjJZV2xMYkVKUU4xVnRUVVJsVVhJNE5FNUNXVlEwTkdORll6WmtTSFZEYjBSaE1uTkZVbGQxU0ZOcFVVNXVkMjVPUlVWUWFqSnRNRGgyZWpoaWJtRnhaMHcxV1U5U1NIVmFlV0ZwWjBSTlFYUktkR2x3ZGpWWlZVczFaV2NyUkN0c2VIaFJXbG8yWVVGRmVYbG5iM0UzVFhrelQwWnRUMWgyU0hSek0wNXpaR05RYUU1RWFXWmFVRlJ4VDJkemJHOHdSMk51T1hoMVRrSnZUMjVsVjNCb1psWXlUazVSY1ZCbmFDOVRRVU5xUkRZeVoySjFPVGxFVTFCc0swUjNhbXhRYzJaQlJFSTBTWE5VZVhFemVXZExSMmhhWWtwcVMzbFVUM0ZUUm1wVlFUbElWVmxTUkVaVU9GSnhPRmh2ZGtaSEwwdEhURUkyVEU4eVVWQnROSGMyV200cmVVcEhOWFJDV1Zsc1VVWlJVRzVTYzA1c2JrcDVPVFF3TUhRdmMwNW9OblpSYXpWd2VVOWlOWGcxTkZkdFNtOTJXalJVUW5aeVpWbzJOM3BsYm5aRU1sUnJlak5sYkZCdVUycFpURlJaWWxVMmJXa3lWelZyZGk5WFl6TXZjM0I0WkVFNEszWktiVVYwTXpWNmMwUm5Xa1ZxWkZORmIwWkdVVUZNZFVKRlJVZFFVMHRUZVVSMldVSk5RVWQzUVdodlVXbEZZVGw1VlV4M1JVVnBVMWQyV1cxVlpFaHhXak16YnpnNWRpOWtjV1UxWmtZd05ERkNXVTFDUXpCNU1WbDRRbWx2ZG5GUWRtZHFiVnB4WVhJd2QyNHJWbk5LV0VGSlNFcHdjWGx0WmtnclkxZ3ZTelJNU1RjelVXOVdVWFJzZEhnclRGaDVkV3gxTXpaVlNrcDVTbVJtWWtkSlUySkhXVVpaVGpkckx6YzBTek5rWkd4bFMyeGxPSEo2Y21aM1QxaExOVGhDS3pSSlVVeHVaRXBVZUU4eU1HWTFMMkUyZGpBdllVNDVOM1EwTTI5bWVubEtha3RKZDBNeFVFMU1OemhJWnpRM01WQm5PRE01U0c1YUwwZ3pjWG80WW5CbllXb3phSFJRVmxSaU9WUllkSE12T1RkeVdGcENLMFJKTlZaMFVDdHNWM0l2TVhwWVZUbDJPVFp3VkN0R0x5dFViR1J4UjBSMFdFODRkbXRpVjBsTFJFTklUMEYzWXpjellYZElNa2RrY21sWllqSTJVQ3RXY0VWdFprbEhaMmd4Um5SUGJVcEpUbGxvUlZOeU9EQmhiMjFXTVdadlJ6UnFURWxCUVZKNVEwaFJZVXRSUm5WMmRUaFRRVkZYY1hSWU9FUllVVUYyZW1OSlMwNDNLMlEwZWtsNE5qZHZURTU2TmxGeU1uQkVZVmxRUW14dmNHbzFiVTFYYUhJMlJWQTRSMm8wVjNaR1VWaEVMek40U3pKamFHUnRaWFZYVG1kVVIzTkROVEJDVm5WT01WUTVOSFZxV2s5d2RFdGxlRFZpTkZoMU1WWTVNV0VyWkdwMlpqSTBNM1JtUnl0UU1UZFNMM0JrY2k5a1dVeGhiamhqVG1WUUwzWnhMMUF2VWtjd1pqTmtRU3NyTURJeFpsZEdSQ3QzT1N0VmVuWlFWalp5ZEhJeFVHSldXaXRTT0RnMVFteFlaRlZZYkU0NVRubzNVRWxZV0dSMk9FRXhNakpsYkdFM1VucDJTVGRWZEVncmJESjJPVEZWVG5Zdk5qbFlLemROZUhobFMzQnVOVnBwTmt4elFURXlNbVF2WXpReE1uWjFOVk5VWm5SWVMzWXljRlJETDBoSlRscFlhVnBJYmsxWVptNTZVVEUyVVc5VVIwOXJiRUYzY3pBMFoyWkxOV2szYkU5RmN5OTVhVGhxT1VwQlFURlhPRUkwTVVWaVlrcFBVakUzYWxoMFl6TnRaSGxWU1hSWVJFOTJRbFpEUldkR1EzVjFObVJQUVVNck5YZ3dUakV6YkZOTVltNXNaelJMVkRKTVVIWkJRM3BsVldkMmFqbEhlSEJQUjFGMU16TldXWGR1YlVsM00yOHlabmRzT0V0TVpIaHVlbGhLZERKR1JsUjFTWEJWVEZaWlpGcDNSek5ZYVZCSWVrUllhVU1yVTFwVlpHZFhhakk1VEVwTVdqTmtWekZRWlVOTlVrdzJkak40YXpreE1HRmhXbnB6TmxwU1IwcGlNWGxKVmtGaE1YUXpjRm95VVV4cFpYazFXRkJuVVdSdE9HaGhaR2hwUVRSdFozZzJhMkZEVEVoVmVFZHlSbG9yTm1FemJUZHNhVTVTT0ZkcGFWSnpVMUJZVFdaVmIwcG9hRkp0VkM5SFJIbHRNRzh4YW05d1lYWk5UblpMYXpOUWVtczJabGRuYzNaSGVuRTRjV1kySzNCRUszVlllbHAyTm5vNU1YWm1WeXRKTUhZelZ6VmpUMjFPV2tOdWFVSXhPVE5rUldkMk5taFpkREZDTVZwWlFVbEVSVXRpZVhVM1VGZDRSMmRvV1VWQmFXbEtRWEYxZDNkcGEwSXhVM1p4YVRsWFZVeElabmc1YjBaSGF6bFdUVzAyZVcxd2JFSlpiMU54VEd3ME5tMVhWVEJMYUROTFJFNHlXRzU0Y0hSV05YWlliWFV3VFZKcFpYcDFZbnBTTWtoNU5FMUlkWHAxYVVVMmJXVjZTMGRDYTBWeWRuVktLekZMV25oeGRGSXJNbkpUTVhFd1JTc3djRWxNY0dWa04yYzRSMVJNWVVZd01rSnlNalpwZURGU0szSnNOMVZOT0ZJd1dtZFpaakVyYjNGUGQzZzJSMlkxWkdWa1UweEJMekZsWVhsRFNuRnhTbmRuYVNzMmVYUmtkMWRuTDJKMU9FNUpSRTlSTTFoc2VXNU9iWEJzVjNWbmJGZzRaSEp1VjBaNWVHWnZSRk42YW1oeVpYRjJlRzE0WWpoNlR6Y3dNMDhyVkZGNFNFOVNaMGRrTkZwbVprbG5XbUprU0dac1oySkhVbFI2TTBGek5qTmhaVTl5WnpOdU4yTTNWV2RQSzBjMVVIUnJPV3dyU2pnd2JrTTNXa0Z5YWpKUlRtTlhNMkpPTjJSR1VtNTJZMFJWTlVsek0xZE5URE51UmtoTU1GSTNaR1pxZVdRNU4zSkNaRlpGZVV0V05tNXVaUzlSUjJWQk55OURXRGhPYWxwQmNWaDJRbFE1YWtkUlUyaFJlWGd6U1Vkd2NHODJWbk5NY2xkTGF6RkJZMEphYmtadE1uZFJNM05xWm5GU1UwZFJhMGRvTWt4U1RXRnBlakJXUjI4NVNGSnBVRzlQUVVSNmJteHBWalZqYUVWaFYwNDJNVzlXTkdkSmF6VkJUMWgxYnpGeGJrUmtUV2xwY0d0clJFcDBiV3QxY3pncmF6UjZVSHBoZUhWWWRYaGhWMk5RUlZkaVREVnJjbVZJV0cxRlkxZDFhVnAxTDFkVFNtZFZTWE42VXlzMVQwODFabTV5V0ZaWkswTmhSVTFwVjBwSEswWmtjR0ZEVlRWVlRIZE9UREIxVnpaeFRYQldPV0ZCZGtkSFoxQk5SMFpvZFdKeE9ESnVLM1EyZDAweWEzcDZZbVo1UVROelRrUlVNVlJWTkd4c2JtOUhkMjlzZWxrMWIxaDZOM1pqYTFZM05ISklSSEV2YW5SSVUyVTJUek5rYTJGRlZ6RTFZbkk0SzB0SFZXSldXWHB1VHpKbFQwNVVaRVoxTVNzNFRrcFVSMVZaVUVWWmVqQlVUeTlvT1ZOMFpUWkpRVEJJVDFKNVdtODRaa3BUTW5aUk5WRkZaV3g0ZFhJd1RtdGthVEZhUVdoc01GZHNiVE5DUm5GUlVrc3lNSEZQWkVZeE4zWXhOVkpKVUVGaVoxbFRkbVpGVHpKUWMyRnViMjlIUkVJMmFsbzBiVTg1T0haUk1GVnJWbFJCY2pjMU1scDVZVkZoYXpncmMydGFWa0ZLUjBKVVlYa3ZhME4yU2pRM016SmlUamtyTTJKU2RDODNNWFJKY0M5bU1UazVVRE5vWmpWWWVFbE1hbWd6Y0dJMWJEUjRibllyYmxsYWRtUmFhRGh0YmpGME5Ia3JUR2xYZUdKVk9UQnpNMFlySzJGdFltMDNWVXhvTjFwMVlYVkpkbUp1UjJnckx6VjROamhoVTBsbFl6Vm5ZbTA1VjJFclZtODJXa2RGWm5BNFMwOWtTM0YwYkdSeVNDOUJXVXRGV1VkcFREUkxhMFZrYTA0M2FuRnJTSEpoT0hCR1VHeHpTVGRNV1ZNeVdIZDVNSFJxUVZGME1scGFUVTEwUlZKcE5GSnhRMHRCZGtVeVFtbzNZemhuZFZGTUwxZHBiRlJMZDJ0RVVDOXpZa0pPYVRaSk1WUk5lRVJrV25Sc2EyOTRZMDVDY1RGbFpXbFNOREF4U2twblUza3dSbWxxWm5WVVpDOVJNemt3WlRkd2FuTTJXbXd3UzA4MmFuRnpkMUl3VlRSUE9GSnhVVXAwUWl0VlMyTldaMDFTYWtaeVdGbG5OVmhJYzFSMGFreERXa016Wm5oSmVFaGlPVWhwVXpkVU9IaFBOa2hVYW5ONmMwMVJMM0E0VUdSd2VHSjJVRzB3YkhaNFRGWXZlV1ZNTlZVeWRuWk9kMUIyWlVZdk5FOXhTR1Z3VTBvM1NXWXhaWFV5YTB4cVEySTVORGxMYmpOc1ZsQldVVTlEYkhCSmFHWktNUzlvZEdaWVpHWklVMFZKUW1OTVFrcHNZMnRCVWxKWlNreG9Oblp3TmxCeFJ6VktiVkJTV0daUUwxSllZVlJOUWtveWRqZHlPRk5aY0doME5IWXZXQzlyUlRkd1VubHRhbE5EYkZkWWExUk5hbHBSVVU5NVZtbE5kalpzUVV4Q1RGTkZSbEpNZUVKRlR6Vk5jVXh6TjA1SFNYTk9WbTlPWVdzdlVuQmhValExYTBjMmRUQm9jRk5wVEdWTmEyMVVWVXhIV2prNVlTdHZPRzVDZFRkQlNVMWhaVTlJWW5Oc1J6TTNjVlpQYzJOdVpqVlFVMlppYzFkSWIwc3habU01WWxOQ1J6Qk1jMDV2YzBaU1pFeHBZbFpNTUdSSGEzUjZOM0pTT1dSWVMxRmhOMGN4UW1neVNIRmlSRkZZVUZsSVQwdFhVMFZYWjNsSlJrMTRVVGRQU2tWSGVHTkRORXhTWjFGMVdqQm9aRVI1TURkdGVITk5iazV0Vm5CQ1ZsaGxMMHdyTVdSSmJTOWlaRGw1WmtaS1pFdHRabHBIVEdaUk4xUlhTM0J0T0dFdk5XZ3ZiRzFoVkN0R2R5dFFSV3AyVkRKc1ZEUlhabGRQU2pFdmEwTTRXa1F2YjI5YVNHeDBNRkZyTW5Wd09WRlBXWGgzYVVwUmVsUTJkbGw2WkN0YVpsWnRVa3RQUWtweVpYRmFXbXd4UnpJNFNYQnVlVlpYTkV3NFEzTkVaV3czTTNOR1VEQnlkbGxXWkRGclRuZHNNbk5rTjFONWFtRXdXRkZaVlVkTVNVTk5VM2ROVFdGYWNWUjRhWFJqTmpGUGJtOUtka1pwVmpkMVRrcDBVWEYxTmxCWWRWZFBXVlpJWkVaWVdsYzVZVTVxU210elUySTNNMnB2YjFsa1YwZ3pkbk56WW5VdlpYWTNTa280TDJveGFqTkVZeTlRZW1NNFRqYzRSMVJ3T1RKcVp5OUVNVkE1V1hGbGVIbFFNM0UwUmtsbmQxRkZRMEphYTBSWmRrMDROaXRwSzNKVllXdFVZMHhYU1RWTFFXSllhSGx6UmpSUE1pOXJTVXhKYmpGVWFqaG9NbTAyZVU5eWJqWmhjSGxUYjBWR1MybDBlRk51ZVRWMFV5dFpaR0VyZFRkdk9XNVdNV1pxWW5FdkwySlhibmw2TmxkMlRHbGtOMDFXU0VOamNqTlVLM0lyVkRaNWFVMVVkRU00TXpacVJtVkZlV3QzVm1SaVNsbGxXRFIxWm1OYWFUSklXVVprWlZwQ2RrMHpVa0pLS3k5alV5OHdiekJIUzNSMk4zcFFZMmN3WWpOdlkyVlhWM3BaTXpsU04xcFBXR0pxYWxnNVRuTnRRWE5RTmxBemIyZHNMM2wxT0dOU1dFZFVaV2xrWm5OVFFWSjZTV3BGWjBKS05sQlZVV3BCV1VwSFMycHBkaXRWVTJ0VWVXaGtaRWhTWjBGQlVXZExTa0ZzVVVwQk1FdERNMHB4UVVoUk4wdFpaa2RyTkhCRVYzbHNSSEZYWlhCYWFISjFka0ZJTVZOcVkwNUhSazl3SzBoMmJqZzNNbVF3ZWxnNVVHUlBVbm94WkZWUlRXRkZWell2VW0wcmVESm9kRmsxZW00eWF6STVNRlZqTVU1U1dUaHNSMEY2TlhSWVdEQjBTRWxPVjFaeldXTTNhM1ZLYkhoaVFUUkdNMGMzVUNzdlNUZFBlV1JhTUU1Q2QxbzNXRVkzZEhOWVNISTVPQzh3VG14dllreE5SVTlyU1NzM1JGVndWVFpQWkZFeE5tSktVbkJ6Ym1KRk5XaDJaVlptYkhVd1IxaDFNVTl4Wm1JMFpVZzNaSGhhVGl0RWRubFBVelZxZEhoWmRtVkdiVTlUVlV0Q2RYaGlUVzF4TkZOSlpUazRRVkk1YTB4dEwyVkxTVlJ5WWt4R1lVRldlbkptYm5vdmVVcEZPV1UxWVZjNWJsRnJSV2d6YzJoaFlYcFROR1pRYmxSMU9HUklXaXR3VERrdlpFeFRMMlkwVkhwaVVrMUJiVmRHTVRWd1VuWTNabGh6Wm14SVRreEpjWFF4YVRkdWFHaE9lbk5QV1Vnd05YUnVXbXBoYmtJek9UTlpNbUZuT1RkWlJFNDVlbVZQTldrMU5saGpTRXAxTjJWMUszWlhWeTlpYzNaWGRtbDNUMjVGZHpOMU1sQTNSbll6TlZCaVpHb3JVMDlCTUVOdFMyMU5ibE5XTmpaSlNUQnFUVWhTTDBkR1lra3dTRk5uU1VGNU5uRkRkazU1VWtsWmJuVlpZM0YyUlVSSlNUWkZaWEZYTm5WclJGVmtTMHBwTVhCRlZrdFlkbE5LUnpaclpGTk9WMFJEZDFaR1VtVk5OVE5LZUU5TlFXMWlTRTAyVGtKQlVFSXhVRGt6VkZSR1ZIQkVabXh6ZDBaQmR6STJjSGh4Wlc1T2FqbGFUbE4zVldOUGJFdE9aelp2TUZjcmJ6Vm9NMnN2UkhwUWEzRkdPWGwzWkZjMmIwazVkMU5qWldGaGJsTXhZakowY1hsS2RYUkpURVJaVWpBdmVGSTJRVFJ5UlZWMlEwMVNOWEJITVZkaFF6WXlORVkyVFhSblltbzBaVTUzWjA0MFUzTnVhbUV2YkhoYVVEZGtlblJOUTJSNmJuVmhOVnBzT0d0SVIzaE9UREk0U2l0a1MySllaVGQ0V1V0NWVuUlVNa2N5Wm5wdk9FMW5VRmx4TmtFd2JVSnhZbEV6UlZGTGFtMWpOak5uWjJsRGVtVTJNRzFKYUVzdlZEZEhUR3R4YWxSclEzVlZSWEYyZG5GT1JrdGljbU0zTmtFMlJYRkhiMHR6VG1kME1rdDRXRXRUV2xwV1JFbGpUek5hUkZCcFRHSnJObE5XY0c1dFZHcFZaVFpvTW1wVFpEUkVPVlV2Y1VNMldGZ3lOVzlIZUZRME5tRllkQzlyZDBKMGRuVjFWV3hwYkV0amRVbHNiV2RDVjJ3NFNXWXZiamRUZGtGSEwzSjVVR0ZtUjFSSFJGSlhXa3hXZUZGNmVWaExUVTF6VTA5TFZUUmhOWEZSUW1nclVFZFVXbGxMZVRsVVdFeHVOemN3YWpVcmNqZEVjRkZ3WVRVclMycE5lVEZFT0V4NlRWYzFaamcxVFRGbWFrc3dkREp1VkRVdmJqTlhiSEY2YkhwYU9EWk5lbk4zWXl0S00xazNPSGhpZUhZMWNEQXhhR0kwYm1VMFZVYzRRMGRsTWtRNWRIQkpURlZoYzBWcllqRnNTRWd4UldkWU1XdHdSWFZQUmtod1pFbGFPVU5ITTFGWmVFSk1WVFl4T1ZaVWVXMVJUV1ZMZFd3MGQyWk5PVVIzYTFSVloydHVSMDFpVkhoSk5HMTJjMXBJU0RBNE1XVlZZWEJWU21oT2VrZENUVmRUVkZkME4zSnRlU3NyWjJGUGRIUlpWVGt6V1ZkR00xUXJUbkE1Y0RkamJuVjRTMnhyWXpjMmJXNUVURzF5Y1hsNWIxcEpjMjB5YjJJdmVFVktNVWQ0VjJweWNHVTNSRGxCY1haR04xZEJObWhzWjNSemREQmhiRUp1VW1Kdk9HUnZTa3RMUW1oMmNWVnRRVEk0ZEUxVGQwZHFRbkJ1Vmxaa1JtWlJORGd6YUcxcFdVbFVSM1FyTjJWSGJtRlRURGN2WVdRMVprNHdkSEpLY2l0cFFtaEpUa0pQUjJOVFVWRlhZMmRDUW5SU2FsQkRWbFJYYjJZdlIwbFJVR2g2TXpBd09Xd3ZiM1FyTlRWaU4xUXlablY0ZUU1WWVsQjJiM0k1UjI1RFEwTmxNRlZFYzNCMlNYbFlWVlJKY1dKVFdWUkNiVFIzZUUwMU1HdFZiVkJXZDBaeVNVUmpORUZHWld3MmVFbzJUR3RZVVc5dmNHWnRjVFpsTjBJd1lsYzVVR1V4TVdobWRXVnlUVzFqZGpObU9GUldWa1YyZG0xV2F5OXRRemRrTkRGdVZrNWFVR1JtYlVOdFFsQnVWMmN6YjBGUGJ6aEpTbEpuZW1GcVdIQnhWRGR1UjNSek1XZGlkRWd6U3pSS1pFSjFZakJYV1hoVE0xTmlUbWd3WVhRNFZISlZLMlpRV0ROWUt5OUtOM28xTmpnclpqVTJRMU50YldWcFJtUkRMMjh2VUZGRlQyRlVjbm95VEZCTlRVaFJiRUkzVDBsSGFtdGpVVXBCY21GMVRHaFFRMXAzTjBSSVFWZE5aa05VV2tOcFJUUjROVk5SY0VkeFEyOHdWVmh2VVVGdlRGRjFPRmcyVGtkdE16WmhabGcyYldOaVIyWkZRVVE1VTNJdlExcElNbXR3ZFd0MlYxUjZMMUJPUTBaNU56RTFZbXQ1U0RoRmVXVlVjREZXY1VKVUwzcEVjVEZIVjFwUE1GTmFUek5uV25kcWFrZDZSalV5VUhkdFVVMVFhWFJYYTNWd1VWSXJhVXBwVGxSNllqaFNXVXQyVWxwRVEwTlFSamRaUkZaemRFUkVXRVpPVDJad01IQnZjbEpOZW0xb1dFSlFUbEpMUVRWUVFWVktNME4yYlVSMWFIYzRTVWMzYmk5b1dVVXpWV2N6TDNoTlRqaDNhSE5PWVZoNlV5dHdPR1F2Wm1SdmFuZDRaakphY2psWWIyRjNMek4wY0RabVNESXdaM1JhT0N0d00zWXZSMHd5YW5SSmVYQmlkVzUxT0dRck5FSlpUVmRpUW1aalkzWnpMemxxYWpsS1QzaHFlSGMxWldJeU5rUnRNV2hPYjNoM1NuVXhhMVV5V1VRM2FrTkRWazFtUVN0VloxQjVTR1F5WVdsR1RWb3lSMGd3VEhSWE9VZDBkM2R0V21scFJWcG5UbFJDZFRKVllqaEtWVWxoTW5oMllsYzFjMnBFV2tnMldrSjNhbkl5UkZKVllVbFBVelpzWTJOd1dtVmFURkZNWkZWM2MwOU5aVEppV2k5ak1FSm9XVlV4Y3pkVmJXWTRhemMwY0VWWmVEZFhPSFZIUlRodFFsRkxRUzlIVlRCcmIyNUJkVlpEYURSSE9XTnZWRmh3ZDBrM00zRjNOWFJ5TmpGTGJuQnRVR2c1UjFKR01WZHBjM1JxV1ZkWU4xWnllalJaVG1VdlpHTjBiamQyUkhkbFIwSnZZVFJJZWxBMVJGZ3lTbUpzWjFwUWMyTndaWFF4ZGtSb05HdFRSMk5uZGpKRlNGWnJjRzVaU0hORlNGTlBialpYWm05cEszZDJaVTVhU0VRdlZGTm5UamxwVGtKblNpdERkM2RJVTBaWU5IWkZaRVFyTVRSYVRtUmlaa2RNTjJkd2VGSTVWMU4wYVhvM0wxVXJUbTlZVm5ObmVtdFBiRGM1WVRod05TOW9RV1JNYURCSlVXMVlSbkFyU1c5NlRWRnFkR1ZWZEhab2VUTnBjVk14ZHpaUVVtMXNSazV5VVcxUFUxRk9TWE5wY3psUFRGQnpLM0ZVTkhKRFZYb3JkbVZWT0daTFdIbHRMME5VVDBGekwwRnpPU3RFZWpCaFlrMVlVbVpTT1dKNVFuZDJWa2R2VG5Wck1GaGtjRTAxYkN0cFluZFhjVVJQT1RKSFpHaFlaM1JLWTNabmRHUkNTRGhuVUVzclkwTk9hMWN5YzIxdE1HaDNiVTF5YXl0cmJIaEthVXh4UkdSU1JsUXdVV3B5TldKMVdFOUtSMUV6ZHpBeWFrTjZaVzVCTlZkclUyaFdMeXN3YjJOQloxaHRkMHhZTjFGbGJHVjJWMnhZT1ZNMFozVXZOblkyYm1vMlZVSkxPVVl2VUM5Tk4wOTZMelYwTkZScmMwMW5jVTlQV1dGU1lsRnJOV2xPUkZCVmEwSm9NMGMwWlhCTmQxUlJNVkJtUkVGcVoyTmxZVXhxTmpaeGRuUTVRbWM1YkhZeFJUbG9Ubk01VFdNdkwzSklSVEVyVWpKcFJsQlRSR2xJZUU5TWJYUmpUakpEY2xwRVVUZFFaa0YyZVdKQ05IaDVZV2hZY21SNmFsaHlha3R2S3pGWVdrNDNRVTFoVjNaUVJFZzBRMlZRYWpKaWFsRkRNREZIZEdscVRVeFJPV3hIYjNJME5XTnNjR3d5UVRsek9GWkhaRWxLY0dsV2IwWktZMW93VEUxRlFsRnpNVVZMU214U1RGVmlUMUZuVkhGNFZ6SXhORGQwWkd0NVRteFJNREUxUm1FNFNWRlBLM294YjJaNUwzaGxRakJuUkM5WWVFSk5RMmhLWkhKVU9FdHdZVEpXUW5kSlEyOWhaV2RaUlRSVGNHUndjVzVvVEZOWVlqUm5iRWRLSzA5MEwzSmxaakp5WlRseWJWbEpaa3RPWkdZMGN5dDNPV2d2VWxRdmFUWkhPRnBpWkRCV1FXUnBWSEV3T1hOeFdFMDNkSEEzT0ZGT0sxSnpjWEY0ZG0weWRVVnZabGgwUXpBNVQwNXhOV1ZzYW1kRVRVeE1ibUpxTW05ck5WaFNZa0pFTDFoSFQxTXlTMFEwYTFkbGFGQnNVMVJuWmpWUGFYWllNV3QxY2xGNWVsWjBlVGxWUVdZdmIzUTJNbVpCV0M5aFEwNXVTbWd5UVZCcWNEazJMM2hTTjFGME4yWjZNRGRyTWxvd1ZUaHdOVTExVFZST1pGQndVMjQ0YzBzd04zRTRla2RMUnpVMFkzSlVSWGhRWVVsUmVVTjZSMjlhY1dsSmFWTkpNSEpaVm1veFpWY3laV3d4T0c1U1RIVnlVbUl3Y1c5aFlsSnFSMHRET0ZVeFVsaEJjRWwzVTJWeE0ybzRZVXRUUTBZeGVrdG5jVzFqYVZkeFVuRlRiMUpzVG1WWWVsTmtOMlV3T1ZwT1IyRnlNREZpY21GaWVERlFXbkZ6V0VwalpsZE1RbVpQWm1ObWRVNTVSa2d4UkROU09UTXdXR1ZFVkZsVlRUVllZVVJRTVRSQmNHdFhTbWRUZEZSa1NVUlpZa1JqYVRNMU1XRlBRMlpXWTBsSE5HOUVlbVpXUzBORE0ySm9VME5UYlc1blNXZGFiRXc1VkhwRmRHRjZiRTkzVG5aclNGcGxLMDU1YjNSa1JVTlFlaXRrZFVoMmJXTjFNVUpIYmtoM2VFRTFhMnB1YTI5bllXNUJTM0ZFVm1ReFQzSlVZV3BrVldJMmVpOWtVSGRLZWxneVYzaHJjamhtYVU1MWEwcEZaekJOY0VaTFNUSlBTakkyTDFWRWEzZE5WRzh5ZEZOdFZsSXZPU3R3YTJVM1MzUnhWVWhuZEhkb1duRklabkJ1VkVkUU1ubGplRGRKYjJaNGQzWXdjRXhyVUdOVk1taFdjek0zZG1vME5qTmFaVGt5VG5wak1HZFVXWEJQTkVGNmFXVm1PVFV6VGt4ak16UXJaRTkwTDNadllXWlFUMmNyYzFkMk5FOXhRalpHTjBWMVluUnFNekpFZG5kbU1scDJiMDl3VkVWT2VsUXlPVlJUTUNzeVlUazVRVGMyU0RsQk0yYzNUblJIUzJJeFMxb3JkV0psZG5GaWJVaHllakpPZW1JeFJuUnNjaTlvYW5VMVpUQnFjRlk0U0d4MWJGTjVMM2wwZDBnNWFtTlVNeTluYlZkTE1XNVBSSEpQWkdaakwxZDNjRm9yTVdWbU5UTkNZeTlETWtoRmJqbDZVSEJWTHpGTmNuQkVNMGRoWm5SUk1YRXdhMUpsYkZwaWQwNW1abXNyU2todE1DdE9lbTVzZGtKU2QxUk1SRzl2TDBWSmRuUlpka2w0YjNjdlNtdzRSbTB2VEZObmFtWkdNbmRxSzA1eFNEUTVjamRwVUhSbFVFVXJSbkJVUWl0eVVEVmFVV2hXTDFKV01DdG1OemhZWTNZM09EWm1RemxKZDJGQlowaDFMMGhVTVVsVVZtMDNiVmd5YnpCMVRUTXdkVE5DWlcxSVpDc3dObVJ6VFZZeE4xQk5NVUpSWVVweFJHUmlNbUZVT1ZCbWMxTmtWbUpSWmxkeVdYaDJiems1Ymtac1kyWXdTV0pVVG1nclp6UXlORUpDWmxKVWNUZExUeTlaZWpoc1JIUk1TVFpTVmtjd1ZrSkRWVTF0TWs1U1pFNVRNMVZ2VGxJelJUZHZNbWNyTWt4UGVYUkZiV3hSTjB0a0wyWjFZVzB4YjJGT2RURmtlbVp5TW5wMWJVNUVWWEJoTDJaNE9YWXlVbFJrUVROdlV6RkdkRWM1TldWWmVqRTFjMjVyVlVsSGNFSlFZM2RZTWtWbEsyZFhaRVpZU0hGV2RVTnVaMEpDTVVNclFqQk5XVEptVVc1SGVGSk1NV1JGWmxJMVJ6STVTR0kzWTFNNFNIQnFibk5xY1VORWNUWjBXU3QwVW5kak0yUklWRVIyZERBeE56WlJXR2xLVlVWNVJtNWxRMmhqUTJoa2N6VjBaMHRwTUd0MlNHTm9NbXBTUkdVM1FVVkRjekV6VFVkalN6bG5iMnc0VUZkS1pGbG9UMjV2VGxWMVYwVlpOMFEyVUVwa1JXeFlVV05hYVdJNVprbzVhbVJ3VlVZMlVtNU9WelZHYnpNelVtUlBaRWw2ZUN0c1JqbElWMHh1VVhGRmJuWkJRbkJhYUUxaVUxSTJValJDVlRkVE5HUTJabTlGT1hvM2FuSnBXRTQwWmtSMlNqaENVRkpZUVVScWFVcGpWRzR3UTNKQk9VRlpkV1IzVFVKb1pYWk1UVGxqWkdkQmIwNVNZbGR2UzNnMmVWVjBURXB3VG5OUVdHOUJNbHBrVWpaWWVtRktia3BQUVRGM01FZFpiRkZhTVZaSk9GazJNalpOTm5kemVGSnJaVmhIVmtOTk5tUlVRV2hsUjBGa2JrUjNMMnhSTjI5b1FucGFWamRSUWt0NlFXRlFMemh6WmpGV05TOURWekJtVEV0eldURnlkWE5pVjNKc1ltWnFObmRsVTNjNFRuQlVkVWRvYW04eVVqbGFjMWRhZEdGUE9VazFkRzVGTkVWdlNIWlBPV1ZOY0dSa2RVaEdSbTFLTTNVMmNEWmhObVY1WVVKU2VFeG1hMXBIU1ZKeVlXWnNURXc1Tm1OSk1WRjJWMUoxZVdnNU5VbzFhVXA2VXpCT01IWmhXbmRvWkdkMllXNXJkbHA0Y0VWVmMyNHphemt5ZVVScGVXTnNiMXB5YVVOSGNHdG1LMEpxWjBocFptOVJhbE50T0ZGck1VTmFPV2g0Y1ZKMllVZHJjRWxoVlVGelVWQXdkMUpxU1hOblJEWm9aM0ZWVlZKWWJYZzRiR3N6UjFsUE9HVmxObTlpVlVSTGRXaFFkemR4Yld0TVptTnVZVFJpTjFGUFdGVktkWGczT1ZkMU5YQmFTblozUVVKWmIydGxTbEpxZVVwV2IxcGxlWGhoTWl0V04ycEVRM2x1TDNWRFVYWlJWbUZUWmpkTmNuVkViRTlyUTJ4RVNWQk9aRXcyVDIxWmVWWjFSM2d3UWxOdVpYQkxRWGh3Y0ZGVFFuQk9NVUZxWWtWdVQzVTRWM0ZWU2tweWVHTndZWEV5YkhCRFlYUjBjbGxST0VOR1UyVlVSVWcyWVhOTmNVOXdVRXB6UjJoeFZHaHVSV2hLUmxWaVZETk1iRmxHWkVoNE9HSk1SRzVtZFZOQk1UTTNURGx6VVd0cll6WmtOREF4ZW0xSFNHVXliMGNyTVhWaEt6VnpObTAxY0N0SFRsaGpPRTVKU1U1SGRYaG5SSFpoYkdOcVowVjFSMnR4Uldka1NuQlBVVU5EZDBWeE1rOUdNVzQzUldJdkwxVk5SVmxVT0UxWlZ6UllVRFZpZWtFM2VHTXJiRVJxVVdNemVXUXJlbVF4Ym1aelR6TnNaSFJDTVdvclpIVkhibHBwWkRSWUswRmFPRmRrTVhGdGRYZHZNa1E1VVRrck1GVnJOamRVWkVJMmFUbFFLMjFHYVV3d2RtOXNUR1p4TjI1a1NGRXphVUp3Ym5sWGJVcFhaMlpyTjFGUWMySnRhWG92TVhCclZGcDJiRWcxTWpKM1VpOHhUaTlRUzBOSWNWaHRSekZ2U2pNdlptZEdkbXBWUkRkUldEUnRNblkzWmxWSldpdFNVR1J0TWtaR1dXOU5lbGcxYmpoTWFHRkRUWHBJTTBORFQwMDRObEZUWVU1T1FtZElUM0IwUjFvclZHMXFSR2RHUlU1T2FVWnJNMnBwUmxCaGRuaDRSMEZUTUd0UmIwMUpjRTlLTjJWWGVGUlNaeXRMZUZkQmNXZ3dkbFp4ZDJkblVrczRaRVUzZUZZMU5WSk9UMVZaVFZwdFdtRmhZV2RHVG1wMlVFZHhiMHR3TmtZMGVFWjFOMUU0Y2l0aVIzRk5kRU5HWVdFeE0yWTFNa3h5T0M5elV6WllNemswTTFaMkwxZDBZM2ROUkVnMmRIaDBRM05rZG1Jd1pHbGlZbVZOTVUxVVdpOXdZVVIxZVUxd1dHSnpla3MxY0M5aGNTOWpia3RuWWpjelkyUTJTMDAyTVVwc00wVnpSbGw1VWpoVFF6bExNemxMYm1ORk9HMWhWeXRYZEUwdlozWnlXVzgzVlRoc04yVk9TVmN5VWxBdlQzbFRkRWs1U2pKdlpWRnNiRUY1UkdaTGJVVm1Sa05GV2s5NVNFbG5ja3RCZW1kUFFrZHZiRVJCUzBaMmFITlNja2RwWjI4NFVVUnJSWFJTYXpCbmFITmlRMGgyZW5wSk0zVkdVa0ZzY205TEsxVnBSV0ZOTUVOUFJGaGxNMXBpT1VsSWMzQTVOVGxHUmpad1EzZDRSMFpsYkVKcmFVd3JjRWRCUTI4clZqWkxOMmRKYjB4SWFGUnplRXhvZUdwSmMyaHJXbWQzYW5KNVNXaG5NRGRJUmtsd2NWWTRTVzloWjJsMlVWTkdUMjFTUlRsSFZYcDNhR1kxWjNweFpISXdSRUZhYW5oTlUzSTBMMWd4ZVZsNFFVZFNWbmhHWlVnclFXRnBjRkp5WjFOU2F6WmlkRWt3ZFVWUmIxTTJhRzV4UzBoMU9FWnJaVXcyTjFBemJVbGlZWE5qV1RoMk5qSkdRbVoxUkZOUFNFMVpXamd3UVV0a1UwZFJRelZuTDFBNFVXcDVaV2cxVWtoeE9FbHFhMU5GYkVVNVoxTkliVkk0T0d4UVF5dGtTbWRSTDNsWk1rdHpRbUkwV0hBck1WSTVLemR1UTIxblNFbEVOMk42UjJ3emRsbHBNRmRIWVVJNWJWcEtLek5uVWpKc1IyZE9Za05tU1cweFYzcE1Sek5oYldoMmEweFJVSE5UYzB4aFJHTkJjbGx6T1doeVVtMU5ZMlYxUldKVVdqZDVSVzF0WVVGc1QzWnZUMjlOV0RkUVNUVmtWalEzYkN0bU1UTnpiVTU1VUdkMFdqRXhkakJtUTBvNWIyNVZNMUZ3Ym1SaGNHeGFZbkJsWjBkeWRVVkJWalJQZDA1M2RVbFZTRlZXYlV0UFFXRjFXazFTZFc5WlVucFZRbTFUTWxoSlNVSjFNRmhuU1dab09HaFFhVU5RYTBKUFFYRkxSbnBCU2s5MFEzUjNTVVJNYUN0WlRDOWhVRVJUY0ZKUkwzWmxWelZPTkRKUGRtdHRPR05JVkV4c01tTjJaemN2V25KS1NDc3lMMkowYUVaQk9GRmlSakpyU2s1c1drVm1SMXByVlhab2FIbDNVbEp1U1haSVNrZExVVWxDYnpKSlVHZFVialJIWTI5clNVOVlTMDAyVjJGaUwxaEZZVTVCWWxvNVZIWjNUSE5sUVhWU1VYbzRaVGsyTUhWclNsQk5kbXB1TVM5VU0yWXpNMEZqTHpKTWVIUXZZMGMxVmtnelZEWnFiRmQ1VjFoWVlWRjVRaTk0YkRGa05tSmlWakprTDBzNEt6RklOVVp1TTNsbFRHNHpNM0JRVUdOS0x6VkljVVUzTlVaamVWa3JTMWR0Wmt0clNqZHVUazVsYkV4U1VITlhSVTQzWXpKVE9YWkZhWFJCWXpVM1ZUaHNOMlZPYzBVclJWbGpRMEZtUjAxdmRqbERabGQ1UXpsV1luTnRaekJFVVZCTE16RmtlVkZXVFhwUWJsZE1Xa3BqYjJGSVZuRlNPR3BaZEhwSVVIUmlVblJEV1hGa2JsZHhNa1ZNT0hWTFQwRkpOV1p6VEhWbEwyUk5VVk50U0dWeFYwRktTbk5xYkhwWFdYbGhWMXA0WVUxT0swOHlVVnBZZVhkSGNrUlBkMWhKU1VrNFQzUXhTVEJtV25FMGEwWTVkMnh4WTNSSlVETmtTMVpOWkhWSU1UaEpUMmQyV1dreFYzcGFLMk5rVFd3NWIwRjVkVVJ5TVV0S05qaHlNRGd6UkZOMWNUUkdNa0ZCTTJveFVIUTBXbXBJY2s1SWFqUkZabVZGZVdWTVJ5dEJNeTgzVW1OaWJrWkRTREJHWldkMlNUTjBaVXhoV2tobFlYZHZhbFJaVDFGMVlrSm5ha2c1Y3k4MlpEZEdkVU5HYmpCaGVFZ3paMkZoTWl0bmRYUjZPUzlFTjJVMFZTdHVkVTF0V0V0RWVuaEZiRU5IWWk5U2QwMXBiMFJET0d0ck5UVjVhR3BhZHpCQk5YRlpRa1YxSzAxME4xUnhkRFJEU1RaWGNWbHdUMm93VWtKblQyUnJVVTVhT1dwTVpUa3ZOMlJqZEhWb2IxRmtkbVpOTVM5TVVFNW9NbkZ4YURkMlIzWjRVSE5qVVhaTmFteFZjaXMyZEM5NWEyeEZjM0ZNWW1GWU1WVm9ZVEpHZFZkRmFVZ3pVVVUxVHpoSU5XNW9TbmhWV21ZME1uVktMMmRsTjA0NU5uWXhSSFpPTDNkNWEwb3dkbWRwVjFsT1kxTlhTVWxLUlRVdldsaE9PU3MwT1hSSE5YVlpLMlU0TVU1dU16Rm9lWGN4TUM5bll5OTFSRTQzUmpsd1EwTkhSakoyY0dObFRWQkxPVTVNTUdJeWVVTjNSemRuWkdWTUszRnRMM05VSzFwTWJ6RTFaV2RZTjB3NVVuUTNLMEZpVjJRcmQxRjBNMGRsT0M5bWRsWXJNa2s0T1RKRU4xSllhM1l6TTA5NWFqUk1SM3BCU2pGbWJUTXJUMkY0VldaWE5VdHdVbGczVlcxWUsxSmlXRTFwTW05YVdFTTVjME00T0d3NU5WQXplWHBhTDFaa1Ewc3JOMUprY3pjMVowZzBabFU0T0V0eldFWlFSWFoyTWtGSFNtTXZlVWhHUW5KRlN6RlFUR0l2Y1VOblVEbDZSWFZET0haTVpuTnVObUk0VkhrMmRIY3ZWbXBCU0UxQk4wTktOVFpzTTJGMlVGQjNTRE5xTjBzdk5GQXhUakpQV1RkemRHZEpVM0J5YmpkaGQxUXlhRUpGVnpSb1lub3pRMnRuTlZOdWJIRkJOVmhJU3k5d2QzaFdSRUZhTUdWeFJVTk1aRWhVVW1kV09FbHRTa2x3T1dJeFdqRXJlSFZPYlRWTE5tcFdZVEpNYmpsb01EazNNRzh6ZEhST0wyUjVhVWx1VEdkQmNIUm9NU3RKYjFOSWJtWnROQzh5Y2tsRFRWcHhOSFZwTlRKUlJuQlRiMjFuTUdWRFdYTkpUMWhVVmpncldGQTNPVkZYWjI1ck5rMUxTVWhSWTNBMFNVSXhkVEpEUzFGRFZubHlPR0pWVEhwUmJFODVTRXMxYVhwcUwyUnpUMjF2Y2pkU2NYTnZSemRxTkhwc1RVTjBZWGw0VmxselpUVnpiWEZwU1ZKTmVGTkNNM0JUTm10dFprdDBVMVJ4ZGpWUlJqSlZUVVUxV1docmRscHRVMloyTkd0eVVTOXNZbE5RWVRKcVptbDFUM0l3YWpkRGRtbENPRWxvWjJaWU1HdzNLMVZMYzBaYVV6VnhZV2gxT1RkRmFYb3dWbUphYTB4UldtcFdlVlZtWjJJNE0yNDNOeXR4T0ZCaWEyOXlkWFJVTDFBM1JHSkdZazlSTkZjelkzaFRaa0psVjFCNmJXWldUVEV4Vnk5bE1FbHlRV1ZyYmxKR2VtNXpielZxZUdsT1UwTjJiWFJvY1hwc1kyOHJlV1J4V1VSamMzcHhRbEIxYUN0YVpsVllLMUJ5TWtOa09ISnNMMm8zVWpWbFVUbGlUVmsxWkZCSGRHVTVhM1p0VTFWVFpYSkdWbXhLYVcxUmRIcE9VWGhwTlhwS2EwazNSRlZTUkdVMlQyZFNWbXhrSzBaemNubE1aalJ4VEhCMVJFMUVaVzlSWmpKd1dETnJiV3Q0V2tsMU56RTJTbTVsVTFFeVdYazVRMmR4YVdsT1NrSmtXRWRUU0c5TE1qTlJjVU5xVWtFNFVqUk5RV1JNTVdFdlNHTjVhMWRaWjFvMmVsUkxiSGRMTWxWRlNHaHRZakpYYzBodlNXcDZaVUpSZEZWb1NsZGFaM1Z4WjJoWmFFbDZXV1pTVmxadFkwVjVUMFJHTldkNE1tSnlhVzg1UjJScVdUTm5iVzF3TmtaMGRtVnJha2t4ZGxCc1VuZ3paMU15YmxreWFrNDRTemRDVFRkemVIRk1Tak5SWkZVMVdrNXZOME5XUTFWclJubG5VRkZUTlhCUWIwRnBia3hxU1VWQ1VuZHhXbXBXVTJwVmMyNHhOREozYTNKcU9YaEdabXd6UmpreGJ6SXdhMUJsYTJGdFRWVmlNSFUzYlZaTk56TkhlVkpUZDNweWNFSnNaM2wwYVRKWFEwOWFWREpyZFhsS1YzUXdTMWRHVVZORllWUnFNa2M0UlhoRlZsQmhkR3ByTURWU0swbDRVblpoS3pGTFJEaGFiREV6VkhWeVNqUlFUalJRWmxrd1ZIRTVZbVJ6VlRocmRXcEhhRFl5VGtWUlIyZDNSRUZWVWtkSGFsWTFXRVJ1T0dvMVFTOVZaVTF5U0ZKbllXMVVTVXBpV1hRMWJIWTBaVmxKWW13MVVqa3JhRzV0SzBkemREbEVSRVpKZUZvdlJ5dGhiaTkxUW1ZMWJTdEdOekpJVm5oUVlteEpOV0Z3V2pZNGFWSkNOVmx3Y0d4dVQwdFlSVlZKVW1wMVdVUTJURzFXTkRFeFRWQkxPVWswUzJ4WlJrWnRiM1JsT0dKc2JsRnJOR3AwYzBWQmNHbDVjVFJJVmpkRldEQllaRVpUYzNGRE15dG9iVmhTT1VabUwwUmtVRGxVVm5CWVVIRlRhMEpSZEhKTk1sVklTblk0UmlzclJXVjNSblJsVWxKNlNWWXhaRlJKYms1U2EyaEVObUV4VkRacFVsUXpaMW8zY1RGdmNVMU9lRWQ1YVhoSmQyUk9aa2hIVnpaSFJVSlNjV1pSTkhadmJYVkRlRU5uVWtSR1dFbHZLMWt4U1ZwRVRGUmhNVnBKYkdGc1psUkxSRWRyUWxGb1drdG9VRGhuYjJaRGR5OHpjbWRvUlVaVVZGTTJMMDFhYkZsbFpFbDJlakpVWTFsak1UWm5jREJ0UlhaRU5FeGFTV1ZSVG5Kb05tWnRjRzgzWkRJMVZuUk9SVkpVYUdkMGFYbGlZWEZQT0c5V1VWTXJlV2c1WWxGNlRXVlFaVmRTZW5OSmJVRm1UMjV0T0hadGMySjRPWGdyVlhjek16ZE1PWHAwU0RGbWRuWjRkbk5EVWpWaVREUTNSVGhsVkhkRFkzWkZkblZ5VmxrdloxZDRMek54Wlc1Q1MzazRNVlJQZUc5amVVODBWM2hPZFdwaVlVdEVWWGxFYkRGVFNFOTFUVzkwZDBWbE5tczFVRXRKVURCVVlrVmxhREptVG5CM1duSjRORGRvZWs5ck4wNXVjV1p1VlZVeVprOVFTRlZ4S3paSlIzRTJZVk5FUjJJMmNsSlRRa1U0ZEV0dFYyMTBaMlZpVTAxV2IzUkVUV05OU0RsTmJHOUNWRXBCZEVvNFdsRnNUMWRWV0hobFNFRnpTMFF2S3pWb1FuSkpia2RQVjFNMVZtWkVVV293VjNaWFFWcFpUbTkwYmxGdE1sbFBjbVZpZDA1VFRuSndaeTlPWTBnMFZHcG1NRlI2T0V4cWVHTXZRMDF1TnpWVFVtNVlha2RWVjJGRk9Vc3ljV1ZYY0V3d2IyRmFMMHR2TnpGYU1HbzJLMHBQTVZCS1pUTnFaV0pVTTFOa2IyNWpjbEp6UldFelQwdHRiV1pWUjIxSU5HWTBlRmxsT1RsV1pYaHdMM0l5UVdSbmVreHBSR3AxZG5sQmRHeG9SVmwzTURaUFZHRnpaMFJyZGtGNVdXcFBTbU5DY0dSUmQwNVdUbVozVVhaVFoxRmpPRmxUTjA1S05HVnRhV2hLVVRaT1RrcFNNbEEyTlcxRWVYVkRiSFJGVDNFM1JpOUhTR2cwVWpZNWIySjBWRkJZVGpORVJ6TmtaVFEzYWtWelQwOWtabkozZEZKV1ZWWjZXWEZFUTJ4a2VtVjFZVlJQTHpsM1FVcFRjMWx4Wm05UFpUUlNRWEp3ZVhGU1JHRkZRbWhPVmxKUWQzUjNSMnhGVDB0cldFVXZMMHBEVmtsaFMxcHJWR3B2VjBwSmJXcGhNRVZITldsSVVqWlJPV0ZhT0ZrM2RUaERVa3RNVGt0cWNsSnRjbGRwZVdOT1p6bFhiV0U1YW1WWVVpOUxhR2xvZWxRNVlucGFhR1ppTW1kMlRubFpVbms1TTBRNFNucEhVazlQTjIxVmRtdDRaMGRJU0dGRk0wbFFWa1ZwVEdSMk5DOU1heXRNWTJZeEwwcFlhQzh2YkZWRFozbDRiMlo1WmpKaVpsSXhZV1l2YkZKaFNqVTNaekZKU3pkRk5rWnpPRE5ITlZSYWVrSTFSRmR1ZDFWc2RFZzBOV1ZHZWpFMGF6SkdLM0UzUXpOS2JXSTNXVmd3YTNCbFRGVnpjamhSY0hkMFZtSTVTMkZpZWpodVRXcDRiRWRLZVVOMWRIUlVUM0ExVnk5Qk9IRnlaVFZGZWtKek5VUlhlVUkxVkdGV1JtNXBiVTVNZVdOUWR6aHViV1ZhTURWQ09YcEdTekJJSzAwMVUxaGtkMHhZWW5Fd1VUUnFkRmREU2pjMVNHVllhRTVsTWk5cWNYQnlhMGhLYzFkaWRtVjJMMkU1YjNvd01YTkJNekJDV2tFMGFsUTVkbWR6TkhsUVdTdFJWeTlHTnpZM2FreDVaR1ZyTnl0c04zVlBLM0pLVDBZeFQyMHdORFJrYTFad2RuWmlTbWhKYkUxaFdFc3dWV0ZzY0VOd1kySTBiVUV2WldaRVlUaGhZbGRDY1ZWNVluRjVZa05KVjNoeWRXWndlQ3RzTnpKQkswbHFhbE5KTVVSUk1rUmxXa0ZsWTJGMFkyTnJaelpLUjNndlZYTk1SMU5FTDJSclVDOUJabUZFTjBSbFVYUTVaRU5RWWk5bk9WcG9TWFUyYWtwSldsQldhWEp3UzBkUFYxWk5ZWEpIWmxkS01WZ3hiV040VUZwcVZVOXRVREZKY25CRFJsSlBjemxsUWxvMlpEa3ZjWFpSTTNoRVlUaENaalZ6WjI1VUwxTkxVSE1yZURGcWJYRkVkbmw0VjFab05YSlVNbFF2WVV0MmVrZGhjRVJHV1VKaFYySmxlR3hRZFVzdmFETnlibGhtYjNsdmJFeHFZa1YwTjNSbFRGWlRMekkzWXpFclVIUmhaV3BPYkhKRVNVZDVaVUp1Y21wWlpuSk9OR0pMZUVGUVMwWlVOQ3RpTmsxQ2FVRXZOek42ZDNONVZVRXJiRzFUVTJVclQzTjViVVpLU21obGQwcENka1pPTkhWNFNrMHdjV3h4VkhGRUswUlFXVlZ1WlhWUFRrRlZOa3N5T1dOQ1R6VXJaM0U1Y2poaWRESmFaaXRvVmtWc1NHWTRhblEwU3paYVRVbEtaREpaYzNnNU9WZE9Sa3RWZDBsVE1WVmtNVUpyU2xnMWMwczJiUzlFTUhadVYxRlNSSE5sT0ROeGFUaGFha2cyTDBoaFdWVldVR00yTUcxb04xSmhRMDFDZFZwT1p6QkJaRUZXZDBOWFpuZDZkMDEwTDNGdGRDdDFaRzkzYkV3MmRtb3dNRWxHTW1OTVprd3hVR0l3TWs5b0x5ODBkblEwTHk5cGFrNUtaREprUVZaM1pFaDBiR0pJZEhkUmFrRlFRMmw0VlRoRmVXWXdabU5IT1ZaMFJEUmxNMlI1V20xTlptSmxRMnBLTWtRNFpsUnBTa0ZYTUd0elkwZFhkRWcyZVhGc2NIUndTVGxOTVRGWWJXdDJTM0J5VWxKclptSmhSVEU0VTFkRVRWazNNVXQyUXpoVGNWaFdZbWhwZDJWd2VWQnJaSEJqTlZoQ05UZDRjRzFQWkhSR1pEUTViV0p4WVRBdlIzVXhVSEoxY1ZCeWRYVnlRMjlsY25sb1YyeHVUSEpVUW5kalIwUXpXa1ZKTmtadmMwTjZVMWd4ZGxoSWVUWjBWazl3VjFveE9VRkNLMHd5WnpoT1JFSXhUM0JCT0UxNlducGxjMGhTY0dGUGVqUjNaMDlaUjJOb1JESldWU3RNYmtrelowUjRNblZ6YUVoWGFrSkZSMHRaZUd4VGVUbE5ORUZXU1VRNFZVeDNORE5PVm1ZME1HRkJOVWgzTDFoeWVHZGpNMGhXTDNZNE0yMVVTbFZ5TlZKS00xWkZOR3hJTjJRd1JFSjNNblV6V1RaNWNqVXpZVTE2TWpJdmVqQmtZbmM0UkN0UFJEWmhiMWM1ZFZkR2QzSnVTbVJCTm5sdU0wcGhVRkJNVVdoWmFERlNhMGxtYUcxc1JFRmlaR05xUkM5TmFXNXVVMjlDTUVsclRrRkRObFZNYkd0QmRVMUxkbFF5VkZOWVpHMU5jREl2TDA5cE5qQlpPVTVtWW5NeFFVcERTRlkzTVVVelZtTmxiVlJzTjJSMVlrbHNaRzVtTURCbGVreGxlVTlpUVRFNU5YSlZhSFYyS3pZMk9GbEhRamhsWlc1d1owRlBVMXBxUlhodE5WRk1hR1pFV1hwd1RraDFVVUpGWjFZNFMwdHhlazFvTlc5U2JrdHpSaXMyVVVwa2QwczNSRW92T0hRelZESXhORGszY1RGaU5YWlZXaTlqUlhncmN5dGpSbXg2TWpGWE56TnNZM2xZY25VcmVEYzNhbXgxVG01aU9XMDBPRnBoZW5aM2MyeHljWFpsZFVwdVpUaDBXRk5sVG1Oa1dFMWpXVzR6T1ZJMWRIUjJVWGd2VTNGTlRFMXNaMXB4VFhKMGFHd3lVRk41V0hvM1VFMHJLMFptVUhOWE5HNUdZazlZZDBSVFlXb3lZVkpPZW0xbk1ESjJXVFpvU0dNek5YUjBNM1JFYkdGckswUlRRVEZzYkdkNk5uWjZUR0oyZUV0b2MySmhZamxHVTFwdU1UWlVaM281TmpOaVNqVXlWRmRpSzJVMVlrd3lRemMzYWk5dFVHRTRaMjhyVjB4SGVpOVBSbVJ4WVVKRFVWQkJRazlEUnpCaFVXWkdOMEZwY1RWbWJXZGpkM1Z0ZFU1SFZuZzBNM2xxVG5CdFV6bHdRbGhXU1ZOd05VTlFRbmwxY2tGNVVHaHJaRFoxYUVGVWJ6WkZkVWRoSzNOeFlYcDRaV3R3YWtOWFUyeFdPREJyU2poTksxcGxOVk5qUjBjNFFsQmFLMHgwTkZkTVVYTnZTbFpZUjNsNGQxUklXakJxYkdOc1NXVmlXR2hzZFhsbVVIZHFPSFp1WkZwbWRFNXVLMjEyWTJSeFl6RTJVR1ExUldzeFRubFdSRVUxTjFJMmNsQXlkazkzUVVjMFVDOW1OVkI1VEVsc1NVNTRjM2hYWlZwdVZsRjJUMjV1YUVaYWNIRmlabVJzU1V4elpHOXpWbk16WTJOM1J6ZFVUVUV3YTNsc2FtMXRlSEJwWTFaM1FYSmlNSFJJVTI1Vk4waHRSMGRETVU5aFNVOXdWRkZ2U2paSE4xbENTVmRhU21OMVJrbG5RbnBZZG5SaVVIcFRWa2hZVVRkamRXc3dkMDRyWkRkQ05uTjBabTQ0TldWVkswZ3lLM056Y2t0emRFdHhlV3BNVG1aTWVUZEtValpOYlZNeFZqTnJhSFJpWTFKVVlsUklTR2QyUjFkTU4zTmpaSEJtVERkdVF6a3dLMlo0UW1kS1pXbzBPRkY1V25ZM1UwcDZWV3RyUjNscWRYZG5OemdyT0dnclpWSnlZMjVzYTJVeGNGcHZRMlYwU2tKTmJHcHBjRk5MUm1ka1JrZG9SMnBCUkhBNGVsZEhVU3N4UldKMlJGcDBabXR0TDFaVE5FNUdaVTQzVmxsTmNHSktObVZ0YUc5aWNUWlNTVXRSTmxJelZESjZaSFpJUm04elRrUlZNbGRxWkZsT05VSlBTbGR2VkhOT1NrSk5lVVJYVDB0NlJWTnZRakZMTlhoVWFHcG1RMWRNWW5OWVRYWXJZbWRWVFhCNFpWZHRXRlp1VEcxcldUVkVhbU5UTUc5NFlYcFpXa2xHVFRSRWFEUTNiek54WWxWQldWcFRTazlETkhsQlZERnhOWE5JVFZSVmVsSXJTSGRqUjA5cWNYRnhjMnBLUTBKeFkwZEtPV1ZQWkVGNE1GcEljVFp4YkVwV04ySllTbk56Y1hsNWIzQjVZVVZaYjJkcWIwVklRV1IyVkhCemFuWkZXRGxEYldFNFptTlBjeTh6T0dSeVZGaDRWVVpWY3pkS016Qm1VR00yWTNsRVZ6RnlkSFZKVUhaeFUyaG9LMlUzYVRFeFR6aFBiREZXT0c5eWRsWXhVbUZ5TnpWcE4wSkROWEkxU1VOV1QwVnRZM1JLU1N0amFVcDZSbEJHV0dFemVVMXROa1ZhWjJsQ1oydHJNR0pHV2pRclFtMUxRMjlHVjBsdWFtTlVhVGxWVFdOc1ZHMUhNMHBUY1hoV1F6VjViVkJ1UnpseVUzbFNZMHh3ZFhSeVlTdDBaRE5WTmpCYWIwRlJRakZZTTBKVmNrdzNWVFZpVlRSMmRFMUdiRU5aUlZGVVlWQnRRamRhU0dJd1oxa3ZRM0prSzBzdlZUTktXR0VyTVRoeU5HUllkbFJwVkRjd2MyMXlWWEJqYlVRNWVHdEdVbmRoSzNSdFdsaFBkM1UyVTJGcVdrTlFXbE0wTlVSb1FrUnRSMUE0U0dOb2RqVkpjbXRNVFhkR0x6ZzRjMWhNTDNwSVVDOHpPVkkyTlRkNk4xWjJiVlJ6TlhNekwyNDFkVzE0YjJRMU1GTXhNbk4xY2xSRldXRktkVEpPWlc5WVZWQTVaMFpJZW5aclVIcFljVGsxU0RsWE9FUjVlSGd6TjJwRlptWXpMelJZTjBoRmRsaFVaMDFtYURoUFJDOVViemhVTTNwbk9WZ3ZUR0Z1VmpaMk1DdHRaVW94TjNodVdtUlBORk4wSzJGelRWTlhSRWszTlZoRk5sQlRWaklyVFdWNVluRm1WRk0zTDI1a2FuQkxVMmg0VDJRM1dUZFdlRzQ1WjJoalNtOUhhakpJV1ZjeFdtVmxPVlZCTm1ZNUsxWmpkbFIwZVRkWFNEZHZRa2cwVm5FNVpUaFlkVGhTZGtab1YwdFdObnBqUVdvM1ZqWjJTR0YxTUd3eloyUnJMMGszWTJWWFpsQmtaMDFWVldZdmIzVTVhbVZHT0Robk9TOVVjVEZrUTNNcksycFVPRGszTkdSNGNFSnlkMHh6ZHpWNk1uTk1ZMkpsVGtoM1VHTTFVRU5tWWpJcmFrdzFWemxtV1RVME9ERjVUR2xGVnl0a1pqVklaVk0wVFhrNU0wTjROVTVhUm5OS1JVTlRlbXBqTHpKS2IyRkhTbWxoU0VONVRrSm5jM2hZTDNvMWNUZDFlbHAxTjNWNlpHeHRaMEZtYjB0cmJUTkZVVzlCWVRsWVpYQnBObEpoTkhCMVpHaHlNSEpPTjNoU1JUUndjVGRVWTJka05FMHhPVThyV201NU1DOUVlV1JYYUROQ1YwbE1jVXh1WlhOVGNFZDVXWGt5Y1d4TFVqWmlNbEJNWWpGWUszWlNVMGMyUTIwMGNuTmlSV1pOU0daTWMwUnVhRGxJTDA0M09IUldhek5NWjBoaU5WQkxjM3BXTkhWR01WTm9jbXgyV2todWFqVjRaRWM0TjBjMFdIaDRhM2xYT1VGdWNXWjJNVGh5ZG5Ka2VTdGlNekV4U25CaWJFaHRWQ3RTVFhSSFVub3pPWGhqTUdaSU1XY3daRGxhTHpreE5qWlBNbVpZY210VE9GaG5VemxtYUN0bFZVbHNMM2t4TUhKa2RVNTNUSGtyVmxONWVHVTFkME5HWmtGcmMzVmpSVlZZU3k5UWFWcFJhamN2UjJ4dmVUZGtiMEZJVFRKSlpYRldiVk5QUlVkM01VdzFXRVJRVkRjck1GTnJOM3AwVGpsdlMycGlXQzgzUkcxNWRGQklTM2RRTVhKUlRWUjJWMVV4WjBkMFpsWldWbkUzYlRCYU1sZFFkbVJMVjJOVVkyeHJVelptV0VKYVdVZHNPWE5xV1drNEswSjVPV1ozZWtoQlpWazVjbTVLZVhsb05GTlhSRXRSSzJGemF6WkdhRmxzZFdORU1IRlhjMGhKVkhGWlpUTXJSR1puV0VaaGIwUXlRMGtyUWpVeWFsQTVWWEp0WVhNdlREQkNOazVvYTB0RlVrcDFhV3BpVmtwQlprbEJSbEZTY1VKaWVrUndVekUzWmpOMVpHeGpObmt3YzFkT09HUXZVbTVVVTBsWk5GTTBTa2w0VTBFNFZqVnZiMk4xZW1ORVZYZEdRamxQYVU1alRtTlJkakp2VG1wR1VFNUdTVEkyV1VvMmFEUTBZWFZEWWtoc1pVOTFXVVIzVlVOcFdUTkRlV1F5YW5RMlYwOUlTemhIVVZkc1ZWcGhha1l3VHpWeFZIRXhjRGR0ZEdaME1Ua3ZhV05pZEdkS0swSXlZekZzU1V3NVFqZFdVbmxxUTJGSGFVTnBOR3MxWTFKYVNYUkxlRWszYVd0Q2RVWkpSbTFGV1VneGRFVlhTSEJZUzBONmNHaFZTbkJUVmtKbE1ITXZWSGNyZVdWbVNHdHdPVFZGVERod1NYVnNjR1p4SzFsUVRGTTJhbW8yTDNrNFR5OVJWbFpXZVV0M05qSXZlVUpzVjBNM2EzRjJlV0puU1V0UFMxVjZlRGQyWjBZMWRYUlNlRVZZVldoMGQxQjJOekpFTTFWU1VEbENSM0ZWZDFaTlJHWjVkV1pHSzFrNWJFWXZVUzlwWmxwUVkzWkxUSGhTWkZscGRGbFlTRGRTTkhaTFRHWnNOR3AzWW1kTmJ6ZG1WSElyVHl0SU0wZEtRMjFUV1d4R01VZDVjVWgxTlZSbmMwWnRTR1ZUZUU1b09WQmhhVTFuZWpRNGFUTXlkaTk2TXpCYU0zQk1Ta0pvVW1GUGNXbHJaM2szTmxaTFRXNXhhSFZEYUVSUFVWcHFPRlJWWTBNNGVucHZUVzk0UWxCbFVrOHpSMU5yTWxSbFNYQktUV0p2VHpWSWRYSXZjeTlaVm1kSE0yc3lkRzgyTUcxbk1GbENOVVJ0UWpCdVkyUm9UbTVUV2s1dGREUjVUU3MxY2xVMFlrWXhPRElyYUdGU04yMWFiVnBqV20xb1psZzVaa3g2VFhwTmVrNUVSamhpTDJ0WFluTjFielIyTXpkRlpHMUhPVEJUUldOaGFsTlhaR040ZG1ObmRuQTVlRTh2VEUxRmNXa3pOV1ZXT1RKRk5rRkRPWFphYml0eVN6UjJPV2czYzNsMVQxZG1OazExZDNKek5tcE1iR2hZWTI5aVVqWTRka3NyZWtGV1kzUmtVQzlNVGtWeEszcExia2dyTmtzMFVIWXZXbGNyUkU5U1MxQTRjbFptYWt3NVpuQjJaMDlFUkc1RFNDOVBNR3RJTmt0alpWQmpTalY0TDIxM0wwdGpTelZpY0hkU2JHa3daVTV1VkU5Sk1Dc3dORlY1ZGt4eVoxZG9Ta0owZFRjNFRHRnNlbTkyWlRWeGNFcHpiVFF6VVRVelZYWnhhMGMxWkVGUGJtMXZZbW93U2pVeVdGbG5jMjB5VjBSNVIwVnFSRFZDZDA0MmNGcEdTV1U0U1ZONGRsUmlRakE1WkRoNk9UZE5kV2RtZUhnd2IxRnRaR3BzVGxSelRHbzNlVmxUZHpKaGVqZFlhUzlQVEc1clZsaFZka2hzVDNoQ1MxaDFTRVpFZGxCU00ycEhjekEyUzFNd1dtTmlOR1EyUzJSbU0yOVBiRk5oVmpoc2JGaHBVMUJXWmxONlRHSkZSMWxQVVVOMmJISndabnB3ZEV3dlRFcHdPRWhtUlROVGEyNUdiMmt2ZEZKSGFGTnRlV1ZpWXprck1rVm5WRWRMTkhSMWIyaHBWVzE0Y0c1bldFZG9NRWhRY0ROMUt5dGtXbEZGT1RSWU5IbDZiMUphWW5aMFlUVkNSMUU0Y21SclYwUkdOR052Y214WFFqY3ZPR2t3UmxCbFMzTkZTbmRHTWtaT1VUTkxaVVZMVW1RMGQzSkphRmx0ZG1Nd1MwRlFTRzVpV0RsSVIwUkRPRkE1YWxZd2FIWTNURTUzYlV0V1NuQkZORFJOZEZBM09IUkdkamh1UjA1YWRuSlBiM3BDZDBNM00yWmlUbGxIWVZsT04ydGxZMk5XVFZsWlkyZHNSRXAyVDNkd1RHUTNkV04xTVc5aFZYWjNiblJRSzFoaU16RkVNbm8yVVd4c04xRjJkREJuYmpCcGJHeEpiR2RsZUUxcmEwY3dTMlZvTUVOVUszb3hXa1UyT1ZONmIxRnRkalpSWlVOTGJtMVFORFJKTkZSVFNtSTJRVlU1T0ZCaFEyZElhWFpFVXpSYWJYWnFla0pSVDJwRlNsRkxTR3R1WkRoSGMwMXFhbXQzYjFsM05sUnFWR1JoYm10MVVIVTFNMk5ZWTJOTEwxTmlhMHcxS3pWQ1NEUnhUQzkwU0c5NWRERlZiekF4Y25CV1IzbDBNRXhQVUM4NFVucHhXRXd4WVVVelYyTTNUbWRKVDBRck0yNWxlakEyWld4aWRWVkxNek40ZWpCbGRFMUJOekJQTDJGSGQyc3pUSEZZY0ZKSVN5OXdSRXRvVjNRemFYRnFiQzl2U1VWeE5XYzVXRVExYlZsbFJtWldkRko1YVhrNFRWWjJXbVJNVUhWdlYzaFNSekJMZUdaYU0wRXJhakZQUjBkdVFXVlpZVUZDYjFKcFR6aFpTRFZqY0RaNmFXTjVibk15TmxwdFFrd3dVREU1U1VGQ1FucDRWRmhZZVM5T1kzZEpTMHhuZVdkcmJXRldlWEUzYTBVdldEUndTa2RRVm5nNWFVcEVWM1pRV0RsNWVITXpOVFZOZERFNFFtaFdZamxWWVhoMVZVOUpTaXRtYTJodk5YcHBaVXcxUkhoUFptMUZVRGwwSzBkdGMyWTFZVEJ3U2xOWGFERlRWSGRSWm14R1Jsb3paREJ3Y1hWTGFFeENha0pzV2xkMFdWTkNTMWxIZFdWbWVUaDZiRzV6YVZocWRYbGxjbU5YWVRoUFJsTmFPVVoxV0cxa1JGVTVjRGx3Um1sRmRXWTVaVkp2T0RGM1dIQmphMVpTWTFGTU1HWXpPR2wyTTJReFZ6aDFUM1ZXTXpCa09UaFNOa2d4TjJsaVprTXhWblUxTWtOS1pHdEtTREp4VkZsVU5XWTFiMWw1T1dnd05VaHVNME5LVERnck5WQTBaVzU2YTFVMFRFdDBiMFJFTUhka1pFeGtNV0ZPVERKV2RGSTVaMVVyWmxOSU9VYzJTaTl3WVRKb2QxSmxOSFkxTTJaemREWk5NalI0TDA5TU9HZ3JaWFJwVVc5VFp5OUNPR2hZVldobVNUQnlLM051TVVSRFpHeFZOV2wxYTJKcmJIY3hPRVpHVmpCNGJXVjVaRzFHVHpJM1NrOHlOMnRpV1VsNlUzYzJhVXR0V1RoWlpISjNlRGszYkhsNmNGQlRTRTV4VG5WbFZreFpkV3BZYzBOWlkyMHZRbVp1ZGpsbWF6TXhNVmN6TXpCb2NIVmlaeTlYWVdacmIzUjBNVFF5TjBvNVF6WlFObFZTZG1SMlMwdFNXV05YU1ZkSFZVTk5OMUEwZVdkc2ExSk1hRUptYUVkdFYxRTNVMmhsSzNKbVNqbE5NamxsVFV0TVlXdFplamxCU0NzeE56QjZWRnB1WmpKeUwxZG1aRUoyZFVGMmNqUXpLelZFTWpoclIwOXZZemhqTm1wNlVVNURNMlZTZUhCWWVFb3ZVRm80Y1ZSVGVYSkdZVEZEVEhwalMzQTRaVVJ4VUhkT1dHWXhjbUpzTmpNM2RWa3hNbU0zVms1WVZ6bEhkMk5JVGk5Wk1qRlRPVWRtWWpKaWNWSTJRVlZtYjJ0b2NsbFJaa1pJYmpoVVJ6aEZjVGhtVUdSNU5VcHFXRnBxZEdScGFXWlRlVzEwVHpKb1pFeEhjVmRIZVUxbU9HVk9XVUk1WmtGMlMydzFUSGxuV25oaWJETklNQzl2Y201S1UwRlVhRWxVTjNONFFWbG1OSGhZVDIxRU9Hb3pRbkpQZEN0YVdERlVjR2R0VGpVMVJGaHRhakJqYTNKM1dYVmlWa2hsVG01SFFXMDRaa2RyTW10a1MxZDFhR0UwZEdSaUwzZFFWMFZ1V1dsUFNrSTVPRWxtVUV3MFVXZG9ibUk0YUd0elVYRTNjQzlLYWtoMEszcGxTek15ZEU1cGVqRjNka0pLVVhJekwyMXRZWEIyU0hKVWNWa3lOazE0Y0hvNGIwWXdWblJoYlZoVFEyOUlOMFpzZUZkYVdHbDFhRmxNUkVwMWQxcDFkV0pPZVhoaksyTnZkR3BXVGxsSE9XaEdZblZOZFdaVEsyWm1kRWRUWkc0MGVUVlBhRmszTml0M2FHUnZTa3BtTTJWYVpuSnFWbmd4UkZZeU5VazBRM2xxUkhJMmVHbzFjbEJDYjJScU5HbFdNazFCTUVoVFYwTmhNREJNZFZGdlRrODJjbEpJVkhReVRrWTBOV2x5ZWxSak56Uk9WMDV1TkZFNE4wOVhaemd6Y1dFMlkzcFNLMGcxU1hFeGJtWmpNMDg0U1hreUx6QjBZV2d6TW5STk4yNXdVMVpYVkc4MVRYWnhjR014T1cxeU5UWlVObkkzYzJGRU5FdzRSSFp1YW5SWVNpdExVWFkxTDFwVmFFMTZOQzlKYVN0Q2JqaG1ibmx1ZEhwcWVsbGxPRVpDVURWVE1qUTFOMGszUkhncksxTjNXVkphUTFnM2JIWk5URXQyTVRob09IQldNMjh3ZVZKbU0zRm9aRlJMYzNsU2NVdGlXRll2ZVhveGF6bGhZM1V6Y2xkek5rZG9SRVI0VUZBd1lVVTBkV05aV0VGTmFUbG1VRlp2UjFnNVYwczJPRkF6TUdOTFUzZFdXakZGZW1vM2J5OHlTMEkzYkVNM2RVUnlMemx2U0dGWU9WcFJSMGRJYWpRclpsTlJjQzlUYUN0eU9YbDZlVzEwWlhaWFpYbGxWVWhsVmxCcE0yUjBPWFJ4WkdacGMyVldURGhaUkdaU1dWZFdhbFJqTjAxNWJURlNkVzV3ZW1WMU0ycFRWREZUZGpWa2ExRnJNekpMYkhwUmRsRlFia3B3TjFaS1pITmFUMk55Y0ZFNFZERXJjekpxVUhkVGJ6aGFPSEJ0WlZKdk5IbzFWVTF6Um1aVFNFWjRObXhvSzJ3M2VWb3pkMEp5WjBZM2IyWXZhR1psVXpWeFZXaGxRU3RqWnpSbWFFRmlaMUEzYjBNemQxSnpVa1JhUzNSeFoxRjFOMk5vTUdWcE9UaHZNRzEzUVRCV2FERkNZM0o1ZEZCVmF6VXZlV0o1U0M4MlJYZHNWVGszTTBOVGNFNUlZM0YxY25CWlJteDBRMFpKTnpkTVpVSnJRamhUVlV4VFoxVldabFZZUzA4clYzUkJjMVpUVFc1RlJWbHdTVzVKZG1veVQwRnVWbWd3ZEVGWGNURk9hVVJhWkc1clJ6SklaMDF6YWtKNE9VWTBhMnAwVW5vcmNUQkVUVVp4VUU5d01VRm1aVk5oVkRsRlZsRm1Sa01yUlZodU1qUnlZVWhvUmpsaGIzQTJkVzVsTW5GUmMyOVRWamhvTDFCV1lUWnNUVE5VVVhSdlFsWlZRbTF4VjBad1MwWXdlWGRpUzNGb1NIbHVOSFEzVmxWblRUbG5aaXR3WjJkdVVHcHpaMVpCWkM5dmRVWkNWMGRTYkdabWRTdGhhMDlTVkVSdmIzRndVa3BaVTJkdFZWRkZORFZtUVV4UWJ6UkZWMXB3U1RSdk9Vd3JWVWQwU0cxTVZtSlpVelZ2U2tkQ1IyVlVTVlZ3YjIxUmJ5dFBhR2RUTlZsNE4wc3dZV05ZY1RScE1qVnhUVVpDUlN0cVZHeHpNazFYUkVsSk1tMXFibWx1ZUdwUk0zUk9RVWRvVGt0dFZXRjBaMWg1UjFrclExSnNhM0ZGWnpFeFpFUkdZMmg1VTJsalZUUndhalJaYzAwcmJUQktXbkl4VTBOcWRVTk5NRlZaWVUxdFdtcFpOamxTUldwTVNscEZUMHRQY0RGMGNXTlRVVEZMY1dORmMzaHdiRzlaU2tGTmFXaG9ibGxWTVhaeFNFaHhjVXBoZVc1YWFWSk5kbEpCVkVkalFtSjBiVzF5VVZZeFdVcHZaRVIwVmxGSWFsRlpjekJPYlRKT1FYQkRjU3RJUWxsdmFrNDRkM2RxVVhGTVlXZEdhRTQ1VTBablZFVlBURlphWkdwSVNtMUNhVTlvUW1kalRVUlZiSGRIYld0SlFtTkphWGRWUTBoMVEySXdTbTFEUVZWeFJXZE5jVk56UVZoWmMxQkhTVWM0UVRsVWN5dEZhelpEWjI1SFNITXhjRWswUlVSaFJFRXdiMEV3ZFZjeGNpdExLMGRLTjFOSmNVUlBkRTlvTjBKVGVHNVBhM1JGWjJsdk16WlhlbmhCVVRKb1kwMUZUVUpHYjI1WGRFRTBkREI0TURoWVdqbHhhbmR4Y25CeVNGZE9iazV5SzNkWk1qa3daVFpPZW1Gc2JEZFlXRmMzZHpJd2NYRjRRa0V3Tm5Sb2JtbDVZVUZhUkRCa1EzbFdRbFJGU1ZGMGRVMXVUV1ZFZDJsWmExazBXWFZ4UjNOTFRtMU9SbE5JUW5KTE5FRllha2t6TVdzM1IwRk5WWGxJUlRBelpWTndUMFJYTlZoc09HSjBaMHAwZEVwbVdsRlJUakJuTWtkaE5ETldNamRXVTJwRldFTlRObHBZZUZSS2MxSnJWRmxWTUc5RE5sbGpWa05zYlVaVGFsZHdUek5KWnpadllXbG9TV0l6UjIxeFExSTBhRUY1Tkd4R1RGcDVXbUZYVVVGeFF6VmlRWFl6WjFWT1JUQk1ZVVJoVG05MlNWVkVWVGxDZUVWUFFsSnFVWGh1ZFhwRFIyMVNZV0ZGUlVkVE1XOWphbGw1UjBSbVQxRlNjVTgyZWtKaFF6Qm1kRVozUVdkNFduVnVVbEpvYjBGNmRFUnJNMHRLVlhNM2FYQlBXbkJIWkZkRGVVZEtXR3BUTkhWamIzWjJjRlpvZWtocUswUTBjM0YyVG10MVVFeG9aRFJCWW5sSEszTllZM04wWm05VlRtODJlWHBFVDFwcVRtUmlRMGM0V1N0T01XNWlZMkkwUWxNeGJYVkJTRmhwTmsxd2FsbG5WSEZ5WlUxU1IwcHJlbVZpYm1JeGRYbDJXVGxpYVdGUE5UTnRUakZSWldwbGMyVlVWVzl1TUV4MWRuRlVkRlIxVkc1UlJtSnNNalpVU0VZd1UwaHphMDh2WkdaWll5OXpWM2cwTVdkaVYxbHZNamxtU21WSFVtbFZTRFZJTDBVMk5raGtOMGhhYTBSQlIzZG5hSFFyVFV0YVZVeDJkVkl5TDBsc1lqZEJXbEIzVlROaE1WZHpkRE13VG5SdE1EQkRTVUZPUVVwSVRtWkJMM2sxWWpFNVZVYzVkbFpqWW5WbmNYZGlURGR3YW5GWWJUQlZXVzk2ZFV0bE1GbHZNamRDYmt0cU5DOWxZalZXVEZodEszWkxSa0ZVTTNRM1lsTXhLMk5xVUhWUmVrMTZXRFphTHpkR1JDOHhjbGMzVGlzM1lXUlhSek14VDBWV09VUk1ORkJNYzBOa1drRjRaMGMzZW1STVowNWtWVVJ6WW5SVWRreE1jMU56WW1OWFRWTm9hV1I1UWpKcWJESk1NazV6ZFRGU01uaGxOVVJ0UjFWWWVqZG1VRXN6WVdKTFdGbG1XVTk0UXpkUk1reHpibXB6ZFZsMVpWWlFaRGxhV1ZVNFp6VXJhMUpNU0dOSlRtTTFUV1JYYVVFMWNVZFlXa3R5VEVaTVpITlNLMVZvYWtseFJVc3ZkVzF3Y1dWdWNIVnJTRVJvZVZsNFJHWlRaVFJDSzBGUE5XbzVUeTlGVjNwWlUyRnJlbmxuUlhNdlRVUnNTbkJISzJWd1l5dEVkVGxyUlhkclRHMXNkV3A0V21sNk9FeFVZMk12UXk5bWRUVm9UVzVHT0RaVU1WRTVLMmhJZEhaWWNVMWhVbkpEUVhBeVRVc3hZVFo2TUhKbk5TdDVaaTkyVVc1WGNHbGpka2MxYVZGemIwVkVkVEpIWkN0RVlTczBSR053TVNzMU5FUnpXbkF3V2xOUFZVRXJOWGxWT0dFMFprWXpWblZYVG1rdmIyRTFiV2x0TjJGUWJqbDZWM051T1hrNFlscFBZbmg2TUdaeFV6RlJPVWR4Y21walEyZGhWRk15TTNWRGVYRnROemhGWkdJcmFGa3dURGt6VXpOVk5qZFBOMk4wYm5SNlpuTjFNMnNyVUZwUE1WRlpTMkVyUmprMVExRkpaVUpyYUdoaE1YbHViMU5sUzFkNk1UVnJhMUV2TVVwb1EzaDNha0o0Umk5UFpqWXZlRnAwU0V0WGQzQTBXR05uWm5CaFkxRlFkMVpXWmtoaVEyMTJaeTk0VkN0NWNYSTBTM2R3WWpSbVVHdEZUMHQyY1hOeUwySnBlQzlXZGtZdlpGaFlLMmxLT0dwNGVFWXZWRkpIYmpWbVp6bExUamhhVm1ZMk1XWXhWeXRqTUhJdk1YaFlOWE16VEN0ME5rWTVlbWwyT0RsV1dHeGxOME4zUmlzMGJuVjRTQzlrVDBoUWFpOHpTbTh2TDFsdU1ISTBVVFJZTDBKM09GVk1hVU5QVldNMFpTczNUMUF2TjIxRmJua3dPRVpsTkcxRGVFUXZURU5GWlZSemRIZGpRWEIwTWs1S1pXaDJhbTVGVEM5bmJEYzVVVXQyT1N0NFNHTnZMMUJPVmpoYWMwdExLMGRZVVVKR00wTllTRWhRWm5KMVpVRnJMMmhtWjBacFZrNWhSbFE1V2xkRmJVcDNjVEp4SzAxSVEwWnBja2x1ZUVZemFXcHBWVFF4WTFoV2MwTm1RVUpDVUVabmNuVnRSamtyY2tsVVVGbG1NemhJYlRWQ2JrWmpkR1o0Y25CaGQyOVlWbVpIWW5OUWVqTTBabGRKUnpGWWVETldaeXR2ZG1saVZsaEhVSFkzVkZBd05uSnBNVGQxTTNkTFQzRjJSakZXTHl0bGFpOWlObkEzUWs5eFYzWTBOV2xJT0U4emIydzBkVVJ3T1hoQ0sxWXJhMGRvUzNZd05YaElLM0kyU2s5eE5WazRhUzlxVHpSR1dFZHZWM1kzYkhGT0sxQTBUVEpKY3paeWJISXpUR1pvWm1GVU9VeFhjVFZrSzBVMVdEaHhObU5PU0hGemRVZ3lWRmQxYUZoa2FHVmlNSEZtYzBzNVJtWXdVRVZCT1ZWNFV5OUlLMjVGVlVoeGQzRXpkekp2TXpZclZtWXdWM0UwZEV3dlpFbFdTSEVyU2t4RlR6bFRaVXQzWVdwMlRHUlJlREpHZURaMmFWUTFaaXR3WmtSRlprcDRVV05vVUZrNFJYVmpWRFl3YURkYVowUkpjRlZCY0hOWFFuTnFRbmRIVWs1UE5YaDVTWHAyTXpsTFV6RTBVR1JqY0RrNVlrOURjbFZhY0ZwUk1uZGtkWE13YkVoc1JXOUxXWFZyTjA1dGR5OUpRa0pCU2taYUszaDJVbHB1UzNCRmVsSm9Ubk5qT0hwVFJHaGFMekJ4T0RoeGJVZHpURWw2YUdOM09HWTNSblU1WTNabFVrWlpkamQwTmpGak1uUlRNbVIzYUZSTFozbHVhRGQyVkRsTlRsQXlUMllyY1hFeGRucG1TVlp4TlV4S1pGUXhZa1ZuTTNVMk0zRkhia2xoUnpKcllYQTJMMWR2TmpaUWMwdHFWV1psWTFaVldFRmpSMlJpVmxWWmVXazVlSEo2VVZSd05tbE9VMms1UlhKYUwyNVpOSEZyUjJ4UGNXRTVaMUYzYm5rNVNrazBibVZhUVRaUlFrWjRXbmhNY0RWeVZFMVRSblpxYUc1amFuQk9VSHBPT1dOSmFFdHZSREpUVDBoSmJFNU9ReTlaTUc0NWQyVXZVRkU0UlVSVVZVdENlRVYxZVN0T2RISlVPVEZ0YmxwMVZFbHpjM1YyTXpjNWMxbHRTbHBpWlZOUGNrdzVMM2xKWW1aWmNEQnNVMUE1VlVab09XbENSVzlQY0ZNeGJVdENhV3hMY2xGMFJ6RkNlamhCYTFONE1YcFBNMFZvTldzNFJWWkRXbk40UlN0TFNrc3ZZemgxTTA0dlpreDRMMlZMYUhaTGNqWXZPSGRXWjFnekwya3lTVE5ZVG1WbFYybzBNSFpITW5VNFIxY3hNMFpJYml0RVRXVlVWV001TWtwcVFWTmtPVUl5U1ZGRE1HNVhNVkpWYlZrM1dIYzFjRWMxUXpKQksyZEhNek5hUmtWUlNHMHllVFpIVEdnMWNtbExTSFJyUlRCcmExcGhNbWsxVnpKRU5ETnJjRmNyWnpoVE56WjNhMlZRUkVkNFpqSkViMkZQV0hjMGJVY3ZabFZPWXpCUWNHZGlSMUZVTjJZd05IVlBOMjkzUmxoMFlqTXJUek4wUkd3eE1Ib3lNMlI1SzJSSVJuWm9LMlp6Y0RGUFQwTnpiREpFZWtjMWJrRkNSRlF5TmtkdWIxZHJNWFZYYVVOak4xY3lVbWRzU25BMGJWTk1jR3hOV1hScVdrSkxXVlJWTWswM1NXeHlUR016ZWpSbk9UbFBXRmRFTW5KSVlUUjNUbmRtYldkMU4wZDJjbWxaZHpCaVFtYzNPRGsyYm5CTVkyVXZkamhCTkZKM1l6WTBTM1pLTTJ4M2MxQjBTR05tZEZCU05IcGpZMUF6VW5GelMyVXpXRGhXUTJkcFZHMUtlalZMWVhWWFkyWjRTVTFyVVVwcE1FeFZlVTFMUzFsS2EwcHJka1JvV1NzelVXZHdSM1JrWVZKME0yUXpSMVpTV0hSVlNGazFiRTVIVTBwdWRrTXZNMXBGUkRobVMwVlFla1JpTDFsSldGaFBUaXRaVVRobFJUUnplaXRHVVdSU1RFWXpMMWRWV0haelkyMW9jREYwU1ZkdGFuRTRhVlk0U0RJd1ZWbHhNR3RhWmpSWE9VOVRiMFpHYzB4R2VYcEJWR2RMUVdSeVlXVnVWMWRXV25wa05IaFdiMVpRVURaUGNVOVZPWEYxYjJGR04ycHNOREp0VWpkaGFsWm9NMVYwYWxvMVJtRnNOa1JVTlhKNVJsVk9UbGN3TVhKWk16RkxSWE54YmxscllqWk5VVkZNVjFoYVMzY3JRVmRvTjNBNVVIWmtaVGxqZGxoTVMzbHpXREZ4TkRaSEszcFJjMjFOWlRWRU5qSkVaalJHUVhaUVpXTXJaVGd4YkVFemQweFVNMkV5ZUVSTmVsWTJRMnBrVG1FM1pDOWxLM0V6ZG5CNFRtcDVOSFEwT0RkRFRtbEhUVzVZT1dwaWJtaFZUMVZ5Wm1KVGRVMVZielJFVmxBeE9FUjJRazVhVEhRMk4zaFVNM0p5Vkc1NlRYa3JRVmRKUVZGd2VWRXhOak5GY0ZaaWRFUkVTR2xGU0hJNWREbGxSRVJrYTNwME9ITkhaRlFyWmxrNGJYVXpPVEpuU2xwR00wMDBkSEo1VjFoVmJITlZhMlF5VUhWRVJVdE5WVFJRY0c1VGNVbzRVazlHTkdFNVdITndOV055VUZVNGNESkdSMFpIVG5oVFdGazVWVVpOUXpaYWRIaDVjalIxUlhSR1V6QlFkVUZWVGpadGJYUnZNMWswYldoeVdrNTZkM2xZYW5SRUx6WkJaVFptUVhvMmFEZFFUR3N3VDJocVpXSk9aREowYzBjMk4wNDNOQzlFVlcxeGIyWXhjekJxTTFaWFdYQjBjRmhRYzFjdlIxQnlibGhOTmpCdU9XZzJWelJ2TWtWaWFEUjVVVFZ2YVhFNFJtRjJka2czY1hsS1IxaFlaaTlyTVRCSWVWSjRUek5aYUM5dmRuVmtSbk1yTkZoS1R6SmlTVUZ1Wm5nMlpGZFZOamR6ZUhaWmNVMDVhMlpNWkRnd05tb3lVbVZNU0V4eVpHOXpLMHhJVEUxNmF6UlBaWFpsVDI1MWR6bDZaSGN4WVRWa09FMWhaQzl5ZHpSNWFIRm9TRFZLZUdGU09YRnljVlo1WkZsdldIcHNWR3hxWlZSVWFIUkJXalU1YW1GVGNqRXZTRnBJTDFNeFVraHNUM0EyWm5kdVkwa3Zaa05KY1c1WFpIRjRkV1pLYkVkbVdscGpSWE0xZGxoblUyeEdVRFpGWW5jemRtcHBVMVE1WW5ScU9GWlVPVzV0TVRKMGNXMHJNbmQ2TTA0NVRWQnlaRE5zTDJoWldVcHdZblJMYUVKbk0yUXpjVGw2ZEVoWE9YSlRkRmhWWkhGcE9EZERWRmxzTWtVM2JDdHllR1ZFUW5oRGNXUXJOMWhzZWtkUFZFSXZkR0pNZUM4MGREZEVPRU15YVhGU2VHWklaV1pwYVROTVVtSkxTMlV4UjNnelRITnpUM2sxZUdJcmEwWjRNR3h6ZUN0dFQxVXJlRmxUVlhkaFNsaEVWV2hMVFdSb1FtRjFWVVZNZGxJeVoyWmpRaXRSU0VvemFqWkNkMGhDZDJ3NGJFWjZiekZqTHk4eVpHMXVXamh0Umt3dlpIWlFNWFJRTnpCdVlXNWFiV1J1V2pKa00xb3laRzVrYjBJM0wxZE9Sek4wTms1dE0zRkxabE5YUm1oV05uVlRiMlJZY25RMkt6WnNjakZuTm5aeGFUaDJjaXRqV0RseFRtdEpMekJhSzAxYVVGaFdhRnBoTWtWbllsaEdNbkZRVmtsRGJTczRkV0pCVjNkVll6ZExibmxMUzJ0MFRHeGhXbVZ2Uldkd1prdG1NbkJUUnk5M2MySlhiVUpvS3pKclMyMHllRWhFVGpkaVEycEpTa055VkdselZYbEdXbm96Wmk5aVZuVmFWMWhtUzNGelMwWXpibkpRZVhNck9ETnhUSGt4VFdvNFdsQmFiMlZ6TjFkMmMySldNM1I2Y2podU5YQnhTamRYYkVoWE4wOVZOMjh2ZWpaNWFWZzBRblJJVFdJMFJIaENjRk5YWVZOcVZGZEVURkpNWVVGbmQzbHJPRnA0WVM5YUswczRXRmw0WW5NMVJWUlFjSEJ2U1VGTU1FRkVVVlJsYmpac1JrTXZNVFZuYjBWUk5ETmllRlJ2Tm1FNVIzQXdWeXQ2Y1ZGdlRHRm1ja2hUTVdWb1lsZE1RbTFyWWsxck1tMWhUSGxyTkhKTVF6QndhRUZZYVRrelMxQTFTR2hZVG1aV2RHcFVaVzU1TTJOWVNFeEVXa2R6ZFhKaGQydHNMMU5FV0hOV1FrZEhNMjVvZWpkSFZWVlNNbGcyTUdjd05FRm9PRXBKVUdGTlVVVlBOMVYxVldOTU4zQkphREEzTjJSalUwcHJVRU51VDBORksyMVZPREZyWml0RVRYcFZWRk5hYTBGUmEyeFhjV0ZHTVVkUmMwMVVVMjlUWkV4NVVYcDRhbEpHUWpRM1RsaFRlbVJwWXl0UWJWVnhSSGw0V1daMVkwaHRlRWs1U2s5aldHMHhPWGt4WWpVMVZUZGhVMlU0ZW5wNWJHdDZPV2wyVnpGd1pHWlJOM1l4YUhCalowcGhVM1pVVTBNdloxQmhhVzlrTjFNNWNVRmhUSFpGTVU1UVpqaFRhRGQwY0ZsQlkyOTRUV281V1ZSM1dVMUNVRU5VUkc1bGRFTTNXakpvVW05NmVEUktlamxhVFVka2JrcFJkVk5oZDNCeU1IRkdXRXhEVFRSMWVIQk1iMVZaSzA1aVl6bE1VMDF1VDB0cGFYTjNiRTB5YUVWc2NrMWpjSE4yVG1OaVJtaGpZMnRHWW5VNU1HUTBjbGhFVFdadVVuTmtXa3hUYTJ4dWMyOUhNVVV6YmtFM01TOXJPVmxVUzNsdGRFeFVTbnBNWkc5UE1WVkNZa3BoY2sxc2JFUnpVRWxYTjJWSlJsZHpaazVCT1RWb2FUQlZRbEpaY1dvMFVXbExjakJQVTNGNmN6WldSakV5VlcxS2NtaHBUV2R2YjNoSFZrWlNPVE0zVFcwM2NTdFFWblZFYWt3MGJHbFBaSGhxZHk5d2N6bFRjM2wzVG5neGQycGxNVTVDTDA1WmExZDJVMU01VnprMldVWjJORlJQUzJaSEwwRjNieTlGYm5NNFRXMTBSRVZ0ZWtFeFQyUlZVVWhGYVU4eE1IWXZNMUpZWkd4T1dFVTVObVF6VVdJck9IQkRha0p6V0VGNE1WaDRWMWgwZWpOb1pFUlFlVFpyVGpFMk5FMUNSSEJhUkZod05rTnNNVU5IVFhScFRUQXlNa2RCYm5OQldXcHNSSEJ5VlhneVRVUk1SaXN6VkVGeVdEWklkalppZFdkSGFVTk9ObVF6ZDNOc1pWRnNTRTVhTUdkS1ZVcHpRM2c0TTNOc2ExbENTMmd5UzBsc1kyaGlkbk5pWkZsVVJsbHlOM3BSUVVoTmVtOHJibnBwU0ZkQ05sQkljVGxqTDNGVFZXb3pWa1k0T0hNd2EzQm9jRmx6TTNwVGFVMXBRM2xCYVVrcmRuQXJkWHBZYm5OME1YQTNPVzF5ZW1zM09VMXhXR3hPYnpGblRXVnFUekJaUldGYWJFZG9OU3RVTmt0TmVEaFRRVWQ1VUdSc1NYWmlURXhRV2toTFRYaEJSMlkwTUhKRlVFUjRZbEZOTHpOUmVXMVdSRll2TVRKeFIxQlNNRTFZVlhSdVpuWlBPQzkwTWxCRll6aHhTMUJpUjFkNFFVWm1VRlF4Ym1wQ2FpOVJVRGRJY2pRMFkxWm5TMmhUYjA1emJteGpWRk5QT1dFNE1URm1PWGczTms1dlF6QmxkWEEwWld4T09VWlhSMlo2Wm1oU1oyaG1VRmxSU2xGNVUxTm1RM1puVTBOS1owZEVSVk5MWVRkWlVrRjFia1JaU3podlNFVk9VWEU0WVZsSVRWZDJjR2d2T1RoVUx6ZHFLM2tyZVZJMWRteEllbkJpY1dFMlZFdFBaa0pTWkVSMlJtWnpZVmwyWldGQlltOUtWVUZDTUZOcVUyYzFWbVpxTkVsUlltWTRUR3RETW1oSGJUUXdVV0p0VEVoNE0wVTFaR3hvWTFsUGNtaEhjVzE1U25CdFpXOWFOMjU1Y0RGdlVXWlFWR001UjNkc2JXcHBiVXN5WkVrMmVITmtiR2haTVNzMlFYTlRNV1pMSzNoelNuVk1Wa2w0SzJwMVN6bFlSMFE1ZGtSUWEyeHNaa0ZxZEdWNFkyeFBaM0l2UVdsQlRTOU1abE42ZEZGdmVsaHhSRkpxZWk4NVIzSk9OM2h6Y1hNMVVHY3pTMVZSTUhvelRXNWhSWEJEY2l0UVltZHVXRkV3WlRSQ1ZHUmhaa053Y0ZvdmN6bEljRE55YldwalZVeFhjblJ1UkcxcVVGcGFhR0pYTjNGcVdUQlNibE5qTVdJMmRpOWhlVTk1Y2pkaE1IVndiRGd2Wms0M05tdHhjbVV5Y2twSGNVMDVaMHhCV1ZOTlQyOUVVRkpJYnpFM016bFlRa1ZETmxNcmJrRXdSMlJ4UmpNM1R6bFpZa015ZEVOSFpYTmxhV1JJVldzeldGWkdlREp2Y1cxWFpGY3JTMnBxYWpGbGFHWXhZbmw0UzJjeVYxZGFXWFV4YlhkNVVETnlTSE50ZFZkRVlsUTBVM04wWVhsdmIzSkJka2RQV0dGNVNGSkZRelYzZEVaSU1YQnpaU3RFWlRFd05WaDVaRmhwT1habWJtTjZWMlIyU0hOR1dXaHhVams1UmtoSk9IZGxUVEZhZDBsaEsyNTRiMDFXVFd0dlVTdFVlVVJZYjBsUFZVdDRNMnRYS3preE5uVXhkMDFhWmpoR0wzUTJaVEZHYmk5cWJUTTFOemxPUTFSNVNIQmxWRkJJVFhCdVVGTk9MMkpIZUVVclFUQk9NelUxT1RsbkwyNXVhM1ZyTUZKSFoyRTNNa2x2VlcxNVFVbG1UR3RTYUhaTk0wRmpkSFZDVkRKRFkyTjNlRFEwYUhnek5IYzJTM2xEZUdSamRFeERjSEYxYW5NM2NIbERRbVp6VjA1T1VWZHVlVlpJWlRFMVMxTlRNQ3R3V21oMU9HSjVZMnhzVkZOVlkzZzRUMXAwY2tac2VUQkpURzQxTjBwNlFtMXZXSGN3UTBsMlN6WmhXa1ZoVjB4VGNXVlllVmM0V1ZOcWNFeFNVRE52TkdFd1dHWlJaMDFWUkRrMk5HTjBXRUZ5Y2tsSkwwaEVTa05VT1VRdk0yWllOemhxVlcxelNUTTRia1phTlVOMVl6bHlaRloyYmt0cFdHNUVlRnBzTTNObGJsRmFiRWRTY0dWMldqUjFMemR1WlVWSFltVlJUeXRTYWxBdlUwZzBiSHB5Y0U5c05VaEljMnB5YnpaUVJVSnVWbXRPYTBGa2JWUkhTVUp5VVVobFNHTkpUMlZUVUZnM1ZFUnFURU00VjNRNVpWUlRVR3hZZW5CUGNtSnNaMFE1V0VsWU9VMXlhVFJ5TjJsdmRqZHdaeXN5YlZGaVVEWlRUbGxvTlRkU1VIcEZaalo1UW5oUVNHOUhPRTVsVW0xb2VIWkRaV1k0TlZJMGJHVkViRGxEYldwM1kyVkdaa3REWmxJeVpYb3dRbU5tWlhWNGVYWm1Tazh5ZW5SdVdtTTRSMlZWTVV3MlZXeHlLMVpzYm1SeWNpOWFaRnBhZUVWaU1YbGFaQ3R4ZG5VMk1URjBUMWRCY25CR2FTOXZRU3N4ZWpCNE9EZHBjMkpZY0ZoalVVczFWRU5HY1N0VldWZzBlUzlXTkZoU1J5dFVkVFpNVlRCVU16WnVjbU1yTjJaVFRqRjVOaTlUUW1FMmMzSjBiR1JhVkROV01GWXpLMHh6Vmtob04wSjVhRk00TmtsMmQzSlZSRnBCWkcxSFkwUjFPRnBIWm5sYU0yNXNRbnBoYTJRNGFUZ3dSVzFwVlZZNVRuSm5SVkJCUm1jd1pGQlhabEV4UkZrMGJsUlBiblZMWjFBclZrbFBaa2RzYkVNelJ5OXplRkEwYTJkaFQwdFlZbWRwZDNKaVIxTk1hRzVFVlhkQlpVRkNMMUZTVFc4MU9URkJOa2xHWVdWMlUxZDBZemM1ZEROcVpWQlhOelZNTmpBcmFqTkhWVEpNWVRsVVl6WkxkV2RJY0hremFDdE1jVGRuVlVWeUt6QTNjQ3RqZFdOSFVHMHhOSFZLVmxWQ1dTczRTblZQZGtwdGEweEZSa1psVjJFM2REWTVUbVp2Wm0xeVdUSlhkU3RyVGxsV1ZXeDNRbTh6ZG1OMlprWldNMlJWZDFsTmVXNUtNV05rTkhOS1oxUnFRbFZyUVdveVN6ZE9jVmRpUm5ST04zVlNUWEFyY21GT1ltMUdUbGhEWmtNM01YSXJkWGhhSzJRNFNrWllOVWRtT1dwUVNGaDJZbGRwUldSeEwyVllVWFZNVTAxd05sVmpSMFo2TUd4VE1HbzNMMnR3ZUV4bU56VmFSRlZQZFV4b1pGRktjR0UzUlhaV1VIZFZOMlExV1hsUmRURkhhWFZzVjNwUEx5dERaamxZY2pkdGRsVXZjREpZZGpkaFUwMTBOMDQ0YXk4eE1TdGpaMFI1ZEdSR1ZXeHJjQzl4T1V0TWRtNHhkRGxJVjJGUGFtZHZlbkZuYUV4S1ZVNUZRVGhFUzFOTWRsVjRNMjlvWTNWS2FXRXZlWFpST0ZSdGVHcFVPVWhLTkVkRmREZHBSMVIzVGtaUlVEbFZaMmRzZUc1VFdXaHdUWHBNVEVWSGJEaHJOazU1YkRkTloxbFlhbk4wYjFwSU1GQm1XRkY0T0c1VFlVTkZUaTlWZURKRVRrd3pUVUpJWjI1RlJUSnplRkpYUWpOVGJFVnBXbGRJTVd0bmRIWXhRamhxWmpaS1VEQm1VRzVoUTNSdEswcDNXbWR0Y205RWRXMXJVMmd3Tm1waGFrRjROREZtUjFoT1ZHdGFhazFSVlhrNU9Ia3JTbVIxVGk4M1ZXMVhTM3B3Y1ZKWllsTnNVVmgyVmpoUlFXSlNiRUZRTmxscVlsVlJWbWhCYkhSTU5XTlZTakp6U2xwdk5HMXVUbWhVWTFCWVJETTRNbkJtVDI1c1VHVlpUMkZTVW5OcFVEWlliWE5pYkdGRlRXSnlUVzgxWlUxa2FYUjRXWEp6Vm01eFdtZHRhV1JHUjNOTWIwZzRORmhQYWtkTU4wZEhiSHBCWTJ3NE1FUmFNSEJNYVdSV1FUSjNibVZqYkVacVJsRmlaelI0UmtoSWRteGFUbTFWT0dRMWNrUTBNMDFUUlROTFUwTTFkbFF3VjJGVmJFc3ljSEZXY0ZJMFdqWlhiblJvVkVsSU5XTnRTbkJYYlhWVGIzRllVRkZhY21oalIzQTFaamRoY25keVlUSjBXR3gwV0RSNWNXUjJablF4V0RaeE1tOU1hWGx6Tkcwd01tcFFhRUowZWxsb1JHVllVVnAyVFhwVk5VNHdRazUxY3pSUE1XdG9SRU5uUVRoclFWTjBUMUVyWlVwUlpVTlRaQzl0VG1WalprZGpia2g1ZGs1aU5HbFFNbVJDVjJaSE9GQk9hamxGTVdWbE9UZ3JNSGhEZUZCbmMyVlRSV3N4UjFWNWVIZE5lV1JhYlVaWmVVOWxUbGxWTDI0MmJIQmFNVFZVV0d3d05uSkxLelYwWWpGd1l6TnNPV1pWZVhSa1ZYUnRlSFJ4U0VOWWNEWlRWWFU1TUZaTFpWZFdkWE5xZDJkbmNHZzJPRXRPZWxkUk9WSkxkVEpWWkRadmNrSllZalpJVjNOU04ySTJaVnB2V1dwSkszcEZUazV2UjB0VWVGRldkV2s1YUU4d1pDdFJTbVYyWTB0Mk5UaDBjazlZTVVWRVRqWlBObUZFVUdodWNYZFhZVTVyYUdwVmRYaE5ha05MV0VoamNuTkNSRFZIZVdjMk4xTnNOME0xVEZKd2FtSTFaMnRpTDJkVFNYRjZhelUxTmpFMGRuaDFZeXQwYWpWbGRuWlVVemxLWTAxVVVtMWhZa2x1Y0dvMFFqSnZaalpVYkhaUll6QnNWMDByU25oTlkyRXlWMWhGYVdwTFkxbEpka05sYzFsVWNWUm5TM1F4ZEVaWlpGaHFZMlpRVFd4MFZHVXhTa05UTW1oUlprbDRLMmw1TkRKWE1sVnVVakpWTTFSVVkwMTRLMjEwY0ZGVmRrZGxiR1JIVTJ0MU9EVmtOMFF4YzFSd1JVcDVhekV4UmxwMGFYRjJNa3BzTm1sMVJFNXFMMEV5YVZBeGJFVkhPU3RJVDFrNVNTODJLMFJrTml0V2RsSk5SMFZRWmxaNGFIVm5TbWhFVFdndk9TdHhlbWhsWTFaM01HVjFXSGxKT1RoVk9UWTJhRkJpU1ZnMVpIcFBZalJIT0c5RlFrTXpTVGhFV1hkYWVIRmlNVVZPVnk5bGFXdzRTSGQyZDJwQlJqUndhVU5aVUVKUk4xYzNjSFoxUjJ3MFZWSnNMemMyUkVoc2MzQmlObVpST0N0bVozbzFVakZNTmxjM05YQlVlWEZsWkVGSWMwRnhlRmd6Y1VrMlJsUmhkMVZhZDJkdlNEQldjMlJpZDNoRVZDOTVSelZvWVdKTUwzbFNhMWhHY2xWM05VTlZSREp6UzBsbFNIZFhlREpST1hBclVYUm5XRlIxYVVKMFNUUjBRVWR6VFd4dWJHRkpZemhwVFdzMmRERXhPSGxhZFRGeU9XazFjV0pHTDIxd1dtVmFaMXBsV0dkVVVHeDZjVzlWVVhCMU0zbDZlSGxQUVM5U1drMTRNVVpQUW5Cb2VUUmhSMU5sVW5RMWRWQmtjbVkzVDJ4d1drOW1LM1oxVjJOaVMzcGlUMjlYVWpWd2JucE9OMEp3V0dzME4wMHlXVFI2YURnd1lUTXdVR1phUlZsUlZHaHVRVGhZWjBGQ1dXTlFWa0ZJWTFjMU1rNWxUMFkxS3lzdlZEaHVTbE56TjFoMmFuVnJNMXBpVG1JeUswTTFWRGx6YURreU0yeGpkM0FyWjNZNVowVk5Tbmx6Ym14NlJXVXlRbGRRZW5GcmVFRTJPR0Z1VTB4NFoyVXZUMVpwT1dsbVFWVjBSbE5yV1VsMFJWaDNNVFZET1d0U1VFY3JiVUpPY0RsVFdFWlhXbkI1VnlzMVJIRmxURUZ6Y0RCUFVUUjRWamR6TTNobGJGTjNjbXBPY3pGT2FuWXpaVGRRYURKT04wdERiM05ZS3pkaFdHTXhjRGxwTkhZMVRURkpUWG92VEU5WVMyTjZPVEZvZFhKMlQwUjBVekpTUm1SME5VVldlVkpNVjNOeWNEaElTRWRwZUV0R2JubGpiSFJXWnl0emJsVnJURmRvU1ZsekwwRllNR0U0Y21aU1RHUkpiekJFWTJSbGNWTTFXa0pJWm1zM1JuZDNaSGMxUkdWQ1RXOW5SV2xSTW1wclFtMHpVVkl4VWxaM1VsSjZTWHBtYjBrNVV6VkNhV1V2SzFoS1UyMVRhVVJUTlZKSlIyd3lOVkZhVTJ0T1JGY3hWRVI0ZEZkTVJtbG5lV2hTVjFkd2NYRllhbUZ6UmtzclNWUTFLMjF5VHpReVVHeHFaRzVoZUdKTk1IRk1jM0FyWTFsc05VdDRZbmhHVFdJMk9HRklXSFpIVkU5dVRWaHRWVGRIYTI1WmVIUjRTV1ZXY0dsV2VrOTFaM1JzVGpOTllrczJhMUpHWmpSS1dHeFBkM2xZYUhKclVXVjZlVkZoTm5Vd2NFdFFZM0JhUTJ4YVJIRlFXVUZTU21SaE9YbDNkbTA1ZEZRdlpsTktVVlZoTjFsVGVVSXpMMGtyU0ZVeVFrZ3JkMVJsVVVrMVRUWjNZelJEZFVWS05XOXVhbkl4V0UxSFNqVnVXR2wyY1RWYU0wMHZXazUyZDJJMVFXWTRaMjVtSzBNNU4xQlFWbGQxYmpsSGR6Um1NRTVIZUhKWmVHWllNVGRpT0RoV2RHWmhWM1prYzNReVZVUTRiVmRIYkdrelIyZ3dZVzAzWTFkSVVtUmlkVUptVGpkTVNVcENUVGRXYzBOVU5EQk5aVEY1ZDFSMFREazBTbFl5YzJVd04wWnJSMHdyTW1waldtdHdlVlp1UjBjM2VGcDRhamhhVFRWTlNtOVRhbEJuT0VFelJDOWpXRVIxVURjNGRsTmxSV2hxZW0xV1UwZHRTMEZ6ZW14Q1dqVnlObUZpU0VSdWNtZGFUbVJ3YjI5cmFsQlljbmR5ZHpOSk0yRTVNMloxWkVaV1IzazVZMnBxWVVSaFJ6ZE5jVkZZVEZCU05YRXllRW8yVDJNdmFWTnBjSFV6U2xNck1FcFhPWEJXY1Zwa1p6SXpjREUxYzFOdlF5OVNkWGRMVG5sWlkwVlhNVzVEYlhWaFNuSlJiVWx4VnpKWGVqaDRlSFZZVEdWa1VuVnhUMk5ZV0hKNlZrNVJPRXhqZGtFd1JrNWhibGxOZUZrd1VqUnJiWFJVYXpkdlVYQkxPRXBPU3pVcllpOXRNMVJoYmxKeFZsUnhZMUEyWTNwbFRVaGphVzVqTVhKWmJISnhOVll5WTNwbkszcE9abFpXTkdVMlJXZ3dObEJ1V25oUE1EbHliV3h1YUVJMU5scHdjbkZ5UldKTFQyZHpORVp6V1hodGMxTmpVM0pCVkhGVU5HNW9TVkJUYXpCd1FqUk1aV3MwVEZCaWN6VklPRGwxWm1keVQyTklZbXMxZW5WdlF6YzFkelZQVlRVMlF6RTFObVozZHpVdlVUZ3JXVlU0WlU5bVNFOTJUVGRtU25OdU5IQlZWRkF2VDNkQ2RVbENja2xUWTNkbEsycFFabElyZEVsS2RtOVFaVlJDUnpaYWJuRkZXWGRtVWlzdmMwTlZRaXQ2Ym1vMVNTdGxhbUo2YTFGcE1FbDZhazVpUjNGaFZsUnZaR05GWXpaeWR6SmpUbE13TDBoNVExQnZRelpqVkdKaGVWQk9ZVzk0ZFRoQ1dGcHFjRkZ4V21keVRWbHdSMFZIYlN0SU5HNTROWE5RTjBWcVNucFZUVU0xUVUxQ1FuRlZSMWRJV1hkM1MydFJhbWxIYmtGeFZHaFhUMFpTUW1sTlVHdHpSM2w1U0ZacGNrVkJkbFp6V1VzeGQxaFpaRVJJYm1wclVuRjVVbUp0ZDJweFRuaHVhMUJUTUhwcmFFUnlSakpHVHpKWlFqZGtSM2xDZUVFME1XRnVXV1pRVVdSV05EbHpSRUZRVVVkbFkyUXpXbEpDV1VGcWRGZGpWREpxVUd4dVJHUnRXbk5LYUdwWWVWTnFjMnh5ZUVONFdtOXlabWhuVERoVGJGVkpRVTEyYkVSWWJpdENTalE1UjNsQmJHTk1PWEJqVUVOV09GWjRSQ3RYTkdwSVkwTXpaRlZCYmpGRFluZEpkRTVzYlRoblRHMHpRMmd4ZVhNck9GSnBOREJSY1RKb1V6WlpVRGxoWTI1T1VsVjFSRzlMVFhwTFMwVnRabXN5TVhaallXVldXbXB0ZW1KRVNHUnpXR05pUm5seEx6QnFXbmxWYkVKNEszWlNNRXhtZVRKRVRIRm1WbUZ2VEZKMFRuUXhUVE41WW01Uk1pOUZSVXRDY205a1dVdDBNVXMzUzBKRVJHSnFkbVJSYjJFMlFWZFVORzUwYjFCSVUwVXJWRmhCZGtkelRVcHlSMmhWZEVWd01uZFRPRUZqT1djcmJIaGtja2gxUjB4a2RWSldXamR0WW5KSWJub3daM041YzJkdlZFdFNNM1ZrZVVSaVpucHpZbkZrY25OSlZXcEZSR0p1VGtoSllua3labWhLUkhWM1VEWlJjMHROTm14bGEwdERWSGd6UlVKUE1Xa3dSamxpYkZwSVZtMXdaRlJyVWtsVVNGSnpWR0V3ZEV4a2JtcHVXa3hWUlhaeVJIZE1lRFJ4WW5OemNXNXdNV0pYUm1Wak5UUkxVVmg2YkRCbVkzcDVObk5CV0dwdlUwVllSMjA1YjBOUFRYaE1SR3c1UVU5VGVVY3paa2xLTjJodGNrSm5SM1p2T1ZKRVJXNDNWbTF0YTFKNGVHbFNOM0Z3TkZoNlV6SmlNV0ZDYmk5NFVIZE5VSE5ZY3pkeGRXOXVWalJ4TVdaV1RqSTNNVTlRU3pKa1FuWkNaa2t3VURCRmRHRkxMMHhOV214UU0yRkpibWxIY0hkU1RIQTRZMlJEVFRSbWJreENSMmRzZVVnME9EWm9Sbk0xZG1OeFprTkxRek5RVUhOT2FuRmpPVWxMYzJ4M1JrTmxNRFY0UmxKNk5XVkVMMFZZYUM5dVNYSTNlWFZLZW5oeFdVWldVM0p0T0N0Mk1ubEVZVVUyTDFrNVRVbE5aakZ0WTBobGRtSnRaVVZhT0hGWVJ6QjROazk1YWxvMFNVbDRXR1ZNVkM5VU5VVTBjR2RZV1VKM1F6SlNRMUZqTmpCU2NERk1Na2QxYVd4clEyVlpjR1pxWlhCT1RraE1RbmRoSzIxNVFsSkJjMk5PWjBOUFlqSkNSa2htU25kQ09XVjZhemhNUm5CVWVVZDJPR2N6TUdSaWNIQlFTWEJ1YURSaFVWSTJNa0Z2TlVVMFowVmtlSFZRT0VsNGJqZFhkMEZTVjBWRFNtZHJPVzl6VEc5ME0waDJibE0wV0dOTldGWk9ZVFpyUW5ONVYxVndUbkk1WWtkNU5VdDBSVzB2WWt0cGNtRXlhSFpJVFdSdWFuRnNZVlJVYkVOU1UyTnpRVE4zV0ZsS2JGTlJVMk5yU2k5R2VWTmlPV1Z5ZGl0c1lraEpNbXhQTDBZNFpWYzNNaXM1TDBoSmNVbG1SWGRHYmtaalFucG9kMlZQZW1OMVVuTk9WVmRhYVVFeFdUZEdWakZ0UVd3MVEwOTRVRVZGU2tOUlRTOXBTRFYyTHpSa1VIaFRMemxoWW1zdkx6UnRaMk16YVdWSlVIQjFTMEp0Y1VodGIzRm5jbVZoY0VSWVZWVkVTRGRUVVV4bFNqRjFWVWhyVGxZdlExVmxSVmx2TURoelJYazJLMHh6ZERjMFVYTk1TRGhzWlVvdldXczVkakJ0TkM5b2JXNXZNRlJSTkdsbmRsTkdjblpoV0ZwNGVHb3ZTSEIyZEc1RVl6SmxVRlJVVEhZNGNVMVdUbXBwUm0xNVYyMXFiak5sVTJsVkwxbEVabFIxU2tsRlprUkNSMUk0YVZReVFYbHFhbGhxUlhJMVltRkxiMlkyVEVGMlRGUkZkSEJyUXk5eFRFVTFkRkpwWXpsVmVuaHBWM2hTVVROUWNUVkdMMVJCVms5TlRXRkxPSFJVWTIxNGJXaE5VMWRvWWpsellUUjZPV2hYVnpCblZsTjNZV0p3UW1nMGEzaHJkR1ZOVGxKTGNsVlZNbTFUYm10emREbGpVMnhLUjFwWldtZGpjbmxzTW5KRWEwVlZWMWN5Y0hoUGFqUnNaVlpPVXk5UlZ6WkRSWGhFTlRSbVRtazBiMU5rWWxveVRDdFljekJwTmpBNFduTndLM0JSZW1kdFZqSkljelJ5TW10clFtcHBSMHhEYURJdlRISlBOaTgzZVU1S2F6ZGtZM1U0WWt3NWJDOUhaaTlHTjNkalIzaEtlRzFQWkVJMVNuWkhkMEpqUWxOSk9HMUJaWGQyVmpnd0sycHdOazVXWkRSbllXaGlNWGxrTkhScE1Wa3laVXgxZVZkaFUxTkROV0pQU0c5YUwwcEtPRlpSZUhOTFF6TktlRVZJV2xSU1psQk1PV3BXTlhCeGFXWlNOeko0VmxkdE15OHZPVGN2V0VSak1HUk5hblkxS3pGWlVpOXlXVU5xWVZoU1Mwa3JkRTFhU1doSVNEWm5RbkpXTlRBMFltWk1VMU12Y210aU1DOXdhakY2WXpOaWVrUXpjRGt5TkZSMk5HSjJTekZVZG14dlpsTXpaREI2WXpkT1N5OVFRbloxYlhWWk4wODNLMEZsWmt3MEwycHhVMlIxTlcxSEwwcFdZbFZHTkcweVEwRXpXRGRUVjBORGVHbG5XRWhZVnpSMGVVSlNjWE56Tm5OSFJHczNUMnd2Y0ZSek1YQjVZekZ3ZUZSdWF6WkZieTlQWmxCMGVXRm1ZM0pVWTBsb0t6UjBUMjUzU21Zd2NTdDVNamRLZWxjM1NVZENNa2xUUlRKQlNEVnFOVUZYYm1oTlZGbDNZMGMwUjNaRlpucFlaek4zY2pRMGQwY3ZMMlJtZDFjMFNHUTBOMFJTYnk5U1RtZFhSbmRyUjAxWlprSkhhMmQzYWpWWFFXNTVZMUkzUjBRek1VMXpWMDR2U2tkaU1DOUlPSE5aVDFkcWFUY3lSM1JKTXl0QmJXdG1VbXB6TW14eFVubFhlSGd5UzNOV1JWUnZlalZJWVdneFZHRnFVa3cyZWtaVU1GVTVlVEU0Y2s1cFZreEVWbWxKWmpoQ2NXWldZbGwxUjI0MVFraEJNbXBqY2sxNVdqWmhRWEZrTlVWd2VUWlRaWHBZUjFGTWJHaHVlbmhyVjFWSGVrOW5Za1ZQVDB4blJUTkNUME5XVDJNd2VsVjRTRXhoSzFkdmJsaERWRVZqUVRobk5WTnFlRmRxWjBwWWRtd3hkaTk0TkVOR04wRmtha2RpZVZwTFZtTlJUR2xVVlRaNVZFWmFWMGcxVTFScVVIUmpjR0pDTTAxNk1YUTFUamcwWkhOQ2JuVnBaa0ZZV1habVRDODRWVWxOUkhFNWVWQlBVazFFV2tkWmIzcENXRUpQVld4WlVHeE9UVGczYWxBNVFrSkRiVFVyVlRaT2MzUTNOa2RzZWpobmRsTXhVU3RCUm5kdlJ6WkJRM1ptVHpSWlYzVjROMFEwU1dOSFdXbEtTa2hOWWtwcVdrZEVOMHBOYmxGQ1ZtbzRORFpuU1ZGMlFYVjJSemx5U2paWFYzQlVVa1ZUVkc1Tk0yWTJaWFF6VDJoUVVYSTVRa1p5TUhoS1V6QnpaRWRyY0U1VE1IWjRXQ3RyUXpNd01qTlBNRWRTTmpCcVFUaFVWRWs1WWk5SlNYbEVXSGhtUkhSWGExZDFTREJITldodlpURlJjemd4VVZadldIVTBkRVZCYTFaWGRuTm1Za2hDTW14YU0zbFFaRGRFYlZWR1ZscFZLM0JhY3pKaFpHeGlZbVV4U21GVU1ESmFZVWtyY1ZsNFkzbGhVRE01VjJKck5XVm1kbGx1Wm5ZckwzZGphVkZHUW5GUFJVSXlVREJCZEhkcVVrVlJjalJ1YVZkeGExUnVSV0ZqVjI0MlEwNW5RMnR3V2pCRVFpdFpaakpEVVM5eGMwSmhkVmc1YTNCQmRVSkZSRWxHU0VWWk5FaERaalpuZEVGQmJrODNOVUozV1RaR01pdFRXbmR6TkRsTWJWSXZablpzYlhkVlowWmpOVmhLU25sWVJrOUNSVko0YTA1bGIyMVlNREZRYVdjNWExbFBOMmwyUzB0Q1QzSkVhMnBQTDNWTlRsVldZblF5TlZSaFVFc3lLeTh6ZERWNWVHTlhRblZuVXpaUVUwcFRSbVJhYVRRM1RXUklSME5NTjBGeVVVZG5WVVZUVUdoNU9YYzJlVmRHWXpGelQwNUdNVE5qWVdGUFRWWXpiVWw1Y1VwSmVUSjZTV0phVm5oSGVqVlZPRVV6VUdOS01VRTVkMjgwYVVaV1dVRllUVXAyVGtwQ05HMTBhbVZIZW05UE1uUjBaRmMxYlZKdU1tTkxTbGd5ZDFRMFpURjJOVmhuUWpOeFFXVjZTU3RFWVVoRVVuY3hSSFpXV1hkQmVYaHllVUY0WkV4VFIwb3dOVTlqTjBWeFVIbzRlVU5TY1ZOVmFFbEJRVGhEYlhwdVlUVklZVGRPTlRWbFYwcEVhSGx0VDJKdFZGaExSbkJ6VlRkWk5EbFpTWGw1VVZCb1VUQTJjMDEzYzNCaE5rWkhiRmRKWkV4amJrdExXVFppWWxKNVNrNUNWRE5hY0hOU1JWRXdOVFIwUkVjM1NqQm1hbnBqYjNWTFkyY3dSM2xLYWxSUGJrYzJUbnBaTm1GWlJYVjZNbmhzV1dSRmF6VXZNR28yZFhKUVpFSkRNRzlyWWpaemNuQlRSWFpTV1hSM1FqTnlWMmRYUjB0Q2RVNDBTREJ3VnpkT1ZrSXZXSGhZYTFKa2NHcDZSSEJVVlc1S2NYWnBNR2xKZERscGRubFlRVGhtZFUxTlpVZEhWMFZtTm14MFYzZE1ZalZ1WkZWaVpYZDRlSEpWU0RCdFdWQlVNR1pHTm1aMVZHMWFiblJVUlN0RGFXOVVObTlOZGxSb1ptNVhjV05PVWpGSVlscDBSVVJrVFVWRFRUVnljMFZTTjBOMlQzcE5aM0JwU1dWQ2RXWnlhbFpIYUZWR01YbGxTMU5GUm04M2EyaEVjRTFGV1d4bFkzQjZhMmw0U2pCYVIzaEZVa2Q2VEZwRlVteHlOR1JWVW1oQ2FGaHljM052WVZOM2QyWnFPVUpSV1hoNk9VUkdhbkZtZFRoTVkzSlBMMlZtVlZZemRXUXJiV1Z0Wm5WYVlpdGlkbVpSVkZSalRqZG1ZbVptTXl0blNGY3dSVTlFVG5oUU1sRkZPRVJTWTJwbFZXZGhUV0Z5UkZsdVJHa3ZOV3BaVDBGUmRrZEJiRzFSWnpaVVNrUXZTVWsxTXpSM2QzRklXRUpPWkVZNFFtVnVZVzFZZGpGak5uRm1lWE5WZUM5YWRIWXlNVkF4TDFSbU1rVjRjMGg2UkZCeFVIUnZTRmQzWVRaMWQyUmhRblJ2UjNWTWJYaE1VMmh1VUZWdGFVdzFjbmxRVGtGdlEwNVJjVUpyZUU5S2JrbDNaRWhNZDI0NFFYRk5VbUZ6UWpOcU5tbFJOeXRTVFVRellWSlhOak14TWpOV1lXbHNRVmxMYlZrclUxWmhlRTg1ZGpOeVluTjBjVWNyWkdaTVdFRjNUVFJLWjJwT2FUTk9OVkJwTDJzeGJIQTFNMnhhWVV0cU9GQTRNRUphYTBoR2IxaGtMMUZpWTNacmFIbEhhbmR0VFdwVE1rMXVWa1l3Vm5sWVZXVTJhWEZDVnpGS05sUktXVmQzUlRsV1pHMHZZakUzZGxBek9UUnRkbm8wYjNaNmMzZERVM2hxUWt0alJqWXdkV3hDWW01Q2FqSlJTRWRFYTBKUFJuWmhNbll6TjJWMVdFaENaMloyTlROUmFGQXdXbVpWYlVGc09GQnNTbFZUV1V0Q1JtdENNR2xVUkU4MlFsQTRUMkp6YUZCWVdIQnFlamhoWTB0WGVFOHlNM0JDZWl0UWNFZGtRVUpMTXpkUGRqbHlibkYzWVdGRE5tVnhRbkJ6Um5KQlpubEZTWFpxTVZONGQxSTRWSFZ1YXpSbmNYZFBaR3gyV0VvdmVUSkNaVXBYZUVzek0zQlVlVEZFWmtvdmRWRkNkSEpLTTBoNUwwRjVUWFJPUVRsUGJrRXZlalpsYjBJdlFUbHRiMmxYWTNwQldEUnJkMGs0VFZJdmFYaDVSa3R5VWpsNGRVVlFlakJMVjNwT04xZ3hhVEl2WW5SM05DdE1SeXM0VkVoM1VWbDFVVVJFVVZWdmQzUnJhMHBwTUZSbE4wTmxSWFp6ZURaVFEzSmhkRzVEVDNSdlltaDJSR2h6ZWl0WWNUSjViR2xSYzBzM2NEUlJOMGhhVm1kWVRXZE5kRTh2UmtWb1Nqa3lWbVZUV0RkQk1rdHBSV2hoYXpGS1ZtZHVORkYxWVZaeU5ESXpTamxxV0d4Q1YxVXJRVFpzY0dsWmJIQmhWVzFJT1hSbFFVWkdhRmx0VERCMGMzbERWWGgxWW1RMFVGQm9SRVUyU25OTFYxYzNhVGRsVmpsUVVWWTFXRnAwWWxOUVRrTlhNazVhTUVwQ1luTXJhSFZLYXpobWVUQm1UM2hJTDJKRVNIRTNiakJpV0ZBMWVGWmxZbGhoZFVSelYxcFRiR0kyTVVvMmF5OTFhVEkwYVROR1ltUklPVk5ZY3paUFowbG1NalpRTkZJMWNtWlhXaTl5VEVSaVkyWTNLMmd5U214aU16SnNjMDVRU1hacFozb3pNMWRqYjJSMVFWaEtSbXBtVWtGR2RXODBOSEZqYjB0MWJERTBiMjAxTm14aloySXZiek5HYnpOMVYyWjBaM2xXYzNCdVJIQXlOR1pZYmt3MFVraFlkbk53WlhaSWNEbG1kM1o0Tm5sTGVtNXpiVVJJTDBJNVFuUnZNamdyYWpselNHeHdTVGt2V2pKMk0xSldOM1pFTWpka2RUWllMMmxQTlhnNU9VVXZTeTlxWmpWS1JtOVBTMUF3YWxCQ1RsQjRiR3gxVnpNNE9WbHVla1pxV1RsSFFsazVibkpWT1dsT01FcExTRFYxZDJNeVRERTNORVZFUm5OdlZqZHNLMUExWmxWRmQxazNSazByYVVJMFUwcHZWMUZPY0ZvMmNqTTFMelZTU0UwdmIzb3hkVGxNZFhkTlluVndWRmczT1hSRGNqWnROMmRyVG1OUU5USXpLMG8zVEM5d2QyUXdSRTk0UVZCa2JXOXpVRFJYY1ZsUlVHTlBiVWRRU1VNelZHNHdUbGxDWTA5MmJuTXhNV1ZuYW1aNE9XWm1TbVEwT0dVd2FVTTRkVWRHSzBsaWNHOUxXSHB6VnpRM1ZYQnJRVE14T1dac1FtY3JNbU5hVEc5MGNVTTFZMlpJTjBkM2RtMUhWbGRGVUc1dlptZHJjVWhxVjBneFMzaG1hRmxMYVM5a1F6VnNUM1F3WTFwNWJuVmtiV0UzSzNwRVN6TjJZMGRXWlRoMldESm1NVW92WVhrd2NqSTViM2hxYm1jeWMzVjRWMWRKZERJNE5rOXhRbWd3VDNWdVJrNWpjMWN2TW1GS1NuaFNMMEoxUWpONFIwTTVjRlJCVms1ak5rSkNSMXBCWjIxeVVsTnVaVlUyWmtsNlZFbG5OMjlUWjNZelRrZG1hbEZWVUdrd2F6Vm9UbmxKZVU4NGRqYzJaa3czTlZocGFrSjVPVTlWTm5waFV6aDJVRloyV25kQ2JYa3ZVRWxJVUdOMWQyWnNSMWR1TVZRd1ZHdFNXWE5PTkRCQll6bENkMVZHYUZnMlpscHBhR0pRV21zNFQzbzFjek4yVERsWUwzWmxjQ3N6ZGpORU9DdGlRVU5OZVVoSFZXdEdkazgyVkZWS00zUlpiazFCVDJneGRVRkJTVFZ3TUc1Nkt6ZGtaaXR5WTJWalRVSlljbmRRWTA0M1FuVldkamRYVEhWM01uRXhObFZCZFdsbFdHMW9RbXRCYWtOS2IwOUlWRzh3WkVSMVNHVjJkblIwZHpoS2QzRnZjWEZ1Y1hKa2JsZFhSRGdyWW1VeWNEVlNXR3gySzFrMlQwTmlRblEwWTJodWNUQXJRV1I1U2sxQlVqVkJVWGhQTlM5WVdVOHZabGxvWjAwcmFHTjVVaTlDVjBOak1IWk1UMWhaUTJkdlozQjRaR1YzYjFJNWFXdHFURzVhVEhSUlNGVlliMDlITnpKR04wWmhiMUI1TkRGNlJqRXZjMHRtYmxsSU0yNTRPV1JrT1RORmJpOWlVbTlvY3pCNWJ5OXBVMlZSVDA5TmVEQkVPREJZV2tkM1FrZGhaMEZIWWpjNWJYbExPRlJWYzJaQ1dFbE9OVUpTZVZkcVZHNXVXRlpKT0hjeVMySlZXRkp3YjFBNWVuTXZZMmgyZHpOeFNVcFpVR05EWWxGUldsaHVWVWh3YXpFeFYyWmtXRmxtZFRSeVRrUnhWa3hZZFVnd2VqY3JkMWt3WTFjMmIwVkhaMG9yY1hkeVpWcDNZemx1UVc4d2JYVlFVRkIzWWxJeVptNWlWbFpqWlRZeVZWZG9Sa2t2YzIxUE9UTTNjMnBwWkZsUWVVVjNObmRJT0VoVWFtNXFabUYxVTNkcFlVUmFlWEoxY0V0VFpsazJXVTFtV0ZoRWFGSXlkak5RZGtoVlpWWk9UWFJEWms1VWVtdDZXbVEzTURNNGVFdFVjR3cxT1cxelZHUlJRM1ZxV0V3NFZXZE1lRTFIUVd4UFlVUk5ibk13VmxodlVVaEJiRFpGWXl0SFFuRlFNa2h0ZWpKeEszUXljV1pOWW0xNWRXNXRVMjFMY3pOMFpHUlhUbU12YnpjM1duWTNVekYyTW5obGJsWnlMM2syY0dVclkxbFRZekpoUXpnNWFIUkNWbFpEUW1kcVlXNTNhRmhSY21rNFdIaHNhbk5LYWpWQ1FVaGtkbGRpTm1sMmVsZEhaMFlyT1ZjNGNXeDZaVEY2Tms1NFUxWnRkbGh3TVdKSWRVSjRPVGRVTDFCb2NIWTBia1J5ZVVSRVFYSlRWM2hCVWpreFpEaEViSEpqVVhGQ2EycDNVVWwwYldKMlZEVk9jelE0TDI1c01Wa3lVREUxT0U0eFpsWlhWall5YjBodFoyOUxiWGRsZUhwTlVFMW5la0ZWU0RFeVptTm9Oa1F3Tm5VMlMycHlZbEpPTjJwRGNWTlFiWGR6VEcxblduRXhNVlpYT1dSWWVHVjJZa0p0ZUZnNGQza3dXVGg2VVVvNWJHbDNaMFlyZURaeVMzUXJhRk5xSzFWSGRtRXphbXRJWTJOTE9TdDNUMmRHWldGMFEwdHdPREl4ZW1SWFQwOW9OemQ1Tm1WRWQyMWlXV1EzVVVJMUsyWkxRbkJyU2pOMFdrZFJaMFEzZW5GRVoxTnlUMWwzVEd0MVEzWnNRVlJxV1cxdmFrTllNQ3RoVlVGMlRtSlNObVZxV1RGMlJGRlhNRzFrUzJKeVIyOTBlalpHU21GNFpYcGFkMWxJYURRNFRrOUNOVmd6ZVc1ak1rWnVkVzFIV1hoNFNFaGtZbFJ2VDBwVVFqSk9UM2RwWW01TFdUWlVVWFp1UzJVNFlXSm5NMnczT0N0RFoxTnlZMHN3ZDFsQ1ozSm5UMjVaVkVoWGFrTjFlQzlIV25aellXaFZibk5SZFRJNFpUVklVMDlRWjFvd00ydGxVM05HTWpWcmRVMDBWRUp3Y1VSRkwwSTVOM1Z5WWpNNE1qWnpNWFo2VVZCdGVsSmxXalZ1V1VOc2JucDZTblpRT0dZd1VsaE9LMXB0VFhaeWNHOUhLM2RCVkZsWVYwaG1UMmhKU1RCT1VFRmhjVVJJZVdOeVVVRlVhbVpwWkVGS1QzQTRUM00wWW5sQ1ZXVnpSVGtyYUVGbldsUnZiVVJUUjBkMVZUTkJSMGd4YTNWb01UVTVVVGc1V1VZMWF6WXhiRXBwUXpKTU5YRmxibXhKZUhsUVNEVnZRMjloTlhOa2RtRTBXVk1yY0haNU1ITnhhak13V0RWSWNqQlBObmxOWkZwRVRUVm9kWFJQVEVGVVowTkRNWEZRWjNSVk1FaGxUbXBXVnpJNVlsazVkalFyTmpndmJVVTVVV3RJU0c4eGRWaEdZVVZzWTFGdk1VVnZWRmhpWjFGclN6RmpUMVpwZFdFeGFuQkJNbmRFU0UwNFRYZEtUVVpsU0VSa1ZFMVFZbFZsYWtsRlRuSTRhRTl4YVRkd0wyeHFkMGhHZGtsSGJ6TmtZMEY1Y1V0NWMxbHlWRVJSU1V0M1RFNTNabXhvT1hSc2NERkxUV1JDZG01bk5ETnlRMHRtZEcxRlJTOUJhRmh1YlZNeFkwMHpaSEpHYlRoTlpXSndabXB0U0daRU4ydzVTbEk1VFdOTU9XUkVOMjQ0V1hSUk5EQTViMUJPVlN0Qk5FZERTMnRQVUVsVWRsWjZlRGN3WlZacVNFRXljR1pDTjFCTmFsVk9VVnBGUzFGM2FEVndjWGh6YW5Sak4wdFRhMUJzY3pCMVp6Rm1RVE0zVjFGSWFWQTJTVW81TUdGNmNHTkdaVUZXWm1kWk9XZDROR0pyYTJZMVpFdGlhVVExTDBRd05tOHJla2xGUWxvME5HTlVjeXRCTlU0dk4wdFNNVU1yYlhaM00xQk5OMk5OVVU1bGVYWkRiRVpxVDBOQ2RtSmFiekpCUkhodEwxQjVlVkZJUVRaTmNqQjJaM0phYUhSVlVFNXhUV0VyZVM4MFdHNU1ZVWh1ZVdGa1EzbFRaMlJRVkdnMFpFVkRkVTluYUZwQ1dEQktPVkJ6ZUc0dmFGazBWRGQyVEVKVlNVRkRUMU41WTNONVF6bExWM0ZIYlhoTVRVSlVkVVpwU201RVFrVnhWaXRSYUN0UWRUWk9SV1pYVTJWeVNqbEZOR2xxVFRnMlJUWjZlRmxVTmsxcGMwNHlZM2hzVFU5b1dUQTVhV2QzU1Rjd2NraFFiWHBKU0ZoMVpuaFdNblZ1TVdSd1lWZE1kbG8yUmpWbWJXUllWWFJZWWt0Rk1XRnpMM2R2VDJOQlRDdFdUR2syUmtZMlUyZE5NMmxMY0ZZemFtRllSVU5NWld0Q1YyMTZhbVpPWkhKWFFXZHdTRzFFWWpCUlFqUmxRVlpVWTBJME1UWmtWV1kwUjBac1RWQk1UR3g1Tm1ScVFXVjFheXRoUWtoU2VWTjFZVGczWlV4MFVIbFpVR0YxYkhJeE9XRjFZMkZMYVVSR1JYQkRUV2hyTDBoRFpreEVlVUp1UTI0MFFVNVZMMWRVWXpKUmRYUnZia0ZtVjJ0UVJHeEtNMEpzUWxVemNGUXdXa1JyT0ZOVWVHRXlielpVY3psTlZFMTZhMFk0Tlhob1pFeHBORE5PWTJoaWJVTkpUVEZLUldwU2VFZ3ZjRlY0VDFoV01XVlliREYwV0d4dGJYY3lWVFI2WkRscGRsTmpkMjlyY2tzelRucGhkSEp6Y0hRMVlYSk9PVWhPSzNGblZ6ZzFTakU1YmxCb04yVXhPRFJ5ZWlzMFJIZ3pXVGxRTnpkRldYZGpRamdyYVc1SmRGcFlObGhGV0RGa1ZrSmtTbkJ3WlZKRlVuVmFWV1ZXTVVaMFlscElURUUxSzAxVmVFOWxibFp0WlZwdGR6RndkbXQ1Y0N0bWJGUmpMekJDVkRkck5YQkpTaTlJV1ZORUsyVXpNalZXSzJOMmVrZDRjV2RrTTNsQldHeG1TbGhLTXl0a1ZHTlFhMGd5YWxreFRsTTVSRlp3S3pGeGVpOWpMM0JCVXpkcVFqQmpXRzF4U0U5eGMyUjNibnBvZWtRMU1WWXhSMnRoTUhGSWVsUlpNa2RHUVU1WlRsbEJlRm8wY2xoRVp6VklUa2hpYkdKMmRUWTJjbmMxT0dWa00wTkJkMlpaYmtwR056WkphMFJDZHpSemFFOXpRWFJ4YTFGMVJrRmxRVFJMVkVKRWFTdEhUVTUwVFVGU1JGUTRhV0kyVnk5R2NGRkVOa050UTBVd1MxbHFOR1pCY0cxMFRVZFpVa2xxYjBOelNtOW5NRWM1VWpaVU1qSTNVelozV0VGUU5UVTNlbkJRTjB0T2RETXJSR013V0VGRVkzVXZaWFpzT0d4MldETlpXbnBZYWpWbmJrY3dlR1pKTlZVMlEwNWpkSEEwZUN0RlIydE5Sa3hsUVVKVFRtNUlZV0pyUlZCMVpYaFZSSEpMV0ZocGQyWjZNR3hLZW5WV1prdFljMk5xUVVONldDdDZOVVYyVGxvMldHaHZUMDkxVTNNMFlVZzJWbUl2WkRaNmJqSTNTRGxGUlhaWk0wcEJPVmd3TjJWTFpFdFFkRzB6UkhWWGIyOTRZaXRJU25GVFZrMURNVUZrVlVwNWRIVlVWRFJqTDFrelEwaGFVV1E0WW0xbmFGaDRPVU15ZDI5QlpFcFlWSGN3TlVnM1VIaDJNaXN2TXpCSU5VUjFTV3hLU1RNeVJWaENaRTl4VWpGeWNFODJPRVJ4Vm1OTk1HRTVXbm8wT0VNMWJtRlRWREFyZDNaWFNYWkRUVFpLWVdFd2QwYzBTRW96VmtJeGJ6VlVTMjg1ZFRKVlZYRjJiMVIxY0c0MU4wZGxjelpuYTAwNVRUaDBiWGx4Wmt0NFdsaEpWMjU0ZFVobVJ5dEZOVWRRUldsWVdFUTVObUZuZW1GRFNEYzRWQ3RHUjNKV1VYSnRRbFZqVURCTUwwcFFkemRvWW1oV04zQndMMGt2TWt0UWVVOTVhSG94TlVvNGVsVnlRWGxsY3pGSGRXWldiR0pWVEVnclVrUkhRVzlDTVhjMWRrZFhZWEkxV0U5SGFETkhTRXhNTDI5UGFpODViSFpXT0VJcmFrcHVNR2xsU25BNVpIbEdjMnd3UjBFd2NVOWtXRUpLWm1oVU9YTnJOamhxY2t4SWMwVlhUV0Y1T0hoRVIxSnBha3RGUkRKa09WcDRUMUpZTTJ0emVUWm5TbnB4ZDNBMFVVdE5lRzlDTkU5U2F6RXlVSHBvZFZsa1NFSTFLMFZYTlRBdk5XSjJkbWRWVTNaeFdHWm1TVkF5YXpWdkwwMUZZa05OVkRGUGJFbGxRMHRrU0RZNVEwSnVSakpWT1N0SkszTnZZWHA2YUc5a1NITnZaWGtySzFFemMyOUROWFV2ZVc0M1pEZE9RMVJ5ZEhSQ1R6YzJVelpGSzNscWQzRlJjalZHUVhSM1NTOVdjU3RaVEhBME5tSTBiemhPVXl0RE9VRXlkRE5FZHpZdlJFUmFiRVlyZUZWNWRuZFZjWEJUUW1WQ1psbHllSGhvVlc1blQzUjVjV2hHT0VGNGNHaFJLMk5rTHk5SmNFWnlOVTVUUWpCSU5HZGphR1oxUkRoMmJWbzNlV2c0TTBSc01IaDFiVzVETm5JdmRsaE5ialV5VlhWalprMDVWWFZxVURaalExazRaWEl5VFRVdlJrWnFWRWRETTFJM1NHeFdialoxYm5ocWRIcHRla2x2VHpOYVFUbEtjM0EyZVZkV2JtNXVibHBLWkdGdlIxQjFVWEp4VFdsemVtd3pNRmgzTm1VeU5URlZXWFZ5ZEdRMWRXazNaRnBwWjNZNWFHTlhlSFJxYVdKMllUZFdNVlo0VlZCVE9FczRUSE5DWmpkWFExQjViRXN4UzFjMk9HMDBaazgzUW1kaVFpdGpXSFV4SzFkbVYyVjVlVFl5UVVWTEwySnNSMFp3ZVZkdVdTODFPRWxOYUZSelZXcHVRalJKYzBZeE9VZHlkME5OUm5OQ2RISXlPVEYwVWxKV2VqUXlTMjFuWlc1Wk4yeGhOaXQ0UVZKdGVYaGpjMkZwYUZaNlJ6SndhMGh1Y2xKUlluaHZTamw2Ym01TlkyMXlXaXN3YW5vM1MzbFdWV04xWlM5YVdpdGhaRlJ4ZVVKR1RYRlNaRzlMWWxaVGEyOWtZVGRWSzFSNlNYSnJMMDlRU0V4dFRWaDJOWE5XVmxWV1UyOUhRblJpUldGVVFuTlBaRkpwYlRRM1FXeENWR0pzUVRSTk1rRmFMMjFxY25wTE9HMDBWbGRQVVhKT1oybzNTMUZZZVV4M2VrdHlPV1I0WmtaSlFVZ3hPSGhVYUVVMFZqQkdiV2RXV21WemJVZEVhVUV4T0ZBcmRXaDFNR3M0WTJWUFdqbEllRGh3VFZsd09FUnBSSGR2U0ZwVE5FTjJiV2xEY21ocWEzSkxOMUJUVTNjd2RrZHJjbFJ6SzBGNGNsUlVhWGhaYWxOT1NHMW1SV2xYV0RkeE4wMTVjVGN3Y0V0U05FdHlUM3BMYWs1VFZXcE1LelJOU1dZMGJraGxLMm92UjJKbWRtWmpZMlZtUWs5dmVIWkdSV3RCWldOYVVTOUZRM1UyWkVGS1p5OVJVM2xhUWxWb2RHRk5RVE5WVW5wUVNYbGtRVlUyTmxGVlFuQnNZWFZGY1ZWUE9WaERNSFZUYUZKM0wwcHFlWGxxUkhnNE5uUkxPRWd2YWpRcmVGQmpiVmd3UVVsbVdTOHhWRTk0TnpaSWMwUXlkMXBaZWpWQ2MyOWFPRkJEVmpWSGR6bDBhVEZ2V1ZOQlVIWXpaR1ZKYzBodmNYVkdLMmtyU1dJcmVpc3JSRUl6VTAxUWMyTmlURFpLT1M4dmJtNXJVV1ZHYW1GdlF6TkljbUZKVTBwb1VFOHJXVkJJVFRaamEyZFNlVTVSUzFRd2VsUTNPVTUwZFhCVlpVaG9kVkpGSzJ3NWVWQlRWMnB2ZGpWSEwzY3hOWFF3TjAxVGVFVjJXa3BhYUhCMmVYTnRkeTkxV1dSTVVUQk5hbTQ1VERrcksxRlllVFJXYVRWdFNEUk1kV0ZMTlM5cVRrbHNUazV4VkZGalZuQlJVMk41U0VKaFYySkhjMGd5TjJJeFltOXdjSGt6U0VRek0wUXhkRnBrWW1aQ05GQmlXa1IzYzNCWmMzUnZUMUpTT1VaVVVqWjJNWE5KWTI1aFQxVktXVGs0ZFVwRWFtOXRjRGhFUlU5bmNqaG1kR2xvYWxOM1VHdE1RazFZV1dFNVFXSjBXSFpRZDA0M2N6bGlWRGhoY0U5alZHTmlia00wWkRoM1YwWmFOMGRtY3pWWFJUQTVhMHBWUkdWcU4zTnVhMVZFWm5FMmMyNW1WRUZtYldFeVdrWm1NemhtYjBOS2NHVTRUazlZZUV4NVExaEZVMlp0UkVZM09XZDVOVlowTTBoRFVHb3Zjek15VFV3NGJURTNXRkJ0ZEU1TmJqVkRTVUY1Ym13NVowcDRRbTR5VG1oWVFtRkNWamwzUnpWTWQwZDFNUzkyT0N0b2NEWlNWbGhZU0d4c1dWZElhRWRWT0RrNVZsRjBMMHRJVG05bE5qVldkbVUxYXk5RmRXTnlhbEJKTWxwelluZGpiSEExVGpjMlpqaDNRWGRzV0RrMmVIbFdlREJtWkRseGFDODNUMmhrVUdaMU1HY3pialVyWWxOcE1tUm1ka2RVU25oaVRqTTNUMEkyZVRCdWJWRm9ibGh2U1RsV1JtZzVlbkIwYWsxclVtOUtOVlo1VFdSaFJrUkJWa3RDTWs5RFVteFNibVpvVjNCbmVtSm1aRlZRV0ZOVE1WVXpNMGh4Y25WS0swcDZaRU5HUm5waVUyTjZja1ZFT0hCMGMxUk5kWHB6YTNZcllXWkJSU3R3VVRCWU5UWkdSSFJZSzBJd1NpOTVWV1ZqUlRCUU0xTm1ibTFPV25WdmRreFRjR000SzBNNVpreFdNWGhDUkZabWR5OTJTM3A2TVdwUVdqRXZabVJrWkdSa09VbDFRVWxRYmtOak1FaFhRV0Y0YkdoVGFHeDRhbmxSZVM5bkswdHFVSGNyWVM4cmJYSkVjemc0ZEZkbVRHTnpMMHRoU3pZMVp6ZDFLeXR1Wm1JMU5YZEViVTA1YkRVMU5UQkJkelJhYmtseGEzZHFSbWgyVTBGMFQwRmhVWGxGZWpOUFkzcGtkMDlPVDFGcVRUZ3ZiaTlpZEdSNFYyWk9VMGxXZFZCalFucHNOM1pXWlhoU1VGSldOemRxUVRNMk5UTXZNV3h6VERNek5UZG1jSFUwZWpWemEzWlZVVVJPU0hOdk5qTXpOemRaVm5aMlZGZG1ObVZwYnpoeFZFZ3JaRGRpVjBOd1RFTlFZbnB1TTNJdlEwZHhhSGxtWlZGalJ6bG9iR3BDSzBnMGJEaHBaa05NYjBOQlpuVTVhMmwwY0doRmNWaHZVVEZwY1dOSFdIbHdiall2ZFNzNVoybGFZbTV1VlhKRmNYZFNXak5DY1RObFEwSnBlRnBDWmxWaWVXWkRUVWhCV1dKemFsQjNWVUlyUkc5WlpVUnNNRFV5YUZjNGRrbFNlRU15ZGxsUFYzZElkMGhJZW5Odk5tSk1NRGhtYlhrdk0yOUhRMGR5UlhGalVHNWtZbFJqTWpKMVZsUXZkelZLYkhrMVlqaGpTMGxXTDJzMlkxTkpReTlGZWxWNk9UaDVaSFV5WkcxVU16bElVak12VUZKWVRuSmhLMll5U2tWR2IzcG9OblZZTUdZdlVsZHliMFo1Y0U5YWVreFBjRE4wVlZkNWN6bE5RMUpPT1RaeVprdFZNMFZ0VTBwUlZXSXhRVXhtT0c4d1FXNVZNWGxKTW1kbWJIcFNUV05TYVRNM1JXaHlTV0p2WlVKTmRFbFdURXhGVTBoeFVqWTRVSFZWTUd0eVJuWmlSazlWV2xsNVNXbGxWVmhQUlVoWWVtRmxha05yTkRkNmRFVnhLMnMxTVZWRldqbENNVGhHSzNsNFJGRlVPRXMwUVZCamFVRTRURmt4VXpRelpFOTZOVUZtTlZJNFFpdHZXVzlSYTBGbWRFNHpPRlU1S3pGWlVXUmlWakpKV1dWbFRtTndRak16TlVGQmJEbFpaR3AyZW1abWJtd3ZiVWhsTHpNd2RUbE9XRGgyTTIxR1lURlNPR2RhTm1WWFZISk9VR3h1WVd4c01XVnpkMFJtZVZwTk9XRnNTWGhNYkcxalNYTldOSGRXYkRob1NYWTVWVUZqZGxCVWQwcFZkV1JDT0hWM1ZHTlFlalJST1hVNE5EUXdRMW80ZHpSU1ZVZG1lV1F5TjNkaVdWUlpjR1p0U1RaWlFWaGhSVkIwYVROS2JHYzFUbWR1VUcxMGEwOVNNWGc0Wlc1d09IZE5VRzFCVldSamJrbE9abHBDU2xsWGMzSndVa1JqWjNKVFdVbFdjMFF2UWpCRE1rRkRkMDluVDFrcmVtNHhRVzUxWjJabmVXVlNNelZLTVcxMWJYTkdaR1pQVEdGQk56UlVkMVEwVlN0R1VHaGFOblY2WW10U2FpdFJOelpVZW5ZdmFVTkdiMVJsTVhvelVpdDZaMjVPWlZOSGRYWnJVMmRHT0ZoQ1RqaGpSbE5HT0hKSWVHVklMMVExVm00elNUZFNTVUZQWkN0d2RuRXphamxKUzBSVlkyaE9PRkZOWW1aU016UTRRMGcyWW5GSGRuRlVSVTAwWVhFclFUTjRObE5tVldabFNYUTJaM1o2V2sxMGJVaDVlWEZ5YkcweFlVeENPV0YwZFhoTmRVYzVZVlpxVlZwVVJrNXJSMUJLUXpsVFZrRnRSVWdyUWtJMFFVeEpReXQ1V1VWcGIwVnlOV3h0V0V3dloyVmxRVUZPYUhsMk5razRPVlJaVkV0eFpGcFlTV3B3U1VOdU0ySlBNR3BOVlU1RWMzQndkQzlZWTBSb05IY3lURnBoVVM5TFIycGxWMngzYUN0c1JtWlFOalZNTDFOT01GSmxOM0JvZW1VMEszbFlkalV6ZVVoMVZUWk5WalptUVZSTGJrWnRjMm96ZFhSMVRFTjBjbk15TDJVMmQySnNjMnhDVmpad05tc3hiRE5rUm5wSmJEaHFka1F4YnpCdWVpOW5TVUZ5YzI5M1JEZFBkMVl5VGtSRFNuZDRZWGQyUmxwaWVVdE1PRGMwT1dSQ1kzWTNkMVJ4WkM5U05GY3pkbTVUTDI1UGFHMW9PVEYyWlhCSU5FOUNhakZqYWxGMFpUSm5SbGMyWW1aaVNqRTNjakp0TDFwMFQzWTVXRmhZTlRsWFYyeEdkRXQxYjFsWGJIcGpiamR4WjFSMlZYTTJTekJ6YlRjM2JYZHhNblE1TnpoU1JXSllSR0ZEYlV4elduZGFOUzl5UkRKelRIRnBZbXA0TDBaUGFVSXJhRmRrVWtoalRqTkZjRE5GY21aeU4wNVBOemx5VVZaa2NXWk9jbll4YkVOSVluSjFWME5zZFRNemJDOWFXRXA0WmxKVVlsbzJiVEl4U0dOMVduUTJkM0p5VERWNFZEQmxjR0pJUjBSdVZVOHpkSG8wV2tadVFXNDRURUpwT1dvclYzb3hPVmNyTWtkS1FUTlVVR1ZoT1VORlpuQXZWVUl6YjI0dk1IcG1iMkk1Um5abUszcGxZbEExYzJwemFrZzJSV1V5UVNzeVVtNDJhamRJWkRBMVQyaG5LMlZEYzFkWlVHdzVTMjRyWm5adU1tOHdZMEptWjI1QlRIYzJSM0k0VFRGVlpqRnJjVFpKT0dKS1UxaEdZM1ptVW5SSk5DdFJXSHBsZGxCNVdGWkZXRE5QUWpjMU4zWTBMM1pxY2toNU4ySm1iRUpCYUhoWGJpOTJORUpuVFRjMVZtZFVjbXR2Vm5Obk9XaElhV1ZRTjJSRGRrRnRhMmN2U3pWU1VETlhNMkpaVEhZcmMyVnFibEF3TTI5VU4ycDBVMUJSWW1SQ1VtOVlja0ZCVVVzMVkzbGhhMGRsUTFWQmNucG5RVlF3WlVKV2JXTkpjbEZwWW5vdmJYZzBjU3RxUzFwUVptZ3ZXRTVNV21SSEx5dEhMMWxJTVhwSFZqaFZUM2xwUVVSVE5WbGpTRk5CS3l0eFVDOW5ibUowVVdSelEwUkpZVlJtVjJ0RFQya3JhSEJvZDA0elZ6Qnphblp3UjNKSWRXbFBiSFpvVUZOMk5IazFibEZwTm1kbGMzaHVSWFkwV1VaM1ZEaE5WWGRvTm1ReFUwUnpSRzVOVjI1MVEyc3hMekU0VkRCRVVXaG1WblozT1RsdlUyMHplazExVUZrMldscHlTakowYTIxNFNqaEdURVpYTVZORmVtOU5PRzVyYUU4MUwwVXJUa00xVUhaa1RHMXdjVFZRY1RNeVExQlFTVWNyWW5SbU5sSnFlbGN4YmxCdU9YRkdZMHBKU214V2MwRmxjMXBuT0VkM00zZEJVV1ZvVFZoYVprSkhXV2QyYXk4NE4zVlVMM1pPYTJSU0szcDZUa2hoVUdadGRUZzRjRzlLWlROdVVGbEliSGRNUkUxdWIzWXdTRVV5VFZKTmNuZE1SRWRTY1UxalpWbE1jVUp6Ym5nMlpsWXlNWFkxVWtkMFdFa3ZOMHd5VnpJNU9GQlFUVVZVWXpkelZEY3hjREZhUldwME9EYzNlbGxpVDNwbk1FaFBPV0pqWlcxaWJGSldWVU5pYVhKQlVGVlhSbUUwYlU1U2NpdE5TVXhEUTFKTE0ySTJjVTVLUkdwd1puWjBlVFl6ZEc5NFIwaG1aVGdyUWpKU2MwNW5ZMjlTY1V4MVNtZFdlR1pTZVRsMEsyVXlPVkJHVWtSTk5EQXJUbVpyVUZCM2FtZDBVRTVoYTJnM0wxUmFTM0p1WkM5cmFsbDFXbU53YzI1TFNHbFVOVWt6U0hWVWFIbE9XbEJRTkVkUk0ydFlhMmxrU1UwMGQyOVJiRXRZVldscWJuaEJWRTgwVUdRNVQzWjRSWHBTVkZCTVRtOTJiMDFHVG5WMlNVaDNVV1ZRYVhsQlFuaHBWbk5aYWtGcFIzaEZabU5vVUZONU1HOVRSVE5NTHpGWE9EVnBSRFIwY1cxbE9EQlZOR2hJWlZZcmVuTTBSRU42TkdSaFVWVTFlR1p0TUVaR2MyZzNSelJrTVZOS056UmpWMk52V1VoeGEyRTBUVGxETm1ScU1XUktkamhDTkhSbE9XTnpVaTltZFZOWFRHTmllblJvTlRWS1VrUm5ZalpETjNJeVkycGtSMjVDVFZGTlZFRnlja05FUkVNNVFVMU5OMlZrZUVGSWVIaHNLMDVtU2tsblptMVFOVlZtU0VSemQwOUpOR1kzY2pKUFJFbFpPV0ZUZVM5NGJEVjNORm8wYTIxc0wxTTNOVXRFTkhacmNHTmphRVYyU2psVlVXeENLelp0WjNsRFZtWnNhRGgwZDBKek5YSXpSV3RyYmtwbGVXRkZWV05TWTBOclVUTjVUemhhUlZKT09VVnFZMjV0Y2t0Rk56RXJVR2xKTjAwM1FuQTRMM0JITkhWUFUwcG5iMGN5YzBnclVFYzRVRFU0UTNabmNTdHBOelJ3V2pWaFNVMXdWMDFwTVhaSk1uSjJkVGxZWlhCVlVYTktVV1p3U0RVM1JYbEljazFSTmxrcmVtMTNNWE41Ym1sUFprWk1lVGc0YkdwUGFqVlBibmc0V0RGdVNHczBZMFpDY0dRM1RHeFljVkF4U0V0a1VIRkdUMGhDZUZwTmEzUnVOV1pKZVRsNGNIRklVVkEzTW1WdlRTdHVkVFZ1VkRjMGRTOXZSa0YxZVVOMVoxWlNiR2xwUVVkM09YZGxlRkZhVGxWelkweHdPVGRDVFd4VlFYa3pRMDAxSzBWYVJERmlTWE12TTBnemEwWnRRek12WjFNMVJGVmtNVFp1YmtoTU9Ea3dSRk53ZWtacVZESTRUSGRPTkdSVmFtNDFURVZpY2xGRVQwZG5hRFlyUjBKM0wwMWhMM0pzY0VabVVrMXFUMGxMWTFsbmVraHZSbWxMT0ZwUVFsWnJSbEJxUzJZMFYwYzRkbUphZDFGVlZFZzFaREJyV1ZVMVIxSlpibWx5VmpKWVVFbFBlRVZEYzNSWWJXbHVhVlJ6Y0hsTFZERnVPSFJwVkVsSWNVUmtOREJRVURCdFdXOUdNMGt6T1ZFMGVHeEJkMjgxZUVwTU5UQXdTbWxUU1ZnNVl6RjNWMFZvVmxvNVIzQTBhak54ZG5GcGNFWjFWbVlyWVZWTksycGlSMUJKVmt4MFdVUkpWbTVRU2xoVU1FOHZTVUpITmtsTWVHMUxlRGhSVm1SQk9YWXhRVm80Wlhoa09GQjNkUzgzYVVKVFFUWmxZVlZFV1RKamVsaFpaRkJOY0dwMVkyNXVNRVZIU2pnd01tUlllbEUxWm5oM1pXeDFOemcyVlRGUE1ESlFkeXN5TTBzM2VGSXZhRGR0TjNnME4wdzFNbWQ2U1ZsR1JVaEpReTlIWmtKUU1rOHJha2hJYlV4c0sxQTRlR2R6WVhwM1pWTXJRaTh5U1ZOd1pFVXZTalZuZGtsYVltMTVLM0ZtYmtkbk1HWjRSQzlQVW00clZqYzJXa013V2poTE5rMU9TblJXWVRabWFDOUdVREpwVUdaUGFWRXZUVk5VWmt0MlNTdENibXgyS3prdmVWQnVXV012ZVVSMldsa3plWEJaTTNsYVltcFBjalZhZWpocWJIaE1SM2gzWjFSellUaFNLMHR5UWxwaGJ6VmFOV05vYVdWalZFRk5jUzlMZFhwTWMzbGtlRlZYYmk4NGFFaFVPVU5IVVdGNFJFTnhUVXRMVFc5cFEyRXdTVVphVW10VGIzSlNhSE5FVEhjMFNHVllSM2xqU2tGd0swUmpUMFJ6YjFCNWNEbFhiVmQwUm1aUmVVazJXRnBhU0hGWlRHaHJXblZLUlZOckszaE9Za0V5V0Zob2NUUkdjMFJZWmtSa1RqbFNNR1FyV25BNFUyOXpaMkp3Um5NMFRXUXdhbmdyYmtOdldrVmlNa2wwY1U5b1YyVkNkR1Z4WldKS01GUklaa3gzV2tnelNrUXdVamh6TDJ4WE5rWlFiM0ZLT1ZGRlNVUXpWRWc0ZDJSQ1NVTldkWEZ3ZEdzelYxcHhSRkl6THpWclZHMVZUa3hqY0dSR1IydFRObmhyTTBoaU9FMUdNRFJWYzNrMlZVczJWbVJLVUVKbGRVTTBRV2QwTkhka2RYTmtSMk5SZWpsRVdqZHpaR2g1ZFZKNmNGUjBTR0oxVTNkTlRqTkNXREF6TTNvMlRVdE1NVkkwWVdoMmJuazVWbk5UU2pWNEwxQkJTRGRKVmtGSVZIZFBPRU5hVUU0cmRqUXdkMk5zTTFGblVHVjVhREJEZFc5RmRGRTFORWRWY1dkRVFreDNha013WkV0U1JqWmFXVzh3ZDBSUFZ5OXpkRkJEY0hwaVVYUlBWVGhFVTBocWVYUm5Ra3AzY0RCblozZHhiM2hDUjNSWVprVlFhMEZpUlZaUGVVMVFTVTFwYW10NVlWVkdkRzh5T0VvdmFXMXdRVEJRZUVobGEzQm9TMlZHVURkd1lsbGphR05hVlVOdFlqTkJiR2RhYTFScmEyWndhMGN2UTNoU1QwbEtaMDltVUM5Sk9HTndhRWxoU21RM1VHdFJLMUJ3WnpOUmJGcFJTRGhsVUhOM01XRkpRbk5VVUhOdVUwaHpiWGRvV25veE1HZEtRamcyUjA5RGJraFNWRkJTYzNKa2F6UjZhbUZLVWxVeVJrSlhaMVl3UmxKQllqWnJXaXRzV1ZkTGVqZHhWMmcxTDFCcVZGUjVUWFJKY1ZoaFduQlRNRmRyYlhSWGVXWlhURzl5UVZReUszbHdVMlZVYkhSamFIQklWVVYwV1RCQmRqWnNRMEY2V21JM01sQkJVRWh0UlV4blEzaDFSMmxyYmxNd1pFZHdPQ3RFVG5NMFNuVmpTVFpIUVd4T1JIcE9kRzQ1ZUdSbkszaEtZMGgzWnpKcmNGRlJkMmRVWTJSV2MyNXRObGdyYUhRM1NXUm1iMWROWmxoUkx5dFRVWFp3TjFWbVNEQTJSbGg1Tm1sWGMzQkxURXR1UVdGWEwyTkZUMmRUZG01VmFrcFpOR05RVVRndlNraE5aMVpzVTJWdlVIcEZkRVppUTNnMWNVVlFiREpXWjA1b1pTOXdZMFp3T1hkck5qRk1VV2xPVlRKb1VHRk5SVWRFTms1YU0wSk5WRXN2VVVoWlFrOWxNbXRUZDNBNFJ6RlpORWt4VUZSQ05qZFljSGxDVlhWblkyZFhiblJaVWpSQmJuRTJXV3dyVW1GRFFrUjVkblJaUjJkcE0xWm9SM1EyYUVkdFJtaEhMMlp1UVRSUk9EUjZWVUUyYlZsd2RXMVBjRUVyU1dFdk1FbGxabEEyTlZOeVlWbE9OVm81VkRoSkwzSkZTMUpaTmtOSmFDODJTRFpMZEROTFlUVkJlVlpGWnpOQ2RrRk1VRkpzUlhKNlZtUlRWVEIwT0hJcmIyUndhVk5FZVhGblJXbEhTRzF1Tm1sbVMxSkVUR2RHWkM5dmFrUm9lRnBYYjJOTFptNUNXVVZxWkV0RmRXNHhlWFZyZFhjMVdVcE5TREZoYjI1d1NtMXJXa3hsU25wbE9HTmxlbmhOV1hGdWIwSnNWR00xY2k5bGRuaHdaVnBhUzAxaFlXUnRaMkZXVjNGM1RGUkpabTVHV1ZSM1VWZHJjSEZKUlVZd1UycFhTalV3U0d0WFFXVjRNeXRGUWpWWVlXWTBiMGc0TUhsQ1FqaDFUbVZVYVZoU2EyeEpZV1JTTW05bFVYaHhTREJGYVhKMmIwcGlORFJSY1ZaME1rUTJSVFIyYnpGUVJUWm9kVEJDY21oTFREVmtaSEJGYm14RGRYRlliamgyTVV0bFdpdFVVa1ZMTnpsaGNEQnBZbE5wZGxSNE9GQlJibEZUWlZScGRrUXpPR1ZxUVdwNldWQXJialZzUmpGRU5tUlJNRlFyU0VFek0yZFZabTlPWkVsTWEwcEhVazl6TkZaeFZISTFaVzVWY1RscWFYWlNlV1JsVWxkeFMxUjZVazVOUjBKSEswcFNLM2RRYWtoUFZVZ3hVekZQUmtaNFZDdElNM05OYUVKaFdsWjRlRkJDWVZoRldXdFJObGcwVTBST2RYaHVTRVJuYUZoSVZHTkZLekZJUlVKbk9GUndSREJxY25jMlVDOUNNMU5RYVRVdlVrODVaMUF3ZVdVNWJrVXJSRWRCTDNsUE1XNTVRVFpyV1ZKUVVUaEZkMjlFV1VWWlNEWkRSQ3RWUTFSTWRrUTNhaTl5T1ZOTlkyVTJRblZRUVZVNVF6QnpZM0V2Y0ZZM2RHY3dVR2sxUld4Mk9VRjFLMmRJTjIxVE9Va3JTbXBrYTJrM2FXcGFhQ3R2U25Vckx5ODFOM05JVUZjcmIyWTRTVEU0YVhwNmJEZzNTbVpEZUM5V1RFOUpXVFJaTTJjME1GQlNkMHBEU0c5UlpuRXhTa1ZNTVU4d1NXTkJXVzVrVVRBclFXOTVaVlk1WjB0cFYybzRaazFtYW14MVJVUTVMMjlyVDB0TVVrcHNSMHMxVlZkaE5UTjBPQ3RNVFhWVk1GSXpLMWd2TlUxMkwwdHlPWE4zZUhCRE1UUkVRMGhIUldObFFYUk1NV2xLUzBnd2JrRjZWR1kyZWxONGRWQmhjMEZCVDNKVVMzRXJRa3cwUWxFd1MwOVFla3hGSzNsR2J5ODJVa2NyYTI1NWRHaG9help5Wm5jeFVUZEhVQ3RHU2xONlIwVklTV000UVRjMVNuWnZXbXhVWWxZMU4xaEZkV2RsUlRRd1NXTlNjV2c1U2tRNWVtSm9VSEZQVlVaaWJVVTNORFZUUkZSb1NFaEZNWE5uZURJclowOWxWMUkwTjNsaGNHUnhVVVZIYjJaTFRqZExTa1JuWWpaSWFFdDNVM2RNYWtJemEwVkRjbEZLZVV0TFppOVFTMFZQYURjMVYwdFNXR0ptYjFONFJsUkRZVnBQYWprd2NETkpia1ZzYmtScFZWTlZlWFk0UlRCdVdXSjBRU3RITkhoMWNVRTNaVU0zUVhkc056UTFXVzFxWjBkdWEzaHhRM2hCSzNKMVJVbzJjRFIzWm5OS1VsTXllVmhGUWl0VlJqVnFjR2RuZWpscVUydFljMWhEY1d4WFRGZzJTbTVOYm14R1VFOUdiemM1VDJoSlNHNXNWVkpsZWtjclZrMVFLMXByVUN0Tk56YzRMMUV3UW1kTU0wRXliMmhwZFd3eVQwTTNUeXRKWjAwd2NsbFViVVpHUzBsT2VuWnNTa1l3UVZwbU0zRlVablZKWmtOeloxWTFRVzVsVmpaWVlYRk9aMDg1S3pSR2NrVkVhRlZ4YVRGUlIwOVZhRkIzYVZnNFRWWXZLMmQzTkVzd1JVOUVSVzR4ZUVKVmVVOVlaV0pVZWk5MVdsSjBVVGg1T0dOblJEZHBabFZuYm1sa1VXWnZVeXR3TVRoRkwweFRNVWxZYjBSWlVXcGtRV1Y1YlU4eFFqbDVSa2d3U3pCTFEySmpLMGxwVnpOak5sSlhkR1pET0RKak4xVjBTV1V4UTFSNWJUQlNlRzR4WjBaT1UyTllTMDgwVWtGQk9HWkpiV1JsU2tOeFNFWlZXR1JwY1RWRWFUSk9TMFIyWjI1cFNITnBWalJxYmtGVlpURktVbVY2ZDJKd2VqTlZiRzl6U1hSaFRWVlhNbTkyVG1wT1ozVk9jazlyVHpablpHOVpPRTRyY1VSbFdUY3ZhVUptZW01Nk5YbE5VblJWVjFJMlExYzRaM0FyZFU1R1FuVlNSVVpsT0dkbFZrZHNXRXBWWWxKa2FGSmxRMkpCUTJodVpqUk1PVk5HZUdaME16YzVkQ3RpV1hKeU9Ya3lTRTlXU1V4YVlUUTBXSGRaZDBaSVRGcHBTakpRWjJSc2N6QlNTR054U0ZOQ1FYRlpURzlpV0ZsNFZsVkJaMWRzUnpjNFpsQnRVR3RaYXpkMFVqSmpUV1o0T1ZWWlVHeDFiRVJGTlZKMWJVUkRaVWN3YTJnNVNYQk1jblp0YW5NeWFWWm9UMXBvWmsxbVVtcFBUek5oZFM5NVlXRmxVRTFRVVN0a0syWktOMEpqUkU1T2RrVnJjRmw0TDIxVksxcGxlV3BTYlhwRFVtMHdNMnR4YTJZMlNHMHJVMnBPZUhOTk5UTXhPSEowUkhoMFNYSXhVVnBzVldaQ1MyWm9hR1oxVUd0NmFrWkJiRFZHYkhKc1VDOWpXWGg1WTJaQ1dIbFJkRkZ3TlhGMVNXcE1iMkZhZUVWdlZHWlNTMU5wVVhrd2FXeE9jbEZNY0VabVluZENZVGQxV0hOUE5tZFBWRTEzSzNGRmJERk5OR0l5VkN0bVpHTTRZblZZVEdWb1NGRk5OalF3UTFwSE9GYzJORTFyY2tKMVUzTllXSHBuZEVwR1FqSnBhRlp6Y0ZSQmEzaExkbE5YVlhOcmRtdGlObWg0Ym5aNVRpOVBNVGhoY0ZNdmJWVTRhbkZDUlZGM1VtWm1la3RPUjJaTlVHWnhXa2c0TnpOUVZUVkZaV0ZSUVdaSWVucEhSSFpyTVdkc05EbHpTVXBUVjJwekwzWlNiemxuVjI5TlFXeEViSE50YWtFcmRqTjNUelZ6Wm5oRE5sUmxUbmMwTDNKUlNISlRUWGs1TUVsVVNqVnlhVVE0UzA5a1RsSkZMMEZ6UXpWR1dHOUlaVk0wTUM4clRqaHdUamd3T0c5cVFWQjZXa2RFVW5GSVpUUkZSMWRwVUM5b1VUbHVTelJNYlRKMlYyaGplbTlzWmtWaGJtdHdaVWN3ZDAxVlJWRlliVWR2VVZwV1EySXJlakpGVjNsNUwzbHBXVUZ3V1VSeGVHWXZhWGcyYm1kSlZFWjZSQzk0Y0dwcmVtNUNiekl3VG5wd2FtSjVUbFpGT1ZCbWRWVlNNWEphUkV4S2QzaHBNa0ptYkZkeWRtTXdTR3RyU2tSblpUZHdOVk5FUVZkUU5YZ3hhbWcwZFhKNGJVaDRTMU5FYUVwcFkwdGhjbFE0VlhCMFRuRlpNMkowYVhSR2NXUlhSMGc1U1ZsSkwxbFFRak42ZVc5cU5VTXZXa3RyVEVreWFGVndSV0Z5TVN0WVVURm9lV1JZY1hWS2NFWkZVa1ZtU2xnMGFuWTFhMUJvVHk5cGNtbHdibGh5ZUVac1NETlhkelowVUZKdk9VWXllbWxZVDJONWJqVTVOemwwYms4eGNHSTBZbGRNZGpoeFYyVnlNVXg1T0hGWGJFcFpkVXRsZG0wekt6ZHJURE5vYjB4c01FTllNM1U1TDB3d1ZXVlpSblptWW1wSVMwaGFjMGhoWjBrNWJqWTFlSFV4TlZwWU0za3hOREJsVkRKT2JWcHJUa2RTYTAxdFpEbEtLMmhTT0dOV1VUbHVVak5yT0hSU2JFVkRiMkZHWVRsdlNrWm5OVkJGZGtGNWVITklURnA1U0VaWldERm1TVTh5ZEZkQk5VSjFlV2RJZUM5U2NuQmhRVUptWjFkMFF6UlZlbGRwY0M5RGVUQTFiM0J6WVdGSlZEaHlXRXRQTWpFeWMyeHJWMDk1WWxsUU5rMXdhMk5ZWmxKSWRtMVFkVVEySzJoUVYzZEdXVk53ZGpGUVNXNVZNbnBzTjBOM2ExSXJTV052TlU5TFUzUnVOWGRYYkUxa1JrTkdiR0pMTDJWMlNscEVSR05PUWpGdlpWb3dkRUpEUkVJclZsWmhTMWRZYkVsNk9FRkRTVFJLWTFaVFUzQXJaek01U25SblNFNXdTeXQwUWxSMFNFRXZMM0kyUmxCTldIazBTR05XVW1nMWFtVllTVXh3VG1kUVExSnBWV041YlZVd09DODVXR0ZDVDJONlQxUjNha0l5YVhwb1JVTm1VaXRDZG1NNFJuTjJPV1pCWTNwMWJGbEhhbTB5ZVRadlRGQkNNM1JZV2pJelQyRlZNVEV4VEdsVVZ6TkxZWEppY0ZaeEwyZFlURlZyV2s1bGJuQTBiM05RY1RaeGVTdGhXVkF5ZFhCTlltTnNjSE5sY0ZkeU9WcGFTVVZ0Y1hONVdXcFRZMjFxZEZscmRtMXhXbXhhTVdSWFdtMWtVRUY0YjBobFRuaFpZVW81ZUVwQlRtOWtRMUpuVUVjek16Sk9ZbmxGUjI1WVdqUkRZbkZUYnk5V2NuSnZNbTExWWpSa1ZXeGFTMU55SzFrdmRIQlpOVXR3TTA5aE1EbDJNbkl2Y21Zdk56WXJNVGRvU2tWaFNGZHFXa2czTW1neVZrUjFaVEE1UkZsMk5GaG9TSFl3UnpoV2IzZHVhMWRSZW1GV2JsRXZhV3g0UkVGNGQwSXhhR3hhVTNCSE5VMVdNVmhoU2xKa1ZGWjJlVE16Tmpaa2VIUlVUVWhaV0d0dk0ySnRhRVpuVVZJd2VISTRVRVpFTnpCVlQwaEJNeXRWYmtGdGFUa3ZTSHBUV1haUmJpdENUbmhwVkU1WVRWQlpPV0ozWkRKVlNqRTBNMGg2WjNaSWJHWnRWVGc1Tnk5bWFVTnVUbVZuTUU0ck1rNUhVVm8yTlhjeFZGUTJXbkJTTjFreVR6azFWRTQ0YWxSV1dIVkdURXRqTm1Oc01IQlJWVzFxWjNSMGVucEdUbGM1UjNwbWNUVlNVVlo0WTFGV1JtTTVabGg2UmtRNGVWQk5RV0o1V0dkNlVWYzRUMUpaZFZNcmNtZzVjV3B6WjNScGN6VXpabFZrVVVoTFRHZElSVGQwYkZaTVZUTnNXbTUxWlhONU5EZDFPRFphUm5oMmJtRXllWEJ0ZFRGSGQyaERNMlF2Y21OcGNYQlhZbFZIVEhONk5EZDFPVGRhVlhGQ2RIRTJlVmxQT1RKTU1VSkhNVGRHWTFKRk9VSm5NRzVFTjBrelJFTmpXbXhCZVdaVWRqTjBjRmx1WkRscFRreGlhMVo2Wm1VeWRHeEtkRmh6V0dSRVpqWm1TVE5rUXk5aVMxQXpaWEZOUVRaUGRHWkdNR0pQVFhsYVprTXZiVTAyVWpkNFNHeFVVbTA1YVVnMmJHNUtLMkZGUVZod1RrVnZTbEZoZFV4VFFsQnhXbnBrSzNCd01EVkxaRFV3Wm1SVGNsVkdaRW8wY0VoUFkwVXhURTQzYjNsRmJqQjFVblJtVDJ0U1ptNU9ZbkZWVkRaUE4xSTFOa1ZVZDBWaWJVbEVWMjFVTW0xVU5YcERSbkJuT1cxNFJGSkVaMjFsVldGblVpczBRekJoUml0WWNFcHpiMnBVV0RVM1JucDZlVVl2VERONldTOW1XbXBsZHpOWFZTOUdkVFpCVGxsMk4zTkVLME12WlRoaFJFdEpaekozUmxaSWNuQk1ZbUZPV0VGcWJpOVZiakEzWjNORVdqWm9hMmMyT1RKRVZITkRZVlpRTkdWaWFGZDVhVlJNTlU5bWFGUm9PRGRFTjJWWGVrbDVURWw1VVhWS1V6UTFUVkZIZVRKb2VsZHFURUozWlRKcVRVRXZWa2xZUkhkU1RqVXlUQzh4Ym1JMmVIUXpla3B6ZUROTFEyaHNNR0pOYlVwWk4xQlhWblV4TW01VWQyUm1aM00xV1hGa2JWUlNibnBhZG5WdFNGSXpRM1pZUmtSMVdISjJXbXRrUzNkaVQySkRhVm92Um1GTmIwWlBhVXRGVkdndk0xb3ZNV1kwWjBoa2VrRldLMk01UVRBdlpYZ3JLemhGYUM5Wk9GQkZRMVI0T0dkbE1tZGpaVU5XZURscVpGUjFORzF3Y1VkSVlVcDZhVGQ2VFZRNGFWTjZRMGRKYW5sYWVWaHpZMEpNT0N0VE9ISkJMMmh3VWpCeGVYQTFjMVF3Y1Vsb05uaFhhRGxYVG5aS2VGRjBTa1JFYUZFclkxaDBibVl4VGtKWVNtUklkVGhQYTJ4aVdWaE9lbkJYVm5oVVdHZ3ZPV0pWUm5KUFNXWmhabEJRTjFaMU1uTkRjM3BOVkVzMmNVcFhWalEwT0hVM1MzTjJRVWwwUjBJdlVWZEJlRGhPUjBrd2IyMXRNWFp2VWpSek1HdHFUV1J4ZFVKVmNrWnZabnBVV2pOQllVRTVVbHB5V2tkU2FFWnBWSEpKYlZKc2MyaFplVUpxYURGdlpHSldabkJSUWk5RUsyMUtPWEJoSzJKSVdrVm9RVE5wVUVSQ1ZWQmtOVEkzWW1Wc05XSjBaVVV4YURRckwzQXhWM2RKTXk5aU15OHliaTl5TDNRdk9URnlaM2htTXpGNFZGUmhXVmQ1UlZJMlN6VkhZMHR6Unpsc2VERnRkSGhIVDJ4YWRIbHFWemxXV1cwd2FuY3ZSMmxwYmtOb1R6WkRkM05uYlZOVFFWQTRPVTkwVEVrdldqWm9RbUpFYWxCVU0xbFdjMEZ0Y1RSVlYzaGxabE5tUVdkb2JIaEJiMFZEVFZWWFF6bEtOMEpST0ZGc2NFeEtVMkpPTUcxcVowNDNNRWM1YkZscFUwb3dRekJ2TjBSWWQxRTNPR2R0VERZcmRuQjFVbE5CVlRKTVJuTTBZMlpvVkhWamVuZzFUMkZTYUZWTWJWZHlPVlpVVTFWWk1WZG5jbTlzZUU1Q1RrUkJXV1pRZWtzcldFUjJWR0Z2YXpGdE5WTXZiVWxxZHpWQ2VYRjFjVFJGWWxKNFNWcDVOelZsYTNKR2RIVTVhRWd2ZWxKT09XNXpjM3BhTW1KTWNqWTJhekJrUnpjdlJVRndjMEk1ZVV4QmVtTmxSWGxYVkZScVRIWjZORTFDZWxSM1VURkZUVzlOVlV4VGQwMUhNRE5KVUZoT1EwcGpXVVpMY0dKeU1rMWhlbFJTSzBOdWF6Vm5NRkJSTTJaM2VpODRiV2RKWVhOdU5XeE1VMHhoTmpGNFRWaEdTbU5qYkVwVFdUUlVUMW93YjA1dlVsa3JVbXR2S3poVlNEaFJRM1ZsWnpGc1ZqZERlRE42T0ZoRGNISkRWblJWUm5KT09URmxZbWhoWkUwclYxUmpZelZhVlROSVNYWjNOWFY1T0hOVGVta3lSVFUyZURSNU1WQTVUVGQxZFRsa1VGTnpPVFk0ZEUxU04zWnhNREZOUVZwWmJGUTBLMnMxUVdGUlZtdFBhblJVYUdkaWIzSTRVVGR2V21oQ1pXTnJSM0JpTTBkTVpYUXJUME00YTFwMU4zSlFTVzR4UW5Fdk5rVmFObXBETVUxNVJtOHpXVFpyTUZOd01URnFaWE5oSzNOU05UbExUbUkyUVVSWk9XTmlVVGd2TTBVeGFuSnVaak51ZWtVMk1WZFFlRGR4V2pkT1NYUXZPSGxtVkhacksxRnVSMEYyT1d0U09GUTRSbkUxTjNGclpIZDRWSEF2VDJoWVVERXlTaXRPWjJSUWVpOXdiSEJyU1M4clQyNVRaRFJyTW5sUU5ucHBkVU0wUWpJMmEzWnZSV3BSWWxwcmRFcHBabTB5YUROQ2VIWmhTVmRoY0RCSVZpOUtUUzlVV2l0cFNpOHJRVTB4YjJnMmFqWmpLMDE0VG5SaGQyUXpOVWxVY21WVk9FUXlUbXRsT0dRMldUWXpSR3M0YjNWWVdWRXlTbGxTU1M5V2VrdDNSamRLVFRkak9VdE1TWEpvZDFCVmIyMXBOR1UzVDBWMVJXSXhZV3hrVDJSUGVUSTNkVVJ1VG14c1l6UjNObVZHTjJrMVJ6WmtVMDlYT1V0emFXWnNla3RuY20xV01GTnRTazEzY0hKSGJVMWFMMGt5TTNNemNGTlVjbHA2Vm05dmJucDFTV2g2TjFaVVprcEpTMU51Ym5OaVdFeDJSVmcxTWxKdWNHRlphMG93VmtWU1VrRTRWa2xCV2toWFJWTnVjemhVVEdKVWJIaDNZbEEyTjJrMFIzbHJRVzAzWTFZME1DOVBVbGh1TW0xTk9HeHpZMjFsTWpORVNsbHNOVmhXYld4Q1VWcFRkVzlyZFU5cWJ6VlFUV05qYTNWVmQwaE1iMFFyTkd0d2VsSXJhRko2WTNaaFNqZFFTMk00Y0hkVVZDOVFXSFoxYWtrMVNXOVdhV051YkdZMk5uUjRWakJXU3pGclZGYzBlamx5V2xoUWFYaHNNRmRxV0U5b1oyTlBTSFJpWW1aU2FYcDROR1o0WlhnMmJqVTRaemRJY1VSbWVXZ3ZkVEpXVG1OWFJtTllaVXhJUm5OMVNHNUNNbW92UVhjNE1FSnVNRXc0U2pCQmRubGpSWFpzTjBGd00xazVPVTl2SzFRM2IzQktSRXhSVEZFNE9FbFBLMmRMTDJaemExUXZPRXhCVkN0NmVpOVVOeXRUTlRoUGMxWk9RMDFaUW1WRVoxSnRiMG9yZUhaMWR6ZzBhV0k1Vm1GRVJsSlFhM0JPV1cxT05VOTBWMFpUWlRCM01GazJNSG8zY21GQlJuTnRVa3RPVGxGVGFHaGtZbUZTYUVWVWNXMW9aVzVRZEZWVGRsSXJNRkJQYVZFNE0wNUJaRk5STWtkamMxQk5Va3RHTkdsdmF6SlVRbVZ0TVZvd1YyMXdXSEZKVFV4S1ZrUnNja041WkcxbmJGUTJUVXRLWmtjMVVUVkxUWFpwZUdKWGNFZFNhMHBEV1ZKcldrZFdhMXBZYjFNelFXMTFkRUpSYjFWd2QwcHdiMDVxVFRaTVEwVTBTMkZzVWpKV1MyTlJZMUY2TTBaSE9HUlpia2hWZFVodk9IWk1VMmhqVjNCT1prZGlaSHB3Tnl0MWVtdzRNSFF5ZVdGTFlTdDFlVTl6ZEU5clNuWlBZblEwVVZkR1VsSTJibVJRU0N0d01qZDBhM0ZsZWpOc1MzbEtkRGg2UzB4dVNUVTRhalpHY1VNM1MyVkpjbWQxWkVwS2RrZGxNMjlZUzBodlF6UlNhRzVEYWxKUE1XaGxjREpIVTJGNFpGRTJSalJXUjB0dVJWVndVbkkxU1dWNVJuaFBVVWhXUVhoeFUzTmxTMk5YWlc1WllYaGFkemhrUzJkUVRIZG5OVmxrV0dwNFpERlVWMVpPV1RBNWJUbFhNV0pFTXk5QlN5dEVUekJNVVRKdWVXVXhOelYyTTA1ME9Vc3pRWEUyTHpkUVIzVTVTelpCTmpRcmNsRldkRWxsVDFwMVNpczBjbXB2WkRJeGJHaGlXalpPWVZoVWNtNWpSSFJGVDFFdldHRTNWVkpSUW5Gb1YzSkpiV3BQY0RCMmFHdFRjR0pUWTNweVVsbERTV2xGU21RMFUwUXhiR3BVV1VjdlMwczNlRTlTVFd4MVRWRnpXbWw0WTBsUWIyVTRUMjVWWlV3eFQzVTVNVzFhTlRKc1p6bGxkREoxVkRGaWNtdzJlRmxFT0hSQldHRlFMMUJoUkZOWlpIWllRVXBvY2tOSFlYZHVaVFJRU3pCU01XUTJPVzlXYmpVMWJsUkpaMVYyZERsRmFITkxLMUJuT1RSMGVGWTBObWt2UkhkRFMyUnZTMGxQTWtwdFVrUnJhMmN6VEhnM01DdEtRWE5CYlc1VWFEaGtha1ozTXpCeFlraGtOa2x5ZFRNdk5qSXJNa2x0V0ZoTVNrVnVaMUp2Y3pVNU5FSnJRalpWUml0eFZrRkxTbWRhYm1ScVJqbEJVSGRQVDFWVFIyMXdiek0zUjJoMGNUTk1iV1ZqVjJkelEzcFFWMlF3UjB0d2NYVndZM1pzTml0WWRsZDFTRmh1WXpaeFFrZFdaVUpPTkZSeGJERkNaV3B6VnpOMlNuZEVNa2xoY1dFMlpFWnJOVEZGVjBWTlQyZHlkR0ZwUWtKVmRYZFJaekJJWmtSaE1Hc3dUekJUYTNCaFUwVk5aSFEyU0ZOc1EyOTZhRk5VYmtKQlpFdDNSVzl2Um1sbGNHMHdabU4xZGxoU05FbG1lVGwxTXpGNk1HSnhOWEU1WlZobFdYTnlNWFJRTkdoUlRXUklVVTFNUWpKdVNqaEdTblppT1ZablpWWmFWMEpYU0VzclR6RlNVRXNyYlhSTVlVbE5TVEZYZHpkVGJrVlRNRVp4TTFGWVFWVjFiMWN3WTBwQldrbHZiRmh5TUZaS1RFdHdXbXR0V2pKM05uWkhURU5QUkd4QlVWZERXSFYwVGtwdVVUVnNVREpWU2xSS2VtdzVZVFJ2ZW1Wd1pITjJTWFk1UlRVMFYweGFOREZhVHpsTlRuWjVjRGhKU3pKcFpuWllOekpUWkZKbFYza3ZkbkF5ZEZWeUsxbGFObXBaYUZCblJIaExTVkkxVTFGSFlsaDZhMmRGYVdNeE1VMVRObmxOWTJKdmFVaEJkM2xYUTNGcE1teFJZVUV4YUV4RmFIRXJZV2RxUzNwTmRFWlZXV1ZMVVVSRGVtaDFhVk5tTUZSemFYVktaakpEWWxaQ1MzSXZSWFJQWm1sb1JVNUlUME00VG5CTVpsUTBNMll2UWtKakszVndlVlowWVRKNk5UbGhWalV4V1ZZMVdGUnJUakZpVlRKa1pUSllaVXA0Y0RsSFIzZGtXRTl3YVZSTGMzZzJTMnBDY0ZrNFEzQnlSa3A0UW5OMmN6ZFBhWGRvUnpkS1RYRlhhMkZ5U21sdVRUVjJUa1ZQVm5sNlMyaEtlbEJhYjNsMVdua3Zha2h2TVdsc1NGbFFiemw1YzFoUlVUTlJjR1ZDTmxOcVFqVjZiRWRKZVVaSGRUbEdiV3B2UjJ0Q2JHWkJTRUV6WlZGV1NXTTVRM2QyZWsxcVFVOUhhbGhMYm1NeVNYbE5OVU5hT0VSa01uaHlPR2RYUVZCNGNuaENPWFpWYVhkcVNIcFRha2hVUVdocGJFTmlRa3RPT0RsQlZIRklkVkYxY3pkQlVITllWMmhtY1ZGcVZIZG9kakZYVVVOT1ltaHNibTlHVUZsdmFWQjJkWFZxZVdVeGJuUjBaR1I1Wm05NU9FUkliVkJaUmpRNVkxZFFkVUpKYkhsVWNIZERUbmR2VG14M1MzTlhaSGh0TVc5VVNFTlNhamd6UWtzME5VNXlRbWw1TlROM1VWZDNUMFJCY1dNeWRpOVZiME5zU1hnMlJXeE5WRXhSTDJ4dmFUVTBiRTFWV1VsS01HUklaRU5oZWtwMGVVZHpRMU5RYm10T04zTTJkWEl2Tmt4T0t6RnFkSEpHYTJOVmFXbHpaRWxTYkRCNVFYTlNhbXQzUVhGQ1FUTXdkbWhrWjBaR1NFbEllVGc1UXl0bVowRkZOVTE1WVdoVVFtbFhUVE52ZFdWM1dYUk1UamhvVDBoRmQzQjRSbTlGU0ZKU1luaDBUR1ZOWkdoQlVXTm9lVkpIY3poUGMxSlpSRWs0ZUV0NFF6ZHhSV016TVdkWFZtUjRXR3cxU2xZeU9GaHhNVzVYTldsM2IyTk1ZakpqYkcxaGVsVjVhamRhUzBKSFJXdGpTMVZqVFdWYWVXNUZiVVp5ZEZGRFdWTnZkVEJJUWxabloxVTVlaXRMWjNSTmFUZFRTRzEyUTAxYWMzRlZWazFHZEZwT2RtNWxXbTlNSzFaNlZXVmlOR1ZJVG5OWVJuZHpUWHByY1VoTFYzUnlZVmRzWWxoUWFESkxhVVZsU1hOc1dIQlNlalYxYURVM1JsZG5OR3BLVDNoWmVUZEZPRUZ6VTA5a1MyNUZiVVJMUml0aVRrUm5PRFowVkdkdFNrcHlaRlZpYm1kUU1sRkJaMnRrU1dsRk5UZFdaRk14YW5GRVJXcEdRMlF3TWxkRGEzbEZTMFZMUVVOeWRscHNWelV5V1M5bFFVSm1WR3ROZWpSU05FTjNUbEJwTDA5UFZYRjZhM3BZU21OU1IxZENUM0ppYlVwRFpFaEtZMk5xV1RseldteFJhMDByY1hOMGNrOXBTV2N3UjNWSFJtUmxkR2s0TUdNemMzSndUV1pwTDBvMFEweEpTRXBIV1dWSWVTOUxTekJoYWxKdFpVTjBjazlTY2xwbkwwOXdTbE41WTJkWlVVdEZZVWx5V0ZCMVRuTkJka1ZwUkZsc1NVTlVTVkIyUTJGT2NrTlRhR3BpU25saFdHa3dhekE0ZUU1U1REZDVkM0E0TWxwYWNrWjBWa1JVWjAxb2NXbHVWVFZrVlhGeU1GVkRNMFpuYW1Wd1VHUkJUVEZTWVRsT2EwOXlla2hLYkhCb2MzUTFkblJNVkZWMVdETnNlakZXWXpWSWNFMDVNVzEzTTBwcEsyRldkVkZ3Y1UxVWVVd3habTlPTlVWNWNFUTRibWxzU1ZOVVdVZFZaR2xMUlcxcVJWVmhkRmx5T0ZjdmJrVm5TbkJaT1hwWFVVWlFWRmxHWlV4TmQwNDBLMEV6WjNaeFIyaDBWelVyWWxaWFkwOVVTRWRzT1ZCNU1XSlVRMjl3Ymxkb1JHRXpVR00zYVV0U1ltcHJiVEpOYzJWaFZEQkRjeXRYYTB4WU1FMXliRGgwVUdJMlRYUjVTV1JsZWxWMmFtOWxkV3RwTVV4UVdrbzJPV3BVTVhFdlUzVkhWRFk1WTJSaVNGUXdUM1ZyWVc5Tk5DdENZakp2UVROa1l6bE1kRGN5VTJoWVRuRm9jbVpvTmpsV1RHOVRaRVV4Y1dKYVRFVTFZbk5rYVVkWWEweElhRzFwY3pSNWJYcG5ha3RUYjJGMldIZGFZWEJ3T1RkSFpGRk9VV2xFWmtNMkwxTlVaVTVRYjJocWVrOW5kMmwxWkVjcldVdGhkSFkzZW5sR1UzUkdZWHB0ZUVsNlUxUkdaMWQ1Y2tadlZTdFBVMjVLTnpBelVHNTROVkE0UTBOQlVrWTJkMEZCUVVGRlFVRkJRVUpCU1ZBMmJFdDBWbGgzT0RnNVVVRkVRU3RuUVVGQlFVRXhSa2syUW5kQlFVRkJSRlZoZDJJMkwyUkVLMmhuVkVWQ1ExbEJRVkZCU0VGQlNVRkJRVUZCUVVGQ05FRlhUbWRhUjBKbmRuWmlka05UVFZoNU5GY3ZSaTgzSzFsNmEwTkdSVVZDZWtoalFYcE9XVXBFU0dkQ2VtUlpSR3BIVWxwQk1HWjRUakp4VG1Kak9UQldNaTlpVG5RdllYUnRNMkowYlRFNVlUbHpUVEZuTjFoMGJ6RlVlV0Z1YTNwcmRYRkdPVWRZTlVwbUwzWm1aR1JRYkZRek9FY3lhbE5LVDNkRmEzRjRUVzV4ZDBSVmNsRnFRbGQ0VEdkaGVFVlJjakZ0Ym10a1luTkRkamx1YTFoS2VVVklabEpwVGxCSWVVcGxNMFUwVm10RFRYUTRNek5WV1hOSE1UUnpaRzA0U1VGdGRFTlFaWEpVV2pNM1JVRXhjMHBqVkVobFQwVndRM2xxY1RKNGRYVldVVk5UU2pkVlNWcENOWGg1VEVwVGFYZzNWMnd3TkVvMVozSjZkR3BXWVhsTVRtUkliRmRtWkVKaVRuWjFUMDVOSzBzMlVGVTVaemRpZFd4RWFrMDVhbU5oTTFWWmFuZFpNREl6TkV0bWFsaFlkMGhUTldZM2FGaHlTbkpHYld4bmFGbFlabEIyYjJ4c09YbGlXa2hzY2xoYU4zTm9NVzVFT0RWVmFqVmlRMXB2U2s0M1NESlphVkZvT1dodWREVklNeXRUYW5OcFVtMVpSa3Q2TTNKdU1GQlJjWFJ0U2swMEt6SnFSVGRaZUZJeWQyRTFORXN6YUc0eWRFTk5hMmxxTmpSM01YbEpZVFZNUnk5c1EzUkZLMkUxTTJ0bU4zcG5LMmQxSzFkRFYzZGtWMEpWYkdkalNFRTNkVFZ3V0RWNGFXWnZUemM0VEVSMk1tdFFNbTFaYmxsa1ZscE9OVWRpYlV0elNETlhORWt4Y3l0UllVZEZRMDltVW5aa09YZHlTbVJOTm5kWWIwbDFZemhDWTNwWmVuUjBlVnBIV1Zoc2MwaGtha0l6VGt4ak0yUjNOV3M1ZW01eVdrZzFTR3B3T1RkeGRHSjZMM3AxWWtsV2JYSkpkMVo2V1RORWRYSnNiVWxxYmpOdWVTdFNiR05IT1RaTmFWTmlZMmw2ZG1sS2NYcEVjWHBQZGs4M1IwZFJXRVJuZW1FeWJrTmFlak5HZW5ONEwxWXhaMlY0TldoRVdtbDRha281Y2tWWlJDOVFVRE0wVERZMlQwSXpNbTFUWXpZMWJsQTBibmh6YUVaR0swRXJMMmxGVGpjNVJUTkJhVFZSVUZGblowdG1NVE5VVFRoRU1ITjZTMHRaYzJObU5FUnNOazR4TTBGRWNuTk9XblZPYmpaTVltSm9TQzltWWtGcmRWSk5hbEF4WldWdWEyNVdibGgwYkZOblJHbFdXV2xJUmxrMFNtcEdhbTF6TWxVclltMVRTbXRhYnpGRVoxQnBPRnBaYmpoUU5GRTNkemt5ZWxsYVVFeDRaak5ITWs4elJsaFpkWGdyTWtFellsbFVVSE0zUkUwMU1FZDJjbGQwT0dKS0swazBOMGN6WWxadU5IWlBLMFZUTWpkaVJqbDBha2dyVkhCelR6bE1OWGR5UnpkYVkySmliR3g0TTA4dmN6ZHdLM05JWXpWMVdpdFlaa0prUkZKeFpXVkVVRE00YkdOR1lXdFpTMloyVmxscU1ITldaM0I0V1V0NFYzZE1WalJJTUZkaE5URjROV0ZOU1VWNlkySlFOM1k0UXpNMGRFdE1ZMFZwU0UxMlpXWjFSMlJQYVNzNVJDOUpiR3BJWkZCSFZERTJTSGx6YWxKcFpqWkZRV1ZoTTJOUGNqRnlUVnA0UlVKcFdFRTJOa1poZEZBMGVrVTNZa1JtTDJwalJtdEhLMlU0Ulc1a1ZGQm9ZelZSTDJaUWNXMWxTVGRNVEdOWlNGbEdUMWREZFdkRlYwSktkRk5wU0ZSWFYxWTRURFJtTWtKTmQzSnBSV3N6TW5aS01rVjRXamM0VVZZeVUzVlZNemRCWldsdFYxbG5jbTFaYWt4dGIxTkVSQ3QyUjNWWE5rRnRlREI2V0Vsc01rMDVNMFZKUm1wMGJVRmhXV2hVZWtWdGRXaGlaalJLTDNabFJERjBVMlpuSzNOTlpGUmpSbko1WldGR1NITlRjRkZuZVhCNk1tVm1iU3RqZWpVM2JrVkhZVE1yVlRWd2JqaFVhMnd2T1Rnd2FYcElWSFZYYkZOaVRWZE9MMU5RVUdKbGVFTk1jbEFyWVhGSWRXUjBRWGMwV0c5dWNrUjNPVGxRWTI0ckx6bGxhWEIxUVdORU1YTXJTRVFyV2xkUVlUaDBkU3RrY0dZeWR5ODNRMGhMUmtZclVHVkVZM2N5Y2xSaFpqRkNOaXMyV0hWdmEwbHpaRGxSVFZOSlZrazBWVU5XUVdKYVoyb3lPWFJ2ZFhGVlYyRnRlbGhRSzBaTFdtcFBZVEpMUm1SSFFXeExXbWxGYlVsamFERTRjMFlyVG5saVNUSkdjbkk0V1dSbE5XaEJkbUV5TXpKVVdFd3JSQzl1U0VsamFuZFBhalpRWTFoNVFuaE9kMDF3YlVWVVlraGFiRVZWWW1VeVdTOWFTRVJJU2k4NVFsaEtjbVl3T1RSQlUxUkNRVFpFY2s5blFVRXdUbXN5Y3prMldsZFdaV3d5WWs1ME1qZGFkREkzV25ReUwyZ3JkRzB6WWl0UFkwa3ZiR1JoYzBaR2QxRXlaMVFyYjFaUmJVSlZWMFptV1ZndmFUSTRTbTUzYTNGcE4yRkxWRzkxY21rdlpVeHFOSEZ6VldkdlUxZDJTbUZOYTI1aFdGZGFVV0phWTNSc09USlNOalpSVmpWaU0yeDVLMWMzTldabVZWRm5WVlpTVlRsR1dIVldSRzFXTlRWWWVteEROVlpJVGxaS01WUnRNVk5XTVdFelZrVTVWWEk1VWtsT1N5c3dZMWN4VURkWU4zUkNNVEZaVmpFME0xY3paRlU1TUhoUU5rVjJjbGNyYjFnMk1EaGFURWxoZVdodlYwZEhNR0pQVjA0d05ERk1hbVVyVFhwclRVOVZNblJVWVU1T1lUQXdMMWRzTmxsVVlWbHZXRzAxVWxkVmNHRnNiSFFyVjFGMFlVNHhjR1pYWVVSMGRtRXlkV0ppUkdSelRHVXpURGRWU1ZoR01HUkllSGhXYmxOUFpGbzFlR1p1U214WVVqRmtNREV4U0ROU1dUTmtVR1F3TnpOaUx6WTBiRGN4Ym5ReVpTODNNVE5RUVRnNFdIcDNVM0ozUjNJNFkySTVWMkU1YkRkNk0zWkxLemd6TkVGTE1rbEJabEZLUVVaU1ZVWkdWVUpsTUVKR00wSlJSRUZYZWtGU1RIZFZZV1ozUm1aalRqa3ZNMnBsYUVseVExUlBOVlpCTlZjdk1qaDJObXd2YzFBNVoxRkNZVzlITldkaFQwSmxUVUp4ZFVkMVRrUm5NRkJhZHl0bVJIbHBRMHBUVFU1Sk5ITnFhSGxNY1hGSlZtODBNbXBZWVZCcWIzZ3JhVmhYVDJwWkszUnFjakpKZHpOcU1XVk9MelF6TDBaSU9GaGpTbFZUUzJWdFNucFpiV3BwV0hWS1ZqUnNiWGxqU0Vwc1kyMHplVlZIY0cxaGJsWnhZakp3T0Rac1luRlVaV2RHUmxWQlkwcFRUVWhEYzBOd2MwTkVka1J2V0VGc1VFRkZkbmRWTDNCbFRIQjVaVzV5TmtGNWEybE9VMUZyU2pWUGVubGlXR3RVZGtwMk9HdExSM3BMZWs4M1RUTTRiVlJ0V0hWYVZqVlJkMnR2UlhkVmIydHpjRTVzWVZaeFZYRXljSFowVWxGWGEyTlVaRXBNVDFNMVpXdGhPVkJPTm1VeVRXNHlSMWt2UlhoR2NHazNWRzUxYms1cVIxWnRUV3QxV21wamVHZzFhSHB5V1hSMWVTOWtibEkzUm5neVNtSjFZbEJqTlZwMVNqZGpZVWMwZVhRMVZHSjVUek5zTDNWU1pVbFJhM2xKUkN0RFMwbDFTMjkyWVc5T2VIRk1XbkZMYkdGRWRqWkZOVEZFZERsQmVqbEpiVmc0VTFrcmVVcE9PR0p5TkhKbU5WTXZkMDR2YURNeVJWSjBiVUZEVlhwbmRreHZiWEkwZFdFMFRTczJVRW9yU3pWbFExaGxhbGt2YWxNdmFHVjBiVGgxVjNrMUwweHdhSEk1Wnl0SE5FRkdXV05vWjBGQlQycGFkRzB4TnpGTFVuSXhjazUwTUhZelZuUjFiV1ZpWkhVeVltUjFNbUprZG0wMFVIZGxOV0ZOTkV0cmJXeHhWamRWUzNWdllubEJSMHRuUjNGblJXWkJRa1JzYVdkSVVtZEJlRzlCTjNOQ05rVk5RVmt4TWtGeU1tZFRVR2RNVEdkTk4yOUNTRFJFV0RSRFNEWkNaaXRuT0dSQmJUWkdkREpOVG5Wbk1ETlpTSFZSWXl0cVJEbEZabEJMVlRoSll6ZzBlbmxrZG5kcWRrWmxPRlkzZURGbVNVNDRhM1lyUWpoRmJHZFJWSGRTWldoWUswWnBMek5RYUZSMVJrNXJWbmRTUzJwSmEyTnBZbmxKV25GSmVtOXRLMmxQVjBzMFZtbHlNa2xNV1hNemFVUmxRMHNyYURodVJURkhUVTFhYUhoNlowaHVTRlp0UVZwa1owSTNaMmwyUVN0aVoyVXpRekFyUWprclExUXZUWElyUW1SRFNtRkhWSE5GU3pSS01WbFJSRmhIUjJWRlNFdEpXRzFyWm5SSmRYVlpWR05TZFRSc2JqVlFkbmxMTDJ0SU1HOHljRmxvVTFOWmEyOVNSbTFuU0VaUVpVdGlPVkZRYkZGUE1WVk5WVmx3UTBjeWNVWXJZVUo1WVdnNVlXaG1aV2RqZFc5bVpXOVdPRFJJZVRaSU5qSkZTMDB4YWtRM1dFRXZVRUUzVUhjcmRuZFFibmRQTXpoUWRqaERPREZ1TVhCUGNtRmtVMHR4VG5GaGFuVXhibnB2ZFcxVFYxcFVhVGRMZVVwWmFGcE5lbEZwYlcxaGRHc3hOMjkxWmxJeUsyZHlha2Q0UjBSNlQxUnBZekZ3Tldnd2NtczVXRTF6Y1hkU01YSmFWWFJzVTA1R1JUVk9VMkV4VEZCaVFuSXlVMGRpTWtKUWMxVXZXVzV3TkhscVQwRlBZME5qTkhsYU5EbDZkek51YUM5RFNrWlRSRmhUWjJkU1NVNDVTMUJVUTAxeWVVSmllWHBTVm1NeUt6Tm9jbTVCWm5WUU9FbG5aMk5uUzI5SlFVRkxSRnAwYlROaWRHcFlTWEpxTTJKMUx5OXpZa2gxVVdKa2RtMUpUblF5YnprM04wSlFTMEpWY1VGRVIwRmFkMDFCVUhOQlRHWkJSUzlCUmpZMFNXUjNWV1puYVM5Q00xSkRZME5GYzNWSll6SlJlSE5uTkRWcGRIaEhMM0ZPY1ZWRlQyOUNaRkZhTm1oT1pHZFNOVVZQTDFGQ0syaDJWR2xzUjFwTk1uZDRSbkpCUW1VMEwweDRMMWhxVmtjMFIyUTBOMUIzYm1ablZsZzBTQzgwZWk5Sk9WRlJLMmRwTUhORlFUUkpXRmxVVFN0SlJqaFpUbFZSUjI5dVZGcEpZMkZhVmpCU2JtOXViRFZRTjNsaVUzTjVObVZWVEVWdlZuQlpkRU5MYjNWVllUSnZkWFJhWTJGeFVuWlZTeXR2TDNKWk4xZFVlVTh4V21SdlJsQlpPV1ZTVWl0bk5pOXZlUzlaYWl0NVlXaHBPVVJPYTFrMWRuaENiR0ZCZHpaQlNFWTRRVXc0UWtnNFoxbHhhRkp4WjBoSGIxaFhiMEZsV2s5b2JWRXlWMHB0VFRabFdVYzRkMWhXYUVkeWJWUllUMU54ZUZZeGFEZHlhM1pZU1N0dFJWaHpVblpaTDFkNlYyNXRablp6YURnMVQxcDNNbXAxTkdOamJUUTBjamw0WTJKbk1UTnJjblpMZG1WYUt6Z3ZTalJPWW5oMU0ycHFVRGhvV2pSUE4zZHlNMmhsTDJoT0wwazNLMDVRT0dwbU5ERXZkM1pSWWtkbldIUkJkRlZKVFd4M1dVaG5WemxuWjBKUFIyRTRSa3cwU2padlZUbFpjbFZoUmpFd1NtWnZWbXcwYVdKNFVsQnBWMlpIVmtwRkwxTktjMGRVVDJOdFFqVkZZbmxLY3pKVGJHdHVZbkJYVUZOS1RqSlVMMjA0U1VodlJFUkRRVWxCUVU1aE1tSlhkRkV5TjFwMFJFZHlZbVp3ZW1aYWJUTmlkSEV3YTNSWE0zUnViRGtyYm5sMlFXUmxVRzFqUjNVMWJUbDNUSFpuUkdab2NDOUNlQzk0TlM5d1pGRlVkV2RxWTBWSmIySkNWMDlEYkdWR1NrUkhXbGRGYVhOSkwxbFRXalJwYldWR1FrMUZjaXRDVkV0QldYRkJXbUZuUmpWblJrcG5SRU5KYWtKaWJrRmxVRUZSWmxsRGNWbENNV0ZEVkZkQlprOUJSWFZuZVRkalEyTXZSRXBRWjBRMVZVRldWVUZRVlVFME1VSnBOVU5QVG5GUVZEWkRTRFpuY2xCblZYSm5WemR2UWtnMFJHMVpORnBZTkVsTU5rOVlOVUpWY0VGcGNGSmljVkZWVjFGS1kyTnNkV053VnpodlpXeHZTMlJ4UVRseFNWUnhSVUk1ZFhCUFpYQXdiakJHT0haR1MzSkdiV0pCYVdKM1VXcGllVVUyZVdncmVWQnNSV1Z4U1hKWFVtaHJibnB3UmtSaFREa3lWMnM0YkVZMVJuQjVVRE50UjNwUFUyUTRiakJzYUZaS1RqWmhVMDFWY0Zsd2MySktZazloT1RoVlpFOXZaV1JSZVdGbk1qRm9aSEJFU0dGR1QxVlVibFpXWW1WeGNDOHJMM0ZhV0ZSQ2JXbE1kRWxRWVZaVE1Vb3JOa3R1TUdaUWJ6Vm1VbUZsYVhSa01UWTRZazlaZDA5Q2Fra3lSemhsVGxneVdXMXpORXBhZWpCVWJWTlVVRUp4YlZsMGMwaDZjbTl3TTBadWJWTTNPVzAzTjNGMk0wVlRaVkJWWTAxWk5GSTFNVkJpYUc0emIyeG1TVzByVEVaWWIwcG1lRm92YTNaM2IzRkNWREpEVTFsRlpVaEJkMU4zYUhob2FpOUNheXREZUhGR1V6SkpNMDlvZFRsRFdFOUdPV1kyUWpGVGRVNTVSVUZCUVVWQlFVRlFZMEZqU1VGRlFVSktRVUZWUVVGblFXOUJSR3RCYVhkQlFVRkthMDVHWjBGRVFVRkdORUZUZWtkS1ZVRnJRVkZEUnpCWE9UZ3hiVmxrWkRkbFMzVXdkRUpOTWpBM1ExTTViMEkyTlZOclNVNWxhMG8wWnpRMVYyVTJUMm92TUdkTmNXcElNRTB2YmxOQlltaERhbEY2WlhoSFpGVjBVM0JxVldKV1RHdGtTV1JwVm01VFdFcEpaVFpTZDA5dWRXc3JSV1Y2TVVWSFdUazJNa055YmxFMEsxRjBaRTQyYkVSNU4xRlpPR3hxZFRBclVGTkRXR1ZrVUZSTVIxRkljMFJFYzBWTVExVXZZV05pUms5WVduVnZiV1pXTmxwaVpFOVVWalpVV1RGbFdYVTJVVEYyWlhSMU5WTnNXR1YwWlRoNmEzWmxieXRsWm14T1pXOXBaUzlCUlRrM1VHSnNZaXR2VW0xcmNIWTVVMmQwY0dVNU5uSk1TM0pNUzBWSU0xQldVRFpYYTNWQ2VrcG1ka1ptV0dSMWVUWkVXREptY2pCQ05uWkRURmc1VDFSc1RreGxNVE5GTlM4MWIycFJhVkJrVTJoQlNsTk5NR1F2YldadkwwbFVRekJRVUV0ak9VOUpia1JSZFhkelVVWnpNRXNyY0VnNWJYUXlaMUV2Y21jdlp6ZFBWREJHTjBGak5GSXhZWFZFUzNCbmRYUlJTRGhHVERjd1NGQlNSME5OZVVkMU1GSXZaSEkxVGpkRlEweGpWVFpDVmpWbE0zQXdZMjVNTWpKNlptNU9OVGtyS3pkbmJsYzBaWGxPZW5OTmMzWkpTazlVYjB0SlRHUlBOWEptS3psdE1GaDNWVUpwV1RkRmVpOURNVkZOT0dZMVFuWXdZVFJaU2tOcGRIWlFlbmsyTVRkTlNYRlZZV3BuYW1OcmNuSTBlbnBQVFRSTlFuRkJaVUV3VVdGMVJXSlpORXhNU2tKeFFYaHVaazFxZFVKQ04zZ3lhVVpyTm5aTmQwMWhUV05GYlhCa1dtMVdPWG95UmxOSFYzcEJUVzV0VEU1VFRVcHRNbGhrZVVGa1RGSmhOMlpzVDB4clRWbGxSekZOYWtSSVJtMDFVV2QxUjBaR2N6ZFhTM0puVGtkcWEyRk5iWGRxUzJwblVIVk1iVFV2WTFoRU4yTklUVWRJWWtrMWVXcHNkelJPU25jeWJFOXNTbkpWYkZCQlZYa3JabnA1VURRd1JFRTVUVkJUZFhodmMyUmpZVVpKTDJkdlVHeGhaV3h6V1hKQ09FSnJURVZUTTBOdFlWWlpZM2RPUVVoYVRITm5OR3BYU2xGcU1FSkNjbVJOV0c5cGMyaHRaa2Q1WVVwMkszRkxVMUZ0UkROSFRVTlVkVFV3TVVkSmFWVXhRMEpXZDBOVWFtd3lkM3BaSzJOV1FsUXhkek5DTVZOYVNqSmlWRzlsTVc1eFVGZzFOVE5GY1VOUlUwNW1XV3R5U1d0SGFVWkhVV2RNVDNrMk4zbDFkMnMwT0VkR2RrNXJlbkJ4TUhCaGNEUklOVVZNZEVJMGRGTmlRblJ1UlZGNWVrZGxXR015Y2tSVVUzaEZhVXRXZVhCc2VFa3pZMjlTVjJGcmVHbGlla2wxZEROVVpYQldSaXRxTkVKbVpYRjVWR04wVDFKU1VUVjVWWGR4UVZadGVqWmthbmhoWmtOQ2NuaHlPVVYzUXpBNFJuaEhWMkpKU25jMFVETlhjMjVWZUZwWVJIQTJXalp5ZUZSS2FtcEpUSEZMVEdWQ2RXOHZWWEJKTVdobldUZENWa3hDWW1WRVJYaG9XbFZtY3pGc1FtSlRTRkpXVEROeE9FdG9UbkZtTDA0NFprWnRjM3BzYVhSRWJrdHZPSGwzVEUxaE9HRnhWMmx3VlZkcGNrZzNkbVV6UkdwaFozZFNSalIwU2xOV1VrWTFjVEZhVEZKaFUwRXJNRVZsUmk5UlExSnhMM1pYTVdoRFFscGFkMklyTDNadlJqZFRZbXRsVEhWWmNtVkdTMDB3ZVUxNFRuUXdWazE2V0RGVWJHOUpVRmN3Y1V4U2IyNTJSVlZEYzNwaVQyMDJWa2d5VEdwVloyOUhUR3d5TDBKd1RqaHpVM0JUZUZwMFptNVpTMHg2VWpoVGNqUTVlRk5wT0ZocFpTOXNka01yVkdndlFUUjFOM1U0SzNkTk16RTJMMDgzT1N0bGR6SkJSVU5vTTBReVF6ZHFRVXBSSzBkNGVIb3plVk00V0drNFVFUjNNa3huTkdRek5YazVkRmhPSzJOYVRITkxTMDFvTm1kU2JVeGphbmM1SzI1Q01HWlRURFJyU0hwSE5XSjJRVzF2WkZONmRERnhSa1owWm05eFpUaDNTa3hHVTJzNE9XaEZXblpyTVdkcGNWZFVNMVJPTVdsdVYwdHRTbTlsSzBwck0zSlVXRlpWYkhkWk1VNXJlbU5WYVhGc1JsTXhNblJxVUcxemJFbE9WVmRNTTJKVlZuTXlSVFJ1TVhSWVdVUk9SRTU0WVhSb01IRkhNMjVCYlhoNVVtSmljVXd3U201U2JHZHBlRTVoU1M5dGFFOVBha2REVm1zM01taHdVREJVVDNZMllsZGFTVmRzVmxWVmMycExXa1ZxV2pBd1lVWmpjWEZUV1dwdFVrZENZbEp5UTBOdGQxUnlOVFpOYVRaNGFGWlFhazVKY2pkS1drUlJjWFZCY0dWQmFpdEdlalpaVGxSdmNVZFJTRk5vUkVwcEwzSkxXV2hsYkhaUFRsZFVPVlphVm1WVVFYbGpWWGRuYTFZeU5ua3pjRVZ1VkdWeU1EQlJUMDEwWTNkV05rRlpUR1JGWVN0V2NtaHJTbmRJVWs5eVRqUXhXWHBWTW1SWGRXa3hTMmwxZVU1Wk1XRkRTMkpFVDB0RmRITXlTVkI1UVRWdFkySlhlbTU2UnpKMFRVVXhjMjlKVmtrd2MzTjNNbFJ4VUZCSGIwdGtRM0JLVFZaU1UwNHZZVnBtZW1RMFFta3hLMnRVUlhCclVYZDVjM2xaTW01bGJreFRNV2hXVFZOdE55OHdiMW8xVlM5eFoyVjRUV3N6U2tsUmNURmhZMHNyYmxJMlQyUjNUVFJMWnpNeE5YWjZhU3QxTnpaM0wxZzVNMloyUmtneVpHRTRhV1JuWWtwQlZtdHBiMmRoY0dNd2VtMVBZMUZwTVVwb2FXVnNkV2xLZG10WU9HTkVOelJYWjAwM2VXWktUWHBsYm14M1lrRmtka2hQY1RKVVFsTndPRVJKYzNsdmVtVlBjWGg1VFZSb2RtOVhhVXhIU25KcE1XZzNUVGhtZW5nelYwNDJUbGswTnpBd01IaEdTM0JMTTIxUFVIUlNWREkxUW5oTmF6UndWVEZzVFdkTlVuWlhOMDlTV1hoUWNUbDJaMWROWmpWVVRqVXZlVWxtUjBKa1FuVkNZMnh1VjNWVmEwRjBjRUZvVkVObU9XUXZjMVJ1TjFkTlNEZDJkRGd6YW5Ga2MxTnFWMnBPV0VkVGJGUnNXRms0Y0M4MmFFRnRiVkpaZUhWVVUwbEJkQzlMUjI5b05ubHZlRFZRUlZCWmF5c3haRUZoTTNKRWQxQjJhRXBZWkZkMlExTndkekY0U2pOU1VYQk9iRVZqYkZOblNFMWhSa1JWUlROQlEwZDBWMDFMZDNFMlJTdFlTa2xNWmtabFkwOVZVbFZCUjB0SE5WTjJibTFXUzJRMU1UaEtObmhpWldJMU5ESk1RMVF2UWtkWVpuVjFVa2t5YkdNNGFuRmhkVVUyTUdvcmJtOWpZa05qZGpkMU9XWjJPQ3M1ZDBnNFJVWTNaak0zTUhCUVprZEJNMHhyYjBsamRqaDVPRmw0VWpWbmFHaERVbmx3VEhCT2FsUkVRamh2TkhKNVNYUXZWMmxpYW1kemNXTXhjRmRqTTBGUFoydzBZVWxYT1RCa1Mzb3hXbEZaWkdsVlNsSjJWWFZLZUV4dUwySk5Va3hTS3pkc1VVUXlTRFp4VkUwNFpuUXlkRVpKVkUxMGEyUlhSM0JNYUVsSFFYcGFaR0p3YlN0M00yazRXSEJCWkhsb1ZURmlNemg0YlVsdldsTk9VM2hHWTNad1kxWmtla0lyY0RSS1JUZGhabmxyVWxFNWNpdHNXV3hpYXpKVVdURnpRek15VkUwelRqSTRVR1IyWm1wVmVYTlVXazVxTXpsNFdteFVVR2huWVdGMWRGZEZRME50VTNwTGFpdDZTa3hYZFRGSlVrdE1hMkY0WmxGclpEVlFUMUo1ZW1vM1JraFlURUpSSzFSa2VTdDVaeXRPY0RSRFVUaEZkRFpHVEhReU5rVjNORnBFVWxjek1XeDBMMnREVDNCV01GWlJXaXRDT1haS01teHVhbkl4WjFZNFQzUTFhSGxzTDBwYVIzWnZZbVJSZDFoV1FVZ3ljVWwxUjBJMk0zSjFXVlJ1UTB0WFR6UXJXVEJWVkc1U01XYzNNMFY0YVVwa1dFdFBWSE12ZW1GV1FtVXdialZ0ZW0xU1lUZHhla3c1VUdKaFpVVjRVbTVzTjFvdldtTXdjRFZQUjB0RVptSmpSRk5sVWs5VGJYQm5lRGxvVWtVNEwxcEZkRTEzVlZKemJDdFZaV0puVWpVeVpVUnBabWczZEd3eFUyOXFRV3RSYTJoYVVGTk5SV1JXVm05cGJHOXRXbTh2VHpsRWNFaFJjSE5oZGpaWFpuQmxlRU41Y0hWemRrSXhXbTFLY25aT1pXaFlhRFZuTlZkWVdWVlZTbEpRYTNOalZWZDNXblV3V2s5VWNXWnZkVVZrTjJ4YWJYSnpaR1F5VG5aWE0yZFVXV1UzVlc5S2JucFNVVWRRYWpkdFJYTktlakJEZWpGck9UVlJabmxrT1VkU2RXWnBOMk0zUVc1T1NrVm1SVThyU2xWM1pqUlJhM05PUkVaRFdtMU5lRXBFWTI5NEt6TklPVkpHUWtoVlV6UkliVVl2Wm1aWlppOHpPVGxtV0ZJNE1FaEhWRll6VERKWEszcFFMM0pYYlVwT2JsaG5XWFpPWlRReGRWRnpkVXRhYnpkRmVEWnBhMUpRYWpGb2NDdDFiRTVrTHpGWWMzTnplbmt5TkZsb1RVd3ZjM2R2VjI5S1RUbFpRV3N2WXpCWlIwSXZRWEl5TURReVJrcG9aVE5KTWpWdWVUVjVPWG8yVW1RM1NtWnpaRWhNZGpWaWNrZHFZekJCYmxrMFZFczRPR0ZOUW1ZNVRub3ZNU3RFUjNObGExcHJRbTFIUldjdlVVWldRV1U0VFZGNVIzUkVPVTFJU1VoT1pVUTViVVYzV2xrcmJucElRM2RZVjBaSmJrZHFRalUxTUdodllVVnVabFZGZUdWelVGUlRkRGw2Um1oVFpraHZPRWhMU1dOV1kwVTBjSGR2UVZnell6Wk1RbU5rY1doVWMydFphVkpYVnpGaVNWWXlhMjFwVVVZeVVHZ3ZSbXhwTldGcFNVMXNNVWRCTjJFd1dqVmhUMlJSY3pKbFFUVTFWR1YzU2tGUWIxZHRUR1pqUlRkSmIzZzRUVEpJVTA5NlJqUnZNMlZOZVRaalZrOTFiaTkxZG5kWlJHUTNlVkZtTTBGdWRqRm1kekJSVFd4MVNrTlJORmQ2WjBJelYzVkVXbUpDVW1veVpVMHpiV3RvV1hkWGNXRnpOQzlVYTNwclNHeDJWRlJUTkdKV1VrNXNSMlpOY1ZGbGNuWkdVWE5aVm1salZVbDBNMHQ2WkRKaGIwUkhXR2hhVnpBM1UzSmFOVk5wWVdwNVpGRkJkakkyYW1aR2VqZEhaa1kwVkdGekwzRXhkMFZGTkVVcmFYQXZUU3RLVm1Wb1IwUnpWRkZLTldKMVN6QmFOSHBOZWsxNlQwcHhiWEF4YTI5M2MzQlZVR3BOS3paT04xUXJkSHBaWWxWc1ZHTkRaV1ZYWWxneFYxbGFaVEp1Umt3dmVYTklkamQyV0dVMWFXdFROVEU0S3pWNFQyRmFObkphZHprMVFTOVFUbGd5V2tOU1NXVTNRM1JKTUZWM1RGTmpObWRMZFZocVdsRXpMekZPVGtGWVlqTk9kemwyUmpFMWEyZzJaR1ozTVU5MVVHd3ZUbWxFVDFkbmVWUXJUV05VU0hkWEwzTXlUVElyYm1GMlJWQk5aemxHUjFKMU5rWjJOa2QwTUU5TlYyWnBWVTV6WlRKM1dFOHdOa3hEVGtocFZVdDZSRVZwTkVGM2VXNVBXRGRIY1RkblMyMDJVbGRwWTJrMFFuTlRXbTU1TDFGVFZIVkJjVzB6WVVscE9WSlBiM0JMY1RaM1V6ZzRRV05aYm5aNFVHVkhXa2x1T0ZSRmNEaG9PR2RVV1ZRMmFWSmpVRGRIWlN0TGJVdDBSVmhsUnpab2RuUTBaMXBtTkdkR0syczVjMjAxTVVWWFdGYzJNRFZQVDJGWVJVUjNjbTlhVUdkMGNUUmpXazkwUlhScmRtOUhXRzFRTTBrdlJVcE9VMGx3VURoblZVTnZMMDFLT0habFJrcEtTaTlrWlhsYWNubDFWMll6VGpCeWRYcGFWblp1YUdGcmFWcEpUMjl4U21odWNFVnhWVnBJWlZCelFrUTFWVVU1YTBOQ2NVbEVNRkpzTUVWaFRuWnNZMUl5TkdWQ1JrbFNkRmhUY1VneVUxb3JTVGQyV0hCR05HNDNlWGhJZEdkclYzWjRjbmx6ZGxnd2JuSnNUekpYYTFWaVdtTmpjbTVFZWtSMmVHMVlSR0V5TkRGbGEyRldURTlOVnpGTGJEYzFhMkZFTTNSdFNsZFNRbUp5YUU5RlFWaDVOMHBvY25wblRYSTVWelYxTWtOa1lqUjVTREV5Y2t0UGNUSllRVkk0Y0hJMFVFOU5MemRPWWpkM1MxRnpMM3BNZGxjdmJ6WlZORmwyY1VkemNITnZjbGgxYjJKNmJGbzNhME41TTBkbVQySkJaVnA2TUhwSVUxbzJWakp0V0ROSmQxazVZWE56ZVV4UFpraHJaRUpVUlhSck5VNTJOMUZDUm5wT2QzQkNjRTkzTVRWQmNreDRhMFZsUWtkS2NVdERPSG80YTIwcmEwVnhkVkpXTW01NVN6RXlVelUwVjJGRFZuSXJaWE5TYVdNdmRFeE1UM1ZyUnpoV05VNXJNamN4UlZjelZUVjBkbFZwVldSYWFHNWxSaXRHVWpaMU56WnFSV3AyT1ZGSVduSkliVzF6YWtwQ01uSjRZVk5RZGt0NVNVNVNWVzlrYzNKVmEwNVliMlYyVDJGTlRqSkhWV1ExWVVwV2NtMHhhbEJVWlU4MlZrWjBaV2RrSzFaMFdtWlNZVk5JVnpsS2RWWmpLMmwzTm5WclJGSnJNVVJWY0ZsNk4xcE9jbXQyV0d4NlVGSlZibGgwTmtVNWJuSnpiRk5tUm5VMFpHNHhLMkpMYmpOcVlXaHNVekppV1RFM016TlFTbFpWY1ZscmNsRnBNeTlXZVZWVWJGZEtha2gyWlU0MmNYZE1Ta0oxTTB0YVRrRlBWbEp1Y0U5aGF6bG1jeXREUnpCWmRteFljbXhyT1ZJelNXdFpaSHBRS3pKdlpsVjRLMVEwVG1kTmVYcDZlVU5uZDNaNU5FczNhMGMzYldoT055OHpkbTVVYkRFNVZUVkZXblJxZVVRNFpFUkhReloxTm5FMVRYSTRjMjV4UjBnMU0wdHpWbTF6YURSWFVqVlViWEk0UkRWNmRFSmxTM3BRYVVGcFNraHNSSEoyT0hOTE1XeFdjVll3V2xOTFRIRlNjRmxQTW5sSVdtTnJSRmRPV2xkU04zQnVOMHhGTTFwcWVFWk9iRk16TW1FNGNISlhNemxWZEVoVmVXSXpWMnRLTWpGUkszZEdOVkV2WlZkdk4xQkRXaXMwY1RWNWVtc3ZiRkpOWlhsYVFucHVNM0JZVHpCeE1HYzRPR1I0Wm5neVpVbDZTV05rTUVGUVRHdHljemR0VFZKWldreFNjVXh5UkdFck5rUldRa055VHpZM1lreEhZblZHVGpGVVdtZFpiMVpYTlRkV1pEQk9TMHhQZUdRemFXZFlObHBIYldoNlNEUk1Xa3BXZG5CWlIzRTFSRXhZV1ZkM00wUlNhMWh1UTIwNFZYYzRjVXd4UlhaSFYxWm1NRnBQVms1VlYwNTFRWEJ6WjFreVpUaFJORGR1TUZGVmJGSm1TR2RTV0RkRWVFeDZlSGhCU3k4MmVtTTNZbXAxWVhKVlJsUTNOR2t3SzNoNVQyVkNiV2xhZDJsbVJXdE9UVkZwWkRoUFJETkdNa3gyTUU5ek5qRjBhMmxOY1VkWUx5OUdObkJvUW5aQ00yaElNa2xWWmpobWJsaG1ha2RRUkRWR1ozVkROMGQwVTNaQ2FHRTNSbWg0ZG5CdVZUTldVUzlUVUhNMVJqbDFUamd2TVVWMGNHWkZablppS3poUU0wa3phelpPTTFoVFkzbFFORTFCVjNrM2F6Y3pTRFppYUdKNmJGUTRjME42TjJWc1ltUlpjUzk1YjI1T1JuZEdkbXRuZUhZNVVrcG5kazlETURKTE5FUXJURVF5YzFCeVZuUmlWemREVXpkaU1VcFNZM2RXZWxOeVowaDFUbE5pVGtKcFlrUmplRFZhUm5wSFJTODNUbUZ5UlVwb1NtRTVkVTVYUnpWQ2RVSkVibmczUW13eVlYUlZUeTlzWnpOaksxTlBPVlYyTlRrM1RGTlFSbVJsU2tGTmNFWTFWamx6YldSS09HOXNiM3BvU2s1MVl6ZEJXVlppTW5wT1VsWXhWbXBUYTJGWVNXTk1XbTVhZWxwRk1tTnpiRkpYWWxvMWJteENiV2R6V2xaVlpGVkRPU3RvVjI1RlRtaHhhelpUVldZMVNrMWFWWGRUVFdwWmJIWlpSMVkxV2xKc2JHWXhObFpQVDNKTUwyazNXbHBYTTJGT1psUlZlazFhUzNvNU1FaEVjREJYZW1oWmIwOUdSRzFUUjFWeVMzQlZValJwV0ZJM1YzVjBaazFFZFhSM01TOXNORTR5TUdsUVJXaFdlVGs1WWpsUlYzTjBZM2xRU1hCMU9YSkhiRFk1V0ZWSGNqQjJSekZ5ZUhGck5WaHBlREJXZDFGalpESTVZU3RaY2pWR0syNWhNbFoyTXpGemRVMVBUVnB1V2xvM09WcFdjRXhaZG5KVmVuRlVXRkJQY0Zwa01FaHZiRm8wTkdFMldtSllkRkE1U0ROdFJHc3pSMk5yTVhSelVucElUMll3WVcwckwxZHdTbUo1U21KWE4wNXVOVVZTYVZnelVrd3ZSVEZxTjFwR2JEWm1VMU1yVFdSU1N6VXlURzVMV0ROUlN5c3JRaTlDWW5KV1EyTktPWGxMVjJwcFNqTXZXRFJZVkcxMGFVWmxSMjQzTkZwc2QzY3ZVelIwYzNkalJsZExhR2gzTURkVlJVdGlUemRRSzJnMGRHVTNhMjlaZFhBM2RWUlBaMDVqWmxsME1HWjZLMkZDTUhCbFREVTNOWE0zZUU5UE1IWkdVM05qYW1od1ZXUjRSSEVyWkZKbE1tcHBORmxNZVdkNFkxRTNkbWxzYVZwU09WaG1jR1JRUVZBeGJDdDBkVGRsWjJkUmJqZGxUVkZRYVhGeE5qTjNMMVZqV2xOTldGUllia2RwT1ZoV1VHMXBORFZGUkZOa2VqSlVkbkpHYzNFck1HTjNTREZrYUZaaWVsa3dabTkzTDJ0eVVqTm5UMFp3TW5ZNGIwMTVXRlpuVEdKMFdpdFFlbmhXTDFZNFYwZDJaMjFtVldOeWVuQTNkMnAxVjJwVGRGaHlTMU4zYTBkMWVEQkxSMlZqVFN0V2FFaE5TRWxUUzNGMGJXTk5OekZTYzI5bWEwWjRWWGxvUjFCTmMxZzRWMnhtWlhWWFQyWk5PR28xVTNCR1VrVklTRGd6WkdSMldrWXJOVXhTVGs1MFNYTnRZa0U0VjJsM2NtUnJTRzlFWWpGNVRsSk5PVnB0VDFoWWRubzJjVzEwWkhWQk1ETXpVREZLUTBSeWRqZFlXakZFTTFnMlpYbHNVV0ZYSzFRdlVtaEJXaXNyV1V0clZHSlBaamxLS3pGTVpscDFiRXhPVUcxeU0wb3lWazlPWVRoek5qTXdLM1l4WjBVMWNFNVRURGRpYzNoalZYb3lTWFUzT0RjelVuVk5ZamxSTmtWbVQxSkRiWHBsZW1kWVl5OHdibmxVWm14UlZtdEJTMjloVDBOME9URXhRME5RTjFCTE4yRjJUM0pRTW1RMmFFdHVTa1JqZVRGbWJXVmFPRU0xYVZSTlZrUkNkVFlyTkUxck0wY3JUa0ZUUm5ONFdFMW1SM0pOWmxKWWRXaEdhREU1TUhoU1JUSXhObnA0ZEdabWFrSlBZbFpXYUc1RVprcDFNSEp4YmtSdVdVMXpjWGwxUkdaNmMyc3JTVWhMYVZFMldXVlVNRUZrYW5SV2VFOVJjbmxhUnpkT1RteEVVbkZhUkRSRFpVMWxZVmt2VlVoR1UzaG1WR1kzYVUxUFkxQktNREJoY2psWFpYY3pUR2hoS3pKamN5ODRSR013ZG5kbVVITlFjWFY1TVdRM2FuVXJkM3BHYzFrM1JGUkRWbXRKVGpOcFExQkdUemRPTUc1cWNFeFBUelpxUTNGT2EwbFVhRXd6VldRelJtTTVlbFppZFhwbmRHTnpaRmt4VUVsNEsyWnNVeTlwZFRSM2NWcGxaSFpyUzJ0cGRURm5UbGx0VUVaWmNVeDZiSG8zVURSeGJuVndTbVJ5WkZjd01tMUxWa1phZWpVemRHNHJlSEJMY0Voc0wyOWxkRlkzTXl0REwxcHBSV1ZrTjJSeFlqVnRZMDVZUlZjMWNqRlBjbTkwVmxsRWVqWldXbE4xWm1GdFkyaGxZamx3U1RCeGIzUkdNV3RrV2xKdlZtNTJiamMxYXpGd2RrNHplWFp1TTJsaWJURk9WMlJDTURaWE0ydElWVTltVHpaME1rMVFRM0pWTldwWkswZHdhMUZ3V1dFeE5qRnBXR0pDZG5ad01EVlVWR3AyVUd4SmRGQlpjREJRUkdWeU5XZGFXR1ZFY0ROb1RXSmtlRU16YjI1SGRsSlphWFEwZURkRGEyTkdUVEprU21GV1ZuRjVabFJ0V0N0blpGY3hWalF4VUZaMlluWnFNVE12TVdabWRFUllhelZvYkc1cWVHMW1la3RyUjNVeFQzWktNa1F4ZWtoRFVFOWhOeThyUVhrcmVreFNZemRHVEdsVVNXaFdWRFY0YWpVd1lqZFJjMWxqYlZjM1YzRnFVRFZKVkhCWE5VUjJTblpNTDJSSmNubE1RVEJZZG1OdVdqSkdhRFl6T1VnMmNFcDFNRTAwY1VzM1VqTkllbFE0Wms1MVFXWTNjRFZHU1RGVlpFOTZSRGxpU25sVVMxSkpSbXBaY1ZOUU1VZzFRV0UxT1hWNmFpdHFjVVZxVVc1Q1UwWTBlSHB1YmpSbU9WQTFlQzl1WWpKeVYxaGtXRVU1Yml0eGRuVllNRmhrWkRKR05XOHdlbTlqV2xrMmQzWTBOMm8yWWpoYVJWWnpWbmcwTm1kdWIzRnBUM2xsZUhGMlUyUmplbTgyYzNWMGVITnVPREZTWnk5U1FpOXNhakU1TkhNM04xaFhUMUFyVURCYVkzaGlOVlp1Y2sxek0xVlRkVkpoS3pWNU5HaGxMMEY0TUhaVU0yY3JMMGw0U1dwRVZqTnZVbXA2VG5GRFZrNUdZbXBNTjFNdk1YSjFSaXROY3pGV0wyVjRXamxEUzNSVlNIcExOek4wYjIwNWExcHZkMGhLU1RJM2RrZDFOMjFtVGxsblVsbGlZMk16TkU1ME9FRlRialpVVjA5V00yTjNLMUpTV2t4SEx6VllSM1JWYjBaYVptaEtUWFJyYkRaT0wwcHdNV1ZFT1d3emIwbFVMemhaZUdKcVUyTnlTazVhU2tOSVVuUkNSMXB5V0ZGNVNYTjJZM0prUjBzdlJ6TTFWamhWZDJwc1IzbHVkRUpDTWtONGJYSnhZMmhOU2pSSGVVbzJTbkJxTjJSbVRXbFBaRE0wYzJ4RFkydExOMU5XTm5adk1EbFJXbFF4WXpjelRUTktWblJLVEhwT2RWWktXbXQ1TlZGRUt6TTVhSHBwUlc0cmFpdEplalpETVZoVWEwZFFRakY2WW1sVWRHRXZSbVowY2l0eGREVllSazl5U2pscGVpOXJkWGhHYWpWRldIWjBZVFk0YjJ4YU9UQkpNRUpqTkVKWGFrWnBUa0p6ZUdVME1IZHBOWFF2Vm01V2VsQjViRmgxV1RCSVZFcE1jbFJEY0RaTVZFUTJOM2RJSzFCbmNYUnRhVTQzY2xkdFoyWkpUQ3N4YzBveWRqVjBMM0o2YUM5R2VIaFFOVEJRU1ZGek9GSlRlSGx5YzAxcFVtaEdjamR0ZVd4WloydHNXbXN6WkhsR05XMUZMMkp5UkZkV1JteFlOMXAxWXpJM2VqVkhZMHN3ZWt4ME5rVklkR2xLTUcwMFNuQTFibTl5ZERCMmJtWTBPRnBSTTJWWVZXVXhNVlJ3WWxoS05tcElZbWs1T1U0MGNISlFia28yWmpVNU1rODVPRmwzY21ZeVpHMU5UMlJaV0RjNFRITnJNR1ZNZW5sR1p6WnFNakZKT1d4Skx5OUZNazVFV21remRETTBNbXh2V0hJME4zZDRlUzlISzFwa1owTjFkamhOVjJobGQwRjNaaXRyTVZoalYyMDVXSE42YjBFMWNWUlBhMmMwWTNKYVFXbDBiSFJYUmpSQ01HeHBMMEY0VFcxSFkzWktMM0J0TldKbFFsTm9WamhCU0dkQ1dFMUlSRkZ0ZDBKQlFVUlJUVE5PZG5SdE0ySjBjSFJ6TVRabU1IQmhNbms1WVhCME4yUTROVzl6UkhaMVVtZHBMMmhPWTBsUVJHY3dZVlZ5TVRJME9HVm1ZbWt4WVRBM1dEYzBhbFZVSzFKSlFrczJPWGswVlVveE5rTlNSVzFUY0ZWcFZrcHNNa2RVUm0xNU5XTnBWa294SzBKUmExZExiRk5vVm5Cc2VVWlRiRmR4TVdGb1ZuQXhOa1JTYXpKaGRGZHFWbkJzTWtoVWJESTJPV1ZxVm5BNUswRlJWVTlIYWxKbk1WcDBlVVZUVms5dGVscG5NVm81TmtOU1ZFWk1iSEV4V1hSWFltUm9hekZpZEhVeldYUlhabVpuVlU1SWFuQXdOR1JtV2toRlJIZFpVVUpCUVVGQlFuRXdOMlowYzNvek1XdzFiVFZvWVZkV2RGa3lkRzVpTWtSdk5VOTZhVFoxWW5VMFpXNXNOMlZRY2pVNVFVdENTa3h3UkVzMVVYRnNVMkUzVVRaMlkwWnZLMmhOUlVRNFowNUJRVUZCZDBSSksyWnlXblF5Tm5KMGNUa3pLMXBKYkhCTk1tSk9WMkpDYnpKa2NrbG9SekkzT1hWM04yTlBha2x6VWs1dVRHd3lOV1IxZGs5MlVXVlFibXA0TnpobGNrNTFkeXRtZG01Nk4wZGFiakJLZVVGdlNrTjNhVXRwV1hWSlUydHNURk5OY2tvMksyZHhTMU56YjNGeGJYSnhSM0J3WVRKcWNUWmtkbGxQYWpOdWVVSTBNRUUwUkVOQlFVRmtibTFoTjJSeE1tSmtkVEppWm5WNmVUSXlTbFl4TlRjME5qRXpNM1oyWjI4d09Dc3JlRXBsZDJ3NVptWm1VR1JxTDBKUU9FNU5kbll2Umtob1JXaFNiM05YU1VaVFpHVm5hMUpLTkZRME9GTktXV2xXV25Bd1IxUktiSGxhV1dwV05UVTRRbEZ2Vm1oVlprWlRjRkZ4VlRZMVEzQlRjbFpoZEZOeFZUWTVRbTk1WWs1WGNsSnhNRFkxUkhCNU4yUmxkbFJ4TURJdlFXOURTRVJTYjNkaFRUSTNRM0JEYmxSYWMzbGhUVEl2UW05cFdFeFdjMHBVWlV4YWNYcGliMDV0TjFwek1qZEdjbm8zTkVSb05EUmpUek5JY1hwTWEweHNOalZqZFROSWNqZHFPVUk0U1VGalFVRkJRVUZQYURZcmJYcGlkRzB6WW5SdE0ySkxkMFZEUWxGclYwbHNVMWxqUWtWcFVsbHJWMGt4WVdObFFXdFRTbFZ0VjBsc1YyRmtRbXQ1V21OdFYwa3haV1ZtUVZWTFJsTnNWMjlzVTFwamFGVnhWbUZzVjI4eFlXUmxaekJoVGxkdVYyOXNWMkprYURBMlpHVnVWMjh4WldabVowMUhSRkpyTWxsMFUxbGpVazF0VkZwck1sazVZV05sVVhOWFRGWnRNbGwwVjJGa1VuTXlZbVJ0TWxrNVpXVm1VV05QU0ZSc01qUjBVMXBqZUdOMVdHSnNNalE1WVdSbGR6aGxVRmh1TWpSMFYySmtlRGdyWm1adU1qUTFPR2RsUkVKblIwRkJRVUZPV20xMGJUTmlMMjVVVUVSemF6TXZRVzFGYVVscFMybFZkRWxUYTI1TWVVMXlTa3Q1WjNGTFlYVnZjWEZzY21GSGNIQTJLMnB4TmxKeldVZG9iV0p0U25GYVZ6Rm9ZVmRrZGxreVoxWjJaWGRrU0VveVkxaFdlbVF6UkRBcmRsQXdTSGRaUW5kQlFVRlJRVGRET1dveFlscDBNamRhZERJck5UUllZVVpLVUVWcFNTc3ZhVlJMUlcxNVJrdHVVM0JOWlRORVNtMTVOR3RMTWtoTWJuazFRM1JSY1VWcGVFVnhXRXMwYTIwMVEzQlhjVlpMZEZKeE1EWTVRbTh5WVU1SGRsSnhhekkzUkhBeU5tUlBkbEp4TUNzdlFWbFBSelIwWlhkRllWQkhha3B6ZDJGamNUQkhZbEJ0ZWtaMWQyRk5iWGxHWVhaWGNrNTFkMGRoWlRKaVRuVktjVGRwTW1FNEt5dEJOR1ZQU0VSMGVEWnplVFZETldWMVdFeDBlRFk0TmpsQ05DdGxVRWgyZURaek16ZFFNRWgzV1VOTlFrRkJRVUZNVDI0clZUZDRkREkzV2pGMGJUTnJWM2xPUjJwU2F6TlpaRXRWWVZST2JYcGFiVE5aVGtkVFdsTjBWM0pXYlROWlpFOVhZbFIwTWpka2JETTBUa05TV1hsa1QyNVViRE0wWkV0V1lYcGtkVE5pYmpNMFRrZFVXbms1WlhaWWJqTTBaRTlZWW5vNUt5OVJhMGxEWjIxTWFVbHhTbE13YUV0VFkzWkplWE5yY2t0RGIzQnhObWx4Y1ZkMGIyRnRibkkyVDNKd1IzaHFOa3AzWjJWRVFVbEJRVUZEUVZaamRUSmlaSFV5WW1SMU1qWXZXR0V2WjFGSlJrbFNaMGxWUzBaRFVtTm9WWEJTYjAxWFRFWnBXbU5uVlZwS2EwdFdTMnhUV21Ob1ZUVmFjMDlZVEd4NVZtVm5WVXBHYVVwVmNWWkxWbVZvVlhCV2NVNVhjbFp4WkdWblZWcE9iVXhXY1RGaFpHVm9WVFZrZFZCWWNqRTJWR1JuTUVwQ2FFa3dZVTVIVkdSb01IQlNjRTB5WWs1dFltUm5NRnBLYkVzeFlYUlhZbVJvTURWYWRFOHpZblF5V0dabk1FcEdha293Tm1SUFdHWm9NSEJXY2s0eU4yUjFabVpuTUZwT2Jrd3hOamxsWm1ab01EVmtkbEF6Tnk5RFdVbElNMEZuUVVGQlFtZFRMM0ozTW1KYWRESjZZbEIwYURWNFkyUmFjVEZMVWxwcE1WcDBNbTVZYnpGTFZtSnFNVFU1SzJjd1dVNUhWRmxwUmtacWVHc3lXVTVIV0dGcVJteDZOV2t4V1hSSFZGcHBiRlp5TVcweldYUkhXR0pxYkRFM09XZ3dOR1JQVkZscFZrNXVlbXd5TkdSUFdHRnFWblF6TjJveE5EbE9VbEU1SzNwR2NYcG1kbEJ1ZWpZNGRUTkljbm80UWxGVFJtaEZWa1Y0WTFGc1NrdFhhMXBYVkd3MVFsVlZiRnBTVmxaT1pqbGpNVTVrTm05NmIxVkNaVUpVUlc5b1RGaHRWU3RwZFhOc2VHdDZkbVpsV2s5QlVtMVZaMDlSVWtsMU1UVjZORTFqYnpjd2MwMHpVRVIyTjFOME5YVXplVzQ1T1VwRlVWTmlUbGw0YUVKUFpHNVhZV05XUkZwTGRHNTZVWE14TUhJMmFsQlRVMHM0TVhaMVkyTnpabkZLUzBwbWJVNTZNR2szUzJ0NU0wMVFUMVJxVDFka05GUTNhakZyYldGRE5URXplbUUzYlRrMVVEaHNUV1J3YjFGNlRHTjVOMDVQU0daU01pdGhjMUEzU1dkMGIyWjZiV1pGZWxoSmFWUllhMWxZTkhCYWVHUjBjVWwxSzJodWRVSTBiblpaZURJMVNtSktjemhIYkhselIyeHVjRE15UzJ3eVkxQnpkRll3ZWtGTmVYTkdaemh1ZVhkVU0xaExXamdyZG0xRU5uSkVaeTkyYUZKR01YZFVNV2c0Vmk5bmJsRnFVMlV3U0haU1JtbzRSamRwZWtsTkwwWnJPRGhtV0RaSGVGUTRiSFE0VFN0TWJDOHJTV0Y2ZFVzMGRWaHJOV1ZCUnpFMlpuTjJZbFJrT1RZMGREQXhaa1JrTTBSNk1qWkVWVzVOZFdGNVZVeHJNMjEwWVZaT1Qya3hPRTQxT1ZkRVozWmhXbTB4Y0dGNk1UUlZlVm92V0dnMFlqSnNPVnBNVjNaNE1uVnNPRkF4WWpKdE9YUkZkMnN5Tm5aWFlVeFhkaXRNSzFwTVVDOXNjM1pVWm05V1IwczVUalZTYnpWVWJEaHNNMVo1V2t4d2NuRnNXbHA1TjFaalNWRXlhRlJEWVhaSGRISXhiR0l3V0ZaVGJqZElNR3RPVGpNeE5DOURkV1Z1YWxocU0xSllWRmg1YVZaVE0zUTVNbTVSTDFCaFZYQXJNWGQwTUN0dVFWYzJNMmxIUW5OcVkwbEZZbko2VUdSSmVXaDZiamQxZGpCaWJUaFFReXN3VG1WdmN5OW9aakJLTWs4NVREVlJaSHB5VEN0U1kzUmFTRzVsT1dNdlRFdzNPVEZ4YUhWUEwwTXZTRmg2UTBwcWMxWjNUblpyTW1WSVpETndLM2c1UzNwVk4yNUlXa2htUzA5UE0wWnNSek4zY2tKT1Z6bEdUemR2TjBwMU9FaFVXSGwzVkVnMFRXUnVNRmszVUhGVU9XNXRNR3BJSzJWbWIybFFUSEEzV0ZOd1dYUTVVM0JrVnl0T1RqSm9jMFkwWm5wNVZqWmpUVGQ2ZFdkWE1UVTBhbHBFTW1zclN6VnJaMWhPYWxKYWEwZE9SMkUxWkUxU01uZHJVbkpPWVhvd1JtSkRXVVUyUjAxV2VWRXdWMHhGVjNsTllWcHVhRUpzV0d0TldubE5iRTlTWkd4YVlYRndjVlJTU0dKcFl6ZGpXSFpOTUM5YWQwczBiVUpZVkdSUU1EazJibWw2VkVjdk1qUjNaWFZTWVZCVGJXdGhhVFpWTlVKVVRVaFdXRWRrYldOaVVucDJWbUZUVW5ocE0yMTBkVXRrTlRscFEwczVhbWxoUzBGVk1uQkVUbXN4TW1nM2FHY3piV3BwY0RCb2J6RXdRbWxXZUZONlZqZFNhQzl2UkVseU1rUkNkblJIVkdJMVZFZDBNVEVyTW5CUUszWnNNa2sxTVZCNFQyd3hZMmxYUTI1VmJsVldiRlJ3WldFM05EVjNSbFpoTmxWeFZXSlpjMDFFYzJKQlltNDFSMWxPV1hwcFJHTTNhVUZUTjJsRFEySnJPWFZ2UlhBelQwdGpRVWxaZDJkcVNHMVFXVmRhTVRSV1VGbzVSM2xLTURkWEswcEpSazFKVVhwUFNXTk1kVWxSY25WSldVb3pUVUZWWW0xR1IzSm5TVmwzWjJwSFkwRmlibU5CUjFoalFWaFlUVWxGWW0xTlNYUjRURzV5UVVsWmQyZHFSMk4zVkd4amQwTldZM2RVVmswMFFXRnRiM2x6YUdReGQweHdWV1UxVXpSV1RFODFaRXRzTkZKTU1YazNPV05yYlRjeFRHd3dOamxMWkZOM09IVlFZbkpGTW0wMVVEWmpjV3d6UzFoRFNtVTNVM3B4V0hsdFQyZDJZa0pRUVdGSVZIb3JlWFJhVDBkeVkwdDFXRk16Y1ZabVRIVnJMMVpyV1dvME1UZHlXRXh5T1RRclVXeGFjMk5aY2pCaFVIaDRiVmhpVmpka2MyUk5aVlYyVWk5eFMza3liakJaVldoQ1RpdE1NWEpFY0ZKSGRVNXlkbWQ2WkRRNGRFNTVaM05NWjI5T1UzWkZXVnBNVUdFNU5HTklSWFJzUlVSRmJuVlhhVGQyUkVsV1QzaGFVM1ZKVlZwSFVWbDNhR3BOTkdnMGMzQmhkek5ZYjNJeGNHMUxiRkZZVFVVeE0wMUNNSFYwWkhGeU4xRlNVM0pLTm1aQmFWWkxkblEwZW0xU1dtTTFiMVpvVkVORFRWcDZRazlXZVUxaE1WZExiazVXVFVacFRrVndZV1JEUjNFMVltNTJaVWh1U0daNU9GQjVabmczY0VsaFFtZExRV3BET0hjclJYRjZlVmMzSzBSdGQzVnVkRGRsYlhnclIzWjJSMVp1U0cxSE1ubDRkekUxTUVkbk1XRmtVR1kzT0ZkQk4wZExOakpCZVc5Q1NYbGlUVmRIUTBZNVpURjFjM0JxVFRNM1ltdE1XR0paYVRFMmFsRlpjMDh2WmpOSWVucGtOR1UzYUdWU2VEaDRXVmxGVmpGMGFHZHBlRE15V1hSQ2J6QkxTa1JxZDBWcVNuTjRXVmxKVlRGT2RHaHBhQzh6YWxsSVQxbElUaTl0Wnl0WVNGRkhjbEp2YzA5SlExUk5WMWRIUjA1RVltSlpXVk00YldwUldYUlBkbEZaVFVkTVEycEJWbGRYUjA5RVRGaGlXV2t4YldvcldITmhRblIyWkRSWU1ETXlUQzg0U2pjclNIZG1OeXMxTlVkV1FuUlFhR0ZVZGpRdlZsWnFWMmhMV25aek5XdE1URVJEUjJoMGMzTmpUbVZNUkZGaGRFOXFVVkF2ZWl0TmN6UklOaTlzYUZKNWJTdFRSMng0YlU4NGJqWXZiVVpqYzFsRFN6WjVlSGRTV1RjM1RWWjJTWFZ6UTFKWVFXZERjVUZuZG5ObWNIUkRXa0pYTDJZclRuaHZkRWRMZW5kb016QmFSbmxOVkUxM2MzSkhNamdyWmtSck5IVmlhRFZ4UkRoMlVtbGFiVVpzV1RJemJubzBZMjVDZVdObVRsRm1NVEpOVkUxM2N5ODNOeXM0Y2l0T2RYaHdkbEJ1ZHpWUFRHMDBaV0ZwTDB3d1dXMWFhRnBYVG5RMU9DdElTbmRqYmtoNlZWQTVZMnBGZWsxTVMzaHpkbEJ1ZHpWbFJHczBkV0ZvTDNZclRHdFpiVnBvV2xkT1RuZ3JLMGhLZUdNelJIbzRXa2R0SzBSUlVVaEJVVU5CYWxWU1QyNWlSbWd2TlVoMWR6WnNVM0ZrS3k5NFkycEZlazFNUzNoek4wSjVZMWhPYkhnNFVFd3ZNSEJOYWtkNmMweExlR016UW5salpsQnNlRGhPVEdZME5VMTZRM2x6WWs5M1kyNUdlbU5tVUc1NE9FNUtaa2xvVFhwRGVYTmlUM2RqYmtaNlpHWm1hbms0T1U1bVNYaE5la041YzJKUGQyTnVSbnBhWTJaRWVTODVURlJKZUhNM1EzbHpXRTUzWTI1SWVqVmpaa1JUTXl0UVZFMTNjM0pIZW5OSVNuaGpNMGg2TlRobVJGTlFlVWxVVFhkemNrZDZjMGhLZUdNeldETTBPRGxRSzNCM2FYRjNSa2xoUWpaQ2NHVlBRVzlRYkRabU5GQlRTa1JyVjJsR00yVk9kbXQ0YlhOcmRFYzBabnAzYWtSTGNXNUNXRGxEVFZNeU5WTm9ORmhqU2pWRVNGaG1ZakYwYm1ObFMydFZSa2xHUkVoVFJXSnpMMko0V0VKc2EwSnhTbTlHVG0xYWNHRldSREF5WVVkemFsUnJUMnRCTlVsNk9URXZUVFZNVlhvclExcG5jQ3RSYkVSTVNGcFFkMGt4VkVwaGVXUm5iR0ZOT0UweU1rNDNUMnQ1UkRobWRHTkxLMUZJUnpocE5EZ3lkV1J5U214RWRURXhRVXc0VVdnME5XOHhkVXhSU1dSdlprUkpXblE1YlRaMVJHOHpkRU5KZUVWbFFrTjJibVZPT1hSNlVWTnpiSHBaVEVkU1VXUTFRa1IzWkVNMFYySmlSRWRVTDA1dFQweEdaM2t4WTA0MFQySnphVzFXYVN0d05HRkdjMGhDZEhWeE9ERk1jV2RDVEdOc04waDRZVVZPTURscFQzUlRVMjFpVGxaSk9GZDNlRWQxTVc1T01sWXZTWGxNYjJvMk9USk1SVXhJUW1kMWFUaEdZWE52Y2s5aGF6SlNRV1JGWkRCVGJsSkdaSFIzU3lzclFuQnFaMjVSTUVvd2NIQnFLMk5LTldSVldFeEpabVZKTmsxdmEyMHdZbWhSYUhwRVVXSlVabnBWUzJaUlFVRkJVVUZDTHk4NFFVUXpaMEpaZVVGUGNFRkdhRU5yVFVzME0wdEhOeTg0UkM4Mk1XdFZablpZZUhKcFkydGxiUzh5Tnk5c1NVUmFUVzVxYlZSaFVTdHFSMFZOWlZOQmVrbFFjemRKZWxwQlJHeHBPRUozYkhsSFdFdFpPVVJCZUUxR2VHb3ZUWHBFT0U1M1pVcE5OVE0wTHpSWWNFRm9VRE12ZVRoUlVHdEpaRlY2VkZSS1lWcHJiVVJ5YlVseFdtYzFhSGx0V2twbk5rRlBWMUJOYjBJMFFXRjRWakV6WW1KU2FFSmtjMHR1TTJ4b1ozQkJOaXR3UzAxTFF6ZHlXalpCVlZSU00yRnlia0ZMYlVFeWJuWjViRVk0U1hadFlXYzVUR1E0VjNVMlFYQkljRXB6ZVZWT1pIWnhPVTB4YVhkTmMxSnhUalo0U0ZKTE9TOVdMekppY2pkdGVTOVZXRWxVTW5sbGFYVkphbE51WkVSTWJGTlVVSHB3Vm5BNWNtWXhNM1V5TkRkRFMxZEJWalkzVm1oYVMyOW9PV3A1TTBSR1FqazFXRVJDTUZGUWVtNUNjR050ZG5wcFpYTnljVVFyYmpaa1N5OVlVVFJYU1RFeWRtOTVaRXhTYW5CNVNIaDRaMXBWU3pWR1RsQkRUbEJOTVVaRlYyUk5OMDlsUVhCeFJtOXVOR2RrYVdaM1FsQmFRVEJLTTJGUlNtTm1aRWRIUlU1RVdYVjFWM0F5Wm5rNVEza3lOSGxwUzJKTVltTkxUa3R6VG5OTVJFdFFTelJoUVdnMVUzUlZSVzVhVjBScVdrUk1NblZsU3psdlJXcFphWFl5ZFVkUk1DdHhTMFJ5VEhwdWF6RnBhMWszZGxwblpucHNWV3g2WmpVclN6QkJNazVCUzJGVmIydEVNRzlXZDBaNVRUUjNNemRIVVhKRGJsaHJVazFSY2pKNVJuTk9jVU14TmpOMFkwNTBkMUoxVFdWeE1FZFRjV2R4VURKT1lraFRabk5MUm5aVFR6STVkRVZHYkRaak9UZHFRV3R5WmxsRkt6Y3JXREZDTlVwQ2JEWktTVE5IU2pFdlNsZFBPREY0VWpRNFN6WjJOakJqT0VvNWJIcHJMMmtyTlcxR2MzWldNRUZPTTFSUVZsVktNMVJSTkd0MlduZHBiVlI2VTNOdVRFZEZOazlzYkhKc2RXazFTbkI2ZGtsVmIyZzJjWEZuV0hCTlJFOTFOM0JNYlV4WmRHNWhhV0ZqWm1wUWNFMVdRMjVWSzFOT1dUZzNhbVIzU2s5TVpUUktWMFUwTUVnM1JXWm1TbUZSZFc1UWNIYzRTR3REWVhkYWQxTkJaMUEzY1UxMk9WRlZlSEJVVG5kUU1HcDNaVTVMT1ROM2NYZ3djMEppWkRRM05VUXZXVkJJVVN0aU1WcDJhRFoxTm0wd1NHVm9TR04yTW5kNVpGSkJjMEowYlVGM1RVSlhORzVRUVRZM2MweEVZbHA2TTNKc1ZIZ3ZLM05FVjNWRFZHY3lkMnQ2U1VFeGJ5OVVVMnQyVHlzeGIyaE1WMlkzWVZsa1NXWnFUazVTUjFGT1RrSXZRVGx5ZW04M2NHMW5TbXhUU1hod2MwSmhlVmRxYVROTWVXMWpNVmxzVTIxRGRsZGthMEZsTUZReldIVXdWRFV6WVhsNVkxUjZTRXN2ZWtrd1drdHNLelZtZEhCdVFURllXRkEzVW5SbEswTndiRVpuUnpORk9VaHFUMXBLV0VsalVFbDFZMDFHYkZJMVFXTnRTelJ1T0RCSFVteHJXR1JOVm1oR2NHMDJlRVExUldOdE5uaFVOWE5qYlRaU1NEVjFaRXAwTTNKelVtZFhSazlPY21FdmJFSm1SalFyYjNoNEwwMVVORmhrVUc5dWFrWlBibWhwTDJKNGJ5OU5XWEkzTTBnclFqY3hVR2NyZDFJNVJXWkRTbVJKUWxBMVJqTm5SVFp0UWxRclVUazBRazVhUWxRMlVtczRRVzQ0YWxCblJYcHJSbVpEUzA1dldWWTRWRlF5UkhOclRYaENVbkpJVVVWWlNubFZXakowVjJKWll6bHVSRmN6YW1aRlJGaHZiV2x1Y1ZwRllreHFXR2xxYUhremIwZzFlVTB4YUhKdUt6bE9XakpTY1hKb2R5dHBTRTlFUkVwcVVGaHRVamhhWlhCeU15dDRhQ3RXZGpGNVJXSmFZMFpNT1dGeU9Gb3ZWblpLZG1KVmJsQmFTU3R6VFZGSU0wSkJVbEUwTlhGSFYxRllTbXBOWkZCVVZ6RnBkMlZPYm5RM2JHbG5MMlpvTDJoM2VsVmxUbFp4YkVaRU0yNTRkeXRVU2s1SE4zRm9SWGR5TTFGQlFtSjFRVFpsVjJSaVdVdERhV1JOVjJsTVFpdEdWM0YxU1c1a0swOTFkMFF4VFdFMWNHOUpWVmNyTW1aTmRWWkhkbTAwYUVrd09FTlRUelZrU2xreVVYZ3ZTMnhEVWpkS09FdHJPRlUzYTFNNFdHRlRablZhU2pFM05qTlhPSGRvYW5Kb1lUUktkRVJUTDBjMFZXZFFkRUpqUkVwTFJHcFNRMGg0VFZwNlRFSm1XbmhhYUVWRk1IQlFObTVWVFZVMlVFTlBka0pDTlVaV2FYVnhjVWxzYVc5aGJHaHBVM2s1YVhNNGNWZHplVU5wU1hGdWExUXJUSFpTZGtOd1VHRXlTREpqTWpCbFEwNXllVnBKYzBoMlVVTkxOWFJ6YlZsTk4zUTJOMjlvVWxkV05rTXlNV0pFY1dKR2MwNXZTbUUzVTJkSVVuVmhkR2hLU2xRd1pGRnhaVXd3T0hWNldIWlViVGh4T1dFMlRsTnJkSFUzTVRSd2NFOW5VR0Z4V1V0VU5qWkRUR3M1TTJsWGFuRlRXWE55ZGs1blJVYzNXU3RIVkZOUmJGUk1ZWFJoYnpZdlNIbFBaWFZYZGxoSVQzVnVTbXczUlRCU2NUUmFiak5LYzBzcmIxcHVNMUpUT1hsWU5FSXhURmQxUjBkcFRtRTBaMGxDU0VzcmJUVnFTbmxSU25KWGNVTmhibTFzYkZoalR6bG5NRGhKU0ZBdmNFVnFaaXR5TnpCV1JraEtSa3hYYW1OUmJXTXllRWxzWVZCa1drNXdiV0pqVG1jdmNrOU5NalpxYlRSNGIxZG1UMmN5TkVFNVJtcDZRbFE1VnpocE5sQXhVR2RLTTNWaldERXJhR1pKY0RBeFQzTktVRGhtZWtzNFNFOUpNVGhLWWtoUlZGUmxiMjhyTDNWeGVFeHdRV2xwU1VWQmFXbFpORGsyUTFWalFVaGpNMlF4T1dOa1prWXpWVFo2VFdobGEyWXpaREpUYkN0eFptcEpkV05pZGtSblZuTTBVSGxSWTBOVldHNTFaMWRxUVdjdlIxRjBSVGROUXpkM1dVbExiVko2UWtwQk5scHZkMFJSVG0xQmJVcGpOalZFVGtOMmVYRnliVkZsUzJWaFJqTnVWa0Z3TVVocE0xTnhTbFJ5Vmsxd01YRm9WekV5UTFaaVdrcHNhR3B0TWtOa1lsbEpUbTFzTjBKS1p6TlpiMmRJWWs1RFJFUTViSGx1WVVsbWRIRllZbHB1YlhGUU4yRnVNalpVZHpadlJrMWtNSEZ0VHpaR1ZFaGpielJpTUhkME5HOXhUamh4TDBSVk1rTlpPRFEyVkhKeFJqRkhOVFpJWjFrelRVSnlZbTVWZUhObWJWTnBXVE53WVhSbFRUZEpXazQ1UW0welJVeE1jemRLVDBSUE5tZENabVpSWjJka2NHMDVVREZJYUd4YUwyZFJkR1kwWVZkMk9HcE5SMHg0UTBNNU5tZENaUzlUZEhGVWNtWlVRM2t2UWs1aEwyZFZkQzgxWVZwTlptbENSblo0UTBNdk5VTlZiSFJTVm5ad1dqZGhlbEF4TWxSNU5WaFlhakprU2pOMVQwVm1kalJITms1UlFVRkJTR2RDV1M5RVpYZFlRV2xMUjBscVNUSk9aalZCWWtkdVVuZE5TRUY2U2tKU2Mxb3lTakl5YUdwdWNIbGlSWGRoU1VoWlJHeDVaVWhMV1dOeGJYbHBZa04zWTFWSlJtZE9ibk15V0ZKYVdrWnlRVUYwT1U1bGIxRmlaVUp6TkVjeFoxbEhSbWRhVDI5QmFTOHdNVFJIUW5kcFJXbEVRWHAxUjNoVldXVjNTV3BPYW1jd1FrZDRhMVJ1UmxwaFRXRnBUR1ZNYnpSSFFtdGpWMmhKZW10clFYRlJhMFZuWjJOMVRIYzFla1J1VlRKalZGcFhTR2t3WkdwRUsySTVNMEV3Y25WU2FXTkdiRTB5YzB0SE5FOU1RM2RCYnpGVGIxbEJRVUZCUVVGQlFVRlJRVUZCUVVFOUp5a2dabTl5YldGMEtDZDNiMlptTWljcEtUc0tJQ0JtYjI1MExYZGxhV2RvZERvZ05qQXdPd29nSUdadmJuUXRjM1I1YkdVNklHNXZjbTFoYkRzS2ZRb0tRR1p2Ym5RdFptRmpaU0I3Q2lBZ1ptOXVkQzFtWVcxcGJIazZJQ2R2ZG1WeWNHRnpjeWM3Q2lBZ2MzSmpPaUIxY213b0oyUmhkR0U2Wm05dWRDOTNiMlptTWp0aVlYTmxOalFzWkRBNVIxSm5RVUpCUVVGQlFVaDZZMEZCTkVGQlFVRkNSbTFCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVSkZWVEJzU0VGQlFqZ3hRVUZCUVVGblFVRkJRVWxCUVVGQlFWVmtSVkpWV1VGQlIxUnZRVUZCUVhOQlFVRkJVRkZuVjJsT1JGSXhRbEJWZDBGQldscG5RVUZDVDFOQlFVRTBRWFJLU0ZaSldraFZNVlpEUVVGQ05VeEJRVUZCTmxsQlFVRnNTVkp6YzNaNU1EbFVUSHBKUVVGRllsbEJRVUZCVkVGQlFVRkhRbVo0YmxKR1dUSXhhR05CUVVGU2VWRkJRVUZZYjBGQlFVMHJSMlpTUkVKS2JtSkliRzFCUVVGQ1VrRkJRVkJtVFVGQlNGYzBVbkI1TURWSGFHeFpWMUZCUVVWTVowRkJRVUZPWjBGQlFVUlpVblJTYWxGaFIyaHNXVkZCUVZKeVowRkJRVUZuUVVGQlFVcEJhSE5DVW5SdllsaFNORUZCUWtSSFFVRkJRVFpCUVVGQlpGVkRiWEJRUTBkNGRsa3lSVUZCUkRsWlFVRkJSR2gzUVVGQk5uaGhjbGhpTm1KWFJqUmpRVUZCVUhwblFVRkJRV2RCUVVGQlNVRktXVUZwV25WWlZ6RnNRVUZDVGtSQlFVRkZhekJCUVVSc2RreHFUVUZFYmtKMll6TlJRVUZHT1dOQlFVRkdhWGRCUVVONlJFTnlXRnBaWlVGSFRXVm5aR05IT0c0eEx6ZzNTMGxDWTFwRlJVcGtSa2RyYkhKVlFtUnhPVlZMUmxKQ1JrbEdSMDFCU1UxNGRHbHJkVTVIVFVSQ2RHeDNlR0kzWlRkTGRFbzNkWHB5ZG1abFZ6VnJkRkI2ZFcxS2NqRXZTM2dyYlRWVEt5dFdOV1k1TWxabmFrSXlZaTg0Wm1KbGVua3lhbTE2V25NellqazJPRGt6TVVSclNWTkxTVTFwYWpWSGJXbG5RMmRzUTBGWVRIbENiV1pUY1ZWemVXTXJia3RRYlRaUlNVUXhWell3VlhCWFUxVTRTMmh4TXpVd04wZFhPRFIwWmtGdGMzWm1Za3R1ZEhFMWVpOHljMUZQU1c1clRGZFFabVoxTm5KMGRrWk9SM1o0YVdOcVRscE5Ubkl3ZVRsVFowSmFkM0ptTUZZeFNrc3ZjR2R2U1RadlNWRnRWekZ6ZGpWQlFVMXBjbkpXV21GVGJrNVhiV3hYY0U5aVZWVkVNR1pvYjFOb1ZIWnlTa1Y0WW5jelJWRXlVREZLY0hJMVVuWnpXbHBIV1RBck0ySXhNVXBrTmpKNVRYbzRMelpIYUhZNGRuWndSM0o1ZVhsMk56VXJaalF4WldKWEwxWXhiMVJrVWxkb1JWbG5jRWhRUzBoUWVrWjRlWG96VTJNMFduSnBTRTVOUlZCRFFrTkViM2RaV1ZnMllrTlpTMVJ6Y0hsalZWaEtTM0ZrUzI5T1VGa3dUbk0zWm1OQlVHRjVkblpRSzJFdk1HOHJNVXcwTVdWUGJscHVSbVpXVWxGTWNFWnVhVlV5V2xCd2QyTXJjMmx3VmtOcFZXaDJMMUJQVjFsamNVbFlhak16V0U5UFVHNVlhV0ZWYkhkbmJucDBSWFJQUlZOWmFVTlVNbXg0U2l0S1luVkpNWEZNWTNVdlVsYzVWRkEwVVRaelpYaFFVRFZqUkVNcmIwNDRRV1pLTTBRM1JIUjZLMloxU1VWaWNUbGtjV2xJYkhWUU1GVmliamt2YVUxRWRraHBhakkwUkZaVGQzaHZlSGx3Vld4VmJFcHRURVJrV1c1YU56VndOM0pJTTJRMlNqRkdVSHBoVFVSMlJHSTNkMEZ1YmpaaFRUTjFWVWRDVURkUWFHbDBTM0Y1T1hKMVdWWnVTM0J0YzNkcWVuaERSbWhDTjFkb1NWbzFZMVZ3V1VaS1JtVmFhRWRyVTNCWFN5dFlWbFpQYlRGUVJHZzVhV2d5Y2sxdlZFRmlUWGhZTm1wRVRESk5kMFpLU0M5a1NEVnpXbXBZVVhWNE5sWlNjbU0yTDNaVVdsWkNiVXBOVUdsSVptaFBZVlY1VFhKblkzbzBhMFJuWWpaS05YcFJkSGx6UVc1NlJXeERlVVZDYlZoM1dTczBTWFZuYjFFeVJFdEJXRVlyWjBsalNUWm1WMEppYUd4VWRXcEJUVzVRVTJaRGJXcE9TMGxRUkM5TGJXZDNSekoyUjBwRUszaEVZVzF0Y2xFMk4xRnhNeXRpSzNwV2RFUTVVMjFFYTNjMlYyWktXaTlyZW5sNk5rTkVTRVUxYzB3clpqUjJlalZ6UzA1QmNUVndiSEpHZUZKUVZscHRPVVpUWVcxcWJubEVWelJtUldaNk5IbDJTbTVTY2s5TmFXcFhRVmRFZEZvMlUxTTFibFpuTnpjMUwxUmxNbU01ZVU5UVdIUjVhR3BzVkdrMVVreFFaREp2T0c1S1FtWjZZV2t3T0ZJNWEzUXpSV1Z2VEVsVmNYaHNlVFF3WWpKdldrbFFiRVpSZDBGTlNFZFNOR3RhWTBGRVZHUnBTa0ZHUms1RlRWWlhiV2RRVWlzNFVURmFaVVpxYWxKUmVXMHdXR2N4WWt0TGVGbFBaRGh3TVZOVGNVMHliRXBoV21wSGNURnhjMUpUTWtaMll6VnZjMnRUTVZac1ZrZGpZMlpXY1ZsQlltNW9aVEl2TUVGbGRUZGtOazlUZFhCRGJYSkdVM0pWZFhBMlZrMVlSalp4Y0hsR09YWkZOa1F5WWs1NlVFZGpSRTQyWldSRmVHMUVUV3BaVlRSNU9VRnhjV3RaZDFRNVVEZ3ZiQzhyVEhBeFpGZGxSa1JNVmk5TlVWTm5hR3BoZEVad01VRlNhalp0UkUxRE5uVkZWbXhSUTFKcFdYRm5ZVGRMU0UxT1MxVk1TbkUyVlROMU9HaEtlbFppS3pSdU5XSkxhVmM1U1hGdFNIUndZMG9yYTJ4T1MyVkljbE00UlRsVGVtSk9XRGhUZVUxdVZVeHNjRUpZWkZGcmFXZENWbWxNUmtoeFluSXdTek42UjBKYVpFSkVOMU5TZGxwcFR6QkVSR1k0U2xacmQzUndVaTloWlhWd2F6VTJiRlJRV0dWbE5tcHhNWFlyWTJ0c1NHWXlia1J5V21SUmNWQlhZbll3Vml0TGJuTk9XalZvUW5waVYyRlhSWGxuWlVSdFNtdExha2MyU1RWTWJHTnNUVzVxVFdGR1ptNTZka2gyTDJSMGJEbEliMlJvYzNJelMwbE9ZMHRNTnpCT1dHczJVWHBRUld0d2FXaFBaVEJoY21OaE9WVkdRbTUxV2k5b2EzRkdVakpvWWtKalZqRXdSbHBRYkVGUFNFWk5abWRvTlVocFVqQnlhR2dyVEdkUlZrTmpVRVpvTkZWSU1uZGpSWEUzVkROMVJtSndMM1ZaVFVkVlIyMXZUU3QzZUZoSFJXRlJVVzR5Uml0d1RqZFVkVEUxUmxBM1FqWTFUMll2UTFSVGJsbEpTa2xpUkhSRU5VSkxhVmxKUVRsMFZGZEdXVmRCVkhoalNqQXJTbWRvYVhGV1YyMXZWbUpVY0Roc2NFZERXbWxwY0RONlZVOXhZV1ZWVEZjMWRubE5TalZoZEhFMWJuSmFNSFZNVm05amJrOTNjM1JLVmpSWVdGVmtNR1l5WkhGVWVrTjJjMkpMTnpCb2VHeFdhRTU0VW5KeGFuRnBSRmh6UzFVMU1FWnlXbmsxZDIxWk1XRlRhREZyWkdKV1Jpc3JXa3hQWjJwcFJIcENMMnR2YjJKT1RWVk5SMDFZUlZGS09VVlZLMkp5UzFkVlNVRlpWalY0ZDNoU1R6ZFFjVEFyWms4eGRFNXdkRnBSY1U1V2EySkJNVE52ZURsUU9EWlpPR2xxUzFvMFJVaGtXR1JzWmxSS1ZGcHBUM05ITWxNMldIWlpkR3AxTlhveVltODNMMEpRYm0xdlowNDVNMWQxYkROV05reDZZekY2YXpCdU5EQmtMMnhqYmxKNFFUQkxkSGd5Y0hwREwxbDJRWFppYms5bFFscFBRblZhTldSUFVuY3lWbTFGTm10RVRFcE5VRXcwY2s5d05HOUdlblJSYVd3NFZXTnVXVGhhTDJZMFVUSTVWbk5NWkM5VU1XcEpZelZZV1ZaNlEwdDBOblpwY0ZWUVpFWjRVMkU1ZDFkbk1qWjVNMk5zVXpVemQwTXplamxWWlZOM01WcHVka3hMTVhRM09EVXpSV3hPTW5seVpFRTFZa2h0Y25aS1QyRk9aVFI2U1hGWVIxVldOWE5ZTDJObk9GbFJkRmx4U0RSRlJWaFRUazlaTVRORWJXNVpObkV5UkhkWE9WQlRWVlpSVEdaQ1kwRjZOV2hzY0c5QlZXVkxUMDk0T1hWRVl6ZHhTWE0yVG5sTWRuRTVOalk0THpFeFFpdDVXRTgzVkRkM1ptaEVOREkyUjFCTk9VSkdNV2hHU0doTFZrczNkR3BuYW5WeWJHZGxOWGxrWVROeU4zaFBOMjVNYVd4MlQwaG1PVGxrSzB4cGVtSklhRGh5VW1nclV6TkRRVE00U1ZGWFVHZGhUbWh5Tm14d1ZVTXdjRUl4ZEU5eGIxcE9hSGR5YTJsa05XMVVNbXBEZFU0NVVsQkdibk51UkVOUGFIb3pUblpqTTI4d05rZG9iWFZGZVZKSk1sbExkbmg2WXpaNlVrNUZTMmh6ZFVkaFNWZEdka1UxVDJ0c1lYZFlPV2s1V1ZWaVFtZE1SR0ZyTmtoRU5taFNabE42ZWpndksyUk1UV2w1TDA5UlJIWnlNR2w0ZUdoeWFVWkxRVk1yVmpZNFRraGlWR3cyWTNwMVEzTndaRGN6V0haeVRtSnRNRFpYVlRBcmMwMXFjR05hYjFZNGNqaFZaVlZTVFU1WlptdERNMnhsWmxKelJVUlFSRVJpWjBzd1FWQjRiRmhzTjFBd2RXdzRkR3RuYTJadFRrSnhaSEpuY1dwRk5tRTNPVU5sVVRKYUwzZ3JXVkpRU201VVVsQklPV3R1YW5wNk16Rm1lRWRtTlZoTlp6WXZZbE5NVlhGNWJteHhka1ZZYW1oNUt6ZHNjRFJGZEVadlNXaEhTazV6ZG1WMVQwMVVZalV3T1N0WmJUTkVkREE0ZG5ZdlIyMTVZakl6Tkdoc1lrbFNhVkJZYkRZeFZtd3hlVEZSWjFocVFYZFVlWEF5Vld4WFRHcGxTbUV4U1VwT1oxUXdiU3RETmtKMFlscFpUazFpZDFCNGFrc3liWFJ1YlVaRVdVMHlRMXBPUm5wWE1WUlVSMVpVVjBacmJITXlaelYwYkhWUFNGWnBURFkyYzNSTVpqWTBNVE5DVVdKRE1WSXpWa1ppV1RKNmVIcFJaSE5PT0RsRlJHSkNjbEExVURnclYyNU5VR3d5T0daTFJEWnZWRVJ5V1hoRmJ6RkhOMU42YW1KeVZXVk1TakZNTVdVM2JHNUlZVzAxZEhGRWMyMHhkRVJ2SzFRNVZIQkVhSHA0TUhCaVpUVnhjalprTW1NM05uUnhhRXgwYjFwSFdqQlhZblZvYlV0RWNHbzNVblZJVEZsdFVWSkplR1pRVlhkdFJFeDFaRkJ2U2tkeUszWnZUM1l2VUU4M1Z6TnZabFExZURoSVlsTjZTaTlFYzJkblFuWXlXRkZ5TW5kT2RqaERiV05HV2tsV0szcExOalZRUjNodmIwZGlNekZ1YkVzeGVraHNSMmx0TDJ4NmJUVnBSelZFTkcxbWJFYzNla2R2V1ZWSGIxUkZVemRwT0dGR1pITjVaa3hoYzFweFYzRmhhalJzYkVKMWEwRmxVM05MV1hSUmVFdEZUemhHUkU1aGRuQnZUbVpRWkU0dmRsWTFWbGg0YTJKeFlUWmFWRzVDVGxSYWVuZDVTbTkxTTNaTWVVZzBNa2hEYjJFelJsZDFjWGg0Y25GU05uTlFVbVo0YzA1TmNqWkpPRWs0TVVaRU9FWmxXVUlyYUdkdk5XOTVjMVZXYkVGVGNXNXVaR2N6ZWxRMlNXWk9aU3R6VWtGMlVFbE5WakZqTTA5a1lqTTFNMHM1YVhOTVJqazJaMncxYW5NNVlYTkVhR2x6U0ZBMWVYWXpPRGRJWVROb1lrSTFNbFF6TXpsdWIwUklSbkZwVG5weVVUUlBUVGRvUTBGUlkxaERTVnAzUjNkSU9UaGhhV1pVY0RGM2MyUjFaR0oxTTNOME5rVlhkR05tYVdVd1RtOXBPVFo2UjJGdU1ESjZNamhOTDFkbGFqTXhaRlkxWm1waVEwOUlkVU55U0ZCbmNVbFRiMGxuWjFBeFFrRmFUVmRpV1VWeWJrcGFaVXhVTDJOeVYybDNaRFIzU0hFMlpGUnNOWGs0VjNWdVVEbHpXVVIzWW1vNVlVaDRaR1l3VkVOb01ETkhiVGhaUTFnM09EUjFMemhWV1hGMVJIWjFPVFJpUTFoR1pqRjNZMllyYVZnMGFqZHlhbWh1TXpWR2NtUXpVRTluTlV4TU1qVndMMkYyYTB4aFJtNUJkSEo1VDJGbGJsZ3dSbkJxWVdKeFpFeHhVRW8zVkdKV01GQnNOa3R0VG5oamJXcDFORkJTTlU1dGVEaFJhVkJzVW01SGRuQnZhRkp6Unk5T1VrdzNaMkZXYVZWbFdHeExkMWd3TldreGVVbElkamM0VUZCM2FsTkhhbnBUWkV0TEwzQnVlRW93UW5Kc1ZtdDJVak5xSzA5VVRUUnpOVmxYZURGdmMzSkZSRXhDWWxSbFNHd3dORTFxTHk4clYwWkNUR2xWVVRVMFJGUkVWMlYyU0ZaeFFqRk1iWE5sYkV3clZsSmFRM0ZoVW5rM1pGZHVSRXhhZVhsMWFETmpaRVl3WlVSNlpVOVBlbFJ0YTNSd1lURnhZa1ZrTXpjemNtaGtWaXR2ZHpCaU5rZFRUWFJyTUV3cmFqSm9ZVEpoVlRCQ2RTODBZa3MyWVZOSlNWZDZWa1ZNUVN0T1ZrVklUbnB4VGxObEwzbFZjRVJyWVd4VVozZGxSV3hqUTBoUFVsSlpSbEF2YTNCTGRERkdiMVZsTW5KSWJubGFSemxrTTFsSVpHNUpObHA2TmxacVMxWkJSbGROTmpaWlFuZzRMMjlPWVhKeksyVkxRems0TW1wVWVscG1SVFp5V0dWVFMwY3ZiM1JVUjIxbmVYbHlibk5RTjI0NWNVdElWamxrTDA1aldHRnJLMDVPUkU5RVJWYzROVzFqWVdsNlpIUjBUR1UzU1RCUVFteHBjelpNTnpWUGRteGxTemh3VGs5eGNreFNVVGxzUmpOaVNrRTRVV3B6VWxOc1VrbE9aMmxMWm1KNFNtTkROMVpOY1dkUUwwc3ZORmsyYUhaRFRtOHpaRVZ1UXpsbGRrdzVlbms1Vms5dWVVNVBUR3BsWjJSeE4wY3dObWw2YzFSU2QycFVhMHd2VVd0SmRHVklNMGxzTjNOaWFsaEpRelZwV2tWcFkxZGFUalZ2T1ZCUFJqQm9jWEprTkRFek9FZDVaMUl6Wm5aRk4xRlFaV0VyTmtSVk15dHBNRGxYYlZWdE56TnpkMDFTVDFCU0x6WmlUREZRVFZZdmJUZFBUMlpuV0hKR2RscGlaV3RJVjNCaGMybGxiV3hYYkVsS2IwOVVWMDByWlRoeWR6VkhjamwxTURaeGNEQXdVazR5VWs1eFQyeE1aV2xKTm1GYVRVTXZNbmx6V1dOSUsyZzJaRE5HWW1wMFpIWkJORWxJUW1OcWJYRXljbVYwZUV4d1NITlZNVmQzYmtGeVYwRlRlR3BGV0VsSFpWSmpRVEJOWTBsRksweERRVlJKTlVKVlVtZDFRM1JDVFVzd1IwNUhLMWxSTUVnME5EUnFaak5UUjJZdk5qY3pNRlZxZGtsck9GQm1VRVY2UW1SdFRXMHlNVEJJWWtSVGJIVkpRMlJDV0N0S1ptWm1TRTFsVGl0UEwzVjZlaTloV21rdlZXUlRNSFJtVUVoU05FaG5WVzFETWpCbWIySTJkVTB6TjA0d05WaGliR1pZSzJWeE56WktNamRuYVRGWUwza3phRzVTVTNSMUsxSnZaalZJU2pGeWNtOTZXbGg1TVZJd04wdFpNbUowVUUwNFRHRk1XVEJUUjJ3NFRXa3pPR2R2YUhodVRHcG1RbEZoU1c0dmVuWjNPRGhvTURWbmFubzRPVEpDZUdadlNEQmpSSGRxVVc5b2NYcHRZamhPVjJwWVVIYzRUVm80TlhSMlJHUXZaMkpGUkdaR1dtZ3ZiMEZaWWt3MWJrWnBja2MyUmpReVpIVlVOSE5MZVRFd1ltVnNZbWwyTmtGek9XTlBNR05SZVhwNE9GQk5UMFJXUTI1M1owSnBjR2RyU25SNE5FTkdWRk5tVHk5UVRVVkhjbnB5U3poRVJUaDVhakZVZWpScE9YTnNaMHhZYlZsRU1FaFRPSGRMSzBGemVEaGphR0l2UkhKSlZDdEJWSEpoV2xRM2RWaDVjRUpDVW1Od1VsSnRjVUZFZG14dlRrOWFVRGcyVjJOdFZGUjRXVmh5Y0hSbVpVaHVWQ3QyVjJKWWEyMXFUMXBtVmpkUFQzWlJTbVphU0VaWldHWjNURWN6UjJaUllVRjZiMHh1UjA4MGNtaHdiME56U0hWdGFWcEpaMHRqVTFwbmNIVmFOeTlqVlVkb05VMW5ZekJ0T1ZWVFNUWm5lbmxxVEU1UllTdERZV2t3UmpGeU1VOTJVVk5WUWtaMFExQnJaMnBwU0V0UU1uQkVZWE5uWTFsM1NFZEpaU3RITW5SdllrcDJZbVpWUms1NmR5ODNZV0p2ZFd4TGVHSnlSV3R5V2pKRFR6ZGthakI1U25CaGVuSlVUbmQzYVZKaGNIbE5NVTAwYkZaUFNUWk5WVUZ3WVhSeFRHTkdTa1pHWTFKRVZrNWxTREpVV0ZScmIwUm9Va0ZJU0RKNGRtZ3ZiMGwwY25GdGQxbDRjMGc0Ym5OaU9FdG5hRFpNWWpsRFRFRnZaV2RvUTFsQ1owbFlXVTUzWm1OUVpqZDJSMFpHYVZnNGJtODVaV1JhZDBrNWNEVm9ORXBEYldaNlpITlRZVlJtZERsMVdrMVNTbnBJUkUxaVZWWklaMlZsUmtGR1NsbEhTa2xHT1cxS2FqQnZjMGhEWjNCbGJrVjBaR1psVG04clEwRmFPRzRyUVZoNU9WQjVkWFZyVGtzdmFXVnZiVkE0T1hWcGNHOXlObklyUjJ3MEwycEtMMEpZUkVKTGRVUmhWWHBPTVdkTlFXdDRhbk41YmpOcWNHVlBjVmh4V1hKck5rOXpTVEE1UlZNMGMyVmhLM1ZhVEVwbmJIRXpiVFl5VEU0cksyOXFNREF6ZVZsaE0xWnVja1JRYm1VMU0xTkNXRll6V0ZVclNIVlpOMmRoZW10aFlrNUtiSEYwWkZjclRERjNMelk0VUdjeWJVazRUREl4TjBORFNFMUJVRFJvUTI4dlQzWnJMMjEyYXpodVdqSmplVnBEYW5kbGQycHZSMUJQU1dSc1RFOVdVR3BuTVRNNVNGTXdha1l2ZURCWGVYRjZOa2RZZFVFM1pHbFNZaXR2V0ROaVZtTk1abE50WjJaM2VtSk9SVXQ0Y2s5clUybHljamh1Y3pFMU5ucGlabVpsZDNadlRITTROMVpSYnpkbGFUbDRWV0ZTU0RSclJESjFjM2szWTFWbE1sazNORlpLUWxGMGIzVTNVMVpMUzBwS2RFZFNPRmt6Y214MU0zWnVkbWhxYjAxNmJYbFRVMnBXVFVoblpEZGxPVkZXUjIxamNVbzNkV0l6YldOMFRFeGxhSFZQUXpGbGIwaFZZVWMzT1Vac1JHeENRMUJRUWsxYVExVlZhMmRaVDBKdmJITk1PVlJLTkM4dk5rUjJTSEkzTHlzclNHUXZaRkI1Wmk4d1VWUnhUM051VUN0SFpqVlhLMGhRYVVwMVMyTlpTMU5OU1c5blFtUlpZMDB4TDNJemRpc3JaWE5YYWpaQ2FUbERWQzltWlZSdFpTOXVaa1V3YWtWQk1GWTNlV2xJUW5SVlVtZEVNM3BuVm5RNVQySjFRWFpTVm1OMWJtaDBRWFo2TWpCcE1XTmpSWFZYTjBZclMyUklkRUZDY1ZKbmVubGxTRm9yTm1STVRIWnJWR1ZYV25FNFpVMUJhRFkyU21sVFVVMXZaM0p1TUdaV2FWTktVMHBOWWxacFpucFZURkpvUVdWSE0xTXZXVzl4WTI1SlNWZGxTWGRaTW1zMFIyOUZNQ3N2UVVaNldtMUROalJUYzFkMmNqTnlWM2QxYXpkNk1EQjRaRGhMV1M5NGJuRlJVRGxoSzJ4YVdWRjNhRzVOYkVSUVJUa3lSRmx5T1djeVVVMUVXa0V2Ums4eWMyMW5jV1YyUjIxUEwwOUlaRWRZZDBjM1QzYzFWWFpFYlhKRFJGSklTVGxFT1VOdFYxVlRjelZhWlZoWmNrcE9lR3RQYm5CSFp6TjFXVXBOWlV3clRrMXRjM2xYYTFkcVptOVZUblYwZVZCclJHNXRZMnhsZWpKNmJVTmlVbUV2TTA5cVUyRlJWekUxZUhsNkwzbFNNMlZsY1ZkS1MycG1hazFXYzNoMmJqUXlhU3RXVTBsd1lUZEhiRUZJVFVwbU5XOUNTM2N6UlZST1ZVOUVVVmhzZERGcFJGZzFUakZqTUhsQ2FXRjJTV1k1Ykhrck1qQklXRnBwWlc1MVdrWjFjWEpQVVhSeWVHZ3pkekY0SzBKdVVGSlpWakZtYzNkUGVrSXZkM3BHZDJSSU5ESXhhalpwYlZwek5YbE9hRWd5VlZvclR6QmhhbEZzZFN0dVV6ZHZWbGxRUjBWd1RUSTVUazVJWkdKNllXRXlaR3BGV0dkSU5tWTFWRlZ5U0VFMVYxTnlRbFppU21JMmR6UmpRMUY2VlhSM1RFTXhkbUp6UTI5TlFrRlBUVXhMWW1wdlMyVk1VRzVUSzNscGVTdExaRGx5TldSVmRISmFNbWQ0VjB0RlRqTkZXR2hXUTNSeGNIbHFSMFJWY1U1blVqUkNWRk52Um5CVE1UZzBSblJ5WmxoTWMzWjJTVFV2VW1oTU0wNU9jR0ZIYldJemNqUjJXV1pZV0hKYVJHUm1RM1ZVV25sWk4wczRhMEU1TWpWYVEwMWhObUZ4ZUdKWWJrbExhVU01ZEZwbmNVVkZkRmRNT1hkTVkxTkxRMjlHU0N0SGJqWmFZVmRvWVdrM2MyOUxaVzVyWVc1U2JFbE1iV2xITlV4VVVrTmFTR2RNZDNCM00wRllORUkyTmxkSFVUUlVUbWxWYzBWTVVsZGpOSFZMWTNWWU9DdHJWRXBXZEZWVFNFRjFlSGRVWTB0bFpHODVkak15UlhNNVJscDNORlZvWjBsckwyNU5TbVUyYjJkMU9YZExjVGx1VUdZemFtZFhhM2xEU0VFM05tMHllRVppVFdGNWMxVXZlVmhRV1c5VFVtc3laakJVWlRSSU5IWkNkVlJtZERaVmRuWlRaelUxWjIxeWR6ZDNRemxIT1dnM1ozWTBZbTlPUW1ab00zZEdaVFkwUkVOME9HcDJaMVF3YjFoQ01sQlRSMFY2VkZaU1YyeHdZbUZpUzFob1pFcHhUV2sxSzJ4c1ZUQTRTWE5wYkhwNU9WWmFabkJ3Vm5abFZFSkZWSEpwU1VkQ1dsRktibFYwUnpBd2JFUlNObXhuYUhNeFozSTVNMnhLUzJFdk0zQTRjRTB4U1dKTlVFMW9UbGwyTjBaTFNrVkxZV2t6Ym5kUWJFRjRNaXR5VkhGa2RuVmxibGQ2ZVVaa09FdG1hMWhTZUM4MmRVOHpPSEprYkRkRVQxVllORlVyUldwNE0wdHdWazlSTkU1R01UZEtZMHBDY0hsRkwyRk1PRm8wVVhoS1REbFpTbFJEWVcxVGExSlVOVlUxV0ZGNVlWWjVhMGhhTUVST2RUazBOemMwTUhOclZFTXdVV292Ynl0NE4zbFNNVTlLUVZwSUswMHJjM2xDTTI5R09FVmljRW93YUV0b1NrVXhkelpQY0ZWWVVrazRkVkpPVURobFYzWktaekJUTDI1NE5rTm1hazVFYXpaUE5XRkpUMlkxYnpsVlZIcGFVRWhxYURkbllXMXpOVTVzV1dKRlNHWlplbHBrWldWMFRqQldla3MxZEZObFVqWkRXWGs1YjBSRU9VWmFlVTg0ZWpWamVuTm1RM0p0Wkd4MVJWcHVUbk5LYzFoWGJWRm5XbmxQTm1aQ1RuUktjbFY2ZFRWbGFYcFRlRkZ2Y3paeEsxVkdaV2wxUjB4UmVsRTBTREEzYlZwellrSm9abWRpUjA5RVdXTkRUV3BCZDFJeU9XazJUVmRFTjBvdldUWmlTMU5PTXpJNWVtRXljSEpPZVhWQk4yOUdNazlaVEU1TFdGZGFWMVYwWW5kc1ZYbHhNV1ZYZWtOT2JIUm5ObUZ5T0N0WFRTOHZSazUyTlhZMlMxaHZTVGsxZUZabFFXVmtSMWx4WkZkUFoyMW5SMWg2YUdkVFEyMXFiRzAxYm05TE9YcDBRMDgyY3paNFZEWlVSbGRYUW1oMlpEZzVSWFk0ZUdwaE5GSlVVMVpQYlV4SE1uUmhWMmd4VlZCVmJHdExXbEZzYUZWYU1taHhWRWhhYWtoTmFHbDJTQzlTUzBGbFQzaGxVRGw2VDBSWmIwVlhVRWRwWW1FeU9VOUlSR1J5Y1hsM1JrVnlkWGhMV2xKMU5FdDJha2hETHpneWNraHNaVXhsZEd0RkwyWXJRbXh2YVdsNlMyMUJPWGRVZDJwQ016Wkxlbms1Y1ZwSU1EQkhaelkzV1ROMVR6UkRjU3RTT0dWVFUwMXlhalpEWmtablVYWlJWWFJ5WmtGaWRHdFNhMXB0WWprck5uTm9ialY1UVdFclMwbDBXREZsUTJGdWJWVTRWRWNyUVU4d01YVlFNelZRVVZweGRHbzFVRzF5WlN0a1dDOU1aVzVuTTNwS05GbGhlVEZGTmpKVGRHOHdSSEpHTW5GTU0yOXFNQzlESzAxbGIzTmhNMmRwVm1oRVpWWXJVR3BtYVdobmFIVlJiRzlMTkVFeWVsZENNMUpPYVZCR1NUTkVWU3R5YzNjNVprZE9aWFpyUnpWMWRXWmxWRVpoTjNNemVYRllTM0p0ZGxKNGNpdE9iVlJsVjBZME56bHFaaTgzU2xsWWJGSlhWMWhGUldwTllqWkpiRzVFWlZKTVNFOUljVkJsSzJOUWFrbG9kbms0UkdaUFNDdFVPSFp5UldZdk5Fd3JiVEJ4WnpCTFRGSlpVM2xCZUdZMGFWZFNSQ3REZVhablVraEtURGxGTVROUUwzY3hkRFZRWTA5dlQzRjRablkzVEZsNGEyWnZRakZ6WkZGWVpWUlRjMGxaWjFrdlZUSlphVmxyUlRWc1REbE5ObnBTY1hSVllWaEliVmc0YkdaRVVIb3hlREphUzJKSFVra3ZZbXBPUjFwM05VcDRVMVJWVkhJMk0yUjFSRVpYUlM5a1dHc3JUbWx1VFVabVVUTjRhbTVTV0dKSFJFWnFkRTAzTmpkNVNEUmhabGhaTm05Qk5IQkNXSHBSVEZCcGEwRjRiMnBWYm10M1kyRjNkM0JCYzAwemNGbHdNVWR3VGt4eVJHOHhiM2w0VFZKeVdXaHpNekYwWWtkdFYyOVpMM05vTURGSFoySndNREF4VFRCa1NXNUlUa05GY0VwSFZIZDBObEZXYUhBNFZWTnFVa3BWV0ZreU5VZDVRWE5sTlZOeE1IaHBTMDVVY2tzNWMyRnVRMUl5YkUxamJ6SmxhRWM0YTJ0U1prcE9jRmh3YTJ0T1JsSlVTMW80U1dGamNsbG5OVk5ITkcxVVFWTklZemRaVUVWTlpVb3hkMmhLY0c0MFVWb3hUM05OVUdwNU5YTnlOQ3RVVTJkRk1GTlBaMVpMU1dWdlFrdHNTbTlYZG5sc1JXRldVaTlQVFhCb2VFdEtWSEY1YTNVeGJXbExPVGRZVERoNlprcDBjRUpZUm01MFRDOVJiR3AwWVc1VlZ6ZDRORXRYUVZsdU9WRnhSa0p4VGxGeFNHeDBOWGd4WVRaNlIzTjRiVTF2VVVKcVJFRjRSVTVxVTFobk5qVjVUSFpNUTJsSlRsVkxkSEJQU2tSbGVFSlVjVEY2Y1VSWFJrdHpSRThyWWpnMU5FMW9lWE5pWWs1TlJtZFZMMVJRWkd4eGRWWm9VM0phWVZWT1IzbGlkVFptYzBsTVFraG1kWE5JY1hCa01XaHVUR1pJWlVGTVQyTlpZM3BsWm5SRWVFZDFXaXR5Vkd0R2NXaDJlRkJWWmtWd0wwRTVWR2x0ZUZCTFRta3ZTVlkyT0ZaWlFYUmxNMXAxY1haNFpsaFphRGhUTlRodE1Xa3ZjamhVV0hWbGNEZDZWMlYyTHpaRVUwYzNPVEpYZWpsQk5uWnhNemhxVjJZMWFHSk1NMFpzTm5aUFNqTXdaVzlxUWpsWloxQXhRVTRyZVc0eFpYUm5kbGxDWW0xR01rVjZLMlZ6UVdSbE16azJUMlZaZFZWT05uUlllV0k1ZURobVNIRk9ORE5vUTFwemJrdElkblExWlVzME4xSk9hekJGVDJWME56Y3hRUzlSWlhJMmN6bHRObmd2U1RGTlR5dFJjbGMwTDJFNVJpdHNMMEU1VlhabVoyUmtabU1yY0RkaWVHWnlORmRsTUVwaFppdG5ObVpHSzJ3NVExQlpNM0JwTDFWUWFWQlhhV28wUW14Mk1XVlZabGgxVjBneFMwczJaWGRVZURZd0wyWXpNWFl6Wm01eVVERnFWaTl0ZVRJdmIwWldPVmM1YXpaNk9GVTJPRlo2UTJSUVdrdzBOV0prTHpjMk0yZDJWV1kzUTNFdmJYa3lMMjlGTmpCU04xZE1ZekpwTHpSb0swMDBTVVJwU2s5RFMyTTJhemR6UVZFd2JXZzNaV0ZDYVM5WFVuUTNaVlEyT1VsWlJFNVVWVWhWUVdSMlVtbzRZMHh3ZDNCVGJEVTJZV0pLYjNCb1FtOWhaRWRZTUV0VlUybHBaMVZOWmt3dlNUSllZalptUmpCbGNqRmtZbTVsV0hRMVUyMVRORlZJWm1OclRsWmFNSFZzTVVNMmVEWnlTM2t5TWpJNGRrdHhZa2g1UkdNMkswVnhUV3MwVnpjeFYyeFpWbXM1VW5SMFVGUXhkREF2VUZkWVRUQjBOMjl3VFRjeFVtVk5lbkEyV0dOdWIzTlBURWxwY25KWGRHMHpZMUY1ZWpkeWVYcFJjRGhXYzFKRlJFRkJPQ3Q2V1RsU2NXdEZVMHBHUzJaT1ZXMVpOa2d5TWt4R1RXbzVSU3N5VGlzemQzVlRNM1UwZFd4eE1uVmxhbmhQT1VKSFNEbHlSelozTDBveU5YZGlRMmxtUzBsMVlrRnliWEpMVFd4V2FGcGhNRXR6T1VVMlZXSlRLM012Y2xGamNuaDRTR1p2VW1wUGMyMUphbXh2U0hoNFFtMWFlRGd4YTJaTGVGWkxhMlZNT0ZjME0ySTFTV3gwWm01VVNERlNTblIwYm01Q1RUWjNibEp3Y2t4Wk1VeGhSek5TV0dJM1dGWlZWbGd5UkhZNE5GSkVSVGQwWVZOdGIycGhibFYzV0hJeFVFOU9TVUpyZGt4a1lsSXJhelZKUzA4MmFXY3pUREpzZG1NNVRrNTZjMDVoY1RGV1ZqSkxUbVZhZFhRemNtSjFibGRvVFZoWFUzZHhkR0Z3TlU5dlN6ZFJXbk0xTkc1MmJ6a3piMlF3VEVWRlZtbDZkVzg0TUZkTE1FNXNZbHBIUnk5NkwyWlhkVTF3ZFhSdmRYUTFjWEppVDB0dFIxbFJOSHBZVVZRMVJUVkZXWGg1UzFocVpEQnlLekkzWmxjMGVIcHhVa3cxTVV0SmQxZHhTR1pLV0VRd1ZWZHdVM28xZFZWVmFrc3JiMnc1UXpCRlIyUnRhRGN3WmxSV2FWcFNXbTExZVdvd2NUVjBRelkyVDNoM1pEbE1kbVF3VkdjelJrbHVZV2R4YjFOcVpFMVJjWGt3Y25ONlIyVnhjRVV3WlhGa056QjFabkZFZG1oaFJtTlZOMWxyTXpjeVNrd3Jaa1F4Y2poaldFaDJTbFpYZW5wWFRFaDNPRkUyTTBObGIybHBSRTFVY1VwM1VDOUZSMU5ZVEU1M1JXOXRiRXBUTTBSTE1HaDFiMlZJVW5nNFpFNDRLMWhJV1dOVGVWTlBaRmhSWTJFeU5Dc3hka2Q0V2pGeWNVaEpOMmd6WWpObGRtbGtNVmR5VjJoVGVWa3lSVGgxVDJ4emRGUnhZM1JpZUVKTU9WQm9iV3RIZDNGbFpXWnFhSFlyZEV4R1NWbENaa05qY213M0wyY3ZLMHgxWmtKdmRIaDBjMWcxUnprM2NubFdWbmMzVlZaa2VGSlZZVXA0TWxZeFYxWkpaVlZqZG5wRFVHUmpaREpDVUdKVlRWUmhURk4wYm5BNU0yTTJSRk5PUTNKbmJrcDVWRGxvY2tVMlRrMDVXa2RCWVdNemMyeEpjRlJqVFZodk1XRkVZWGx4THk5QlFubFVMMkZUZFdjeGFsbDRkRGQxTDJSMk0weERMMjAxZUUxd1ptZHVaall4TmpWNE16RkNLMnBTU0RadVZsQXJURGRDV0ROWlZITmlVWE5YVmsxU01ISTVOblZUVEVzMWFFOXBSM2hDUmpWT2JsQTFjblk0SzFZNE56ZGlXa1JKU3psMVUyWjZTbXgyUlhRNFJ6SXZUVm8yTVRCTFRXdERZWGxSTjBOSVJtOXZSRE5qU1ZCSmQxVlVTVVI0Ynk5aFdHMW1VMlZ5ZG5aUk15dHBaM1IyVURncmEycHZNR05IYW1KT2FXZDNUREIxTDJkM1dHbHpUVFpZUVV4dFkySkJXWEl6VDA1b1FtWXZja3R1VVhZdk5VNDNOekJXSzJaMWRsaDBiREpQTjNReVowaHpNMnRPTURaa1VXNXNMMVk1Y0daS1UxRTBaRE13Wm5KTVJXRlFUbFpMTUdZMWJFMHlVRnBVVVVGVlRTdDFjMVpuYldKbldtRnZiVXQxZEVaclF6ZGtlbEZoTUd0dWFHRXlTVzVtUzBWVWRFSXJRVms0VURjNFVIcGtSMmhvYTNKcmIwRmxiSGhhZFZZdk9IRkxiMmx0TTFWQlJ6WmtjWGhuUlV3M05ISjNkQ3QxZUc1c1NFVkpZMnN6ZVZSb1dXUlpkbWRYTldsME9VdHhSWEpVY0VnMU9IcGpjMjF3VmxwS2QxQkdWVkJsVDBjeU1WUmlXVE5VYzFacFZUUXpkR3Q2WW5KV1JYTlVaa0lyVFRoM09HMUZPRkJXZVZkUk1TdG5jMVYxTlhWVFp6UmpVelJYYUZSalJIbFNiVUZDWmtrMWQwbHFhV05VUlRsNk1IZHJWakV4WTBjMmRXMUNNVE5WVlV4M2FuRnViMHhEVTFGNVRESnJXSE5xU2tFdmEzVXpkM0pvU0RsbVUwbDRLeXRtWVZveU1pdG1LMlpWVFhOa2VWQktkblpDV1RseFdYcGlVVXRZVmt4dlNHWTFZbk5CZVZaUlp5dFZSMjU0Y1dSdGVEQnFhbXhtU0RWNFVYcFNUbFJ5TXpkdk9EQTJiV295V2pCaVVHRndkMkZrZUVoNVVuZFNZMXBuTjFaWWQyZ3hTemhxUTNONVExa3JTWGMyVEdaSVZEa3JVRWd6YW1wVVpHVm1kbUZoTWpJMk9UZG5NMVZQVmtFdk1FNHdUa0prY2xBdmVIWnNPRFU0VVRaRFVXaHFkaXN6UjAxa1dqaEViM0p3VW10blYzZDRTSEo1TkVwdGQwNXNObUpVWWtFMVEwWndOMVJqSzBOb1NIWnpOeTlOVFdGS1VWTnViWFozZWpCU01ESmxRVlkxVFhWbGFXZEZTa3hSTTBodFR6VnFjMWRIY1ZwcUwyNXZkRk5qYjNZMmFXdzVOMGszVVRCa01rNWlXa1pCZFVOWVRYbEhZak5PVlRGSGVXdHZUbk55TjJWa1ZsQjVNRGc0VHpORU1EUXdkMUp0Y21sdVowUlpjRFZuVkcxNWFWaDRUbWxDWmxaRFoydE1WV3hLU1c5SVJDczVjMlp2Ymk5M09WQXZkekYxYlV4NFZuaFhiMEZpYTIxYUwya3pLMU12VUVOSU16WnZZeXRzTWtRMlNYVlVUalJKUVZBd1pYQnhhekJ0VkdKdmF6SlRLMDhyYmtOQlRFaHZhQ3RSUTNsQlRGQmtaelZwVDNSNFpuQnZWMGxFY0hOVmNGTmFPRUkxWkdZMWEzbEhkRFZxV1Rac0t6QnFaSEpPZW5OTFNGUlZVVFZvWTJFNWREUXdWbUpHUmtWNGVuWmliR2haSzBwa1dGQmhXVmRaT0VFMVpFeHViemcyYUc5R2IzTXhRM2hpUzFNMloyUnFTMDh3T0hGSllXUXhWalUxWTBsS2VsVkNVa3BrYlRKQlF5OWlOR3R6VEc5dGQzQktSV1ZZVVZnNFpIWm9SMkpNTkV4SlYxRjNOVUl3VEU5NFZYUlNhRnAzZW5oaWIwZzJaMGt5U3preloweDVNM0k1UkZSMFNFbHZObWswY25ONFdsUkVZa1ZVVm1OdVYzbHZWRVpTVlcxNWFtSkRiV3gwYlRaQkx6Tk9OMU5XUmxGMWEwWjJNRXBVYVdOWE1IYzNhRTEzTjJ4dk4zUXliMmhpZUd0aU5pdHpZa2dyT1hvclNIZFBhRGxtY2xGUVREQkRRVUZZYjNsUWNHZG1jSGQxVEVWb1JYRTFaamx1TUdWR1VFOXFiSEI2ZFdGcVFsVjZTM0o2UWtaMU9XaDRjMmt6WkhZM2RYbEpUbE1yYVhsalJqTnJjWEpJVW5GNVVERTBZM1kwVUZsdVRIUXlPV0pYVDJweWRYcDVlRm81V2pkbVJuWllZbEZOUkhReldERnVka1JQWjNZelFUa3ZNR05GU21NMFEwbGhTV2xXY1RSR2JXeFlabmhSUjA1dFJYcG5PRlJSVDFRNVdHaE1ablZ1Vld0c1dFYzJablpoYmtOaVRtdFVibTVMVldSMmEwRkxUVGRxYm5sTmVsRklSbTlhTVc1c2EwRmxPVXNyUkVaellucFlkVUpMUmxnclkwbDFkWGw1TjFveFltVXZWelpFUlVGbVRGTnpTRVZNYlhGRVNWQkpWbFJaTjJwbGIwUjNWVVIzUWpOQmVsb3JUVzFxVG5CTWMzQm9aa05YUlZGTlEzZEZURWx2VjJ3eGMzaDRTVkpoZEVodlFsZHZiemxQVUZFNU4zVnBRbTFHY3l0M1dFVkJRbVJpTkRWQ1VEZ3ZZa3RVU2xodk1qbG9kbHBUWVZkWGNUQlhabE5qZUdWbGNFNVhNamxyT0VONVIxVldjM1ZtVFZvM1lqSktUbmRIY3psME5rVndiV1JIYzNCcFIwODFWRmxTT1Rka01GWXJSVTg0YzJsR2JYSmhXRnBRUkZscVlrOWhaalJqYzFsaWRVOVhNMVEwZEZaWGNYcHdjMVUzUnpJMGRVRnVZekpIZEVkVlkwRjJSRlpXU0doWGRuazJaakJtU1VaeFN6RkdSMlpZUnpkNFRuZHpNRTV2T0RGWVdEbFBOblo0Y21aaFVXOVRVRGhZYW5rNVptZDRRM2RCVm1OdmNIVlFZM0V6U0VsS2JEQlpUV0ZHU3pRNWRYRjFUVXh2V0hZelZVOHdabmczTlhwREt5dDNhSEJTVkRoVFkzTjBRMDlyYkU5UldISjBVSFpTTWtkelNHVlFlVkJaYVd0NksxQnNMMGswVlVVeVV6aEhaM2h6UmxCSVpERTFOWHA2WVN0VVNscG5kazVJWmpGcFUyOWlNVFJtZUVaVGJVczJTVFZuWkhrMFdIZENjbkJhTTNoS1RFcFBRblo0TWsxMGMwMTZUemRTS3paUlFqTjZiekZrUmxWUk1FRjZWMGRSVEdwbVNUZGthRGxWV1RWc01rVklaVUZNWkdORE5YVmlUbTlxU1daQ1YxaDVlRkk0ZFdsT1lUUndSM1pCYlhaTWVsWTJUWEJCWTAxS1NtOWpla1ZOTjNkMUsweG1WMVZuU0RnMlUwUTBhM0E0Um5kRVQwWTRVVzlxUWxsU0wwVlFTM1ZZT0hZemIwWmxkamRvTkZoYU56aFZkVVlyZDBOSE1HcDVhM0JaWm1rM1VreHpUMUpTU0ZsM2VuZzRWM2RNUkdVeVNscGtka3haZVZwUVNFZHJPR1ZRV0c1NVMwSkphVmhGU1hORFVrdG1VekJxYzBsNVMwUkZaM0pvT0dwSVkwSTRNVGwwUWswckx5OTBhQzh4TlVaWVNWQjBSR0pZTmtKdFVFWkNZaloyZEhSemNubG9NekpEYkZNeE9XdE9WMVpXTlcxME5XVldWall4T1VVNFVVdDRibFZ4YVROSU1VTm9hRmgwZGpaWFlsQXlTRmx5TWtreVpVUTJLMEZ4VjJzM2JHcGtRbmd3VW5sUU1IUkxla3MwSzFFMFdURmFUMjV3VG5SbU5DOW9TbTAyYjJwa05IZDVZa3RSYUM4elFuZDNLMnBOVEM5R05HRnFTMHBPZG5vMVNrSnVNeTlJU1doRWQxQlBNbTFxVGtoeVVVbDBORnBGVHpKRldrTm1UMWRXWjBwdWVXbHFRemwxTVVoTVR6SktiVGgzVlRGUE1tazRUekkzVG01c2NFWmtkMHAzVWpBMlJuUnBOblYxYkZaVWJVWmtiM1IwZUZsRVVteHFXWGhGWm1FNWJGTjNSRUZzTlN0cE1UVkVXR04yTXpSdU0yOVBTamxIV0ZOT05HWXZNa2dyUXpOYVMxQTBiVzVPVGpWYVNFeDRheTluTTJaTVdUbHFXalJYV1hkMGVDODBjMmgwWjJwVEt6bGlPRE5UVm1OamNFNVlOWFZyY0d3dlJYSXJUblZYVERONWFuQTNNazgyY0VWTFdUSkZTVE0zYURGbFFqTkNjMlpNTDNnNGJGWm5SRmQ1WlRrNGExaFdhVVEwZFRSMFZuVm5TMWN4ZFV0Vk5sUlpUM0YzUkRaM2NISXpPWEI2WkROa0x6Vm1MMk16WkRNeE9UWlVVRE5tYXl0aVMxaFFjbVl3Ym1RNVMxRkxZMDk2YkdOeWRHMVNkVnBhUTJFMU9UVjZTbWxUY0U1b1Z6bFJWR28wZERWNU5WSlVaMmxZZW5ZMFdFeE9OV1p3WXk4MGN6RktVa0ZMV0RCU2MzWm1UMDFsVDNSblpUbEJUMWRKTVcxcVZsQnlWRWRqUTNsMFNUTnhXa2cyZEdSSk5qRmhTMGhPYmtoc2NFTTRhMnRJTkhScldVcEhabkZoU2k5TVkzZHRibTB3ZUZwdFZWWkdiVlZPYzFSbWF6WXZORXBtYnpGck0xTk5aVlkzV0dwS2NFaDNNRXRtWTBsQ2VETTNaV0ZDVWxsRGVXOVBRWE5xWm5sa1VrZHpiWEo1TVRrMVdtWnRZMGswT0RaRGJtWnBlbVkxVEM5S1ptZDZWalIyUXpsVlMzcGFTbGhoU21JMmJreE1SelpXZVdoalpYQkVLeXRyT0hkdlNGUkdTelpuTkVSWGRrSXlSVXRXWkVsbmFrRndieXRSZG5CaU1tRXlPWGw1WjIxbldHRkhRV1E1YXpObFdsUk1la0U1YVZnd2FsVTRRVEowUkc5bVprVnlRekF3V1hvMlQzSnliVTQzVXpWaVVFMVBabFZ0ZFRKMWNVNHZlWFk0VERSd1dVeDZTWGwwVEVkdFdqSkhNM05oU1c4M1lYUkZTMlpGYUU5NFkzTjFjRWRaWVdVNVQzcEhjM0JWVWxWbGJWSkxLekJXYWxkWVN5dHBWMVIyZEdwbmJXOWlhelo0S3k5bVRVWmhTRTltZWpNclZuSklabmRsUTBWQlpYQndRemhTWkhVNVFYTTFXRVkyWW5ZelNqVkVkazFMSzIxMGNteFBRbTQ1VUdFNFoybGhOM0puTlVkNU1FbG9Xa1Z5ZW1wS00yOXROekZpYVZwdVREQmlSRW81VEZsd2FXdGlUMjgzWm5KMVRsWkpXV0prVjJGaWRqRXllR296U0RCYVV6ZGxhblUzVlhOa2NYTkdWbmc1VEZSemJrOXVWR00zUzI0dlYyWmxUekpJU0RSaWRtZDFRM2g0TlV3clpXVXljWFl3Wlc5NVNuSkxNVE0wVkdKS1lURklRbGR3UXpkbU9XRTNOVWQwTDNCdmNrbGlVQzkwVWxGRlZ6QmpMeXQ1T0ZBMmEwcDFLeTlqUTBWVE1uUlRVRUprTmpFME1rRlFaWE5yVEhkRk1rNWxRMUJTVkhaVlpVaFFSbVpuSzNSRlNGUlVkMlZoUVROWk1rb3Jja0ZZY1ZnMFEySjZRVGRCUmtkcFJuZHdNbEZqUTJvMFNEbFNNbkV6WnpNdlJqTnpablF6TVU0M2FXOVVka0ZFZFM4MU5FczViblJtZWxsck16ZG5UWEFyYUdKQ00yOVBVRkZyZVV0MmQzWkJkRE5OT1d4blFTc3hSRFpDVkU1bE1HUjZTVFIzWVhGWVptNXpSMEpaU2paMlpHWmtkVWhRUW1wNmNXTnJNV1pxTDNsTFprRnlZV0ZNWkd0dlJDdHRVbkEzZW0wM2VuVTBiRnA2VW1aa1dsZERlVk5TVGl0RVRIbEVjeTlXVkZOa1MzSnBOV3M0VW1Sa2JFUkZhRWt6YkhGbVEzRmxNMXAwVTI1S05sVkdZMVVyTW10d1NtdDZObE5TU1ZGdVNrbzBVMGRVYkRGVGEwcHBWbE5RTkhSS1RqVmtSemswWkM5REsyRTRaazR2WjJaS00yUXpkMWQ0WVhCNFNtVlRabWhSU21NNWMybEdkUzlIV1Rkek4xTTJZVnBhTTFZeWNubERWak5YTkRKMk9UTmtSa2c0Y0dGaldscDRRblEyVEZocFUxSTROVXBOTjNsNmVVSldRa3N3WjAxWWNYRmlVMjR5YmsxTVUwRm9NbnA2U0hscmVrNU9kWE42VVdGdVNWTlpiRXBaWW13dlJXbE5iMlJTWjJKWGNYa3djbU5HUzJKSGVIRlRlbFp3TDFSUWNHOUJaWFE1VURGaFpVdFpka3BMUm5BMEwwOXNUa3BJYWxaWE5UWnJlbEpaYVdScmFGRnBTMGs1Vld0dGJucExUMlY0WXpSQ1dqTjZiVmd6Y25GSUwxTm1WbFk1UVN0VmREUTJWMDQxSzFkR2VVMHdVeXRIYWpCamNXSllaVFpoYUdSWWJFdFlSM0FyZEc1R1JHSTNVMnR3VEZkb1RsTnRVRXB4Vmt4S2VXaFBkRGwzZG1GalJqbEtNMlIxTlZObFkzVnhMM1ZtYTNGU1VtVkJVM05uUzNOb1JqQkZZMmRQTW0xaFlteGtSWFpaVkhWWWVFTk1jM2ROYkZVNVpHcFFhbkp2YkRkeVUwMDFkbUkyTW1NelRtUjJielZRWVU5d2RtRklWV0poSzNSMFpIUnhZVEl3WkRKbVZrd3pURnBIYkRkT05WVmlNR2h3TWpaNE1qRnVjbVJ5YW1KSE0wb3lkRXBUVm5SaVlWZFBWblphWmxWV2IycFJaM2xUZFhaa1NHcElibWc1UTFwVmJUZDRZbkJJTjBkNWNFaEZkalEyWjFJNVZ6Um1jMFptY0dwb1VXSmxaMEkxTlRaTmRrSnJiMVJqVEVaTVlUWlJaWEJWU0ZVNFNpOHJkM0Z0S3pCUk5WQldPRlo1U0hKYWIyWktkbHBaYldoTlRtazFMMmxqVFRnd1RtbFJjVmhRWXl0YVFsZ3lUMll2WVdGTmFFNXRaVmxHVkhBNFpVUmFRM0Z2V1ROc1duUjJSMXBrVmt4NFVrOU1XVEZpYVdOa2FUSmhibUZQUm00elNXNXdPWFpTVlRJNWRWTkRjbFZKVGpOd00xbFdTekZrYnpRck1EZHFNblZ2VkM5aFlrOTVabkZWWm14aWFYUTBReTlFZGtGbGJrSjJSVFk0ZVVGMmR5OVhRbEkwTUhoUVFVdDZlRGQzY0ZGdlpWaFJOVFI1UmpCQ1ptbHVORGswUkM5elptZENaRWx2YldaclEwWlFNV1puVWpGU05ISTRRMUJxVDFCbWNDdHNablJHWm1nNFVWQmxlV1pIY21kdWFubE5kbWhtZUhWNk5GZDBNMHQzU1VaQlVVUjVTR2REUVdsdWFEQjNhbVZMUVU4MVpHcFdSRkJ1UWtFeVNIbEpSM2RCTlZGNVYwNHhkSFJoSzNGaFJHSjBNemNyTjNGMWNtazNRV2xNZDFaYVpWbGpNSEp4WkdwV01YSkxhbU4xWVhGVWNVNTBVMkZtWmxobVNtZG1SVnBNWkdOVk9FcFBXREZsT0ZJNVluZHBkRVZYTXpkck9YZDBZM05XUkV4b2JDOXVZMEZRY1M5RU9VRnFPSE00VDNJM04xbG5TemQ0V0RSRldWbElibkozWldSQmRWcDNWa2RtUlhwUE5uaDZWRXM0ZDNoMlkxUnRkQzl4WlVObmIyRlZXV3htZFRaSldFMHpTbXBCTkM4clJscFhhM2RuUzBabU9XTkRXRXhKVTNOUWFHUjNZV0pCYlhkNVpuRnBVMmxITUVkVk16ZGxaa1IwWkZCT05qTmhSM05EYVdwNlpHMDFjSFpVYTJWS2FsaEdWRlZVZG5GWllsTXhjRFJSVmxocGNFaFFNbmxNVkVzclMzazBlRTE2YVVSTFowbDFVVkZaYkdod2NrUndMMjlITTFnck0zTm1OMFYyVVZoblN5OW5OQzkzYVhkQlRraEVaa0Z5UVZRdlVVbDFUM1pGTDJob1JtSTFaalJKWkZZclNFMUdabWRTWkV4UFJ6bEJhamhUZUZCelVHZG9OVVYzWlhaM01tRlJXamRKUkZoWFVVUlFOMDlqVVVsellrTkljV2d2U21FdkwxZGxRV1lyUVVabk55dFVNazV2WnpkelRVcGxiekpOYUVScFdIaHBSRnByU2pGbk5GWmtSMjl6UzBWQ2VYQkVNbVJ4V1U1aFZ5OW1Oak00UkhveVNVdEZabnBpYW5adU1IcDNOUzlQVURWMFMxUjNURkVyUjBoQmNUbGpWRU5HWjBOTmNVVlRUSEZWTTFnek5qWmpRbGwwUW1KUVMwNHhUakJxYzA0NWFWZGtWM2hvY2poV2MyTTBOMEppV25aMFNEUktjakpGWmxjelZVaGxaVmROT0U0NGJsaGxjVEo1T1ZOT05GSklTV2hDZW04d05GUlBNV3gxYURaQ1NDdE1OSEkyYm1SVVR6UlhLME5IVHk4MWFIaGlNMWhZUTJaM2QzZzNPVWMzVXpkVFRDOUVSRVJKT1hkWlJFTm5VaXM1UkZndlIxSklWMDlTTjNkeVZGaEhWekptVmxaMVVHeFVjRWRETVhWVVIxSXpibkZxTmtsb2FWVnJSMlkzYUZCd05FUm1hWE5YVW05aGRuaERVRWQzZEU0MlYzZEVkbGxJWlZrellsaFdXRkJRYnpsNlYxQXhOV2c1TlZKRmRHNXhUV0pqYVVoUmRHZFpWMFZDVEN0c2FHRklORGh2TjFKSlkxaEpTelpGVGtwWldDOXpRVTQxV2pjMGJGQTJReXRLY1dGaVZEbERiRFpJY1hKRlpEZEVWMEpKZG5kU04wVnROM2RPTms1Sk5rY3ZTMGhqV0RGeWExSXhURzVOTVhFd1NuTnVVMUJWYkVaNmQxWmxPRmRFVGxnNE0wZzJSblJUU2l0c1RIRm9SMlpKWmtKcVFYbzFXSGRJWjJ4bVNtWkRRMkkwVUdFMldIazJRMDV3VVhjclpWUkJLM2QwTVVRMFZqVjBPSEY0V1RVNVoyMTBRbTAyVEc5SFJVRXpRVXgwTWtoR1lTOWxMMlIwU2pGNE5UVXZTR1pNUkc5WVFqazFOemQ1Ymk4d01rczVhM2RRTVhGbFZqZHRaR1ZvTjNocmFGbFJZVTAxWkZoalptcGxObGcyYTFCaFNtOUJSQzlXU2tKRU9URXZiMUJ2WW1WSlJsQk9hbmhQYW1odWNqUmlORGwzVldWV1VGbGhNVkFyYkVoQkx6TlFWMGxQU0U5RVdFRTRheTlsWnpsWVNVMVVlRzVzUlRobFp6azVSM1pvUTJOTk1uVkZSbmQ2UkRkdlNGQlRialJTV2poTFpuQkhibFJtVVc1aFMwMUJSQzlYZGtSMldXNWpTbGxDUkM5WUwwRjVTR2d2TTB4b016aGxkbVkyU0N0bVZ6QkpNM1pRY0hreFQzZElPRGhsUnpnd1MwTXlWa1I1TlhRcmEzTjFTWEo2VFRjMWNTOWlTRkpNY0hWcWJrbHJNVGRVTmpNNFVqZHZZMUl3U1Zrd2FFMUtXV2xwTlZVMGQxaEVaR2xNWlRaeGFFMDVVUzlIVkZKYVlYSTRVVTE0T1hKTVNYcExTMFJSTlRoVk1WbzRVV3hhVVRsVVZYcHFTM0VyWVdrd1RITndlbmg1YUdkTFVrVkNabkJEYW1ONlVtZ3hjbVp0YXl0SE1XVlNXa1JLUkZoUWFrTnFiek5qU1haRk5rZzFWMjFUVm1sbU9XOXFPWEZrUkhKQk9FWkdLM1IxZDJOVllWbHhaR00wU3poVUswZEZWblpzTDJkb2VWZzRWVGxMS3l0Q1F6WlRLME16VTNSNWQxRjVjMnN2ZUV4bFNpOTFXRGhFTjNWSWVtZERaMHdyWldvM1JVeFJka1F6Y1Rkb2NXOUJZMFIyU25acVpEUnJlR041V0dkT2VYSTBaRVJGYlZGVU9FZGxRbWxVU2xkRGRqbElPRU5tU0VGR1VEVkhUM2xoTjBGelNWb3ZTQzlqTDJzdmNDOVZka3gyTkM4MVJHNDRabXRSV25OQ1JEbDRlRFpZYkUxdWJraDNRU3ROT0hZeWEyZEdia2M1YldnM01HRnNWV0YyVFdndlNXdzRWRXhOYTBKdFlXMDJOa3RxVlhZeFV6QTNaVzlOV1ZWNlYxUjFlSFVyTW5WQ01qbE1aVXRqUW1Wb1pIa3dTRzVxZWpWYWNERkdhbEkyWWxOTE9WWlBWWEphVjB0dVpGaEZVMnRQZGs0eGIyNDJNV2hoU2xockwzb3JMMDlZZW1kdGNISXlkVk15VVVJd0t6UjNSVVZ3TldWUU1IRTBWRGg0U1ZOSVVGaDFaRzl0WTNKdmJsbDFaa3RtZUVSeFF6TXdVREUyWmxoc1NGQnNVSGRvT1VRclkwdDRhelJGTlRFdmNtZFNUMWRQWVZvNWFYRkxVSFoyU1ZkMlEyVXhiMFJMWkhGbWVGTk5PVlZXWWxkUGVYWjZPR1p0WjIweFFWRXlRVWhxVVVGU1YxQTNZbkYzYTBsSmNuZHFTbFpWVkVkdGNtdEJhMWs0TDFGb00yUkpXWFl3YmxkRVkxSk5TVXh0YzFsTFZWQnZSVEJITVUxNllrZG5OVGxyVDJzdlExQlZlRzlOTWpoaWVEUkZUeXRuV1ZsU2R6TTRNMnQ1V0RSdVpuTllSM1pqZDA1bGRXWmxORlZUTDFoUVdtOVZTR2d5UjBacGFVeFRNa1JhY2preU9XVXJLMlZRVXpoUlZFcHhPREl2TWk4MGIyNWlkbUowTW5OaWQwZzVaRlpHZGt0QlJYTmthMEZNYkdGVGJHeElhWGhNV2xkd1kyMHdNRmh1Um05Sk0yOVhUQ3RsVGxwTEsxWnZSVFpSYzFSbWVtaFFlSFF3UlZkbWVFOWpNRzVqUlhBelUxRk1VVlZGZG10bVoyZ3hWRFIxZDFZclUwbFhMMVIxUTBoV1ptZ3JaMUk1VnpSV09GY3JRVTE1V0dwa1ZqUkJPVWtyUlhWc0swOUhhRlZVZVZwTU0wWnNSSHBGT0dGRmFqRnZUR3N3UzFCek5taDZSUzlXUldzMlRWWjViVEJpYXpaS2JUUXZWekZIVjNSeVpWWnNka3haUTFFeVlYUk5NRWxQSzFWelYxZGxOamRqYWsxd1NWcGpTSEpQYVRWbGRHaFVXbEYwYjJsWmFIbG9UelZzVFZjeGNHUmhaMFJMVnpKbGJsSjRZa3MxVUZWdmRGTTBhSEo1WjNOMGEycGthWEJVS3pSeWNXVXdLek5zWldkaFVWWTRiVGQ0ZFZaSVVYSm5UemxDUmtWTWRHd3ljbWxQT0dKQ1pEUjVSRGswZVVRNU5tcDNOWGR3T0c1M2NuWkdabWNyYW1jNU9WcHNPRWcyZEVvNFdtd3JTRVV5Ym1sQ09VSXJWR1ozUVhnMFl5dFFPRGg2ZW5aUWVsQlBWWGt2YkhsQ1NEQkZOMHBpZUZnMFJXUnRRMWd3WTFwMGNsaERUME01UTJ4aFUyTlNOV3BQYUZKc1JtVTBiV014TVRKS2JEYzRPSGxZYlZnNFUySnBVa3RRUlhSM2VHZHROV3d6TUZkMWJEWkJXRTVRVDJnMGEyeDNVMUpRV0RGak5IYzFhM2N6Y0c5WFdsbHRZbWN4ZW1KUGNIRnpPRmt3V2tKbFNXOTZVM1ZTVTB3d1NYWnJXU3RXWlV4MlR6WkVhWFpoYURNMVIweFNNV2hRTWtkNk5GaG1TbWx4TDBKb1IyWmphRkoxYjBWcWN5ODRTaTlOVEVFeE9FTklWR3R2VlRkRVVFbHBaRU5SZVV4aU9IZEpOM1YzZVVaNk5HWnJSblZsYkdGb1MyUm1ZMXByZVd4NE0zaEhiV2RQWW1SU1dqSkVUMFUxV0VnMlVDdEtNbWc0SzJsQ2NHNVVVM0pQUW5vMFJtaEdialJNVkhOSlpUSk9XV0p5UTFKTlUxcE5SbVpvWTIxM1dVOHpZUzlQWVhFclYzUkpOMFJVZW10c0wzZGtVMkpNWjIxWUsyZE9hWFpzU1VoWFNHSnFhR3BDYkdWM1JqVkRWbmR4VFVjMU4wbFliMEZsZG1wRE1WbFBTemhLWW5GdmFIUjRkekkxV1RWa1YzVnpNSGQwYjBaT1p6VTVXVmNyY1dacWFXRXZVa1oxVFhWbWRrbHRTMXBVZFhwRVdqRktRbk4yZVVsRlRUaEtZVEI2VFRkbVZHMXpkRWx3UWs5QlZUTkJRWFZJZFhCcVJsVm5lblJSV1VGeE9FWnhPR2RZTHpndllWWlZRekZyV0ZndmRWSlBXa1ZEZEhodmEwTkZPRUpYYjBsVWExRllUSEpHTVc1Qk4xaGtjRlJpVGpOeE0yNVdNMlF6WkROa04yUjJNMlF6WkdaaFppOHJPVFppWjFWc1NXRlFkamxPZWtKck9VNHpaakZhYXpWaksyUklVV292Wm5Od1NIVk1XRzFNWkZKR1VIZG1lRFVyVWxjeWIyWkJhRGhOU3pSSFFubEliakJhU0NzdmNrZDRkbkJ2WjNob1QydElibmRMUmpkbldqSmtiRTR4VmxWT1JtSTNUamhCWkM5NFVXVlFSRXQ1WmxCdFNURkVVRmRUU2pZMWMzVm1UMk5EZG14R1RXeHFZakkyYURFNGNHbFZlVFpqWVhOcmJsSkhaMDlCYVdZd1Ywd3hOMVpwVTJGME0wNU1XVGxtUlRkbk5tNUtaRGhUT1V4WldFZEVUMFJyV2tONGNXMDNXWEpDYlhsMVJ6UTJXVkJGZFhwalQySjVlbVpyZFhKRFJrOUVkazF5ZVhoek1rUXZVVlowYVVOMGRXaERaek5UWjFSQlRrc3ZVVGxZYkZCbmEwaGhZbVJaV0VGTFJYaERTSEZEY1d0a2FtaDRaVk5MT1ZKTVVGVklkbU5CWWtKSk0xUlFXRWxwWkN0c1NYQTJRV1psV0ZkMVZYTkhUV05tYXpOcWJXVjFORzVIWm1nelZ6SkRMelJ3T1VabVoxbFNkV0pHWlhWWkwweGFkRFl5VlU1b1l6VnZVRXM0YjJWSWVtaHVjRTlIWkZOSmNYRjZRbmxvVHpkTE9IVlBWMjVoVmxvMlFtdDZNRnBxTHpaV04waHVlSEJTSzJSc1N6RTNUVzFZTVVsWWEyTllNMGhDYlVsR2NIcFJWRWxRV2pKclUwTjVZVmh0YjNoTVR6VXlVRTF2UldjNE5GcGtja0ZPUXpKUFdIa3JkMDlvYjBGME0zTk1kREV6WW1KWFFsWlhUQzlOTjNNd1R6Vk9RM1ExVFRoYU1qWmxTbGt2VFUxc1JEWllRVzlwVTJoS1NEUjNZbGsxWWpGaVFWYzBibGRpYTJkVFZGRjNPWFZNUjBWcmFsQldORVpqTW1ob1VHMU5UMUJaUVc5QmNEbDFVWGROTkVWTWEyd3paRmx3VjNSR2MwSTVTMHQzY2xndlJrdHdiakZyWkVRM1pqSlpXazg0ZHpOelJsVktkSE00YlZGbFVVRlZOR2RLTTBseE5XaE9UbVl4YkZneVR5OHdkRVpTV0hReloyTXZia0pZYXpsUWRHUjBjVGhZY0hNdlNGQmlOM2R0Um1abmRXeGlTek5PYW5NNGQwWXpkVXhoYldoS00ydFliRmRNVEdWeFFsSjNkWEY2V0V4aVlrWnJVRnBpYWpoWlVrTklhemhQYUdsTVJISmhjVlYxUlc5aU9FcDNNbk5IVG5Od1pVVmtWa2QxTnl0RmVtZzNaVFpKZWl0c2JUWjJja051VlRCUGREbDBhRGt6Y25SU1JsWm1Tazk2Wms1ek1uQjFjVmRMUjJGSGExcG5XV3AxU0U5d1JGSjRiMmQ2YWpGWVVUWXJTRGxJU1RkamNEaDRlWFpOVVVWSmRHaHVZMkpuY1ZSdFJIWjFWRmd3ZHpCdE1XUmFOSFpwVUU5NVpuRmtPWFk1YUdjMGFtTk9aR2RPTVVaRU9EQkJlak5NVldSSWIyRmpiM0JhV214c2VXWjRLemwzUmtoNlUzTjVhWHB2TjNod1RpOUlha2htU3pOQ2RWQXdRVFp4Y20xYU5ISnhjRzExYlVndmF6bG5RbnBpYzJNeE1IaE1UbWx2ZG00emQxaFNaVU5yVFhjeFdHSTRRalZXTldGcFRGZDJkRE5oV0hsdlV6TjRibVY2TURGUk5EaFNNV3hwTlVRMFltNVlhMFU1VFRkcldVNDRVek00ZDJSSmRsbG9lblZVYUZkdFVUVjFUVlkyT1hKMVF6SmpUV1I2V2pOUFdEUTFUelVyTTBabWNHbFhPV3QwV1hFMWMzTlZPREp5Um1aR1ozZzNNSGw2V0hCMGJYWm1jaTl6WWpSemVtWm5VWFJ3YUUxR2FrbE9WMDE0TUhodWNVd3hWMmt5VjI1R2FFc3lZekZ0VkUxNmVsTlpjblJHZEUxYVozWmFiMVpwWlVWa2RYUlBSMk42YlhGM01uRTFibk5hWW1KRE5qZHBkbnBaV21wcFdFWTFUVXhxU25sbk5uZHBjSFZ0YW5sYWRVcFlTMGwyUm5ac1ZtWXdOR3N3Ym5jNFNITm5RMFJMU1cxdU1ubzNabWRrU25OS2R6TnBlRGt4TmtwSmIzaFZTSGRZYldwNlYxcHpiemwxYlRsdEsybzBhV3ROYmt0NWJVZHNlRmRxYUdOb1VVY3hWV2h3YkhOV01IWm1TRUZtYVhVdlJIVXhhak0xVG5kdE0ycFpjVEZMTlZWWGJqRndVMFZxUmxvNWRWWm1Za1oxSzNkUFptUXlUVlJTU0hGakwxbERiR05QZWxBek5YWTJkRXhXTW1STVl6RmtUMlkxUVdSck5HZHJRMDV6UjA5cVluUklObmRrTDA1QlV6SnNXazAxYXpSNWFFOU9aamdyU0hrMVNqUnZiazU1YTBOallUWnRiVko0YURCWlJuZEJjMUpLYTJWRVRVbGFaVXBDVkdzeVNETndiV0pCU25WTllYUXZORTh4VkdoMVJrUllOV1I2YVdSa1dGaDRkRkJYVjJOWFFVcExTR2REVEcxbFkyMDNSVVZFZFhaWVdsZE1kR3BwVkhWaFVXWmhaa05sTkdscVN6aDZSbEp5WkRaT1ZrMTZjMlp4Tm1KUWVVdHdiVWxKWkZWVVdVaFZkelpCTTI5U05HbHNhRU5QTW5kTk0yTm9Za2RhYVdaVVlrdGllVFpCUnpkeVJpc3ZXVTlrV2xkbWJuaDBjelJ0VkhwcWF6bDNVMFI1UVZjME9ERTNTRmRVZERGakwwNU9hVEp3Y2xkcWRqbGljbVpZTmpnMFMwVk5kMkV2Ums5SmJWQllWVm96VEU1SVNtbHpabXQwU2xoWGREUjFTWE5xV25oUU1GRjNaR041ZVc5UlNYUnVRbmR5Y0RoSE0xWlZkQzh6Yms5S05ucHZNREZoUlVGMWVFTmxVRk5FUTI1MmNIQlJNa2RhYW1aTlRYVmFXRGxRWlRGa1V6STJOSEZXSzNkV1JGaHNPRzgyUjNadVF5dGlUbUZ4Tm5CaWFIUnpWMWhIZVN0c1pYWktPSFJRTjAxS05tTXJNbmRPVUZZM1NuVnNla0lyZUVwNVZsQmhkMnBxVjNaa2VqVXZTVTl3WTI5alpsVjFXVTlsUjBWb2VYQjVXbEY2ZWs0MVYwUnhObnA1VjA4MmFFeE9XVGMzTnk5SGFIb3plWGhSYmsxSVpGcHVaMGd5U3pWWk1IVmtUemREVUUxdWEzZGtlRVJ1VkhaNWFrcElaWE5OSzJSUGRXbHpUMlUwY1V4RFptdzVTbFIyTURoTkszZFhURVoxU1RNNE1uSktkVmRRTWtObVUzRkViVWR0VlVOWlpqWm5jbTlYU1ZjME9HcHdPRzltVjBNNVpFZEtSRGhCVW5abmRscDVZMUE1V2k5UFdDOUJkSFF3U21oUWJVUk9iV3hDVEU1UmJYUjJPR2htTWtGelZGRkxlRE4xVTBoVFR6aFdhbWw1ZDJOWFRUSklUbXhzYXprMGFXbDBjRU01TWk5TE1VZHBNSFZxZERGSFdISm9WSEF4VjI4NGJtTmFSbmRPWkhoYWNFSmxVMkZCTjFCQ1NWQTFiMVZ0YzBWaVdraEpLMmR3WkZoS2QzWTBMM00xVkU1QldWSkxWamQ2UVdsRVN6WnFXV1UxYmxKTFRHbG5XbTh4VW5JNVpucEZSRkJ4YUVGNE1YVlJiMGd4UjI5b1RISTFkMFZ6ZVU1WmVIQndkRmg1Umt0clRsRlBZMVZZVkZGaFpGRmlWbUZtU1VKNE5qVXpUMlk0ZUZoRlRYaG9aMnBsYlV0a1ZrVnRWVVpqUjNCVFFtODBWR2RXYjI5dVIyVlljRUpRTVVkM2VYSkVVbkZoVTI5T1kweGtLMmRWYlVneGEzcEhhVVZuV1RkR1FVZ3JjV1ZWVVhVeVdVMVFSMnBVYVd0M1drUm9iMFptU1hvM1dVSm1VR2x2UWxoVloyeGFWbkp6TkZFMGFuaFZPRU5vVHpCRlFXeDZUekJYU0RGcVJHMDFRMnBTVUhsMlZYbFdhMU5NZWxsNmVrcGlURFJwY1VwTlFYVldZa1Z4VG0xdFlqQkVaa04yWkZSRGFIaHdXRWQzSzJ4SFR6aFdPVUZoZDFWM1VGQm5WblpGZEdwc1ZVbG1SbkpCTTNSMWFFeHFZa1ZVWXpWcWVsQm1SV0pCZFU1RE5UZE1SVkZ6UjI5eWNERlNWWEZKZUc4d1RITk5VekJDZUZCaGRsUnhUMHhGZFhwSVZteEhUbVJCWW1KbU5ETXdjVzFFYkRoQ2RrNVNNMmx5V2l0Vk4wa3hiV2RWYkhsSk5GVkpielpKYVhodlJrZHJNMmxxZDFsRWJVTnVTVkZ5YUVSWVJsTkpaMnN2V0ROVFNHOVhZMUZ2WWtzM1FUZExXWGhTTkVwTlRtOWFSMlZ2T1ZCQlQwVktSV2RDUjFaWlZtRk1kMmhIYVVaSVNVSkRUM05YVnpOTGVVbEpOWGhMWVhGRGNGVlhUR0ZUU21rdkwzUlpWbWhXWkhsUVYwbHFhM1ZqYUcwcldVSk1kek5QVW1jMFdUbENNazlLWlVKalUzbFRiRlZMTkVwVVF6WmxSM3BtYWpOU1VUWnJZM0pzUmtkRk4wWmlXa2R6TTFCTmJVeENTWFI2ZVhSbFZ6RkRiRzFWVVZSQk1YcG9RM053VXpjMlNtOU9SeXRwWVhWM1ZEbFdWazFCZWpGalExcFFXVmhvZVdOV1dWUlhNV3BTZEZSTVpWcEljMkZ5TlZkUVpIaFhheXRUZEhWVFdFVTFNRFZNUmtsU0wwdG5TV014VFRac1RXNUpVbmhzZUZkUllXZHFURk5hZVZRNU1qaE5TR2xIVVZSdUsxUkRZMmxLTkV0VFdqSm9TRXRtYlRKeVdXRldSblkwVERkbmMyeEdSa3RsZDJKVU5sVkZRV05MYTBKelNURTRWSEZMVjJnMGNISkRRbEY0U0hjelVWUTNRM1JuVlUxVWMyTkdVek5NVVhkd1VWaG5WRWhITDJZck5taHhOSGx5V21SNU5rUkpTV0pPTjBnemNtUnpORVJtT0VzME9UaE5UWGhvUWtaeFMwVnBWbVJIYVV4MlNWaHBkMUV4TURaQmNEQkRRemhFTkV0c1kwdERVakUwYWt0a2VsbDFSVm8xV0VVMlMyOUxRV2t6YzJoeWFsSm9ZeTlRVFVvNFluQlhXRUV2Wm5KTk0xVlJTREZUZDAwclIzQnRWbWs1TW5sMGVrWlBielJoT1doWk5FMXNXRk0xV2l0SGRrVjBVMnQ1ZURST2RGVktPVTU2ZUZNMFUxSTJZalIzYkdaVGFqZENjbVZuVm1NM1FsVlRSbGxGZGpGRFRIZE1jRVpsZHpZeWRHYzJjMnRaWms0d1JXdExUbUU1Y2pRMU9XOHpUbmR1T1hORFZsQlZkVWRsZDA5NmRHTnRjVUptYnpOT01IY3JkREZDYkhseVNsUnBTa3BhTDA5UlQxSnZTa3B3V21ScWExRnJZMkZIYzJReVIzWlNkWFpoTW1Sak0wVnJTR1JRYXpsWk4zWkxVMGh2VDI1aU0wNXBkM1ZTTDNoNVNubGxOeTlRZERsR01VdFFLM1UyVkRFNFFta3ZhV05tT1RRdlR6QXdXalZQT1ZwS2FqWmFkV2hKZVRkc1VFOXhOSEo1ZWpOUVJuVk5VVWR1VDFGMWJIZzFUSGxFZUZoc1MxVnNRVmxVVkhCV1NEVkVTSEpxTm5aNVEyNXNUalpsTUM5d1YxWkRNRXRFZEZsUFVrdFFhakZVTmpOUFYxUm5UbEkyUkZOSk5tZGFObTgwTkZnM1ZuVkhaWFZJTDJSamRIZzNkREJNWTBZMEwwbGlkelp6VGtkaE5GbERORUo1VlU1R2QycHJiRUo0WTBWT1NVVk1jSHBVVWpWWlEyOURValJSTmpSNGQzTTNhVWhRWkcxdVpISm5RWEp6Y1V4U1YwbFdlVmhHVjBod1QzWkZOV2RqVkhCc2VtMUNVbXRwZFVrd2JGaHJabmsxYkc1R0wyVkJiVEF4YVV4VWVHOUdkSFpvUVdsWlZYcElSRUZ3VUUxeVZVZEtaWEpLZDJ4dlZVdG1aazF4YkVWQ1dHOWllV2t4VW5ScWRWUXpMelZPTldaWmJ6aG9RbFV5ZEhKTFRrSnhhVlp3TDI5V2IyRkJNM0JTVjNwRWMyOUtkWE5qVGpWRmVtTndWbkU0Y2xoYVYzSlZRV2RyTDI1U2VuWjBZWFIzZEdaS1lVdEVPVXA0ZUVKRVNWWkNSMFZEV1hwUlpHVXZWMlZHY25SQ1NrSlZablpUVW1oMVlsZFZTM0Z1ZEZsQllYUm9aa3A0ZEhwWVptMXhWbE4wY2twemNGSmFkVEZoZFdaU2QwdHpWekZuV1M4MmMzUnBVbGR0YTFoaWIyYzBVWEZWVVdGdGRXSldhVzR5UjFJclNIZENhV05OZW5FNVZtOTZhVUlyV0VreE5tbDVTRWsyU21sUFMwbHBZV1JVYW1SUmQwRkJPVkl4UWxCeVJrcGxkRmN5UlVOUU0wRmhURlUyTnpkR1MyZHhUekZJYWt4aFVFVnVNV3RYZWtrMWVXWlpjMjVpU21aQ1IxaEZZMHB4UzIxalRESmtkbXh6T0dNNGRUUXJUek5xV1RGS05HTk1NR3RQY0RGTFJrVm1ia0pQYnpOVlMwMVlUbWxhYjJoWlZtczViMFJGV1V3NVpFSjRRbkZ1YVhsa2JucElkVkJxUWl0QmRrcDBZbVV4ZEZWRFRIYzRjSGt3ZEZVMVJrUnNSbE13U1c1SmRYVmxRa1JJY2xRNFlsQXlSVzQwVVZJeVoweEdibE5UVFdaRGFtMVlURGhOT0VscldtZHpWUzlhVkdOVVRFSlRTa3htYlV3dlYwVjViR3BTVGpVMmFHUXJXWGgzY0VoYVZVZHFlWEpOZVhBNFdHNXFNeTk0U2l0Qk9TczNWbmRFYkhkUFRqaEhaRGhCUXpVMGMzQnFVRE51VlZveGFtZFZRbUU1VlRabWFIbFNOa2RyYkcxQ2VrOVJhQ3Q1VXpkb01sVmphVXRGWnpOYWMyTlZUVTlZYkZWd2RWcDRlVkExUVdOUVNsQnFjQ3RJVVc5MGIyODVOamhUYW5GdWJWcFFWRk5IVnk5RFdGTlNTbTlxVjFWSVVtRk9RbEZSYUhGNVVtOVZlWGRSVVVOQmFWSndXWGRrVW5sMlIxSmliMUpIZVhkdEx6aHJhSEprV2s5RFVVdGFTbmx4VjFSMlYwZHpaVkJhTUZkUmNqQjZWWFpTVHpBNU9WVlRWMHhFUmtwWFowdE9TMVZJVFdkT2RGRnNiWFpDTDNoV2VFUkJkV0pJVFVWMGRHRmxibmcxTDFoMGJUTmlOV3BWTlhodVluVmxXalpqWjJjelpVbDVLMU50WkZobVMwWmpNWGhvZW0xVFVURjBPVXMyZG1WcVlWVnlialYwVUZGNFFVNVdNemt5Y2tZMVVGa3hPVzgzTTJsNlducDJNelp6UnpKVVFtUmlNMWxLVkZSemR6RlVSRXhtVkdRd055OVlObEF4YURsVE4zWmlMM1JIY3pCdWNtWXJibG96VlRZdksySXJWMkZ1Um1FM1dFUlRiVmxCZEhCWk5EVk9ja1pUWmtkS1UyMU9ZV1pZVjJ4a1R6Wm9WemREZVZCQlYyNTJibEJLYlhsNldVRlFja1IxTjJaNk5XSlFVWEZCYnpZMmVuaHFjM2R2WnpCRFNUTlhjR2xIY3pKVlNuVkRURzF3UW14RFNUWXlNV0Z5YlhWVmNYaGljbE5pU0ZaMVVuRlhaRlk1VG10amJqQTRRMWRITTJOeWVtSnZhMFpGVVRRMlJUbEplV2Q2V0ZGd2JFeFBZV3BoYjBwamRXVnlNRzVTUjJoV1NsSkZUMlYwTlRCM1FuTmpMMnBEUTFWNlVrUTNZVE5EYUdsd1dFcDBVa1ZqVlVwRlluUnJTVkF5Y3pCclQxSkJTWEl6UzFKRlNWcDFiRTlMZGtGTlFrRk1jR3hyVFhWWE5FbEdUbE56TVZGSlNXaEtRMFZDU210T0swUk1abUV3VGxCWFVHSjNTR2xvUlVKUVQwbHJXbWRGUkVORVVWZHJRV2c0V2pVM2JHNXpRa3A2TW5oaWFVbEtSV0Z1VFVGdFlXeEpjRmRwYXpSQ1VtRlJTV0pCTmxacGRFaE1ibUZXV0RFMGJXMHpkWFJDZFU1Q09UZDFMM1pUTVhVd00zUnhWMDR4ZUZweVZEWXJaVTlvYlc1c1ZYZE9XbkJYTTFWa2NrMHhibTFMWWxaNGEyOU1NRmRUTjJGMWEzazFUbTV4ZDNreWFHVXlhVUpPUm5kWmJVSlFaekUwY3pnNVMwRkZOVlo0WTNCTFZqWk5WazVTTTI1TWNYcERUR1ZSZWtFNGNGRlhZelIxS3k5SFNuVlJiRloxTDFwamRsZzJWbE5qVFdNMmJVVkRiRmhHYkdSTldXbEpNV1V4UzJGd1dVZEJXazg0TVVadFQyaFdUbGhVYUVZeGFVWnlVVU5TZDNWeFpXdEJSMWxQTjB4SVNWRnBPR3hSWkVJeFJFaE5RekZSY3pOQ1NFaEZZMk12TmpOMFQwcEpSbll5ZFZWVVIxRm9XRW95VkhoME1ITkdSVWx4WlV0UFVWbFJWVzlxYVVWT2JVbzFXVzlhUm1SRVoyaHRLM1pwVTNnNWFUYzRkVmQ2ZERoeU4xUnRPVmh1V0haeU5ITXZZbEJxUkdRek1UZE9UQzh3VG1FdksxaFlWbVYyTTIxdWR6bFFabll2ZDNsUlR6Tk9aazk2ZEhCdFdIRmpiRVJ0TjNCS1dHTTFNSE41WVM4NGRqVklMek0zTWl0TVRWUlBhVFVyZFdKcUt6Sm1NVXBvV1dNdlpqSlNkaTlZZW5BMFNtNUdiV2s1VjFSUFlsZEhjVEpPVFRJeGVqUk5WM1U1YzNKU1kzb3ZaQzkyZGtWMldtMTJNV2cwTkU1Nk5qUmFZaXRvTjNZM1dscG1PRVJuTjBONlRVRkJRVUZSUVVGQlpGVkNkMUZCVVVGRlZVRkNRVUZDUVVGSlFVaG5RVWRCUVVGQldrRkJRVUZCU1VGQldHZENTazFGUkd4UFZYZEJRVVJCVG14emVsTmtNREF2TW5waWRHMHpZblJ0TTJKMGJUSmlSREptWW5Sdk1GbzFjaXN3VkVoMGJVcE1UMUZYWTNaeldrazBlVm8xYmxCaVIwa3lVRnAxWWpkak1uVmFVR05EUnpWUlJsQmpSbTlOUWs1elFuVm1RakEzWjI5eWJVaGpZbXMzYUdaRE5HcFdOV0p5ZVZremJGWnVTbUoxWkZCalZsbzNhR0ppTkdjek5XVm1lVm92YTJaM2NYVXdSa05aUzNWM1YyNW5jbVpTVTJkdFJrSjFTMmc0V0RkcmFUaFdiRGx3UzJjMldIQXdhMjV3Y25aU1lURjFVMnRqYkdFMWIxUjRXVE5wY0daV01FdHNiMFJLVVcxaGVITldSVFJ4TXpGV1dGUmhNRmRXY1hWeGFtUlhkVFp1UWpGeGNuQlpkbUZyY0ZkdFlYUjJhbHBsVnpaek9URkVhemwyYkRWVFlqWjRNekZDWm5GbEwxZElRbXBpZVVkMFYwNDRZMW8yTkRkU2VETTRVbTFXY2s4NE1tUlRZMkZwTkRKNk5YTXZiMUZLVEhkeGJIZEpWbmRNWkRoTGFqaERlVGhEV2k5RGFuZG5aMEV4VmtjNVZrWnlNVUl3VGxKMVVGSmlURkZqWWxWaU56QlhiREJIWkRGSWNqbEdNMHhIUldKNE9HVndZMVp1WTBVMkwwVkVOakk0Vm1zeWNuVTNXRlpHZFhweFpHNDVOM0pNTTFwUWJUa3ZaRzVKTmtFMU1qVjZibUp1Y2xCUVVqbGtNbmxpYms4emREZDJWVkJsYjBKTU4yeFlNRGwyZFhabVkzb3JOVmc1ZUc0MVdHWTJOeTlQVDBORFYwcEJlbUZDTHpCRWIxbElhelJRVkc5U09HMUVWRTlJZW1OUVdqUmpOM2ROYUVaSlprcExZVnBEWkVaNVdFRjVibE4zYm0wNGJDczRhalZUYjNGU1VqbGxhR2xrUkdRMlIxZ3liRUZ6VlRCU2JGQlRja3hSWjB4VmRISXdjV0V3U1NzeFRGSTVUSEJrUTFVNVZDc3ZVM0o2UlZsNWVHMXlLemR6YUdWQlEwTkhOR2REUVVoeVJESnNZbGN5WWl0dVIweFdkREkzV25ReU4ySmtVVmN6WW5Sdk1VSmlZaXR1T1dSRGJXRlRkVEJTT1c5eU4xSlBTMjlNVVc5S05uRkRSbkZHTVdGQ2N6Wm9UVFpvVnl0bldtVnZaQ3MwV2xFMFN6aFpOR3ByVG1ORGJHWkRTUzlCVlhaQlEzWjNWblozUVZoM1IyWjVVRVpUUTFaVGFqZFJhVE5qWjJkTmJ6ZE5TWE4yU1VweVMweElRMDlZZVVKbGNUQlRhakZoVVd4aGFGUmhaMkpsWnpSMWIyVmxiMEptYjBobWNVTm1jVUl2VjBVM1IyMWphMHR6V0V0elJtMTJSeXR5UmxKaVFuQmllRTVoZUdKbGQxRlBPR1IxYzFkbWMwaG1ka1pWTDB0elNGQk5ZV1pCVkdaM1NHWjNTUzkzUTNZNFRtWTRRUzg0YWpCbmRITm5jM0ZyY1V0QlMwTk9jV2xEWVdsbksyZHFVbTluY0ZsdlNEUndSbVpUTml0dGREbENialpDWmpKUEwydE1MMjlRSzFKUFYxVlNWMVZJVjJ0VE1XdEdlbXhCYW5CRmVqVkNTelZSWlRaUllubEJka0ZNYUZGRVEzQkNVRmRuUmpOWFFWRnFTVTVhYzBGM01uZFRORFJDY0dablNISjVRMVI1Y1hSNWNYSjVTM0UxUzNGSGNYRnNVbkZwUm5Gb1pEWnJkVEJTU0ZKUk9VVlVNRkZwZDFOeGVHSmlSbU00WVc0MVRrbHRLMmxSTmtwaldXeG9lVlp1VUdZdloyVlRWalZDT0dwT1IyOVpVVFI0VG5ob1JYcHdaVzFpYW1ONGRUVnBUSHBvZG01UE1IRjRTMVpuZEhKdVdGaEVhblJwYlROalEyVmFUeXQzV0hwbldtNVZURTlEVDJWVk9EaFBUblY0VUdOSVpUUjZURGRPV0hwYWRtbElaa1Y2SzNGWU9HWjJORTh2TVUxQlVXRk9aMWR1UVhNclFsQTJRbFZaVm5WUVkxQlVLemhsWjNkQlFVRlJRVUZCUVUxQlozaGpjbGwwVW1aRWVub3hRVUZOUkRaQlFVRkJRVVJWVldwNGNVRkJRVUZCVG5FdmJVWlFLek5tTmtkQ1MzZEZTbWRCUWtGQlkwRkJaMEZCUVVGQlFVRklaMEpzV2xacWRFTXdOVVZKVmpOTGN5OUhlR1ZRUmpaeWJtNHlZbWRqTWpkYWRESTNXblF5TjFwME1qZGlkRTltVDJ3eGMyMVpVRGMyTVhWNmRYRTNSWEZzT1dGWFZYTlBkRlZaTmpKaFlrNVFWVkF4VkhwMlNuSkhhRlJrVm5OeVRURjZSVnB5YzA4eWJFcGhNVm80T1hCQ09VOXRibHB1ZEZoMlpYaHRPV1JKVkRab1IyNXhWbVJaUjFSaVVUUkdRbEIyTmpJd1EwTjNZMGRxVW5wMVJYcHFOMFJMVG5SclZURlBVemRET0RFemNUQk1kazEyWW1KdFozQkZNbXBRYm05eUwyUldRMnRrYjJaeU1tcEhZMGxRTlZVNVdsbzVOWGQwUW5CMFZHTXhjM2t5YlVNM1lYWmxkRzlNWVdKRFdHVm9ObXBYVG10U1dEQnpWRlZJTlhKVFNFcHVkM1JoY0dsb2VuSnpVSEkyWmxGNmVEYzRibmRrZFdsWk1IY3piVGd6Tmpoc2R6Rm5kSGd6Tm5JM1IyOTBhVk0wV2xJMlJETjNWWFV3TnpGRVVrTXhSemh6UzFkSk9WUmliVkF3TVVaWVNVeHVhM3BZVDNaalIxQnpTMUJYVTBSSGFra3hiQzlzZGtKR0syWjBkMnhXY1hOclZEWjBiWFFyY1U1a2JUbElWVE5tUmxaVU5EZ3llV0ZRTDFSWGNrdEdNeXRYV1dKNk0wOHhSbTlyY2pCYVpuWnhVakZqZDNwSE1IWmhiVkpaVkdaV01GUlpXR1puTWpJeE5XeHFja0p2T1V3clVXbGlSV3MzZG1sa1RuWjJkU3QzWm1VNU5XMHZNbEpRZDJVd01UbFNOMlpJT1VSMVNXSlVTSGRRZDFNemQxWnZOM1JVZUVSWU55dG9aMWd3WkhCelRTczFUMGRRTmsxMFpFcHlURGhVV0dwa2NqRnlhVUZQY0hodFZtVklWSE4wUWtjelVGQkdNV052WmpKeVRuRnBlQ3R3ZVV4c01FWnNXbVp0TlU5NmRIaEJaWEpGZFhOVU5VOHpielJ1ZEZoUVdqbDBXWEozUzFCMksxVlFVRWhhWkROMmVXVlRMMU5IWmxCNGVscDZNWEpaY0dZcmVTdHVTMmRvVm5FNE5qWkNkR1paYnpkelJUazNSV015UW1aNGJqVk5la1JQVkhZNFpGVlJTV3g2VjFWRVNqVXhjRUo2WlRRMVpWRTRjbXhRWlhnM1ZGVnBla3RGTmpaRmRHTm9WekJMTjA0elVFcEhVRk1yUlRkUVJXaE9jbVZDTm5sUmFHcE1kVXhJYkdnclJrd3JUbnA2UVhwc1VFZFlTM2RCVURWVlVWSXhUV2d6YnpSSGJHRkJaRmRGWjNKQmJGWjBaM1V4VVhjek5VOTFWREEzZWxRMU4wWTFlRkJxZUVobU5rNWxUVFlyYUN0WE5VbHpXUzhyUkRCd09UQm1MM1pzWkhCTVduZHJWakp3THpsUU9IWTFkV2N2T1VaSU1FNW1VVFk1U0RNd2RqbERaeTlxTVdWTVpXRXdhM1o2YVV4aldERjVUalpTVTA4NVZIWmlPVlp5YlZoeGVVRnhZWEJwWW5KeGFtazJTbnB0U0ZSWFQwNVRUR1ZNZG1nMlJETldaVXcwWnpoaVQwdDFWbTU2ZDJONEx6WXhlVmhzTWpWS01VdDBWbTVUYldsck5uTXpTMDFxU3pGeVN6YzBiRGh5TTJoMEx6RlpabEZDWkVaRU1VUm9OVFJEWVN0eUwzRmtlRlF6ZUU0NWNIWjBaWG8xYm5NNVlUSnFXRWwxYlRobFpERlNSREUwU0RjeFJWUnNOa2cyTmxkV05FMVVlVTVDT0hSeEwyczBUakZOTVhKaGRUVXdhM0JpTUU5b2VYUlhaVEJPT1Zsd04wMTFMMkkyU1hGM1ozRnhhbkZZVDNGdE1WRm1kRzlsWVcxbFRXeG1VMjFHWmxaV1N5OTRTQzltTmxRdmVVczNjVWRzV2xoa1ZtbG1PV0ZaZWxwbmN6Rm9TRlpXT1Zvdk4zWlpTaTl4Tm5WWE9WVlpiVVJTSzNCRlVqTklaVFV6Y25NMmNtcFhNVkJqVjNkMlFYbFFhWGRHY2tKMlRXNW5NSGhXYmtVcmVUWnJUbVJKTkVkUWJHSmFVVEV2VkhCeVFpczRibmhpU1RNNFIyWTBUbU5ITlRSQlYwNW5Xa2RDWjNaMlluWkRVMDFZZVRneEwyUXZPVE56UzNkQ2FYRkJRWGh4YzBGM05sVkphbTVuUWxreVFtMXpiVVJoZHpoRVMzZE5SRlY0VWxSQ2QwMUVaMFJoUlZvMGVHcHBSMWt3V1dkSlEwUkJVVFpaWjFablFuaHVSbmc1VVd0RU9HaFNLMDE2Unprck9DOUhlVTFYYVhoc1owWnNTbmROYTIxUU9IbzNVVWh5U2xsYVFWQm1lVU01VmpSQldWaFhRVFZCYTJGNFlrWTRXRTl4Y0c1MGMzRjVUWHB1TWpOaWRHMHpZbVp0VUdKT2RtRk9ZbVJ6TW5WcWNUZDROMXBTWlRKTWRsaGxkVXdyVGxVdmJsUmplVlpCUkhsVFZreFBNVk1yYURKeVNHdFZkVEJZUVhSU09IbFpSVUZIY1UwMlRXeEZSVUZZTlVodGFHMDRhM1JtZUZSME4wNXdMMmROTXl0Qk55OUpXUzg0YkdSWFdUQjFkVnBFY0ZKUFdFWkVXV3MxYVZocFNUZFhVM0ExWm5KS1ptTnRTbmxoYkdGa2NrVk9RakpUUVhKcFNVeDZaM2wxUkdFMFMySm5NM1ZFWVd0SWRsbEhRMWxGV2xsUGVUUldVbVZJTlRSbFptaHpLMGh5V1VsU2QySnFaeXN6VWtscmIwMTViMlZzV1hKTFVuQlhhWEpQYVZNMlRVaHZlbVZwT1RncllXWjBMMFJ2YWtaUFNtUkNjRUZuUWtFNVEwZGllVXRzTjFCMU0yZFFiaXRoZW1aS1VIWTRiSFlyZUU0NE1IcFRTMlZVYkZSUlRreE5NWHBrY0M5dFMxbzJNWE5IWjJSR1FXaERVRFI1ZW1SWVFsUm1PWGh0YldaRFZqaE1iVFJaYUhkWVRHcGxjSGx0Y0dGVGNpdGlXbkF6WmxKd2NVZHhVMUI1Y0Vnd1EyWXlaV3hrVGxkQlJVSkNZbFk1WjIweVpWQjVNbFExT1dWM1NGcDNjV1ZYV0dnMllqazNlSFpOV2pKTWJUUm1MelZJTjFWMGQzVmljR2hpU1hRMFpHNTRUVE5xY1haR2RpdFlPRVp1T0dWbWVFUm1SVGs0UjNoTlZVSkpUbFYyVGxOeVZrWmphWEJ3S3pFMmNXUnhjSEl4VGpOd0t6ZGFkMEV6VEVNeU0wMVhRV0ZwVFZsRFIwRjBOSFJFT0V4S2J5OUxNRkJOZFRNcllVZzJjV1p1U0hoUkx6VkxXQzlGTHpGc09GWlVOMncxTnpjemRTOXJVR2w0YVU1a2JXbFFVU3RwU0UxMWFVRklkV2xMYjFwcFNVMVVhVTFNZEdsR2RIVnBUREJwYVVZM2RXbFFWR3hwUm1aVGFVSlpXbWxGTkdscFIydG9hVVpMWkdsQlpGcHBTemN2UVRsbGRVVklXazlPU0hKTlpFYzFRMHRHU0UxU1NUUkRaSE5TYURReVdWSndLMUpxYmpCNGFscHpkMVppT0dkblNXOW9UVGMwUkdJdmFXUXhVa2hPWkZSQlEwNVNSV0prVWtOSVpGSkdabVJTUkVGNlVrVkZiek5SUWtrelVrWk5NMUpFVUUxNFJXa3pVa0Z4TTFGSFoxWlNSMEYxZUc1YVpuaGpiRGRLY1RWQlVFZGFhVTlIWTJoRlpuSTNTblF2WnpsbU1rSXhNWE5CYVVaRlJsSXhjMVZ3Yms5WmJIWktVMUE0ZDJ3cmVTczVkMEp0WmpWS1NpOXBSek41WkdJdlRXUTNUVUpDTjAxWlpUZE5WVUkzVFZJcmVrMVJjMDV6UW1ONlRVNXhUbk5TYzNwTlJXRjBUVVpMWkU5UlJXcDFTVmxxZFUxclZIVmFSV3AxV2xscWRXTXdlblZWT0hwMVkwTk1kVko1VEhWTmFVeDFXVk5NZFZWVlZITldRV3hIVlZocVRsVmpRVUZ3WlVOR2RsUktXRU5WVlVnMldEaDBURVJxV21GbE1HdDJZVk5YT1ROVFVIRTBablJNV0d4YVJTOTFVVGQ1YUN0emFDOVdlRmcyWlN0SGVXZEJNMVZSWVRaTlZFeEpTRnBpUW5KdmMwMWpZblJyY1VkemNuY3hlR1pIWlRWTGVYZG9XRk5yWVRZM2FreExPVnBtVW5Kd1QwMWpZWFJyY2s1emJqUXhkMHBIWlN0SGVWRlJNMU5UWVRZMGFreEtSbHBRU25KeFVrMWpZVTVyY1hCemFUQTVkMGR0WlRkWGVWRjNNMVpYWWt0TVVHeFBXbkowWlUxelpqbEpTRTVrZEhONGVsQTRjRGgwTVRSWGRVa3llVEJQV0V0SmJHdHBTMVp1Y1VWeVRFMHZVMVJNTTFkYVdrbFRjMnhVTVdFMVlXSk1ZUzlUZUhKWVJHeGFOak55VEU5eVpFNHhjM05ITWxOSllqTlRLMU0zVVhCSmVXaFhVMGhPWkZwWmRtVmlOVXh3Wmtwakx6bE1jSFJqWkdSdWMzRnphMWRXTUU4eWRXaEhlWHBrVjFVM1lUWXlOMGhETVZwTFpuTnJhbkY1TWpsWFdGQmhObVUzU2xZNU1HdEVNblUyVVdOalNUTnJiMGR6YVdneGVHcFBaWGxoZVdoSVdGaEpOalphYmt4TmVscG1hbUp4VTJOalF6TnNjRWR6YUhBclV6QjBTa2w2Y25GRFkyUlpWV3czVWxsRGFFZFVXWFUxYTNCV09XODFXRzFYZDFoaU1XRnljRWhNTlVaeE5WUnhObFUySzFaUFVETmhXRE5CTUdkdU0zRlFVRU5XTTNsT1VIbEVTVVJ3Tm5KUWVXaG9PVGRWT1RSRGEwdHRLMHhsTHpSeldHWnNSeXNyTXpod01UZzNNelpSTm5aTGFuZFRUREZLTDJ4V1lYTndkamhxZFVGSmJXOHhWakZrWVVkdmVGUkdPR3hwS3pBMVkwbHJkbXhGYkd0dGVTdFdlRmRUUlhJMVZuTTFUR1kwWkdWV1lsTTRhVk5SY1VkRU5HaHNjbEk0U0ZjeGEyeFJSeXRNV2pabkswVldObTE1UkVobGIyTm5ORkJ4VUUxT05qWnNjRnBFTWtNemRYTklaMmRNY2xKWlMyVmhZbUpCWmxOS1dYbGlTM0ZsWWpsb1JUZFhZM2RZU2pGdlYwWXJaR0ZxUVZsNVMyOTFaRkZFSzNGQ05sVlJMMkowWjNSS1UwSnpRazEwWVhob1FUZFhRMVpCVVhkV05qRnJjMFp4ZEdKT2FGRnlVMHBXUVdONFYzTjNlbGR4U1VaQ1IzcFZNRmRMYkVkQ2FETldPSGN3YlhFeFkyRnlSbGQyYkcxelFVNXNTblpyY0hOQ1RFWllkazVXYVhOV2FrNXpjSFpaTW1KTE5FOU9SbWREYUVKdFIweGtWRk5vYVROV1kyOWhkREZOYVdkdE0zRXJXVmQyTVdOelRUSTJhbEI1VEUxRE1qWnBkbmxQYzBReVlXNVFSRU5YYjB4M01VWnhVemhOZUdGcGRrUmpWM0J5WVZGT2QydDBjbGRqUzB4aGVtNURNREowTlhkeVRuSkNZMHgzTmxGdVUwMHdPVlo0YUhSUVZUaFpXbm94WmxkVFJGaERaVzFxU21OeWRWbFpUR3hPYWpKUlVuZHJZbkJhZEdkRFkwRnJVVXBuZDBaeGNITkZSWFJpYWtKSlRGZHJkMVZETVd4RlJsb3hZa2Q2VjNSSGQya3hja3BaUzNsaFdtUkNTSFpqVW1kcFVIRm5kMWhxTVZSWlQyVTJjblo1Ym5ZemJrOUhLeXQzVVVveGIxZEdXRFJQWjAxM01qZEJTMVZ2UTNkSVRIZFZSRGhKZDBwWVp6UlJjMmRCUm1ZNFIxbHlUR0o1VmpSQlUzcEhTbFZDUmtGUlFrWnpaazVrYm1sMGRVSlRkVFJQZUd3emVVeG9WR0ZYYVd4Q2QzSmhSWGhzTmpkNFJIQklZakZNUVRKdlZERjVWRFF4ZHpFMloycDZaR1Z3U1RCM00zRkxWWE5pTVU1Q1duSmxiMWxMZEhaUmMwWjFaRFpxYTFwMU9VUjNSMHd6Y1VKWGREY3dTV3RPT0RaQldsSnZhMWt6UzFWME1EWndXamR0TldwVllsUmhPRlI2TVdkM1dqaHRVbE5LWkVGUVlqbGxlakpDUjNwb05tdHVlRkZ2Tm1SdlJGSnlNRTVQV0VKemNEWm9UM3BxVW5NMVVVaDZNM0ZQYldWQ1ZucDRUMGh1YkRWblRrZDZVV2sxZVVkWE4zQkNZeTlwZFcwM1VraG9iVGRXT1ZWa1JIVnpNRE5NTVdFeWNGUnBUMUpRTTAxV09GRTFkbVZaTlhweVdETjJWakZuUzNReFRrRm5WbFV4WkZKVVNESkZUSEpETldwbFUzZGFiV29yWVM5d1ZqVTJkVmRJTldseFVUQXdiVkpRWm5STmJWRlNXbFZyVkdOMVRFaEpjbkk1SzNaRWRVMW5aamgyYmpCU09WaGxNWEowWXpSMEwxVjNNMVk1WTJZd00wcFFUVFZ1VW5KaVFXaEtWMVkyVVZaR1VrVlBPSGRXUlhOcU5qWXpUVXhwV21KWFZtWkRiVU5sTm5sRU5qUjFUSEUySzFkSlVXb3hOVGd3VlRabWRTOXVNbWgwZWs1RE1XdGljRlYwZVcwMkswOU9lamgxY0VGM1NuTnlXRWsxUldKVmNqQnRkbXBzUlU1YVRFZFdUazVUYkU1WlptaFRNbGg2VjNCV2NuRTRkVkZHY201bFEwVlFaalptVXpGTGFuTlFNekF2VUc1SkwxZzFMeXM0YnpkdE1URmxaVmhzTjNaa04zRkxWMWRUTjNOU1lXOHpSSGxaZWxvemVteFpUR2xHZERrMmFXdFZjR3hoVjFOMk1UVnNiR0V3WlcxM2JEVjJhMU4yUkN0SGJYVldNMWx1WVhWc1kweHNaMkZYTlhONWEzcFlXbGhPU1RoSFpFZHJhMmxXZG1KMFYwZ3hRa28yWmxoR09YZGpjVGhNUzNSS1pHRlhaMXBEYTB4MlVYUktiRUp1VkZkU2FFNVphWFJWU1ZwaFJuQkNNRWxCT0ZoRU5rSnJTaXN6YmxBck1sUlRWMnhXZDNoeGFtbFJkR1p5ZVRoc2R6RlBkakV6YzBzdlFUVkNjRkJMWW1oYVRIbG5WV1JMVUhndlQxbGxaeXRCTUVSdVpHWkZlRVIxWVhkaVZXVXZhRGs1Vlc1MlpEYzFLMkpzV0UxS00wWXdaREpVVlZGNU5HdDBXV0ZsUWtKWE9YWklSVkF6YjJab2N5OUpjMWRKTVVkaGN6SlVVMFZ6VVU5MU5ubElXWEZyTlZSS1RHSjVjazVvU2tNd1NreHhRVzAzY0Zkc2FVWmFTRUZDYjJGeVYxQTRjbFZ0Y0VKV1RrWlhiR0U0ZGxkbFJGZDBTbVpaUTNReGVYUnpUVUpSVWs5eVUxUmhXRTFYU1VacllYQlRlSFZGVm10T01ESndja3BMUnpKWVVVdHZXRE55WTBGb1lURldUSGx5U1ZsWWRVSk5Za05hYVhaVFdsY3dlVEZYWVhONk1VUkhOMFpJVVUxcWEyTkRjbW92VjNKcWJFOUJSMDk1ZEZJeWVFcE5OWEZ2TmxKRlltSklUR05ZVUZOWlRGcERRamhEUzFwb1FqbHZjemhhY1VKQ2IyOWlWRWxUWjNGemJWVkhNbmd3Y0d4aVMxYzBTa1psUmt0eVdsZE9iSGh2UTB4UVVXMXJha00zV0VwR2FuQnVjMnQxZEZOWFJFMXJVbmgxVFcxT1kyVnNkRXh6YVVKWlIwMW9kMHRaUm1KRWFrSmpiemgzTVVkd04wbE9NRFZxWmxaVmJFRTNUMFZvYkdOUFEwSjVjelZTV21oMFJWSkRjMW94Y1ZkMU1uaG9ObnBQZEZCWFozRmpXRlpMVUcxbFMydDBVMU53UW5OSGJsSnpkSFV3VUVGWWVVRkVUbFF3U3pCRVdUWTFNMFZ2TWtkM1ZVbEtPRVZLT1VsVlZsaGxZelJwYURSRWMzWndTa2xxY0Zvd01XOTJaR1l5TlZWTVZHNDNhMFExWkVsRVFXNVdUbTFYTnpoUGVYcE1VVEJxUm1oVlJtUnFTRmgxV2xCd2R6RnlORmg0TURWdk1tb3hkRFZxTVRsM1JsWlFNMUZuVVhSbVZVbE9ORzFKZVZSU1ZFbGFlak4xTDBobVYxTXpkMFpyU2xkMVJ6VklVVnA1VmxkNVZXOVZNSEpoZEhSclMyNXlWa3hsTm1kS2JqTjZaR3RxUkdwRFRFdFRVbkp2U0dNNU1tTllVVzlNUkZNelNFZHBUMDFPT1dSelEyZGlkWEJWU0dkNVIxTkJZVVpMVUhabGQyOXdZWFkzYTBjMFl6bDJjM3BoT0RkTlpGbGlTVFU0UVVaVkt6ZHhZVk5MVWtzM1RUQTFhVnBZTW5KVVR6aGtUVlpFVFRCWlJYWlVkbk5GTURadlZWSmtjekl6SzBOSU1qUmtUVWhTV2tnd2VFZFdjblp2Y2xoVmNFOUtSVTVrUTNZNFpDOTBhbTFZVm5WQ2NIcGlaa3hLTUU0cmJ6ZFVTbkpMVFc4Mk9VUnlRbUpUTkdsWmExWjVWRTR3Ykdoc1IzcG1lSEVyT0ZkaWNEVmlha00zYTNJNVJGZzVkRWxQWW1wMmVuQjJUMmhOTlZodGIzTlVjekp4V0haU2JrTnBkVmR1V0VwSU1FTklkRkJCY1V0dFZVODFUR3hXZEZjMlpFOTNOazQyVUVjMWNtOHJaR00yYjJSbGJFdFVSRzk2UldsT1dEQXlkREI0TkRCaVZ6VnViWEJWYjBKaGJHTnllRUV2YldaaU1WWXdTMHhhVERkb1UzUnNlRVEzZVcxdGRHYzJiVGhsZDNWdFl6bFNRaTlSZFRsVFptcG5ZU3RLY1dGM00zbDJSSEJ3UVhoQ2RWbFRTR2RHUWtOWlkyaDBhMGs0VDJSUFV6RkVSblpyTTNJMVpWZG9VWGwwZW01UFN5dDNPRUpqUWtNMlJVTklkbkp6VUdWVFpEWnlNbE5HTTFCc09FbzVOR1owTnk5RVRWZEthMVZTZHpNMmNXRTRkaXRWZWpORWVIVXhhVmRGVHpsMFlWWnNZbUZJVVRSUFRFTnFUR3hOZEdvNE0yMTJaRE14UjFrMmJWa3haRTQwYkcxRVkzQTBNVU1yUWxock1FaEZZbFZZVVZwNFRqSXJVM2c0U1haS2JsUXlUa2RsWVM4M1ZXZEROVnB5UWtOYWJUZFBMMHd2Ylc5YU5ubDBVRlF6SzNoVVRXcG1UMUJSYTBOTVRrOVRRMk5TZDJsdFdWaDBhWEZpWTFCWGQxWmhjMnR4TlhVelJ6ZFBLM0o2VW5KaVNHMWxPWEpIV0dzcldHWlBlR3RFYTFoQ1lXZHBTek1yZVdKaVVFeHROREJ2ZWpKemNFMXVOMDk1YWtkQmVUYzFZMGRWUlVadlJsZDBhRWxYTDBGTGJFc3lWek5tVTBsMVVrWmtRVzFwT0hsM2JUWndhMEV4ZVdrMFRGQmxTREIzWkc0clJHRlRReTlVV1hCaVEwdFFWSEZ5V2tzM2NteHJhRmN5ZEVVMWQwOXJhR28wU25sb0wwaENSMHM0WTNSeGJVUTJZMFkwUW1sVFVERldaMVF4YlhWaFUzWlNjRFEwUzJ0RGRYWlJOVXh4ZFhCWlIyMWxXall6YTJ0VU9WZGpTMlJwUkRaMmFrOVllRm8xVUZSNVdIWkhlbVJ2TTBSQmFHZE5UVzVDVFdwQlNrWkRWMWhrWkdkd2R6STRMM1pEVFZRckwxTjNNbHAyU0NzelppOTBaMnhpYlRRNE9GTm5la3BvWlc5WlNEWkRXVU5RZEdzclJrZDFlRXRZV21GYWNrazFNSFZyVnpCc1IybDFabTkyYzFReWEwMTNiRGh4UzNreGJXdHlNSFU1VVNzMmRtMW1RM1ZDTWt4bU16aG1jMVV2WjBsa1RUTTFORFU0Wnk5ck5UUjNUVEZJTkU5aGF6QllWR1JEWVhFMk5XaFVVelpUU0d0T2FtVkhiVmhvV1hOdmFVUnhiVmQ0VURNeWFUaEZNbEZvVlhBNVRFaHFOa2hRWWk5bUx6VTJPVXRvV25WTFRtMUlURzU2TldacGRHRjVibEpPY0RKR2NHbHFXWEkyTVZkSFlXMVdOemRHWkRZcmJHRmtVR05SYVRaS2RrUlJlVk5sV0RoVlNsaG1lSEpNWlRScVVTOTJWM1pRU21OUVJYbHRjMWRWZWtkck5tMDNlRWxDZGtkQlptOTJiWFZRT0Rsd1NtWktORzVpZVdaRlNGbE5XWFpIYVRGak1FZFdTVEJtYTFobVNpdE9RbE5RUjJZNFRtOHhiamxPYTFKemJtUmtTbFJGYlVWMlJ5OWtTSHBSVkVvclUyczRaMDQxTmpSME4yMDNXa0ZIYkdsM2JVeGxiRlpLVUVobVMyZExWaTlwT1hadlUxUktTMFp4T1VOSGFXRk1jMlJOTldoT1MwbHdkRVp6YTJaVFptbzJTVnBVV2k5UWNIQk9OVVJDTUVSeFFqQnVOQ3RGVFZaMVN6ZEhSVFZCVlZnNGVXWlVWa3h1ZERSMVVXZG5kRTFDYmxOWmFGbE9OSEowYnpsdU0yOUZSVGRuT0c5NE5IbDNWbEZSWjJaR1REVjZkeTlFV1dGcVVXbHlibEUyTm01WmQwY3lVREJyUW5adlNYSTFWVTlFY1U1dUwydEpZVkpJWmxKVk0ycFJObk5YTWpGdlQwOUJVbG8wUjI4dmFsZFVVVXRoVkRaT0t6UnJZbWRNY0d0R2RtTllka0pPTUhjdmExSkpPRlJVZUZSNEt6bG9kMVF5VG1WaFVVRjRkVmw2V1VKNlFrVXJabHBqWmtJMEwwZzRRa0kyZDA5NGMyTlJMMnhhVkV0UVVUUndiWGxrZUVKSFRUUnRaMGx6VVZGdlNqbG1RVFJMU2pBMlduaDNkR2h1YW5SS1EwOTRhV0ZsTDJkSlNUVkhWVVJwU0RWUGJtVnBlamswZHpBNE0zQndNamR5VFZKaFdHeFNOVGxaTW5samRrOUVlWEkzUTJrclkxQlBOMnRyWTNOTVJ5ODFMMGgxYlhoWk1IQXlhR2hXZWxwVE9XWTRXbEV3UkcxNVNscFZWVXMxVVVwdllqWmtOa2R0T1c5V1lqQnFTMnRxVEc4dlNIaHhZM05RV0dnNFVGRTFUSEI0UkZsNVprSTVXa3RzU1VKSGRqRkthV2hGYUhCTVNHUlhiREJGTHpCRlJWWTNTVTAyVlUxRk5ubEJUV0pWVUVGNkwyMDJRM0VyUVRZclFtbHFTbFpaY0cxQlZYbDVVRUkzUjNkcWMwTlVSa3RuYWtwSlozZDFUVzl4UkVGU1VUa3dSMHcyVkN0S1dEUXpWSEJhTjBwNmQzRkpXVGxGVW1oalZESkROM2ROYjBoWFRIWkRaRkpPT0VWUmVVTlBRbWRHVEhwQ05tTXZaRFYxTHpscmFHVTFXRmgyUXpoQlVUUk9aRTlSTVRRdmNEZHRkamhzVXpSeEwwSm1OSE0xWjFneWVVZEJWRU5KZUdaQ2QxTndNV1F2YkdGdlExWm5ibFpUVFVkVFRUUlBjRzg1YlZkblRVcGplbXg1V0ZsMFRIcE1ObFpvWjFacWRHSnFUMEUzYWtaUVdWWk5TR3BOV0hkbWNUSmtkRWhJUjJRdmVUaHBlV2x6VjNScU9GQk1ia2gwSzB4eVoyWlNibGR2UW1RelMyRk9LMlpIWkRJM0wyNXhibTh4VnpScE1XTm9TV2R3TTAxMVoxcE5jemxZU1RrMU5qTXpOM1V4TmtaTVFUQlhUMWxaWkM5NFZFMVBWelJYYVVGU2FtSTJUbU5rVEdFNU1XZGlhbXBDYTJkcWNFcHJObEZSYjBOaWJGTjFZakprTldoUU1GRklUMU52WkdSQmFHb3JVRGRPVW5Wb2VWcHNkalZXU0hOdFZHMWtURUpxY2xsS2VHUmtiRm8wUm1aNllVbHpMMmhZYzBKcFdVc3hOMWg1UjFsYVYzaFNjMFY2U0d4MlJYQnVZMk5LTW1oS2JXVm1TMUk0V1RSWVptcFdiVVl4YW1aUlREVkZZVlJqT1ZwaEwwaHFTWGxTWXpKT01tTnZSWFozZEcxS1FXNDJVRVIyU0U0d1NIVmpWVmx2VDA5bE5HWnplbE5GZFdweWIwOUlORGRCTDNoNGRsVktNbm96YmpaNGFrSkdTR3RSZHpkTk4xWlFTVWxKTW1GWWRsWTRTREoyVUZSV2FYWklPRm9yU2tneFkxWmxPSGxXTVdWaFMxcGhXVTVtYUZkNWRHMUhkWEpYWTJGUVQwVXJXVGcwZW01dVVHWlhlQ3MzUTNaMWJIUTRVbGxQVFdGR2FuaGFhMWRhVUhsdVYwaFdiMjlLWTJwbVIxQnRSVEExVEhWRlJFWkJNVmRMTldFeGJsY3JaRXhOWkZRdmNURmpPRE5vZFRWSFltazJUak51ZGxnd1QzWkVaM0pQU0RBelNqSXlUMWxzYmtJMFlsTnNURVpoU25CTGVWSk9kbm96ZUhOTk9FWkxjVTVLVkZkaVZHazJXRFpLYTBJd1Qyb3JaRkZhVjNWcU0yVXJUalo0UzNsdmNXVXliRzFwVnpWblZVY3pjM3BOYURCb1lsWkNhREZHT1VaMmJHNHlRbVF5UzIxbU9VOXFiVlU1TW1acGQxTnFZM2RTVG5aNloxVmlhMGhHYzBRMWVFVnJlV3BNTDNGQ04yMTJZeXRNWmt4S1VIaEllWEJTTkVOSmNXUnhObXBFTkhsaVVuYzBhMmhRYTNwblVFUnFUblJyYUROUFp6Z3ZUWGhhVkZJMVRGaFdjM0pUVFRkSU1UWmFiR013TUUxaFUzZE1VRmw1VUVkV1RURmhNSEZ4ZGpCUVVFVk1NSE14TlZRMmMyNVZZVnBsVW01WFEzb3JObTVzV21aUFMxRnBabWRaZDFwQ1FqZFNieXM1ZVhsdWFYZzNRbTVUZDI5WVdqQk5lbWg2UTJ3NFIzSXpRbWRuZDFaeVJUTTVWRE5NT0ZCV1QwOXpkVTFOVTNOaVUxcFBTRUl3ZEZjd05uY3ZlVGRKVEU5MmFrZzBja05CUTBvMGVXeDBNRTh2VEdOV1EzWk9ZbHB2T0c5WE5EWk1ZMlJWTVdWcFRtRmljbVJ2T0RVMmJ6SlRORXRxUm5SM01USkxjSFJ6VWpKQmVVRkxZMnhsY2xZMk9GaDRSa3B6TUN0c2VGVmFUMWRyTkVGME0xbE1kbGcxY25kcFdTOUJRMFZJYVVwME5XSkpSVk13T1RoQmRuUjJOR3RpVUU1WVdWb3ZValZvVldNMFlqQXZka1JPYkROUllsbEZaMkpzV1VZNGJqSnBTVzVoWm5GSllqZEpPSEUyYTNCbFdXNTNjekJ1WkdGTVYzUmlNMDlJWTBWbFVtRnhTVWN4YlV0R2VVNVliek0xWTB4T09VeGxWQzl6V1RWSk16UjNLMjVDZUZoVVREWlRSVk5QYWxRNVJtMXpTVmc0ZEdSalVXOVJORVUwYkVkeE9FZFVVallyYzNGbE4zSkhaWG94VWxaeU16VlhRVTVHUm5NNFkwMDRUSE5UT1RGamRraEVlbTk0UmtSRE9USk5jV3Q0VUUxWlQwcGFlVzQxZDNReVEzaExkVWRDYTIwcmJrdHpWM2R3U0hKaU5YSklhMUV2YjB3dlZtVkhMMVo0ZVZvcmRrWm5VRmRzV0RBNWVUYzNlR3RIVFRKRlJua3pkRVo1Y2tOdlVGZHZNRkY2WWxKTksxWmpkbWhtWlhoek1FZE9URkJUZG1GMlRtRXJlVzVXUWk5NVMyazVZVEIwUm04eU9UVTRlbEUzTmpaSmJWVmlhR1F2VFM5dlMyTlVNa2xQU0VONmJqaHhkM3AwWkRaU1RqazFTM2h3VEVOcGJYUkNOazVMVW14VU5FZHhUVGs1UzNsTGVYUnFUa2RPTWtwME1HTTRVRlpqZDJOcGJXMWxMMGxYTm1SQ1J6WlpZelV4Ylc5a1RIQmpUR2s1ZFVKTUwyOHlLMU5DT0dsWGFpOWlVMnBLUjNkSGRYTnZWME5PU0RGRE1XcGxRMkZ1U201SFYxWldjM1F5YUhwSk1rNHhlV3MyUkU1T1kyaHhVbFpoZW5ZNVMzZDRaUzl0WVdSUWNrSXlialZZZFRKUWFFTlpSV0pHUlRacWJsazJXRGxMU0M5TVluVmllazF4TnpkVmVYRjVNV0V2WjJSbmJFOVVSQ3RwVlhSd1NteFFNR2Q2ZEM5ME9HdE1OU3RvYlM5ck5UbHplRlEyVkRWalJGaEdkVFJ4VjFNdk9HNDFNR1p4YzBWa2FFcHZZM0p2WkRZeU5qZENSMUJ5UmtocVdtaElLMlZsU2paeFZWcDFWbHA2VGxZMVNtTjNRVU5hVTJSeWIwWkVkbloxVTNRd1QxSmFTR054YUU1V09XSkZOemxqVm5ZeVJtSnhVM1pZWXpoWFZqbFNiWFV6WVRBNWRVaGtOakJzY21oTVFuWlZMM0JaVmxwVVQxRlhVekZOZGxsMk9HSnBhbE13THk5bVduWjZPRk5hVmxJM1NGWm5aalExTURoYWFuUktibTh2V2s0clVESjJZMHN6TUd0NGNVSlpNamRtVWxKNUt6Wk1helZFYnlzeldGbHhPR2hZSzJweFYwb3ZOVVJ6Ym1abVRTOW9UMjkxT0hoa04ycDJabGxhU3poek4wUlhiM0ZtUkZvMGJtWkdTWG9yZVhGbVNqUnNVRVowVVZaV1oyeFhPRWhLWkZaMlpIUm1WVGhpTjBVM2FTOVhZVmhGWmpkTVNsaFFjR1oxYzI5eWRtVnhiM3BQVEhwS1VITmlTVGR3VjB4TVN6RmhkSHBuTDNKbFVtRXdLMkZMVjFrellYUkhTbmxNUzB3NFZHTkRlalpDVlcxNlVqQlFaSFZJVUhCT0x6UXZNSEpNVVZwV1pURkRXVlZuWjFadFZUY3JXRlZ4YTNFeGRFRmxabWt5ZWxsS0swcHpTbFFyZUhKeldrdDVURkowV2xaV2FUWTBWeXM0TnpGU1dYbzNRVlU1TjBGVU9YbDBjbWhzVVZSWlptVnZhMk5JWldOSWVGaE9jMFEwV25GdVJUaGlWMVYzYzNwWlRXZzFURk5aU0dGTll5dDJXVGx3TVc1clJFdDBTRmx3TUVOcUswZzJjMjFYWm5GNGREUlVhazUxUzFjeWRXTldaM05TYm1Sd1JHRkNiazFHUlhWc2EyeGhjalprU25JdlowTnhLMmx5TUVGMGNHODRRVE0yZGpOdVNVMXlWbmxMZWs5SE1qUjNibU1yWW1kbFFXRlNTbGR1VDBSTFprMUxabXRtYm1KRmRrMTNkR1psUTJ3eVduTllTMmxFUmpKblRGZDJZVWhPUlU5eWNrZFhaMVo0ZVhkS0wzbzBNemRLT0VoRGJYcHdVV1Z0SzBoek1VZzBSM0ZSZG1GMmQwcGFlRUoyTmtRellYcG1LekZ0ZDBWV1ZGWnpaSGRrVjBONWIyNDFaM3B2YUV0WFRVWXljMVJwVUd4S0wxRkhjRkJPTkdWalZWbFNTekJLTWpCM2FWVTNSR3ByVUNzd0syTm1kek4yWVc1aWMyRnFhbTR5YVdvNWVUZExOMHh5UXpNeWFYZDVXRUpyYW1seU5tVndaRVZLVkRsb1YzSkhUVmhXVkRGMFJtUXlaWGhLY25BeU0wMDJUM0pLWWpaWFVpOUplakE1VVZJM05GUXhOVGRLT1hoeVlsaFFLMjQxTnl0VFVFOHlSMGRQWkU0eFNHcEdSM05sWTA5TFdDOXJXakIyU1hkM1VIWnZTVk13ZUhKSWEwRjRlbVIxUm14cVV6SXdhU3N3THk5S2RWbGFWR1psV0hWVk9HSjZUakpyVkhwVU1pczNOa0oxV25WYVZuQlFNR3htZFZkMU56UjZlRmRKVFZaMVpYVm1OVWh5Wm0wdldEZHdZbVY2WkVoUGRtZG9WbFp2WWpGNE1tSmlhVU00Ym1Kb1ZFWjRkVXBTYmpZd1dURkZLM2RJTURSS0x6a3dlWGxsVGl0WFZHUjZhVVpQYUdoQ1IxcHhNMFZyWlZCbFpVNXlaWFExUzNZeVRuWkRhbVZSVjFjME0ydFRTRkl5Umt0WFR6TkVRWHB2VldwMWRXRXdPV2s1YlhCUVNEZGhWMVJHYmxoaFdUWm1jMDg0YVZOeGNrZG1XRkl6ZVZaek4wWmhOWEpzVTFkbGRYaHNRUzkzTDNneE5qSm5SSGxRSzFsWGVVeFZkRWc0ZUVRd05DOTZjbXgwV2tNelprVm1jMUJpZVc5S1QzaGlOMkZJTDNwa1ZITXZkMms1ZW1KTVlqbFRZVE5ZVVRKclJHUkJWbkZpY2swMFUwMUljemR1TUc1aloyaEtabGhOTDB0eVpuZzVjRGxNVlhWclNFSjFaa3RWY0ZCbGJUazNaVEJoTlRkU01ESjFhM2xJTkVFdk1WVkxZMlEzZHpreFlVcElNRWhJYlN0eGR6aEpVRTVaYTNOMFMyNW5XbTVFUVV4WVprNVhWVTFEVTNoeFMzSkdOM0JJTUdWUGRWWnFaM1Z1UlZZNE0ySnVUMGQ0UVdod1QxaGxWVmxRWjBOVk5YbDFUekpsVVN0cGRYWmxXV1F2WjBVelpXTXlPRGxhZVd4VU5HcHdObVZyTUM5bU1VTXZUWG8xTmtkdFQzWjZPVFUwTDJzd1pIZzNOMmxhVGxJeVZHMTBhaTh2VHpRMFVUUklkbUp6Tm5sRGVWQm1iR3AyVmxRck1YUnFVVzFoV25aRU9VbHZhMnRPTlhveWFrOUlUeXRIZFZGemIyMWtaalkwYWt3dlpIUmlPRGx3Y1doM2NDdEllbkpEYWpacFJFaG9RVFpUV0dSUVdrRnBkRVppVkZNMlFWTm1jR1ZaSzJFd1RFOVlOWHB0Wm5wMk5FSlBOMVJ3UWxGQlFVRklaMEppVFVaRVdXaDNRVUZCUkVGWFpGTXlSbVIxTW1KWWRHcEtOeTlPVEdKYVZsaE9jMUJrUlZsUksweHphRFJxT0VOaGQyYzFZMWR5V0c1dU1FaDZjSGszWTA5dVVXdFdPU3RDTkV3clFrVkxRbk5IVGxoeWIxaGtZMlJqT1RsNk0zY3dRMDlRVUdaSVZVMDRLems0VGtseWNqY3plREZxZG5abVprUlNTalU1T1Roa1ZUTXpMekJSU2xaeFRWZElTR2xLVldsVlNrWnRTMVpIYmxOYVkybFZTbFoxVDFoSWJubEdVMmhWY0VacFNsVnRXRXRXWVdoVmNGWnhUbGR1V0hGT1YycFZjRVp0VEZadE0yRmtaV3BWY0ZaMVVGaHVNelpFVW1jd1drNXBTVlZYVFdsNGF6SlpUa2RZWVdwR2JIbzFhVEZaZEVkVVdtbDBWaTlDVFVkRVZXZFZRVUZCUTNkUVpWTlFlbUphZEZoTU5YTXlOMkUzTjFCeFZFNTJSVk5LUlhGVFRFVlhjVTVQYTNsYVRYRlRURlZsZFZCUWEwdEdRM0JUY2tWVGNFMTFWWEZXUzNCVGNsVmhkRTkyVldGT1IzSlRja1ZYY25SclEwVmthREEyWkdWdVYyOTZZMUZ4VlNzdlFWbFBSMFJDYzNoSGIyZDVZbk5MYTJGVVRtMTZXbTB6V1U1SFUxcFRkRmR5Vm0weldXUk9WMGxPY1U5WVdIWXlTRlJvTURWT2FVcFZNbVpQV0dKb01EVmtjVTVYTTJaMVVGaHFNRFZPYlV4V01pOWxabVpxTURWa2RWQllNeXN5UVhwSFFqSkZSR05RTUVoM2JFSkJRVUZCVlVFM1R6QXZNamRhZERJM1duUnVlamRZU210SGFVcE5iRk53UlhGVVNHb3ZlRXN3VDIxTVRtNTRTaXRVU1d4WlpEaENVVzlXUzFaaGFWWktiSGxHVTNCV2VGaDBPSEZHWVdwV2NERTJSRkp2TVdGa1lXbFdXblF5U0ZSd01YaGhaSFZRV0hJeE5sUmtaekJLUW1oSk1HRk9SMVJrYURCd1VuQk5NbUpPYldKa1p6QmFTbXhMTVdGMFYySmthREExV25SUE0ySjBNbGhtWnpCS1JtcEtNRFprVDFobWFEQndWbkpPTDBWV016STNaSFZtWm1jd1drNXVUREUyT1M5U1RVVkVPRmxTUVVGQlFYZEROSG94TjFwME1qZGFkSFk0TVZadGFXaFNjV3Q1TlVOd1YzRldTM1JTY1RBMk9VSnZNbUZPUjNaU2NXc3lOMFJ3TWpaa1QzWlNjVEFyTDBGWlQwZEVRbk40WVhONU5FTmFUMjFVU25ONFlUZzJPRUpaZFZkTVJuVjRZWE15TmtSYWRUSmlUblY0WVRnckswRTBaVTlJUkhSNE5uTjVOVU0xWlhWWVRIUjROamcyT1VJMEsyVlFTSFo0Tm5NeU4wUTFLeXRtVUhaNE5qQTVRVlZGYUZsU1JsSk5XRVZLVTFOc2NFZFdhelZsVVdaSEwyRjJUSEZpTVZGSWIzWm5kR3B1UWtwMmMzSXJOa2xTU0ZkMmNqSjJiVGhMZVV0Q1pFeFBWVXN5U2xKUVpqSkdiV0pNVFhZdlFTOXFNRnA2ZUVGaGVFSlRaSFJQV1RaS1NHUkphMEl3UlhablpEbGxNWGN3VlhoSFNUQXZTbkp0VmpkSWFIQjBURWswYTJsWU0xSjJkMWRxUVU5elVrNWtZV2xXT0ZkU09FbHdTamgxU21oYVZWVjJRbmcyV1ZoRlFqTkhVMnhPVDFkM01qZGlhV0ZXVFdVNVZIRnlaRTB2VEZWeGFDdFlValJyZVRCeksxZFdZVWxtVUZSdWRsWllVVkZuVEVwRGJIaEpRVTVpUm1OYVFUUlRTM1ZuT1ZGVFUwWlVhRkpCUkdGWWN6WlljVEpXUzFoNE1XNHhVV1ZLWm1NeE1tbDBOMjFoYmxjMlQyVnVSakY2T0RKcFIxTXZjM1Z3WkhSS1dtZEZWMDVsTUhZd1UzbGhPWGhtUVhGNGNqSnNVV2xVSzFOeVZIZzVkVXRqTkV4YVJ6Y3ZZek16ZW1vdmQwcGtOalJZWWxjMWJVY3ZlV05oV0hsRmRuVXpXa1IxYjNkdFZGSlBPRlZLYVdSUWNYSk9hMHR2YkhGMFMyeDFkMDlJYUZKeVFXUlRVMFZxVGpKb09FY3haMDFZWkcxTmNXbElVeTl6UkZvMVUzTXhUaXRSUVhwYVIzcDViRUZDZGtaSU0xUllSeTh6VVdsSU9FeFdaamh5VmtjeU9YQldRVEJyY2pOR1ZVUlVaemRITUhweFNuRmlXV1JtZVc5VUwxUTRlblZMZUVOSE5tMDNaR1I1TjNOSE0zcGFPVEZQZDBSM2MzY3lSRVZLYVhoRU4yZG9aMko0UlZoek4yNVFTbmhHYld3ek1VSnBMMFY0VUZCalZtSnZSV295Y1VvNFUxVm1ZMHhvVUZkaU0yRlliemtyZGtoRFVIVlFjazFSUTNONk5WUkZaMGRUWmsxWmEwSmpVRXhhVTBaWFprUk9VREUzVUUxbWNWRjRMM0JRU2pVdmVqQnBTMUl5VURaSEt5dDZkamRVTkRGSGVuSTNXR2h2T1hOcU5HbDJiVGhCYUZsbVlUSnJUVXRMVkRObGNIaHlPV2d6WWtoM1IySk1OMUJ3YWpkUWNIWTNRVTlUSzBFNVdTOXFXaTlXZVd0RFpYUldibGRJVjFkVmVEQkZkWHBwWlRjMFowMDNLMGN6VVhad1oxSk5Tbmx4TW10M2NXVnFlV2t4Y1hKRVdFUmFSMDlwTW1WcGFYaFlabE50YldaNE56UkVSbU5qVDJ0Sk5VaEVTa1oxZFVKS1pFd3paVGhHZUZaWFFXOHZiM0kzVVZOUmRGcE9NelY2TW1wU1IydDFPREZYTDNRM2NqQXlOMk5UZEVWT2JrSnpVRVZ0VG1kclIxVlVURGhKVFRnM1kxUmxMMVZwYWtnMVZrdGlNV0pxWnpSdksydGxjM0pOUlVvMVIzRnlRalJPY1dOelV5dFVhalZvU0hocGFrSklkSE5XU2tsSGIyOWpZV1JuV1RoUlVGTlFWMFZGVUd0UFFVSkRhbmhCVkZJMFp6QkJUV3RsYjBGRlJERkJWMDR3V1M5RVp5dFpWbmg1ZERSa05VMXVWbEUyV0RCSGNEQnZLMHRMYWtaWFYzSklaRGswVWxsMVpHUTVjelpMUWtaWVZWaFFha1pCY0dwSVVra3Zja1ZuUW1kVFNTdEpOVTFWU0cxbE5tSkZha3BuYWtNMWRtOUZSakpwVWpNd1dIaEpTVTU2YjFoMlVtaFBPRXBRTkdaRU1qRlZka0ZDTkVGVE0wOUtWa0ZGVVVKVVJ6aG1PV0l6UmpCTE4yZ3pjRTB4YUVORGRUZGxZMGxzYjFCQ1NWbzNaVEI1TTI1Q1NWcE1VVkJFWjJRNFUxQnVkRGQwVUVablNFSm5iakp6WTNGUlVWTm5hRVpQYUVONWFGSjBZbFJNYW5OYWEzVlBUWGw1YkcwMVFuaE1ZMjlOVGpaalZYSjBPV2xTYUhoNlNtTjVOWGRZU0V0UU9HTnBUR1pOWTI1MmVYZFpjM3BEVEd4dVIxZExhazF6Vm5oYVdXdFRlWGhOYkd4d01XSk1WMjF0VjJKMFkzTjFOalZWUkU1cGVraGlSVVkyWWtKRkwxYzNSVll2UldwSFJWVjNNR2h5T0hseVpqbHVRelJpTnk4MFpGUjJVV1kzY21Ka2RrSjRaMmwyTTJkQ2RFMTNSR3BPWkhoSFRXWjRPUzltTTA4NWRUSnNWek5pZEcxMU5Dc3JjelJhVG5OWmMycElaR3RPTVRCVk1FNHlWVEJPZFdGdmFXWm1WMlZJTkdaWU5IZFJRVkptU0V4VVkwRlpUMGhxYlZKSFRTczRRbWc1TlVKQlNEZ3JTMFZaVTFGeU5XUkRaVGd6TDFKQ1pWRjNaREJIT1dsSWNFMUlhbEF2Ykhkb1NEbHdkV1JTVGpKeVRYbEVlRmRxUWpRMVRVazVkRFE0WlUxNWRWQkJlRTQ0TnpWNVlVOUlOVWhJU21aMlNFVkZWWEZDWWxwNWFVTmhUbEZzZFRWNFNrSlBhMkV5UTJsRFYwUlpiSE5HUlRCamJVcGlXVXRKV2pSelUyMHdWbE5uVEZwc1RtdHhha1ZTZVV0TVpGWlBSVzVyVlcxSGNrTktURXB2TlV0eFFsbElObWRKYlZGalZFcEdXbk5yUTFkVFdtSjVORFo1ZFN0M2NrSTVZM054ZGs5YWExaExhVzVEYTFoVGJ6bHphMFYyYTBkeWJFWTNjRVZJZGxCUWNXRnpkMHBsVlRReWVYZDJlVzF5ZDJwWEsxSmtaVlk0SzJ4aEt6bE9aRFJoT0RCaEsyc3hMMnRXTDI0NWREQTJVV3BLUW5oTmExWnRlVkZNUVhkR0wzRlpTRVFyVVhwVE5HWXlNMUZZZUd4TlJrVnVhekJhTjNWSFRVUlJSMWxqZDFoTWNXRXJWMkZPT0doRWJtbEdjMUp1V2tSNVRVeFdNWGhxU2pCdFlrZFBSVUZOYlN0NFdXMHJlVmhDUWtKUFFubFliWFJoVVdFNVIyTm9kMHBxU1dKRU1ESnpXVkpOTnpKTlkwSlVkRWhOUkZad05IbElUaXM0YlZsV2QwMDNhbEpzYVZNM09FVjRUWHBOZWsxNlRYcE5lbEJFVlVwdFdqaGFhVnB0V201UWFHRk5ZM0JITDBkQ1ppOXdaV1JNTmpOSVRUbE1PREl2TDJaNVRteEhabTVLV0RobFV6ZFBja1poZVRBeWJESjBjRmhIWjBsMlZ6VjVjbFJTUXl0clZqbEhjRmxsVWpGS2FWSjBXV1JZTTJkRVUxVnlWVW8xWVZNMWNUSjRhRWRUWjNGdmNrUjRlRkJ4ZGxWclZuVjJhbXhIYVU4d1MyaHVVM1YwWWxwS2FUUnhXWGtyV0ZweU5sUnRhMVZMUlM5bVNreE9kR3BUVG10SFRsRlllV2RRU0ZvdmJ6SXJZU3NyU0ZSR1FqVjVUWGR2ZVN0Q1RYTkRhSFp6TDFkTE9GRm9WM2wyTmxsaVVqWndRalpWV1dSVEsxbFBNRFZxVURWTlVEUm9OVkpxYUdWVlIySTFkRE5PVG5KaWVrZDVjSE53UkRGdVNrazBjVXBLVkVKSFVFMXpVbTAyTVRoQlJGTTNRVTV3YVVObFVYUmhWV2RMWVV0b1UydG5hSFJGWTNCSFpYZ3ZZbEYyUld4cldsSXdjVlpsY1cxTk1FaDRUMUpOVXpNd1FtZElNRk5uTUVwYU5raDFXblZEYTA0NWIxRlpWVFpXYTJSa1VWUmxaQzk1YWxwWmJHaHhVVUlyY0VzeVNIRlplVlF4YTFjM2IwVjVkRTF0Y0d3M2RtVjRkVFpXUlVSMldHZDRPWFpTWlRnM1VWb3liWHBzUlZoUlpDODNVMUZSWWxocGNWQnJPRFpKUlN0Q1JFcE1XWFF2WmtKNGVHUlpSRlZpTmtSVFlqaEZLMEZ5YjAxdlkySjFOa0ZrZFhsRVIweHhhUzlDVUdkTFlVeFFZMUp5VkZsaWNYWlBVV2Q2WlV4MEszUTJiMDExWVc1SlJEVklPRmhsTnpSWGEyMDVTaXM1TUhGa00wY3pVUzlLU0hGaFJqSlFLMmRMVnpFMlYwZHhhRWgzVGtWelYwaHlZM2xXY1RkcFZsZ3ZTbTFHZUVaeVdtNXJjRWRMUVVSV1NFRmtaWGhNTlhaQlFucHpRa2wyWVU1TFZtdDJTVEJuVGtwaU1FVjVTbUZUUVZoa1RtUnVlbVJSY0ZORWNFNHhOWGxxTjNWTFQwcEZURk14Y0ZsaVkzaGpjVTFpWWpobU9WVmtOV1V5Y0dOTVV6ZHlNV1ZDTkhFclkyeG9hVnB0VWxnelF6ZFpkVzlVVTI5d01uaENUM0JuZG05UGNrOHlhblpGZDNsUE1uVkpUVmQyU1dkNWFIWkNaRlpTTlhGTVYydEtka1pQYldWMk9UbFNXbFJPZGtSNmN6VXlia3RWTUdJd1kwd3laRWhyU0c0dmFYVndUa3ByYXpaUllqQnBjVXhLT0dONk1YRTFUbEpzT1RadmVHVmhWWFFyTVhWU1pEVk5RMlZ1UzNKV1prMUJLMjVLTkhWUGIzcE1aR2RTWm05MGNsUlpjbFJQTDFoaVZYSmFTekk1YWtSRlYxRlBjRzlRZDFwTlpURnVPUzlhZVZsaU1pczBibnBGY0dKeU9FVmxWbUZpWWtwc2VFVlFNSGRWYW1WalJFeGhVSFJFUVZoV1NuSXpVSFpuY0VOaFkySk1NV3B0U0hsUVkxRmlVbXB1UlhkV1NWQnJaR1phWlUxTU9XUnBSemx5VEcwMk5VVXhLMWhyVEVwa1RGWXJVMEp6ZGxVMlVqVlhNamxLT1hreWFXSklNazlsZEZCUk9UUndja1ZGWlRGUldFWmxlRkJsYm10bWVIZFFVSE0yWVhWaVdsZFhXR1JxY0dSSVRGa3ZhMVkwUm5Kc1RESklNMFU0T1VWUFUxVm9hbEJzVFRSRmN6QldURkV4T1ZocFdGQktabVl6SzFKS2FXVkVUa1prVVZWMFFsRjNWbkZYUVhRMFZHRnNkV04zTkdrelQzZFlaMnhRTms5UUszVkVlRlZrT0U5MU5HZDNTblZMVDJKMVYzQTRZV041UVd0b01XRjFUMGRPVFdaSlJpOUNhMm95VGpsVFlVTlVjMEpSY0VkNldtRjZieXROU2tSM2FERkVReTg0UVZSdWRGWldOM2t6YkZnMmIzZHNPVGxRTWpkS1pWZ3hZemN3TVdocVYwY3dWR1JNTTI5SFptWktPWEpLTkVwMmQyb3dWVkJrTVZrME1sSk1RM0EzUjBWd2FWcEplSGM0YUZvd1drZHpiRTlUTW00M1lXNUtSQ3RWVGpkeksyVlVZM0k1YVVrd1psUjNUa00yTVdOTE0zVlNlbXBVTlhkV1QyY3ZhaTlITWtVclRqSmtRVkE1Tml0Mk1ubDZPRVZ1YUdaVlRuQlVOVVZZYlVWemVVUnBOVmRQTlVGb1VHcE1SazVDVW10MFZGUXJkM1JoTW0xVE0zaFRlalpFU0RWUVZ5ODFPVlppT0Voa056VlhNMEZRWjJKNFFYSlVabFZuYkdreGVHNVhia3BXUmpkaUwwaHRVR015U210VFIwRkdZa3RYVW10TllrMWFkVUZFVEcxS2VrSktWMkZNU1c1Q1pFUnFjR3BrVGpNck4zQjFaa00wVEhReWNtb3pkU3Q0ZVZOVFlXdEhTSFJtWVRkYVlUVkVlRkkxVVZGamRIcG1abGxCYW5sUGRHbHFhU3RCZEM5cGFYSkdiVVFyUWtZeWNsRXlWQ3RzZFUxSGFreHNXRTExT1VjNGFVdG1hbGxQTkRZd2RFcHlaWFJDTVdkSGVsVnFhVmRtTlV4aGJFeFhiMmxoWm13MVNHcDFlRGRLUjFBNFltSXdaRE5PYVdrMU4wOVhTVWxPYWtwSk9EWlllbFkxY0VocFYzaGxaRGR2ZFdkaVZGcFpORmdyV0hacUwwMU9jVmhqTjBWbFdGWTFSRzVKT0RoYVNXSlBlQ3R4YjFFeldHVmxTRXhLZG1wUE5DdE5Ra3RJVTNsb2RIQkpWa05pZVVKc2JXNUpaamQ2UVVJdlVra3ZiakZuU2xCSlkydHFha05yS3lzNWR6aHhRMGRFWTNKa05XVlNSREZ5UWxGb1ZUUTFjRFZ5YlRGeWVGTXhjVVV5U0hsYWVIVkxRVmRNT1dKSUsweHNjbVZNTVdkTVNuaDJaemR1ZWtseWExRmlkRlpEZVZwalNqWTVOMWhaUWpsM00xbHlPSFZJUW14NlNHNUdSRkp4YzIxNE5FWnhaamR1TWk5eU5VcDNiR1JHTjBocVZsZHNZVWd3ZUdnM1NXWlZUVXBPYjNKTGNTOUdNRFZ5V1hSNGRERXlUa3B2VVRrMGRqYzBOakJ6TURWSlQyNVZWMHBVVmxVNVFrZHdaMHR3TUhOcE1WaGhhRkYwZVdSUVVrNW1SVEV3T1RjeWVERklabkZOY2sxbVFtNUdlaTltUm1NNVVuaEdabHBOTUdWdlUxRkVVRUpsUkRGMlVYRjFZbVZYTjFBM00wSk1lbFp3Y1U1emNUVXJZWEExZERNd01qTkhjWFkxY1RCMU5tWm9hVmRZYkZWNWVXRlpPVGRvT0ROeFZsQlhlbkJUUXpac2JFZE5SV2w1WTJJelVtVlZUSEUyTnpablEwNDJWM0l6TTJsM2Eyb3ZXRWh5Tm5oR05XTjJVVGN3TnpkRmJ6STJVbk5ZVG5NMlNFaHFOMVpRZW5RME0wODFSM0EzY0hJMFQwOTFNMEozZUdwR1pIZGlVRXBJWjJsaFExaHhOV0oyUlhRNWNtRm9ZbHBOVTIxT1pUVnBkR3hySzB4TU16UXphU3Q1U0hVcmRuSmpkRFZ6YkdseVZYQTBSbXd4V0V3MlZEaEZkbE4wYnpkRll6RndTRmgxUWpka1pqRmxPR3RvVTNOek5EaEJVR1ZYWkdKeEsxaDRTekptUVd3Mk9WSnVjRUZZZVZoNGMxaGlNMHBwVkVka2FVNDFLMjVsY0ZJNVZWZDJWWGg2YkdFMGIyZzNXV0ZIUVhJdmJYUmtVV2h0YkRsTlpVVlZTQ3RuVURsWFFtNXhXSElyYWprMlYwRmtSMjFZTkhwdU1XNUZURWRXVjAxTGRWcGtZM2hIV21kMWVtNVNOREoxTldrNVFVRm1iMFE0ZUdoSFNFOU5UMk50WTBGaU5qWlBZemxqV1hFMFEyWk5iRGhCTDJnM05XbG1iVllyV25GamVVOXZVelZvZGpFMUsyRmxPRE5FTld0dWVuWklhMVkyTWtGV1RYZ3ZibFVyUVdSNVZpdDVLMU5qTW1zNUwyMW9NakVyTWpGM1EwZGpSMHhsVVV4UFFUQkNaWHBsV21SdFFsaDZWRGxDTTI1blRuZExhMmhhYUVnMWVrTlVhUzlXU1V0c01FOWlaM28wUVZaSlRWWnhhMHRWWkV0d1VuZElVWFF2VFZnclJHcHhOREl2ZWxRdldtZHVVWGNyUWsxNlppOTVNR3BQVVRaYVNXbEpRamxuWW5aalIzWlJXSGxyYUZsQlpVbDBOWGt6WjNKbFYzUkJkaTlrUTNkdll6ZDNhMjVSV1dkR2IwOVhZemxuVGt0VGRqZHBNRE5xYWtoTGFWbzVSMUJJYVhoSWMxTkVlRXRtVkc1M2VUaG1TRVZ0ZUVsMlVqTjNNamhTYldNMU1XVnJiSGxWSzJwdWFHSTBiRGhSV0RCcE9Fc3ZSMUo0VDNOVFNEQktPRW92UmtKdVEyTnJkbFI2ZUVselVYSnpVREFyTUhGMVVTOXFZbkJLVld3dmJpOVVPWEJNT0hCRlprRnVZa3B0VEdWRlNHbFROR2xZU1VnMlFTdExURm92TVV4aFNFdDVOSEkxZWxkVGVFWjJiREpRTVVFNVNtNUZTemxMTDBSbFQxQkpjVGt6TlhJNVEyWkVibUpPSzBWbFJESXlaalZ3YW5KNk4xZ3hVMDF1VTBNeFFUQkhiMlZ3TTFaYU5DOHJjekJuVDAxSFFXZEJRbVJIV2pKeVduUnRNblppZEhJeU1XSmljMDU2Y2xwME1qZGlWbGRIWm1KMmJYTnRlbTg1WlM5dVptSk1WRk5vUjFNeGIxSlNkbUZOV2s1YWVrZFpUMk0xYmtobVFVbEpTa2xvWjFGbloyeHFTRUZwYVVOVFMyRkhTMGxLV1RVMFJXdG5hMmxoVlhOWmVtdHlWMDFyY1ZadVRWZGFNMDFzZERORk4yUXpRVzVxTDBGRFRDOUpVMHd2VFV0eUwwbGhjaTlOUjJJdlNWZGlMMDFQTnk5SlpVZ3ZRVkp1TDBGYVdDOURWakowVkcxMGNsTXhZbGN4ZGxKNmRtSXhaVGN5ZEV4a09UZGxPVUZDZW5aVk5GazFNSFJIVFdRM2VWTnVUMlJRV25wdVZ5dG5VVmxpWVc5U1VuaG9hRzVuYTIxdGJVZGhSMWRsWVZsYU5rWkdiR3hvYldoV1dGZFhSMlZFUXpGNmEwVndaVFYzYkZkMVkxb3dZak5QVXpORWF6QmFlVlZVZDFSREsyZDBVbVEzVGxveVVsWm5lR2hIVUdSNVNDOW1la0ZOTDNsSVJUSlJSVlYzUlhCRE1ucHRSV05WVm1KWmQzaFdWRlJVUkdaRVZFZFVOME5hV1Rsb1ZrOHZNRGN6Y0VZM2NWQnVWRVJtTXl0d1R5dGtaU3RtTm01eU5HVTVSVzEwUzFNeGNsTnNVRnBzYTJ0Vk1FOTFaVk5TVkhkSFJrWkdUa05MVjFkVlZUQkZiRlpXVWxSUmVURXhNVTVPUVVsM2RGbDNNWEpYYzFvMFRtSkhVVlJ0T1c1RFZuSmhlRzVTTTNOYVFtVTNNbU5PWlRseVIyWkJlSHByUlVsak5YZHpiV042YjFaamVXeFdZM3BXTURoNlNrMDRlRmhGS3pWSFRTczFXRThyUmtwMldYcENZVEp6Y0RCa04wZFJXSFU1YmtSWWRtRjRibmROWXpWQ1EwaFBZMHBTYW01SFkyczFNM1ZFUjJNMWVETnJSMGRYUzFrMFZWbGhZbUY2ZUVwd2NITnhkV3h0YlcweWRTdFNXbGxpUzI1c1ZteDBjblpaTUhWa1RFWk1XR1UxUzFZM2RsYzVWelV3Y3pGMlpHZFVVMnBJZWs4MGJVVjFVVkJuZUdkRlJVMVplV3BEUjAwMGJrcEtTazVEVDJkMU5XaHRkVFZ0Vm5VMGJUTjBLeXQxU0dwUVVFaGtSaTh5YUVwMU56Rk9TbkpSYkhoaE1FSjBjbEp1YldKTlNrbHJWMXBHVEVsSlNYQmFkMGRwVjJaMFRuTldja05TVDFkNmJVTkhSMk01VlRCYVdGQXhUbTFrZWtkSVYxUjRUVWtyVVhsM2MyTktOVGhRSzBwcU5qZDROakJyU3psemVGSk1Zakp2YkRGa2JsVkJWM2g2YzBOQk5EUXlkV3RqWXpaaWFHNUhWMVZwVm5od2MzSnVZMkZKUjBZelIwOUtOV1I0Ym14UmREVjVRMVoxTlZwdGRsZFRPRWhaUm1VeVRrbDVkWFo2ZG5CS1NqTlBVMWhLTkdKbWRtY3JkRFZ1TWpkYWRESXZXamQ0VkVWTFdUbDFNbWx2VFROYWNHeHFjbkZ5Y1ZOcFZqRlZXbkU1Tm14ME56azJibW92ZG1aMWRuZHJhVzUwWkdad05rbFVha1pTV2tsbmJreEtUMGh5Ulc1NFZHOXRMMUExVkZOdlZVdGtSMUZ3UWxKQ1ZreFlValZDU21zM2NXdEdTa3Q0VmxsTGFuQmphM2hyYmtOamNFSjNka1pWTmxGTGFXUkxlV3R1YVdZd2EyRnVUVEkxTlVwM2RrOVdXV3BDV21STWVtaFdVMk5MV0d0WVExVkdWakIxWkdFMldFWTVWa3hFTDFWeWQybFBVemhNUXpObFRGRlZabXRSV1dac1ducFFVMDlCVHpGc0sxSnVUemxLZVdzdlJVbzBXVVZtTlV0RFVEQjJkMVozYml0TWMwVXZjRTFGTDBwbWFWQk9TM2hqVkRWalVWQlNla1JsYTNSemIySkJLMFE1UmtoNGNFZzJPVVJvWkc1NFZtNHdXRk12Ym5GUVVHa3ZUekJrVlhKa00xaDFhRFkwZG1sSmFFeDJNVU5ZTm5OeWFFMHplSEV6TUc1SldETXdTRVo1Y2pKVWJYWjJOVXgwWkRONE9USjFOelJzTjFoT09HSTVOM0VyVENzMWVtWllMMk0zTDNGQ1pVbEVWVWhtSzFGbWFWRmxTVmhRYmxBMllXWnpkRzlNUldsemQydGFlVXRPVFdsclVsWXhSM2xMVms1SllVNXphekpETjBwUGVWRnVTakpUYzJ0emNUZEtXWEZ1Y1VKclNFTlJNVVJ3V1Rab01HZEVlakZOZVVSd1pXTkpObFJLYTFwS2VteENVV05NVXpKUGExTkhUMnhSTjBoNVVXcElVelZqVkZwS1oxUmFXVk5VV2twUk4wcGxSWFZUWW14aVRYVTJVbTVJZFd4bmVXVjVOak5rU1hscWMydzFNSFZUT0RKV1NpdGFOazA0UVU1S0swdHRhMlZGY25KWUwwSnlUVzQzUkRjNGFqVlFXQ3RyZHpjNGJEVmlLMU5vUlU5dWEyVndjVlpJVlhSaGREZFlVbXBTTUUwMWNXc3dXWEZYWW10a1ltUTJUM0pTTWtwRmFqaFZXVEZhYVVsRFZEQTNXblYxTlUxV1psQnFMMnhyYzFSblZ6WTJWM2hXUXl0UU5WaHdiSEpPVTNKWk4xWmxSekoyTVN0c2FuWllaSGRWYlM5U1ZWUlBiVnB0UzBoMU0zUTFTMGszWWtoa2NqQjZaSFZ5WkhOV2MyWkhUalpHVDBSblR6RnZaa2R2Wm5GSlQwVkpaa1pWWlZKNGVrWjRha1EwZFdwMFRXNTRRVzQyY0VSb1NtNTRTMjVWVFZKd1kxcHZLMGs0Tkc5eE4wMVdWbkZsTWs5eVZqRnhZVEZNYUhOTE5qRk9ZV3gyYVhGMWIyaFFXSGhFV0RaMWNtaFBNM2hCTXpaS2RtbEtiakZNTTB0S2RtazVkVEIwVlhNemNrWndkSFpYYjNKV1ZuVnFha2xSTVhGeE1WSlNjMDFoTVdFdlIzRTNVVXAzYm1zck1FUktVVmxTTUU1MGFFeHpXVUV6WWpKT09GbE9WRU5JVFdJeVl6ZFhXVlpETlc1T1lXcFplbmhXVEcxTldtTktXbXBGZEVGRVFrUjVha3BEUWpGTVQwTldSMU5zY1d4UlNtRk9RbXBpY0dWQk5IaEVUMUpoZUdkM1NXaE9lblZyYVZkaFZFWkhWVFprUm01RFEwMVBjekJQYzBKWFIyMVhVMVZ2VVU5dFRrUklkMWQwYTI4d2JFOHliakZYVFVscmQzVkVXVkZUYjB3dlIzRkJUR0UzY0dwVk0yd3pUek0zZGxGMk5uaDZTVmR6TldKNVpEVkxRemRVU2tWSGQwOUJUbUZxUW5wNVRWaG5UMVZEZVhkb1RVaDViRU5vY2tOS1psa3hiR0pEYVhwRFIyVXlUMHRsTUVKb1NWVlpUVW94VEN0WU1XNXdLemRCTkVKbldURTVNbGxJY25KS2IyMXllRVJ1ZDB4eFJWcDZSVFo2UTFkbVlYVk9jbXB3TldsQ2VqZEtSM2t6VkVWWGNVaGlRekJFUnpWS04zaElhbkJVV1ROblp6RnFiMGRoZURORVJIUnFTQzk1T1VsMVNrcFZiWFJTYTJsSllVMHdjRk5qYkc5NGVteDFVMk5NVVc1dVUwMXhOVlYxVlRoNVZHaG1UMngzYjB0U1pFeG5NSE5yZUZFMlVXNURkV3d3TDJWellsaEhUblJNYkZkUGJIZHVTVEYzZG5jNWQyZEVWelpWUlZjMlUwMWxOMm8wWmtwS2JsQkJiMVF4Ukd4VFdqWm9lbkpOVTFCTlpFeE9TRzFhTVN0cWVWSnRibmhXWjI1bFRGSXpaVXd5TUN0SmRGaDViV1l3Vm5GbVNtUkhZMVZsYTNCUkwxTlpaUzlUVUVFelEyWTBiSGRZSzJ0SFoxRnJTV0p2VTBaYU1VWndiakZoVlRScmFVTnhiM2hHUlU4MlJYZ3pkR3N4ZFZCNGNXZGxhak5HY1RseFEzbzVTbmxaYnl0bVJsQk1NR3RzYkVOUVdtSkdUWEkwWjFabGJGZHpTVzh3TVhOVllYWnBNMVlyV2tSSmJYUllNSEZxWkdkWE1qQm9hbElyZWxGMU9FeHVXbWgzVlVKNFNESnlXV1p3YnpoUGRVdEpOazVaTDFoNFkySjNLMDFWTjFWS09HWktLM1JSTkhSa1l6TnVRbXh1Tm5KUWFtSkpZbk5pWXk5V09XY3lNRFIxU3pSdFRGcGtOM0ZZTmpoeWFHTlllREZZTURReGNqUXhjRGxtVm5sMllqUjNZamxqTVhoek4yRm1iMGROV0daTWRISXJkMjFIZHpBMVF6SXdUbTkxZDJZNVdVUjZTV0ZFZDJORUszUklOREZJUnpkYVNXWXhNMWxRWkVGcVUyVkpURVkxWkdzeGJEVlJUVzFIVTBsbFpYaDJja00zVUdsVlZqWkxZWFpOWmtSWlF6QXllR2RvY2xkelNqSmpUalkyUVROc2RVTmFRMUp5YjNwVGRXYzNPWEYzYzJwM1JFVnRZbkJKWVVGQ05WZG5lbE5TWkdodldtMVZSM0J2Y0RaYVdWcGFaMVIyVDFKWVJ6bFJWR3hMUlRsMVVVeG1iemxPUm14alkyMURhM015ZFZONGFHeEVSMFozVkVaS1NXc3dOMlppTURnMWNITndOWEJQTHpNM2RFa3ZUbXBIWWs5YVV5OXJNMUphU2xaWmFFSnZRMDFXU1U5bWVEQkpRbGREY1hkRFZYb3ZTMEpDWVVOR1VITmhNbmxwVlRaaFRrMTZaMWhNUWpSSlpFMTFORXhzVG1VM0wyMDFkbE5tVm1keU5VMVpibkp5Ylhaa00yZGhhMEl6YVZoUlp6bHNjM0J6UXpWcWNYTTVabTl2V2l0RGVISjBUWGwzVjBOMVRUbEJURkZaYjNjNVRUUnZla05hVjBKWFQzTlpja2hWVFdzNFFWVkRVMjU2U2tocGRuQk1lRkJGYkd4SlNtaFljV3R1UTFGQ1JXUk1hRmROYXpWVWFFb3JkRFpCUldrMFV6TXlWV3RMT1Rsc1dIQmhUVGN3YTFOSE1rMXFPV0pCY2twTlMzVlZSUzlJZEVJcmVHRTJUVk5rYlROaGNtc3pZblJYYlRkT2RFdDNZVGxPTW1Ka2NtUlVNV0VyVWpkcWRuUm1kR1U1T1RSaFUwMUxUMnBGVkVkWFUwRkdhVFpVUjBWbmJWZFRiMVpzUldsNVdFbFZObGR1Ums5cmVuVnVVelZ0V25BNFJFWndPRmhHY0Roc2JFb3JTbmxySzA4MVRXaGhPVXhzVnpsSmVHcGxiSGx5WTJzME5HVlRPRU5PU21VeUwxWnVhbHBzYkRGWGFsTlJRWGRaV1dJMVpqUXJUVUZ0TTI5NlVqTnZkWHBpVlZOQ1oycDVjV1l2TkU5bmVWRlJUMmhpYVdGclozVmFMMkphZFVaRmIwRjNSRVZQVEhVdmRpOHZlV2h5WjNkU1NqY3JSVEpDY0ZCallsaFhVa2haZHpKUGEyMXpiamhXUTJKNGJETnRiVk5uZVVkU1J6Qk9TSHBHV25ZNFlXUkdkbW93Y1ZWdFVHRjBRWFJZTUROT2JuSlhabWxhTkcxMGRrSkdVMVU1ZEZGR2JsRjBTWE5qVm10bldIVlVOa3g2YUc5TVR6VjFTR3R6VFRSUFV6TmFaMHB5U0N0UVdGZzNaa000UW5seFVHNXlRMGN4ZEhCbU1rRXpNV1ZyVXpOVFNFTjZiMHN6ZVdkWldHVnBNMVZzSzI5d2JEZ3liWGRsVTAwNFpFbEpWbFoyVEVoWldHcEhlbUZWUzNKQldHVkllVUpNTkV0NWFFMDBTV1Y0TVc5RFVtaHNLMUJ5WWpoRVdpdEtXV1ZqUTBoblVEaENOV2RQWmtFMVkxbFBlamd2VVd0QlFVRmxRVWM1TVZGUFkwcGtZME5vVUVkMkszWmFOblJNV25ReU4ySjBXVlJwU3pkU1ptSjBjMlZMWW1WbVJuUnhNR1paY0hsME1rWm9ZeTlQZERCdVpWbHNRWFZ3Y2xOeE0ycHBTMXBOYlRkUFJXeE9lVTF1WmxCd1VtZDZkemRpWmxWQlVuSlJha2swVFZwUlMzcEhWVmM1YVdGMWJXUnRSR1UxU1d4TVQzQkJPV1ZXUm5kNk9XdFVWak5ZWjNWTWJubzFNMVJuYTI1c2VuQnVWR2NyYTFoNk5UTmlaMnRUVm1oSVpEVmhjMjFvTWtJM04wSmxNRTFyTUZwNFQwUkhUV2xqT1hwV1NsTkxXa1p1VTIxRU9FOWFlRVo2WTJ0cFEwWnNibE5vVEhsUFdYcEVlbU5GY0U1TFN6ZHlVMm8xUmsxWlZEWTBjbFZWWVhKbGJFZG1NRmw0YkZGWVozUnFXVTVoVlU0elFtcERZV0ZUZDBWME0xWnZVa1owTmsxS1FYaFVSMk5TWW5OUE9VMWxNMjk1VTBSSFRXOVFSalJNV1dWVVYyaFFUSGRaZW1wd2EzTkJZbVl4WVZWdlNHVnFUMFU0WTNocFMyTnplVTF1U2pOcWJYSmlSazUyVFhSeVVHUmlSRGczZWtrMmVqQXJkemgxZVhjM2RubEJkbGR0WlhvM1dHRXlNRTgxY1RrM1dVZ3ljMUJ6VFdaWmEyVTRXbGRQTWxwclVtVm1Xa2xzZEdwaU4xSXpNakJtYzJNdldVNHJOVWc1V1c5UFNrOUlabUp5VkUxVFMySmhTbUpYVlRjeVJ6WXlhbmd4YTFJNWFIaGtiM0ZrYkZaMVVXeGFkRmxaU21aYVRsUmlWR0p0VUhvM1l6VXlWRGQwTHk5cE5UVlBlVmxQYzFWbVdrVXJlSEE1YUhnM2ExTXllVVptV2t0bE56STVkRmRFU0RkUWVrVXpabHBDS3pWb09YaHlOV3N6TjBSMk1sVXZjMW92WVdKRVkySjRWSEp6VlRkb1ZGaDBNbTB5YlZjeGFrODVhMlYwY0Roa1dXdG1Xa05ZV1dGRlFVaGhSRU50VTA0d05TOXNNVXBLTWpCSmFqQlhhV3B5VnpoVWRIQTJkR0pYZGxwNVRXRXlhbkV4Y210NlltRm9hSFIwWnpReWVVZG1NRmw0YW1odGMwbG9WbHBNU1dSUE4wbHVRak5KUlVvelFVZEdNVUpGUm1Sa2VrcDNMM2xDUXpoblVVeHhWR2hRVFZSaFowMVNiRE5GZEVodVJuSlhUWFp5T0VKS1R6TnpSRXBsZW1nMVFubGtkaTlYWWl0T1duazRPSEptZWxCb1NYWTRaVkJTZGpGQlUwMVRRVEZSWXpSeU9HSkxkVkp6TkVoVFVWUm1VWFp2UVRORVZqSTROSEppYm5oMVNUbEtlbUkxT1hjeGQxb3daVEEwVGtscUswZFBVMGhqVTJFM00xZExWazVhVWt4eU5qVjVWV1lyTnpWbmFGTXllVVk1YkhwbmJFVjNTbTh6UjA1T1MzaFRSMlp3TkU5QmNESnBkRFJDY0dOSWFuZG9Ua0YxYTJ0T2VVTm5jVnB6Vkd0Qk56ZFdXazVQVjFBNVdIcFVlV3N2V0RseGNFWXlVaThyTVhGck9GRnFTV1JtZW1GRVExUlRTbXN3TlRCRmNVNUpha3RaUXpoT01YSkdWUzl1WjFaUGJEaFlOa1ZLWkhCSmRERnBVemRXV21Kd1kxSlpaMUJ4UlRoeVQzUkRSRUZaZUdkSVJrOVplRkZMVjBWaGJGazFOVTFuVkZOWE5rbEhVbXBzWlhKRGEwa3hWWEJ2ZFVsV1N6Wk1aM2hYTmtwR2FYQlRORTVXZFdsNFdYSmpkVVJPVTI5TGVHdFJZWEJOUmtsRlVrZ3hZVmxMU1U1YVlVbDRlakJoTlRGSVJXVTJVbEZSVTFob0sxTmtia3RSTmpFMlpsbEdUemhHYlRKelpuUktUemt4YW1SWmNWaFNiSFV4YUUxaGRYUlBSRzV0VVZSSlppczNORGR0ZFRsclJrTnhNa3hXWjBWbWJuRTRhbnBGWTA1YU4zQjRTMnAwWkdObk1taFBNVGxDVUVOT01Ya3hjRTVQVG1wckwwaHJMMFpMYkVkd2VXeFRkVU5zVjNGVGRGZHhPR1paVkZOSVpFODRjbTF0VFU1NFlqVXZlbElyZERoQ2FWWnhSWGhSUVVGQlFVRkJRVkZCUVVGQlFUMG5LU0JtYjNKdFlYUW9KM2R2Wm1ZeUp5a3BPd29nSUdadmJuUXRkMlZwWjJoME9pQTNNREE3Q2lBZ1ptOXVkQzF6ZEhsc1pUb2dibTl5YldGc093cDlDZ3BBWm05dWRDMW1ZV05sSUhzS0lDQm1iMjUwTFdaaGJXbHNlVG9nSjI5MlpYSndZWE56SnpzS0lDQnpjbU02SUhWeWJDZ25aR0YwWVRwbWIyNTBMM2R2Wm1ZeU8ySmhjMlUyTkN4a01EbEhVbWRCUWtGQlFVRkJTRGwzUVVFMFFVRkJRVUpJV1hkQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRa1ZWTUd4SVFVRkNMMkZCUVVGQlFXZEJRVUZCU1VGQlFVRkJWV1JGVWxWWlFVRkhWbEZCUVVGQmNsRkJRVUZRVVdkWGFVMXJVakZDVUZWM1FVRmFaMEZCUVVKWE9VRkJRU3RpY0VsbWN5OHhTRlV4VmtOQlFVSTNkMEZCUVVFMldVRkJRV3hKVW5OemRua3dPVlJNZWtsQlFVVmtSVUZCUVVGVVFVRkJRVWRDWlcxdVJreFpNakZvWTBGQlFWSTFRVUZCUVZodlFVRkJUU3RIWmxKRVFrcHVZa2hzYlVGQlFVSlNRVUZCVUd3NFFVRklXbFZpVG1KTFRsZG9iRmxYVVVGQlJVNU5RVUZCUVU1blFVRkJSRmxTTm5ocVVXRkhhR3haVVVGQlVubFJRVUZCUVdkQlFVRkJTa0ZwYWtKU1ZtOWlXRkkwUVVGQ1JHaEJRVUZCTlRSQlFVRmtWVGhJUW1ObWJYaDJXVEpGUVVGRUwwVkJRVUZFYVVGQlFVRTJlVkU0WVRGdFlsZEdOR05CUVVGUU5sRkJRVUZCWjBGQlFVRkpRVXBaUVdsb2RWbFhNV3hCUVVKT1pVRkJRVVZzUVVGQlJHMVVMMkpvTWxSSVFuWmpNMUZCUVVZdlNVRkJRVVpwUVVGQlEzcEVRMjVJV2s1bFFVZFZaV2RXT0Vjd1psY3JUVFJ4YzFKd1lrSnNiVmRhUWtKWlYzQkZSblJ0YVRGemMxWnZiR2w1ZHpGNGFFUTBkR3BvVGs1cU1HdG9VMVFyTTNCUlQwTm9WRXh1UkZoVE5DODFlVzVrV0ZCSFdtMWlTeTh3T1ZSMkt6RXJkaTh5TVd4R1ZXVk1hMFF3TkZkbWF6aDZZamswT0cxblpFeHJTVk5IU1UxbmREVlBUa1ZJWVVWdFEwSnVkR3RZY21ORGIxYzRjV0Z4UzI5eFZISm1SRGRoWVhwS1VteE9kMnBvTUhWVVprZHlka2htU0VrcmR6ZzVhSEJ4TXpKRWMxZ3JjU3M1TlRVM1pIbEtaRVo2UzFsSVdubFpaVmhGU3l0UU1sbFBjQzkxZFVobWNIbzViemhGYjBOWWJ6RmlLMmhtTlUwdlozcFZOa05WU21oTmRFWmxibmN2VVVzd01HMXpPV3BOYlUxNU1GRnphMjk0V0djMVMydDZhWEJtVWxaV1prbHRhR05NZW5jMldIVjNSMHhKTURrNVdUZFlaRVUzVkRWMllraGhaM2dyU0hGSVpEWXZlWGhSZUVkeFNtMVZPRkpuYWtwbmEzZGxNM2cxU1RaQldGSTVXbkJ3U3pKdWNGb3hObVpYYld0T00ySXZaR3BvTmlzdlNsZFdTbGRsTWl0SVNtVXlkM0JUZDBVdlEwZHBRbGxwVTNkc05YSkRXVWxTTURSNlZVa3lXR3RaY214UGNteDJiemN5WTFCSVZVeHFXRWMzVms0clpFUk5PWHBNVlROUVZHSjRXa3hqTkdwWWVXVTRVazVqUVdSbVp6ZEVlalZHVXpRMVJVbERMemhTTm1OeE5EQkZVVWc1TlZGNk5DdFRaVmRHTUd4bGJHSXZVbXBoU2pkcFNEQlNSQzlOUmtKT2RrVmljMGxJZERSQ2RraHBXUzlCV0VGME1reGxka2RYU0VJNFEwSk9TRWxEYWpndmFUaFJPRlJrSzB4NGRYUlZkeXR0T0RobWFtTmxMek5EUjNkTk9FWjFTVE5uVUZOcFFVbHZMMk0wZVRWS1V6QTBXbVZIYlVJeVJIZE1OMDlqVHpkMWFtRk5kbmMxUm04elJuZHlNbEJRVlZrclpuVk1kMmhJWTNVdlREUXZSRTVNZFhwRGNWQndOMFJ4U1hkdWVVSmhTMUl4TkVJeFNtcE9jMmx3U0RkbVIxaHdXVGxIUkU5TlVubG9XV1JaUkZOMFduUnFWbXRxT0RVMU5rNXJTVzVsYjA1dE9FMTVUMmxHY0ZZek1qTlJOMU14TkRJcmREWjBhbWhZVDBaM1RrUmpMMWRXZDNrMlJqVk9RMWgxVEhkRlNuQjJUR1ZTUldrNEsyaFFZMGRqVUZGck0zUnpaV2RTWTBRdlRqVkZhRUZTTkRsM2FsRkNSeXRGUjJOYU5FVkRWMnBoVEdWUU9GVnBjR1JVTm0xU1NreFphazFyUlV0elZsWldWMHRRV0Vsa1pYbFlVRFptVGxOcU1XMDNkemxoU0c5WlJqazNUelpYVERGTlZuSk5hak5vU1ZOYWIzTk9Xamh1Wm5ORUsyTkxTMjVrZW1waVdrcDZhemt2V1ZwS1RWb3hWWEJFYzNOclpGUnVWamQzYm5FMWRGUlZRbFJOUkhJek1VcGhXREJ0TUZoclRFSmxiM0ZYWldGVE9FcFdRbE56WldacFVtSXZlUzlhSzBoaFZIQTVOa1pFUmsxc0t6SkphRmd6Wkc1M1pWSlNPRUZRVjNCRmFuaFFka1ZUTUZGV2VFWkZSMWRRUzI4MFRGcDJZVXd4WlVSNFFqaEVVVzlXTHpodGNXZFZZVXhKVTJSWlNXZGxaMjFuTUcxU2EzZERUR05uV0VKeEwxbE5SMVV5VmtONVNVbzFXVFF3VlRCWWNFNTBWRTVWTkRGUE1HMW5NV0pZY1d4YWNqSXhjVTB4WmtoSFFWWmtVRzQzY0ZwaE9ISkdNRXBRT0VocmFqQXZWamhCT0dJeFowRk9TV2R5VVZGak5tcGFlbFpPTDFOdmRFOHdTM1V4TUROT1VIRnhXbGhSVmt0bldHWlhTRVoyY2s1cFZUbHBiV3hQWjNwTFF6ZGhVMnhxSzFCNWFqbDJPVXd4YldaT01HMU9ZbE5GWlhwR05pdHlVVFI1WjAwMk4ySkRkV3hrVjBSa01GWnNTMFp0YWxGeVdWZDFUbGxHTW1SWGRHTlNibEprTW1kQk1reGxkbkZUVlVoTE5GcEdkalZGTTFKNE9VMHdaa1F5ZFZCSlVWaGhhVWQzWjFKcVFVUjJUVmsxSzNoR2JsSkVWVlpOTVhoNWVHNTZVMU16WW5rdldVMTZkMm92WkhkVGNrZzFiMk5xV2swNFJYcHdMMjQzTm1ZeVVrMDJaVVJ3T0RsRlZHZE5SWEkxYkdNdlVpOXBWM2xFZWpsWlVWVXJNa00xYVV0dlExb3hibUZEY2xaNFdFdFBkWFF4YWxWaGNtcFJZWG92TDA5bVpVUmlNV3hWY1c4MFQxWldjMGhKWm1oYVpFRTFkRXBDT0hZd1UzbHBVa1J4TkZSemNEWkhNVWRJY2taa1IxQnpOamxuWVZRNGVGazVNWGNyTUhkcVJ6QnFkRVZCYUhoWWFuYzFVa2hxVXpCNmFHa3lUR2RSYmtRM2VVVklTbWRrWVRsT1dIWldSMlJXTjFaV2JqRnZXbkJFY21aMGNUbHRiWGx0ZG1SdmMyMW9aREl6ZEdKdWVERTBkRkFyVERoT1ppODJUVU42ZW5vMlREWm9PVGxzVDJSQ2VpdHhSRnBNVmtsVWFtZEpVVzF0Y1ZWQmNIcEtkMjAzV1cxRFJFTnZWbE5xVERBNVQwaDFiR2gxVVVaS2NXWXJibFkxYzNsemMweFVSR2xrTm5kMmJDOVdVRm80VlVNeVluRlJkVEoxVlV3NWRtTklNbU5EVjNkMmFGWk9abTFCZUhOclJYVXpNa3BPYlZodVkwaGtjM1J1YjJ0V2VETjBZWFJQWVc1VVlXSlNOak13YzB4SWFXTnpNRVZ6UVZjME5sRldZbU5uVG1aaE5FZDJZWE5LUjAxTFFYSndWVTVKWTBoSmFUVkZSMDVSUm0xS1JXYzVlREJoS3l0cGJEbDFlWFZ5Tmk5TWJITmxOVGd2WjBnMVZqVlFVVTVFY25aV1FtNDViMDh2ZWtFMVQwZElZbkYyWkdKMVZYWjBTR3hpYm5wWWRqSTVjSFo1TDIwME1qaHJabkpPYWxJMWVVdGtOMnRFU1RaUmNIbG5lR1FyVXpSWE4wSkRSREptVkRkM1VHSmpSSEpTY2tOVGJtbzFNRFZNYm14TGJXdENWbWxxYkdWQmVqUkZObHBuWWxKSGVrUnBRbEZHUWk5QlVFWkZiblJzWkhwT1owNWpNekZrUVRkYVJUVkxZbTFrV1ZZeGNtaDFkVlIwYlhWcWJYaDNOa2t4WkZSeFpHaFJOMkk1WjFaQmR6ZGFaSE5aTDNOWU4wVjZTMnR6Tm1KbEt6TXJkazlWUW5JeUszRmxSeTlDTkZOaVpqSmhSblp3YURGMFZFeDJTbk5tU2xOb0wwWktWVGh5ZFdwU1Iwa3hla2hwU2s1WmVGRnNZbE5NYTBkNE5FeG1UVFpxUm10NGJuZHRaME5KWjNNME4ydDVZVTE1VVRrelJqVnNRbTU0YkhKVlkweG1PVXBMVlRVdlRXNUdNamM0WWtWMmVVZEZLMXB6UlU5WmIyTktVbWc1ZGtSaVJrWlBURzFqTlZGak4wWTNOazV3YVRaeWRUTk1NemQ1YzBOaU1XczVkVFJvTDBWalNDdHdRWFo1WVdaSk5XOUtRVzlyYUdkdFJFMVpSamxMVFN0cFZHMUJSWHBGZVhaQ01FWkNNVmQ2U1ZjM0t6VmlZWFF3WTJ0bFdtc3dZMWhYTldZMVFWQktXa016ZUcxWlkxVXlOVk5JTVVkYWVDczBLM1Z2UW5WNU5tcEtkMFYzZHpsemVuTlpVSE5LVDA4NGVsbEpSRUpqT0VaSFRVZEliMnd6YWxSNk5EVXZkbFJVVHpVMGNGQjJUazFGWTJKYVZuWmpVbGg1WVhWS1pYRkNOWEpLZDNOSGVrMW5kMXBUV1hwSGNqSjFNU3QxTTNCWVZVVTRZVlpXY1V4M09HSk5kRTVZUkhaQlNXbFZRV2RXVFdVNFFXSXJSMVpXTVVGU05IZFBOeTk2ZUhob1JqbFlWVmRJZGtKa04xZFBlbkpWZEZJeGRIRm5OWEpITWk5c1lWQldabmRMSzJZMFRFMUtiakJ5YjNocVNIVkZSWFVyT0ZCaWJuZGhXVWhSV0dSdkswc3lUMkZETVdnMGJFZDBWbVZMYmpsMGRETlVheTl6TjBoTWMyNUNjRXh3U1hCelRXb3djU3RrTjJSRk5tUXlURm9yWVVoVUt6bExNeTl4ZDA5SFNGUjRPRFF2UWtSUVlYbzFheXRvZGtsMUwwczRaWFZCUVRBeGMyWlpZMjVQUVVOb1NGVndRbXBIZG5sS1IzUmhSelpFUmsxTmNqUXhUR2c1TjFsdVExTTJaV3B0V2t4d0wwMUNlblZpWTJwSmFqUjNkVmdyVUVwNFFWcEhZVGxDWlhKdFVITkNkRnBwUnpaQk9WTmFLMHhwYUdReVZDOVhUV2hyZVRKdmJqaFZOQzltZVRoU1ZHYzNLMEl6V20xaGRXWk1lR2RQV2xFeUwyUjNRbVJoTlhKa04zYzBNRTkwTWsxTmEwVlVVMlJyZFZwaGNqZzRSVFZ3YzNaSGFFdFBOMFZvU2pKVFNHUXhUazVUVkhsdlptTXpja1JRYjI4emJXNUxUekJOTmpsUlZFVlphV014TmtONFRFWnBUaXQ1TDIxMFpGRnZORFZITlRRNVZtdFJaR1I0T1RKTWRIVmpNMkpYVEM4NWNtVlFaVGxJVUhWSGFtMDBNbE5OWlhkNlZHMTNRalpNVkVKUVZqWkxXRW8zYUUxTFNEbGhhVU4xUlRnNFVEbEhhVGd4U0VoQ2JEZE9iRzlhTnpscGNrRk5aRFZJTjFWd2FIRXlTbkpaZDNOVlVFUnJhelYwVVhGMWVqbDBjbW9yWmxsWFJGWnlTV1pXTDFKSGJIZExTak5pU0VKTU9HWm5OMWRWZDBKelJtOVRMMGd4TkhkakswZ3dSaXRtT1RKdE1pOXBkek4wYmxCNWFGaHFjbWRFT0M4M1VYUnVaekJ1TkhaSVEzTlhiMHBRTWs5NlNUUnVZakZaVDBzNU5qbHpWbFZpVjBGNlIzUm5Zbmx0VjJkemJUUXhSbk51YUdaR1RuZ3JaeTlzUWl0Q2IxcElZVEpVVmpWR2FUWnNUbnAxTjJwVU5rbHNSR015YW1sVk9HbzRMMng2TWtaMU4zbzVNa292YkdkaVlXVk1NVzluTUdsUFRHeEZiakpOZDJGaFZsWTJXVkEyT1c1QldqUllkSE5sYWxCMGMyNWtObHBSUjBOcWREbFFUM2hKVFRkcmREVlplazkxU2xKaU0xSjJSRVpvZEdOaFRuVmhhVVZYVVdoSE5UVlhTMjlUTlRNd1pXdHpkWEF5UkdsMVlUVmhTRU5DVVZvNFRUSkdNa0puVFhObE5FUTBNRWRFUmtkVVlXRnZUVlJKYnpoTE5HSTJSM05CSzNWVE9IQkNhbWRIZUVOcFREVlBTRVppWlZOeWJ5OVFkbXgxY1VkUVJVVk9MMjVFVHpWTU4wUm9XV1l6ZGxkR1dFTkZVM2t5VlZSTFpXMUtOVlJhWkRreVNUUjBhSGswT0M5RUszSjROWEpSU1haYVlVTnBZa1JqVlhsQ1EyNVpUMUJ2UkRKTVoxTlVjRGhMUzNsamRsa3ZTSEV3YUU1T2JsUmtPVGQxTm5sRmVVRkdMelJPZUhSV01rTTJlRXAyYUZCSVFscGtVMUpMYmxCS1N6WkhjRGd3UlVSNGQxRndWazlIWjBOQlREZDNURE5uUVRST1JVWlNLMEpIVDFoeU1UaDJOWE5QV1hWMFFsVTFhRFU0WVhVck1WZHNhVUpvZWtFdlNsUjJWRlJWY0hkQ2RXbDNkbEo2THpnNVpGQnBWRTlHVTFoQmVIUk9Ua2s0Y20xWWRXSjJVMnAyVjA4ek0xUmlNakZFUkZBdkwySldMekJGTDBKMk5qTkZNMWxaZUZOMGRWZFdUM0JEZGpoc2FIRk9SVlJzVmpaNE5pdHljazh3VjFVM2QyNU5WR3B4V0RCdmJWcDBNSFJTY1RGSGNuaDVka3htU0hWS1YyVTJWVFpYYms4M2NrTkJLMGh2UVhWT2JXWlNNVUpUTVhWeU1GVm1TbTQyYm1kS1VWQjVabmQyVjBSNFNqbEZTRnBZTm1sV1YwSlFUa1kyY1VORk5FRnFWVUZLZEhsYVdtSnhXbk5SV0ZkNGFubFFSSGs1TmxwR1RrTXpZMVp1VEd0MWRtRlBjVXRYZDBKR1pUQnpLM04zSzFOak1sRlJZWGgwZEhKWVJUbG5LM2w0TDNOVGVEQmhTSFZvZFRjcmJGSkNUeXRWU3pKWk1sTXZTVTAzWkdwM05td3ZiWFp6WkRVNVRWVlBOM2RYVkV4MVRqRjZTV0pOY0N0eFN6RXhkVkZsT0hsaE15dEZabVZRV2xrM2JYQktiV0YwTjAwclYzZ3dlRzByYmtKV016SjNSekF2TWt0aFdYRlBUamxzV21sVFpWZFRWVU5RV1dkQ2JXWXhZU3MyVm5kT1V5OWpkaXRoSzBwU01HWlZNMDR4Unk5UWJsTk5abGd3YldrdksxWlRiVTUxTlVaa05WZGpWVFExUkZCUWNrTlRWV1pHVTBvemNGaFljWEJRZVdoNmRHTkJSMnQwVUU1TWJIWjVaV05MU2xKNVRFOWxOV1o1Ukd3d00yUnVZamwzV2xBelVXUmFOWEpoYzJNeFozVnRkMmcyY0ROdlowOVFhSGgzVEhZNVdqbDNWR05rWTA1bWVFNHdURUZyT0hvclEzcHZiMHhxVTI1RmJGRXpNazFGZEZwRk5VVXlRakJKTW1KS2JtRXhXbFpSU25WdVprTlpjSFJOSzFCd1lWSTVWRGRYWTI1VE5tUnRUbG8xV2paSFdYWldWbkpuS3pOWU9UbDBkRTl0YVZFMldHTXJUWFF5UldaS1dXSnJUR1JSZDBOcGQybHVlR3RvTTFOUmJHcE9MMjAwVlV3d1FYSnVlRkZMUml0ekwwcEdRVWRHWTNvMFMyOXdZVlJ2TkdZeGQzQlJRVGw2V0M5cWNGUTVSWE5PTUVFcmJuWTVlQzkyVmtOaFlYZFplRzAyTkUxR1drdE1ZVUY2TTB0a0x5dFZjMWRFSzA5bFQzSXZMMUprYVM4dmRpdDNaalZ4VUZCNlJHUTJTM0pxYTJScFNtaFphMnhMY1U1TE1IWXdla2htWVZwa1R5OVpaRlFyVERkbGJWWk1TalpsYm5veWVrcGtOM1EyU0VScmNqQTRVRWhTZFdVMlJrOU9Sa1ZqVUdoM2JXbFNUU3RyVVVSMlUxTlhTRmhWYURGalJrTnVhVkJ6SzNsaFFVTjFUMUJqYTBOUFoyNTVRVXhJVDBOSk1uYzJla2hUY2tWa2FrNTJUVUYwU0c1Nk0yTldNVU15SzB0MFVrMUdUVXA0VW1kTmRYTk5Uemh5TUM5bE5Ib3pUek5xVVhCUFYyRXdiVkkxUVZBclYzTk9LekIxY2pjNVdWZHNPSE0xT1dSSVNISkhUVkZ6TlVSelRGSXdORnB1TDB4TFNXSXpkbU5IUlZCQlNWbDBMMmxtVDFVMVZYQnBla2gwVUVGak5YSnNObnBHUVhsT01VWXZSSFozTjJsMmQzVTBTV2RrUmtsMlFUWnZUa054TmxFNE4zVlVVVmRSVFdNNGFuUmFURmc0TmxNNE0xWTBibGt2VG1OaU1UbFdPVzgwUVNzemJVWlJaV0puS3psUFYyVjRhbGxZYkRSalZrODNiMnRHVUc5NE0zQjVkelZuVEdkc1FVcFBaRUkwWW1kMmIxVjJNRmQ1YW01MFYxZHJUM2swT0dwWVZVVjFlVFpITDNGS2J6Sk5hM2REVDNWMFdsZFJlak0yU0hnMFNtbFhWalpHT0drd2JuUkRjemxUVHpSeFJsVlhUR3h3TDFCQ1p6aDJjbmc0U1dobk9ITmtkek5aT1RJNFNGYzNWMjFVTjBvNGRXMU9SekE0ZGtNdlpEZzBabkpWWjJSUFJrY3hTVVF4TWxWeU5ub3dNVkpDVDNaWVpUZDZUMnN3VWpWWGIxQnJiSGhoTjFsR2FYb3llVmtyZWxCaFRuVlVNVnBNYUZabll6UnVUVm93ZVhkdVVYQnVXSGdyUTIwMlRWUXhXamwyYzNOVU4wZFliM0ZKTDNCa1lsTTNOREEyWkdKcE0yZzNVRE4xYWtkUGEwNWtPSGMyVDJsNk4wRjFWazU1UkZGWWVFUnhWbGRZTmxGU1pFVnpRVTVWUTNWWWEwTTJhSEF2T1ZwakwzTTJSaklyT1dwclUwbGFRMkZYWmtsb0wyWlBOWEpoUzJWWEsyaGxlbU5FT1VSU2NFNTJXamw2Y1ZkWFZUbEdVRXhuYlhSWlVXUnlWV3R6U1dOeE5uRlViWFpIVUU1SVFuZHhSR3RYUzFCa2VqWmxNamxGZDFWd1pEQk5aRWRvZDJOb05FdE1RVEZNYlVaVVIzRmpMekZOTTBWalZtSndla2hoYlM5SE1XRnBPSFJ0T1RacFlWQlhkekJOZFZock1UWmFhRXcwTTFsNmVFazJiMEk1YVVsQmNHd3lZU3RwV0RNMlZqTkdiMjlEVUZsNVFTOVJWbGxWZDBSVWVEZ3lSbFYzYUhaRVVsRjJlblpQYW1jNFRsUmlRblpUTWpZMlNGZ3lUMGM1ZHl0T2NtRmtaak5MZGtOWVRtaEZXRXBoYVV4SVFXZDVkWGRYYjNOdk5UaDVTRWN3V0hKSGFqUXdPSGRpTkdGTE5IRldRek42YjNZNVozVXpWMFE0TVdKQkswNWllU3REY1cxWmNVcDNRV3hFZFhGaVJVNDJObkpYYjNjeFNGVnJZMncyT1ZwMGJVb3lORTh2V0U5bGRFWTJlVlIwTjBGYUwyWnZWa1V4YVVoVWIxSllhRlIwZEhKUk9ETkJNaTlKY1hCaE4wNTVaV3Q0VkVZNVJHdE1UbTE1YVVwTFNsQklRVmRwYzBOWFNGRXZUV1lyWlZwb1pIUjJibGgyTm1WM2RXOXFabk5xTW05aWVVdDVkbU5hTjJjM09FWTJSWFZ4WVZGUWVVTlNVbmRpTUdkTlFWWnllVGs0TkZWMWVuSTNTa2xvYURkb1NHdFdSbUp2VERkTE5FZEZUM0ZJWjFCNGJrVm9OVmxKTjBRclF6ZDFVblZSUnpsNVR6bEJTRloyTm1SSlJUSkdlRTF5VUZOcWVtVkJZbXhSU0N0cFFWZE5hVzV3U0VSMEswMVllRFEzT0dkWWVHaGFSMWxPVXpSNVdEVnJjMmxFY1V0MFdXUk5jMWxVY0dSTGRXRmtSVzFMSzJ0M1pVaENOVmxVY0U0ME5sRkllREpDUlZocFRsVmlVMXBrVFVsWmFVZEhVV05MUTJsNFFXTnRkalZhTDJSdlMyTXJhV1poZWs0d1VGa3dVM0pYVWt0MFptOW9abEYzYTFWcGVFUklhMUowVEU1TVlWUlZWMUZzWm5sSU5GWkRXRlptZFZSWFkyWkpXRGw0VUd4MWRtaE1Ta0l2UmtGYVpVMVBUa3hCT0ZremVUUjFVa3BUY0cxblYwZEpjWGg0WWxoeFFWcHpkV1pzWkhWWlIyVmljRGhzYnpJeWFEVjFiV2hpWm01d1VrVjBlbGhGVFc1MU56RmtjbUp4U2xGdFJrMWFORU54Y0V0S1puRmpNWE0wZWpSWFRUWnVTRFl5V0U5VWNITllNVE42TDJocWFXOWFWWFpRTVRONWNIbHdjSFphWTJ0WVZtdFFRazV3V2xaS2EzbFNUMWh5TTBGd01VbDRRM3BTWld4dVZVbE9SekF5YzJ4SVQyeGFZblJPUm5KRGFtVTRUemRrY0daSGNrOHlkbkJoZFRWR1FXVkdPV1puTXpJeGJFeE1VVk50YzNOdUt6Qm1NM0owZGsxVVdXcDZNSFZqYUcxbk1FZHFTWGhPVkc1YVprc3ZhM1pqWlU4elVtOU5ZVXhVUjJoWmJuaGxXWFZvVEZwTE9IZExkbVpCVFRNeGFFdHhSVVpVVDB0QllXdENlRnBZT0N0bVFtVTNNWGhyTUUxbGVUZHhkM3BNU2sxSFRHSkdNR1l4YUhrck5VaERUbFpJYm5SNmNGZFBhVE5sYmtWSU0xcHdkSEJtYWtzek4xRk1kWFozU3psVGNEUm1hV3R4Wmt0T1luaHFaMWhVU3poTlRHbE1LeTk0UlVNMFIxcDZNV2szYVhvMk5HUTNiM0F5TUZwMFZEbEVkRlIyUTJkNWRHdDVVM1o2VWxGUFVpdHBaRTlhVlcxUVpHOWFNRUpwVVU0NWN6ZFBTV3B5YkVoQlREUjZlVVE0UmtNNGNXZHRVMnh0VDNFclZXcG9aVlJoWW1wWVlUVklVak4wY1d0WmIzZFlOVzFoUkZSellTczJXSEZXY2xOUmQwdE9USFpTWW05R1NFSmFNa000WmpaWmNrRnNUbVZsT0Vka1RteGhlVFJpYm1SdmR6WXlXamxhVUhvd1ZrZFlUM3BTTDFnd1VsZFhUbU5ySzNka1JISXJOMHQxV1ZCb01FOUllRFJCYWxCcGRXNVBURUZ6VW1zeGJUTlRjMkZaUVcwM2JXRTVWRUZMTVM5NFVIQkNlVUpvY0ZOUlpXeDJSVGRCY3poQ01tcFZOMDl6UVVoUVVWcGlPSEZKV0RkV01ucHVUbVI2VUVWS01rc3pZM2s1VTBwRE5ESXZSalU0YVZoM1JTOVZXRFY1V21sTlRFTjBOMlV3UzFwWWRUY3daMkZTZUZSVE9EWnVVa3R3V0dGSFVYZFROU3QwTVZaTE5UWXpTbW80VXl0WWVsbG1aa3d4UVRWblVFVTNWRXRVZDNnd2N6WmhNblJLVjJNeGFXOUdTa056VGtWeEsxUndSbHBYV21oM05saFdWbkJFTWpoS0wxSnhaRk5OZUhKMVNsTkNORUZQT1M4NFJrSnNhakkzWms5S2NGSkhaaXRFUVhKTlNHWXphM1UzYmpOc1NFbG1kVWc0UXpWdmFuZDJjV3g0YjFCSlVsVkNhVUZaYm5kcFFsQjNTR0kwYVhka1VXZHpTMkl4TkVKUVRsSnVhbVJaT0hGT1QzaG9WbWwxZUdoUVFVbDNibHBpV0RGNU5WWkVjbkJJVGt4UVNVWkNaMXBFTTBSbU5Wb3lLMGxsZUVkMFQycFZZWE0wUjNsTVJYaDVibmxNUzNaTE9HaHdTMVl4UWs5M2JIUlBhRmR1ZFRKRFFVVnZjMUkyZG1WTFF5dENZM0E0VGpWMFdtbDVOM1JwUkdaTlZERXZjVE5LU21ZMVZ6WjVMMUE0V21acmJIVlFVWFJqUnpNNFExRXlZekppU25Sb1RqVmtOVkZVVjFaMmVWQlFMekZDZFdGRE1TOWpSM2xLWm5SR1Z6Qm9hMkV6T0Vzd2FGUkxPR1kyZWxKVldsaHNObE13VEc1c1ZteE5RUzl3UzJKWU5YaHNkRFI2WW5jeWNpdERWM05uTnpadGFVTnVWVzAwZUV0SmIyTk1VakkzV0hST2FGYzFjM292VlcxMGVqWmlMM0Z4VnpNMWVXSnJVMGd2WTBNM2FuQTRUblpCTWtscE5FcHhPRUZoVW5BellUSjJXVTlTTkhCR2NUUnNjMkV4TmxKNmJrc3ZaMVJyZFhacVkwaGpkM2xZZUVKU2JIbHpWRzVKZDNKQ1ZWZzFiV3Q2WW1OSVJGaGhka2xIWlhwTmFqaHZTRGxOUlN0NVMyMTZjemt6WW01U2FHRkxhM2t3ZVROSFNGUjBLMmMyUm5WcE9GRTNjbVJUWW5CbGJWUmhNVlJ4WjJOVGVWZEhjMVY0Y0ZseWVDOHdWRmsyYkdoYU1FTm5OVTlIY0d4S1MyVmFXWFZHVG1ocWVIaFNZWFppV0dFM2NGQkZkV3hHY1RaQ1NISTVOR1UwYml0blRtSmhUa3RJYTJWSE9UUjBiMnhYWjNOdVUwUnNWMGxPTDFWMWFWZHNhMnBJYWtkRGRISkxkR1IyWlUxaFdrOWhLMEZaY1VSbVFuZHBVMjQwU25vM09EUXhkRU5PU0RZMFZtbFhiMUJ6V1M4eGJ6RllkVzVGYTJsTllVWlNiVWxJTkhGS1JUaERLMUJzWlVSM1RUVXJLMVpaV1Zwd1RFWk9SREZ6ZWpGNlpGaFdSRWt2Wkd4S2JYQlhNVGs1TVZoUlIzTkVlbWx4TjAxbmJHNTJSVGMwWXpkUmJEQlBhR0pYUml0NU5HZzBSVk12UW5CM2VYZEhiakpMU0d0cFpVWjFiSHBFZUVkTlpsaGtRaXRrZW5seGNtMXhjRWRHYUhnMVpESkdhbFIxUzBad05IcDVjUzkyYzFKdk9GTjVOR05xWm5WWUwyTkpWekYyTVU0MVFrbExSbGhwYkZwNGVqQldNR1pxVDBrcmRGVlVOMGhZYVVSU2RrVk9NSGgzTDNoNWRsSlhPWGh3TmxoME4xWkpNSFpTU1ZKWlp6Y3daVnBwUkZsM05uRklTRTVWTDNkT2REUjJOazl4Y213elVtUklaVFJVUkRNelozY3JNVFEyYUVGaU5WZG5aVlpXVEdvdlEwZDVOak41VlhaYVRYRTRaemgwWlRKSE9XOHpZa2RuTTJKS0wzZ3JNVEF3TjJaTU4zSjZLelJvTjBnM1FtMXBOMkk0T1VKamNFUnphbGxYUjBrclMzRmpSRmxaTm5sTlNHaGFhVkpQTUVZNFpIQXdTaXQ0SzJneU4xUlBPVW80TlhkVVpscFpUekJ2V0doME55OHhTVkpxWkdSUFYyeHFVMEUwY1dwR01tbDNUV05MVTNwUVVqSnZOMkUyVjIxMlkxQnpNbEZtWWtablRteDNiR3BuZVVoWmNqSjNMMDFGT1ZCcWN6azBURTE2VVVGNVVHWjNURlpyZHpjd1JVODFlbWM0V21wek5sbEZjbEptZVdOUk9HOVFUSEZXVFZkdk4xcENjRzlpUlZocFIzTmlZMkp0Y1VVNU5UVkpTRTVXVEVjcmNIRmtWek5vZGtaU1lWWTJkVWhLTDFJNWFGaHhSVFpGWW5kdFVYcDFLelUwYXpkcFQyVkpSVkZzSzBGNk1rc3dXbGwyVEVwdFFsWkxTSGRuVmxJMFlUVnJaMjFKYUZwaGN6STNXRXd5Tm5SeUswMUNTR3RoZUcxSlZXRjJiR055YURKVUswdExRbTVzZW1jd0wzSlVRMkZrTjJJM05teFRUbEV6ZG1sTlZuRnVVV0ZvVmt0TVdtUkRiMjVMV2tFclptWk5iSGd2T0VsS1dFczFjelZpYUhONWJtVlRWbmw0Um1seldFRnBTVkV6YkhGdGNXOVdNbWR2V2xoT1pFRjZNVEYzU0dVMVIydFlZamh1UVV4UmVXWnZNVE5TTm1OV1YySllUbGx4WW05d1puUm1lbWN4U25GcFVsZERkM2wxY1dzM1RqRkRjbmg2V0VjelEzWlFSa1EyUkhWQ05qUnZhMU5tUlVnd1NHOUJiazFtZDFZMGFFMVphblpPVDNwUFRsVnBZMlZtZHpORFkyWXlSRFJaUVc0clRVbGlhbTFDVURNelJtNW9aVFJKZERoTVowMW1RM2dyUVdZMlpFTjJha3d3TlZocWJua3pSRlF4TkVVdk0xbGFMMnR2YkZoSFVYTjNZWFZKTVRaamNHVkRTMEY1TTBOek5rRlRZblZyVVZkd2FYWkZhbTFXUWxCSWRWSklUVmt6Y25kcmIzQm1iRUZMSzA5T1ZqaHZaMk5rVnpkRU1UUmpXV1p2VkRSbmNpczBNV2RSTnpOa1N6Uk5MM00xWlVacVZqUkRMMlpDU0RneVZFdzRXa0Z0ZFRSMlZXUnFMeXRNWjFBNFNFZE1OelpGTTJvNGNtZEpLemxyVlVJdmJGVlpNekZOUW1ZdmF6VkJaamRtUVVwa1p5OUJURGh3UVVGWU5HZG1UUzg0TUVNdk5XTjFNRkJPZG1wSFpYaFpiRGx5TkZkT1dHZE1PVGhGWm5wYVRYWjZhMUptUW5ac0swZDJiRTlFTkdaTlNqUjBaM1p5Vkd3d1pWQnVXVVlyVFhOWWQxbzRkSGN3T1U5RFltSmpkamR2VUM5WlYzWmFLME00VmsxVFNYZFRWMWhYYjBoblJVMHdiM0ZXV0hGeE5qa3pUMGsxWkU1V05UbG1WMlp1YWxOcVNEWmtSM1prYTNWTWMzRnRhbEkyWkd0U1UyeG1aekJhWmxFMFpFWjZWVk01VlVVckwyTjFVSE4zV2toUGVuRjZWRzFaUmpkc05rZHllVEpDZDNWVGJqQk9WV1Z0ZVRWdGVESjZVRTl5YjNkcU4zcGhXbGhYTmxRd1ZrOXhWV0ZCV0doVWIyNVdiV0pqT0d3MmFucG9RMk12YmtvMFlrZDROR1JKT0ZKbloxcGtUa0pyVUVkbGJuRkJjbFl2WkVaNE5uazBOR1EzTW5oamJrc3ZaSEYwUmxOamVYYzNRaXR3TmxORVNtWnBhRkJLVEhOQ2RFVmliMWRtVEZoM1kzRlZVR0ZNUkhwR1ZYWmpaV2gxTTJRMGFHMHJhMWQwZEZvMGRHYzVSalZvT1RSM1JVVTJheloxZGtsUGRFZGFkVGxoVUc5eFRtTjRNMVJVYzNJNWNGRlBlblV3WkUxVWFrWTJXREY0YVZOdVZ6QlBOMVJ3TVRkVlJHbzNhRVlyVTJScVZHWTJSbVozVEhCMVNXNXZhRk56U2preU1VcFlaakF5ZDBwT1VtWjRUbWhwUnk5SVNVdHZSVEExWms0M01VWkdSbllyWlVGclltRmlXRWcyVkhWYU1IazNRM0ZyTld4VFNuSnhlbFJhZDI0MmRsWkdZa3RNVW5wbWNEaHNkMDlwVFRCaVUyMHZhSEZRY1dKMldteEhNSHAwZWxreWVVaFdUV2czUnpkVWNEVXdjRXRJUlZSeWMyOW1Zazk0VkdRMWEwTkVkVWgwUmpKR1RFbHpWMkpMTTBkV2RHdzJXRmwyUnpKR2VHUm9aakFyT0ZSTk1HcDJOMEZhZVdFclV6WlNPRTV0ZDNkb1MwaEpZbTlVZFRCTksyOXJUVVZaVFdoblFVWkxTMFV5Y1dWbU1VOUtkalIzYVd0R0wyRnVhelJ2YUUxQ1pXcDRja1prTjJ3eVNHdEpZbVJQU1RkcmExaHNOalIyUkdKeU1XNUpVRGN6T1V4NlVGZFVVamh3UVd3M1dqUlVlR1l5S3pkVFF6RXpUVk01ZFZsamNXMDBkakptWVVZMWFqSlBUSE5wVTFkWk1qVkxWbk5xVnpCaGVIUkJMMWhHZEV4b00zQTRaRWw0Um5ZNGFIWmtXRlZYWms4MWFHRmtUazFQVEVodllUQm9XR0ZUUzJRdmRVVlNUQ3N6ZFVkamNYTXpSME5HYnpRd0wwY3dWRTUxUTJGd1NsSjVSVGN2U2pGNVdYQnFWR3hSTm1jMVYxVnRXa3BVZWxCdGVVaFBieTlQZW5RM1pHNUZVak0wYzI1b2IxcFBSa2x6Ym1odlpGQkdSQzkzVjBONmMyTlhkMkZ0VW5oUFVEWTFVM1JoYTFCVGMzSkVORUkzU2pOR1NYTXpjRWxTTjI5blltTk9kRFp4ZWpsNE4zUjNja0pzVlhvNVVUZGpZalpwYTJvdmJTOVZjbVJIYzFWeFNpdFNXRXBMTUhoMGJsQkJUbE5oVDNGWlRHWk1OakE0YjNjNVNWSXZOVlZ3VEVJMlpXNTZia3RQVGxSQ1prTkxWbWw1ZFRsQllVVXliMGxMTkRaQ2RUUXhjV1pGU0ZoQlpGZzVVRmd3VjB0NE1sRjRka2h4VlZOUmJGaHdaVFk1UnpGS05EUTBiVzh6VERsaVJrRnljek5XVHk5MVNWa3JSbmM1ZW1Rdk1uSXZPV0V2TVM4d1JtNHZPVE5UT0cwNWRXdDBaV3hRYWt0TE9IVm1jbEZYVEhGU01HTXJabUZGWlZwRFRscHNRMkZtV0ZwelJIVjVkbVZDTDJ0alIwczBOMU13SzFONFl5dExReTkyUmxkWFNTODJVMGhrZGtZNE1GVm5lbTlHTnpRNFdYWkJSMk5QYlZGbFRYQjROMVp1TnprNU5qSlVaRzFRWm1OVUsyY3hWekJtTldGa1drWnJWMkpxZDNSeE1pdENaMFJUTkVZNVVVVTJRMjgyU0hwUmJIQnZlRk5RYVVNM1FsSnlaMkkxZHpkb09IcGphbUV2VG5vMlIxQXhOMUU0VlU5eFJtNUVkak5pZWxSU1lrbGxhVWhwT1c0elNpOHJRVTFvV2xOaVZIbzVWbkZ0V0V4WlFXVnpja2RKUzFwUlUyUmFTMEpYT0ZWYWNWUjNNMGR2TWxGWmJEaE1jVEppVkUxSVlqaGxWMFpzU0RSak0yVldUMUYwYmxvNGMyRk5kRmxRTjNaVGN6azBZalZzUVVseVVFeDBaV2s0VDBveWF6Rk5WME5MTlRKd2VtUkNRMWd4YmtoNlpIQTFiVzEzUldVNFVWQlZjMDluU1dNek9HSkhSelJrVEU5WWIxaGxSMXBwZVdjeU5IWkNVMDFMUkM5dFpUTlZZa3h5Y0VoWk1XeENiMkV5ZUd0c09GY3dTWGd2Wm5oeU9YcGFNMHhIY1ZWQ09HUkVVazlGYzFacFprMWtTV1IxWXpkcFoxQTViemg0ZVZnNU9WZGFiWGhuY1Uxb2N6ZGxkR0phYmtvelNtZDFOV1JJY0d0S1NqTlBNMWhWYm14Mll6UXpSSEpLVDFaM2NuVm1hVXhGSzBSNksyRTVUM1ZHWmpSd2RYQk1TalJ6YmxSNFlUVnNOSE5ZTldzeFEwWkdWbVEzZEV0MWVIa3pXVWd6U1ZCdldHNVBlSE01UVdNNWJIb3dkMk5RVkdrNFZXbGlWbnBqUkU0eWRsSjZVRzFaWXpWUWVYcE9ZVmxSU2pVM1NXWjRXRTFSY2pSWGExWjFhVEZKUkcxR1JsVkJaMFZwTm1oc2IzUXJPVzlGVUdaSlF6azNOemMzTjNadVVuZHpiWHB6ZWpsQ2EyTklORFJPU1ZNelQwRTBLMU5IZVdOVVpuaGxSVmxuZWk4ck9XdE9PRnBuWlcwMGEwWkRXbkJNTmtoSFpFb3pUbkpKY3pRMFkzTXhVakZYY1hBM2NrbEtMMjUyYWtoalRHRlRjRzFJTkZRMlJrRTVNV2xJY1c5dEswbGpXVXhQV0U5aGMyWnVlV1ZVZFhkTmFEUmFWalpQWWs0NGRuWmxOSG80ZVU5NlUxcHFkbVZQY0hZd1V6Y3pVbWRaUlN0dk1EZGFRbVYwTWxJNVZHNXdOSGdyWm5aWU9XcGpWRkZXYWxsM2EzZHVNRFJLZERGSVNuTnFTQ3RFZUZOcFZWRXdZMFZyYldkb2RVNTVUQ3RvVmpkdWFtSXpURzluV2xjeldXMW5RbHBaWVVzelIxQmpiVk5NZFZNck1HNWtNa1V2U1daVVlUUkRTVll6UTIxWGJFbDVWRk41ZFRGdmNqWXpkalJvTldGc0x6bExOMnRFY2xGeE9WUTRhalZqV0ZCaVJFczBUMjFMY1hKVFVETlNReTlST1ZSVU1pdEJXazVZVGpCbE1rZzFSbkpxVW1GS2JtVmFURUZFTjFBd2RuUXlZVE54VldkWU1HSndObVZ0ZFVRdmNtcFhNVVphWld4aWNYWXpiMHRRUTI5cFdTdHNZV042WldOd1JsSk1iVEpwY0hVd1YyNVVkbXM1YW01ellYWm1kVGw1WjFRNVZqVjVTRzl4VFdsUldqWTFaVWc1ZGxBNVFsVnVVVlI2Um1aNFZtOXdOQ3Q1YVhwSFpsQXhVMmRXY0hWcGJsTnVhWGd3UkZoaE1HUk5kSFJ5Y0ZKVU1GcE1jRlJGT1cxb2JtOWhXbFkyTlRKWFl6TnZaVFpITlc5R2Exb3dVWEp4VnpkM1YwVXdTbTFUU3pocldITnFNRU55VGxacmMyOW5PVFZqVjNaemFuTlFXV0V6TVdOd01IcDFNbUpDYTJaWU9XOTVOR1YyZFRsdWEwTkJVU3RUTjJ3NVlVOXVRbWRoVjI0dk5FZEJjVkJVYVZWVFp6WmthalF6ZFVKR2R6WXdUR1ZMTmxWeVVWaHpMMFpJVXk5bE1XbzJWa1J6TVhOWGRHZFpVM1l2YUhaMk5tZzNkWE15WWxSeVYxQmtlak4zUWpsNmR6aGpXRTUwT1RZMkswdzRPR1ZHWXpOdU0zWmpkVGM1UjNwbEswdzNPVGh5ZW5WUVpsSnZUbG8xWTFZNGFGbElORk5ZYVhkUEt6RnNablZUVlRadGIwbHdaUzlMUlVKRFptd3dSakJhU3pWNlRWazNZMVZ0WmpoYVpFc3JjRFpqVVdwUWJXNVVNRUZrWldGeFdWZ3JjMnN4WVZCbGJuUnRNVXRaZEZobGFYWmhUVUZLTldWaFVEbDZaWFpLTVhScVlYSTNiVXg0UlhFdmFVVm1jblpuWWt4RFlsUnpVVTF4VkZZcmFFMDJRVEpsYlRKMVZIVlVUSEJCWTBkWWJtSnZPVXhhVTBjMFFWRnNaWFZHWTJ0TFRqZ3ZRVXh5Y0drMU5FdEZTbkJSZUZSaFJFTk1ZMGhMUjNaelNrRTFWRUpPVGpKaldpOXhXRmh2T0hoNFNEVkJMM0JpV0VZcmJFZFVMMDlzTWk5MmJEUTNkMFZ2T1dWdU1WZG1lbFUyWW1oUU1qRkhWRmwwVGtWM2MwYzVjSFIzTUdwek9EWTRRV3d2WjNKV2NrTk9kR3gyYjJaNFRXSjRSbVZKVkhaNGEzRm9UWFV6YUhGWWRsUlpiRWR5WWtaaU1YWjBNSFJzUmxwRVRsa3Jja3hJY1V4UFVscEpSSFl4ZGxSeE5FTnlUVEJyTDJNNVRWTjFhMWRLTkZGclVrVm9TVk5KUTJsNFZGZHJZV0pDVVhSck1rdEdiV3hhVEZZeU0yUjFLM1V6Y1RZM0t6bExlVGRNYlRkaE9DODVZblF5ZEM4MFkwTXpWRFExUmk5TU9WbzVObHBFUmpsRFQwMTJlbmhPTnpoMmNHNDFTbkZRZGlzdmRrNVZVRkIxZW1ab2IwVmhaREpHUXpFNU9HSkpRbVI1VFd4bVRHcHhibFJ0Tmt0Mk9FZHpOakoxY0U1eVZERXJSeTl3U1VoSVVWSjJVVXg1U0M5eVJHZ3ZUVEpXVDJFelYxaERaVmxOYWxsd1dtRmhTbTFqTVVWNE5WbHpjMlptUm14UGNWazVPWHBNTkdscU9VSjVka2gyVjFwNVlXaGhjWGxJU0ZRNFVFbExaa2c0UzBoUk5VVllVbGw0ZDBoU01GQXhja2xaU1ZreVYyRlRhMjQxVUhoUWFqRjZNM05TTXpRdlRHUkpTQzlTV0hKS2FIZERVRzlpSzBoVVZWVlJSVnBHYlVJclptUjZaRlJIVFVSc1pGVmlPVXhhYzJzelluWXphRE01TURaclRsWm1hREZEUWtZd2JsaGpaV2w0UmtWaGMyUXpjRk5QUTJoMFJtNVRRbTFQU1VOUGNTOXNaV1Z1VEZndmQzTmtWRFl4WWpkbFFuZFBPRkJITUdVMk1uSXlVRWRXTTA5bWFqSlZjbVpWTm10UVlVNTFNMmhYUjJKTlFWSldNMEpSVG0wek9YZDBaRnBsUzA1M05rYzNZamxrWlc1aUswZG1NMXA1Wkd4dVNHTm1OSGgxUlRoRmVHUjZhMXBFV2tsNVVDdDRVemxwUWxkVlFrRjNUV05CZG5sV09XTnFSVFE0T0Uxc1NETjVTelZJU0hSdFJqSlpORms0Vm1SRk1rRnBRMWg0WmxoblJXUlNORGhFZHl0dGJUUkNiQ3M0T0dsTVQyWXhTQ3R2VDJ4R01UaEJXVFZKYW14WmRIQlhLMWg0ZWxsaFNFcFNTaTlaZVVRMk5GaERZV05LZWpacmRWbDROVXhzWldVd1VsZ3ZhblJEZVdJcmVGSTJVbk5pV1V3MGVHRmlPVVF5Y3l0QldHWm9OWGRQTkZoa2RYSnVOR0ozUkhwVGFIUlJkMkp0ZEZNMlRXbFJiWEJHYlRKMUsybDRTbkJ6VDNaV1RGcGtaWEo1YkN0bWFuVjBhM0U0U2pkTWQzcEVUelJLU0V0M2NYRnhPRzVUTm5KTWNIQmhiREJRYWl0TFQzcDFNMUJYZDFaTGRYYzBOMlowTWpndk5Vd3ZhRXBLVEdvelowUjBUaTl1U1doVVlrdFBkbkl6U1RVd05pOVFRMEpUTDJRMlRFOU9UbGt6YzJob2RHSnZXbFJITURaeFdsSnhNbGR6Um1ZNFpuQjJlaTh6YWxoVVNXcEtRalEwU0RjM05UUnZjaTl5WjNadGFFbHlZV0U0YjNCeFNERmtObEp2VVhFeU1UQmFMM2cyWlhkUU9ISkdZamhMTTFJMk4waG1ka055VlhSMlpsTmxMM2xpZUhKVGRtWlNiQzlvZEVKaWRuYzVaa2wyV1djdlFuaG5TbFpsUTBKUk1uaHVNRkJOVVVwa1RuRm1OR1p4TmpCdWJqVXlSVVYwZUd0U2JDOXlObmxGVldWbmVVdGxVRmhoWW1FMVdUY3ZlSFJVTTA0MU0yRmFWSGg0VUhJck5XWnpTV3BtTlZadWEzTXJlbmRYTTBWYWVVY3JVM1l3Wm5aQ016QktPR3RJV25FMVpDdFNXVzVvVjJ4d1J6bEVWbmczWlc5c2FXazRSbUo0WkVSaFNXbFZhM2RHV1hrMWNXOVNVak0xYnpOWGRUZHJkVFF5UnpRelIwRnljM2hxYlRJMWRua3hlbGMwZHpKMU1VZG1UbkpQV1ROdU1tazNXUzlhT1UxaVlsQlRhbXBoTHpsUVRGUjBUekJGV0hkYWFGWXliWEJIVUU1a2NVNWFObVpDYmk5NWF5dERNVlI2ZW5oQ1FqZElWVFZIU0VsbkwxSXhNMDAwUlRKa1NqTmtVWEJ4V25NMk1HRm1WMWRTTWxKUGNYTlVOa0ppWVdvM1FubENOVEJNZGpadWFWWmxPRXBTZFhoQ2NIVktRa2RLV0ZFdlNETXdkSGhMU1dkc1IyUkNUREJhU25CbGIyc3lSMnhhVDNGNldtcHpXSFZ4VDFSSVVVTjJNalZqVkhSQ1Ztb3pSMWR5TUdneUsyRjFaVmRuY0dGMFdHUnplVGhDY25KUFZVb3JXbW95V2pGbGMwcFdXR1JoVENzeFNWQlllRnBrTVZwQ1dHNXlNelZZWmxkQ2JYWklRWFF4V2l0YVlqQmliamt2VmpGc1ZrczBja2RTZVhkM2JtbElNVEpEWlVkTVozcHFXR0p5TkZoVU0wOTNaU3R6VEdoQmFVZDJTbFJsY3l0cU9FWTVUalJETVVreVVFVXZlVmNyYkdaYVRHRXhWRFF4UWpCTFJtSnlXbkZwYm5KV05ISXhjbVZ1YWtoWWVuVXdabTFxWkdkaVMzbFJLM1pXYm5KaVZURkRVR3hFWkhwTU1YRXJPVFpvUzFaNUt6TkxVelkzVXpsclRqZE5NVXBQTjBWck1sTnRZMjVaVFVacGJ5dFNjQzl4SzJObEswUkxOSFIyYUhWdWVEVTFXQzlhTnl0S1ZIcFNWR1o1Ym01NlZESmlZemxFVm1aVlQyeE1SM0JGWm1KbWRuWk9RMkV5YlVjNVQwWmpOekl6Tm14UVkwcFlPRWRRYkVsV1NXNTVhV1k1VTJ0d1NrRnVRa281VkhwU00zcGpSV05HVW1VM1FWQnpTSGRTTmxCdU1HRjZTM1ozVW1sVUswSTVhV1JOV25kRFRtZDBNa3BGUXpSSWRUUmxibTgzZWtzM1RYSjJjVlF5WjNOek9IQk1kME5sYzBnMFJEWllVRGREVnpWWU0zRm1aaTl4WWtORWVXa3ZWWE15ZUhwUE5GZzFabmhwVVhaMFkycFFNSGhoVWpsQlNEQlFabXR5UlZob1p5dEpaRVEwUml0SWFqZElTbkJQWVVJNVFXbzNTWGhEWWtaa0swMWxlRVZ2TUVoaWFEaGplRUZ5WmtReVRteHBZbFJxTmpocGNuZE9UMjAyTTFaTFRHWnljVGQwUkRsM1puVkROVXhIVWtvMU5FRkVSbkJNVVc1cFN5OUpjblp4VDFJMlZEY3pZMk41ZVZkdFozbFhha3AzT0ZoSVdrSlliRVlyY21wV1ZHRTJTV1pUVTJjNVVGZFhPVkJ1WTJabVZYTjROVTgyYW1GWGJrcEVhbmhIV25GT2VuRkNZak5TVERWRldtNXpaMGd3U2pnclJYQjVSM0ZXUW0wMksxZHhNMWhJSzBkb1psVXpiRVpWT1M5dlJIVkpZamRUZVhWeGFYSjFTRXRZTkhjeVVWRjJWVGxQZUdabU4wVjVjemhYYjJsblZHTlRRVXQ2VlVWUFFUTkRUalVyU1RBdlFtOTJVVEpEWnk5WU5VeERTMjl6TVhBeGVFZERjbWd6UW1kbWNqSjBVRlk1ZG5OR1owMHJibmhsVEhsUFMwWnNaV2s1VldrdlRYVmFWVXhWU2t3ck9WZG9TbGdyVmt0NU5sTk9LMnBvUlZOUFF6TkxVV1JNTlVaWVFsSmtaVU5QYW1Oa016TnZZemxtVWtveWJDOW5halJuZW5kRVRuTTFSRzF0VWxoV1pFWlhkbXhVTlUxNGVETmxUSEV2V0RJeU4wNTBWMnBNTTA4eVRHUlNWbFoyVkhCVWJEaDBhekYwYXpOeFVEbHlVSEkzVkVSUE5pdE1OMUkzWkM5QksyMTJOMGxEUlhWbWIwWk1WVkZ5WVZGTlpFSmFiMFJ5VVZaa1psZE5RMjl1TjA5TU1IcFFNSFVyU2pKeFYzQjBjbTl2YjI5MU9UTm1OVzF6VG1oeFp6WjViV1I2WkV4U2RHSjBOM1ZETkZZNE0yeENkekF3UTNoaU1VMUlTRmhDWVM5UE1pdEVVMWRpWmt3M1YweGpSMjFFY3k5dGEzVXdOM1ZxY2toNGVuVTNaSEpDTlZKUGNXRkRTRXR2TVhKaFZITnlMMUJ2T0dSV2MyTmtXa2RTZFdOSU1GVnhMMGw2UlV3MmFuZFFlVTl1U2xnMWFGWlFSR05HVXpOYVZEYzNRaXRXY0hKdlJHSmtiazh5ZFhGc1QwNHlSaXM0TmpJeGRHSm9TR001T1dGQmNVOUpaMFI0YmxSdGFUZDZOVE5KYldaSGNETkRaRkV6Wm1zNFZreERXVkZ1TTNsaWMwWXhjVkY2VTNZeWRGZGFaWEZ5T0ZOWmVVeHdUblppV0VwMVNYUjBabE5MYTI4d1NXVnNOM0pHUTJJNVdXeEpaazV2ZFVwNU9XbDFWMVI2U21SNFRHaEhXRGw0WTFwMWR6ZDVLM1ZYT0ZnNFJFOUJiamhhZEZWaWVXMUNVRU5tVW5oU1F6ZFRhMDE2TDI0MlowY3ZhMlZRVVhSdFpqUlFRVVF2VFZremRtSlZWVXc0U0ZCeGEzaFFPVmxvV2l0TWQxSXJVaXRGV0RCTFZsZzJjSGxTSzNOVU9YZ3JkVVpXTUdjclREbEZSVkJCVUdkdFoyUTRXSGhhVGxwWFVDdE5UVVIwSzFkMVRsVjZhWEZMVUVGMVFrbEJUSEJOU25sV05HOTRjMHBYWVc1b1RVOVpZbHBoYXpkalZDczBNamhQUjJ4ek0xVkVTVlZyUWtaMmRtNXRkM0psTUdwM1JWcHpOeXQ0Y0V4VVMyRlFUbU5IWlhFNWRYRmFkMHRPUWxabVJVbHFXVzVtV21adFZucEVWemR6ZFZoUFdVRlVUWEkxWW5nMU9WRk9OMlpRU20xV1RXVllOVU5VVm01WlJXSnBSamxCU0ZabWFsUkZjamhuT0dKSWVqZHBTVFpKVUVoeGJWQlhhVFJLTlUxTGJISlJVVTFxWlZwek9XRXpiSE0yUTJ4VFRraHZPVGR0TW05cFREQlVSa1ZtYkVadE9UTk1aekZ3Y0hBd04wVkNPWGQwV20xcVNYWklPRUk1TjBsRlZsVldTSGh1UzNscmIwTmFWSEJuUTFOUVdYUjFkVU50VG1Zd2JtSXhiWGhrTW1ST1NFSTRlblJrUTFrMVEzSk9SaTl1TWpsTE4wSmhlV3M1YXl0aWRtRnpMMVprVDNkTWNVSnRZWEZqV1UxVVlUWXhNVUZ4YkVsU09GQkNUVGQyVkV4RUswTk5kalpwV1RNeGFEQldPV2R3TkVRNFN6TnhPVkZJYm1KQlNpdHFUR1l6VXpsWU5FZFpiR1pwVFVkbWJIWnBSak5YY2poRldXeG1Va281VnpSVk9Vb3ZTMHhGUlRsRFdHTk1kMGN6TUd0TGQwRTFOR3BSTTNkNlNEUllabXhITW1oNFJXOW1OWE52THpkUFVWQnVRVXAzUkRSMU4wcGxRWG95UldSNFdDdENkR2RqZERCbmRIWk9ORGxqTWs5clZFNURLM05sV1VSTFdrZFRSVFpyZWxsaEsxSk1kVUZtVlVwcGJrSkRabTlKVEhZeVNuQlBlR3hpVTNSSVkwVXlUa05IYkd4VU9VeEdZekEwT1c1elJVaElNWHB0YmxSdlJIcFZWVmhDUkRkQmNVdGtMM2g2Y2tkbk5YaHFORGx3Y2s1RE1uWTFaelkxY21wemFqRnVjeTl3TDFwTE9HbDJTbXhVWjJwUFFsSnVjVXd4UjAxNWJuZzRkMHd2UlhKVk4zbExla1Y2ZDA5bE1ucHpNRTE0U3k5SlVFRXZjSFphWVdOc2NtbEdlR2RsV1dWVlVHbG9ZamxGZFhCS2RFOTVjMkYyVlUxVlpVNTBjbEpzYzI4M1R5dFRWbVp0T1hKS2FIWXdVRWhhYVVwMFFqVXZOVWxSTnpOTWF6TnFNamhEVEhwVkwyZEtOREZPVldaS2NsSTNkM1JPV1U5ME1GcFRXSEZpWWk4dlJFcHJkMnhoVWsxb1RrWm5aRWg1VWpad01UaHhUSGxKY25OMmVXVlZiR2xFWWpCQ1QzWnpjMHhxTDJWSk5VdFhTRUpTVEhGVWREbHRNM2xFV1VoWWIwaGhZMFF2V25Wd1VWSXZTQzloYWtVeVJHWnBaRTVaWmxGRlNDdFBUMk4yTldWeldYWXhWME5NWW5aQk1uRkxURE5DY0dGUWIyaExSU3MzWVVvNWRsRkliRTh3WmxKaVYwaHNkMEpsT1RNNVFTdExOSEYwVlN0SGJVSndMMnhwYkRoU1RGUm5ObUZhVURCSmVYVTRWaTlSYVVSUVlWRlJTRWxhTlZsNFpUTTBLemxGVDJOTU5ISTNlamhvVm5wMmNFRlhPVlU0V2tabk5GQlFWRlEzZVRaamJDOUlUbWhRTm5vMlRUQTNPRnBaWm5WRlMzRmFNV2QyU25ORmRuVmFUMkZxTTJKS2NVOVhXRTFRZEZVNFN5c3dMMUpHTTJnMVVVSnpSbVZOWnpOTVQzRlViMDg1UVdWVFlVWjJVVzRyY2prdlIzQlNPVmR1YjFBd2FESnFOa0ozVVdVMWFqSTRRbEJQWlRCR05Vb3ZTRTgwVm14RlJTOXFjVUpDZW5aa05XSjNkVTlYYlZCVFZUUmhNMk15WjJJd2EwOHdjWFZUWjNwU09XbGhlRkF3Um10Q1NIVnlWRXRQZFZSaldqUkNSQ3RZTDA1VlNYa3ZWV1JzSzIxRmVEZHpWMjVJTnpWRmVFMHZjSGw1ZWpSeUszZHlVRlpvU2tzNWFsVTJkREFyTUdGdFdURmlTQ3R5VTJScFpXUlpkMGcyWWtObVpFUlRTbnBGZFZwd2VHMUVTbkIwVFdvM1pURlNlalZYVm5GSFZrazNWbXhYTHpsWVJYQTNWRkYwWlRCR2NtbEdSMUZzVlRkV2JEWlphVE5KWTFWRlpGZElaMkZYWmtac2VIRlRWSFV4ZFd4TlZqRldkemRRTUVrMlFrd3hWVmc0TUdOVVdsa3lNRlE0YXprMmNWUmpiemcyZW5WVllubDBWMkZDY25sWVdFVm9TUzlKTDBWTVRXWnFWRVZ5T0djNFlrWTNORE5RYjNacGFXVk9TMm8wV1N0bFlVVXJVRVEyZGxGc1dITTJkRzVFYzBFclIyUkZSeTkwWTBoUU5FeGhhalJpTVRWclFuWnJkbWRpTldSME5XaHFaMHdyV0RScVlrcE9aMmswVGpoT1FXMHhMMEo1VW5NMFEyWTFlbXByTW0xaWNrWlZWMFZ4VVdaR2RXeFlNRkJUWmxaaFZXWkdkVzVJYm5kTk1XcFJORVIyYVhKMVNFdHFjR3h6VkRSMVZsaFBhbHB2Y2xKVlNVaHdkMVZrYmtOalVtWXZTUzh3VFZaS1RYVldXbElyV0dGeVNYaGpVM2RJWWpoa1dVVTVLMWxIWkZGUFRqZGtNbWhJYXprdmJ6QnZjalVyYm5SdlZuRTFlVFJsVGpsVVZ5dEhhbGN6VG1GdVprc3dPV3RyWkc4MVQwazJiREZ0VkZsUFQyZGtia1p2U0U1RmRtY3lWM1ZDV2k4NWRubG5lVVpVYzFGc2F6SldLMU5zTTIweWIzQjBVbXMzU0V4NWVIVk1SM1F3VEZKUWVXSlNjM0ZMYW5kc1p6UklORTEyZFZOVEt6TkJNRlJqTm1NdlVtRmFNazU0YkV0WGRuazVaSEYwVlRWUVVsaDJka2RwWjNvdlJqaEZlV2Q2TVVReVVGVkRaa1l2UldGb0x5dE1MMEV2Ym1GVk1YZHZZWGRtZVZZNU9HZHNaeTlTVmpOTlZucGhiRGxFVjNwaVZFVlhZbUkwZUhkUFZ6aG9WVTFNYWpCVlF6QnlhbVJCVDJGRlJUZFZURzk1TDFWU1UyZHRVa2hKYzJSSFZTdDFlWFp6UW1SclVuSlFWaXMwTW1wTlVVbEVia2t3ZUZSNEx6WklPRVUzY1RoQk9WbHFOMlpvYm5OV2IxZDNZMnhJTjJ4TVJHWkVXR0pSVkVWTE56ZG9TRGxhWnlzd1lUWmhRblZHVUZSQ1dHbFphVEJuY1dKbVJWazRSMjVCVURCTFdVTm1kalJKYUU1eFJIWmtLelpGVDBRckwyUXZRamM1U1dSclkybHZZMmREZW1kc2FFVm5jbmhIUVZwT1lqUkViV0lyVldObVZsbFNjMnBNWjBOa05IQjRja1EwV0VVeVNWQm5Zak13TUdWMVRtTmxjRk4zUjBaNFpsYzVlRGxuWkRBNVpXaEJiV1EyVjNJNVpTdDFablZyVURZMVRUSjViV3MxZWxWWU1HeFBObWh0TWxSS1lqUlRXVzFtYWpoSVVGTjJlRGhFU0RWSE5HaGthVGhMWTJ4bWFVVkhMekl5U2xBMmRrZGhOR3BGYm5neFluaG9PVlVyVW1aUWIxTk9VbEJIYkZWalZ6TlFkRlZUTVhFeGNsRnlhbkZwSzNveVNFc3hZa05UYm5WblpYUlFibkJtZFhka1pHTmpTRUo2Y1RaNGEyVTNVRm8xTWl0VFpVUXZXbU40S3pWUmFURjVkakpIYzNoMGVHWjRkRk5tYjFZM1VUUnFRbFpWUlU5a1pGVlNSMFV4Um10T1pURjBjV3g1VlhRM1VqWmFSVE5RYTNoQmRHTjBTRFF6ZW5sbFFtcDZWM055YWs1V1NGbFJSak40WnpCMFdVUm1TWE5pYUVKalEwUXZaMWgzYkhsTlMwRmtPVWRKZG5wQlMzWnBRbFptUkZSeEswTnVXUzlDU0VwUU5VVkVVRFpWZUVvNFVTdFFhbnBDUVdaUk4yOVVia05STnpCdldWUTBUMWhTVEZGMmVHTllLMGw2TDJGaVVtaDNSVkJsYUhKV2JWZzNWSGN5Y2poRldXeG1Va0VyY0RoTFkydG1ha1ZuZEZocVdYaGpLMFl3Y1hGVmEzVjZSWGhqY1U1YVZWWXlZeTlaWnpKUk5FdFRWbEJsTUhSamFFUXJiV3B3YWpKTVpscGxPRTAwU1N0NGNqZE1UMFJDUW5CNFRFZFRkVmhvWkZCeWEybFpXbE50T1d4a1drTllUMkpCZEN0aVlYa3JjRTE0ZEUxNmRFcFJWWE50UW1aT1dUWlZiakJoWmtsNU9UZ3hja2hLTm5KWGFuWktlVFZGWm1reGFuWlRZbmRZWm10MmJYWXdXVkp5ZDI5VlluRkNTWEpIVVc5U1RHeEtLMVJ1YWtaV1RYRlZTVVZ6VVhKTU4wOVdUMU41WlRkUlJ6VXhPV1ZoWkdSbGNuTjRlaXMyZDJoMWNsTTJSRmR3Y0VZNE5YRnlSM2hOYUUxYU15dFdSQ3MySzJSaWJtUmxSM0lyVXpsRWRYUlNVakp0T1ZCV2RYWmtNbEZXZVVJd1REbHBSVGQ1VVM4MWRIQkRkWEY2VlZObFJXa3ZXV2hpZEdjMFJXYzVielowTWk5NlRuQktOU3RrVW1ZNFZYbEdlVlJ3T0VGU1ZXRnhVRzV0UjNwcVptNUVSM0F6VDNoR2NtbHlTME5WZWxKcVJ6UlBia2hQWjI1Qk9EUjVjRXRIZUc1Q2JXSXpiVWRKU2pCaVdHUTFVMjU2TDI1MWVrMXdLMDlIYm5ONmNuZHJXV2czY1RjMk0zSk5kRk15UmpGVlFrdDZlbUpVYmtkdVRUTnNhbkpLZFhVM00zSXZURmxSVjNOUVYxSktjR1l3VEhsT2VVbExTekpqZVZGMllYRnhiVTFXZFdKaGRYZDRlRFJsTW5odWNUbExaak5LWW5SemJGSnpNMnhxZEdOTFZqSmFWekZ5ZUZRdmMycENaak0wWkdGRFYxaFVTV3R4VjFkYU1URk9jVzFqWkhReGRIUTJMMlkyUVRGWGNXZExMMlYyVEVwVmVVc3pjMGR4VEZkWVVGaHNPRWRxT0UweWNYaHBVSFYxY3pWaVNFWTFWbWhHYzNGeFNUSmFWRmwzTkhKc0swaEdWSEJxV0VwdVJtMWFORmM1ZGtSRVVqQmlhbE5pYzNkeVZEbGliMDg1ZUhCa1VsVnNjR0Z2VUc0NFVHOU5WRlZsZVUxbFZUZGxNR0kzZFc1NFZHMHhNak5XVDFKeWN5dHdUa1J1U2t4VVpVUlhhMnhEVms5RGRIbHJjalJOVFNzMFl6RkZPVnBpVUZGa2NqbHBaSEZOVmxZM1JTOVRZa0pMTUhWemFERnpWV1JrV0VOSWNUUnpkalI1YzJrNWVURjVOM2xRZFVwRWMwaEJiekZGU3pOd1RTdFNXa1ZqVUVsSkswbzRLMjl0YVUwdlVUZHNlRFV5VGxGM1pubDVlRUp5WTNBNGF6WXpVRXhWTWtzMmJuaG5XV1pIUlRGaEszRmtlRm9yZEVSUk0xWXhkREV6TUVkU1RsWnZTR1ZyYW5ONmRYVllOREpHU0hBeU56QjJNakJzZG5OdldEYzRhMWRtYzBwaU5WQlNjemhPTDFwUk5IUTNUVEkzZEZKUE9VbzRaVk5vYkRkdlQyTnFabVJ0WWxVNGMzTjBhMHRJZWxwYWJrMVdkazVvYzB3eGRuVjRRVnBZVDI1NFYwRnlNMDlhVm01bVRWcGxVMWd5TVUxNE9HODNOakF4YkhaNkx6WjRZMEpZZW1KNVRsQldja042VEd4MU1XTk1TV05oWTBkTFZUUjZRVFpzTDFJMldWVTJXbXN2Tms5elpXb3dUekphYlZwdFdtMWFiVnB0V20xYWJXdDJLM3BYYjA1TllsaE1ablZTV0V4Tkt5OU9OMFoxZEdZeGJFNVRVMDl5Ylc5dGIxaE9hVTk0ZUVKbVRXTmFaMWxKVURGTGFXd3dOekZSVWxwNWRIVjFVMDFzUVhFNWRuSk5hbTE2Y0c1TGIwMUpNWGxIZFVSV1ZVRTFVVmwyTTBwa1JqUmxOMncyWW0xYWNYcFFXRVpESzA5QmEzZDBPVVpsYWpKck1FNHZNa1I1ZGswM09UUnZTekowWmpCYUsyMVlaSFZXZWtadFowVTBWWEZoYVhOeVMyZEpRbWwxVTFGcUwyTTBVUzlzVjNGMVRHMTZiemR0TW1KVlYwaFFZbVpDTTBSWlNFMVhlbWxxU0U1RWFXWkVZbWxqZDJGRVZIQmtXQzlHWWxSaGNYQllVakp4Y1RrclJIbGhiVWRhTVZabEx6QmxSVEo0TDJsdk9IUm9TRU5WZVdwTVUzRlpWbWd5UzAxbk1IWk1XSGRZV0ZKcFVFSTRhMlk0Y1ZnNFZYcG1aVWxWWVdKVWVtbHVXbTV1U25wRVQxRkdOVkJ4ZVZGS00yWXdNV2t5WVdWRmJsWXhha3RMZW1ObVYyUnZVRlk0TW14dVVIWmlNbWRoU3pnMU0yVjFaRE5HUmxKblpEVlBlWEZ5U0ZKU00ycFVTalJEZWt4aE4xVllNVWh5WkhkaGIxcElMMUp6YlZSbE0yOHlkU3NyZGtaVmNWRnhZMFJrZG5CWmVISlFTRWN6VnpKcGVrZEZMMVpJWmpBMlp6UnhZbEI1YTBwYVRsaFhNRkJuZDBaWVZ6QjNSRXRrVFdoalkwcFdPSHAxTmxJMksyUXJjazVrVlZCNmEybExVaXRRZDFwM2NqSkRLMk42Um5Oa1VVdHpiMnBGTldrdlYyTlNNMk5CVUdKRVZ5dEVTV1JxWm5WSlR6UTBOMmwzWTI4NU0wVXpXV1l6VFhCaVlWRk9kVzh5TWk5V04xSjBNQ3N4TjJSbWEwZFhPRGhaY3pWM015OXFMMDkwVjJWNFJIUmtNVzF2TWpoak1qaG1kSFZOU1VRclYySmFiV2xRVEdWQ1JHZzNSR3MxZFdKck5VOVlXVmx6T1hSNU4xQlRiMmxrTkdnME1XWlZUVkpzVUU5aGR6SXlVMGQ2ZFRKU05FaGxNRFJJVUZKcGFESjRhbmgxUWtkSFpHUnZWMnhaVUc5UFpqQXhka01yUTFCV1JDOWtNRk5QTjFkak5IRkZUREphUzBOM1JqQkVNbnBKZW5WUVYyaEZVV0ZIWm1Ga1ZHTTRiakpMWWxwU2VsVTNUVzVvTWxCTFVWTkxiRzFJWmxCUFZ6WnFOVFZJUld4aFdtWmtPVUZpWlZCRFdWcDJTbWRYT0dwQ0swUTBNRGhTZUZCS2RtMHhUa3N3V0RkRGRUSkhXbVpTUmpkelF6bGpObE4yWldKd1l6QmFhVkIzUWxNclFXRk9kV1VyU1UxMWIwdGtlbGhvS3l0ek9VMHljbU51ZFVOUlltTTNTMDgwTTNaMlZFRXZZMkZZU0dSRE4ySk1VRTlLWTNSdFpGTTNWM2h2WTNseWJ5dEhVM3BRVm5SWllXaFhSak55VjBJd1ZUbEdiVTFxV0VSaE9WcHlibHBJY0ZWTlluUkdhMVlyYUVjck1FZHJUVzFWTmpBNWRqVlBSWFZpWm1sQ2NtOHhjbUZOUVc0MFJFcFhTSHBUVlZaSVlqZG5NV2Q0T0VzeVUybHRWVVJXTkRWWkt5dENhWEp2VW1oNlpHSldOMnBJWjFWTGNXRkJMMVlyVkROT1NtVTVSVzVXTVdwTVMzcDFTR3d2V2t4NmNuaFhTbUZyZWxoRlFpOWpOa1JPV1dKcFlURmxiMjlUU2xGQmVscFVVMWhaWW1Ka2FIaHZiVXAwWWxoQ1kyRnRkSFJhVlZKcmIyUjViVXRUTlc5Wk5uWXlMMDFYZFc0eFRsWlpUMDV2SzJNellWaFZkVGRITUhrMEwzaFZlbHBuVVdONE1EZHhabWxZTlhwNU0yZFFkVWhQTUdJMlVHcHpSWEpGVFdkeVdITkdORWt3VlhsNll6a3hla2s0T1VKaFpXOVFUMk5KTlVrM09VSktNWHBFTkdoS1F6Wk1VVVF3VVROTk9WaEdXakJVUW1sTU5qVjBTRFUzV0RKVU9GTXljVVoyVld0R1RFRllPVVp0TW14WE1qUjVlRGx3YkdwNWQyTklaSGc0TVdaU2NrRnRRMmRXWW05WVRuVTBSVGhYUWtvdllqSlhTMGR2U3poa1FrWlNSRlZGU21SNlVqVkpTazlIZVV4YU5rUlZSVXB5VTFnd056SnhaVnA0TjNaTlVUSkNTR0p5V2s4NFdIbG1ObFZvYzBjNVRWSkxaMmcxUkU1Q1NHMVJZV050VkZkRlQzbDBSbmhHY1VOSFZHOUpMMlJTUkdOdVZERjRSRWxVYTJWTGFVOWFTQzgwWVVWa2IyWktXVFo1T1hsR1VGZ3dXbmwxYlVrMVFXNW9hbFZETW0xelRYbEZhekZDUm5rNVUwSjFRMkV4YmpCb1JXTkZhRTFUTm1kcWMwMUpjalZwVDNCSkwyODVNVUpRV1hCRGQyd3hRa0UxWVdZMFZFWjRaa2QyWkVGUlREbEZTV0ZOV0RKVFJVSktkMUZXZDJSVUt6ZHRhWFJETm5sSGVVaFJiV2s1YzBaRWFtbEJSakJsVHpkaFZsUkpTVXAxUldOVllrbFplbnBoWVdwTWVUQnhNMVZETTJkcldYcEpTbWNyYkZOVFVHaFhUbWQwYTFGVlJERnZjalZVY2twM01XdHVSMjlyUWt0NVExUTRaMWhpTjNWaFFqQlhRbFZvYUdaaVZFNWlURWRFWjNwWlNrcEpkRVJCVnpCV1VtRkdXblpQVVhsSFZ6RkNTbTlyUVdGblJXZHRaM2xTUldscFZISkxkbFZUY21RM1pVeGxVbUpWYTNGNFpXcFhZMUZ2ZFdjMFJUUk5UR3BWVUZnMGJFZFNXRmhDWlhkeVlVMU9aeXQwUm1jcmRFSnNkVTFSY0VOaWRHZDVZbWR1YmtOdlRGSmtTMXB2YzFsb2JtOU9jVlE0UzBwT2VHTmpRV2gzUkM5MFZFdDZWMmhvU1hOYWJGZ3ZOMXBaZWt4aVZqWnBWMlJOVGtsemFVdExWakY0UkRKSk0yZHBhVWxwTlVKWlluaHlaRkpXVm5GcmIwbHJaMGRyTmxSYWNqaElWbGRUZVN0cVZXOWpURTR2UlRCNVFraE5Zamh3V0dsRFdUQlBTMlV4WjI1eWJtbFpSV0ZFZW1aaFNrY3JiRzVwYW1sUkwwTTJNbTluZVVwMVRVSjJVRmhGZEc5TVNXUTFVbWh5WlZaWllWWXlRMmQxYUVWQ2FGZFZWRUZoVUZZeVNtdE5Ta2x3TTNGS1JtMTZNV0ozZURKbWVVdHRUVTQyYkROd2IwbGtjWGgxTkVNemF6UXlhVTFPWW5sb1QwWkNablp2T0RGRGJrUmlVSEpDWVZBM1FWcHJURmxETnpacmRVZDFkR0pVUjJWWlNrbDBOSEJwYTNBeGFIbFlha0p1WWtkSE1WVnBaRXBQUVdkTmRHZDJhVUZNY1dsRGJWRmxSRVp0TkZrM05GRk1SV3BHVGtKR2RUbDBVM1ZMYkRFclJHVkhkR2xpWTBsV1lUZHFTalJHTW5CRVdWZHpSa2t4SzJSV1l5OWlVMWxLVDI0ME5EQndMMkZqVG1GemIxVjZNRGxRUWsxaGFuVnhhbmw1UnpBMGFFdGpVbEZyT0cxNlVFeERiVGRNZG0xMmIzZFhPVVk1UjFNM2RWWkxlRTFNVVdaaE1VaFNPQ3R2WldKRmVuSkNPV1I1VHpOSll6SlJTR3AxWkVzeVpYcHNja1p0YXpBMWNWQXdVMlI1Y0hadmQxUlRWRnBSV1ZkNFRFMXJhM0ZOUldSNVluTjRLelJFTW5ONWNWSklURnByYVdadlFWWmxVRVJOUmxCU2FGWnNlbXRMV2tsRFZqRjVRbTAxYUhCS1RGQkpNRGw0VWxkcEwxSmFkRzV0UVRBdlpHTTFiR013TkhaM1oyUTJaRzVRVmpaNWEwbGtVek5UUkd4S1ZURTRUbU5RVTNCdmVIZDJZbHAxVVU1TE9WSnlMM0p1VEV0UVFubEhRbFUyZVZKRFlucFVWRE56VEZZMlQyTXdMM2gwTVVSNmJXVXhVVXd3U1VsYU5UTlhkbXN6TUdaaVNTdG1Semh1VkdkSGNtMXFjVkJ5UWxsWmJ6SkJWMDVVVDJGT2NUVnhUak15YlVZeWRVbEhjRmt4TnpkdlN6VkJXVWR1UzIweGJreE5XbTlhT0hSWWIzTXpURGxMTlhGRk0zRllTRGRaU0hoUldHVkZlazEwTVRSNVF6ZE5USFJwZW1GaldrOWtiRVpRVTBaUFNVZDVaRXd2V2t0MVEySm5MMVp1WlZVdmJUUlBWVXgzUm1sWFNqa3JaRkp4VDJkSVkwbElja1J5YWpGNmRIQXdNMll4ZFVWTVExRlVObVEwVmtnNFVUa3JlVFZSVWl0SWJVeFdZWFF6Umt4NFIxcE5jRXRSZGpNMllVWXJWalpFWmtneVNpc3dPVE5GUzNkaVIxcHFhRk5RVDFOeVpVMTFhbnBzV25SUE1pOWxaSEpRVWpRNGFYVlFZWFI1UW1Kbk9YaGtUMWRMTVdSMFVWaEhaMUl3VTBWVFJHbDBhblpzWmxwR1VqZDJPVWxhYm1GSFpuWlpZMHhyWm5ndmRtcHZlVE56TVZwNFMxSjFhblIzT1hGSU5sbDBZV1pxZEVSeVVrcGlkMFI0Tm01T1pVMVNjM2gxZFd4emVqbEtlRTEwYldGV1RWQjRRbmxEVml0S1FrVklhVlJTWWt4MVIwdG9XbU4yVEZOd1UyTjJZV0ZuVG1WaU0yUTBaVGQxWTBrdlRESlJRMmxoUWtOT1prUXdkbTFYUVZSRlRXaFNiWFYxYlRaemJrNDRSbUk0VVhWbGRXVlFkWGxsY25rMVNqbDRaSFU1UXpGUVZ6aDZWM0V3VW5FeWFWTXJRV0k1WXpaTlEwUXdVVTFSZVVWMVYxWndWbEIxVW5WQmFDdHdXbFJ1ZDJsMGNHaFRPRFp1UkZJMlFrczJkSEZuYWxnck1WQmliSGMxTlZaT2QxcEJVRFY0WlZwNVowVjFhV2swU2s1VU1tSldVblJPY2xWRVdITnNVbmtyUTJwVVpGSnhaVWxVTlM5Q1JGZDRNMWh1VWpRNVZrNWlOalE0UWtvNFFXeHZUa0pyV0ZVdmJuTjVUVFpMZGtKMFJDODFUMDVLVWpkQk9VZEhkM1p1U25OeGJXdHNXblV4UVVWNE5EWXdTRE5xWjJkWlVIQTRiV3N2Tmt0RFJHaHlaMnRxYjBWVmFtZzJVa0ZrUlhGcGFrTm1ObFo2T1dNMGNXOXdOa000Wm13MmFIUjFUVWtyT1ZBMGNtaHJPRGhOUVVST2FEQmFVWEF2ZEhObE5rY3hlak0zVjFJMllqaHFUVlJNYzFGTVVHNTNPVVJaZWt4c05tTlJVRmQ2ZEZkdGFGbHBlWHBVUTFrM1oyZ3ZUR3BrVjFCUFYwSTBNVVl5WjNncldFVndVblZqVDNkUVJqQjZSR3MxUm5SWlRsRXhPR1YzZHpnNFVXZGxaWGx3V21KTGRrZG9Oa1J1YUhOVVJERlZXVTVqZG10b2QxTlpOV3BUZVVwMVVISlJabmR2VmpoRldYUm1hazVQU0M4NGVGcDBLemRDWkdWMk1GbFNkVXBDYVhOMmJGRjJkV2xXY2sxUVMzbG5ZMVZIUjFCeGFVbzVhbTVCVlN0RFNHMUlRV2RpV2toRll6ZFNlRmd6YUhNd2FWTlJiMlpZY1UwcmRDOXZRVTA1ZVd0TllpOURibXBGZDBkbEsyOUhXVzR5ZWpsSE4zQk5iRVJJVWtaMWNuSTRRMUV6YTNkbWFGbzFVM1V3UWpGWmEycDNSamxvY0dOUVRHbFlkR3RMVUhsbU5HZGlkRTFVT1RWT2VGaEJUamgzYTFCeFRIZGFORThyUmtKVFpqZG9iMDVYYkdFNFVpczVTR3B6TWpZMlFuTXJSWGwxUWtoMUswSTVWbFkxUldkTlVXZEZWaXRGUWxFNFRUVjVhbXdyYmxBckwxbDZLM2xXUmxZd1NtODJWWGhMTWtRelZXNU5kbVkwT1d4VE5IcEpTRzV0VkZWVFpUbG9SR05aTmtKUVRXVnNPRlpQT1dOT1ZGWjZiemhFTjJFeE1USnplRkZ1YTI0NFRHUlFSMHRDWVVaS1pYVnZRbTlTUTA5SlMxSmlVMVZHUkVwTk9FNTJRWEpzV0VoMFprOHdkMEpQZDBaTlNYbG9jVlpSYms5M2NsSjFVM0I2UnpWbWQwRkpObUpyZFVaUVFVMURVWFY2T0dWMllrTXJUbFpIYm5SSE9YQXJRbGRNUTIxS1FXTnhSV3RGWWtsRFEyUlZiMnBtU0V4QlMwVllTa1JGTUV0NVp6QkNlbXhLVVZGYVQwNUNVbEZLT0c1NFlraEVNVTg0V21wTVJtcEllV2R6ZFUwd1IwOVBaa3QzWjFSVVIzWlhMMFp1ZWxoSGVUQlFlamxHTTFoVlEzWXZWWE5ET1dWMU4ySnVPVEZRWXpOa00yUXpXRmRHUlZoa2JqVXpiVmxqU0dkek4yOHJiVE5wV25wUVJETnFOMFZLYm1oVFMwZE9abXhYY0d4NGQzcE1NblYzUzBKSFdqazVNV3BuTDJSa2FtbzVjWFJaU25OR2EwMUpXa3h5Y0dkaU5DdHVVSFoxWlRaM1VESjBTbWROY3pobGVHTkVUMFJIU0hkRmFIcGlabEJhTlRsT1ZXczNWMFJKUlhGaVp6VXZOazA0WmxSMFQyRm9UaTlhVnpOT1REVlJOeXR5Y25Sb2RGWlJhbTVOZWxwWVpWaFRTVFpEYVZGclR6QktjSE5aTm05alN6WllMMjkwT0doNk4zcHpNVTlWTm1WVlNrVlJablZXUldkcWFWVjJTMGt3YW1sMGExaHdPRk54ZUZwNFdWSnJSbWwwU1VOalRFODJNMEpaWjBWVVp5OWlSRzlXT0ZVdlR5dENPR1JCVEVacU0wOVNWV0pEVWxGSFRtb3dRMmRTUTFOclEwTjZaemxwVm1FemVHRk9OVFJxZGtGSFMybFBRbVZhUTFGdFFWRmpTV1JCTm1kclRWUkpOalZJV0VNMk5qSTVWMFZ5UmxKSGNHRjRTVEp1V2t4WFNFTlNhRlpwVUhkUFZrWjBiSHBQZFhWRmRqYzVXRzh6YmpsV1lWZEJObUkyU3prMk9FcE1URWh5S3pCWWRrUnZPRnA1TjNwMGIwWXlaRkY2YlVWYWN5dDFhWHBVU1RCbVUzTXhWRkJxV21jd1kxTlVTRFJhY1c1VGRsWnhOMUJaSzJwYWRteFdTVkZDZVhWalYya3JTMVJSWmtGMFpUbGFkbU4zUkdWMFNHUndiMUl3U213MVRYTllSMmRxY25CMUx6RkVZek5JTlhkeFdpOVBkVmhqTkRjd2VGaDBXbWQ2VVZkS01XOWpka0psVjFSclptNUNkRzR4ZGtoM1VGZDNUa2MzVnpkSldUSkxVRzFCWWtsQ1NVVkhlbVJUVVhaTmJrUm9hVEkyVkRGc1oxUkNhSEIzVDBKTWNHVnVjRGhyUlU5bGNucDNkRXRSVVZSYVkzbDVVMGRXZEhSaEwwTnNXRzFxU2xwaFMyYzNVVVZVUTBOdGFVSkZVVTgwY214dVVtZFZObEpaV2k4Mk1WUnViak5xTmtoTU9DOVBaV1JWU0hSUVdtWTRkR0V4TmpjNUwzZHZaUzhyZW00NVptZ3ZSR0pZZWk5cGJERmtXamM1T0RVelJIbDZLeXN2Wmt4Nk5GcEpiVGR4Wm5nd1RsZDRjRXR1VHpJMlNHSXlNMmd5WldacVRtUXZOelEwUzFWUVluSmtPQzlQTmtJNE1UVTVZblIyYWxSU0t5czJTaTg0T1hORllqZHFObVV2WkVod01qUlFNM3B6ZDBaT05ETllkak0zYkRsUVFYUTVNemQ2TVVjck0xQTNkVkF2VkcxeWNHVnRSMmsyT1hwT1JEa3plamh0Wm1ZemRrZzNVVUZCUVZGQlFVRmtWVUozVVVGUlFVVmpRVUpCUVVKQlFVbEJTR2RCUjBGQlFVRmFRVUZCUVVGSlFVRllaMEpLVFVWRVJVSjNlRUZCUkVGWVVEZE5Ta2RsYTA1dU5TdFZTblZFTW5KYWRESTNXblF5TjFwME1qZGlUbGhtUW1aSVNGRkZiemhHYVhOQ04zTkNjMlpDV21aRFpHbFVUVFZ0WVV4TlVVZFpPV040WjIxbk9WaG9XVVJuVmt4dldqYzBWak0wVDFwWmFERnFTekp1TjFoWlJrZDRkWFJwVEdKc05UTkpjbTFXTTNOMVpscDFOWHBMU21WT1MyTTRUelY0WkhoT00zVkplamhrTXpVeFpuaEdaMUpWWTBsWlQxRlhLMmQxTTBKWGFHMUdWbk5MUVRSWU5UUnZZbmhoWTFOc1NrTlZVVk52YzJ4YVpEWlRjazlzTURsS04wOVRSbGhzYVdaTGFTdFhSRGhyTUVaTFdtMVZaMnR3Vm5CaWJsTldVbTExZWtaVFYwc3hkVlpxTW05aGRHSlVZVlV4TW5SdWRGbzBURnBYVjFneWRYTTVaRlpIWVM5MU1YVTNjWE0xT1ZGaU5qTXpNWEptY0RFdlluUm9SMWh0VG5WcldqTlpObmw0TVhwcFRrRk5jVUZ6Y1V0UFlVUTRObXBoTm1wNEsyYzVRbXhxUmtock5rWkZlbWN6TjI4NVNEUXJiRFJOVmpaUVpDdFFhaXRFU3l0cU1TOXFOekJSYTBacmJFZE5jRWh6Y0VSQmNGUmhjVlJ1YlZGd2RWZDRZVnBzZEhwd1RHNVZaa2R5YkhSSldtSTJOakk1TVcxT1luUlBUakpoTTNWeVptUkdLemRqYUU4elEyNTBSRWhTYlU4cmRXUjFlVFV3T0RkelRqTmpiblZXZVNzM01UbHRZamRETXpKMGJuSXpMMWxTWmpOSEwyODVMMVV6S3k5Mk9UQXZOekYzUVhCeFFua3lSRGR6U0hFMFNEUkpkekpTYUhsaVFuZ3lSRGR6U0ZrMFRWUTBXVE4zTldab01UUnBVR05yWVd4dksySlNWRTl5VVVaRVVrOWpPVXRwZEVONWRGTmFkbE5xY2xGMlNGVnRiakJ2VmpCTVpERkthamxNVERsSGExTTVUSE5uWlVGRVEwbDNZMFJCVG5GeVlsTlFOVFIxVkc1bGJYUmlkek5LVVRJeldVaDBWek5pZEcwelluUnRNMlJsZDJsb1FVNVdSVkJrUm5OMFFqWmtVbVpqZUhkb1NUZDFSRk4xYW5WMmFUQm1aM1ZtYjIwdlVXdHlTVU5uVmtKblowOXNiMVJ5VldoaFlsRkZabkpEVlVKblRGSXJSV2t6U1ZkWU9FcFhhMHBHYkVwVFZFdFZWRU5TZW5sVmNYbHNVbmRyV2poc1RqaHdVamhLU0Rsd1VuQnhXR3h4VWs1aFZXWmhiSGMyYkVVcmJHTjFjRXRsY0c0NVdsSndZVlJKVWxwb1FWTjJVRWR5UzFkeVEzTmllVVZoZVhGWGQyZ3lPRzFQYzI5MmMweHVka3AyZGt0VlVFTnpkbmxEVmpObFIyeGxibVJtYkZSbWJGVm1jR2t2TlhRNVJtRndSbVJHUWxwaFpVdExjM0ZEYm5GcEsyRnBjeXRuZG1odmRrcFpjalZaVEdKaFRIY3JTemgxUXpCRVQxWTNUMnh6ZG14a1dsWm1ZMWRYY0d0eGNYRmhjVGRIY1hCc2NYRmtjVzg1Y1hGVU5uRndObkZPTm5GdWVuRjBUSEZyTnpZdk5UWjFTalp6TlN0MlZtVnljeXR5VFM5eU1pOXhOUzl0ZUZOdFRYZHRkaXRJUjAxcFZrNVdaRkJWZEVSV1pGUldPSG96VTNjeFR6Z3hiRGg2UjFOUVZrazNUV3BrZVU0MmNXcFdjbEp3WkVkUGMxbExlRzQzUjJVNFdTOTRNQzlIWWpoWlpVcHdORzFtYVZwNFMxTllja3A0WTI1YWVXRXZTeXRzWkRKVFZtNTBjblJ1V0ZGMWJYRnVkRVYyWWpsbE0wSTViV0kzY0VwUVpFdGxkVEJrY1ZrMkt6VXpNMkp1TmpOeGRIWldibVU0S3pseVVsZ3plSFoxVUdaaGVpdDVXRGt4ZGpWcEx6TTJVVTR5WjJWVVFUbFBhSGh1UkhsdFNHWmpTRlkwZGpKcWRXOXFWMHhFYVRVcmMxVlVhMlkxVm1kSFMxbEJRVkZCUVVGQlRVRm5NMVZITjNKQ1prUjZlakZCUVUxRU5rRkJRVUZCUkZWVmFuaHhRVUZCUVVGT2NTOXRSbEF2UkZBMlIwSk1VVVZLWjBGQlFVRmpRVUZuUVVGQlFVRkJRVWhuUW14YVVtcHNRMVpNUlVsUmFuTTVZVEkzVWpOa1R6RmxlblJ5TURkdWJtMHlZbVIxTW1Ka2RDOXViVE5pZEc0ek4xSmFlbFF3T0M4MlJXVm1jbkp4TjNGNWIzcExURWgzU1ZOSU5FcG9ibWRHT0hBMVEyWXlkVXd2YkRaUVUyWlpNSGgyZG1WSFQyTTVUVTU0TTNkcWNXVlJOMVZtWjNWdU1sQmhZamR6SzJwclJqWkZWRGRyVDFCVlNXRXJkR28yTVVkWldtSk9ObnAxS3paUFFsZHpkVFpaTkRSa2VUTTVaV2x2ZDNaM1lWTjNRVmhLSzFCbmNEUkNibTF5ZUhwSmNUZGlNVkl3U0hrNGFteEpOMFYwVlZGUU5Ha3JPSG95ZURKTVltNHpkWFJvYm1wa2VETmxZbTlVT0RNeVYzTjZNRVJvYW5BMk0wczRSbWhOTVZnNVNTOUZhbTFIYUdaSGJ6aG5kVkk1WVUxWk9UUkhXVFExWlZFNVZsTkhkVzl5ZG5ReVJXUkhOSEl4WmtGUlJ5dFlSV05UTWtka1RVcExPR2t6Y1VJek0yVkpaVlJLU2t3emR5czROMmxoZFZJeVIyUkdha0ZtVGxwQmVYVlhUaTlPWjBwdGVXeHRUWE16T1dGNk1HY3lSbGxaTld3eU5FcHZUbkVyTUhGclFtcEVkbkJtVVhscGVuaFdhbE5KVjI5b1p6azNhakExY0hjd1lYZHFTbFZoTVhwdVNVczRNWG92WW01ME5tUlNZVlIwWjBOT0sxaFBZbW9yVVZsNmVGWm9WRkJTVjJSb01qTkZaV1pUWm14Uk5sQjViSEJUTTJOck5YbFpkbmxMTm1FcmEwZElNMEUzTkZWcFFtcEhLelUyWnpkeFl5dFVNbEEwYjNoMlZUZHdZa2hSVkcxaUsyZGlOMVpqYXpGMk1YUkxjRE5JT1VobGNETkNkM1JEVFU5V1NWbG5SVWd3WVZGSGJIVk9ZMDFrWkVWWUwycFNiV2h6THl0alNqUkdPVkJWT0ZaMlozazFjbmMxT1ROMVRTdGFlVTlOY25OallXSjFSRGxtU1dzMU55dElOblJCV1hnclRXTTJPSEk1ZEV4aFkzVlhNRXBUTTNkS1IwVlFNVVJhWkdwdVkxRnVaV2hOVDI5UVltNHpRMGx0WTFvNVp6RXlRWE53Wkc5aGJUbFVXRTl3WjNWNk0xaDFkR3BCTm5wRVpFWnBaVlYzYUhWeWNtbDZiR1ZVVkVZemVscGxNSFowVmpkNVIydFFibFZPUTJseVZUTjViMXBIVkRWR1QyWnhiMWx3VDFOaldYRkhTVWQwYzNFcmNHdGxkR0ZHTmxWck4zUlVZekpwYlhGcGVERkhURTQ0V2pGU2NHZzNVMUJxY2xSMk5rNDRiR3hsY1VRdmRuRklObWxsWlZWQ2F6ZFhWa2w0VkRkblVERkVPV3htTUVoemRtWkpZWEpKWkRKWmRqVjJPSG8yWlc5cU9HZEllV1ZtU2pZNGFpOTVVMlpKYzJWT1lYQllOVXBrY1UxamVHc3pNMkZOWlRSbU9WTTVOSFEyYkRJNWNrZzNlVkJzVTB0bVpFMUhVR05vTVhsSlYyVnBjRFZuV0ZSaE5ETnlZMmczTkhKcUswTlBMMUpIYm5sNlVFNVJWR1l3ZEZkaEsyazNaMjR4WVhOM05VMVdVSGhRVm05YVl6TjZUSFU1VW5seU5ta3paamhsZW5sV2JtdEpVMmhXUkdGcGJpOXBPVEZTSzIxbEswUnpiVGt6Y2swMVJqWlFZVkpyTUhGT04ybDJaM1p4UVRkNlFXMXFORWh3VlVSVmJHVndhMFI2VEZCd1lXaDFNVkpoVkN0RWVUa3hWMWd3VkVneFdWRnJLMlZSUzJWM1JtWXZOME5NYlVzdllsbEpRUzk0VkdSR1ltWlJVREV3VEV0WlJGVlNaRGhEVG1rclMwMVBPVFpIUjJKWlRHaDBhRzQyTWtjM2NsbG9hR2h4UnpOSEwwaE9abk5uVUVZNFNIWkxaalU1TWsxRmREaEpaekJKWmxwRlV6ZEVLMVpyUm1RdlNIVllaME40YmtWelNGUkxiMjlVU21oSk9WUTBabGx1UjJobU5GTm1aRlJqV2xab1VEWTJhazFpTW1zemIyOVJjekV4TkhRNGFuWTBOMVZMVFN0M1Z6RmpTRkJoUVVGQ05FRlhUbWRhUjBKbmRuWmlka05UVFZoNU5IWXZVRkFyVEZkaVdVRlNWa0ZCTkRGVlFYTlZkMGgzU0dkQ1dUSkNiVEJ0VTJOM1RVUkxkMDFFVlhoU1ZFSjNUVVJuUkdGRldqUjRhRU5IU1RKQlprdEJWVWhFUVVSelVVdE5OQ3RNY1VVNFltZDNTMFIzYlRSdWNETllPREpTYVRSWFRtTlpjVzlQVW10clFucHFaalpaT1ZsTVdFMUJUMHgxUXpaME5FRlpXRmRCTlVGcllYaGlSamhZVDNGd2JuUnpjWGxOZW00eU0ySjBiVE5pWm0xUVlrNTJZVTVpWkhNeWRXcHhOM2czV2xKbE1reDJXR1YxVEN0T1ZTOXVWR041VmtGRWVWTldURTh4VXl0b01uSklhMVYxTUZoQmRGSTRlVmxGUVVkeFRUWk5iRVZGUVZnMVNHMW9iVGhyZEdaNFZIUTNUbkF2WjAwekswRTNMMGxaTHpoc1pGZFpNSFYxV2tSd1VrOVlSa1JaYXpWcFdHbEpOMWRUY0RWbWNrcG1ZMjFLZVdGc1lXUnlSVTVDTWxOQmNtbEpUSHBuZVhWRVlUUkxZbWN6ZFVSaGEwaDJXVWREV1VWYVdVOTVORlpTWlVnMU5HVm1hSE1yU0hKWlNWSjNZbXBuS3pOU1NXdHZUWGx2Wld4WmNrdFNjRmRwY2s5cFV6Wk5TRzk2WldrNU9DdGhablF2Ukc5cVJrOUtaRUp3UVdkQ1FUbERSMko1UzJ3M1VIVXpaMUJ1SzJGNlprcFFkamhzZGl0NFRqZ3dlbE5MWlZSc1ZGRk9URTB4ZW1Sd0wyMUxXall4YzBkblpFWkJhRU5RTkhsNlpGaENWR1k1ZUcxdFprTldPRXh0TkZsb2QxaE1hbVZ3ZVcxd1lWTnlLMkphY0RObVVuQnhSM0ZUVUhsd1NEQkRaakpsYkdST1YwRkZRa0ppVmpsbmJUSmxVSGt5VkRVNVpYZElXbmR4WlZkWWFEWmlPVGQ0ZGsxYU1reHROR1l2TlVnM1ZYUjNkV0p3YUdKSmREUmtibmhOTTJweGRrWjJLMWc0Um00NFpXWjRSR1pGT1RoSGVFMVZRa2xPVlhaT1UzSldSbU5wY0hBck1UWnhaSEZ3Y2pGT00zQXJOMXAzUVROTVF6SXpUVmRCWVdsTldVTkhRWFEwZEVRNFRFcHZMMHN3VUUxMU15dGhTRFp4Wm01SWVGRXZOVXRZTDBVdk1XdzRWbFEzYkRVM056TjFMMnRRYVhocFRtUnRhVkJSSzJsSVRYVnBRVWgxYVV0dldtbEpUVlJwVFV4MGFVWjBkV2xNTUdscFJqZDFhVkJVYkdsR1psTnBRbGxhYVVVMGFXbEhhMmhwUmt0a2FVRmtXbWxMTnk5Qk9XVjFSVWhhVDA1SWNrMWtSelZEUzBaSVRWSkpORU5rYzFKb05ESlpVbkFyVW1wdU1IaHFXbk4zVm1JNFoyZEpiMmhOTnpSRVlpOXBaREZTU0U1a1ZFRkRUbEpGWW1SU1EwaGtVa1ptWkZKRVFYcFNSVVZ2TTFGQ1NUTlNSazB6VWtSUVRYaEZhVE5TUVhFelVVZG5WbEpIUVhWNGJscG1lR05zTjBweE5VRlFSMXBwVDBkamFFVm1jamRLZEM5bk9XWXlRakV4YzBGcFJrVkdVakZ6VlhCdVQxbHNka3BUVURoM2JDdDVLemwzUW0xbU5VcEtMMmxITTNsa1lpOU5aRGROUWtJM1RWbGxOMDFWUWpkTlVpdDZUVkZ6VG5OQ1kzcE5UbkZPYzFKemVrMUZZWFJOUmt0a1QxRkZhblZKV1dwMVRXdFVkVnBGYW5WYVdXcDFZekI2ZFZVNGVuVmpRMHgxVW5sTWRVMXBUSFZaVTB4MVZWVlVjMVpCYkVkVldHcE9WV05CUVhCbFEwWjJWRXBZUTFWVlNEWllPSFJNUkdwYVlXVXdhM1poVTFjNU0xTlFjVFJtZEV4WWJGcEZMM1ZSTjNsb0szTm9MMVo0V0RabEswZDVaMEV6VlZGaE5rMVVURWxJV21KQ2NtOXpUV05pZEd0eFIzTnlkekY0WmtkbE5VdDVkMmhZVTJ0aE5qZHFURXM1V21aU2NuQlBUV05oZEd0eVRuTnVOREYzU2tkbEswZDVVVkV6VTFOaE5qUnFURXBHV2xCS2NuRlNUV05oVG10eGNITnBNRGwzUjIxbE4xZDVVWGN6VmxkaVMweFFiRTlhY25SbFRYTm1PVWxJVG1SMGMzaDZVRGh3T0hReE5GZDFTVEo1TUU5WVMwbHNhMmxMVm01eFJYSk1UUzlUVkV3elYxcGFTVk56YkZReFlUVmhZa3hoTDFONGNsaEViRm8yTTNKTVQzSmtUakZ6YzBjeVUwbGlNMU1yVXpkUmNFbDVhRmRUU0U1a1dsbDJaV0kxVEhCbVNtTXZPVXh3ZEdOa1pHNXpjWE5yVjFZd1R6SjFhRWQ1ZW1SWFZUZGhOakkzU0VNeFdrdG1jMnRxY1hreU9WZFlVR0UyWlRkS1Zqa3dhMFF5ZFRaUlkyTkpNMnR2UjNOcGFERjRhazlsZVdGNWFFaFlXRWsyTmxwdVRFMTZXbVpxWW5GVFkyTkRNMnh3UjNOb2NDdFRNSFJLU1hweWNVTmpaRmxWYkRkU1dVTm9SMVJaZFRWcmNGWTVielZZYlZkM1dHSXhZWEp3U0V3MVJuRTFWSEUyVlRZclZrOVFNMkZZTTBFd1oyNHpjVkJRUTFZemVVNVFlVVJKUkhBMmNsQjVhR2c1TjFVNU5FTnJTMjByVEdVdk5ITllabXhIS3lzek9IQXhPRGN6TmxFMmRrdHFkMU5NTVVvdmJGWmhjM0IyT0dwMVFVbHRiekZXTVdSaFIyOTRWRVk0Ykdrck1EVmpTV3QyYkVWc2EyMTVLMVo0VjFORmNqVldjelZNWmpSa1pWWmlVemhwVTFGeFIwUTBhR3h5VWpoSVZ6RnJiRkZISzB4YU5tY3JSVlkyYlhsRVNHVnZZMmMwVUhGUVRVNDJObXh3V2tReVF6TjFjMGhuWjB4eVVsbExaV0ZpWWtGbVUwcFplV0pMY1dWaU9XaEZOMWRqZDFoS01XOVhSaXRrWVdwQldYbExiM1ZrVVVRcmNVSTJWVkV2WW5SbmRFcFRRbk5DVFhSaGVHaEJOMWREVmtGUmQxWTJNV3R6Um5GMFlrNW9VWEpUU2xaQlkzaFhjM2Q2VjNGSlJrSkhlbFV3VjB0c1IwSm9NMVk0ZHpCdGNURmpZWEpHVjNac2JYTkJUbXhLZG10d2MwSk1SbGgyVGxacGMxWnFUbk53ZGxreVlrczBUMDVHWjBOb1FtMUhUR1JVVTJocE0xWmpiMkYwTVUxcFoyMHpjU3RaVjNZeFkzTk5NalpxVUhsTVRVTXlObWwyZVU5elJESmhibEJFUTFkdlRIY3hSbkZUT0UxNFlXbDJSR05YY0hKaFVVNTNhM1J5VjJOTFRHRjZia013TW5RMWQzSk9ja0pqVEhjMlVXNVRUVEE1Vm5ob2RGQlZPRmxhZWpGbVYxTkVXRU5sYldwS1kzSjFXVmxNYkU1cU1sRlNkMnRpY0ZwMFowTmpRV3RSU21kM1JuRndjMFZGZEdKcVFrbE1WMnQzVlVNeGJFVkdXakZpUjNwWGRFZDNhVEZ5U2xsTGVXRmFaRUpJZG1OU1oybFFjV2QzV0dveFZGbFBaVFp5ZG5sdWRqTnVUMGNySzNkUlNqRnZWMFpZTkU5blRYY3lOMEZMVlc5RGQwaE1kMVZFT0VsM1NsaG5ORkZ6WjBGR1pqaEhXWEpNWW5sV05FRlRla2xLVm5Gc1FWRkRSekJtWlRZMmVTczBTbVI2WkhabFJIVk1aMjVPWkVkVVVVUnpkMkZhWnk5cVFuSjFaMFZ4Ym04eE9EVjZaMFo2U0VWUk5FRnZRVFZyUWpNM2NWcERZeXN5YlZGWVIyWlVTMkoxUzNONVFqUjVNa3BsT1hoRWJWUm1VbEozU1M5elNqaFZNRTlyVFhVNVNFdFRWbEo2YlVVMVUybFhkelpSTlU5MVVra3ZURTVxVm04MmVXMVlhVk5FVTJGVE9EZG9kM1ZCVUVGa2RrdE1OME5DZFZwTmFFOXZhMkY0TjB0TVQyRktWR1ExUW5BM2MzVm1NWEl5VkhZMkx5dFJabGwzV1VRM1NXWXlObmxXUVROVFdTOVlTMUZCTDA1TlJHeEdhMlZsVVhkV1ZtRTFTRTFzY25Oc1lteExTQzl5WW0xVWFtaFNZM0l6Vmt4amVITk1LM3BXVUdOak4weFhUMkUwTVN0NE5qWmpTRlUxYjFsQlIzVnVkalpXTkRaM1FsTm9kRmQ0TlVwb2RrSkhhemRtU2poclRIbzJVMGt6UWxaVVdEZEVUMlZoYlZSd1RIUXZPVGRwU2trNVRHWlFOVXhYZFU0d1dYUnNielVyY0dGMVRIa3dPWEIwY1VkNGVrOXNWM1ZLYWxOTGFuVnFZbXhGVVZNeFoza3dhM0Y2YTNadVdtTkRWazVNWVhka2VUQldWRU5RVUZJeVkxaEdNVlpsT1hCUUwybHhMMkpyVGtKNU1UZDRWR1ZZTUdocWJHRTNTWEV4ZW5OeE4zaFdWbFpyVXpWSmVrbGFVMjVOWVRsTWVtWlpVVGxYWVhkck0yVnFTekpsTTNsd1dFcE1ielp4UmpBeFZrMHdObFYxYUdGVlptUlFXbUZXWW5SdlVEaDRUMlpNZVZod0x6azRNRVYyYmpacEwxQjZPV1p5T1ZwdFVpdFdTelJ6TUhsWU9YcGFlamN6ZW5WWlptbEVaRGsyYUhaemNHdGFWMWR1Y3pOUVRETjJXbU40V2pOUFpFdHJjelEyWlVwdWNuVXhUVTVMU0ZoTVFUSlNTbk54YkRSaVkxVjBTV3MzWkU5M2JHaFZUSFFyV21waGFtMDVVRXh6T0ZreVRrSnNPREZyZFd4WmQwMXdUMFpZYzJOcmNYQjZjRXhMZDIxelVrdHhSVXhPUXpCb2NVVm5aVXRpTjJwTlV6ZHpkRTlwVFd4dFVuUlZTWGh4Y21sVVNuWkdLMlpEYlRNcmJEQXpjMGd2ZEd0Q1IzbFpRblZvYjAxd09XUlFjbHBFUWtweFNFMVFRMG96VXpGaFpEQkpNbVZ0UlZkaFJIVkRPQ3MyTTFKUFZEQXJSR2RrUlRRMlpEUTVObE5sUVVzeWJXaG5VV1J3TlZKcFVEUnhUVkEwWm1sRlVFTjBUMnN6VjNGU1NFVTBaMDVoYlhsT1kzRnNOVlJNUm1GTGNsTjNhMnhYVFd3d1oySkRNRVZWTm1oSFNIaERjVVJpTmxvMWF6VkhOMDlLY0hFMk1XTm1RVmRVYWsxcVNWRjJZMk5xTjBoQlZVMVNiVk00TTJ4VVJtcENXWEZ3VldSaWFFWmFhM1J0TUc4MVNsTXlla05aVUdVcmMzSnFSVVJSTTFWMlMzVlNhRkkwUlRaVlJYcE9aV3RMYkc5MlZtSmFhMlkxV2t0elZVWkRlVU0wVWxaTk4zbHhkbEpIT0VGTVNsZG9hRmhuWTIxc2NYSmxXakJWUW5FM1JtMUllVkZKV2xOQ0sxTmhWRzFCZEd0eFExcGhaVGswVVZsaVRXRm9jV04xVlZod1l6ZFdXRUZXVURoSmFFbHFTbTh4VkhWWlRYVk9hVkZSVFc1dllXdEhRMnBYTmxrM1JXODNjM0p5U1daWVRtZHpOMU1yZGs4d1dtVlNSSE5NUVdKWmNrbEJVSEl4YUhSclFXRnFWbXgyVTJaa1FUUjZNRlJzTkdONFVYZFpWVWhKYzNWYWVraFBjMFJzUVVFeE4yc3lOMGt3YWxwdVR6STNXVlpCVERab1Izb3ZSbEl5TlVwVloxZEVZbTkxVjNkaFdGbE5OVUkxYlhCdFFqTkViM2hNZGxwWldVNUJkMWRTYW5obFNYZHpjR1J3TTI1UVdFbExlVWN4Y1dsbFNtOVRWMlUzYTFBMWNtODBlbXMyYTFBMU4wSkxRbEJoUjNGMGJqTjJkREpYZFhCWFdFVnZjVGRDVUcxVFdsQTFNREZ3VjNweU1HSjFNMjVzY2pOQ2NuWnRTMkZFVFM5UlJFOVJhMUF4YTNCME1HdEZOMVEwVjBSVEsxZE9kbXgyZDBwSlNFNXdVRU5UTWxwVFZqTjVWbmRXTUhKaGFIUnJiVzB6WVZNMk1WRllZMlpIYUZCSVoybEJWMk41WjJGWlJHVjZNbE5tVVRSMlIzbHdZV1ZGT0ZWV1NIRnZSRVJ1Vm1wTmNtd3hSMHROV1VaTVNXTmFaM05pWVhWUWJVaHJVVGhtTkhwaU9VaEpZMEV4U0hWNFVVTnhVWFExZEV4VVRYVTNUbGsxYVdKclRHOTZTamRGTkdsR1dXTTBUMWwyU0Zkb09XaFhiRk5xWVhOWWJrRkVORGhRYlZocmMyOVBiR2RNUzFBM1lURXpRbXgyVlhWa2VWZzRRMGd2Y3pnMk4zUjNSMDltYURZeFZGbDFOVFJoZVV4UVQyWnpObmh0YTJoSVZqVnBNR2RhZUhweGVGUnlka1ZpZGpSa2NEUm1aRFY0VDJoREwyYzFOemRUZW1SM1Z6RXpSRzlQVUhaaGRITkxVM0p6VEc1Nk5XeHZTVXg2Vnk4M1NWSnJTemhKUVVkcU5XOXhkVk5hV25KYVZGSnNWMlpZYURsc2RETkdTMkkwSzBOelYyeFRLM2hoVWpOSkx6QkxVR0l6UVdSRGVqa3ljMnh6VjJGclRXOU9Xa2NyWm5od1JTOXhkR2hvV0U1alUwZFZjWFZWWVdSdk9IaDBXREIzVTNOYU16WlhVME5RY1VRek5saHZORFpKVjJWSFJXeFVTM1YwUkRsMlkyWnFSWFJGUTBGblZrUk5XVGhDYTBkU1dqaEpjMXBPZDJsRUx6Y3hla3RIVW1WamVIaFlWVWg1UjBGQmNsbFJTblExS3pSdFdtdHVUVmhuYlVSWlprdEdVMko2V2tnekwySmhPRlJMYjNSblpqRkZNMVoyYlRkMlkxQnpWM1I1WjBsbU4yVXhjazE1TVhaNGQwRXhiRTlYU3pFdlNEbHpkRTgxTDB0RlFteEplSEU0WmpWeVRVSTBTMEoxUmpsRGRtOVpaVWt5YjIxbmNrdEZlamRZWm14Qk5HSkRiVWxrU0dWaEswaFhaME14V25wS1IxcHhOVkJJVGxJclRYSk1XRWQwT0dVdlpVZG1SVUkxWlVkR1RtMVRSVGhLTVdoSFVtRTVhV1J0Wlc1V0wxWkhRV3R4TkhsdVJ6UXJOM1pVYkhaYVltcFBNbkp0VjFVclJGUkVlRGhJYmxaT1VtZERjSGs0YUdaWVJISjBiRlUwY25FeFJXbFNPQzlsYzBwU1dVbFBZbEZ5U1RablFuUkVXa3RQVFZGTWEwdHhVMDh2UmxOUGNYbGpaMFJXV2pWS1lrUldRbFUzTkVKWlJtNHlZWHBrWWxZdlp6SnpjbWN3Tmt4WFVYRnlUVXQwV0ZOeE5UTjNkM0pXWVhCRFpHb3hRV0VyYVdkd1lqZzRTakZRYW10bFJYaDJZbmQyUVhOVFVpOXhZMGRsWTNSNlZGUnRTazgzVkZabk5reDNWMU5oWVU1clVtRldlR3BRZG1OSmFVZFBPRlpKYmk4d2QyMVRkRVUwTWpsUVNtUTRUV0owUWxsTmFVZEJkM3BqUlhsTlFXMVZSbHBvWVhKU1FsY3dWRGs0VVc1bU0yeFhRWEpsWkhadE9TOW9NbWxWWldKeWVuaEpSRTR5UzJSRVFqUlNjMFZ1VEZSbVJFVjJkSEJLT1RoMVZGcFhaV3h6YVZnd2JtcEdUaXRwYlhsUVlWbDZRMWg1V25KaVYxZFRka3MzTVVjM1V5dFpPRTR3VFdoT2VtcHRURzFGUkRCQlluSndMM2RFWlV0U09VbERZbFE0UkU0NFlVSndlSGhHVFROU2RFOU5VakZtVVd3Mk5ITmpla1V2V2xwR1NIQlRVbmhsWWpSSE1GVlpaM0Y0VlRaVlVFWjNLemxvTHk5bWRsaDNPV1pPVms0dk1WRjVOaTl1TjFvdk9WVXhhM2hwWWpOclRsUkdRbnBZVTNGMVl6RkVlazB5VEROU1JUQmlNRGRyYzNOdGNqVXhNRVZ6YmpFdk1YVmxjR1ZOVHpsUVlscFFkR0poZWtzNGJXSTNjMnBvVGt0S2VsRmhSREVyYTNaaFVraG1NMUZ1WlZBNGVuQndabkE1U0dJMFprVnhVVWRJWTBnd01XTXdka3RJZFRSQ1dEbHRRVFUyVFZOV0wwZFpNbFI1V1ZOSFdUQnlkbEoyTURCM1ZqUTJkVTgwTHpjMlYwUndMMUZGWlc5UGFDOTZWak5zTURWb1pFUndhekZYUVhGVVUySmxSMHhDWXpNclN6RXJlVlIwY0RsT1dFMWtNbXN3TkVjelpWRlBhbGhTY0RGNE9WQXdLMjV0TDA4MllsSTRMMFp2VDBWc1oyOTNaWHBuTTFKM1RUUmhXRFZETlVKRlJFSXdVRko1T1VkeFpGQmlObU40YkV0aVdXcEhhelkzZG1GVGRTczNOSGc1WjJwSVEweHJUV0pJU1VkV1JFTkNhVlYyZGxCTWEzUjBkblpGTURVelRuVm9NakpQT1VJcmEydERPVVl6T0hKUVVuZEhSRE42UmpGUGRtVTVaRGxwWjJoaGRYaENja2s1WjNoM1FYQlFhekJGZVRkMldtcHRiM2xUTmpsUmRsRkdNRFpVY1RadVRFRnROa1ZZZW1aSk5GUTNkMU5TTlRsb2QySnJSM1JrU1VGbE0wTmljMEUxYVRjclppc3pjbGw0ZG5oQlFraERSSEJuWkZRNU9VRmxXbXhQYTNCcE5qUXpWR2xKWkhsTmFEUkRURVpGUzBSWk0zZFBRMjltWlZkTlFVeGFaRFEzUzJkb1NYTllXVWx6U21Rd0szcEJOR2RsWVhnM1RteGlablZHYm5CWE16TjZiWFY0YTBkbU1YTjJOVTlQVm00cmNGQktkamhOVUhwd04xZGpSVmhzYkVjdk5tSjROa3B4VjA1UVptOVpWMk4xTTAwdkwwdFhRbWMzU2trMU5WUlRWWEZFVFhKYVVWWjZVblpxYlhobWVuZHdSM2x0VUhnNFlTOU1RVEU1ZGt3d1F6VXhWVEozZG5sRWEzUnNTMmRCYWxnMmJqRkJjVkl3VlVOMWJtRTJhVFl3YUVoa1lsTktWRXRUYVZKaVUwMVlSVlJTY2k5cE4ybHBObWw1SzJoVWNrZFpOSEJYWjJONVUycElOVEl3YTBsQ1RtcHNWVnBXYkVWV2JsZElWMnBCWnk5a2N6SklOVlJsU2xRMGJsQnNaRk5GTlRWS1YwSlFORVZVTmpJeFEzWnZSM1YzVHpWSWEweHFRV040VmpsR1psZHBTazl3U0V3M1FUWXhSR3M1TUVSdk9IQTBVSHBHTTNoeFoxVjNSRXgzVlhabFFqY3hPSEU1TjFabWVYWjNTaXRNUkVRMWVtNUtZM01yZUhBM1QzQnZMM2x0UlZCS2QxaGljRTlwUjJ0WlRFUjJaREpZYTJOTVpXdHFiWFZuVFZONGJFeGplSGhoTnpKMmFHcENSREZvYmpoTGJXbG9NMUEzU1ZVMVVESjJlbWxQWmpGbVdrcHdVRWhJZUM5SFdqTnFWMlp6U0hVMFdsQnNPVFIxTTJwS1J5OWlRbXN2YVdKNUsxSnpNbGR2TVRNNFFrUjVjSFpCZFdObFdUbGtMMEU0UmtjeVNUZGtSMjlaZEZsSGFYbEhTR2RZSzNOS2NIY3pRakJUUTNOaVpGcE1ibUVyWnpsVlJ6WTFkMXBKVFRaVFdrOHdWVXRCYlRGVmNsQnplblpKYUdWeFFUVnlSazluVUhWUEwwWjBiWGd6ZUZwT2VHNUhjbWRIVkVkNlIyeG5PV3haUmpRNWNGWmFORVpRZW1GelZpOW9WR1ZDVkZGTGRISlpUMFpaV2xSNGRIRk9iblpJWVVsVVpXUm5lbnBhUzBkUFpUWTFRVm8yTWpOb1ZUSk9NMmRtVFdnNVVIWlJPSE00TnpSaWJsQjVRV2xrVGpKQmRsRXplRTlRVTAwMGRTdGlaRU5tTkd3MlJETk5RMFZYYm01T1pGQlhWbk5EZGxscllYcHpPVzF0TWpnNGJqZElabFV2T0dOSlFtbG9SR2hLUldSb1l6bG5ZMk5yYzBsMmIyZFdiMGhtZEhCMU5WUjZLMDB2Ym1weWRVdEpkV0pRWVZkdVNFMTBUVmR1YVhOdmQwOVdlR2RIYW5wb1VGZG1UMk0zTDBndk5qVkROMjF5U1hrclFVcFhSVXRQYVRWQmREWk1TV3hHVTJKRWRrVlZSbEJaVURGNk9XcE9UME12ZUZCU1VVNVViWFpYWkZOSE1tWmtNazFWWWxCa2QweG1SVFpVZUc4M1JtZFNhMEY2VkdwVWJsa3hWbWRTU214UVJERmxZa05MWm1OemVERTVhSGd6UjJReWNqa3pZWGczVG1KU2VFSkdUbUphV2preVl6bDFURTAwU0doNloyNUpSWGxuUkdoalJrbDRhekZWUld4ellWTkRkaTlsTDFoWE9YSnVSbkowVDBFMmFETkpVak5xUkZRMFdGZGxWbVpLVGtwQmVscHVkMjlRTTJsSlpFMXVSVmhoT1hWM2FHSXZZa0pUWldoVFdtRkdVQ3RwWlU5UEsxUXdSUzk1YTNsR1prdEZTa0UxUlZOWFQydG9lSE5uYUVwbFFrMHdVR01yUkhjeFNTdERXV1o2UmtSUGRFMU1Wek5TUnpONFRFaHRSMUkxT0dsemQzTk1NVXhyYTNsVGVITktVRWRzVm0xNlNYRjVOM1FyYkZKUU1FczNNU3Q1VDJWS1dqRmpVamx0UlcxT01ucHVVbVJoUlhkcFptZFpkM0ZEUkVwcFVqa3hURlYwTmtoYWVTOVNNWEZXYnpoWFNsWnFiR2sxVVVVMWJHSTNRMmRSYVZaMmF5OHhVRkJtSzJWVFdTOW5kVWxUVTJOeGJEVmxVRW93VjFaeU56a3pNVEZ2VEU5dVNFaDNWMmxNWjJ0bE16VXpiMGRrY25OU1FtVXlMMEpKZFdoVlltZ3pVbVJXVW1WNU9UZHdXSEU0TlhCV01UQnNkMVpGWlROR1dGbDVkSEpEWkdkQmFWQlVhRXh4TVdaMlJqUTBiaXRMVTNsNk5tOW5SelZMUVc5aFVVZ3lPVEkyTlc5WFQwdFJjRUUwUVZoU1IzQnJhbVV6Y1ZOR09XOHZhM3BsTkV0eWJGQXlaV05XUldGR01YVTBjazlXU0RFM2NXbFZTWFJOU1RaT1RuTnNTamh5TTJwWE4zbFFOM0Z2VXpodFV6Z3lUbTh6T0d4eU1sWjJhbXAxVWpabk1UWTVSblJxUzBaamNEY3dhblJYUXpobU1uUXlUaTlGTml0SmNucFdkamxRWTJ4NlduUkROVUZuVDJkV1MxSjVMMVYyZEZsUlRXTlRXV3RMY1hWdFUwYzFaVEpXVUdSVk1sUkJOak16WWprNFJtZERORkYyTjI5MmJsTjBhRWh1ZUhoNE1rdHNhV3RqVUVSVU1EVk1SSE1yTlZGNGNUSmtjakpEVnpsS2QxRTFiVUpsTW1wdWRtbFZhM0YxTVdRMmFVUXlRV1l4Y0VaaU0wWkliVkJwZFU0NFR6aHhiMk0zTlROSWVHNDNUekpGYkhvM2NrWjVOMmx5TTJFMGRWRjZaVk5hYTJ3NU1rTmthMjVYWnpGeFZrdEhXSFZ6TUhJdlUyVTJSQ3RSVmt4MlMyMTBaREo1WVhZNE5VdDVVbGhHTVhKWFYyWnFNeXRXTDFNNE0wZDFaMWxRTVZoR09URkdkWEF6U2tKME0xVmlSa1ZaVlU0M1VXVm9RMko2V1dsQ04yYzVPVGxSVWxWaVZ6RnZjbTFsWlhkMWRDOHpWVmd3TUV4U01XdHRLekZLWmpKdlduWllXRWRHTlhCS1VsZGxRbmc0YW1sWEwzTnBMMkZ3TkhwdGNUWlBWSEpFVEdkUGJUaEpja2xyUkhWeVlrZHdZVnB0Y201NFdDdEhOVmxqSzFKWmJtTkNjR3RQVlRaT1JsZElOWFpXWmpKMlFrVjZNVk51YWpsVk4weDFTelZsZURoSlRFMXNXVkYxYjFveVEyNHJjRWd5Y1dJclpWTndVek15YTJ4WFYzUldPR28zZUVOamNXNXlRWEJFVVRGNk56VjJTekpsY1VJNE1qRmtlakF5ZFV3MlZqWTBVM1JTTm05R01GWldiVW95VmxCbFRWQkVZbE5uVld4d1NuZEpMMWhpYldweVZVbDRPWEpTY3pKWldpOHhZbTh6Y1docGJIazJkVnBMZGxKSVRVRkJjMFpLVUZaRWNXUXhPWGRHZWxNMWJHY3diRzlZY1N0MWFXUXJjMkUzTjFNNVRVbElUV3d4ZGxJeU1YRnNNemwwYzNwb00xY3ZWRlpvYkVOak5YVXdlakV5UmtwblkyaEhNVFJITHpocVNFaFdUell2Wm1WS01TdE5lRmhWWmpRMmMwUTBXRTF5U0ZVM1lVSnBjell6YmtvNU5qTkZka1pUVFRWQ2RXSmxkbk0wSzJrMlMyODRSRmt4TmxoemRYcG9kVlJEVm10bFMyMVZMMUl2VUdaNlNFYzJla3BHZFdGUVpqZHBUMWRPYWk5aFVrSlVNRmhOY0hGb1ZGQnNTbXRrYTFVdmJsTlZPRGRsYTNFeFExZHlaelZRVldSWVpGZzVMMUJqTldWcmN6a3lkVk5QZG5SdVpFUTBXRFJ5VUhCMGJrOTJWVzVhS3pkcVRHeDZkVGRGVDNwYU1tSkxiemRRZVdwdVYyUkViV2xoZVdOeE1uWkNORVo1U1RodWMwdHFiVVptYTBaVU1YRkxaM0kzTVhwdlIyWTVkalZHYmxsemFYWlhhRVZNVTBsTGIyOTZNMVp4Vm1KU1lVODBUek5SYW1KNlUxUnBjbXMwWTJGa1VFVlRTMjB6WkZkVlZuVllVMnd5VUd4UVYyRkJaRVY1ZFN0SlJUTkZjbVYzV2pBd01tMHlZMGhTWTFnelFUaHNLeXRDWTB0dVZGbFBlamxXU0RoR2VrUlZkbGsyU1c5WFRHNXJibGhMWVN0eWQwSnVWMmxsVlRaQlVuTmFPVGMxY1ZaemJ6bHJWR3BQZFU5WE9UWTBTMEkwYVdSTmIwMUpZemxuY0dKRFZWWnhTbFpYZW5CdGVtTTVRbFppUlV0MldWRXlSblozWkRneEsySnhhM3B3TTB4U2FYVk5MMFY1V25oeFkwUTJSR05GTW5GTk9FMUdZVFpNSzFsNlVEUnpha3hyU1d0eWVFMHpWM04yUmtkUFNHVkVkRWN2U1RWTmFERlVXU3R0UXl0TmNVTm1UU3RWT1RRclZHZ3haRGx2VDJvNVJWcDVWbWhoT1VWbGJGaDVWSG8yUkN0SU0xSkpOeTgxVVc0MGVuQkxUM0IxYVU5ck5uVnRZMWRFT1c5RmFFcHNka1ZCS3pCVU9VaExhRGRSVjNGbFlsRTRORzlWYVdOdlZIWk1RemxTZVVodVNXWTVMemdyTDJock9ERlBOWEJ4VDA5allYaG1lWGszYkhOWU1rdDJZa1JDTUhWc1UxQkRXR3N2ZERkVGJGZ3JSbUoxV1M5MU4yNXhjVXh5YXpWcFZtVnVjbU42YjIxemNIUXljMm9yZVhFNFptOW5MM2RYZEdKbVZHUTJNRm8xTHpreU9WbFBkRzB2UzA5bVptOVRUbUpHWTJNMU9GUlFMM1J5YlVob05YY3ZkbTFVVkhwU09YUjVTRzl4TW1KUk1ITXdjSFpaVERkYUx6QmlZVWhvTTNVNFpVOXdOak15UjNNd1pqbFVXRXgxV2tkV2F6WmtPVzFPTjNseVpUSXlNWEpJUkhKVFdUSjZNMWhrS3pOYVJHWkZZakkyTnpST2RtWlpXbGRGV0RGd2MwVXhNRzl4UzAwNVEwMTFSbms0T1c4NWRsSXdXamRtZGxGakwyc3pTRU50ZFhnMVRGUTNhVmh3ZVVSSFEwMXFVblp0YTFOUWRVOVBjRmhWTDNSa05rbDJhRk5PTUd4eVVtcGtSRUZoVlN0c2VVZDNibWRJUWtsNFRtUjJaVzR4YUdnM0t5OWFiWGN4ZURKdFIydzNibVJqYmpGMUswZzJORkJsVTNKS1NuSkplVEUwV0V0c2NrSXdUMUo2THpjMlJXNUlNRVF2VWpOM1JqQjBOV0ZFZEZwb05sVm1UMlJsY0ZkMVF6TnpVaTl3WVVkbFoxVTNTWFl2WW1Kb1VHcHNlR1U1U2pkV09HOXdZV0paVUdGQ2QyOUlZVWt4T1U1NGNYZGxkVnB1UldwbGFIQkRabk5aWldaVmJpczRWVzEyU25WVlRrSmhlVmRVWVRZd2RuWmtPR0pXVmpScVpWTXhiMjlFY0VFdmRFRnBZMUl2Y1RsSFptdHFNbGhuYzBjMFdUZ3JRM2tyVmt0T1EyeERSVXB4TjBFeFpEUkZRMjVxVVZKMWIzQkRPRkZuTjNwMVYwWnJOVUZ6TkhsMlQxcGtNa0ZFUTBaaE5IQXdkRU5LTjJkS1FXeHVOR3B0UlRkMFduWXZTV0V2ZWpWbE9IWkpOVGR5T1V4SU5VaFROMDl5Unk5aU9HbG1XRzhyWldWUU56bFRiRGc0Ymk5cWEzTlhaVk5PVFVoYU9YVmtMelV6UmsxSWF6ZzRkbEVyYVRKdWRqa3lTVGRQV0hvd01tUkNZakkzVERZNVVsaE5iemQ1Y1dKemVXRXJSR1pOZEZGS1ZsZ3ZZMWRHTHpOaWNTdFVWbkp3WnpZdlZGcE5hRmhYYUV4cVZXdFVTa1ozTlZjM1EyUlJjVEZ3Y21sUFNsaGxMMU5GSzNKek5WcHVXREFyVlhZME5ETXhRak5uUW1KTlJrUlphSGRCUVVGRVFWZFdVM2hpWkhVeU4xZDRjMlo2WWxobVEwTXlhVzEyTjJkak5FbEJiaTlRVW1aNFNEUkJTV2hFZURWa2RXNU1kSGh3VG01TU1UZGtkWFpRVERjd1JGRnVNRUZ2UlVoaWRucGlkWGRNTnpjMk5YSnpabTlyVTB4RlUzUlBka0ZUU210cFVreHJVM0JPZFdkNVduTnRWRXhyVTNSUWRtZExSbWxvVVhKVllYQk5kVkZ4Vm5Gc1UzSlZZWFJQZGxGaFRtMXFVbkl3WVhCT2RYYzJaSFZ1VkhJd1lYUlFkbmRIUkdobmQySk5WM0pOZFVGdFZIQnJlV0pOVjNaUGRrRlhUR3hwZVV4WFRFWnhlbUp2VG0wM1duTXlOMFp5ZWpjMFJHZzBOR05QTTBoeE4wSTVRamhKUVZWQlFVRkJRVWQ1TlhBeVltSjBibGcxYzIwellqZHlUSEpLTWpCcFVrbHZVMHhWWVhOUFVFVlRTa1Z4VTB4RlYzRk9UMnQ1V2sxeFUweFZaWFZRVUd0TFJrTndVM0pGVTNCTmRWVnhWa3R3VTNKVllYUlBkbFZoVGtkeVUzSkZWM0owYjBGUk4xUndNRFowUzNSU01qbEJjVVEzT1VKbmQyRk5iWHBGWVVWRFdXTlNUVzFVV25ONFlUZzJPRUpaZFZkTVJuVjRZWE15TmtSYWRUSkJjMHgwTWt4V2JqTTBSa1JTTkRaa1QwaFliVE5KVmt4V05qZGtkVWhZYmpOdlRraFVOVFk1WlZCWWJUTlpaRkJZTnpjNUsxQldiaXMxT0dkbFRVRkxRVWxCUTBGUVlqTnVSek5pZEcwelluUnhLMlpoTlUxblZWcEthMHRXUzJ4VFdtTm9WVEZpT0hoTE9YTlBXRXhzZUZvclVYSXdRV2hwYUZGeVZXRndUWFZSY1ZaeGJGTnlWVkoyZGpoaFJrOTJVV0ZPYldwU2NqQmhjRTUxZHpaa2RXNVVjakJTZFdZcmRsRmlUVWRxU1hOQ1IycDRiM2xpVFVkdVMzUkNiWG8xYzNoaWMwZHFTbk5vVjNJeGNYcGljMGR1VEhSb01qYzVkWGMzWTA5cVNYTlNUMjU2Y0hrM1kwOXVTM1JTZFRNM2RIcElWak40TnpoUGFrcHplR1YyTTNZMFNtZG5ZMnBDZDBGQlFVZERXR3BrS3pKaVpIVXlZbUowTW5VNGIyNDRkVkZ5VlV0b1NYTlNTMng1Y0ZOeVZVdHNTM1JTY1RFMmRGSnlNRXRvU25ONFlYUXljbFJ5TUV0c1RIUjROamtyZGxGaVRVZHFTWE5DUjJwNGIzbGlUVWR1UzNSQ2JYbzFjM2hpYzBkcVNuTm9WM0l4Y1hwaWMwZHVUSFJvTWpjNWRYYzNZMDlxU1hOU1QyNTZjSGszWTA5dVMzUlNkVE0zZEhnM09FOXFTbk40WlhZemNubzNPRTl1VEhSNEt5OHZaMUZGYUZsU1JsSk5XRVZLVTFOc2NFZFdhelZtTm5KS2NTOHJVbTVWWjJsMEwybERTbVpyY1N0NVVGUnVhV3R3Vnk5Mkt6WmhRVVJPY2taVmNUWkJWR1p1TUVZeVlrZE9kblpETDNwQlpYcFNhMlozUW5GVmRFOHdNRXB1Y0VWc2VHZEJkbEZTSzJReE1EZFlRbE5FTUdab2FtdHNka3BxY0dSSFN6UnphbGRZU25aNFJ5OUNUMDFDUzJSTE1sWXJSMVo0U2twNGVYTndlRmxYUlc1Q2VUWkZXRVpvWmtGVVZscExWWGMyTjJKVGRXVk9kVlpTY2pkT1N6azNkM05vWlhKWU5WVkhlWFpQVTFSYVdWaEpVak12WlZkM1ZYUktTa056ZDBsVlJWbEdNR05DTkcxRWRFRndZVlI1UWxwblVrMUdXVWhOTlZjMmNXVk1XRlkxYmtaVlprcFFOREV4ZVZZMmJUWjJXalpsWVc5R01XWXpNME41WVRoalMzVmxPV3hYWjJ0dFFXUlZNemRUZVZNM2VIWXdiSGRNY1cxVVUxaDVVa3czTmpsUFIxYzBjbmhCTlhaWkx6RjZaaTk1U2psM05UTnlValZ0WVRKM1l5dGFlR3RtYnpJMU4zUnZRVFpVVTJWTlZVeDVVa2R3TnpseFNUUlNjWFZoY0d0NVpUZG5VV0pGVjFGRE1IQk5WMDR6UjBaM1RGZE9lVTV4VTNwaE9HTk1aVFJEYXpGUEsxVkllRXBET1hkV1RVdHpSa2c0VVZobE9UQlJLMDRyVEdSUk9XSTVRekZrV21KRGExVnFNbFp6VFZKUlVFOHphbUZFY1hKcldtUnBNR1lyYWswNWRqWk9TVWhMU3pkbFpIVXhka2QyZDJKa1RraDZWRFJuZWtkNlJFbERVa2MzUVU1MVlVSkJabk5pWmtSTFVqbHVhMWhhU0dwbVJUZE5aa1ZqV2pSVmRUQmhUalpSYTNwYVNuaDZaVmt6WVdad2RHVnFTSGt2YzAwM05HVkJPRVEyVkVWclRWTlFXVnByZUdkQlNqVXJUbFpRV0VwTlJqTlFVSFlyVW5sMlFraExjQzh6TTNsUFV6QjJSMGt2ZFdKeU4wUTRPVWhxV0RkWGFITXJkV293YVhadFNVOXFORVJXTVRCdlMwbDZjbHB5VWpjemFXNHpTSGh0WmtFMWRuUnpOblpPY3pabksyTTRkMHBaTDNwb0sxWnBPRWhsWkVweFZsaGxXVlpTV1VSMlZGTmlOa2swVURaUGVTOVJabVJwVTNOQ01HOXRTVGR4WlVRMWFVWkxja051ZG1SRlQyMDBaVU5oTmxkUVIzUnNVRm8xTjBSMFVXTmxkMEUyV0dwRlJVOXRSMHM1U0RGamMyUTNWVmRGYkRoSmFpdFRhWE5vV2s0ek1IcFhibVpIUlVjMk1qSjZiRGMzTUNzM1kyRjBSazR6UVhWbVJXZE5VVmxIVjFSaWVFbHpkM2RtZW5WNFZua3ZRelpHWlZZd2NuWnNOa2xEYVdZNFZFdEhjSGhCY25KYU5rMUxaMjFTSzNweU5VSlFNbWRVUmt0elRXUkhTbGRyWjJWeGFHaGFPRUZFVWxBclNVWm1VVUZEVWpabmQwRlFWVFZCUlVOUVZVTnBRakJxZDBGSFZuaFpMMVJxT0VsQ05YaGtSV0UzY3pOVlUyRllla1phVVhFdllXbHZSVzFQYkVaa2REbFVOR2xXWlRrd00wdDRjRmxWV0dab1JYZE9hMGRvVFRsdmF6aE5hVU5GZUVsd05GUkZNbE1yV2pCeVRXbEViWGx6U1d0UE1GTldOakZJWkVKTVRtcG5XRkJvZFU1TlJrdzBkamhDTVhsR1ZXOUlaMEpVWXpSc1ZVRmFRVVZKWW1nNU9GQmtjbVZFWld0VU5rUlBkMVl6WWpkb1JVNVFOR3ROZEc5aVIxYzRORXBFVEdGQ0wyWkdUMWh1VDJSM09FSlFjMEZYV25wblVtaFNkV1Y1U0ZvNGVsVjZTM3BGYjJGNlYxbzJla1ZIY2xsdlVYaGpORWxhWXpodGNWZE1XWEZXYkdzelpEbG5NV3A2YWtkcFVrOTFSVVJtWTIwd0t6aHRSeTk1VVZCS1YyZENiWE5MUkU1WFUxZGhjVEJ6TVUxYVduUTFTMnBZVEZaWGN6SnhUa1p6VldKMlduQldOWHBSUms5dFVUbE5OR0V3TlhwUFFrOUNSWGcwUlVsR2VWRnBkaXRPVkhRdkwyTk1URGRFZGxJMVdDczRSR3RUUzJkQlFVRkJaVUZGYzNwQlQwbEtTRUZaUW1aQk0zUnRNR0poWkU5RmRGa3lla1pqWVV0YU9GSkVkV3A2TlRCeFVVdzFNSFZZVEd3eU5uUkhibFJvZGxkdFJHTjJXRkF2ZVN0UWFqRkpRVWRwZUV3elRrUlBhbGw0ZEhkYWFqbFdOak5xYWtSclFVaENObmx4Y1VSRmVFZFZiMEp0SzFCb04wY3hUMnAzVjJocFdGSXhaazltVkdjM1prUXlUVGwyZW1sWVFtZDJSblZpUjNkMmFYZHphbWRtVW0wdmREUnhZUzkwYWtsaWVHNWxVa2swUldWTWExSkdTalJWUW1KelVrVktORTFTU0hOU1JrbzBZMHBZYVZKRmNEUkJXbEJwVWtad05GRkdabkZTUlhBMFNWWkJZVkpHY0RSWlRsRlhVa1Z3TkVWa1NWZFNSbkEwVlVSWlpWTlJaamxFYzA1RFZtRmhjVnBQTm5Ga1VtMXhXa1pQYTBKTVpFbG9UMVpDTmpFMk5VazFkV3RhZGpCdlpUQlRjbll3UTFneFJETTVSMUIwUm1VM01UWTFTVkIwUlNzdlZYa3ZNSFF2TUVRdk1Vd3ZPVWd2WkVveGRURkRjVEZwYlZOVVluUk9SR1ZyVWxCTWNGUkxjVnBoWVhGYVVEWTJVbXg0Vm1kSWFsSnlTa1Z4T1haeVdFOUtkMFpHYjAxTmVrNDVXbTFhYlZwdFdUaGFiVnB0V21jM2IwZFFZbTV6ZHpoRFIyeHNlRGR0ZFRBd1oxSkhNWEpqWTNwV2JuaDZPVll2WldnM2RtMU9ZbmgzZFZjMlZtRXJjblUyZFhKbGNXRnhaWFJ4TnpoQlRqbFFlbWt3WVU4elVYUTRSRmx2VEVac1ZVSm9TSFJGTlVWNFMzbFhUalJ1YURKSWNYaE5hSGsyVGpWeFpFcHBRaTlZVDNkaVRHWTRZWE16Wm5GNllURjBibGhOTnpNeFRtTXlMMnRvUjFkaVVWUnlPRmwwUlZocGNVRnJlRTAzV25oMGEzWmxTWGdyVkhvNGFWZzFSSFo1VFhwc1pYcHdWRXcxVm5FMVYyVTJWak5pU2toWVVFVnNUVU14YldwUGEzZE5PREU0Y3psTE9IbFlla0ZtVFRjNGQxQjZUMjVITUhWb1l6SlFZVEJHSzBGVVMzbFZTREZwWjA1RmJIZEhWMkZNWlU1cFRXZzVVemRKVlZOUWNta3dlRXhFYVUxV2JYTnlhWGhDTjJoc1MwZFFWSG94VHpOS1REQkJTbU0xVFcxNll6STJNemw1YVV0WVRYSTJSR0U1ZURsNWRXNXliRVJ1ZWxZellXMUVkWGQyZW1Rd1IxbDNZelJvTkZkRGVHMUViVkF3TVZSSmRVSm5NVWhwY2pGUk5HaEROR2Q0VEVScGRETlJiR3BHTTBscGRVNW5XVkZaVTFkd1UweE1SR0pRUzBOUlJuWlVTbmhqUVRsaFFqWkhjR3RsTVhkR05ubDBPV1pEZFdaMk1IUllRV3RyYWpaRk0ydElUMGgzT0hSMU9ERkVLM0Z3TlVkT1duTlRVbk4wYm1sS01rOTJNREkyT1ZwYVJEQnpUVlpVVkZGNlkwUk9SMmRFUWxGWFNUbEtValpsT1ZNNU5HTm5TV3hZU2tOMlRIZEpSSEZXZGxWS01FdHhZbmh1VFRjeFkxQkZhMnhMUW14eGIwa3JSbEZvTm5SS2RFNVNWMUk0V1VaVllXSkpZMWd2V2t0d2JIVlZTMGMwYlhKS1drVnFWbWx1WVdSd2FuVXJTV0pGYm1SM2FGVXJOVTR5TmtWd1JWVmtPWFJCZDJ0WGJFeGFSU3R1YzNRd0wxbE5OVTB3TkZkNWRIWnJTUzlKTVN0WmJqaFVjelpYWmpodVREUnphR1ZOT1RCelRrdDFVa2d4T1VOb2NESnBhbkI1Y21wMmF6UTJVRTluVEhsd2VYZE5lVlZXYWsxaVRrWmtZVzlsYkZCbFoxRjVUMWhzU25oclNYVktla1p2YmtkWFYyZFdXV2hHTm5samFHTm9aa2xSYkVsbWEwTXpiWEVyUW5ablNEWnNiVGRHUkhGaVMxZFBhMFV2Vld4a1QxWkdPVFpJU0d4UmNsRkNTMHM0SzB4RE1IbHpNRVo2VVdVNVNDODBUMmRxTm5WTWRsaHFXVk41UVVjck1pdDBkMDFJY21wSVdXTmpXRWRhY0ZSelJWQmxiRWNyZUdaa1ZWaHZhVzFYYVN0Q2RtOUhOa1p6ZVd0ak9Dc3plWGRFY2xwTU5WbHFkRkJhV1ZJdlltczJRVVJJYTNwdmVtVjFkWGhEWkU0cmEzSmhURTQyVHl0M2REQmFlakpvVERCSU5sWXJXRFZIY3pONVRraE9ORWs1WjNCSlFXOHlaMVZ6ZVVsQ1MwMW1ZbFZLSzJWd1ZucGxkbWxIWnpsSmRVczBTbkp2UzNGR2JrbE9WamxEVUZWWVUySk1VMlp2S3lzME0zWTBNRVVyV2tGak9DOXphR3gzSzNwT1QwcDRTV0pYU1dWSU0xQlZZelpoZEVWbVRVcE9TR2c0T1dacFVGSnhhMjU1TmxSRmMybElTRkJuTXpWUk5rbGFMMWRRTDB4RkwwcFdhVkJqYWxSd1NHOTVWamRrY1cxdU4zZEZSV05RV1cweFQzWmxjVE5vZEd0alRWVkVURzlvYms1T1QyMTBaazh2WWpscmIybzJUbVZRY0M5eUswbG5aRGRCZVdsT0wyUnlTVXN5T1Rnd1YwTkJOakZNT0ZOcWVsZDZNVmRsVDNSeGFreHNjbGxXV21WWk1YcFRjVmM0Ynpaa1dteDRMMFJKUWxCa1VYTmFNWHBWWWxCV1dsVndkM0k0WkVSR1YwdGtiV3ByWm5oVGMydElhRmxXYm0xT1ExZG5MMXBwU1VWd2RqTnhWVFV4T1RObk0yTlVOMGQwWkdSSlpHTnhXV1JGWTJOUlpTODRSbTB3VkZwM09VNVRUemRwY1dOSmRGUlZaRTh6YjJGMk5sazFlbU5RZVVSMlZqUkdlRFIwWTJWYWRXaGxLM0F6VTNaNGRtUTNTVmszT1ZnMlpraG5jblJYUVRGMlRUaEVOV0ZJZFRSNmVsQmhWamRqS3poRFlVdGFUMnBHUmxRM1lXMXVXSFF2TTBrdmNHcG1lVkphWmtFNFRqY3hWMmhxWm5CYWFGcHNWVzgxZWxSdlNEUkhZVUV2VWpZMVZXOU9Tazg1Wld4UWExYzRNSGh0YTBSeGIwUTJUbTlaYm5Gc2RIWldkaloyUkN0aFpqRk5ZakZJUlhCS1FUWXdSRWhhYzFwcVJuQm9heTlpZFhNME5YSjBTVUZtZVROWmVIcENlazh6YnpWalkzTnVlQ3RvV0RSRk9XVjJjamRLVkRWNU5pOWFVWGRKVTNGS1JrVjVWMDQ0UmpZeWIycEhNV0ZtY0VKNWJFMUZlblpxTTFOU1pXMTRSMDB5YVVwemREQndWRk4yVDJOVk9HVXZibVZNTkdoVWJra3ZlVzFTZVZKUEsxbGFRV2RVVm01RFUwSnFRek12SzJwR0wwdHFWbXc1UVhKclZXczVkRE52VWl0dWMwSm1RWE50YVV4TU0yOUZTaTlSZW1KeFdtOHhkRFV2ZEhkRFVFTldPRWg1YlhNeVV6Wk1UMUIyTTJOTFpXSmxaVTVLVFdaalVWRTJWMk5oVDBSbU1GcFdlalpCTVU1elVrNVFiR2hoVW1GbFRtMHZSV2x0ZVVadksxUlpSRGxrZGtaWFozaE9UbGhtV0d4a1UzRmhRa3d4V1RaMlJVVkVWalF6Vnk5bGIwZzNNRGRYYmxwU1FURmFSVmROWjNocGJWSnZlWFJuTXpkdGRYWnlibkpXZGpsSldWbFZiVnB4SzBFMWJqSkVSWGhtZEdnMFlrZDNlbFpJWWtSMlNuVndXakIzUlRWT09XVTNla3B6WjFSVmVGcE9hMGwyUWs1dlJtdHBaV3RST1hwVmMzSk5NMDgwTjNCa05HSTJOMDlaU25aRVYwZDJORGRCYmsxRWEyVmtRVWMyYkU1RFp6aG9VbU14T1U0M1dXOVpkRFU1WmxoR01HaGxVWEF6TmxOUVZUaGtkR28xZGxOR1YwWnpialo0Y0ZaM0syMXZSVTlRTm5CSWRqaFhjVEV2YVdWeGRuUnlabTR3VlcxemEzWXdUMXB2Vmk5NFltY3hjMnBzVVRkaVZFWlBlRkZrZFRGUE9WaDBSM1ZxWm04M09YbzVRa2RJWVdWRFoyazNjVEZtVjJveVZWWXlTa0V2UmxaRFprOXlWMjV3TkZCU05ISnJjRU5PWkVOV1VrTXJSRU12VGt3M2VXbFdRakpoVUdaQmNsUlJNa3hsYUdSeU9EUkJhM2hGWTFacVZYaDZkVWgzT0hoc1RGazBXR0kxYUZOV2NVczFTMngwUW1waE1sTllSVXh4YkhOb1V5dEdZM0ZNT1VsWU1sSXZkMkkyZFU4eWNXZGhLMmhMSzJoWFRsTXhUa2RuYzJjdmVXOXVaRlZpUkZaaVIySlhZM0l2ZGtkdmNqbFphR3g0VURaQmRXWjFhMFpFWkZCMmEzRldlbFl6TVZkV1ZEUTBZMnMyVEVwWk1tbE1abnBPY21OTWMzVXhRamhtZDBaMU1ra3Ziak13TjJKSU1tdzFSVTgxY200d2VqTXdjVUZqZFc4emJrNVdOWGx2VjJZM2FVOHdPVmxsUlhJeldGZGlNQzlZTWtjellTOUJibTVTTUdSa2QzSTBMMjEwU0hGMVQxcHBWMmh4V1VoamJHNVRlbkJ5U0RKR1p6TkJkVmw2U2xSUVQyVktabTlFYVZaa09XcEVSelIxVTFrM09IVnhaMlJTY21JeFYzbzVhVXRtTDJNek0zWlJZbk5zU1dFd2FEYzFaRGhSVGk4NGNYQlRTbTF0YkdsaVpFTTNaRzlsWlVZMk5URTBXR1JJYm1WaVpraHVXaloxTHpZd1dYTjVjbVEzVEhoc0t6RkxOMU0zVG1GVk9UQXpNVkV2ZEVvemJGTkdjV2h2WlZwSE9HbGhjRXRaTXpOUFZWSnlTamh4UVVOdEwwbHlXVTgwYWpjcmNESnZabkZPTjBodUsyWjNVRlEyY3l0SVdEWmlLemhuUm5wWlF6aFBjeXRoUVVOaE1GVktWR2hRWTB4VVFpOVdORGxqU1habVZHWTViRk41WkZFcmFrSlNkak16TTBkVGVIZzFNSEpNVTB4MFJEZGtka1ZUVUVSU1ltcHViRWRhV1hNMWFpOUNaV04yTjNaM1RUVjFVR05vT0U0eldWazNOM2x1U0daM1pHZHZiVk40VjNoTFVrRXZlRWhRTjBSSGRUSlhZM2sxY0VFMVlrMVZUM00yVUhOQ1RGQklWSEpXWkdSeVdtUmhTbVppZEdaYVRqbG9NekptWmxscU9XeFBaMHd5UkhWaEwxazNPV3RtTWtZdldqTlhTR1pKU0cwcmJtMW5lbXRVTjFadU1uZDBVa3czWmxneWNIWjBibVZFZFZvdk9WSTBPWEpJTjBST01rOTZWQzlETTFwblFsUnhaMFF4Y1U5cWVYSlhjekpKT1VzNVpWZzJhazVvWmxKdE9HOUlORVZsZGxwU1JIZHBORTFMZDJaWlpqQlBOaXRYVVU4M05VVlhSRzVMV2tOd2IyZHdNa3RzWVdWWFJUVTNOWGRzTlhsUlRFNUNRelpIY0cxMllVTmxkWHA1YTBFM1dTODViek0wV210RUszb3JNa2xFZW1ab1ZFVmlSemcxTWtSUVdqQm1lbTFvWm5ORkswZHdjMWxoTjA1dk5sRkdVV0pJY0hOaWJYaDRZa05ZWlRjeVVGa3ZlazR4TmxKa01sWkVibEpqTmtnelJFVnBUWFpzT0VVclJEUkNiWE5WUTJ4SlVHc3pNRFE0YW5ab2RXcG9PR2d2ZVd4cFZXWTBOM2hGT0ZSWE5Hc3ZTVWcyUmpob1pWTklNQzg0U1VoRlZEaFhUR2xPTkdjdlNuSTJTaXRDU0dsaVQweHVhV1U0YUROcmNHTlNjRE0zZVVVNGJHWjNaalZPZGtsdWEwVXJVVkEwV0RodVkxRndlRlp1TVdkUk5VaFNhRTFPTUZKTWRrdGxOVVZ5VW1rM2JsQkpibU5sVWtSaGIwVnFhVmM1VjI5S2VFY3ZiSFpGWkcxTFMydG9MMnczU1cxMldsbEJLM2cxWTFFMU0wRTRjR05EVjJOVE1IUlZWR0k1YmpGYU4wRktUREJ6WVVsdlptMDJOeXN5ZEhWNk9YRXlUVlkzWW5SdE0ySkhhSFZXVVcxNlluUnRNbUphWmpOT00wUnBiRTlRVjNKUVpsVlhieTlsT1ZkYVRVWlRhRVExZGpNNFF6ZG5jaTlYVUVkUlJVSkdhVXBGYVZKd2NGRjVlWEZ0WjJ0cGNYRnRZekJqTldwTFVDdFRlR2RKV1hSWmVrSkxWM052ZW14eVIwRnNjVEZxVGtkMFdubHBZM1JqTkZOeVdIVk5ORTVZYzIxeVpVRmpaalZYVGpodVJTOTNXbUkzVUVRdloyaFFLMHhJTDBsVFpqaHFUaXQ2YVM4MFNtSXZhVEV2ZVVjekwwbHZhaTlOYTFRdlRYTjZNSE5MU3paeE5HdG5jVlZWVlRSR1JtUldWSFprVmxndlZGWlJaM3BXVlhkNlZsTnZlbFpYTkhwV1VsVjZVa1J3VTNCWWNHRnZNVkl2VHpCUlNYVXhWazExTVZWeGRURldkWFV4VlZwMU1WWmtkVEZWTTNVd1ZpOTBNVlZKWkRGV1RXUXhWWEZrTVZaMVpERlZXbVF4Vm1Sa01WVTNaREZXTDJac1VGSkNhbkJOUm05S2FWQlhWelJ4ZGxkTFFsZzJVRmRyT1ZWaE9XbDRTa1ZuYlVkTk5FUk9PR3h6TDNobFlqZEVaSGRyYUZKMVJ6ZFJaVk53V1dwVk4wOWpTbmh0Y0ZoUlRVa3pVVXRHVm5CdWR6ZHZhMDAzY0VGeFRESnlNWFl2V0N0Nk9IaGlkMFUzTlRCUUwzUXpaWFl2Y0M4elVIa3daak5tTXk4eVZIbzBhVVpvTkdsUlNubE1RMFp5VjNocVQzcDJXWGxUTlRKek5HUTVOMDlqUVVKNmJrVlpXVFYzYkVkTll6VjNVVzVQWTFad2VtNURWMjA1ZW1sT2JtVTBlWG96ZFRnMFEwZ3hSa0pNU0daVk1EQkZaMVI2WWxSUlUyaDJkR1JPUWtwR09USTRhVXBtZUVKME4wTlBNMnRZYmpoVUwzazBRblk0YW5ObE5IZHRaVFJvYldWRmQyOXdiM0JuVTFOcGRYSjJTSEZ2VWtsTk1EVk5MMUJqYjNwSFlWbExiV0Z4V20xeFZYZFdjWFJLWTNwa1pFTk1aRWxUVEdSTlMzSmtTV0Z5WkUxSFltUkpWMkprVFU4M1pFeDFVSG92T1ZsNmNXaFZlbTlxV0RSRmRUWlpjWFUyV1ZwMU5sazNkVFpaUm5GV1MzUTJVa2xSUW5wUFNrNTJRbTVTYmpCRlRWbFNha1JIWTBaSmNHcERWbVJoZUc1Qk5YTTBlRGQwTlVSNEwybDNNM2xMVkM4dk1VWnlMMGN4TDBVNVNYRlJWekY1ZVd0R2NqSlZSVkF5U210UlZGTmFTV2hSZVd4d2FXSkhSVkJSTjNwb2N6UjZiR3R3Vm5veFZuVnpORWxITTNSS1FsZ3liV0psV2xaMk5FdENPVzV4TTJZeFdsaGlkMlpYT1hKR05DOTVRa3RtZDBSWVNFOVdOVlJuYjJkTWJIVmhNbWxDZGtaUlVYcFhTMlJ2TTFaVVJqWm5WV2t6YVd4V2NYRk9ZbnBFYlRsdVFrSTNlVkpRV0hoaEt6TlhTWG9yY1c5NmRrWkdXRlpSVGpNd1dqaG9iMmRpZDJ3NGMzbHFRVlJKT0hwbVdubEZLMW8yUnk5bVNubE5TV3RYVTBOQmJtbG9Ra0Y0YjJ0RVdUaDRTRU5zYVdSdFlXVkxWMHBIUmxJd2FHRnFNVTFSZVZNM1VHTlJjWGt3UzB0emMzcEhjVXh6VFdGcGNrUllkbmxzU25OWmQyTTFaR3hyVDFoNVZWcEViRzFQZHpWaWFHbFBWVFJoYUcxUFYxbEpWRloxUTFWNFpraHVUR1ZMYlU1NGVIY3pNMGs0YjBwWk9GUmFZV3h0V0dKUVNGWmlaMXBTWW5kQ2MzWjNWR3QyZUV4emRuaFJVbEFyVUVoakwyRlViU3RpUmtjcllpdExTRXB1Tlc1SFVqUXhPRnBuUmxCSE4ybERVWFEwTUhOU1ZHeDFTbkJGT0RsWmQwaFBWMFZ2U3poUlozRTFSVlZZWTIxSFNuVlJaMng1VTJsdWJIQndWVzF5Tm5sNWNuSnJPVEZKVDJOVGJGUnBkVnBrTm5WWU0xVjRLekp1Wm5VMFFVUllRbTVoVWxsYWVtUldZM053Y1hZcldqUllZWEZJYmtwV2NtbGxXbTFYYTJSalMzSllRbGhoV2xjM1VtMTJZMlJXY201aWRFRkhjM1J4YTFSWFV6QlNWbk00WWpsV1Z6QjBjVzFpVTFNeFdHUnpPVGM1UVU5NmVuVXhNRGROTHpRd2FHOXFMMW8wTTNGMU9XaE1VbVlyT1RKRVQzVm9aVEJCVlV0MWNYcE1hRWhXUmxZMGFuSnhjVFUyZG5GYWNtNXhMM0oxZFdOaWRYVklOWEJ0TlRaMmNWWmlibTB2Y2s1c1NHUXhWak16ZG5VMFZEQXdUVGxrVDNSV1ZEUlpVVnAzYUZwUlRWSlRlRU40VEhkdmNXdHlXVkY1UlN0VlYyOXpTVU5MYVRGTmJGVlhiM1JwYWlzeVdqaFpZM2t6UWxCRmMza3pNVXcwTVhkS2FVeE1TMEY0V2xwdGFWRlZjM1JSZWt4TVRYUjVlVGRJUXpoeGVUQkpjWFZ6ZDBkeWNuZFNiM0p6ZEZwTGRVZEphSEpzY1ZsaGVHSnFkV2RZWTNORWVpc3hZMVI2UzNrelRYRjVlbWMwZUdKM1ExRjJlbHBUZG5sV1VYWjRRWGQyYWxneVNHTnVMMEo2V1haNVExaDRTSGRoTXpWTWJtMWpkSHBRVFZkcmFWRXpja3hCWWxaa1UwNUxNRFpuY0VwTGRVVldXa2RIVkdWdWJrWjBVWGRUTW5FMlVGcFZWRFpNY1hKa05YVllMMVl4S3paMUwwOHhRVVJwVjIxM1FtaFFXRlZCTXpGUVJucEVNMXBGWVRaWk4xZGhTR1Z6ZUhKeWFrNWtObVJ4U1d0clRrVldWRE5IYldFMWN6ZFJSRXBKY1ZaVGEzQnNZWFpqY2xaVGJGYzJNWEZrTkRjNFRFUlNVRGc1ZDBaWGRVRjFNVzFLTTNGYVdWTmhURzFYZFhsMU1UQnNNblF4WlRWaGNsaFlXR0Y2TUZwaVpGSkhaRGROTW5VM05WVnpka3RPZFhJMVR6RXpabkFyYVRkS2VWaG1jQ3RwTjJSdmVuQkxXSE5rTVRORU1uQnJLelZ3YmxoaVVEWnhlRGRZZFdaa2FUZHlieXR1V1hCNVJtWnlLMncxWkZnMmNuSkhObFZ2TTNscVJqTTNUbkZHY1hGNVlrWmpWVWhsVnpGMU9YRTVhamQyWkZrek1tWkhlRzlRUlc1a09XTllaV04xUjAxNFVFZzRVVkZTVFhOM1pWQXJValZzVFhGeFJUWklWUzlYV1VzMVpFY3hjVXRTTjBoMU1sQXlUMjQ1UjNodU9VZDRMM296TkV4c2RrRlZiMGRWUW5kVFpVbFJTWFZsWmxSbUswZzVXVTB2Y2tGTFZUaHdOU3QzZHpSWlNXNWxTWGRTUXl0WlRUWXJabUo0WlUxcmJuUmhTa2wxYnpGa2NTOHpWR3R3UjFSeFEyZFdURGhGUW5GNGNWWTVhek5NVVZkblkzSTRWQ3N6VjA5aFNFNU5iSGMzV0RacU5ucGpjV0ZqUTBncmJtVnpOVTVuTXpKWFRtSmpNVGs1TkZwcWJtNUZMMGN3YkZsd2MySlllamxPWjNOME1XZzBkVElyT1ZRemRsVXJlbFIwYW1waGJsWlFXWFE0VkRSSlFrUkNLMEZhUVc5Q1pqRjRTa0UzWVVWdVVrazBlR2xqYms1SVppdHZWSEpwY0hNcmRqRmhZVEJLZVRkV1JUZEpUVk56VjNwRlpYcGFaalk1U2pZeWQycFBObkp2YVRWc1lYQjJUSFI2V0Rnck9XTjFaakV3Um1aeU15dEpNRmdyVm00eFRFVkNLMHNyTUZkUlZXVnJkazFKYlhwdU1sZDBRbHBwTlRVeFVqZ3JObWNySzFKNlprcDZLMjAwVTFWV1IwbE1hMGROY1ZWVFRHcHdhbmxDYVVWUVJVUkdka1ZuYkhaR2FHeDJSV0p1VG05TkwySlNZMGszVW1OdWVrbHlSemwwZFhkSVptWjBRakl6TjFFMFdVOXBXakIyYnpneVJYaHphWE5OSzJGbmJ5dGFaMWs0V0VWNGMxUmtSVGx2WWxremNFUjRUbUkxU2xsWWRVbGlRVGhXTXl0YU4wUlFhU3MyVG1kb1NXcDBSVzU0SzB4dWF6QnBjekJ0TUdKQk9GcDJlR1JxS3pJNWFXSXJhbUpIVDNkTGRGSnNSVTV2VUUxYWFFSklaM1JvYlVWT2MwMVpjSFJDWVdsbVNUZEJVMXB1VTBONlJUSlNNbWRyZW1WbVJWRm9aSG8xVWxBMGRrOHhReXRwUTNoS05UbEtXRFprV0ZKT1NWbzVaWEZ6ZFhCTFYxaFdWRFZNU1hKS09HMXJWakF2VXpKd2RtbEhkMDFyVmpKb2MybDBWV1J2V0V0eWJFUmFSbE54TjFGMGRYVXdURmx5TWtKTWJ6Sm5LelpPYjA5UFlsQjVaRGxIVkdzM01Vb3ZWSGxTTjJzMWJDOW5TVWh6V0VzMGJWRXZLMGtyYzJWcGFqWnNMMUZ0TkRaelJFZ3dXbVY1WmxsWFFtcEhUbTlXYUhKaFJXOW1NV2RMU1hZdlNFZFBXaTlDWmxWMmVGSTVhV0Z0VFM5cGRuRllORElyVTNKQmJEbEpiRWwwVG5aR2VGbEVSVFo1VFdOTkswZG1NVnBZTjA5VlpVRjJSWEZhWTJjNE9IbG9NbEJqWXpCMFoxRm1ZMDFDVFhWTWNtaHJRMlZ4ZFdWdU0yOVlkVGhrYVVkd1luSjBVMUJuV2twV2RGaHRSVWhZVDJsUVEwcFRPWGt5ZUZVeVpXWkpVMDFMWTNOaWNVeDBaRk1yVUZCa1QzY3hNakpMTVZveFIzZzNXbmhvZUZsS2NERjRhVTVqYVdoaFpIaDBNblpoWjNOWWR6aGFPVGM1UTNOS1ZqRTJjVE56VTNOc1IzaFNLMkUwVTBKVU9IVm9UVUpOUW1WM1pFcHdNV0ZrWVM5bE4wOVhaRTl4TUhaaFRERnJkREl4ZDBVMlpETlZZVGd6TTNkMGFubHBTSGx4UzFKU05YcFdaR053UkVacmNuRXpXbUkzWlhKaFZreGhLMXB5T1dFdmVGWnNOMFpSZW5FM1FYVkpSMHMwUTI1RGIwaHRNa2hyVGxOYVpsTjNTMDl1YmxodVJWZzVURlJOUzA5cFVHbG9VMUJwVW1sTldFeFRWVkZuUm5kdGJIbEhiVXhCY0M5aE4wMXBlSHBVWlhncllWb3lNM1I1TW0wNWJESmpPWFIxTkdaT1lUWmhiR000WnpkU09XNXRkRGxEVkRJMldYbFhTakkzYkRBMWJtNUxObGh1WVM5Q1RVUlVObElyWm5oR2RWaElLMHR0TTBWbFpsQTRWbG9yT0daUFlYRlVNWE1yV2pOdFEwSnJMMUUwUVd0aFVFVkhSRW95YW5Cek1WaHdUMUp2T0ZJMFVHNWhVRUZqVEZReFNHYzRPVmQzVjJWeU5FeE9WamhPYTNGU1NHWlNTRmN5TjJKWGVUTnFZVTVJYjJ0a2IyVXhTVWRVT0hKblUxSnJPRXRaVFc1YVlrTmFTbXBpVkhoSFlXRXlSWGRVYlRKc2NVMHdNWFJ3Y1c1dVdEaDFWSEl2VEd0eGVubzFTMnNySzNsMFlWb3llbkI2VnpKa2FEWjVlVWx0WWtWdVQyaDVTVzlxTjBwSU5ITlZiaXRtZEU5VU1XVkxWbkU0VTNCVE9GZHNVemhXZGxRMWFFRnFPRkpJVkRWeFYycDZUWGhJZW1NMVNEUmtOQ3RWV0RSeFRWZzBiV05ZTkhWTk16UnBZMUEwZFZsMk5HbHJMM0ZZUVhNM1pXVnplVEUzUWsxQ1kwZG1UQzl5YTBSSU0xWlhkbGhZWm5ZMk4xUTRXSGxuYW05aFpTdFlhVkJ0VmtOYVdEVnBTakV6ZUVaV2JsTnNPWFJ2UjFOQll6TnhRMGdyYml0dmVIaG5OSEJLZW1GS2JURjZkbXA2T1hGelQxVklRVEpNZFVselVHc3pSblpSWWpreE0xSnlSVGQ2Ym10VFJtazRTbmhyWWtkeFdFUlVaVFo2VVhKdFNtNWFORkk1Vm1nelIyUnJaR1JKWVRKRGVVWnhhbkZVUW5KNFpuWlBNWHBJUjNoaFIxUjFja3MxVkhWcGVWVXhUSE5rT1RKaFlYTTNNM2N4Wm5FelQwMHhXQ3RTYkRGdFNXOVhUV1l4VmxCRWJHNXpRbTB5UmxSM2VHMDRia0ZuWVVWNk9UZG1SVzlNZVhOallXRkpaVlo2TkZaM2NqRTFNRlJGUXpCWVJXa3dXR3RsWVhRemFVbFRMMDV0U1VnMWFGSkdUVkpCUjNaNk1ETXlVamN3V0hsblRXVkJRazU2UTJJdlZURXdXWFZwTldSc05uWk1NVmd6ZFZoVmNFUXhTVlp1VmpWbGNqVlhjVlpvYldkTmIyVjBjVEU0SzNWeWNGbFJMMlZDV25weGIwazBWMlV4YUVaRE1HbHJTbGxYY0ZsMVV6VmxiRnBYYkZveWNIVmlkRXh3UTJsR2NERkpWbmwwZUdoRE5sWnRhMGxaTlM4dkwyaERNWFoyT1hkMFVuQkJOa1p2YkVsSmVYUklhRVJUYkhKVFNIUkpaVEJvTjFOSWRFSmtjRXc1U21WUWRuVTFjVlpLZWxVMldHMXdhMjlPWlRVclRYWmlUMDg0TjNsTVRuZ3hlbTVxZFcxTVducHVZbUowWkV3M2N6RXZPWEYwY25kV1RrOHpkWEJhYm5KYVkzbHRla0pIVFVvMVowaGlhRFJQVmtGQlFVRmxRVWM1TVZGUFkwcGtZME5vVUVkMkszWmFOblJNV25ReU4ySjBXVlJwU3pkU1ptSjBjMlZMWW1WbVJuUnhNR1paY0hsME1rWm9ZeTlQZERCdVpWbHNRWFZ3Y2xOeE0ycHBTMXBOYlRkUFJXeE9lVTF1WmxCd1VtZDZkemRpWmxWQlVuSlJha2swVFZwUlMzcEhWVmM1YVdGMWJXUnRSR1UxU1d4TVQzQkJPV1ZXUm5kNk9XdFVWak5ZWjNWTWJubzFNMVJuYTI1c2VuQnVWR2NyYTFoNk5UTmlaMnRUVm1oSVpEVmhjMjFvTWtJM04wSmxNRTFyTUZwNFQwUkhUV2xqT1hwV1NsTkxXa1p1VTIxRU9FOWFlRVo2WTJ0cFEwWnNibE5vVEhsUFdYcEVlbU5GY0U1TFN6ZHlVMm8xUmsxWlZEWTBjbFZWWVhKbGJFZG1NRmw0YkZGWVozUnFXVTVoVlU0elFtcERZV0ZUZDBWME0xWnZVa1owTmsxS1FYaFVSMk5TWW5OUE9VMWxNMjk1VTBSSFRXOVFSalJNV1dWVVYyaFFUSGRaZW1wd2EzTkJZbVl4WVZWdlNHVnFUMFU0WTNocFMyTnplVTF1U2pOcWJYSmlSazUyVFhSeVVHUmlSRGczZWtrMmVqQXJkemgxZVhjM2RubEJkbGR0WlhvM1dHRXlNRTgxY1RrM1dVZ3ljMUJ6VFdaWmEyVTRXbGRQTWxwclVtVm1Xa2xzZEdwaU4xSXpNakJtYzJNdldVNHJOVWc1V1c5UFNrOUlabUp5VkUxVFMySmhTbUpYVlRjeVJ6WXlhbmd4YTFJNWFIaGtiM0ZrYkZaMVVXeGFkRmxaU21aYVRsUmlWR0p0VUhvM1l6VXlWRGQwTHk5cE5UVlBlVmxQYzFWbVdrVXJlSEE1YUhnM2ExTXllVVptV2t0bE56STVkRmRFU0RkUWVrVXpabHBDS3pWb09YaHlOV3N6TjBSMk1sVXZjMW92WVdKRVkySjRWSEp6VlRkb1ZGaDBNbTB5YlZjeGFrODVhMlYwY0Roa1dXdG1Xa05ZV1dGRlFVaGhSRU50VTA0d05TOXNNVXBLTWpCSmFqQlhhV3B5VnpoVWRIQTJkR0pYZGxwNVRXRXlhbkV4Y210NlltRm9hSFIwWnpReWVVZG1NRmw0YW1odGMwbG9WbHBNU1dSUE4wbHVRak5KUlVvelFVZEdNVUpGUm1Sa2VrcDNMM2xDUXpoblVVeHhWR2hRVFZSaFowMVNiRE5GZEVodVJuSlhUWFp5T0VKS1R6TnpSRXBsZW1nMVFubGtkaTlYWWl0T1duazRPSEptZWxCb1NYWTRaVkJTZGpGQlUwMVRRVEZSWXpSeU9HSkxkVkp6TkVoVFVWUm1VWFp2UVRORVZqSTROSEppYm5oMVNUbEtlbUkxT1hjeGQxb3daVEEwVGtscUswZFBVMGhqVTJFM00xZExWazVhVWt4eU5qVjVWV1lyTnpWbmFGTXllVVk1YkhwbmJFVjNTbTh6UjA1T1MzaFRSMlp3TkU5QmNESnBkRFJDY0dOSWFuZG9Ua0YxYTJ0T2VVTm5jVnB6Vkd0Qk56ZFdXazVQVjFBNVdIcFVlV3N2V0RseGNFWXlVaThyTVhGck9GRnFTV1JtZW1GRVExUlRTbXN3TlRCRmNVNUpha3RaUXpoT01YSkdWUzl1WjFaUGJEaFlOa1ZLWkhCSmRERnBVemRXV21Kd1kxSlpaMUJ4UlRoeVQzUkRSRUZaZUdkSVJrOVplRkZMVjBWaGJGazFOVTFuVkZOWE5rbEhVbXBzWlhKRGEwa3hWWEJ2ZFVsV1N6Wk1aM2hYTmtwR2FYQlRORTVXZFdsNFdYSmpkVVJPVTI5TGVHdFJZWEJOUmtsRlVrZ3hZVmxMU1U1YVlVbDRlakJoTlRGSVJXVTJVbEZSVTFob0sxTmtia3RSTmpFMlpsbEdUemhHYlRKelpuUktUemt4YW1SWmNWaFNiSFV4YUUxaGRYUlBSRzV0VVZSSlppczNORGR0ZFRsclJrTnhNa3hXWjBWbWJuRTRhbnBGWTA1YU4zQjRTMnAwWkdObk1taFBNVGxDVUVOT01Ya3hjRTVQVG1wckwwaHJMMFpMYkVkd2VXeFRkVU5zVjNGVGRGZHhPR1paVkZOSVpFODRjbTF0VFU1NFlqVXZlbElyZERoQ2FWWnhSWGhSUVVGQlFVRkJRVkZCUVVGQlFUMG5LU0JtYjNKdFlYUW9KM2R2Wm1ZeUp5a3BPd29nSUdadmJuUXRkMlZwWjJoME9pQTBNREE3Q2lBZ1ptOXVkQzF6ZEhsc1pUb2dibTl5YldGc093cDlDand2YzNSNWJHVStDaUFnUEhOMGVXeGxQZ29nSUNBZ1ltOWtlU0I3Q2lBZ0lDQWdJSFZ6WlhJdGMyVnNaV04wT2lCdWIyNWxPd29nSUNBZ0lDQmlZV05yWjNKdmRXNWtPaUFqTVRVeE5URTNPd29nSUNBZ0lDQnRZWEpuYVc0Nk1Ec0tJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01Ec0tJQ0FnSUNBZ1ltOXlaR1Z5T2lBd0xqVndlQ0J6YjJ4cFpDQnlaMkpoS0RBc0lEQXNJREFzSURBcE93b2dJQ0FnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPd29nSUNBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBNGNIZzdDaUFnSUNBZ0lHWnZiblF0Wm1GdGFXeDVPaWR2ZG1WeWNHRnpjeTF0YjI1dkp6c0tJQ0FnSUNBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmpzS0lDQWdJQ0FnTFhkbFltdHBkQzFtYjI1MExYTnRiMjkwYUdsdVp6b2dZVzUwYVdGc2FXRnpaV1E3Q2lBZ0lDQjlDaUFnSUNCaE9uWnBjMmwwWldRc0lHRTZZV04wYVhabExDQmhJSHNLSUNBZ0lDQWdZMjlzYjNJNklDTTVOVVUyUTBJN0NpQWdJQ0FnSUc5MWRHeHBibVU2SUc1dmJtVTdDaUFnSUNCOUNpQWdJQ0FqWW1GeUlIc0tJQ0FnSUNBZ1ltRmphMmR5YjNWdVpEb2dJekUxTVRVeE56c0tJQ0FnSUNBZ2FHVnBaMmgwT2lBMU1IQjRPd29nSUNBZ0lDQndZV1JrYVc1bkxYUnZjRG9nTVRKd2VEc0tJQ0FnSUNBZ2NHRmtaR2x1WnkxeWFXZG9kRG9nT0hCNE93b2dJQ0FnSUNCd1lXUmthVzVuTFd4bFpuUTZJRGh3ZURzS0lDQWdJQ0FnYldGeVoybHVMV3hsWm5RNklHRjFkRzg3Q2lBZ0lDQWdJRzFoY21kcGJpMXlhV2RvZERvZ1lYVjBienNLSUNBZ0lDQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ2JtOXVaVHNLSUNBZ0lDQWdZbTl5WkdWeUxYUnZjQzFzWldaMExYSmhaR2wxY3pvZ09IQjRPd29nSUNBZ0lDQmliM0prWlhJdGRHOXdMWEpwWjJoMExYSmhaR2wxY3pvZ09IQjRPd29nSUNBZ0lDQmpiMnh2Y2pvZ0kwWkdSanNLSUNBZ0lDQWdkMmhwZEdVdGMzQmhZMlU2SUc1dmQzSmhjRHNLSUNBZ0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZURzS0lDQWdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsT3dvZ0lDQWdJQ0I2TFdsdVpHVjRPaUF5T3dvZ0lDQWdJQ0IzYVdSMGFEb2dZMkZzWXlneE1EQjJkeUFySURKd2VDazdDaUFnSUNBZ0lHeGxablE2SUMweWNIZzdDaUFnSUNBZ0lIUnZjRG9nTFRKd2VEc0tJQ0FnSUgwS0lDQWdJQ05pWVhJZ1BpQXFJSHNLSUNBZ0lDQWdMWGRsWW10cGRDMWhjSEF0Y21WbmFXOXVPaUJ1Ynkxa2NtRm5Pd29nSUNBZ2ZRb0tJQ0FnSUNOM2FXNHRZM1J5YkNCN0NpQWdJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVTdDaUFnSUNCOUNnb2dJQ0FnSTNkcGJtUnZkeTFqYjI1MGNtOXNjeUI3Q2lBZ0lDQWdJQzEzWldKcmFYUXRZWEJ3TFhKbFoybHZiam9nWkhKaFp6c0tJQ0FnSUNBZ2NHRmtaR2x1WnpvZ01Ec0tJQ0FnSUNBZ1ltOXlaR1Z5TFhSdmNDMXNaV1owTFhKaFpHbDFjem9nT0hCNE93b2dJQ0FnSUNCaWIzSmtaWEl0ZEc5d0xYSnBaMmgwTFhKaFpHbDFjem9nT0hCNE93b2dJQ0FnSUNCM2FHbDBaUzF6Y0dGalpUb2dibTkzY21Gd093b2dJQ0FnSUNCd2IzTnBkR2x2YmpvZ1ptbDRaV1E3Q2lBZ0lDQWdJSG90YVc1a1pYZzZJREV3TURzS0lDQWdJQ0FnZDJsa2RHZzZJREV3TUNVN0NpQWdJQ0FnSUd4bFpuUTZJREE3Q2lBZ0lDQWdJSFJ2Y0RvZ01Ec0tJQ0FnSUgwS0NpQWdJQ0J3WldGeUxXTjBjbXhiWkdGMFlTMXdiR0YwWm05eWJUMWtZWEozYVc1ZElIc0tJQ0FnSUNBZ2JXRnlaMmx1TFhSdmNEb2dNakp3ZURzS0lDQWdJQ0FnYldGeVoybHVMV3hsWm5RNklERXljSGc3Q2lBZ0lDQjlDZ29nSUNBZ0xtUnBZV3h2WnlCd1pXRnlMV04wY214YlpHRjBZUzF3YkdGMFptOXliVDFrWVhKM2FXNWRJSHNLSUNBZ0lDQWdiV0Z5WjJsdUxYUnZjRG9nTFRNeWNIZzdDaUFnSUNCOUNnb2dJQ0FnTG1ScFlXeHZaeTVrWVhKM2FXNGdJMkpoY2lCN0NpQWdJQ0FnSUdKaFkydG5jbTkxYm1RNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTUNrN0NpQWdJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJPd29nSUNBZ2ZRb0tJQ0E4TDNOMGVXeGxQZ284TDJobFlXUStDanhpYjJSNVBnb2dJRHhrYVhZZ2FXUTlJbmRwYm1SdmR5MWpiMjUwY205c2N5SStQSEJsWVhJdFkzUnliRDQ4TDNCbFlYSXRZM1J5YkQ0OEwyUnBkajRLSUNBOGMzUjViR1UrQ2lBZ0lDQXZLaUIzYVc1a2IzZHpJSE4wZVd4bGN5d2daWFpsY25rZ2MyVnNaV04wYjNJZ0trMVZVMVFxSUdKbElIQnlaV05sWkdWa0lHSjVJQzUzYVc0ek1pQXFMd29nSUNBZ0xuZHBiak15SUNOM2FXNHRZM1J5YkNCN0NpQWdJQ0FnSUdac2IyRjBPaUJ5YVdkb2REc0tJQ0FnSUNBZ2JXRnlaMmx1TFd4bFpuUTZJQzQyWlcwN0NpQWdJQ0FnSUcxaGNtZHBiaTEwYjNBNklEQXVNakpsYlRzS0lDQWdJQ0FnWW05eVpHVnlMWE53WVdOcGJtYzZJREF1TTJWdElEQTdDaUFnSUNCOUNpQWdJQ0F1ZDJsdU16SWdJM2RwYmkxamRISnNJRDRnTG5kcGJpMWpkSEpzSUhzS0lDQWdJQ0FnYjNCaFkybDBlVG9nTUM0NE93b2dJQ0FnSUNCb1pXbG5hSFE2SURJMGNIZzdDaUFnSUNBZ0lIZHBaSFJvT2lBeU5IQjRPd29nSUNBZ0lDQmthWE53YkdGNU9pQjBZV0pzWlMxalpXeHNPd29nSUNBZ0lDQjJaWEowYVdOaGJDMWhiR2xuYmpvZ2JXbGtaR3hsT3dvZ0lDQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3Q2lBZ0lDQjlDaUFnSUNBdWQybHVNeklnSTNkcGJpMWpkSEpzSUQ0Z0xuZHBiaTFqZEhKc09taHZkbVZ5SUhzS0lDQWdJQ0FnYjNCaFkybDBlVG9nTVRzS0lDQWdJSDBLQ2lBZ0lDQXVkMmx1TXpJZ0kySmhjaUI3Q2lBZ0lDQWdJSGRwWkhSb09pQmpZV3hqS0RFd01IWjNJQ3NnT0hCNEtUc0tJQ0FnSUNBZ2JHVm1kRG9nTFRSd2VEc0tJQ0FnSUgwS0NpQWdJQ0FqZDJsdUxXTjBjbXd1YldGNElDTjNhVzR0YldGNElDQjdDaUFnSUNBZ0lDQmthWE53YkdGNU9pQnViMjVsT3dvZ0lDQWdmUW9nSUNBZ0kzZHBiaTFqZEhKc0xtMWhlQ0FqZDJsdUxYSmxjM1J2Y21VZ0lIc0tJQ0FnSUNBZ0lHUnBjM0JzWVhrNklIUmhZbXhsTFdObGJHdzdDaUFnSUNCOUNpQWdJQ0FqZDJsdUxXTjBjbXdnSTNkcGJpMXlaWE4wYjNKbElDQjdDaUFnSUNBZ0lDQmthWE53YkdGNU9pQnViMjVsT3dvZ0lDQWdmUW9nSUR3dmMzUjViR1UrQ2dvZ0lEeDBaVzF3YkdGMFpTQnBaRDBpWkdWallXd3RaR2xoYkc5bkxYUnRjR3dpUGdvZ0lDQWdQSE4wZVd4bFBnb2dJQ0FnSUNOa2FXRnNiMmNnZXdvZ0lDQWdJQ0FnZDJsa2RHZzZJRFV3TUhCNE93b2dJQ0FnSUNBZ2FHVnBaMmgwT2lBek5EQndlRHNLSUNBZ0lDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHNLSUNBZ0lDQWdJSFJ2Y0RvZ05EQndlRHNLSUNBZ0lDQWdJR3hsWm5RNklEQndlRHNLSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ015TlRJMk1rTTdDaUFnSUNBZ0lDQndZV1JrYVc1bk9pQXpOWEI0T3dvZ0lDQWdJQ0FnWm05dWRDMW1ZVzFwYkhrNklDSkpiblJsY2lJc0lITmhibk10YzJWeWFXWTdDaUFnSUNBZ0lDQjZMV2x1WkdWNE9pQTVPVHNLSUNBZ0lDQjlDaUFnSUNBZ0kyaGxZV1JsY2lCN0NpQWdJQ0FnSUNCamIyeHZjam9nSTBaR1JrWkdSanNLSUNBZ0lDQWdJR1p2Ym5RdGMybDZaVG9nTVRod2VEc0tJQ0FnSUNBZ0lHMWhjbWRwYmkxc1pXWjBPaUExTUhCNE93b2dJQ0FnSUgwS0lDQWdJQ0FqY0RFZ2V3b2dJQ0FnSUNBZ1kyOXNiM0k2SUNOR1JrWkdSa1k3Q2lBZ0lDQWdJQ0J0WVhKbmFXNHRkRzl3T2lBek1IQjRPd29nSUNBZ0lDQWdiV0Z5WjJsdUxXSnZkSFJ2YlRvZ05YQjRPd29nSUNBZ0lDQWdabTl1ZEMxemFYcGxPaUF4TkhCNE93b2dJQ0FnSUNBZ1ptOXVkQzEzWldsbmFIUTZJRFF3TURzS0lDQWdJQ0I5Q2lBZ0lDQWdJMnRsZVNCN0NpQWdJQ0FnSUNCamIyeHZjam9qUWpCRU9UUTBPd29nSUNBZ0lDQWdabTl1ZEMxemFYcGxPaUF4TkhCNE93b2dJQ0FnSUNBZ1ptOXVkQzEzWldsbmFIUTZJRFl3TURzS0lDQWdJQ0FnSUcxaGNtZHBiaTEwYjNBNklEQndlRHNLSUNBZ0lDQWdJRzFoY21kcGJpMWliM1IwYjIwNklESTFjSGc3Q2lBZ0lDQWdmUW9nSUNBZ0lDTndNaUI3Q2lBZ0lDQWdJQ0JqYjJ4dmNqb2dJMEZEUWpGQ1Fqc0tJQ0FnSUNBZ0lHWnZiblF0YzJsNlpUb2dNVFJ3ZURzS0lDQWdJQ0FnSUdadmJuUXRkMlZwWjJoME9pQTBNREE3Q2lBZ0lDQWdmUW9nSUNBZ0lDTndNaUErSUhOd1lXNGdld29nSUNBZ0lDQWdZMjlzYjNJNklDTkdSa1pHUmtZN0NpQWdJQ0FnSUNCbWIyNTBMWGRsYVdkb2REb2dOakF3T3dvZ0lDQWdJSDBLSUNBZ0lDQnBibkIxZENCN0NpQWdJQ0FnSUNCa2FYTndiR0Y1T2lCaWJHOWphenNLSUNBZ0lDQWdJSEJoWkdScGJtYzZJREUyY0hnZ01UWndlQ0F4Tm5CNElERTJjSGc3Q2lBZ0lDQWdJQ0JpYjNKa1pYSTZJREp3ZUNCemIyeHBaQ0FqTkVFMFJUVTJPd29nSUNBZ0lDQWdZMjlzYjNJNklDTTFSVFl6TmtRN0NpQWdJQ0FnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBak1qQXlNVEkyT3dvZ0lDQWdJQ0FnZDJsa2RHZzZJRGt3SlRzS0lDQWdJQ0FnSUdadmJuUXRjMmw2WlRvZ01UUndlRHNLSUNBZ0lDQWdJR0p2Y21SbGNpMXlZV1JwZFhNNklEaHdlRHNLSUNBZ0lDQWdJRzFoY21kcGJpMTBiM0E2SURJMWNIZzdDaUFnSUNBZ0lDQnZkWFJzYVc1bE9pQnViMjVsT3dvZ0lDQWdJSDBLSUNBZ0lDQWpZMkZ1WTJWc0xDQWpZMjl1Wm1seWJTQjdDaUFnSUNBZ0lDQmliM0prWlhJNklESndlQ0J6YjJ4cFpDQWpORUUwUlRVMk93b2dJQ0FnSUNBZ1kyOXNiM0k2SUNOR1JrWkdSa1k3Q2lBZ0lDQWdJQ0JtYjI1MExYZGxhV2RvZERvZ05qQXdPd29nSUNBZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJekl3TWpFeU5qc0tJQ0FnSUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURod2VEc0tJQ0FnSUNBZ0lHWnZiblF0YzJsNlpUb2dNVFp3ZURzS0lDQWdJQ0FnSUhkcFpIUm9PaUEwT0NVN0NpQWdJQ0FnSUNCb1pXbG5hSFE2SURVMWNIZzdDaUFnSUNBZ2ZRb2dJQ0FnSUNOamIyNW1hWEp0TG1keVpXVnVMV052Ym1acGNtMHNJQ05qWVc1alpXd2dld29nSUNBZ0lDQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU93b2dJQ0FnSUgwS0lDQWdJQ0FqWTJGdVkyVnNJSHNLSUNBZ0lDQWdJRzFoY21kcGJpMXlhV2RvZERvZ01pVTdDaUFnSUNBZ2ZRb2dJQ0FnSUNOc2IyZHZJSHNLSUNBZ0lDQWdJR1pzYjJGME9pQnNaV1owT3dvZ0lDQWdJSDBLSUNBZ0lDQWpZMjl1Wm1seWJTQjdDaUFnSUNBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpORUUwUlRVMk93b2dJQ0FnSUNBZ1kyOXNiM0k2SUNNNFF6a3hPVVE3Q2lBZ0lDQWdmUW9nSUNBZ0lDNW5jbVZsYmkxamIyNW1hWEp0SUhzS0lDQWdJQ0FnSUdOdmJHOXlPaUFqUWpCRU9UUTBJQ0ZwYlhCdmNuUmhiblE3Q2lBZ0lDQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqTWpJeVJUQXlJQ0ZwYlhCdmNuUmhiblE3Q2lBZ0lDQWdJQ0JpYjNKa1pYSTZJREp3ZUNCemIyeHBaQ0FqUWpCRU9UUTBJQ0ZwYlhCdmNuUmhiblE3Q2lBZ0lDQWdmUW9nSUNBZ0lDTmxjbkp2Y2lCN0NpQWdJQ0FnSUNCamIyeHZjam9nSTBaR05qRTJNVHNLSUNBZ0lDQWdJR1p2Ym5RdGMybDZaVG9nTVRKd2VEc0tJQ0FnSUNBZ0lHMWhjbWRwYmkxaWIzUjBiMjA2SURNd2NIZzdDaUFnSUNBZ0lDQjJhWE5wWW1sc2FYUjVPaUJvYVdSa1pXNDdDaUFnSUNBZ2ZRb2dJQ0FnSUM1emFHOTNJSHNLSUNBZ0lDQWdJSFpwYzJsaWFXeHBkSGs2SUhacGMybGliR1VnSVdsdGNHOXlkR0Z1ZERzS0lDQWdJQ0I5Q2lBZ0lDQThMM04wZVd4bFBnb2dJQ0FnUEdScGRpQnBaRDBpWkdsaGJHOW5JajRLSUNBZ0lDQWdQSE4yWnlCcFpEMGliRzluYnlJZ2QybGtkR2c5SWpNMklpQm9aV2xuYUhROUlqTTNJaUIyYVdWM1FtOTRQU0l3SURBZ016WWdNemNpSUdacGJHdzlJbTV2Ym1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK0NpQWdJQ0FnSUNBZ1BIQmhkR2dnWkQwaVRURTNMamMyTXpJZ01pNDNOVWd4T1M0ek5ESXhWalV1TnpFeU5VZ3hOeTQzTmpNeVZqSXVOelZhSWlCbWFXeHNQU0lqUWpCRU9UUTBJaTgrQ2lBZ0lDQWdJQ0FnUEhCaGRHZ2daRDBpVFRFMkxqazNNemNnTmk0Mk5WWTNMakkxU0RFMUxqTTVORGRXT0VneU1TNDNNVEExVmpjdU1qVklNakF1TVRNeE5sWTJMakE0TnpWSU1UZ3VOVFV5TmxZMkxqWTFTREUyTGprM016ZGFJaUJtYVd4c1BTSWpRakJFT1RRMElpOCtDaUFnSUNBZ0lDQWdQSEJoZEdnZ1pEMGlUVEl6TGpJNE9UVWdPQzR6TnpWSU1UZ3VOVFV5TmxZNExqa3pOelZJTVRNdU9ERTFPRll4TUM0eU9EYzFTREl6TGpJNE9UVldPQzR6TnpWYUlpQm1hV3hzUFNJalFqQkVPVFEwSWk4K0NpQWdJQ0FnSUNBZ1BIQmhkR2dnWkQwaVRUSTBMamcyT0RRZ01UQXVOall5TlVneE9DNDFOVEkyVmpFeExqSXlOVWd4TWk0eU16WTRWakV5TGpVM05VZ3lOQzQ0TmpnMFZqRXdMalkyTWpWYUlpQm1hV3hzUFNJalFqQkVPVFEwSWk4K0NpQWdJQ0FnSUNBZ1BIQmhkR2dnWkQwaVRUSTBMamcyT0RRZ01USXVPVFZJTVRndU5UVXlObFl4TXk0MU1USTFTREV5TGpJek5qaFdNVFF1T0RZeU5VZ3lOQzQ0TmpnMFZqRXlMamsxV2lJZ1ptbHNiRDBpSTBJd1JEazBOQ0l2UGdvZ0lDQWdJQ0FnSUR4d1lYUm9JR1E5SWsweU5pNDBORGMwSURFMUxqSXpOelZJTVRndU5UVXlObFl4TlM0NFNERXdMalkxTnpsV01UY3VNVFZJTWpZdU5EUTNORll4TlM0eU16YzFXaUlnWm1sc2JEMGlJMEl3UkRrME5DSXZQZ29nSUNBZ0lDQWdJRHh3WVhSb0lHUTlJazB5Tmk0ME5EYzBJREUzTGpVeU5VZ3hPQzQxTlRJMlZqRTRMakE0TnpWSU1UQXVOalUzT1ZZeE9TNDBNemMxU0RJMkxqUTBOelJXTVRjdU5USTFXaUlnWm1sc2JEMGlJMEl3UkRrME5DSXZQZ29nSUNBZ0lDQWdJRHh3WVhSb0lHUTlJazB5T0M0d01qWXpJREU1TGpneE1qVklNVGd1TlRVeU5sWXlNQzR6TnpWSU9TNHdOemc1TlZZeU1TNDNNalZJTWpndU1ESTJNMVl4T1M0NE1USTFXaUlnWm1sc2JEMGlJMEl3UkRrME5DSXZQZ29nSUNBZ0lDQWdJRHh3WVhSb0lHUTlJazB5T1M0Mk1EVXpJREl5TGpGSU1UZ3VOVFV5TmxZeU1pNDJOakkxU0RjdU5WWXlOQzR3TVRJMVNESTVMall3TlROV01qSXVNVm9pSUdacGJHdzlJaU5DTUVRNU5EUWlMejRLSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTWprdU5qQTFNeUF5TkM0ek9EYzFTREU0TGpVMU1qWldNalF1T1RWSU55NDFWakkyTGpOSU1qa3VOakExTTFZeU5DNHpPRGMxV2lJZ1ptbHNiRDBpSTBJd1JEazBOQ0l2UGdvZ0lDQWdJQ0FnSUR4d1lYUm9JR1E5SWsweU9TNDJNRFV6SURJMkxqWTNOVWd4T0M0MU5USTJWakkzTGpJek56VklOeTQxVmpJNExqVTROelZJTWprdU5qQTFNMVl5Tmk0Mk56VmFJaUJtYVd4c1BTSWpRakJFT1RRMElpOCtDaUFnSUNBZ0lDQWdQSEJoZEdnZ1pEMGlUVEkyTGpRME56UWdNamd1T1RZeU5VZ3hPQzQxTlRJMlZqSTVMalV5TlVneE1DNDJOVGM1VmpNd0xqZzNOVWd5Tmk0ME5EYzBWakk0TGprMk1qVmFJaUJtYVd4c1BTSWpRakJFT1RRMElpOCtDaUFnSUNBZ0lDQWdQSEJoZEdnZ1pEMGlUVEl6TGpJNE9UVWdNekV1TWpWSU1UZ3VOVFV5TmxZek1TNDRNVEkxU0RFekxqZ3hOVGhXTXpJdU56VklNak11TWpnNU5WWXpNUzR5TlZvaUlHWnBiR3c5SWlOQ01FUTVORFFpTHo0S0lDQWdJQ0FnSUNBOGNHRjBhQ0JrUFNKTk1Ua3VOU0F5TkM0M01UUXpUREkzTGpjMUlESXdURE0ySURJMExqY3hORE5XTWpVdU5UWXlOME16TmlBek1DNDJOREUwSURNeUxqWXpNek1nTXpVdU1UQTBPQ0F5Tnk0M05TQXpOaTQxUXpJeUxqZzJOamNnTXpVdU1UQTBPQ0F4T1M0MUlETXdMalkwTVRRZ01Ua3VOU0F5TlM0MU5qSTNWakkwTGpjeE5ETmFJaUJtYVd4c1BTSWpSVFEwUWpRMElpOCtDaUFnSUNBZ0lDQWdQSEJoZEdnZ1pEMGlUVEkzTGpjMUlESTFMakUxTmpKV01qa3VOVFUyTWsweU55NDNOU0F6TWk0ek1EWXlWak15TGpNeE56SWlJSE4wY205clpUMGlJek01TVVNeU1DSWdjM1J5YjJ0bExYZHBaSFJvUFNJeExqVWlJSE4wY205clpTMXNhVzVsWTJGd1BTSnliM1Z1WkNJZ2MzUnliMnRsTFd4cGJtVnFiMmx1UFNKeWIzVnVaQ0l2UGdvZ0lDQWdJQ0E4TDNOMlp6NEtJQ0FnSUNBZ1BHZ3hJR2xrUFNKb1pXRmtaWElpUGp3dmFERStDaUFnSUNBZ0lEeHdJR2xrUFNKd01TSStQQzl3UGdvZ0lDQWdJQ0E4Y0NCcFpEMGlhMlY1SWo0OEwzQStDaUFnSUNBZ0lEeHdJR2xrUFNKd01pSStQQzl3UGdvZ0lDQWdJQ0E4YVc1d2RYUWdkSGx3WlQwaWRHVjRkQ0krUEM5cGJuQjFkRDRLSUNBZ0lDQWdQSEFnYVdROUltVnljbTl5SWo1UWJHVmhjMlVzSUdWdWRHVnlJRlJTVlZOVUlDaDFjSEJsY21OaGMyVXBJRHd2Y0Q0S0lDQWdJQ0FnUEdKMWRIUnZiaUJwWkQwaVkyRnVZMlZzSWo1RFlXNWpaV3c4TDJKMWRIUnZiajRLSUNBZ0lDQWdQR0oxZEhSdmJpQnBaRDBpWTI5dVptbHliU0krUTI5dVptbHliVHd2WW5WMGRHOXVQZ29nSUNBZ1BDOWthWFkrQ2lBZ1BDOTBaVzF3YkdGMFpUNEtJQ0E4YzJOeWFYQjBJSFI1Y0dVOUltMXZaSFZzWlNJK0NpQWdJQ0JqYkdGemN5QkVaV05oYkVScFlXeHZaeUJsZUhSbGJtUnpJRWhVVFV4RmJHVnRaVzUwSUhzS0lDQWdJQ0FnWTI5dWMzUnlkV04wYjNJZ0tDa2dld29nSUNBZ0lDQWdJSE4xY0dWeUtDa0tJQ0FnSUNBZ0lDQmpiMjV6ZENCMFpXMXdiR0YwWlNBOUlHUnZZM1Z0Wlc1MExuRjFaWEo1VTJWc1pXTjBiM0lvSnlOa1pXTmhiQzFrYVdGc2IyY3RkRzF3YkNjcExtTnZiblJsYm5RS0lDQWdJQ0FnSUNCMGFHbHpMbkp2YjNRZ1BTQjBhR2x6TG1GMGRHRmphRk5vWVdSdmR5aDdiVzlrWlRvZ0oyOXdaVzRuZlNrS0lDQWdJQ0FnSUNCMGFHbHpMbkp2YjNRdVlYQndaVzVrUTJocGJHUW9kR1Z0Y0d4aGRHVXVZMnh2Ym1WT2IyUmxLSFJ5ZFdVcEtRb2dJQ0FnSUNBZ0lIUm9hWE11WTI5dVptbHliU0E5SUhSb2FYTXVjbTl2ZEM1eGRXVnllVk5sYkdWamRHOXlLQ2NqWTI5dVptbHliU2NwQ2lBZ0lDQWdJQ0FnZEdocGN5NWpZVzVqWld3Z1BTQjBhR2x6TG5KdmIzUXVjWFZsY25sVFpXeGxZM1J2Y2lnbkkyTmhibU5sYkNjcENpQWdJQ0FnSUNBZ2RHaHBjeTVwYm5CMWRDQTlJSFJvYVhNdWNtOXZkQzV4ZFdWeWVWTmxiR1ZqZEc5eUtDZHBibkIxZENjcENpQWdJQ0FnSUNBZ2RHaHBjeTVsY25KdmNpQTlJSFJvYVhNdWNtOXZkQzV4ZFdWeWVWTmxiR1ZqZEc5eUtDY2paWEp5YjNJbktRb2dJQ0FnSUNBZ0lIUm9hWE11YUdWaFpHVnlJRDBnZEdocGN5NXliMjkwTG5GMVpYSjVVMlZzWldOMGIzSW9KeU5vWldGa1pYSW5LUW9nSUNBZ0lDQWdJSFJvYVhNdWNERWdQU0IwYUdsekxuSnZiM1F1Y1hWbGNubFRaV3hsWTNSdmNpZ25JM0F4SnlrS0lDQWdJQ0FnSUNCMGFHbHpMbkF5SUQwZ2RHaHBjeTV5YjI5MExuRjFaWEo1VTJWc1pXTjBiM0lvSnlOd01pY3BDaUFnSUNBZ0lDQWdkR2hwY3k1clpYa2dQU0J1ZFd4c0NpQWdJQ0FnSUNBZ2RHaHBjeTVwY0dNZ1BTQnVkV3hzQ2dvZ0lDQWdJQ0FnSUhSb2FYTXVZMkZ1WTJWc0xtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb0oyTnNhV05ySnl3Z1lYTjVibU1nS0NrZ1BUNGdld29nSUNBZ0lDQWdJQ0FnWVhkaGFYUWdjblZ1ZEdsdFpTNWhjSEF1WTJ4dmMyVW9LUW9nSUNBZ0lDQWdJSDBwQ2lBZ0lDQWdJSDBLQ2lBZ0lDQWdJQ04xY0dSaGRHVWdLQ2tnZXdvZ0lDQWdJQ0FnSUhSb2FYTXVhR1ZoWkdWeUxtbHVibVZ5VkdWNGRDQTlJSFJvYVhNdVpHRjBZWE5sZEM1b1pXRmtaWElLSUNBZ0lDQWdJQ0IwYUdsekxuQXhMbWx1Ym1WeVZHVjRkQ0E5SUhSb2FYTXVaR0YwWVhObGRDNXdNUW9nSUNBZ0lDQWdJSFJvYVhNdWNESXVhVzV1WlhKSVZFMU1JRDBnZEdocGN5NWtZWFJoYzJWMExuQXlDaUFnSUNBZ0lDQWdkR2hwY3k1cGJuQjFkQzV3YkdGalpXaHZiR1JsY2lBOUlIUm9hWE11WkdGMFlYTmxkQzV3YkdGalpXaHZiR1JsY2dvZ0lDQWdJQ0I5Q2dvZ0lDQWdJQ0JuWlhRZ2IzQjBhVzl1Y3lBb0tTQjdDaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WkdGMFlYTmxkQW9nSUNBZ0lDQjlDZ29nSUNBZ0lDQnpaWFFnYjNCMGFXOXVjeUFvYjNCMGN5a2dld29nSUNBZ0lDQWdJRTlpYW1WamRDNWhjM05wWjI0b2RHaHBjeTVrWVhSaGMyVjBMQ0J2Y0hSektRb2dJQ0FnSUNBZ0lIUm9hWE11STNWd1pHRjBaU2dwQ2lBZ0lDQWdJSDBLQ2lBZ0lDQWdJSE5sZEV4cGJtc2dLR3hwYm1zcElIc0tJQ0FnSUNBZ0lDQjBhR2x6TG5KdmIzUXVjWFZsY25sVFpXeGxZM1J2Y2lnbkkydGxlU2NwTG1sdWJtVnlWR1Y0ZENBOUlHeHBibXNLSUNBZ0lDQWdmUW9nSUNBZ2ZRb2dJRHd2YzJOeWFYQjBQZ29nSUR4a2FYWWdhV1E5SW1KaGNpSStDaUFnSUNBOFpHbDJJR2xrUFNKM2FXNHRZM1J5YkNJK0NpQWdJQ0FnSUR4a2FYWWdhV1E5SW5kcGJpMXRhVzRpSUdOc1lYTnpQU0ozYVc0dFkzUnliQ0krQ2lBZ0lDQWdJQ0FnUEhOMlp5QjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNaUlnZG1sbGQwSnZlRDBpTUNBd0lERTRJRElpSUdacGJHdzlJbTV2Ym1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK0NpQWdJQ0FnSUNBZ0lDQThjR0YwYUNCa1BTSk5NQ0F3TGpVMk1qVkRNQ0F3TGpJNE1USTFJREF1TWpRMk1EazBJREFnTUM0MU5qSTFJREJJTVRjdU5ETTNOVU14Tnk0M01UZzRJREFnTVRnZ01DNHlPREV5TlNBeE9DQXdMalUyTWpWRE1UZ2dNQzQ0TnpnNU1EWWdNVGN1TnpFNE9DQXhMakV5TlNBeE55NDBNemMxSURFdU1USTFTREF1TlRZeU5VTXdMakkwTmpBNU5DQXhMakV5TlNBd0lEQXVPRGM0T1RBMklEQWdNQzQxTmpJMVdpSWdabWxzYkQwaWQyaHBkR1VpTHo0S0lDQWdJQ0FnSUNBOEwzTjJaejRLSUNBZ0lDQWdQQzlrYVhZK0NpQWdJQ0FnSUR4a2FYWWdhV1E5SW5kcGJpMXRZWGdpSUdOc1lYTnpQU0ozYVc0dFkzUnliQ0krQ2lBZ0lDQWdJQ0FnUEhOMlp5QjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGNpSUhacFpYZENiM2c5SWpBZ01DQXhPQ0F4TnlJZ1ptbHNiRDBpYm05dVpTSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklqNEtJQ0FnSUNBZ0lDQWdJRHh3WVhSb0lHUTlJazB3SURJdU5qSTFRekFnTVM0ek9UUTFNeUF3TGprNE5ETTNOU0F3TGpNM05TQXlMakkxSURBdU16YzFTREUxTGpjMVF6RTJMams0TURVZ01DNHpOelVnTVRnZ01TNHpPVFExTXlBeE9DQXlMall5TlZZeE15NDROelZETVRnZ01UVXVNVFF3TmlBeE5pNDVPREExSURFMkxqRXlOU0F4TlM0M05TQXhOaTR4TWpWSU1pNHlOVU13TGprNE5ETTNOU0F4Tmk0eE1qVWdNQ0F4TlM0eE5EQTJJREFnTVRNdU9EYzFWakl1TmpJMVdrMHhMakV5TlNBeUxqWXlOVlkyU0RFMkxqZzNOVll5TGpZeU5VTXhOaTQ0TnpVZ01pNHdNamN6TkNBeE5pNHpORGMzSURFdU5TQXhOUzQzTlNBeExqVklNaTR5TlVNeExqWXhOekU1SURFdU5TQXhMakV5TlNBeUxqQXlOek0wSURFdU1USTFJREl1TmpJMVdrMHhMakV5TlNBM0xqRXlOVll4TXk0NE56VkRNUzR4TWpVZ01UUXVOVEEzT0NBeExqWXhOekU1SURFMUlESXVNalVnTVRWSU1UVXVOelZETVRZdU16UTNOeUF4TlNBeE5pNDROelVnTVRRdU5UQTNPQ0F4Tmk0NE56VWdNVE11T0RjMVZqY3VNVEkxU0RFdU1USTFXaUlnWm1sc2JEMGlkMmhwZEdVaUx6NEtJQ0FnSUNBZ0lDQThMM04yWno0S0lDQWdJQ0FnUEM5a2FYWStDaUFnSUNBZ0lEeGthWFlnYVdROUluZHBiaTF5WlhOMGIzSmxJaUJqYkdGemN6MGlkMmx1TFdOMGNtd2lQZ29nSUNBZ0lDQWdJRHh6ZG1jZ2QybGtkR2c5SWpFNElpQm9aV2xuYUhROUlqRTVJaUIyYVdWM1FtOTRQU0l3SURBZ01UZ2dNVGtpSUdacGJHdzlJbTV2Ym1VaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK0NpQWdJQ0FnSUNBZ0lDQThjR0YwYUNCa1BTSk5NVFV1TVRnM05TQXhMak0zTlVnM0xqTXhNalZETmk0ek5qTXlPQ0F4TGpNM05TQTFMall5TlNBeUxqRTBPRFEwSURVdU5qSTFJRE11TURZeU5WWXpMall5TlVnMExqVldNeTR3TmpJMVF6UXVOU0F4TGpVeE5UWXlJRFV1TnpNd05EY2dNQzR5TlNBM0xqTXhNalVnTUM0eU5VZ3hOUzR4T0RjMVF6RTJMamN6TkRRZ01DNHlOU0F4T0NBeExqVXhOVFl5SURFNElETXVNRFl5TlZZeE1DNDVNemMxUXpFNElERXlMalV4T1RVZ01UWXVOek0wTkNBeE15NDNOU0F4TlM0eE9EYzFJREV6TGpjMVNERTBMall5TlZZeE1pNDJNalZJTVRVdU1UZzNOVU14Tmk0eE1ERTJJREV5TGpZeU5TQXhOaTQ0TnpVZ01URXVPRGcyTnlBeE5pNDROelVnTVRBdU9UTTNOVll6TGpBMk1qVkRNVFl1T0RjMUlESXVNVFE0TkRRZ01UWXVNVEF4TmlBeExqTTNOU0F4TlM0eE9EYzFJREV1TXpjMVdrMHhNUzR5TlNBMExqYzFRekV5TGpRNE1EVWdOQzQzTlNBeE15NDFJRFV1TnpZNU5UTWdNVE11TlNBM1ZqRTJRekV6TGpVZ01UY3VNalkxTmlBeE1pNDBPREExSURFNExqSTFJREV4TGpJMUlERTRMakkxU0RJdU1qVkRNQzQ1T0RRek56VWdNVGd1TWpVZ01DQXhOeTR5TmpVMklEQWdNVFpXTjBNd0lEVXVOelk1TlRNZ01DNDVPRFF6TnpVZ05DNDNOU0F5TGpJMUlEUXVOelZJTVRFdU1qVmFUVEV4TGpJMUlEVXVPRGMxU0RJdU1qVkRNUzQyTVRjeE9TQTFMamczTlNBeExqRXlOU0EyTGpRd01qTTBJREV1TVRJMUlEZFdPUzR5TlVneE1pNHpOelZXTjBNeE1pNHpOelVnTmk0ME1ESXpOQ0F4TVM0NE5EYzNJRFV1T0RjMUlERXhMakkxSURVdU9EYzFXazB5TGpJMUlERTNMakV5TlVneE1TNHlOVU14TVM0NE5EYzNJREUzTGpFeU5TQXhNaTR6TnpVZ01UWXVOak15T0NBeE1pNHpOelVnTVRaV01UQXVNemMxU0RFdU1USTFWakUyUXpFdU1USTFJREUyTGpZek1qZ2dNUzQyTVRjeE9TQXhOeTR4TWpVZ01pNHlOU0F4Tnk0eE1qVmFJaUJtYVd4c1BTSjNhR2wwWlNJdlBnb2dJQ0FnSUNBZ0lEd3ZjM1puUGdvZ0lDQWdJQ0E4TDJScGRqNEtJQ0FnSUNBZ1BHUnBkaUJwWkQwaWQybHVMV05zYjNObElpQmpiR0Z6Y3owaWQybHVMV04wY213aVBnb2dJQ0FnSUNBZ0lEeHpkbWNnYVdROUluZHBiaTFqYkc5elpTSWdkMmxrZEdnOUlqRTJJaUJvWldsbmFIUTlJakUzSWlCMmFXVjNRbTk0UFNJd0lEQWdNVFlnTVRjaUlHWnBiR3c5SW01dmJtVWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SStDaUFnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTVRRdU9Ea3dOaUF3TGpVMU1EYzRNVU14TlM0eE1ERTJJREF1TXpNNU9EUTBJREUxTGpRNE9ETWdNQzR6TXprNE5EUWdNVFV1TmprNU1pQXdMalUxTURjNE1VTXhOUzQ1TVRBeUlEQXVOell4TnpFNUlERTFMamt4TURJZ01TNHhORGcwTkNBeE5TNDJPVGt5SURFdU16VTVNemhNT0M0M056TTBOQ0E0TGpJMVRERTFMalk1T1RJZ01UVXVNVGMxT0VNeE5TNDVNVEF5SURFMUxqTTROamNnTVRVdU9URXdNaUF4TlM0M056TTBJREUxTGpZNU9USWdNVFV1T1RnME5FTXhOUzQwT0RneklERTJMakU1TlRNZ01UVXVNVEF4TmlBeE5pNHhPVFV6SURFMExqZzVNRFlnTVRVdU9UZzBORXc0SURrdU1EVTROVGxNTVM0d056UXlNaUF4TlM0NU9EUTBRekF1T0RZek1qZ3hJREUyTGpFNU5UTWdNQzQwTnpZMU5qSWdNVFl1TVRrMU15QXdMakkyTlRZeU5TQXhOUzQ1T0RRMFF6QXVNRFUwTmpnM05TQXhOUzQzTnpNMElEQXVNRFUwTmpnM05TQXhOUzR6T0RZM0lEQXVNalkxTmpJMUlERTFMakUzTlRoTU55NHhPVEUwTVNBNExqSTFUREF1TWpZMU5qSTFJREV1TXpVNU16aERNQzR3TlRRMk9EYzFJREV1TVRRNE5EUWdNQzR3TlRRMk9EYzFJREF1TnpZeE56RTVJREF1TWpZMU5qSTFJREF1TlRVd056Z3hRekF1TkRjMk5UWXlJREF1TXpNNU9EUTBJREF1T0RZek1qZ3hJREF1TXpNNU9EUTBJREV1TURjME1qSWdNQzQxTlRBM09ERk1PQ0EzTGpRM05qVTJUREUwTGpnNU1EWWdNQzQxTlRBM09ERmFJaUJtYVd4c1BTSjNhR2wwWlNJdlBnb2dJQ0FnSUNBZ0lEd3ZjM1puUGdvZ0lDQWdJQ0E4TDJScGRqNEtJQ0FnSUR3dlpHbDJQZ29nSUNBZ1BITmpjbWx3ZENCMGVYQmxQU0p0YjJSMWJHVWlQZ29nSUNBZ0lDQmtiMk4xYldWdWRDNXhkV1Z5ZVZObGJHVmpkRzl5S0NjalltRnlKeWt1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWduWkdKc1kyeHBZMnNuTENCaGMzbHVZeUFvWlhaMEtTQTlQaUI3Q2lBZ0lDQWdJQ0FnYVdZZ0tHVjJkQzUwWVhKblpYUWdJVDA5SUdWMmRDNWpkWEp5Wlc1MFZHRnlaMlYwS1NCeVpYUjFjbTRLSUNBZ0lDQWdJQ0JwWmlBb1lYZGhhWFFnY25WdWRHbHRaUzVoY0hBdWFYTk5ZWGhwYldsNlpXUW9LU2tnWVhkaGFYUWdjblZ1ZEdsdFpTNWhjSEF1Y21WemRHOXlaU2dwQ2lBZ0lDQWdJQ0FnWld4elpTQmhkMkZwZENCeWRXNTBhVzFsTG1Gd2NDNXRZWGhwYldsNlpTZ3BDaUFnSUNBZ0lIMHBDaUFnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbkJzWVhSbWIzSnRJRDA5UFNBbmQybHVNekluS1NCN0NpQWdJQ0FnSUNBZ1pHOWpkVzFsYm5RdWNYVmxjbmxUWld4bFkzUnZjaWduSTNkcGJpMXRhVzRuS1M1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S0NkamJHbGpheWNzSUdGemVXNWpJQ2dwSUQwK0lIc2dZWGRoYVhRZ2NuVnVkR2x0WlM1aGNIQXViV2x1YVcxcGVtVW9LU0I5S1FvZ0lDQWdJQ0FnSUdSdlkzVnRaVzUwTG5GMVpYSjVVMlZzWldOMGIzSW9KeU4zYVc0dGJXRjRKeWt1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWduWTJ4cFkyc25MQ0JoYzNsdVl5QW9LU0E5UGlCN0NpQWdJQ0FnSUNBZ0lDQmhkMkZwZENCeWRXNTBhVzFsTG1Gd2NDNXRZWGhwYldsNlpTZ3BDaUFnSUNBZ0lDQWdJQ0JrYjJOMWJXVnVkQzV4ZFdWeWVWTmxiR1ZqZEc5eUtDY2pkMmx1TFdOMGNtd25LUzVqYkdGemMweHBjM1F1WVdSa0tDZHRZWGduS1FvZ0lDQWdJQ0FnSUgwcENpQWdJQ0FnSUNBZ1pHOWpkVzFsYm5RdWNYVmxjbmxUWld4bFkzUnZjaWduSTNkcGJpMXlaWE4wYjNKbEp5a3VZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ25ZMnhwWTJzbkxDQmhjM2x1WXlBb0tTQTlQaUI3Q2lBZ0lDQWdJQ0FnSUNCaGQyRnBkQ0J5ZFc1MGFXMWxMbUZ3Y0M1eVpYTjBiM0psS0NrS0lDQWdJQ0FnSUNBZ0lHUnZZM1Z0Wlc1MExuRjFaWEo1VTJWc1pXTjBiM0lvSnlOM2FXNHRZM1J5YkNjcExtTnNZWE56VEdsemRDNXlaVzF2ZG1Vb0oyMWhlQ2NwQ2lBZ0lDQWdJQ0FnZlNrS0lDQWdJQ0FnZlFvZ0lDQWdQQzl6WTNKcGNIUStDaUFnUEM5a2FYWStDaUFnUEdSbFkyRnNMWEpsY0c5eWRENEtJQ0FnSUR4emNHRnVJSE5zYjNROUltaGxZV1JzYVc1bElqNDhMM053WVc0K0NpQWdJQ0E4YzNCaGJpQnpiRzkwUFNKMFlXZHNhVzVsSWo0OEwzTndZVzQrQ2lBZ0lDQThjM0JoYmlCemJHOTBQU0pqZEdFaVBqd3ZjM0JoYmo0S0lDQWdJRHgwWlcxd2JHRjBaU0JwWkQwaVpHVmpZV3d0Y21Wd2IzSjBMWFJ0Y0d3aVBnb2dJQ0FnSUNBOGMzUjViR1UrQ2lBZ0lDQWdJQ0FnSTNOMFlYUjFjeUI3Q2lBZ0lDQWdJQ0FnSUNCa2FYTndiR0Y1T2lCdWIyNWxPd29nSUNBZ0lDQWdJQ0FnWTI5c2IzSTZJSGRvYVhSbE93b2dJQ0FnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dNbVZ0T3dvZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNBamFHVmhaR3hwYm1VZ2V3b2dJQ0FnSUNBZ0lDQWdabTl1ZEMxM1pXbG5hSFE2SURjd01Ec0tJQ0FnSUNBZ0lDQWdJR1p2Ym5RdFptRnRhV3g1T2lBbmIzWmxjbkJoYzNNbk93b2dJQ0FnSUNBZ0lDQWdabTl1ZEMxemFYcGxPaUF5WlcwN0NpQWdJQ0FnSUNBZ0lDQnRZWEpuYVc0dGRHOXdPaUF5TUhab093b2dJQ0FnSUNBZ0lDQWdiV0Z5WjJsdUxXSnZkSFJ2YlRvZ01DNDJaVzA3Q2lBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNOMFlXZHNhVzVsSUhzS0lDQWdJQ0FnSUNBZ0lHWnZiblF0Wm1GdGFXeDVPaUFuVDNCbGJpQlRZVzV6SnpzS0lDQWdJQ0FnSUNBZ0lHWnZiblF0YzJsNlpUb2dMamczTldWdE93b2dJQ0FnSUNBZ0lDQWdabTl1ZEMxM1pXbG5hSFE2SURRd01Ec0tJQ0FnSUNBZ0lDQWdJRzFoY21kcGJpMWliM1IwYjIwNklESmxiVHNLSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSTJOMFlTQjdDaUFnSUNBZ0lDQWdJQ0JtYjI1MExXWmhiV2xzZVRvZ0owOXdaVzRnVTJGdWN5YzdDaUFnSUNBZ0lDQWdJQ0JqZFhKemIzSTZJSEJ2YVc1MFpYSTdDaUFnSUNBZ0lDQWdJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQTRjSGc3Q2lBZ0lDQWdJQ0FnSUNCb1pXbG5hSFE2SURRMGNIZzdDaUFnSUNBZ0lDQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE93b2dJQ0FnSUNBZ0lDQWdaR2x6Y0d4aGVUb2dhVzVzYVc1bExXSnNiMk5yT3dvZ0lDQWdJQ0FnSUNBZ1ptOXVkQzEzWldsbmFIUTZJRGN3TURzS0lDQWdJQ0FnSUNBZ0lHWnZiblF0YzJsNlpUb2dNVFJ3ZURzS0lDQWdJQ0FnSUNBZ0lIQmhaR1JwYm1jNklESTRjSGc3Q2lBZ0lDQWdJQ0FnSUNCdFlYSm5hVzR0ZEc5d09pQXlOSEI0T3dvZ0lDQWdJQ0FnSUNBZ1kyOXNiM0k2SUhKblltRW9NamtzSURFeE1Dd2dPRE1zSURFcE93b2dJQ0FnSUNBZ0lDQWdZbUZqYTJkeWIzVnVaRG9nSXprMVJUWkRRanNLSUNBZ0lDQWdJQ0FnSUdKaFkydGtjbTl3TFdacGJIUmxjam9nWW14MWNpZzBPSEI0S1RzS0lDQWdJQ0FnSUNBZ0lIZHBaSFJvT2lCaGRYUnZPd29nSUNBZ0lDQWdJQ0FnYkdsdVpTMW9aV2xuYUhRNklEQTdDaUFnSUNBZ0lDQWdJQ0JpYjNKa1pYSTZJRzV2Ym1VN0NpQWdJQ0FnSUNBZ0lDQnZkWFJzYVc1bE9pQnViMjVsT3dvZ0lDQWdJQ0FnSUNBZ2JHVjBkR1Z5TFhOd1lXTnBibWM2SURBdU5uQjRPd29nSUNBZ0lDQWdJSDBLSUNBZ0lDQWdQQzl6ZEhsc1pUNEtJQ0FnSUNBZ1BHUnBkaUJwWkQwaWMzUmhkSFZ6SWo0S0lDQWdJQ0FnSUNBOFpHbDJJR2xrUFNKb1pXRmtiR2x1WlNJK0NpQWdJQ0FnSUNBZ0lDQThjMnh2ZENCdVlXMWxQU0pvWldGa2JHbHVaU0krU0VWQlJFeEpUa1U4TDNOc2IzUStDaUFnSUNBZ0lDQWdQQzlrYVhZK0Nnb2dJQ0FnSUNBZ0lEeGthWFlnYVdROUluUmhaMnhwYm1VaVBnb2dJQ0FnSUNBZ0lDQWdQSE5zYjNRZ2JtRnRaVDBpZEdGbmJHbHVaU0krVkVGSFRFbE9SVHd2YzJ4dmRENEtJQ0FnSUNBZ0lDQThMMlJwZGo0S0NpQWdJQ0FnSUNBZ1BHSjFkSFJ2YmlCcFpEMGlZM1JoSWo0OGMyeHZkQ0J1WVcxbFBTSmpkR0VpUGtOVVFUd3ZjMnh2ZEQ0OEwySjFkSFJ2Ymo0S0lDQWdJQ0FnUEM5a2FYWStDaUFnSUNBOEwzUmxiWEJzWVhSbFBnb2dJQ0FnUEhOamNtbHdkQ0IwZVhCbFBTSnRiMlIxYkdVaVBnb2dJQ0FnSUNCamRYTjBiMjFGYkdWdFpXNTBjeTVrWldacGJtVW9KMlJsWTJGc0xYSmxjRzl5ZENjc0lHTnNZWE56SUdWNGRHVnVaSE1nU0ZSTlRFVnNaVzFsYm5RZ2V3b2dJQ0FnSUNBZ0lHbHdZeUE5SUVSRlEwRk1MbWx3WXdvZ0lDQWdJQ0FnSUhOMFlYUjFjeUE5SUc1MWJHd0tJQ0FnSUNBZ0lDQnpkR0YwYVdNZ1oyVjBJRzlpYzJWeWRtVmtRWFIwY21saWRYUmxjeWdwSUhzZ2NtVjBkWEp1SUZzbmMyaHZkeWNzSUNkaFkzUnBiMjRuWFNCOUNpQWdJQ0FnSUNBZ1lYUjBjbWxpZFhSbFEyaGhibWRsWkVOaGJHeGlZV05yS0c1aGJXVXNJSEJ5YVc5eUxDQjJZV3gxWlNrZ2V3b2dJQ0FnSUNBZ0lDQWdhV1lnS0c1aGJXVWdQVDA5SUNkemFHOTNKeWtnZXdvZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZG1Gc2RXVXBJSFJvYVhNdWMyaGhaRzkzVW05dmRDNXhkV1Z5ZVZObGJHVmpkRzl5S0NjamMzUmhkSFZ6SnlrdWMzUjViR1V1WkdsemNHeGhlU0E5SUNkaWJHOWpheWNLSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0IwYUdsekxuTm9ZV1J2ZDFKdmIzUXVjWFZsY25sVFpXeGxZM1J2Y2lnbkkzTjBZWFIxY3ljcExuTjBlV3hsTG1ScGMzQnNZWGtnUFNBbkp3b2dJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnYVdZZ0tHNWhiV1VnUFQwOUlDZGhZM1JwYjI0bktTQjdDaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR04wWVNBOUlIUm9hWE11YzJoaFpHOTNVbTl2ZEM1eGRXVnllVk5sYkdWamRHOXlLQ2NqWTNSaEp5a0tJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZMjlrWlNBOUlDaDJZV3gxWlNBOVBUMGdKM0psYkc5aFpDY3BJRDhnTmpRZ09pQXdDaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR2hoYm1Sc1pYSWdQU0FvZG1Gc2RXVWdQVDA5SUNkeGRXbDBKeUI4ZkNCMllXeDFaU0E5UFQwZ0ozSmxiRzloWkNjcElEOEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBb0tTQTlQaUJRWldGeUxtVjRhWFFvWTI5a1pTa2dPZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDZ3BJRDArSUh0OUNpQWdJQ0FnSUNBZ0lDQWdJR04wWVM1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S0NkamJHbGpheWNzSUdoaGJtUnNaWElwQ2lBZ0lDQWdJQ0FnSUNCOUNpQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lITm9iM2NnS0hSNWNHVXBJSHNnZEdocGN5NXpaWFJCZEhSeWFXSjFkR1VvSW5Ob2IzY2lMQ0IwZVhCbEtTQjlDaUFnSUNBZ0lDQWdhR2xrWlNBb0tTQjdJSFJvYVhNdWMyVjBRWFIwY21saWRYUmxLQ0p6YUc5M0lpd2dJaUlwSUgwS0lDQWdJQ0FnSUNCaGMzbHVZeUJ6ZFdKelkzSnBZbVVnS0dsd1l5d2diRzloWkdWeUtTQjdDaUFnSUNBZ0lDQWdJQ0IwYUdsekxtbHdZeUE5SUdsd1l3b2dJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2NtVndiM0owY3lBOUlHbHdZeTV5WlhCdmNuUnpLQ2tLSUNBZ0lDQWdJQ0FnSUdadmNpQmhkMkZwZENBb1kyOXVjM1FnY21Wd2IzSjBJRzltSUhKbGNHOXlkSE1wSUhzS0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1emRHRjBkWE1nUFNCeVpYQnZjblFLSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVuYVdRZ1BTQnlkVzUwYVcxbExtRndjQzVwWkFvZ0lDQWdJQ0FnSUNBZ0lDQnNiMkZrWlhJdWFHbGtaU2dwQ2lBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhzZ2RIbHdaU3dnYUdWaFpHeHBibVVzSUhSaFoyeHBibVVzSUdOMFlTd2dhMlY1TENCbGJtTnllWEIwWldRZ2ZTQTlJSFJvYVhNdWMzUmhkSFZ6Q2lBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbElEMDlQU0FuZFhCa1lYUmxKeUFtSmlCMGFHbHpMbk4wWVhSMWN5NTJaWEp6YVc5dVB5NW1iM0pqWlNrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUdGM1lXbDBJR3h2WVdSbGNpNTFjR1JoZEdsdVp5aDBhR2x6TG5OMFlYUjFjeTUyWlhKemFXOXVLUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZiblJwYm5WbENpQWdJQ0FnSUNBZ0lDQWdJSDBLQ2lBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Y1hWbGNubFRaV3hsWTNSdmNpZ25XM05zYjNROUltaGxZV1JzYVc1bElsMG5LUzVwYm01bGNraFVUVXdnUFNCb1pXRmtiR2x1WlM1amIyNTBaVzUwQ2lBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Y1hWbGNubFRaV3hsWTNSdmNpZ25XM05zYjNROUluUmhaMnhwYm1VaVhTY3BMbWx1Ym1WeVNGUk5UQ0E5SUhSaFoyeHBibVV1WTI5dWRHVnVkQW9nSUNBZ0lDQWdJQ0FnSUNCcFppQW9ZM1JoS1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXhkV1Z5ZVZObGJHVmpkRzl5S0NkYmMyeHZkRDBpWTNSaElsMG5LUzVwYm01bGNraFVUVXdnUFNCamRHRXVZMjl1ZEdWdWRBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVjMlYwUVhSMGNtbGlkWFJsS0NKaFkzUnBiMjRpTENCamRHRXVZV04wYVc5dUtRb2dJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdld29nSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Y1hWbGNubFRaV3hsWTNSdmNpZ25XM05zYjNROUltTjBZU0pkSnlrdWFXNXVaWEpJVkUxTUlEMGdKeWNLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb0tJQ0FnSUNBZ0lDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1cGNHTXVaR1YwWVdOb1RXRnBibFpwWlhjb2V5QnBaRG9nZEdocGN5NW5hV1FnZlNrS0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2QybHVZM1J5YkNBOUlHUnZZM1Z0Wlc1MExtZGxkRVZzWlcxbGJuUkNlVWxrS0NkM2FXNWtiM2R6TFdOdmJuUnliMnh6SnlrS0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGM2FXNWpkSEpzS1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdaR2wySUQwZ1pHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2duWkdsMkp5a0tJQ0FnSUNBZ0lDQWdJQ0FnSUNCa2FYWXVhV1FnUFNBbmQybHVaRzkzY3kxamIyNTBjbTlzY3ljS0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrYVhZdVlYQndaVzVrUTJocGJHUW9aRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnbmNHVmhjaTFqZEhKc0p5a3BDaUFnSUNBZ0lDQWdJQ0FnSUNBZ1pHOWpkVzFsYm5RdVltOWtlUzV3Y21Wd1pXNWtLR1JwZGlrS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbk5vYjNjb2RIbHdaU2tLSUNBZ0lDQWdJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NXBjR011WkdWMFlXTm9UV0ZwYmxacFpYY29leUJwWkRvZ2RHaHBjeTVuYVdRZ2ZTa0tJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0I5Q2dvZ0lDQWdJQ0FnSUdOdmJuTjBjblZqZEc5eUlDZ3BJSHNLSUNBZ0lDQWdJQ0FnSUhOMWNHVnlLQ2tLSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhWEJqSUQwZ1JFVkRRVXd1YVhCakNpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCMFpXMXdiR0YwWlNBOUlHUnZZM1Z0Wlc1MExuRjFaWEo1VTJWc1pXTjBiM0lvSnlOa1pXTmhiQzF5WlhCdmNuUXRkRzF3YkNjcExtTnZiblJsYm5RS0lDQWdJQ0FnSUNBZ0lIUm9hWE11WVhSMFlXTm9VMmhoWkc5M0tIdHRiMlJsT2lBbmIzQmxiaWQ5S1M1aGNIQmxibVJEYUdsc1pDaDBaVzF3YkdGMFpTNWpiRzl1WlU1dlpHVW9kSEoxWlNrcENpQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNCOUtRb2dJQ0FnUEM5elkzSnBjSFErQ2lBZ1BDOWtaV05oYkMxeVpYQnZjblErQ2lBZ1BHUmxZMkZzTFd4dllXUmxjajRLSUNBZ0lEeHpjR0Z1SUhOc2IzUTlJblZ3WkdGMFpTMXNaVzVuZEdnaVBqd3ZjM0JoYmo0S0lDQWdJRHh6Y0dGdUlITnNiM1E5SW5kb1pXNGlQand2YzNCaGJqNEtJQ0FnSUR4MFpXMXdiR0YwWlNCcFpEMGlaR1ZqWVd3dGJHOWhaR1Z5TFhSdGNHd2lQZ29nSUNBZ0lDQThjM1I1YkdVK0NpQWdJQ0FnSUNBZ0kyeHZZV1JsY2lCN0NpQWdJQ0FnSUNBZ0lDQmthWE53YkdGNU9pQnViMjVsT3dvZ0lDQWdJQ0FnSUgwS0NpQWdJQ0FnSUNBZ0kyeHZZV1JsY2lCN0NpQWdJQ0FnSUNBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdDaUFnSUNBZ0lDQWdJQ0JzWldaME9pQXdPd29nSUNBZ0lDQWdJQ0FnY21sbmFIUTZJREE3Q2lBZ0lDQWdJQ0FnSUNCM2FXUjBhRG9nTVRBd0pUc0tJQ0FnSUNBZ0lDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanNLSUNBZ0lDQWdJQ0FnSUhSdmNEb2dOVEFsT3dvZ0lDQWdJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQjBjbUZ1YzJ4aGRHVlpLQzAxTUNVcE93b2dJQ0FnSUNBZ0lIMEtDaUFnSUNBZ0lDQWdJMnh2WjI4Z2V3b2dJQ0FnSUNBZ0lDQWdZVzVwYldGMGFXOXVPaUJpWldGMElERXVNWE1nYVc1bWFXNXBkR1VnYm05eWJXRnNPd29nSUNBZ0lDQWdJQ0FnZEhKaGJuTm1iM0p0TFc5eWFXZHBiam9nWTJWdWRHVnlPd29nSUNBZ0lDQWdJQ0FnWkdsemNHeGhlVG9nWW14dlkyczdDaUFnSUNBZ0lDQWdJQ0J0WVhKbmFXNDZJR0YxZEc4N0NpQWdJQ0FnSUNBZ2ZRb0tJQ0FnSUNBZ0lDQkFhMlY1Wm5KaGJXVnpJR0psWVhRZ2V3b2dJQ0FnSUNBZ0lDQWdNVFVsSUhzS0lDQWdJQ0FnSUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUJ6WTJGc1pTZ3hMakV5S1RzS0lDQWdJQ0FnSUNBZ0lIMEtDaUFnSUNBZ0lDQWdJQ0F6TUNVZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0IwY21GdWMyWnZjbTA2SUhOallXeGxLREV1TUNrN0NpQWdJQ0FnSUNBZ0lDQjlDZ29nSUNBZ0lDQWdJQ0FnTkRNbElIc0tJQ0FnSUNBZ0lDQWdJQ0FnZEhKaGJuTm1iM0p0T2lCelkyRnNaU2d4TGpBMUtUc0tJQ0FnSUNBZ0lDQWdJSDBLQ2lBZ0lDQWdJQ0FnSUNBMk55VWdld29nSUNBZ0lDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wNklITmpZV3hsS0RFdU1DazdDaUFnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnZlFvS0lDQWdJQ0FnSUNBamRYQmtZWFJsSUhzS0lDQWdJQ0FnSUNBZ0lHUnBjM0JzWVhrNklHNXZibVU3Q2lBZ0lDQWdJQ0FnSUNCdFlYSm5hVzQ2SURBZ1lYVjBienNLSUNBZ0lDQWdJQ0FnSUcxaGNtZHBiaTFpYjNSMGIyMDZJQzAwWlcwN0NpQWdJQ0FnSUNBZ0lDQmpiMnh2Y2pvZ0kyWm1aanNLSUNBZ0lDQWdJQ0FnSUhCaFpHUnBibWM2SURod2VEc0tJQ0FnSUNBZ0lDQWdJSEJ2YzJsMGFXOXVPaUJtYVhobFpEc0tJQ0FnSUNBZ0lDQWdJR0p2ZEhSdmJUb2dNRHNLSUNBZ0lDQWdJQ0FnSUd4bFpuUTZJREE3Q2lBZ0lDQWdJQ0FnSUNCbWIyNTBMWE5wZW1VNklEQXVPV1Z0T3dvZ0lDQWdJQ0FnSUNBZ2NHRmtaR2x1WnkxaWIzUjBiMjA2SURabGJUc0tJQ0FnSUNBZ0lDQWdJSEJoWkdScGJtY3RiR1ZtZERvZ00yVnRPd29nSUNBZ0lDQWdJQ0FnZDJsa2RHZzZJRFV3SlRzS0lDQWdJQ0FnSUNBZ0lHMXBiaTEzYVdSMGFEb2dOakF3Y0hnN0NpQWdJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMDZJSFJ5WVc1emJHRjBaVmtvTVRRd0pTazdDaUFnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ04xY0dSaGRHVWdhRElnZXdvZ0lDQWdJQ0FnSUNBZ2JXRnlaMmx1TFdKdmRIUnZiVG9nTGpWeVpXMDdDaUFnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ04xY0dSaGRHVWdkR2dnZXdvZ0lDQWdJQ0FnSUNBZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN0NpQWdJQ0FnSUNBZ0lDQjBaWGgwTFdGc2FXZHVPaUJzWldaME93b2dJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWpkWEJrWVhSbElIUmtPbVpwY25OMExXTm9hV3hrSUhzS0lDQWdJQ0FnSUNBZ0lIUmxlSFF0WVd4cFoyNDZJSEpwWjJoME93b2dJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWpkWEJrWVhSbElIUmtPbTUwYUMxamFHbHNaQ2d5S1NCN0NpQWdJQ0FnSUNBZ0lDQjBaWGgwTFdGc2FXZHVPaUJzWldaME93b2dJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ1BDOXpkSGxzWlQ0S0lDQWdJQ0FnUEdScGRpQnBaRDBpYkc5aFpHVnlJajRLSUNBZ0lDQWdJQ0E4YzNabklHbGtQU0pzYjJkdklpQjNhV1IwYUQwaU1UQXlJaUJvWldsbmFIUTlJakUwTmlJZ2RtbGxkMEp2ZUQwaU1DQXdJREV3TWlBeE5EWWlJR1pwYkd3OUltNXZibVVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrQ2lBZ0lDQWdJQ0FnSUNBOFp5QmpiR2x3TFhCaGRHZzlJblZ5YkNnalkyeHBjREJmT0RreE1sOHhNRGcyTVNraVBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTkRjdU5EQTFOaUF3TGpnek9ETTNPVWcxTkM0MU9UUXpWakUxTGpBek5qRklORGN1TkRBMU5sWXdMamd6T0RNM09Wb2lJR1pwYkd3OUlpTkNNRVE1TkRRaUx6NEtJQ0FnSUNBZ0lDQWdJQ0FnUEhCaGRHZ2daRDBpVFRRekxqZ3hNVE1nTVRrdU5UTXdOVll5TWk0ME1EWklNell1TmpJeU5sWXlOaTR3TURBMFNEWTFMak0zTnpSV01qSXVOREEyU0RVNExqRTRPRGRXTVRZdU9ETTBOMGcxTVZZeE9TNDFNekExU0RRekxqZ3hNVE5hSWlCbWFXeHNQU0lqUWpCRU9UUTBJaTgrQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHdZWFJvSUdROUlrMDNNaTQxTmpZeUlESTNMamM1TnpSSU5URldNekF1TkRrek1VZ3lPUzQwTXpNNVZqTTJMamsyTTBnM01pNDFOall5VmpJM0xqYzVOelJhSWlCbWFXeHNQU0lqUWpCRU9UUTBJaTgrQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHdZWFJvSUdROUlrMDNPUzQzTlRRNElETTRMamMxT1ROSU5URldOREV1TkRVMVNESXlMakkwTlRGV05EY3VPVEkwT1VnM09TNDNOVFE0VmpNNExqYzFPVE5hSWlCbWFXeHNQU0lqUWpCRU9UUTBJaTgrQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHdZWFJvSUdROUlrMDNPUzQzTlRRNElEUTVMamN5TVRsSU5URldOVEl1TkRFM04wZ3lNaTR5TkRVeFZqVTRMamc0TnpWSU56a3VOelUwT0ZZME9TNDNNakU1V2lJZ1ptbHNiRDBpSTBJd1JEazBOQ0l2UGdvZ0lDQWdJQ0FnSUNBZ0lDQThjR0YwYUNCa1BTSk5PRFl1T1RRek5pQTJNQzQyT0RRMlNEVXhWall6TGpNNE1ETklNVFV1TURVMk5WWTJPUzQ0TlRBeVNEZzJMamswTXpaV05qQXVOamcwTmxvaUlHWnBiR3c5SWlOQ01FUTVORFFpTHo0S0lDQWdJQ0FnSUNBZ0lDQWdQSEJoZEdnZ1pEMGlUVGcyTGprME16WWdOekV1TmpRNE1VZzFNVlkzTkM0ek5ETTRTREUxTGpBMU5qVldPREF1T0RFek4wZzROaTQ1TkRNMlZqY3hMalkwT0RGYUlpQm1hV3hzUFNJalFqQkVPVFEwSWk4K0NpQWdJQ0FnSUNBZ0lDQWdJRHh3WVhSb0lHUTlJazA1TkM0eE16SXpJRGd5TGpZeFNEVXhWamcxTGpNd05UaElOeTQ0TmpjM05GWTVNUzQzTnpVMlNEazBMakV6TWpOV09ESXVOakZhSWlCbWFXeHNQU0lqUWpCRU9UUTBJaTgrQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHdZWFJvSUdROUlrMHhNREV1TXpJeElEa3pMalUzTWpaSU5URldPVFl1TWpZNE5FZ3dMalkzT1RBeE5sWXhNREl1TnpNNFNERXdNUzR6TWpGV09UTXVOVGN5TmxvaUlHWnBiR3c5SWlOQ01FUTVORFFpTHo0S0lDQWdJQ0FnSUNBZ0lDQWdQSEJoZEdnZ1pEMGlUVEV3TVM0ek1qRWdNVEEwTGpVek5rZzFNVll4TURjdU1qTXlTREF1TmpjNU1ERTJWakV4TXk0M01ESklNVEF4TGpNeU1WWXhNRFF1TlRNMldpSWdabWxzYkQwaUkwSXdSRGswTkNJdlBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTVRBeExqTXlNU0F4TVRVdU5EazVTRFV4VmpFeE9DNHhPVFZJTUM0Mk56a3dNVFpXTVRJMExqWTJORWd4TURFdU16SXhWakV4TlM0ME9UbGFJaUJtYVd4c1BTSWpRakJFT1RRMElpOCtDaUFnSUNBZ0lDQWdJQ0FnSUR4d1lYUm9JR1E5SWswNE5pNDVORE0ySURFeU5pNDBOakZJTlRGV01USTVMakUxTmtneE5TNHdOVFkxVmpFek5TNDJNalpJT0RZdU9UUXpObFl4TWpZdU5EWXhXaUlnWm1sc2JEMGlJMEl3UkRrME5DSXZQZ29nSUNBZ0lDQWdJQ0FnSUNBOGNHRjBhQ0JrUFNKTk56SXVOVFkyTWlBeE16Y3VOREkwU0RVeFZqRTBNQzR4TWtneU9TNDBNek01VmpFME5DNDJNVE5JTnpJdU5UWTJNbFl4TXpjdU5ESTBXaUlnWm1sc2JEMGlJMEl3UkRrME5DSXZQZ29nSUNBZ0lDQWdJQ0FnUEM5blBnb2dJQ0FnSUNBZ0lDQWdQR1JsWm5NK0NpQWdJQ0FnSUNBZ0lDQWdJRHhqYkdsd1VHRjBhQ0JwWkQwaVkyeHBjREJmT0RreE1sOHhNRGcyTVNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKbFkzUWdkMmxrZEdnOUlqRXdNQzQyTkRJaUlHaGxhV2RvZEQwaU1UUTFMalUzTVNJZ1ptbHNiRDBpZDJocGRHVWlJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RBdU5qYzVNREUySURBdU1qRTBNak16S1NJdlBnb2dJQ0FnSUNBZ0lDQWdJQ0E4TDJOc2FYQlFZWFJvUGdvZ0lDQWdJQ0FnSUNBZ1BDOWtaV1p6UGdvZ0lDQWdJQ0FnSUR3dmMzWm5QZ29nSUNBZ0lDQWdJRHgwWVdKc1pTQnBaRDBpZFhCa1lYUmxJajRLSUNBZ0lDQWdJQ0FnSUR4MGNqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGRHZ2dZMjlzYzNCaGJqMGlNaUlnYzNSNWJHVTlJbU52Ykc5eU9pQWpPVFZGTmtOQ095SStRWFYwYnlCVmNHUmhkR2x1WnlCMGJ5QThjMnh2ZENCdVlXMWxQU0oxY0dSaGRHVXRiR1Z1WjNSb0lqNDhMM05zYjNRK0xpNHVQQzkwYUQ0S0lDQWdJQ0FnSUNBZ0lEd3ZkSEkrQ2lBZ0lDQWdJQ0FnSUNBOGRISWdhV1E5YUdsdWRENEtJQ0FnSUNBZ0lDQWdJQ0FnUEhSa0lHTnZiSE53WVc0OUlqSWlJSE4wZVd4bFBTSjBaWGgwTFdGc2FXZHVPbXhsWm5RaGFXMXdiM0owWVc1ME8zUmxlSFF0YVc1a1pXNTBPaTR5WlcwaVBrRndjR3hwWTJGMGFXOXVLSE1wSUhkcGJHd2djbVZ6ZEdGeWRDQThjMnh2ZENCdVlXMWxQU0ozYUdWdUlqNWhablJsY2lCMWNHUmhkR1U4TDNOc2IzUStQQzkwYUQ0S0lDQWdJQ0FnSUNBZ0lEd3ZkSEkrQ2lBZ0lDQWdJRHd2ZEdGaWJHVStDaUFnSUNBZ0lEd3ZaR2wyUGdvZ0lDQWdQQzkwWlcxd2JHRjBaVDRLSUNBZ0lEeHpZM0pwY0hRZ2RIbHdaVDBpYlc5a2RXeGxJajRLSUNBZ0lDQWdZM1Z6ZEc5dFJXeGxiV1Z1ZEhNdVpHVm1hVzVsS0Nka1pXTmhiQzFzYjJGa1pYSW5MQ0JqYkdGemN5QmxlSFJsYm1SeklFaFVUVXhGYkdWdFpXNTBJSHNLSUNBZ0lDQWdJQ0FqZFhCa1lYUnBibWNnUFNCbVlXeHpaUW9nSUNBZ0lDQWdJR0Z6ZVc1aklIVndaR0YwYVc1bklDaDdJR1p2Y21ObExDQnJaWGtzSUd4bGJtZDBhQ3dnWm05eWF5d2dZM1Z5Y21WdWRDQjlLU0I3Q2lBZ0lDQWdJQ0FnSUNCcFppQW9JV1p2Y21ObEtTQnlaWFIxY200S0lDQWdJQ0FnSUNBZ0lIUm9hWE11STNWd1pHRjBhVzVuSUQwZ2RISjFaUW9nSUNBZ0lDQWdJQ0FnZEdocGN5NXhkV1Z5ZVZObGJHVmpkRzl5S0NkYmMyeHZkRDBpZFhCa1lYUmxMV3hsYm1kMGFDSmRKeWt1YVc1dVpYSklWRTFNSUQwZ2JHVnVaM1JvQ2lBZ0lDQWdJQ0FnSUNCMGFHbHpMbk5vWVdSdmQxSnZiM1F1Y1hWbGNubFRaV3hsWTNSdmNpZ25JM1Z3WkdGMFpTY3BMbk4wZVd4bExtUnBjM0JzWVhrZ1BTQW5ZbXh2WTJzbkNpQWdJQ0FnSUNBZ0lDQjBhR2x6TG5Ob2IzY29LUW9nSUNBZ0lDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1cGNHTXVaR1YwWVdOb1RXRnBibFpwWlhjb2V5QnBaRG9nY25WdWRHbHRaUzVoY0hBdWFXUWdmU2tLSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnYzJodmR5QW9LU0I3Q2lBZ0lDQWdJQ0FnSUNCMGFHbHpMbk5vWVdSdmQxSnZiM1F1Y1hWbGNubFRaV3hsWTNSdmNpZ25JMnh2WVdSbGNpY3BMbk4wZVd4bExtUnBjM0JzWVhrZ1BTQW5ZbXh2WTJzbkNpQWdJQ0FnSUNBZ0lDQmtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnblltRnlKeWt1YzNSNWJHVXVaR2x6Y0d4aGVTQTlJQ2RpYkc5amF5Y0tJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdhR2xrWlNBb0tTQjdDaUFnSUNBZ0lDQWdJQ0IwYUdsekxuTm9ZV1J2ZDFKdmIzUXVjWFZsY25sVFpXeGxZM1J2Y2lnbkkyeHZZV1JsY2ljcExuTjBlV3hsTG1ScGMzQnNZWGtnUFNBbmJtOXVaU2NLSUNBZ0lDQWdJQ0FnSUdSdlkzVnRaVzUwTG1kbGRFVnNaVzFsYm5SQ2VVbGtLQ2RpWVhJbktTNXpkSGxzWlM1a2FYTndiR0Y1SUQwZ0oyNXZibVVuQ2lBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUdGemVXNWpJSEpsYzNSaGNuUWdLQ2tnZXdvZ0lDQWdJQ0FnSUNBZ2JHVjBJR052ZFc1MFpHOTNiaUE5SURNd01EQUtJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDaGpiM1Z1ZEdSdmQyNGdQaUF3S1NCN0NpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWNYVmxjbmxUWld4bFkzUnZjaWduVzNOc2IzUTlJbmRvWlc0aVhTY3BMbWx1Ym1WeVZHVjRkQ0E5SUdCcGJpQWtlMk52ZFc1MFpHOTNiaTh4TURBd2ZTQnpaV052Ym1SellBb2dJQ0FnSUNBZ0lDQWdJQ0JoZDJGcGRDQnVaWGNnVUhKdmJXbHpaU2dvY21WemIyeDJaU2tnUFQ0Z2MyVjBWR2x0Wlc5MWRDaHlaWE52YkhabExDQXhNREF3S1NrS0lDQWdJQ0FnSUNBZ0lDQWdZMjkxYm5Sa2IzZHVJQzA5SURFd01EQUtJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUhSb2FYTXVjWFZsY25sVFpXeGxZM1J2Y2lnblczTnNiM1E5SW5kb1pXNGlYU2NwTG1sdWJtVnlWR1Y0ZENBOUlDZGhjeUJ2WmlCdWIzY2hKd29nSUNBZ0lDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1cGNHTXVjbVZ6ZEdGeWRDZ3BDaUFnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJR0Z6ZVc1aklITjBZWEowSUNocGNHTXNJR052Ym1acFp5a2dld29nSUNBZ0lDQWdJQ0FnZEdocGN5NXphRzkzS0NrS0lDQWdJQ0FnSUNBZ0lIUm9hWE11YVhCaklEMGdhWEJqQ2lBZ0lDQWdJQ0FnSUNCaGQyRnBkQ0JwY0dNdVlXWjBaWEpXYVdWM1RHOWhaR1ZrS0hzZ2FXUTZJSEoxYm5ScGJXVXVZWEJ3TG1sa0lIMHBDaUFnSUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTRqZFhCa1lYUnBibWNwSUhKbGRIVnliaUIwY25WbENpQWdJQ0FnSUNBZ0lDQjBhR2x6TG1ocFpHVW9LUW9nSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZM1J5YkNBOUlHUnZZM1Z0Wlc1MExuRjFaWEo1VTJWc1pXTjBiM0lvSnlOM2FXNWtiM2N0WTI5dWRISnZiSE1nY0dWaGNpMWpkSEpzSnlrS0lDQWdJQ0FnSUNBZ0lHTjBjbXd1Y21WdGIzWmxLQ2tLSUNBZ0lDQWdJQ0FnSUdSdlkzVnRaVzUwTG1kbGRFVnNaVzFsYm5SQ2VVbGtLQ2QzYVc1a2IzY3RZMjl1ZEhKdmJITW5LUzV5WlcxdmRtVW9LUW9nSUNBZ0lDQWdJQ0FnWVhkaGFYUWdZM1J5YkM1amJHOXphVzVuQ2lBZ0lDQWdJQ0FnSUNCaGQyRnBkQ0JwY0dNdVlYUjBZV05vVFdGcGJsWnBaWGNvZXlCcFpEb2djblZ1ZEdsdFpTNWhjSEF1YVdRZ2ZTa0tJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdZMjl1YzNSeWRXTjBiM0lnS0NrZ2V3b2dJQ0FnSUNBZ0lDQWdjM1Z3WlhJb0tRb2dJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RHVnRjR3hoZEdVZ1BTQmtiMk4xYldWdWRDNXhkV1Z5ZVZObGJHVmpkRzl5S0NjalpHVmpZV3d0Ykc5aFpHVnlMWFJ0Y0d3bktTNWpiMjUwWlc1MENpQWdJQ0FnSUNBZ0lDQjBhR2x6TG1GMGRHRmphRk5vWVdSdmR5aDdiVzlrWlRvZ0oyOXdaVzRuZlNrdVlYQndaVzVrUTJocGJHUW9kR1Z0Y0d4aGRHVXVZMnh2Ym1WT2IyUmxLSFJ5ZFdVcEtRb2dJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ2ZTa0tJQ0FnSUR3dmMyTnlhWEIwUGdvZ0lEd3ZaR1ZqWVd3dGJHOWhaR1Z5UGdvZ0lEeHpZM0pwY0hRZ2RIbHdaVDBpYlc5a2RXeGxJajRLSUNBZ0lHTnZibk4wSUdsd1l5QTlJRVJGUTBGTUxtbHdZd29nSUNBZ1kyOXVjM1FnYkc5aFpHVnlJRDBnWkc5amRXMWxiblF1Y1hWbGNubFRaV3hsWTNSdmNpZ25aR1ZqWVd3dGJHOWhaR1Z5SnlrS0lDQWdJR052Ym5OMElISmxjRzl5ZENBOUlHUnZZM1Z0Wlc1MExuRjFaWEo1VTJWc1pXTjBiM0lvSjJSbFkyRnNMWEpsY0c5eWRDY3BDaUFnSUNCeVpYQnZjblF1YzNWaWMyTnlhV0psS0dsd1l5d2diRzloWkdWeUtRb0tJQ0FnSUhCeWIyTmxjM011YjI0b0oyVjRhWFFuTENBb1kyOWtaU2tnUFQ0Z2V3b2dJQ0FnSUNCamIyNXpkQ0JoWTNSMVlXeHNlVUZTWldaeVpYTm9JRDBnWTI5a1pTQTlQVDBnZFc1a1pXWnBibVZrQ2lBZ0lDQWdJR2xtSUNoaFkzUjFZV3hzZVVGU1pXWnlaWE5vS1NCeVpYUjFjbTRLSUNBZ0lDQWdVR1ZoY2k1bGVHbDBLR052WkdVcENpQWdJQ0I5S1FvS0lDQWdJR0Z6ZVc1aklHWjFibU4wYVc5dUlITjBZWEowSUNncElIc0tDaUFnSUNBZ0lHTnZibk4wSUhkcGJqTXlRMnh2YzJWTWFYTjBaVzVsY2lBOUlIQnliMk5sYzNNdWNHeGhkR1p2Y20wZ1BUMDlJQ2QzYVc0ek1pY2dQeUFvS1NBOVBpQlFaV0Z5TG1WNGFYUW9NQ2tnT2lCdWRXeHNDaUFnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbkJzWVhSbWIzSnRJRDA5UFNBbmQybHVNekluS1NCa2IyTjFiV1Z1ZEM1eGRXVnllVk5sYkdWamRHOXlLQ2NqZDJsdUxXTnNiM05sSnlrdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnblkyeHBZMnNuTENCM2FXNHpNa05zYjNObFRHbHpkR1Z1WlhJcENpQWdJQ0FnSUd4bGRDQmpiMjVtYVdjZ1BTQlFaV0Z5TG1OdmJtWnBad29LSUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Y0d4aGRHWnZjbTBnUFQwOUlDZDNhVzR6TWljcElIc0tJQ0FnSUNBZ0lDQmpiMjV6ZENCamJHOXpaU0E5SUdSdlkzVnRaVzUwTG5GMVpYSjVVMlZzWldOMGIzSW9KeU4zYVc0dFkyeHZjMlVuS1FvZ0lDQWdJQ0FnSUdOc2IzTmxMbkpsYlc5MlpVVjJaVzUwVEdsemRHVnVaWElvSjJOc2FXTnJKeXdnZDJsdU16SkRiRzl6WlV4cGMzUmxibVZ5S1FvZ0lDQWdJQ0FnSUdOc2IzTmxMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSW9KMk5zYVdOckp5d2dZWE41Ym1NZ0tDa2dQVDRnZXdvZ0lDQWdJQ0FnSUNBZ1lYZGhhWFFnY25WdWRHbHRaUzVoY0hBdVkyeHZjMlVvS1FvZ0lDQWdJQ0FnSUgwcENpQWdJQ0FnSUgwS0Nnb2dJQ0FnSUNCamIyNXpkQ0IxY0dSaGRHbHVaeUE5SUdGM1lXbDBJR3h2WVdSbGNpNXpkR0Z5ZENocGNHTXNJR052Ym1acFp5a0tDaUFnSUNBZ0lHbG1JQ2gxY0dSaGRHbHVaeWtnY21WMGRYSnVDZ29nSUNBZ2ZRb0tJQ0FnSUhOMFlYSjBLQ2t1WTJGMFkyZ29ZMjl1YzI5c1pTNWxjbkp2Y2lrS0lDQThMM05qY21sd2RENEtQQzlpYjJSNVBnbzhMMmgwYld3K0NnPT0nJ3VzZSBzdHJpY3QnCmNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZSgnZWxlY3Ryb24nKQpjb25zdCB7IHJlc29sdmUgfSA9IHJlcXVpcmUoJ3BhdGgnKQpjb25zdCB1bml4UGF0aFJlc29sdmUgPSByZXF1aXJlKCd1bml4LXBhdGgtcmVzb2x2ZScpCmNvbnN0IHsgb25jZSB9ID0gcmVxdWlyZSgnZXZlbnRzJykKY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKQpjb25zdCB7IGlzTWFjLCBpc0xpbnV4LCBpc1dpbmRvd3MgfSA9IHJlcXVpcmUoJ3doaWNoLXJ1bnRpbWUnKQpjb25zdCBoeXBlcmNvcmVpZCA9IHJlcXVpcmUoJ2h5cGVyY29yZS1pZC1lbmNvZGluZycpCmNvbnN0IElQQyA9IHJlcXVpcmUoJ3BlYXItaXBjJykKY29uc3QgUmVhZHlSZXNvdXJjZSA9IHJlcXVpcmUoJ3JlYWR5LXJlc291cmNlJykKY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgncGVhci1hcGkvY29uc3RhbnRzJykKY29uc3QgbGludXhJY29uID0gcmVxdWlyZSgnLi9pY29ucy9saW51eCcpCmNvbnN0IGtNYXAgPSBTeW1ib2woJ3BlYXIuZ3VpLm1hcCcpCmNvbnN0IGtDdHJsID0gU3ltYm9sKCdwZWFyLmd1aS5jdHJsJykKY29uc3Qgc3RyZWFteCA9IHJlcXVpcmUoJ3N0cmVhbXgnKQoKY29uc3QgZGVmYXVsdFRyYXlPcyA9IHsgd2luMzI6IHRydWUsIGxpbnV4OiB0cnVlLCBkYXJ3aW46IHRydWUgfQpjb25zdCBkZWZhdWx0VHJheUljb24gPSByZXF1aXJlKCcuL2ljb25zL3RyYXknKQoKY2xhc3MgTWVudSB7CiAgc3RhdGljIFBFQVIgPSAwCiAgc3RhdGljIEFQUCA9IDAKICBzdGF0aWMgRURJVCA9IDEKICBzdGF0aWMgREVWID0gMgogIHN0YXRpYyBXSU5ET1cgPSAzCiAgdGVtcGxhdGUgPSBbCiAgICBpc01hYyA/IHsgbGFiZWw6ICdQZWFyJyB9IDogeyBsYWJlbDogJ0FwcCcgfSwKICAgIHsKICAgICAgbGFiZWw6ICdFZGl0JywKICAgICAgc3VibWVudTogWwogICAgICAgIHsgcm9sZTogJ3VuZG8nIH0sCiAgICAgICAgeyByb2xlOiAncmVkbycgfSwKICAgICAgICB7IHR5cGU6ICdzZXBhcmF0b3InIH0sCiAgICAgICAgeyByb2xlOiAnY3V0JyB9LAogICAgICAgIHsgcm9sZTogJ2NvcHknIH0sCiAgICAgICAgeyByb2xlOiAncGFzdGUnIH0sCiAgICAgICAgaXNNYWMgJiYgeyByb2xlOiAncGFzdGVBbmRNYXRjaFN0eWxlJyB9LAogICAgICAgIHsgcm9sZTogJ2RlbGV0ZScgfSwKICAgICAgICB7IHJvbGU6ICdzZWxlY3RBbGwnIH0KICAgICAgXS5maWx0ZXIoQm9vbGVhbikKICAgIH0sCiAgICB7IGxhYmVsOiAnRGV2JyB9LAogICAgewogICAgICBsYWJlbDogJ1dpbmRvdycsCiAgICAgIHN1Ym1lbnU6IFsKICAgICAgICB7IHJvbGU6ICdtaW5pbWl6ZScgfSwKICAgICAgICB7IHJvbGU6ICd6b29tJyB9LAogICAgICAgIC4uLihpc01hYwogICAgICAgICAgPyBbCiAgICAgICAgICAgICAgeyB0eXBlOiAnc2VwYXJhdG9yJyB9LAogICAgICAgICAgICAgIHsgcm9sZTogJ2Zyb250JyB9LAogICAgICAgICAgICAgIHsgdHlwZTogJ3NlcGFyYXRvcicgfSwKICAgICAgICAgICAgICB7IHJvbGU6ICd3aW5kb3cnIH0KICAgICAgICAgICAgXQogICAgICAgICAgOiBbXSksCiAgICAgICAgeyByb2xlOiAnY2xvc2UnIH0KICAgICAgXQogICAgfQogIF0KCiAgZGV2dG9vbHNSZWxvYWRlckFjdGl2ZSA9IGZhbHNlCiAgY29uc3RydWN0b3IgKGFwcCwgcmVuZGVyRXZlbnRzID0gWydhcHAtcmVnaXN0ZXInLCAnYXBwLWRlcmVnaXN0ZXInLCAnYXBwLWZvY3VzJ10pIHsKICAgIHRoaXMuYXBwID0gYXBwCiAgICBjb25zdCByZXJlbmRlciA9ICgpID0+IHsgdGhpcy5yZW5kZXIoKSB9CiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHJlbmRlckV2ZW50cykgZWxlY3Ryb24uYXBwLm9uKGV2ZW50LCByZXJlbmRlcikKICAgIHRoaXMudW5saXN0ZW4gPSAoKSA9PiB7CiAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgcmVuZGVyRXZlbnRzKSBlbGVjdHJvbi5hcHAucmVtb3ZlTGlzdGVuZXIoZXZlbnQsIHJlcmVuZGVyKQogICAgfQogICAgdGhpcy5yZW5kZXIoKQogIH0KCiAgI3BlYXIgKCkgewogICAgY29uc3QgeyBQRUFSIH0gPSB0aGlzLmNvbnN0cnVjdG9yCiAgICBjb25zdCBpdGVtID0gdGhpcy50ZW1wbGF0ZVtQRUFSXQogICAgaXRlbS5zdWJtZW51ID0gWwogICAgICB7CiAgICAgICAgbGFiZWw6ICdGb3JjZSBQbGF0Zm9ybSBTaHV0ZG93bicsCiAgICAgICAgYWNjZWxlcmF0b3I6ICdDdHJsK0FsdCtTaGlmdCtRJywKICAgICAgICBjbGljazogKCkgPT4gZWxlY3Ryb24uYXBwLnF1aXQoKQogICAgICB9CiAgICBdCiAgfQoKICAjYXBwICgpIHsKICAgIGNvbnN0IHsgQVBQIH0gPSB0aGlzLmNvbnN0cnVjdG9yCiAgICBjb25zdCBpdGVtID0gdGhpcy50ZW1wbGF0ZVtBUFBdCiAgICBjb25zdCB7IGFwcCB9ID0gdGhpcwogICAgaXRlbS5zdWJtZW51LnVuc2hpZnQoLi4uWwogICAgICB7CiAgICAgICAgbGFiZWw6ICdEZXYgTW9kZScsCiAgICAgICAgdHlwZTogJ2NoZWNrYm94JywKICAgICAgICBjaGVja2VkOiBhcHAuc3RhdGU/LmRldnRvb2xzLAogICAgICAgIGNsaWNrOiBhc3luYyAoKSA9PiB7CiAgICAgICAgICBpZiAoYXBwLnN0YXRlLmRldnRvb2xzID09PSB0cnVlKSB7CiAgICAgICAgICAgIGF3YWl0IGFwcC5zdGF0ZS51cGRhdGUoeyBkZXZ0b29sczogZmFsc2UgfSkKICAgICAgICAgICAgZm9yIChjb25zdCB7IGNvbnRlbnRWaWV3IH0gb2YgUGVhckdVSS5vZlNlc3Npb24oYXBwLmhhbmRsZT8uc2Vzc2lvbikpIHsKICAgICAgICAgICAgICBhd2FpdCBjb250ZW50Vmlldy53ZWJDb250ZW50cy5jbG9zZURldlRvb2xzKCkKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYXdhaXQgYXBwLnN0YXRlLnVwZGF0ZSh7IGRldnRvb2xzOiB0cnVlIH0pCiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy5yZW5kZXIoKQogICAgICAgIH0KICAgICAgfSwKICAgICAgeyB0eXBlOiAnc2VwYXJhdG9yJyB9LAogICAgICAuLi4oaXNNYWMKICAgICAgICA/IFt7CiAgICAgICAgICAgIGdldCBsYWJlbCAoKSB7CiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBhcHAuc3RhdGU/Lm5hbWUKICAgICAgICAgICAgICBuYW1lID0gbmFtZSB8fCAnYXBwJwogICAgICAgICAgICAgIG5hbWUgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpCiAgICAgICAgICAgICAgcmV0dXJuIGBIaWRlICR7bmFtZX1gCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJvbGU6ICdoaWRlJwogICAgICAgICAgfSwKICAgICAgICAgIHsgcm9sZTogJ2hpZGVvdGhlcnMnIH0sCiAgICAgICAgICB7IHJvbGU6ICd1bmhpZGUnIH0sCiAgICAgICAgICB7IHR5cGU6ICdzZXBhcmF0b3InIH0KICAgICAgICAgIF0KICAgICAgICA6IFtdKSwKICAgICAgewogICAgICAgIGdldCBsYWJlbCAoKSB7CiAgICAgICAgICBsZXQgbmFtZSA9IGFwcC5zdGF0ZT8ubmFtZQogICAgICAgICAgbmFtZSA9IG5hbWUgfHwgJ2FwcCcKICAgICAgICAgIG5hbWUgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpCiAgICAgICAgICByZXR1cm4gYFF1aXQgJHtuYW1lfWAKICAgICAgICB9LAogICAgICAgIGFjY2VsZXJhdG9yOiAnQ21kT3JDdHJsK1EnLAogICAgICAgIGFzeW5jIGNsaWNrIChfLCB3aW4pIHsKICAgICAgICAgIGlmICghd2luKSB7CiAgICAgICAgICAgIGNvbnN0IGRldnRvb2xzV2MgPSBlbGVjdHJvbi53ZWJDb250ZW50cy5nZXRGb2N1c2VkV2ViQ29udGVudHMoKQogICAgICAgICAgICBpZiAoIWRldnRvb2xzV2MpIHJldHVybiAvLyBubyB3aW5kb3dzIHNlbGVjdGVkIGF0IGFsbCwgbm90aGluZyB0byBkbwogICAgICAgICAgICBmb3IgKGNvbnN0IHdjIG9mIGVsZWN0cm9uLndlYkNvbnRlbnRzLmdldEFsbFdlYkNvbnRlbnRzKCkpIHsKICAgICAgICAgICAgICBpZiAod2MuaXNEZXZUb29sc0ZvY3VzZWQoKSkgewogICAgICAgICAgICAgICAgd2luID0gZWxlY3Ryb24uQnJvd3NlcldpbmRvdy5mcm9tV2ViQ29udGVudHMod2MpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKCF3aW4pIHJldHVybiAvLyBubyB3aW5kb3dzIHNlbGVjdGVkLCBub3RoaW5nIHRvIGRvCiAgICAgICAgICBjb25zdCB2aWV3ID0gd2luLmdldEJyb3dzZXJWaWV3cygpWzBdCiAgICAgICAgICBjb25zdCBzZXNzaW9uID0gdmlldz8ud2ViQ29udGVudHMuc2Vzc2lvbiB8fCB3aW4ud2ViQ29udGVudHMuc2Vzc2lvbgogICAgICAgICAgZm9yIChjb25zdCBjdHJsIG9mIFBlYXJHVUkub2ZTZXNzaW9uKHNlc3Npb24pKSB7CiAgICAgICAgICAgIGN0cmwucXVpdHRpbmcgPSB0cnVlCiAgICAgICAgICAgIGF3YWl0IGN0cmwuY2xvc2UoKQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgewogICAgICAgIGxhYmVsOiAnaGlkZGVuIGRlY2FsIGRldnRvb2xzJywKICAgICAgICBhY2NlbGVyYXRvcjogaXNNYWMgPyAnQWx0K0NvbW1hbmQrVScgOiAnQ3RybCtTaGlmdCtVJywKICAgICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgICBjbGljayAoXywgd2luKSB7CiAgICAgICAgICB3aW4/LndlYkNvbnRlbnRzPy5vcGVuRGV2VG9vbHMoeyBtb2RlOiAnZGV0YWNoJyB9KQogICAgICAgIH0KICAgICAgfSwKICAgICAgLi4uKGlzTWFjCiAgICAgICAgPyBbXQogICAgICAgIDogW3sKICAgICAgICAgICAgbGFiZWw6ICdoaWRkZW4gd2luIGRldnRvb2xzJywKICAgICAgICAgICAgYWNjZWxlcmF0b3I6ICdDdHJsK1NoaWZ0K0knLAogICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgICAgICAgY2xpY2sgKF8sIHdpbikgewogICAgICAgICAgICAgIGNvbnN0IFt2aWV3XSA9IHdpbi5nZXRCcm93c2VyVmlld3MoKQogICAgICAgICAgICAgIHZpZXcud2ViQ29udGVudHMub3BlbkRldlRvb2xzKHsgbW9kZTogJ2RldGFjaCcgfSkKICAgICAgICAgICAgfQogICAgICAgICAgfV0pCiAgICBdKQoKICAgIGlmIChhcHAuaGFuZGxlID09PSBudWxsKSByZXR1cm4KICAgIGNvbnN0IHNldExhYmVsID0gKCkgPT4gewogICAgICBpZiAoIWFwcD8uc3RhdGU/Lm5hbWUpIHJldHVybgogICAgICBpdGVtLmxhYmVsID0gYXBwLnN0YXRlLm5hbWVbMF0udG9VcHBlckNhc2UoMCkgKyBhcHAuc3RhdGUubmFtZS5zbGljZSgxKQogICAgfQogICAgc2V0TGFiZWwoKQogIH0KCiAgI2RldiAoKSB7CiAgICBjb25zdCB7IERFViB9ID0gdGhpcy5jb25zdHJ1Y3RvcgogICAgY29uc3QgaXRlbSA9IHRoaXMudGVtcGxhdGVbREVWXQogICAgY29uc3QgeyBhcHAgfSA9IHRoaXMKICAgIGlmICghYXBwLmhhbmRsZSkgcmV0dXJuCiAgICBjb25zdCB7IHN0YXRlIH0gPSBhcHAKICAgIGNvbnN0IHsgc2Vzc2lvbiB9ID0gYXBwLmhhbmRsZQogICAgaWYgKHN0YXRlLmRldnRvb2xzID09PSBmYWxzZSkgewogICAgICBpdGVtLnZpc2libGUgPSBmYWxzZQogICAgICByZXR1cm4KICAgIH0KICAgIGNvbnN0IGR0cyA9IChlbGVjdHJvbi53ZWJDb250ZW50cy5nZXRBbGxXZWJDb250ZW50cygpIHx8IFtdKQogICAgICAuZmlsdGVyKCh3YykgPT4gewogICAgICAgIGlmICh3Yy5zZXNzaW9uICE9PSBzZXNzaW9uKSByZXR1cm4gZmFsc2UKICAgICAgICBjb25zdCB1cmwgPSB3Yy5nZXRVUkwoKQogICAgICAgIHJldHVybiB1cmwudHJpbSgpICYmICgvXmRldnRvb2xzOlwvXC8vLnRlc3QodXJsKSA9PT0gZmFsc2UpCiAgICAgIH0pCiAgICAgIC5tYXAoKHdjLCBpeCkgPT4gewogICAgICAgIGNvbnN0IGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIGl4KQogICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzCiAgICAgICAgY29uc3QgaXRlbSA9IHsKICAgICAgICAgIGxhYmVsOiB3Yy5nZXRUaXRsZSgpLAogICAgICAgICAgdHlwZTogJ2NoZWNrYm94JywKICAgICAgICAgIGNoZWNrZWQ6IHdjLmlzRGV2VG9vbHNPcGVuZWQoKSwKICAgICAgICAgIGFjY2VsZXJhdG9yOiAoaXNNYWMgPyBgQWx0K0NvbW1hbmQrU2hpZnQrJHtjaH1gIDogYEN0cmwrQWx0K1NoaWZ0KyR7Y2h9YCksCiAgICAgICAgICBjbGljayAoKSB7CiAgICAgICAgICAgIGlmICh3Yy5pc0Rlc3Ryb3llZCgpKSB7CiAgICAgICAgICAgICAgc2VsZi5yZW5kZXIoKQogICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh3Yy5pc0RldlRvb2xzT3BlbmVkKCkpIHsKICAgICAgICAgICAgICB3Yy5jbG9zZURldlRvb2xzKCkKICAgICAgICAgICAgICBpdGVtLmNoZWNrZWQgPSBmYWxzZQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHdjLm9wZW5EZXZUb29scyh7IG1vZGU6ICdkZXRhY2gnIH0pCiAgICAgICAgICAgICAgaXRlbS5jaGVja2VkID0gdHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBpdGVtCiAgICAgIH0sIHRoaXMpCgogICAgaXRlbS52aXNpYmxlID0gdHJ1ZQogICAgaXRlbS5zdWJtZW51ID0gWwogICAgICB7CiAgICAgICAgbGFiZWw6ICdSZWxvYWQnLAogICAgICAgIGFjY2VsZXJhdG9yOiAnQ21kT3JDdHJsK1InLAogICAgICAgIGNsaWNrIChfLCB3aW4pIHsKICAgICAgICAgIGNvbnN0IHZpZXcgPSB3aW4uZ2V0QnJvd3NlclZpZXdzKClbMF0KICAgICAgICAgIGNvbnN0IHsgd2ViQ29udGVudHMgfSA9IHZpZXcgfHwgd2luCiAgICAgICAgICByZWZyZXNoKHdlYkNvbnRlbnRzLCBhcHAuc3RhdGUpCiAgICAgICAgfQogICAgICB9LAogICAgICB7CiAgICAgICAgbGFiZWw6ICdGb3JjZSBSZWxvYWQnLAogICAgICAgIGFjY2VsZXJhdG9yOiAnU2hpZnQrQ21kT3JDdHJsK1InLAogICAgICAgIGNsaWNrIChfLCB3aW4pIHsKICAgICAgICAgIGlmICghd2luKSByZXR1cm4KICAgICAgICAgIGNvbnN0IHZpZXcgPSB3aW4uZ2V0QnJvd3NlclZpZXdzKClbMF0KICAgICAgICAgIGNvbnN0IHsgd2ViQ29udGVudHMgfSA9IHZpZXcgfHwgd2luCiAgICAgICAgICB3ZWJDb250ZW50cy5yZWxvYWRJZ25vcmluZ0NhY2hlKCkgLy8gZm9yY2UgcmVsb2FkIGRvZXMgbm90IGhvbm9yIGFwcCB0ZWFyZG93biBsaXN0ZW5lcnMKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHsKICAgICAgICBsYWJlbDogJ0RldmVsb3BlciBUb29scycsCiAgICAgICAgc3VibWVudTogZHRzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBsYWJlbDogJ2N1cnJlbnQgbWFpbiB2aWV3IGRldnRvb2xzJywKICAgICAgICBhY2NlbGVyYXRvcjogaXNNYWMgPyAnQWx0K0NvbW1hbmQrSScgOiAnQ3RybCtTaGlmdCtJJywKICAgICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgICBjbGljayAoXywgd2luKSB7CiAgICAgICAgICBpZiAoIXdpbikgcmV0dXJuCiAgICAgICAgICBjb25zdCB2aWV3ID0gd2luLmdldEJyb3dzZXJWaWV3cygpWzBdCiAgICAgICAgICBjb25zdCB7IHdlYkNvbnRlbnRzIH0gPSB2aWV3IHx8IHdpbgogICAgICAgICAgaWYgKHdlYkNvbnRlbnRzLmlzRGV2VG9vbHNPcGVuZWQoKSkgewogICAgICAgICAgICB3ZWJDb250ZW50cy5jbG9zZURldlRvb2xzKCkKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdlYkNvbnRlbnRzLm9wZW5EZXZUb29scyh7IG1vZGU6ICdkZXRhY2gnIH0pCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICBdCiAgfQoKICBidWlsZCAoKSB7CiAgICB0aGlzLiNwZWFyKCkKICAgIHRoaXMuI2FwcCgpCiAgICB0aGlzLiNkZXYoKQogICAgdGhpcy5tZW51ID0gZWxlY3Ryb24uTWVudS5idWlsZEZyb21UZW1wbGF0ZSh0aGlzLnRlbXBsYXRlKQogIH0KCiAgcmVuZGVyICgpIHsKICAgIGlmIChlbGVjdHJvbi53ZWJDb250ZW50cy5nZXRBbGxXZWJDb250ZW50cygpLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmFwcC5jbG9zZWQpIHJldHVybgogICAgdGhpcy5idWlsZCgpCiAgICBlbGVjdHJvbi5NZW51LnNldEFwcGxpY2F0aW9uTWVudSh0aGlzLm1lbnUpCiAgfQoKICBkZXZ0b29sc1JlbG9hZGVyTGlzdGVuICh3YykgewogICAgaWYgKHRoaXMuZGV2dG9vbHNSZWxvYWRlckFjdGl2ZSkgcmV0dXJuCgogICAgdGhpcy5kZXZ0b29sc1JlbG9hZGVyQWN0aXZlID0gdHJ1ZQogICAgY29uc3QgbGlzdGVuZXIgPSAoKSA9PiB7IHJlZnJlc2god2MsIHRoaXMuYXBwLnN0YXRlKSB9CiAgICAvLyBpZ25vcmUgZWxlY3Ryb24gZG9jcyBhYm91dCByZWdpc3RlcjogaXQgRE9FUyBOT1QgYWNjZXB0IGFuIGFycmF5IG9mIGFjY2VsZXJhdG9ycywganVzdCB0aGUgb25lIHN0cmluZwogICAgZWxlY3Ryb24uZ2xvYmFsU2hvcnRjdXQucmVnaXN0ZXIoJ0NvbW1hbmRPckNvbnRyb2wrUicsIGxpc3RlbmVyKQogICAgZWxlY3Ryb24uZ2xvYmFsU2hvcnRjdXQucmVnaXN0ZXIoJ0Y1JywgbGlzdGVuZXIpCiAgfQoKICBkZXZ0b29sc1JlbG9hZGVyVW5saXN0ZW4gKCkgewogICAgaWYgKHRoaXMuZGV2dG9vbHNSZWxvYWRlckFjdGl2ZSA9PT0gZmFsc2UpIHJldHVybgogICAgdGhpcy5kZXZ0b29sc1JlbG9hZGVyQWN0aXZlID0gZmFsc2UKICAgIGVsZWN0cm9uLmdsb2JhbFNob3J0Y3V0LnVucmVnaXN0ZXIoJ0NvbW1hbmRPckNvbnRyb2wrUicpCiAgICBlbGVjdHJvbi5nbG9iYWxTaG9ydGN1dC51bnJlZ2lzdGVyKCdGNScpCiAgfQoKICBkZXN0cm95ICgpIHsKICAgIHRoaXMubWVudSA9IG51bGwKICAgIHRoaXMuYXBwID0gbnVsbAogICAgdGhpcy51bmxpc3RlbigpCiAgICBzdXBlci5kZXN0cm95KCkKICB9Cn0KCmZ1bmN0aW9uIHJlZnJlc2ggKHdlYkNvbnRlbnRzLCBzdGF0ZSkgewogIGlmIChzdGF0ZS5yZWxvYWRpbmdTaW5jZSA9PT0gMCkgewogICAgd2ViQ29udGVudHMub25jZSgnZGlkLXN0b3AtbG9hZGluZycsICgpID0+IHsgc3RhdGUucmVsb2FkaW5nU2luY2UgPSAwIH0pCiAgICB3ZWJDb250ZW50cy5leGVjdXRlSmF2YVNjcmlwdCgnbG9jYXRpb24ucmVsb2FkKCknLCB0cnVlKSAvLyBlbnN1cmVzIGFwcCB0ZWFyZG93biBsaXN0ZW5lcnMgYXJlIHRyaWdnZXJlZAogICAgc3RhdGUucmVsb2FkaW5nU2luY2UgPSBEYXRlLm5vdygpCiAgICByZXR1cm4KICB9CiAgY29uc3QgbWF4ID0gNTAwMAogIGNvbnN0IHRpbWVnYXAgPSBEYXRlLm5vdygpIC0gc3RhdGUucmVsb2FkaW5nU2luY2UKICBpZiAodGltZWdhcCA8IG1heCkgewogICAgd2ViQ29udGVudHMuZXhlY3V0ZUphdmFTY3JpcHQoYGNvbnNvbGUuaW5mbygnUmVmcmVzaCBpbiBwcm9ncmVzcy4gSWdub3JpbmcgZm9yIGFub3RoZXInLCAke21heH0gLSAke3RpbWVnYXB9LCAnbXMnKWApCiAgICByZXR1cm4KICB9CgogIHdlYkNvbnRlbnRzLm9uY2UoJ2RpZC1zdG9wLWxvYWRpbmcnLCAoKSA9PiB7CiAgICB3ZWJDb250ZW50cy5leGVjdXRlSmF2YVNjcmlwdChgY29uc29sZS53YXJuKCdSZWZyZXNoIGF0dGVtcHQgdG9vayBsb25nZXIgdGhhbiAke21heH1tcy4gVGhpcyByZWZyZXNoIHdhcyBhIGZvcmNlIHJlZnJlc2gsIHRlYXJkb3duIGxvZ2ljIHdpbGwgbm90IGhhdmUgYmVlbiBleGVjdXRlZCBvbiBwcmlvciB1bmxvYWQuJylgKQogICAgc3RhdGUucmVsb2FkaW5nU2luY2UgPSAwCiAgfSkKICB3ZWJDb250ZW50cy5yZWxvYWRJZ25vcmluZ0NhY2hlKCkgLy8gZm9yY2UgcmVsb2FkIGRvZXMgbm90IGhvbm9yIGFwcCB0ZWFyZG93biBsaXN0ZW5lcnMKICBzdGF0ZS5yZWxvYWRpbmdTaW5jZSA9IERhdGUubm93KCkKfQoKY2xhc3MgQ29udGV4dE1lbnUgewogIGNvbnN0cnVjdG9yICh3ZWJDb250ZW50cykgewogICAgdGhpcy53ZWJDb250ZW50cyA9IHdlYkNvbnRlbnRzCiAgICB3ZWJDb250ZW50cy5vbmNlKCdkZXN0cm95ZWQnLCAoKSA9PiB0aGlzLmRlc3Ryb3koKSkKICB9CgogIGFzeW5jIHBvcHVwICh7IHBhcmFtcywgZGV2dG9vbHMgPSBmYWxzZSB9KSB7CiAgICBjb25zdCBpdGVtcyA9IFtdCgogICAgY29uc3QgewogICAgICBlZGl0RmxhZ3M6IHsgY2FuUGFzdGUgfSwKICAgICAgaXNFZGl0YWJsZSwKICAgICAgc2VsZWN0aW9uVGV4dCwKICAgICAgeCA9IDAsCiAgICAgIHkgPSAwCiAgICB9ID0gcGFyYW1zCgogICAgaWYgKGF3YWl0IHRoaXMud2ViQ29udGVudHMuZXhlY3V0ZUphdmFTY3JpcHQoYGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoJHt4fSwgJHt5fSk/LnRhZ05hbWUgPT09ICdJTUcnYCkpIHsKICAgICAgaXRlbXMucHVzaChuZXcgZWxlY3Ryb24uTWVudUl0ZW0oewogICAgICAgIGxhYmVsOiAnQ29weSBJbWFnZScsCiAgICAgICAgY2xpY2s6ICgpID0+IHRoaXMud2ViQ29udGVudHMuY29weUltYWdlQXQoeCwgeSkKICAgICAgfSkpCiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblRleHQpIHsKICAgICAgaXRlbXMucHVzaChuZXcgZWxlY3Ryb24uTWVudUl0ZW0oewogICAgICAgIGxhYmVsOiAnQ29weScsCiAgICAgICAgY2xpY2s6ICgpID0+IHRoaXMud2ViQ29udGVudHMuY29weSgpCiAgICAgIH0pKQogICAgfQoKICAgIGlmIChjYW5QYXN0ZSAmJiBpc0VkaXRhYmxlKSB7CiAgICAgIGl0ZW1zLnB1c2gobmV3IGVsZWN0cm9uLk1lbnVJdGVtKHsKICAgICAgICBsYWJlbDogJ1Bhc3RlJywKICAgICAgICBjbGljazogKCkgPT4gdGhpcy53ZWJDb250ZW50cy5wYXN0ZSgpCiAgICAgIH0pKQogICAgfQoKICAgIGlmIChkZXZ0b29scykgewogICAgICBpdGVtcy5wdXNoKG5ldyBlbGVjdHJvbi5NZW51SXRlbSh7CiAgICAgICAgbGFiZWw6ICdJbnNwZWN0IEVsZW1lbnQnLAogICAgICAgIGNsaWNrOiAoKSA9PiB7CiAgICAgICAgICAvLyBjbG9zZSBhbmQgcmVvcGVuIGZvciBpbnNwZWN0IGVsZW1lbnQgY2xpY2ssIG9ubHkgd2F5IHRvIGZvY3VzIGRldnRvb2xzIGluIHByYWN0aWNlCiAgICAgICAgICB0aGlzLndlYkNvbnRlbnRzLmNsb3NlRGV2VG9vbHMoKQogICAgICAgICAgdGhpcy53ZWJDb250ZW50cy5vcGVuRGV2VG9vbHMoeyBtb2RlOiAnZGV0YWNoJyB9KQogICAgICAgICAgdGhpcy53ZWJDb250ZW50cy5pbnNwZWN0RWxlbWVudCh4LCB5KQogICAgICAgIH0KICAgICAgfSkpCiAgICB9CgogICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHsKICAgICAgdGhpcy5tZW51ID0gZWxlY3Ryb24uTWVudS5idWlsZEZyb21UZW1wbGF0ZShpdGVtcykKICAgICAgdGhpcy5tZW51LnBvcHVwKCkKICAgIH0KICB9CgogIGNsb3NlICgpIHsKICAgIHRoaXMubWVudT8uY2xvc2VQb3B1cCgpCiAgfQoKICBkZXN0cm95ICgpIHsKICAgIHRoaXMuY2xvc2UoKQogICAgdGhpcy5tZW51ID0gbnVsbAogIH0KfQoKY2xhc3MgQXBwIHsKICBtZW51ID0gbnVsbAogIGJyaWRnZSA9IG51bGwKICBzdGF0ZSA9IG51bGwKICBpcGMgPSBudWxsCiAgaWQgPSBudWxsCiAgaGFuZGxlID0gbnVsbAogIGNsb3NpbmcgPSBudWxsCiAgY2xvc2VkID0gZmFsc2UKICBhcHBSZWFkeSA9IGZhbHNlCiAgc3RhdGljIHJvb3QgPSB1bml4UGF0aFJlc29sdmUocmVzb2x2ZShfX2Rpcm5hbWUsICcuLicpKQoKICBjb25zdHJ1Y3RvciAoZ3VpKSB7CiAgICBjb25zdCB7IHN0YXRlLCBpcGMgfSA9IGd1aQogICAgZ3VpLl9hcHAgPSB0aGlzCiAgICB0aGlzLmd1aSA9IGd1aQogICAgdGhpcy5zdGF0ZSA9IHN0YXRlCiAgICB0aGlzLmlwYyA9IGlwYwoKICAgIHRoaXMuY29udGV4dE1lbnUgPSBudWxsCiAgICBlbGVjdHJvbi5hcHAub24oJ2Jyb3dzZXItd2luZG93LWZvY3VzJywgKCkgPT4geyB0aGlzLm1lbnUuZGV2dG9vbHNSZWxvYWRlclVubGlzdGVuKCkgfSkKCiAgICBlbGVjdHJvbi5hcHAub24oJ2NoaWxkLXByb2Nlc3MtZ29uZScsIChlLCBkZXRhaWxzKSA9PiB7CiAgICAgIGlmIChkZXRhaWxzLnJlYXNvbiA9PT0gJ2tpbGxlZCcpIHJldHVybgogICAgICBlbGVjdHJvbi5kaWFsb2cuc2hvd0Vycm9yQm94KCdBIENoaWxkIFByb2Nlc3MgaGFzIGNyYXNoZWQnLCBKU09OLnN0cmluZ2lmeShkZXRhaWxzLCAwLCAyKSkKICAgIH0pCgogICAgZWxlY3Ryb24uYXBwLm9uKCd3ZWItY29udGVudHMtY3JlYXRlZCcsIChlLCB3YykgPT4gewogICAgICB0aGlzLm1lbnUucmVuZGVyKCkKCiAgICAgIHdjLm9uKCdkZXZ0b29scy1mb2N1c2VkJywgKCkgPT4gewogICAgICAgIHRoaXMubWVudS5kZXZ0b29sc1JlbG9hZGVyTGlzdGVuKHdjKQogICAgICB9KQoKICAgICAgLy8gZWxlY3Ryb24gaGFzIGFic29sdXRlbHkgbm8gZnVuY3Rpb25pbmcgYmx1ciBldmVudCBvZiBhbnkga2luZAogICAgICAvLyB0aGVyZSBpcyBOTyBXQVkgaW4gZWxlY3Ryb24gdG8gcmVhY3QgdG8gZGV2dG9vbHMgYmx1ciwgc28gbm93IHRoaXMgaXMgaGFwcGVuaW5nOgogICAgICBsZXQgZGV2dG9vbHNCbHVyUG9sbGluZyA9IG51bGwKICAgICAgd2Mub24oJ2RldnRvb2xzLW9wZW5lZCcsICgpID0+IHsKICAgICAgICBkZXZ0b29sc0JsdXJQb2xsaW5nID0gc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICAgICAgaWYgKHdjLmlzRGV2VG9vbHNGb2N1c2VkKCkgPT09IGZhbHNlKSB0aGlzLm1lbnUuZGV2dG9vbHNSZWxvYWRlclVubGlzdGVuKCkKICAgICAgICB9LCAxNTApCiAgICAgIH0pCiAgICAgIHdjLm9uKCdkZXN0cm95ZWQnLCAoKSA9PiB7CiAgICAgICAgdGhpcy5tZW51LnJlbmRlcigpCiAgICAgICAgY2xlYXJJbnRlcnZhbChkZXZ0b29sc0JsdXJQb2xsaW5nKQogICAgICB9KQogICAgICB3Yy5vbignZGV2dG9vbHMtY2xvc2VkJywgKCkgPT4gewogICAgICAgIHRoaXMubWVudS5kZXZ0b29sc1JlbG9hZGVyVW5saXN0ZW4oKQogICAgICAgIGNsZWFySW50ZXJ2YWwoZGV2dG9vbHNCbHVyUG9sbGluZykKICAgICAgICBkZXZ0b29sc0JsdXJQb2xsaW5nID0gbnVsbAogICAgICB9KQoKICAgICAgd2Mub24oJ2NvbnRleHQtbWVudScsIChlLCBwYXJhbXMpID0+IHsKICAgICAgICBjb25zdCBjdHJsID0gUGVhckdVSS5mcm9tV2ViQ29udGVudHMod2MpCiAgICAgICAgaWYgKCFjdHJsKSByZXR1cm4KICAgICAgICBpZiAoKGN0cmwudmlldyAmJiBjdHJsLnZpZXcud2ViQ29udGVudHMgPT09IHdjKSB8fCAoY3RybC52aWV3ID09PSBudWxsICYmIGN0cmwud2luPy53ZWJDb250ZW50cyA9PT0gd2MpKSB7CiAgICAgICAgICB0aGlzLmNvbnRleHRNZW51ID0gdGhpcy5jb250ZXh0TWVudSB8fCBuZXcgQ29udGV4dE1lbnUod2MpCiAgICAgICAgICB0aGlzLmNvbnRleHRNZW51LnBvcHVwKHsgcGFyYW1zLCBkZXZ0b29sczogdGhpcy5zdGF0ZS5kZXZ0b29scyB9KQogICAgICAgIH0KICAgICAgfSkKICAgICAgd2Mub24oJ3JlbmRlci1wcm9jZXNzLWdvbmUnLCBhc3luYyAoZXZ0LCBkZXRhaWxzKSA9PiB7CiAgICAgICAgaWYgKGRldGFpbHM/LnJlYXNvbiA9PT0gJ2tpbGxlZCcgfHwgZGV0YWlscz8ucmVhc29uID09PSAnY2xlYW4tZXhpdCcpIHJldHVybgogICAgICAgIGlmICh0aGlzLnN0YXRlLmRldikgcHJvY2Vzcy5fcmF3RGVidWcoJ0EgUmVuZGVyIFByb2Nlc3MgaGFzIGdvbmUnLCBldnQsIGRldGFpbHMpCiAgICAgICAgZWxzZSBlbGVjdHJvbi5kaWFsb2cuc2hvd0Vycm9yQm94KCdBIFJlbmRlciBQcm9jZXNzIGhhcyBnb25lJywgSlNPTi5zdHJpbmdpZnkoZGV0YWlscywgMCwgMikpCiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdBIFJlbmRlciBQcm9jZXNzIGhhcyBnb25lJykKICAgICAgICBlcnIuY29kZSA9ICdFUlJfQ1JBU0gnCiAgICAgICAgZXJyLmluZm8gPSBkZXRhaWxzCiAgICAgICAgYXdhaXQgdGhpcy5yZXBvcnQoeyBlcnIgfSkKICAgICAgfSkKICAgIH0pCiAgICB0aGlzLm1lbnUgPSBuZXcgTWVudSh0aGlzKQogIH0KCiAgYXN5bmMgcmVwb3J0IChycHQpIHsKICAgIGxldCB7IGVyciB9ID0gcnB0CiAgICBlcnIgPSBlcnI/LnJlbW90ZSB8fCBlcnIgfHwgbmV3IEVycm9yKGBVbmtub3duIGVycm9yOiAiJHtlcnJ9ImApCiAgICBjb25zdCB4ID0gJ1x4MUJbMzFt4pyWIFx4MUJbMzltJwogICAgY29uc3QgcHJlZ3VpID0gdGhpcy5oYW5kbGUgPT09IG51bGwgfHwgdGhpcy5vcGVuID09PSBmYWxzZQogICAgaWYgKHByZWd1aSkgewogICAgICBpZiAoZXJyLmNvZGUgPT09ICdFUlJfQ09OTkVDVElPTicpIHsKICAgICAgICBjb25zb2xlLmVycm9yKGAke3h9IENvbm5lY3Rpb24gRXJyb3JcbiAgICogY2hlY2sgbmV0d29yayBjb25uZWN0aW9uXG4gICAqIGNoZWNrIHJ1biBrZXlgKQogICAgICB9IGVsc2UgaWYgKGVyci5jb2RlID09PSAnRVJSX0lOVkFMSURfS0VZJykgewogICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7eH0gJHtlcnIubWVzc2FnZX1gKQogICAgICB9IGVsc2UgewogICAgICAgIGNvbnNvbGUudHJhY2UocHJvY2Vzcy5waWQsIGAke3h9IFBsYXRmb3JtIEluaXRpYWxpemF0aW9uYCwgZXJyKQogICAgICB9CiAgICAgIHByb2Nlc3MuZXhpdCgxKQogICAgfQogICAgcnB0LmVyciA9IHsgbWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2ssIGNvZGU6IGVyci5jb2RlIH0KICAgIHRyeSB7CiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlwYy5jcmVhdGVSZXBvcnQocnB0KQogICAgfSBjYXRjaCAoaXBjRXJyKSB7CiAgICAgIGNvbnN0IHRpbWVkb3V0ID0gaXBjRXJyLm5hbWUgPT09ICdUaW1lb3V0RXJyb3InICYmIGlwY0Vyci5jb2RlID09PSBpcGNFcnIuVElNRU9VVF9FUlIKICAgICAgaWYgKGVycj8uY29kZSA9PT0gJ0VSUl9GQUlMRUQnKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgYXBwIChvciBhcHAgd2FzIGNsb3NlZCBlYXJseSknKQogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VfSEFMVEVEJykgcmV0dXJuCiAgICAgIGlmIChlcnIpIGNvbnNvbGUuZXJyb3IoYCR7eH0gUGxhdGZvcm1gLCBlcnIpCiAgICAgIGVsc2UgaWYgKGVyciAmJiB0aW1lZG91dCkgcmV0dXJuCiAgICAgIGlmIChpcGNFcnIuY29kZSA9PT0gJ0VfSEFMVEVEJykgcmV0dXJuCiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7eH0gUGxhdGZvcm0gSVBDYCwgaXBjRXJyKQogICAgfQogIH0KCiAgYXN5bmMgc3RhcnQgKCkgewogICAgZWxlY3Ryb24uYXBwLm9uY2UoJ3dpbGwtcXVpdCcsIGFzeW5jIChlKSA9PiB7CiAgICAgIGlmICh0aGlzLmNsb3NpbmcgPT09IG51bGwgJiYgdGhpcy5jbG9zZWQgPT09IGZhbHNlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgYXdhaXQgdGhpcy5jbG9zZSgpCiAgICAgICAgdGhpcy5xdWl0KCkKICAgICAgfQogICAgfSkKCiAgICBlbGVjdHJvbi5hcHAub24oJ2FwcC1leGl0JywgKCkgPT4gewogICAgICBlbGVjdHJvbi5hcHAuZXhpdCgpCiAgICB9KQoKICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXMKCiAgICB0aGlzLnN0YXJ0aW5nID0gdGhpcy5pcGMuaWRlbnRpZnkoeyBzdGFydElkOiBnbG9iYWwuUGVhci5jb25zdHJ1Y3Rvci5SVEkuc3RhcnRJZCwgc3RhcnRXYWl0OiB0cnVlIH0pCgogICAgdGhpcy5zdGFydGluZy5jYXRjaChhc3luYyAoZXJyKSA9PiB7CiAgICAgIGF3YWl0IHRoaXMucmVwb3J0KHsgZXJyIH0pCiAgICAgIHRoaXMuY2xvc2UoKQogICAgfSkKCiAgICB0cnkgewogICAgICBpZiAodGhpcy5hcHBSZWFkeSA9PT0gZmFsc2UpIHsKICAgICAgICBhd2FpdCBlbGVjdHJvbi5hcHAud2hlblJlYWR5KCkKICAgICAgICBjb25zdCBuYW1lID0gc3RhdGU/Lm5hbWUgfHwgJ3BlYXInCiAgICAgICAgdGhpcy5uYW1lID0gbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKQogICAgICAgIHRoaXMuYXBwUmVhZHkgPSB0cnVlCiAgICAgIH0KCiAgICAgIGNvbnN0IHsgZGV2LCBkZXZ0b29scywgc3RhZ2UgfSA9IHN0YXRlCiAgICAgIGNvbnN0IHNob3cgPSAoZGV2IHx8ICFzdGFnZSkKICAgICAgY29uc3QgcHJlZmlsdGVyZWQgPSBzdGF0ZS5vcHRpb25zPy5ndWkgPz8ge30KCiAgICAgIGNvbnN0IGd1aU9wdGlvbnMgPSB7CiAgICAgICAgYXV0b3Jlc2l6ZTogcHJlZmlsdGVyZWQuYXV0b3Jlc2l6ZSwKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHByZWZpbHRlcmVkLmJhY2tncm91bmRDb2xvciwKICAgICAgICBkZWNhbDogcHJlZmlsdGVyZWQuZGVjYWwsCiAgICAgICAgd2lkdGg6IHBhcnNlQ29uZmlnTnVtYmVyKHByZWZpbHRlcmVkLndpZHRoLCAnZ3VpLndpZHRoJyksCiAgICAgICAgaGVpZ2h0OiBwYXJzZUNvbmZpZ051bWJlcihwcmVmaWx0ZXJlZC5oZWlnaHQsICdndWkuaGVpZ2h0JyksCiAgICAgICAgeDogcGFyc2VDb25maWdOdW1iZXIocHJlZmlsdGVyZWQueCwgJ2d1aS54JyksCiAgICAgICAgeTogcGFyc2VDb25maWdOdW1iZXIocHJlZmlsdGVyZWQueSwgJ2d1aS55JyksCiAgICAgICAgY2VudGVyOiBwcmVmaWx0ZXJlZC5jZW50ZXIsCiAgICAgICAgbWluV2lkdGg6IHBhcnNlQ29uZmlnTnVtYmVyKHByZWZpbHRlcmVkLm1pbldpZHRoLCAnZ3VpLm1pbldpZHRoJyksCiAgICAgICAgbWluSGVpZ2h0OiBwYXJzZUNvbmZpZ051bWJlcihwcmVmaWx0ZXJlZC5taW5IZWlnaHQsICdndWkubWluSGVpZ2h0JyksCiAgICAgICAgbWF4V2lkdGg6IHBhcnNlQ29uZmlnTnVtYmVyKHByZWZpbHRlcmVkLm1heFdpZHRoLCAnZ3VpLm1heFdpZHRoJyksCiAgICAgICAgbWF4SGVpZ2h0OiBwYXJzZUNvbmZpZ051bWJlcihwcmVmaWx0ZXJlZC5tYXhIZWlnaHQsICdndWkubWF4SGVpZ2h0JyksCiAgICAgICAgcmVzaXphYmxlOiBwcmVmaWx0ZXJlZC5yZXNpemFibGUsCiAgICAgICAgbW92YWJsZTogcHJlZmlsdGVyZWQubW92YWJsZSwKICAgICAgICBtaW5pbWl6YWJsZTogcHJlZmlsdGVyZWQubWluaW1pemFibGUsCiAgICAgICAgbWF4aW1pemFibGU6IHByZWZpbHRlcmVkLm1heGltaXphYmxlLAogICAgICAgIGNsb3NhYmxlOiBwcmVmaWx0ZXJlZC5jbG9zYWJsZSwKICAgICAgICBmb2N1c2FibGU6IHByZWZpbHRlcmVkLmZvY3VzYWJsZSwKICAgICAgICBhbHdheXNPblRvcDogcHJlZmlsdGVyZWQuYWx3YXlzT25Ub3AsCiAgICAgICAgZnVsbHNjcmVlbjogcHJlZmlsdGVyZWQuZnVsbHNjcmVlbiwKICAgICAgICBraW9zazogcHJlZmlsdGVyZWQua2lvc2ssCiAgICAgICAgYXV0b0hpZGVNZW51QmFyOiBwcmVmaWx0ZXJlZC5hdXRvSGlkZU1lbnVCYXIsCiAgICAgICAgaGFzU2hhZG93OiBwcmVmaWx0ZXJlZC5oYXNTaGFkb3csCiAgICAgICAgb3BhY2l0eTogcHJlZmlsdGVyZWQub3BhY2l0eSwKICAgICAgICB0cmFuc3BhcmVudDogcHJlZmlsdGVyZWQudHJhbnNwYXJlbnQsCiAgICAgICAgY2xvc2VIaWRlczogcHJlZmlsdGVyZWQuY2xvc2VIaWRlcyA/PyBwcmVmaWx0ZXJlZFtwcm9jZXNzLnBsYXRmb3JtXT8uY2xvc2VIaWRlcyA/PyBmYWxzZSwKICAgICAgICB1c2VyQWdlbnQ6IHByZWZpbHRlcmVkLnVzZXJBZ2VudAogICAgICB9CgogICAgICBjb25zdCBkZWNhbFNlc3Npb24gPSBlbGVjdHJvbi5zZXNzaW9uLmZyb21QYXJ0aXRpb24oJ3BlcnNpc3Q6cGVhcicpCgogICAgICBkZWNhbFNlc3Npb24uc2V0VXNlckFnZW50KCdQZWFyIFBsYXRmb3JtJykKICAgICAgY29uc3QgZW50cnkgPSBzdGF0ZS5yb3V0ZQoKICAgICAgc3RhdGUudXBkYXRlKHsgY29uZmlnOiBzdGF0ZS5jb25zdHJ1Y3Rvci5jb25maWdGcm9tKHN0YXRlKSB9KQoKICAgICAgY29uc3QgY3RybCA9IGF3YWl0IFBlYXJHVUkuY3RybCgnd2luZG93JywgZW50cnksIHsgc3RhdGUgfSwgewogICAgICAgIC4uLmd1aU9wdGlvbnMsCiAgICAgICAgYWZ0ZXJJbnN0YW50aWF0aW9uOiAoYXBwKSA9PiB7CiAgICAgICAgICB0aGlzLmhhbmRsZSA9IGFwcAogICAgICAgICAgdGhpcy5tZW51LnJlbmRlcigpCiAgICAgICAgfSwKICAgICAgICBtYW51YWxWaWV3UmV2ZWFsOiB0cnVlLAogICAgICAgIGF0OiBfX2ZpbGVuYW1lLAogICAgICAgIHdpbmRvdzogewogICAgICAgICAgc2hvdywKICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwMDAnLAogICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsCiAgICAgICAgICB0aXRsZTogKHN0YXRlLmFwcGxpbmcgJiYgc3RhdGUuYXBwbGluZy5uYW1lKSB8fCB1bmRlZmluZWQsCiAgICAgICAgICBpY29uOiAoc3RhdGUuYXBwbGluZyAmJiBzdGF0ZS5hcHBsaW5nLmljb24pIHx8IHVuZGVmaW5lZCwKICAgICAgICAgIHdlYlByZWZlcmVuY2VzOiB7CiAgICAgICAgICAgIHRpdGxlOiBgUGVhciAke3N0YXRlLm5hbWV9IChkZWNhbClgLAogICAgICAgICAgICBkZXZUb29sczogdHJ1ZQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdmlldzogewogICAgICAgICAgaGVpZ2h0OiBndWlPcHRpb25zLmhlaWdodCwKICAgICAgICAgIHdpZHRoOiBndWlPcHRpb25zLndpZHRoLAogICAgICAgICAgd2ViUHJlZmVyZW5jZXM6IHsKICAgICAgICAgICAgdGl0bGU6IGBQZWFyOiAke3N0YXRlLm5hbWV9YCwKICAgICAgICAgICAgZGV2VG9vbHM6IHRydWUsCiAgICAgICAgICAgIGdldCBiYWNrZ3JvdW5kQ29sb3IgKCkgewogICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5vcHRpb25zLnRyYW5zcGFyZW50ID8gJyMwMDAwMDAwMCcgOiAoc3RhdGUub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IgfHwgJyNGRkYnKQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhZnRlck5hdGl2ZVdpbmRvd0Nsb3NlOiAoKSA9PiB0aGlzLmNsb3NlKCksCiAgICAgICAgYWZ0ZXJOYXRpdmVWaWV3Q3JlYXRlZDogZGV2dG9vbHMgJiYgKChhcHApID0+IHsKICAgICAgICAgIGFwcC52aWV3LndlYkNvbnRlbnRzLm9wZW5EZXZUb29scyh7IG1vZGU6ICdkZXRhY2gnIH0pCiAgICAgICAgICBpZiAoYXBwLnN0YXRlLmNocm9tZVdlYnJ0Y0ludGVybmFscykgUGVhckdVSS5jaHJvbWUoJ3dlYnJ0Yy1pbnRlcm5hbHMnKQogICAgICAgIH0pLAogICAgICAgIGFmdGVyTmF0aXZlVmlld0xvYWRlZDogaXNMaW51eCA/IChhcHApID0+IGxpbnV4Vmlld1NpemUoYXBwKSA6IG51bGwsCiAgICAgICAgaW50ZXJsb2FkOiBhc3luYyAoYXBwKSA9PiB7CiAgICAgICAgICBzdGF0ZS51cGRhdGUoeyB0b3A6IGFwcC53aW4gfSkKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmIChhcHAuY2xvc2luZykgcmV0dXJuIGZhbHNlCiAgICAgICAgICAgIGlmIChzdGF0ZS50eXBlID09PSAnY29tbW9uanMnKSB7CiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcidHlwZSI6ICJjb21tb25qcyIgb3Igbm8gInR5cGUiIGluIGFwcGxpY2F0aW9uIHBhY2thZ2UuanNvbi4gUGVhciBEZXNrdG9wIEFwcGxpY2F0aW9ucyBhcmUgbmF0aXZlIEVjbWFTY3JpcHQgTW9kdWxlIChFU00pIHN5bnRheCBvbmx5IChDSlMgbW9kdWxlcyBjYW4gYmUgY29uc3VtZWQsIGJ1dCBhcHBsaWNhdGlvbnMgbXVzdCBiZSBFU00pLiBUbyBvcHQgaW50byBFU00sIHNldCB0aGUgcGFja2FnZS5qc29uICJ0eXBlIiBmaWVsZCB0byAibW9kdWxlIi4nKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHsgaWQgfSA9IGF3YWl0IHRoaXMuc3RhcnRpbmcKICAgICAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5pcGMuY29uZmlnKCkKICAgICAgICAgICAgc3RhdGUudXBkYXRlKHsgaWQsIGNvbmZpZyB9KQogICAgICAgICAgICBhcHBseUd1aU9wdGlvbnMoYXBwLndpbiwgc3RhdGUuY29uZmlnLm9wdGlvbnMuZ3VpID8/IHt9KQogICAgICAgICAgICBpZiAoYXBwLmNsb3NpbmcpIHJldHVybiBmYWxzZQogICAgICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVwb3J0KHsgZXJyIH0pCiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xvc2UoKQogICAgICAgICAgICByZXR1cm4gZmFsc2UKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pCgogICAgICBlbGVjdHJvbi5hcHAub25jZSgnYmVmb3JlLXF1aXQnLCAoKSA9PiB7CiAgICAgICAgY3RybC5xdWl0dGluZyA9IHRydWUKICAgICAgfSkKCiAgICAgIHRoaXMuaWQgPSBjdHJsLmlkCiAgICAgIGF3YWl0IHRoaXMuc3RhcnRpbmcKICAgIH0gY2F0Y2ggKGVycikgewogICAgICBhd2FpdCB0aGlzLnJlcG9ydCh7IGVyciB9KQogICAgICB0aGlzLmNsb3NlKCkKICAgIH0gZmluYWxseSB7CiAgICAgIHRoaXMuc3RhcnRpbmcgPSBudWxsCiAgICB9CiAgfQoKICBhc3luYyB2ZXJzaW9uICgpIHsKICAgIGNvbnN0IHsgZm9yaywgbGVuZ3RoLCBrZXkgfSA9IGF3YWl0IHRoaXMudXBkYXRlci5jdXJyZW50VmVyc2lvbigpCiAgICByZXR1cm4geyBmb3JrLCBsZW5ndGgsIGtleToga2V5ID8ga2V5LnRvU3RyaW5nKCdoZXgnKSA6IG51bGwgfQogIH0KCiAgY3V0b3ZlciAoKSB7IHJldHVybiB0aGlzLmlwYy5jdXRvdmVyKCkgfQoKICB1bmxvYWRpbmcgKCkgeyByZXR1cm4gdGhpcy5pcGMudW5sb2FkaW5nKCkgfQoKICBjbG9zZSAobWF4V2FpdCA9IDU1MDApIHsKICAgIGlmICh0aGlzLmNsb3NpbmcpIHJldHVybiB0aGlzLmNsb3NpbmcKICAgIHRoaXMuY2xvc2luZyA9IHRoaXMuI2Nsb3NlKG1heFdhaXQpCiAgICByZXR1cm4gdGhpcy5jbG9zaW5nCiAgfQoKICBhc3luYyAjY2xvc2UgKG1heFdhaXQpIHsKICAgIGxldCBjbGVhciA9IG51bGwKICAgIGNvbnN0IHRpbWVvdXQgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICBjb25zdCB0aWQgPSBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUodHJ1ZSksIG1heFdhaXQpCiAgICAgIGNsZWFyID0gKCkgPT4gewogICAgICAgIGNsZWFyVGltZW91dCh0aWQpCiAgICAgICAgcmVzb2x2ZShmYWxzZSkKICAgICAgfQogICAgfSkKICAgIGNvbnN0IHVubG9hZGVycyA9IFBlYXJHVUkuY3RybHMoKS5tYXAoKGN0cmwpID0+IHsKICAgICAgY29uc3QgY2xvc2VkID0gKCkgPT4gY3RybC5jbG9zZWQKICAgICAgaWYgKCFjdHJsLnVubG9hZCkgewogICAgICAgIGlmIChjdHJsLnVubG9hZGVyKSByZXR1cm4gY3RybC51bmxvYWRlci50aGVuKGNsb3NlZCwgY2xvc2VkKQogICAgICAgIHJldHVybiBjdHJsLmNsb3NlKCkKICAgICAgfQogICAgICBjdHJsLnVubG9hZCh7IHR5cGU6ICdjbG9zZScgfSkKICAgICAgcmV0dXJuIGN0cmwudW5sb2FkZXIudGhlbihjbG9zZWQsIGNsb3NlZCkKICAgIH0pCiAgICBjb25zdCB1bmxvYWRpbmcgPSBQcm9taXNlLmFsbFNldHRsZWQodW5sb2FkZXJzKQogICAgdW5sb2FkaW5nLnRoZW4oY2xlYXIsIGNsZWFyKQogICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFt0aW1lb3V0LCB1bmxvYWRpbmddKQoKICAgIGZvciAobGV0IGlkID0gMDsgaWQgPCB0aGlzLmd1aS5zdHJlYW1zLmFsbG9jZWQubGVuZ3RoOyBpZCsrKSB7CiAgICAgIGlmICh0aGlzLmd1aS5zdHJlYW1zTWFwLmdldChpZCkgPT09IHRoaXMuaWQpIHsKICAgICAgICBjb25zdCBzdHJlYW0gPSB0aGlzLmd1aS5zdHJlYW1zLmFsbG9jZWRbaWRdCiAgICAgICAgaWYgKHR5cGVvZiBzdHJlYW0uZW5kID09PSAnZnVuY3Rpb24nKSBzdHJlYW0uZW5kKCkKICAgICAgICBlbHNlIHN0cmVhbS5wdXNoKG51bGwpCiAgICAgIH0KICAgIH0KCiAgICB0aGlzLmNsb3NlZCA9IHRydWUKICAgIHJldHVybiByZXN1bHQKICB9CgogIHF1aXQgKGNvZGUpIHsKICAgIHJldHVybiBlbGVjdHJvbi5hcHAucXVpdChjb2RlKQogIH0KfQoKZnVuY3Rpb24gbGludXhWaWV3U2l6ZSAoeyB3aW4sIHZpZXcgfSkgewogIGNvbnN0IFt3aWR0aCwgaGVpZ2h0XSA9IHdpbi5nZXRTaXplKCkKICB2aWV3LnNldEJvdW5kcyh7IHg6IDAsIHk6IDAsIHdpZHRoLCBoZWlnaHQgfSkKICB2aWV3LnNldEF1dG9SZXNpemUoewogICAgd2lkdGg6IHRydWUsCiAgICBoZWlnaHQ6IHRydWUKICB9KQp9CgpmdW5jdGlvbiBhcHBseUd1aU9wdGlvbnMgKHdpbiwgb3B0cykgewogIGNvbnN0IHBsYXRmb3JtT3B0cyA9IG9wdHNbcHJvY2Vzcy5wbGF0Zm9ybV0gfHwge30KICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBncm91cGluZ3Mod2luLCB7IC4uLm9wdHMsIC4uLnBsYXRmb3JtT3B0cyB9KSkgewogICAgYXBwbHlHdWlPcHRpb24od2luLCBrZXksIHZhbHVlKQogIH0KfQoKZnVuY3Rpb24gYXBwbHlHdWlPcHRpb24gKHdpbiwga2V5LCB2YWx1ZSkgewogIHN3aXRjaCAoa2V5KSB7CiAgICBjYXNlICd3aWR0aDpoZWlnaHQnOiB7CiAgICAgIGNvbnN0IFtjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHRdID0gd2luLmdldFNpemUoKQogICAgICBjb25zdCBbY3VyWCwgY3VyWV0gPSB3aW4uZ2V0UG9zaXRpb24oKQogICAgICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSB2YWx1ZQogICAgICBsZXQgeCA9IE1hdGgucm91bmQoY3VyWCAtICgod2lkdGggLSBjdXJyZW50V2lkdGgpIC8gMikpCiAgICAgIGxldCB5ID0gTWF0aC5yb3VuZChjdXJZIC0gKChoZWlnaHQgLSBjdXJyZW50SGVpZ2h0KSAvIDIpKQogICAgICB4ID0geCA8IDAgPyAwIDogeAogICAgICB5ID0geSA8IDAgPyAwIDogeQogICAgICB0cnkgeyB3aW4uc2V0UG9zaXRpb24oeCwgeSkgfSBjYXRjaCB7IC8qIGlnbm9yZSAqLyB9CiAgICAgIHJldHVybiB3aW4uc2V0U2l6ZShwYXJzZUNvbmZpZ051bWJlcih3aWR0aCwgJ2d1aS53aWR0aCcpLCBwYXJzZUNvbmZpZ051bWJlcihoZWlnaHQsICdndWkuaGVpZ2h0JykpCiAgICB9CiAgICBjYXNlICd4OnknOiByZXR1cm4gd2luLnNldFBvc2l0aW9uKHZhbHVlWzBdLCB2YWx1ZVsxXSkKICAgIGNhc2UgJ2NlbnRlcic6IHJldHVybiB2YWx1ZSAmJiB3aW4uY2VudGVyKCkKICAgIGNhc2UgJ21pbldpZHRoOm1pbkhlaWdodCc6IHJldHVybiB3aW4uc2V0TWluaW11bVNpemUocGFyc2VDb25maWdOdW1iZXIodmFsdWVbMF0sICdndWkubWluV2lkdGgnKSwgcGFyc2VDb25maWdOdW1iZXIodmFsdWVbMV0sICdndWkubWluSGVpZ2h0JykpCiAgICBjYXNlICdtYXhXaWR0aDptYXhIZWlnaHQnOiByZXR1cm4gd2luLnNldE1heGltdW1TaXplKHBhcnNlQ29uZmlnTnVtYmVyKHZhbHVlWzBdLCAnZ3VpLm1heFdpZHRoJyksIHBhcnNlQ29uZmlnTnVtYmVyKHZhbHVlWzFdLCAnZ3VpLm1heEhlaWdodCcpKQogICAgY2FzZSAncmVzaXphYmxlJzogcmV0dXJuIHdpbi5zZXRSZXNpemFibGUodmFsdWUpCiAgICBjYXNlICdtb3ZhYmxlJzogcmV0dXJuIHdpbi5zZXRNb3ZhYmxlKHZhbHVlKQogICAgY2FzZSAnbWluaW1pemFibGUnOiByZXR1cm4gd2luLnNldE1pbmltaXphYmxlKHZhbHVlKQogICAgY2FzZSAnbWF4aW1pemFibGUnOiByZXR1cm4gd2luLnNldE1heGltaXphYmxlKHZhbHVlKQogICAgY2FzZSAnY2xvc2FibGUnOiByZXR1cm4gd2luLnNldENsb3NhYmxlKHZhbHVlKQogICAgY2FzZSAnZm9jdXNhYmxlJzogcmV0dXJuIHdpbi5zZXRGb2N1c2FibGUodmFsdWUpCiAgICBjYXNlICdhbHdheXNPblRvcCc6IHJldHVybiB3aW4uc2V0QWx3YXlzT25Ub3AodmFsdWUpCiAgICBjYXNlICdmdWxsc2NyZWVuJzogewogICAgICB3aW4uc2V0RnVsbFNjcmVlbih2YWx1ZSkKICAgICAgd2luLm9uY2UoJ2VudGVyLWZ1bGwtc2NyZWVuJywgKCkgPT4gewogICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gd2luLmdldEJvdW5kcygpCiAgICAgICAgY29uc3QgW3ZpZXddID0gd2luLmdldEJyb3dzZXJWaWV3cygpCiAgICAgICAgdmlldy5zZXRCb3VuZHMoeyB4OiAwLCB5OiAwLCB3aWR0aCwgaGVpZ2h0IH0pCiAgICAgIH0pCiAgICAgIHJldHVybgogICAgfQogICAgY2FzZSAna2lvc2snOiByZXR1cm4gd2luLnNldEtpb3NrKHZhbHVlKQogICAgY2FzZSAnYXV0b0hpZGVNZW51QmFyJzogcmV0dXJuIHdpbi5zZXRBdXRvSGlkZU1lbnVCYXIodmFsdWUpCiAgICBjYXNlICdoYXNTaGFkb3cnOiByZXR1cm4gd2luLnNldEhhc1NoYWRvdyh2YWx1ZSkKICAgIGNhc2UgJ29wYWNpdHknOiByZXR1cm4gd2luLnNldE9wYWNpdHkodmFsdWUpCiAgICBjYXNlICd0cmFuc3BhcmVudCc6IHsKICAgICAgLy8gY2hhbmdpbmcgdGhlIHNpemUgaXMgYSBoYWNrIHRoYXQgZm9yY2VzIGVsZWN0cm9uCiAgICAgIC8vIHRvIGJlaGF2ZSB3aGVuIGl0IGNvbWVzIHRvIHRyYW5zcGFyZW5jeQogICAgICBjb25zdCBbdywgaF0gPSB3aW4uZ2V0U2l6ZSgpCiAgICAgIHdpbi5zZXRTaXplKHcsIGggLSAxLCBmYWxzZSkKICAgICAgd2luLnNldFNpemUodywgaCwgZmFsc2UpCiAgICAgIHJldHVybiB2YWx1ZSA/IHdpbi5zZXRCYWNrZ3JvdW5kQ29sb3IoJyMwMDAwMDAwMCcpIDogd2luLnNldEJhY2tncm91bmRDb2xvcignIzAwMCcpCiAgICB9CiAgICBjYXNlICdjbG9zZUhpZGVzJzogd2luLmNsb3NlSGlkZXMgPSB2YWx1ZQogIH0KfQoKZnVuY3Rpb24gZ3JvdXAgKHdpbiwgb3B0cywgc2Vlbiwga2V5LCB2YWx1ZSwgaW5kZXgsIGNvdW50ZXJwYXJ0LCBnZXR0ZXIpIHsKICBjb25zdCB0dXBsZSA9IHdpbltnZXR0ZXJdKCkKICB0dXBsZVtpbmRleF0gPSB2YWx1ZQogIGlmIChjb3VudGVycGFydCBpbiBvcHRzKSB0dXBsZVsxIC0gaW5kZXhdID0gb3B0c1tjb3VudGVycGFydF0KICBzZWVuLmFkZChjb3VudGVycGFydCkKICBjb25zdCBqb2luID0gaW5kZXggPT09IDAgPyBgJHtrZXl9OiR7Y291bnRlcnBhcnR9YCA6IGAke2NvdW50ZXJwYXJ0fToke2tleX1gCiAgcmV0dXJuIFtqb2luLCB0dXBsZV0KfQoKZnVuY3Rpb24gKiBncm91cGluZ3MgKHdpbiwgb3B0cykgewogIGNvbnN0IHNlZW4gPSBuZXcgU2V0KFsnd2ViUHJlZmVyZW5jZXMnXSkKICBjb25zdCBwcmlvcml0eSA9IFsnY2VudGVyJywgJ2Z1bGxzY3JlZW5hYmxlJ10KICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob3B0cykuc29ydCgoW2FdLCBbYl0pID0+IHByaW9yaXR5LmluZGV4T2YoYikgLSBwcmlvcml0eS5pbmRleE9mKGEpKQogIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJpZXMpIHsKICAgIGlmIChzZWVuLmhhcyhrZXkpKSBjb250aW51ZQogICAgaWYgKGtleSA9PT0gJ3dpZHRoJykgeWllbGQgZ3JvdXAod2luLCBvcHRzLCBzZWVuLCBrZXksIHZhbHVlLCAwLCAnaGVpZ2h0JywgJ2dldFNpemUnKQogICAgZWxzZSBpZiAoa2V5ID09PSAnaGVpZ2h0JykgeWllbGQgZ3JvdXAod2luLCBvcHRzLCBzZWVuLCBrZXksIHZhbHVlLCAxLCAnd2lkdGgnLCAnZ2V0U2l6ZScpCiAgICBlbHNlIGlmIChrZXkgPT09ICd4JykgeWllbGQgZ3JvdXAod2luLCBvcHRzLCBzZWVuLCBrZXksIHZhbHVlLCAwLCAneScsICdnZXRQb3NpdGlvbicpCiAgICBlbHNlIGlmIChrZXkgPT09ICd5JykgeWllbGQgZ3JvdXAod2luLCBvcHRzLCBzZWVuLCBrZXksIHZhbHVlLCAxLCAneCcsICdnZXRQb3NpdGlvbicpCiAgICBlbHNlIGlmIChrZXkgPT09ICdtaW5XaWR0aCcpIHlpZWxkIGdyb3VwKHdpbiwgb3B0cywgc2Vlbiwga2V5LCB2YWx1ZSwgMCwgJ21pbkhlaWdodCcsICdnZXRNaW5pbXVtU2l6ZScpCiAgICBlbHNlIGlmIChrZXkgPT09ICdtaW5IZWlnaHQnKSB5aWVsZCBncm91cCh3aW4sIG9wdHMsIHNlZW4sIGtleSwgdmFsdWUsIDEsICdtaW5XaWR0aCcsICdnZXRNaW5pbXVtU2l6ZScpCiAgICBlbHNlIGlmIChrZXkgPT09ICdtYXhXaWR0aCcpIHlpZWxkIGdyb3VwKHdpbiwgb3B0cywgc2Vlbiwga2V5LCB2YWx1ZSwgMCwgJ21heEhlaWdodCcsICdnZXRNYXhpbXVtU2l6ZScpCiAgICBlbHNlIGlmIChrZXkgPT09ICdtYXhIZWlnaHQnKSB5aWVsZCBncm91cCh3aW4sIG9wdHMsIHNlZW4sIGtleSwgdmFsdWUsIDEsICdtYXhXaWR0aCcsICdnZXRNYXhpbXVtU2l6ZScpCiAgICBlbHNlIHlpZWxkIFtrZXksIHZhbHVlXQogIH0KfQoKY29uc3QgaWRpZnkgPSAoaW5zdGFuY2UpID0+IHsKICBjb25zdCB7IHZpZXcsIHdpbiB9ID0gaW5zdGFuY2UKICBpZiAoIXdpbiAmJiAhdmlldykgcmV0dXJuIGZhbHNlCiAgY29uc3QgeyB3ZWJDb250ZW50cyB9ID0gdmlldyB8fCB3aW4KICByZXR1cm4gd2ViQ29udGVudHMuaWQKfQoKY29uc3QgREVGX0JHID0gJyMxRjI0MzAnCmNvbnN0IG5vb3AgPSAoKSA9PiB7fQoKY2xhc3MgR3VpQ3RybCB7CiAgW2tDdHJsXSA9IG51bGwKICB3aW4gPSBudWxsCiAgdmlldyA9IG51bGwKICBpZCA9IG51bGwKICB1bmxvYWQgPSBudWxsCiAgdW5sb2FkZXIgPSBudWxsCiAgdW5sb2FkZWQgPSBudWxsCiAgI3VubG9hZGluZyA9IG51bGwKICBhcHBraW4gPSBudWxsCiAgcXVpdHRpbmcgPSBmYWxzZQogIHN0YXRpYyBoZWlnaHQgPSA1NDAKICBzdGF0aWMgd2lkdGggPSA3MjAKICBzdGF0aWMgW2tDdHJsXSA9IG51bGwKICBzdGF0aWMgW2tNYXBdID0gbmV3IE1hcCgpCgogIGNvbnN0cnVjdG9yIChlbnRyeSwgb3B0aW9ucywgeyBzdGF0ZSwgcGFyZW50SWQsIHNlc3NuYW1lLCBhcHBraW4gfSkgewogICAgdGhpcy5oaWRkZW4gPSBmYWxzZQogICAgdGhpc1trQ3RybF0gPSB0aGlzLmNvbnN0cnVjdG9yW2tDdHJsXQogICAgaWYgKCFlbnRyeSkgdGhyb3cgbmV3IEVycm9yKGBObyBwYXRoIHByb3ZpZGVkLCBjYW5ub3Qgb3BlbiAke3RoaXNba0N0cmxdfWApCiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zCiAgICB0aGlzLnN0YXRlID0gc3RhdGUKICAgIHRoaXMucGFyZW50SWQgPSBwYXJlbnRJZAogICAgdGhpcy5jbG9zZWQgPSB0cnVlCiAgICB0aGlzLmlkID0gbnVsbAogICAgdGhpcy5ydGkgPSB0aGlzLnN0YXRlLnJ0aQogICAgdGhpcy5icmlkZ2UgPSB0aGlzLnJ0aT8uYnJpZGdlID8/IG51bGwKICAgIHRoaXMuYnJpZGdlVVJMID0gdGhpcy5icmlkZ2UgPyBuZXcgVVJMKHRoaXMuYnJpZGdlKSA6IG51bGwKICAgIHRoaXMuZW50cnkgPSB0aGlzLmJyaWRnZSA9PT0gbnVsbCA/IGVudHJ5IDogYCR7dGhpcy5icmlkZ2V9JHtlbnRyeX1gCiAgICB0aGlzLnNlc3NuYW1lID0gc2Vzc25hbWUKICAgIHRoaXMuYXBwa2luID0gYXBwa2luCiAgfQoKICBnZXQgc2Vzc2lvbiAoKSB7CiAgICByZXR1cm4gdGhpcy52aWV3ID8gdGhpcy52aWV3LndlYkNvbnRlbnRzLnNlc3Npb24gOiAodGhpcy53aW4gPyB0aGlzLndpbi53ZWJDb250ZW50cy5zZXNzaW9uIDogbnVsbCkKICB9CgogIGdldCBjb250ZW50VmlldyAoKSB7CiAgICByZXR1cm4gdGhpcy52aWV3ID8gdGhpcy52aWV3IDogKHRoaXMud2luID8gdGhpcy53aW4gOiBudWxsKQogIH0KCiAgZ2V0IHRpdGxlICgpIHsKICAgIHJldHVybiB0aGlzLmNvbnRlbnRWaWV3Py53ZWJDb250ZW50cz8uZ2V0VGl0bGUoKSB8fCB0aGlzLmVudHJ5CiAgfQoKICBuYXYgPSAoZXZlbnQsIHVybCkgPT4gewogICAgaWYgKHRoaXMuYnJpZGdlICE9PSBudWxsICYmIHVybC5zdGFydHNXaXRoKHRoaXMuYnJpZGdlKSkgcmV0dXJuCiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpCiAgICBlbGVjdHJvbi5zaGVsbC5vcGVuRXh0ZXJuYWwodXJsKS5jYXRjaChjb25zb2xlLmVycm9yKQogIH0KCiAgb3BlbiAoKSB7CiAgICBjb25zdCBoYW5kbGVyID0gKHdjKSA9PiAoeyB1cmwgfSkgPT4gewogICAgICBpZiAodGhpcy5icmlkZ2UgIT09IG51bGwgJiYgdXJsLnN0YXJ0c1dpdGgodGhpcy5icmlkZ2UpKSB7CiAgICAgICAgd2MuZXhlY3V0ZUphdmFTY3JpcHQoYGNvbnNvbGUuZXJyb3IoJ3BlYXItZWxlY3Ryb246IElsbGVnYWwgdXNlIG9mIHdpbmRvdy5vcGVuIChpZ25vcmluZyAiJHt1cmx9IikuXFxuIPCfkYkgcGVhci1lbGVjdHJvbiB3aW5kb3cub3BlbiBleGNsdXNpdmVseSBvcGVucyBleHRlcm5hbCBVUkxzIGluIGRlZmF1bHQgYnJvd3Nlci4nKWApLmNhdGNoKG5vb3ApCiAgICAgICAgcmV0dXJuCiAgICAgIH0KICAgICAgZWxlY3Ryb24uc2hlbGwub3BlbkV4dGVybmFsKHVybCkKICAgICAgcmV0dXJuIHsgYWN0aW9uOiAnZGVueScgfQogICAgfQogICAgdGhpcy53aW4/LndlYkNvbnRlbnRzLnNldFdpbmRvd09wZW5IYW5kbGVyKGhhbmRsZXIodGhpcy53aW4ud2ViQ29udGVudHMpKQogICAgdGhpcy53aW4/LndlYkNvbnRlbnRzLm9uKCd3aWxsLW5hdmlnYXRlJywgdGhpcy5uYXYpCiAgICB0aGlzLnZpZXc/LndlYkNvbnRlbnRzLnNldFdpbmRvd09wZW5IYW5kbGVyKGhhbmRsZXIodGhpcy52aWV3LndlYkNvbnRlbnRzKSkKICAgIHRoaXMudmlldz8ud2ViQ29udGVudHMub24oJ3dpbGwtbmF2aWdhdGUnLCB0aGlzLm5hdikKICB9CgogIGZpbmQgKG9wdGlvbnMpIHsKICAgIGNvbnN0IHsgd2ViQ29udGVudHMgfSA9ICh0aGlzLnZpZXcgfHwgdGhpcy53aW4pCiAgICBjb25zdCB7IHRleHQsIG5leHQsIHN0b3AsIC4uLm9wdHMgfSA9IG9wdGlvbnMKICAgIGlmIChzdG9wKSB7CiAgICAgIHdlYkNvbnRlbnRzLnN0b3BGaW5kSW5QYWdlKHN0b3ApCiAgICAgIHJldHVybiAwCiAgICB9CiAgICBpZiAobmV4dCkgewogICAgICBvcHRzLmZpbmROZXh0ID0gdHJ1ZQogICAgICB3ZWJDb250ZW50cy5maW5kSW5QYWdlKCcnLCBvcHRzKQogICAgICByZXR1cm4gMAogICAgfQogICAgcmV0dXJuIHdlYkNvbnRlbnRzLmZpbmRJblBhZ2UodGV4dCwgb3B0cykKICB9CgogIGFzeW5jIGZvY3VzICh7IHN0ZWFsID0gdHJ1ZSB9ID0ge30pIHsKICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuIGZhbHNlCiAgICBpZiAodGhpcy53aW4uaXNGb2N1c2VkKCkpIHJldHVybiB0cnVlCiAgICBpZiAoc3RlYWwpIHsKICAgICAgZWxlY3Ryb24uYXBwLmZvY3VzKHsgc3RlYWw6IHRydWUgfSkKICAgICAgYXdhaXQgdGhpcy5yZXN0b3JlKCkKICAgICAgYXdhaXQgdGhpcy5zaG93KCkKICAgIH0KCiAgICBjb25zdCBmb2N1c2VkID0gb25jZSh0aGlzLndpbiwgJ2ZvY3VzJykKICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud2luLmZvY3VzKCkKICAgIGF3YWl0IGZvY3VzZWQKCiAgICByZXR1cm4gcmVzdWx0CiAgfQoKICBhc3luYyBibHVyICgpIHsKICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuIGZhbHNlCiAgICBpZiAoIXRoaXMud2luLmlzRm9jdXNlZCgpKSByZXR1cm4gdHJ1ZQogICAgY29uc3QgZm9jdXNlZCA9IG9uY2UodGhpcy53aW4sICdibHVyJykKICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud2luLmJsdXIoKQogICAgYXdhaXQgZm9jdXNlZAogICAgcmV0dXJuIHJlc3VsdAogIH0KCiAgYXN5bmMgc2VuZCAoLi4uYXJncykgewogICAgaWYgKHRoaXMuY2xvc2VkKSB0aHJvdyBFcnJvcihgQ2Fubm90IHNlbmQgdG8gY2xvc2VkICR7dGhpc1trQ3RybF19YCkKICAgIGNvbnN0IHsgd2ViQ29udGVudHMgfSA9IHRoaXMudmlldyB8fCB0aGlzLndpbgogICAgcmV0dXJuIHdlYkNvbnRlbnRzLnNlbmQoYG1lc3NhZ2U6JHt0aGlzLmlkfWAsIC4uLmFyZ3MpCiAgfQoKICBhc3luYyBpc0Nsb3NlZCAoKSB7CiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybiB0cnVlCiAgICB0aGlzLmNsb3NlZCA9ICEhKHRoaXMud2luICYmIHRoaXMud2luLmNsb3NlZCkKICAgIHJldHVybiB0aGlzLmNsb3NlZAogIH0KCiAgYXN5bmMgY2xvc2UgKCkgewogICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm4gdHJ1ZQogICAgaWYgKHRoaXMudW5sb2FkKSB7CiAgICAgIHRoaXMudW5sb2FkKHsgdHlwZTogJ2Nsb3NlJyB9KQogICAgICBhd2FpdCB0aGlzLnVubG9hZGVyCiAgICB9CiAgICBsZXQgY2xvc2VyID0gbnVsbAogICAgaWYgKHRoaXMud2luKSB7CiAgICAgIGNsb3NlciA9IG9uY2UodGhpcy53aW4sICdjbG9zZWQnKQogICAgICB0aGlzLndpbi5jbG9zZSgpCiAgICB9CiAgICBhd2FpdCBjbG9zZXIKICAgIHRoaXMuY29uc3RydWN0b3Jba01hcF0uZGVsZXRlKHRoaXMuaWQpCiAgICB0aGlzLmlkID0gbnVsbAogICAgdGhpcy53aW4gPSBudWxsCiAgICB0aGlzLnZpZXcgPSBudWxsCiAgICB0aGlzLmNsb3NlZCA9IHRydWUKICAgIHJldHVybiB0aGlzLmNsb3NlZAogIH0KCiAgYXN5bmMgZGltZW5zaW9ucyAob3B0cyA9IG51bGwpIHsKICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuIG51bGwKICAgIGNvbnN0IGl0ZW0gPSB0aGlzW2tDdHJsXSA9PT0gJ3ZpZXcnID8gdGhpcy52aWV3IDogdGhpcy53aW4KICAgIGNvbnN0IGJvdW5kcyA9IGl0ZW0uZ2V0Qm91bmRzKCkKICAgIGlmIChvcHRzID09PSBudWxsKSByZXR1cm4gYm91bmRzCiAgICBjb25zdCB7CiAgICAgIHggPSBib3VuZHMueCwgeSA9IGJvdW5kcy55LCB3aWR0aCA9IGJvdW5kcy53aWR0aCwgaGVpZ2h0ID0gYm91bmRzLmhlaWdodCwgcG9zaXRpb24KICAgIH0gPSBvcHRzCiAgICBpdGVtLnNldEJvdW5kcyh7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSkKICAgIGlmIChwb3NpdGlvbiA9PT0gJ2NlbnRlcicgJiYgdGhpc1trQ3RybF0gPT09ICd3aW4nKSB7CiAgICAgIGl0ZW0uY2VudGVyKCkKICAgIH0KICB9CgogIGZ1bGxzY3JlZW4gKCkgeyByZXR1cm4gZmFsc2UgfQogIG1heGltaXplICgpIHsgcmV0dXJuIGZhbHNlIH0KICBtaW5pbWl6ZSAoKSB7IHJldHVybiBmYWxzZSB9CiAgaXNNYXhpbWl6ZWQgKCkgeyByZXR1cm4gZmFsc2UgfQogIGlzTWluaW1pemVkICgpIHsgcmV0dXJuIGZhbHNlIH0KICBpc0Z1bGxzY3JlZW4gKCkgeyByZXR1cm4gZmFsc2UgfQogIGlzVmlzaWJsZSAoKSB7IHJldHVybiAhdGhpcy5oaWRkZW4gfQogIGFzeW5jIHVubG9hZGluZyAoKSB7CiAgICBpZiAoIXRoaXMuI3VubG9hZGluZykgdGhpcy4jdW5sb2FkaW5nID0gdGhpcy5fdW5sb2FkaW5nKCkKICAgIHRyeSB7CiAgICAgIHJldHVybiBhd2FpdCB0aGlzLiN1bmxvYWRpbmcKICAgIH0gZmluYWxseSB7CiAgICAgIHRoaXMuI3VubG9hZGluZyA9IG51bGwKICAgIH0KICB9CgogIGFzeW5jIF91bmxvYWRpbmcgKCkgewogICAgY29uc3QgeyB3ZWJDb250ZW50cyB9ID0gKHRoaXMudmlldyB8fCB0aGlzLndpbikKICAgIGNvbnN0IHVudGlsID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsgdGhpcy51bmxvYWQgPSByZXNvbHZlIH0pCiAgICB3ZWJDb250ZW50cy5vbmNlKCd3aWxsLW5hdmlnYXRlJywgKGUsIHVybCkgPT4gewogICAgICBpZiAodGhpcy5icmlkZ2UgPT09IG51bGwgfHwgIXVybC5zdGFydHNXaXRoKHRoaXMuYnJpZGdlKSkgcmV0dXJuIC8vIGhhbmRsZWQgYnkgdGhlIG90aGVyIHdpbGwtbmF2aWdhdGUgaGFuZGxlcgogICAgICBlLnByZXZlbnREZWZhdWx0KCkKICAgICAgY29uc3QgdHlwZSA9ICghZS5mcmFtZSB8fCBlLmZyYW1lLnVybCA9PT0gdXJsKSA/ICdyZWxvYWQnIDogJ25hdicKICAgICAgdGhpcy51bmxvYWQoeyB0eXBlLCB1cmwgfSkKICAgIH0pCgogICAgY29uc3QgY2xvc2VMaXN0ZW5lciA9IChlKSA9PiB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICBpZiAodGhpcy53aW4uY2xvc2VIaWRlcyAmJiB0aGlzLnF1aXR0aW5nID09PSBmYWxzZSkgcmV0dXJuCiAgICAgIGlmICh0aGlzLnVubG9hZCkgewogICAgICAgIHRoaXMudW5sb2FkKHsgdHlwZTogJ2Nsb3NlJyB9KQogICAgICB9CiAgICB9CiAgICBpZiAodGhpcy53aW4pIHRoaXMud2luLm9uY2UoJ2Nsb3NlJywgY2xvc2VMaXN0ZW5lcikKICAgIHRoaXMudW5sb2FkZXIgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyB0aGlzLnVubG9hZGVkID0gcmVzb2x2ZSB9KQogICAgY29uc3QgYWN0aW9uID0gYXdhaXQgdW50aWwKICAgIGlmICh0aGlzLndpbikgdGhpcy53aW4ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xvc2VMaXN0ZW5lcikKICAgIHRoaXMudW5sb2FkID0gbnVsbAogICAgcmV0dXJuIGFjdGlvbgogIH0KCiAgY29tcGxldGVVbmxvYWQgKGFjdGlvbikgewogICAgdGhpcy5xdWl0dGluZyA9IHRydWUKICAgIHRoaXMudW5sb2FkZWQoKQogICAgaWYgKGFjdGlvbi50eXBlID09PSAnY2xvc2UnKSB0aGlzLmNsb3NlKCkKICB9CgogIHNldFdpbmRvd0J1dHRvblBvc2l0aW9uIChwb2ludCkgewogICAgaWYgKCF0aGlzLndpbikgcmV0dXJuCiAgICB0aGlzLndpbi5zZXRXaW5kb3dCdXR0b25Qb3NpdGlvbihwb2ludCkKICB9CgogIHNldFdpbmRvd0J1dHRvblZpc2liaWxpdHkgKHZpc2libGUpIHsKICAgIGlmICghdGhpcy53aW4pIHJldHVybgogICAgdGhpcy53aW4uc2V0V2luZG93QnV0dG9uVmlzaWJpbGl0eSh2aXNpYmxlKQogIH0KfQoKY2xhc3MgV2luZG93IGV4dGVuZHMgR3VpQ3RybCB7CiAgc3RhdGljIFtrQ3RybF0gPSAnd2luZG93JwogIGRlY2FsSWQgPSBudWxsCiAgY2xvc2luZyA9IGZhbHNlCiAgI3ZpZXdJbml0aWFsaXplZCA9IG51bGwKICAjdmlld0xvYWRlZCA9IG51bGwKCiAgI29uYWN0aXZhdGUgPSAoKSA9PiB7CiAgICBpZiAodGhpcy5jbG9zaW5nIHx8IHRoaXMuY2xvc2VkKSByZXR1cm4KICAgIHRoaXMuc2hvdygpCiAgfQoKICBhc3luYyBvcGVuIChvcHRzID0ge30pIHsKICAgIGlmICh0aGlzLndpbikgcmV0dXJuICF0aGlzLmNsb3NlZAogICAgdGhpcy5vcGVuaW5nID0gdHJ1ZQogICAgY29uc3QgeyBCcm93c2VyV2luZG93LCBCcm93c2VyVmlldyB9ID0gZWxlY3Ryb24KICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgLi4ub3B0cyB9CiAgICBjb25zdCB7IGRlY2FsID0gdHJ1ZSwgaW50ZXJsb2FkLCBtYW51YWxWaWV3UmV2ZWFsID0gZmFsc2UsIHBlYXJsaW5rID0gbnVsbCB9ID0gb3B0aW9ucwogICAgdGhpcy5wZWFybGluayA9IHBlYXJsaW5rCiAgICBsZXQgdmlld0luaXRpYWxpemVkID0gbnVsbAogICAgbGV0IHZpZXdMb2FkZWQgPSBudWxsCiAgICB0aGlzLiN2aWV3SW5pdGlhbGl6ZWQgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyB2aWV3SW5pdGlhbGl6ZWQgPSByZXNvbHZlIH0pCiAgICB0aGlzLiN2aWV3TG9hZGVkID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsgdmlld0xvYWRlZCA9IHJlc29sdmUgfSkKICAgIGlmICh0aGlzLmFwcGtpbikgewogICAgICB0aGlzLnN0YXRlID0gYXdhaXQgdGhpcy5hcHBraW4KICAgICAgdGhpcy5hcHBraW4gPSBudWxsCiAgICB9CgogICAgY29uc3Qgc2Vzc2lvbiA9IGVsZWN0cm9uLnNlc3Npb24uZnJvbVBhcnRpdGlvbihgcGVyc2lzdDoke3RoaXMuc2Vzc25hbWUgfHwgKHRoaXMuc3RhdGUua2V5ID8gaHlwZXJjb3JlaWQuZW5jb2RlKHRoaXMuc3RhdGUua2V5KSA6IHRoaXMuc3RhdGUuZGlyKX1gKQoKICAgIGNvbnN0IHsgc2hvdyA9IHRydWUgfSA9IHsgc2hvdzogKG9wdGlvbnMuc2hvdyB8fCBvcHRpb25zLndpbmRvdz8uc2hvdykgfQogICAgY29uc3QgeyBoZWlnaHQgPSB0aGlzLmNvbnN0cnVjdG9yLmhlaWdodCwgd2lkdGggPSB0aGlzLmNvbnN0cnVjdG9yLndpZHRoIH0gPSBvcHRpb25zCiAgICB0aGlzLndpbiA9IG5ldyBCcm93c2VyV2luZG93KHsKICAgICAgLi4uKG9wdGlvbnMud2luZG93IHx8IG9wdGlvbnMpLAogICAgICBoZWlnaHQsCiAgICAgIHdpZHRoLAogICAgICBmcmFtZTogZmFsc2UsCiAgICAgIC4uLihpc01hYyAmJiB7IHRpdGxlQmFyU3R5bGU6ICdoaWRkZW4nLCB0cmFmZmljTGlnaHRQb3NpdGlvbjogeyB4OiAwLCB5OiAwIH0sIHRpdGxlQmFyT3ZlcmxheTogdHJ1ZSB9KSwKICAgICAgLi4uKGlzTWFjICYmIHRoaXMuc3RhdGU/LmFsaWFzID09PSAna2VldCcgJiYgdGhpcy5zdGF0ZT8uYXBwbGluZz8ucGF0aCA/IHsgaWNvbjogcGF0aC5qb2luKHBhdGguZGlybmFtZSh0aGlzLnN0YXRlLmFwcGxpbmcucGF0aCksICdyZXNvdXJjZXMnLCAnYXBwJywgJ2ljb24uaWNvJykgfSA6IHt9KSwKICAgICAgLi4uKGlzTGludXggJiYgeyBpY29uOiBsaW51eEljb24gfSksCiAgICAgIHNob3csCiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IgfHwgREVGX0JHLAogICAgICB3ZWJQcmVmZXJlbmNlczogewogICAgICAgIHByZWxvYWQ6IHJlcXVpcmUubWFpbi5maWxlbmFtZSwKICAgICAgICAuLi4oZGVjYWwgPT09IGZhbHNlID8geyBzZXNzaW9uIH0gOiB7fSksCiAgICAgICAgcGFydGl0aW9uOiAncGVyc2lzdDpwZWFyJywKICAgICAgICBhZGRpdGlvbmFsQXJndW1lbnRzOiBbSlNPTi5zdHJpbmdpZnkoeyAuLi50aGlzLnN0YXRlLmNvbmZpZywgcnRpOiB0aGlzLnJ0aSwgaXNEZWNhbDogdHJ1ZSB9KV0sCiAgICAgICAgYXV0b0hpZGVNZW51QmFyOiB0cnVlLAogICAgICAgIGV4cGVyaW1lbnRhbEZlYXR1cmVzOiB0cnVlLAogICAgICAgIG5vZGVJbnRlZ3JhdGlvbjogdHJ1ZSwKICAgICAgICBub2RlSW50ZWdyYXRpb25JbldvcmtlcjogdHJ1ZSwKICAgICAgICBub2RlSW50ZWdyYXRpb25JblN1YkZyYW1lczogZmFsc2UsCiAgICAgICAgZW5hYmxlUmVtb3RlTW9kdWxlOiBmYWxzZSwKICAgICAgICBjb250ZXh0SXNvbGF0aW9uOiBmYWxzZSwKICAgICAgICBuYXRpdmVXaW5kb3dPcGVuOiB0cnVlCiAgICAgIH0KICAgIH0pCiAgICBpZiAodGhpcy53aW4uc2V0V2luZG93QnV0dG9uVmlzaWJpbGl0eSkgdGhpcy53aW4uc2V0V2luZG93QnV0dG9uVmlzaWJpbGl0eShmYWxzZSkgLy8gY29uZmlndXJlZCBieSA8cGVhci1jdHJsPgogICAgdGhpcy5oaWRkZW4gPSAhc2hvdwoKICAgIHRoaXMud2luLm9uKCdmb2N1cycsICgpID0+IHsKICAgICAgaWYgKHRoaXM/LnZpZXc/LndlYkNvbnRlbnRzKSB0aGlzLnZpZXcud2ViQ29udGVudHMuZm9jdXMoKQogICAgfSkKCiAgICB0aGlzLndpbi5vbignY2xvc2UnLCAoZXZ0KSA9PiB7CiAgICAgIGlmICh0aGlzLndpbi5jbG9zZUhpZGVzICYmIHRoaXMucXVpdHRpbmcgPT09IGZhbHNlKSB7CiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCkKICAgICAgICB0aGlzLndpbi5oaWRlKCkKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmNsb3NpbmcgPSB0cnVlCiAgICAgIH0KICAgIH0pCgogICAgdGhpcy53aW4ub24oJ2Nsb3NlZCcsICgpID0+IHsKICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmFmdGVyTmF0aXZlV2luZG93Q2xvc2UgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICBvcHRpb25zLmFmdGVyTmF0aXZlV2luZG93Q2xvc2UodGhpcykKICAgICAgfQogICAgICBpZiAodGhpcy53aW4pIHsKICAgICAgICBpZiAodGhpcy5vcGVuaW5nKSB0aGlzLm9wZW5pbmcgPSBmYWxzZQogICAgICAgIHRoaXMud2luLmNsb3NlZCA9IHRydWUKICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWUKICAgICAgICB0aGlzLndpbiA9IG51bGwKICAgICAgICB0aGlzLnZpZXcgPSBudWxsCiAgICAgIH0KICAgIH0pCgogICAgZWxlY3Ryb24uYXBwLm9uKCdhY3RpdmF0ZScsIHRoaXMuI29uYWN0aXZhdGUpCgogICAgaWYgKHRoaXMuaWQgPT09IG51bGwpIHRoaXMuaWQgPSBpZGlmeSh0aGlzKQogICAgdGhpcy5jb25zdHJ1Y3RvcltrTWFwXS5zZXQodGhpcy5pZCwgdGhpcykKCiAgICBpZiAoZGVjYWwgPT09IGZhbHNlKSB7CiAgICAgIGF3YWl0IHRoaXMud2luLmxvYWRVUkwodGhpcy5lbnRyeSkKICAgICAgdGhpcy5vcGVuaW5nID0gZmFsc2UKICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZQogICAgICByZXR1cm4gIXRoaXMuY2xvc2VkCiAgICB9CiAgICBpZiAodGhpcy5kZWNhbElkID09PSBudWxsKSB0aGlzLmRlY2FsSWQgPSBpZGlmeSh0aGlzKQogICAgdGhpcy5jb25zdHJ1Y3RvcltrTWFwXS5zZXQodGhpcy5kZWNhbElkLCB0aGlzKQogICAgdGhpcy5jbG9zZWQgPSBmYWxzZQogICAgdGhpcy53aW4uc2V0TWVudUJhclZpc2liaWxpdHkoZmFsc2UpCiAgICBpZiAoaXNNYWMgPT09IGZhbHNlKSB0aGlzLndpbi5zZXRBdXRvSGlkZU1lbnVCYXIodHJ1ZSkKCiAgICBjb25zdCBkZWNhbExvYWRpbmcgPSB0aGlzLndpbi5sb2FkVVJMKHJlcXVpcmUoJy4vZGVjYWwnKSkKCiAgICBpZiAoaW50ZXJsb2FkICYmIChhd2FpdCBpbnRlcmxvYWQodGhpcykpID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlCgogICAgY29uc3QgdG9VUkwgPSAobGluaykgPT4gewogICAgICB0cnkgewogICAgICAgIHJldHVybiBuZXcgVVJMKGxpbmssIHRoaXMuc3RhdGUuY29uZmlnLmFwcGxpbmspCiAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgbGluayBpbiBQZWFyIGNvbmZpZ3VyYXRpb24gbGlua3M6JywgbGluaykKICAgICAgICByZXR1cm4gbnVsbAogICAgICB9CiAgICB9CgogICAgY29uc3QgYWxsb3dlZEhvc3RzID0gQXJyYXkuZnJvbShuZXcgU2V0KE9iamVjdC52YWx1ZXModGhpcz8uc3RhdGU/LmNvbmZpZz8ub3B0aW9ucz8ubGlua3MgfHwge30pKSkKICAgICAgLm1hcCgobGluaykgPT4gdG9VUkwobGluaykpCiAgICAgIC5maWx0ZXIoKGxpbmspID0+IGxpbmsgIT09IG51bGwgJiYgKGxpbmsucHJvdG9jb2wgPT09ICdodHRwOicgfHwgbGluay5wcm90b2NvbCA9PT0gJ2h0dHBzOicpKQogICAgYWxsb3dlZEhvc3RzLnB1c2gobmV3IFVSTCh0aGlzLmVudHJ5KSkKCiAgICBjb25zdCBvbkJlZm9yZVJlcXVlc3QgPSAoZGV0YWlscywgcmVzcG9uZCkgPT4gewogICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGRldGFpbHMudXJsKQogICAgICBjb25zdCBpc0FsbG93ZWQgPSBhbGxvd2VkSG9zdHMuc29tZSgoeyBwcm90b2NvbCwgaG9zdG5hbWUsIHBvcnQgfSkgPT4KICAgICAgICBwcm90b2NvbCA9PT0gdXJsLnByb3RvY29sICYmIChob3N0bmFtZSA9PT0gJyonIHx8IGhvc3RuYW1lID09PSB1cmwuaG9zdG5hbWUpICYmIChwb3J0ID09PSAnJyB8fCBwb3J0ID09PSB1cmwucG9ydCkpCiAgICAgIHJlc3BvbmQoeyBjYW5jZWw6IGlzQWxsb3dlZCA9PT0gZmFsc2UgfSkKICAgIH0KCiAgICBjb25zdCBvbkJlZm9yZVNlbmRIZWFkZXJzID0gKGRldGFpbHMsIG5leHQpID0+IHsKICAgICAgZGV0YWlscy5yZXF1ZXN0SGVhZGVycy5QcmFnbWEgPSBkZXRhaWxzLnJlcXVlc3RIZWFkZXJzWydDYWNoZS1Db250cm9sJ10gPSAnbm8tY2FjaGUnCiAgICAgIGNvbnN0IHJlcXVlc3RVUkwgPSBuZXcgVVJMKGRldGFpbHMudXJsKQogICAgICBpZiAocmVxdWVzdFVSTC5ob3N0ID09PSB0aGlzLmJyaWRnZVVSTC5ob3N0KSB7CiAgICAgICAgZGV0YWlscy5yZXF1ZXN0SGVhZGVyc1snWC1QZWFyJ10gPSBgUGVhciAke3RoaXMuc3RhdGUuaWR9YAogICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGU/LmNvbmZpZz8ub3B0aW9ucz8uZ3VpPy51c2VyQWdlbnQpIHsKICAgICAgICBkZXRhaWxzLnJlcXVlc3RIZWFkZXJzWydVc2VyLUFnZW50J10gPSB0aGlzLnN0YXRlLmNvbmZpZy5vcHRpb25zLmd1aS51c2VyQWdlbnQKICAgICAgfQogICAgICBuZXh0KHsgcmVxdWVzdEhlYWRlcnM6IGRldGFpbHMucmVxdWVzdEhlYWRlcnMgfSkKICAgIH0KCiAgICBjb25zdCB1cmxzID0gWydodHRwOi8vKi8qJywgJ2h0dHBzOi8vKi8qJ10KICAgIHNlc3Npb24ud2ViUmVxdWVzdC5vbkJlZm9yZVJlcXVlc3QoeyB1cmxzIH0sIG9uQmVmb3JlUmVxdWVzdCkKICAgIHNlc3Npb24ud2ViUmVxdWVzdC5vbkJlZm9yZVNlbmRIZWFkZXJzKG9uQmVmb3JlU2VuZEhlYWRlcnMpCgogICAgaWYgKHRoaXMuY2xvc2luZykgcmV0dXJuIGZhbHNlCgogICAgdGhpcy52aWV3ID0gbmV3IEJyb3dzZXJWaWV3KHsKICAgICAgLi4uKG9wdGlvbnMudmlldyB8fCBvcHRpb25zKSwKICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmJhY2tncm91bmRDb2xvciB8fCBERUZfQkcsCiAgICAgIHdlYlByZWZlcmVuY2VzOiB7CiAgICAgICAgcHJlbG9hZDogcmVxdWlyZS5tYWluLmZpbGVuYW1lLAogICAgICAgIHNlc3Npb24sCiAgICAgICAgYWRkaXRpb25hbEFyZ3VtZW50czogW0pTT04uc3RyaW5naWZ5KHsgLi4udGhpcy5zdGF0ZS5jb25maWcsIHJ0aTogdGhpcy5ydGksIHBhcmVudFdjSWQ6IHRoaXMud2luLndlYkNvbnRlbnRzLmlkLCBkZWNhbGxlZDogdHJ1ZSB9KV0sCiAgICAgICAgYXV0b0hpZGVNZW51QmFyOiB0cnVlLAogICAgICAgIGV4cGVyaW1lbnRhbEZlYXR1cmVzOiB0cnVlLAogICAgICAgIG5vZGVJbnRlZ3JhdGlvbjogdHJ1ZSwKICAgICAgICBub2RlSW50ZWdyYXRpb25JbldvcmtlcjogdHJ1ZSwKICAgICAgICBub2RlSW50ZWdyYXRpb25JblN1YkZyYW1lczogZmFsc2UsCiAgICAgICAgZW5hYmxlUmVtb3RlTW9kdWxlOiBmYWxzZSwKICAgICAgICBjb250ZXh0SXNvbGF0aW9uOiBmYWxzZSwKICAgICAgICB3ZWJTZWN1cml0eTogZmFsc2UsIC8vIGRpc2FibGUgQ09SUwogICAgICAgIG5hdGl2ZVdpbmRvd09wZW46IHRydWUKICAgICAgfQogICAgfSkKCiAgICBpZiAob3B0aW9ucy5hZnRlck5hdGl2ZVZpZXdDcmVhdGVkKSBvcHRpb25zLmFmdGVyTmF0aXZlVmlld0NyZWF0ZWQodGhpcykKICAgIHRoaXMudmlldy5zZXRCb3VuZHMoeyB4OiAwLCB5OiAwLCB3aWR0aCwgaGVpZ2h0IH0pCgogICAgY29uc3Qgdmlld0xvYWRpbmcgPSB0aGlzLnZpZXcud2ViQ29udGVudHMubG9hZFVSTCh0aGlzLmVudHJ5KQogICAgdmlld0luaXRpYWxpemVkKCkKICAgIHRoaXMudmlldy53ZWJDb250ZW50cy5vbmNlKCdkaWQtZmluaXNoLWxvYWQnLCAoKSA9PiB7IHZpZXdMb2FkZWQoKSB9KQoKICAgIHRoaXMuaWQgPSBpZGlmeSh0aGlzKQogICAgdGhpcy5jb25zdHJ1Y3RvcltrTWFwXS5zZXQodGhpcy5pZCwgdGhpcykKCiAgICBhd2FpdCBkZWNhbExvYWRpbmcKICAgIGlmICh0aGlzLmNsb3NpbmcpIHJldHVybiBmYWxzZQogICAgYXdhaXQgdmlld0xvYWRpbmcKICAgIGlmIChtYW51YWxWaWV3UmV2ZWFsID09PSBmYWxzZSkgdGhpcy5hdHRhY2hNYWluVmlldygpCgogICAgaWYgKHRoaXMuY2xvc2luZykgcmV0dXJuIGZhbHNlCgogICAgaWYgKHR5cGVvZiBvcHRpb25zLmFmdGVyTmF0aXZlVmlld0xvYWRlZCA9PT0gJ2Z1bmN0aW9uJykgYXdhaXQgb3B0aW9ucy5hZnRlck5hdGl2ZVZpZXdMb2FkZWQodGhpcykKCiAgICBpZiAodGhpcy5jbG9zaW5nKSByZXR1cm4gZmFsc2UKCiAgICB0aGlzLm9wZW5pbmcgPSBmYWxzZQoKICAgIHN1cGVyLm9wZW4oKQogICAgcmV0dXJuICF0aGlzLmNsb3NlZAogIH0KCiAgYXN5bmMgYXR0YWNoTWFpblZpZXcgKCkgewogICAgYXdhaXQgdGhpcy4jdmlld0luaXRpYWxpemVkCiAgICB0aGlzLndpbi5zZXRCcm93c2VyVmlldyh0aGlzLnZpZXcpCiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMud2luLmdldEJvdW5kcygpCiAgICB0aGlzLnZpZXcuc2V0Qm91bmRzKHsgeDogMCwgeTogMCwgd2lkdGgsIGhlaWdodCB9KQogICAgdGhpcy52aWV3LnNldEF1dG9SZXNpemUoewogICAgICB3aWR0aDogdHJ1ZSwKICAgICAgaGVpZ2h0OiB0cnVlCiAgICB9KQogICAgdGhpcy53aW4ub24oJ3Jlc2l6ZScsIChlKSA9PiB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSB0aGlzLndpbi5nZXRTaXplKCkKICAgICAgdGhpcy52aWV3LnNldEJvdW5kcyh7IHg6IDAsIHk6IDAsIHdpZHRoLCBoZWlnaHQgfSkKICAgIH0pCiAgICB0aGlzLndpbi5mb2N1c09uV2ViVmlldygpCiAgfQoKICBhc3luYyBkZXRhY2hNYWluVmlldyAoKSB7CiAgICBpZiAoIXRoaXMud2luIHx8ICF0aGlzLnZpZXcpIHJldHVybgogICAgdGhpcy53aW4ucmVtb3ZlQnJvd3NlclZpZXcodGhpcy52aWV3KQogIH0KCiAgYXN5bmMgYWZ0ZXJWaWV3TG9hZGVkICgpIHsKICAgIGF3YWl0IHRoaXMuI3ZpZXdMb2FkZWQKICB9CgogIGFzeW5jIG1pbmltaXplICgpIHsKICAgIGlmICh0aGlzLmlzTWluaW1pemVkKCkpIHJldHVybiB0cnVlCiAgICBjb25zdCBtaW5pbWl6ZWQgPSBvbmNlKHRoaXMud2luLCAnbWluaW1pemUnKQogICAgY29uc3QgcmVzdWx0ID0gdGhpcy53aW4ubWluaW1pemUoKQogICAgYXdhaXQgbWluaW1pemVkCiAgICByZXR1cm4gcmVzdWx0CiAgfQoKICBhc3luYyBtYXhpbWl6ZSAoKSB7CiAgICBpZiAodGhpcy5pc01heGltaXplZCgpKSByZXR1cm4gdHJ1ZQogICAgY29uc3QgbWF4aW1pemVkID0gb25jZSh0aGlzLndpbiwgJ21heGltaXplJykKICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud2luLm1heGltaXplKCkKICAgIGF3YWl0IG1heGltaXplZAogICAgcmV0dXJuIHJlc3VsdAogIH0KCiAgYXN5bmMgc2V0TWluaW1pemFibGUgKHZhbHVlKSB7CiAgICBjb25zdCByZXN1bHQgPSB0aGlzLndpbi5zZXRNaW5pbWl6YWJsZSh2YWx1ZSkKICAgIHJldHVybiByZXN1bHQKICB9CgogIGFzeW5jIHNldE1heGltaXphYmxlICh2YWx1ZSkgewogICAgY29uc3QgcmVzdWx0ID0gdGhpcy53aW4uc2V0TWF4aW1pemFibGUodmFsdWUpCiAgICByZXR1cm4gcmVzdWx0CiAgfQoKICBhc3luYyBzZXRTaXplICh3aWR0aCwgaGVpZ2h0KSB7CiAgICByZXR1cm4gdGhpcy53aW4uc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KQogIH0KCiAgYXN5bmMgZnVsbHNjcmVlbiAoKSB7CiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW4oKSkgcmV0dXJuIHRydWUKICAgIGNvbnN0IGZ1bGxzY3JlZW4gPSBvbmNlKHRoaXMud2luLCAnZW50ZXItZnVsbC1zY3JlZW4nKQogICAgY29uc3QgcmVzdWx0ID0gdGhpcy53aW4uc2V0RnVsbFNjcmVlbih0cnVlKQogICAgYXdhaXQgZnVsbHNjcmVlbgogICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLndpbi5nZXRCb3VuZHMoKQogICAgY29uc3QgW3ZpZXddID0gdGhpcy53aW4uZ2V0QnJvd3NlclZpZXdzKCkKICAgIHZpZXcuc2V0Qm91bmRzKHsgeDogMCwgeTogMCwgd2lkdGgsIGhlaWdodCB9KQogICAgcmV0dXJuIHJlc3VsdAogIH0KCiAgaXNNaW5pbWl6ZWQgKCkgewogICAgcmV0dXJuIHRoaXMud2luID8gdGhpcy53aW4uaXNNaW5pbWl6ZWQoKSA6IGZhbHNlCiAgfQoKICBpc01heGltaXplZCAoKSB7CiAgICByZXR1cm4gdGhpcy53aW4gPyB0aGlzLndpbi5pc01heGltaXplZCgpIDogZmFsc2UKICB9CgogIGlzRnVsbHNjcmVlbiAoKSB7CiAgICByZXR1cm4gdGhpcy53aW4gPyB0aGlzLndpbi5pc0Z1bGxTY3JlZW4oKSA6IGZhbHNlCiAgfQoKICBhc3luYyByZXN0b3JlICgpIHsKICAgIGlmICh0aGlzLmlzTWluaW1pemVkKCkpIHsKICAgICAgY29uc3QgcmVzdG9yZWQgPSBvbmNlKHRoaXMud2luLCAncmVzdG9yZScpCiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud2luLnJlc3RvcmUoKQogICAgICBhd2FpdCByZXN0b3JlZAogICAgICByZXR1cm4gcmVzdWx0CiAgICB9CiAgICBpZiAodGhpcy5pc01heGltaXplZCgpKSB7CiAgICAgIGNvbnN0IHVubWF4aW1pemVkID0gb25jZSh0aGlzLndpbiwgJ3VubWF4aW1pemUnKQogICAgICBjb25zdCByZXN1bHQgPSB0aGlzLndpbi51bm1heGltaXplKCkKICAgICAgYXdhaXQgdW5tYXhpbWl6ZWQKICAgICAgcmV0dXJuIHJlc3VsdAogICAgfQogICAgaWYgKHRoaXMuaXNGdWxsc2NyZWVuKCkpIHsKICAgICAgY29uc3Qgd2luZG93ZWQgPSBvbmNlKHRoaXMud2luLCAnbGVhdmUtZnVsbC1zY3JlZW4nKQogICAgICBjb25zdCByZXN1bHQgPSB0aGlzLndpbi5zZXRGdWxsU2NyZWVuKGZhbHNlKQogICAgICBhd2FpdCB3aW5kb3dlZAogICAgICByZXR1cm4gcmVzdWx0CiAgICB9CiAgICByZXR1cm4gZmFsc2UKICB9CgogIGFzeW5jIHNob3cgKCkgewogICAgdHJ5IHsKICAgICAgaWYgKHRoaXMud2luLmlzVmlzaWJsZSgpKSByZXR1cm4KICAgICAgY29uc3Qgc2hvd24gPSBvbmNlKHRoaXMud2luLCAnc2hvdycpCiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud2luLnNob3coKQogICAgICByZXR1cm4gKHRoaXMud2luLmlzVmlzaWJsZSgpKSA/IHJlc3VsdCA6IHNob3duLnRoZW4oKCkgPT4gcmVzdWx0KQogICAgfSBmaW5hbGx5IHsgdGhpcy5oaWRkZW4gPSBmYWxzZSB9CiAgfQoKICBhc3luYyBoaWRlICgpIHsKICAgIHRyeSB7CiAgICAgIGlmICghdGhpcy53aW4gfHwgIXRoaXMud2luLmlzVmlzaWJsZSgpKSByZXR1cm4KICAgICAgY29uc3QgaGlkZGVuID0gb25jZSh0aGlzLndpbiwgJ2hpZGUnKQogICAgICBjb25zdCByZXN1bHQgPSB0aGlzLndpbi5oaWRlKCkKICAgICAgcmV0dXJuICghdGhpcy53aW4uaXNWaXNpYmxlKCkpID8gcmVzdWx0IDogaGlkZGVuLnRoZW4oKCkgPT4gcmVzdWx0KQogICAgfSBmaW5hbGx5IHsgdGhpcy5oaWRkZW4gPSB0cnVlIH0KICB9CgogIGFzeW5jIGNsb3NlICgpIHsKICAgIGlmICh0aGlzLndpbj8uY2xvc2VIaWRlcyAmJiB0aGlzLnF1aXR0aW5nID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuaGlkZSgpCiAgICB0aGlzLmNsb3NpbmcgPSB0cnVlCiAgICBlbGVjdHJvbi5hcHAub2ZmKCdhY3RpdmF0ZScsIHRoaXMuI29uYWN0aXZhdGUpCiAgICBjb25zdCBjbG9zZWQgPSBhd2FpdCBzdXBlci5jbG9zZSgpCiAgICB0aGlzLmNsb3NpbmcgPSBmYWxzZQogICAgcmV0dXJuIGNsb3NlZAogIH0KCiAgYXN5bmMgcXVpdCAoKSB7CiAgICB0aGlzLnF1aXR0aW5nID0gdHJ1ZQogICAgcmV0dXJuIHRoaXMuY2xvc2UoKQogIH0KfQoKY2xhc3MgVmlldyBleHRlbmRzIEd1aUN0cmwgewogIHN0YXRpYyBba0N0cmxdID0gJ3ZpZXcnCiAgbGFzdE9wZW5PcHRpb25zID0ge30KICBnZXQgaGlkZGVuICgpIHsKICAgIGlmICghdGhpcy53aW4pIHJldHVybiBmYWxzZQogICAgY29uc3Qgdmlld3MgPSBuZXcgU2V0KHRoaXMud2luLmdldEJyb3dzZXJWaWV3cygpKQogICAgcmV0dXJuIHZpZXdzLmhhcyh0aGlzLnZpZXcpID09PSBmYWxzZQogIH0KCiAgc2V0IGhpZGRlbiAodikge30gLy8gcmVxdWlyZWQgc3ludGFjdGljYWxseSwgbm90IHJlcXVpcmVkIGZvciBvdXIgcHVycG9zZXMKICBhc3luYyBvcGVuIChvcHRzID0ge30pIHsKICAgIGlmICh0aGlzLnZpZXcpIHJldHVybiAhdGhpcy5jbG9zZWQKICAgIGNvbnN0IHsgQnJvd3NlcldpbmRvdywgQnJvd3NlclZpZXcsIHdlYkNvbnRlbnRzIH0gPSBlbGVjdHJvbgogICAgdGhpcy5sYXN0T3Blbk9wdGlvbnMgPSBvcHRzCiAgICBjb25zdCBvcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIC4uLnRoaXMubGFzdE9wZW5PcHRpb25zIH0KCiAgICBjb25zdCB3YyA9IHdlYkNvbnRlbnRzLmZyb21JZCh0aGlzLnN0YXRlLnBhcmVudFdjSWQpCiAgICB0aGlzLndpbiA9IEJyb3dzZXJXaW5kb3cuZnJvbVdlYkNvbnRlbnRzKHdjKQogICAgaWYgKCF0aGlzLndpbikgewogICAgICBhd2FpdCBuZXcgUHJvbWlzZShzZXRJbW1lZGlhdGUpCiAgICAgIHJldHVybiB0aGlzLm9wZW4ob3B0cykKICAgIH0KICAgIGlmICh0aGlzLmFwcGtpbikgewogICAgICB0aGlzLnN0YXRlID0gYXdhaXQgdGhpcy5hcHBraW4KICAgICAgdGhpcy5hcHBraW4gPSBudWxsCiAgICB9CgogICAgY29uc3Qgc2Vzc2lvbiA9IGVsZWN0cm9uLnNlc3Npb24uZnJvbVBhcnRpdGlvbihgcGVyc2lzdDoke3RoaXMuc2Vzc25hbWUgfHwgKHRoaXMuc3RhdGUua2V5ID8gaHlwZXJjb3JlaWQuZW5jb2RlKHRoaXMuc3RhdGUua2V5KSA6IHRoaXMuc3RhdGUuZGlyKX1gKQoKICAgIGNvbnN0IHRyYXkgPSB7CiAgICAgIHNjYWxlRmFjdG9yOiBlbGVjdHJvbi5zY3JlZW4uZ2V0UHJpbWFyeURpc3BsYXkoKS5zY2FsZUZhY3RvciwKICAgICAgZGFya01vZGU6IGdldERhcmtNb2RlKCkKICAgIH0KCiAgICB0aGlzLnZpZXcgPSBuZXcgQnJvd3NlclZpZXcoewogICAgICAuLi4ob3B0aW9ucz8udmlldyB8fCBvcHRpb25zKSwKICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmJhY2tncm91bmRDb2xvciB8fCBERUZfQkcsCiAgICAgIHdlYlByZWZlcmVuY2VzOiB7CiAgICAgICAgcHJlbG9hZDogcmVxdWlyZS5tYWluLmZpbGVuYW1lLAogICAgICAgIHNlc3Npb24sCiAgICAgICAgYWRkaXRpb25hbEFyZ3VtZW50czogW0pTT04uc3RyaW5naWZ5KHsgLi4udGhpcy5zdGF0ZS5jb25maWcsIC4uLihvcHRpb25zPy52aWV3Py5jb25maWcgfHwgb3B0aW9ucy5jb25maWcgfHwge30pLCBydGk6IHRoaXMucnRpLCBwYXJlbnRXY0lkOiB0aGlzLndpbi53ZWJDb250ZW50cy5pZCwgdHJheSB9KV0sCiAgICAgICAgYXV0b0hpZGVNZW51QmFyOiB0cnVlLAogICAgICAgIGV4cGVyaW1lbnRhbEZlYXR1cmVzOiB0cnVlLAogICAgICAgIG5vZGVJbnRlZ3JhdGlvbjogdHJ1ZSwKICAgICAgICBub2RlSW50ZWdyYXRpb25JbldvcmtlcjogZmFsc2UsCiAgICAgICAgbm9kZUludGVncmF0aW9uSW5TdWJGcmFtZXM6IGZhbHNlLAogICAgICAgIGVuYWJsZVJlbW90ZU1vZHVsZTogZmFsc2UsCiAgICAgICAgY29udGV4dElzb2xhdGlvbjogZmFsc2UsCiAgICAgICAgbmF0aXZlV2luZG93T3BlbjogdHJ1ZQogICAgICB9CiAgICB9KQoKICAgIGlmICh0aGlzLmlkID09PSBudWxsKSB7CiAgICAgIHRoaXMuaWQgPSBpZGlmeSh0aGlzKQogICAgICB0aGlzLmNvbnN0cnVjdG9yW2tNYXBdLnNldCh0aGlzLmlkLCB0aGlzKQogICAgfQogICAgYXdhaXQgdGhpcy52aWV3LndlYkNvbnRlbnRzLmxvYWRVUkwodGhpcy5lbnRyeSkKCiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYWZ0ZXJOYXRpdmVWaWV3TG9hZGVkID09PSAnZnVuY3Rpb24nKSBhd2FpdCBvcHRpb25zLmFmdGVyTmF0aXZlVmlld0xvYWRlZCh0aGlzKQoKICAgIHRoaXMuY2xvc2VkID0gZmFsc2UKICAgIGNvbnN0IHsgc2hvdyA9IHRydWUgfSA9IG9wdGlvbnMKICAgIGlmIChzaG93KSB0aGlzLndpbi5hZGRCcm93c2VyVmlldyh0aGlzLnZpZXcpCiAgICB0aGlzLiNib3VuZHMob3B0aW9ucykKICAgIHRoaXMud2luLmZvY3VzT25XZWJWaWV3KCkKICAgIHN1cGVyLm9wZW4oKQogICAgcmV0dXJuICF0aGlzLmNsb3NlZAogIH0KCiAgI2JvdW5kcyAob3B0aW9ucykgewogICAgY29uc3QgYm91bmRzID0gdGhpcy53aW4uZ2V0Qm91bmRzKCkKICAgIGNvbnN0IGFkanVzdGVkSGVpZ2h0ID0gYm91bmRzLmhlaWdodCAtIDAKICAgIGNvbnN0IHsgd2lkdGggPSBib3VuZHMud2lkdGgsIGhlaWdodCA9IGFkanVzdGVkSGVpZ2h0IH0gPSBvcHRpb25zCiAgICBsZXQgeyB4ID0gMCwgeSA9IDAgfSA9IG9wdGlvbnMKICAgIGlmICh4IDwgMCB8fCBPYmplY3QuaXMoeCwgLTApKSB4ID0gYm91bmRzLndpZHRoICsgeCAvLyBzdWJ0cmFjdGlvbiwgeCBpcyBuZWdhdGl2ZQogICAgaWYgKHkgPCAwIHx8IE9iamVjdC5pcyh5LCAtMCkpIHkgPSBhZGp1c3RlZEhlaWdodCArIHkgLy8gc3VidHJhY3Rpb24sIHkgaXMgbmVnYXRpdmUKCiAgICB0aGlzLnZpZXcuc2V0Qm91bmRzKHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9KQoKICAgIGlmIChvcHRpb25zLmF1dG9yZXNpemUpIHsKICAgICAgdGhpcy5hdXRvcmVzaXplID0gb3B0aW9ucy5hdXRvcmVzaXplCiAgICAgIGNvbnN0IHsgd2lkdGggPSB0cnVlLCBoZWlnaHQgPSB0cnVlLCB2ZXJ0aWNhbCA9IGZhbHNlLCBob3Jpem9udGFsID0gZmFsc2UgfSA9IG9wdGlvbnMuYXV0b3Jlc2l6ZQogICAgICB0aGlzLnZpZXcuc2V0QXV0b1Jlc2l6ZSh7IHdpZHRoLCBoZWlnaHQsIHZlcnRpY2FsLCBob3Jpem9udGFsIH0pCiAgICB9CiAgfQoKICBhc3luYyBzaG93ICgpIHsKICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuaGlkZGVuICYmIHRoaXMud2luLmFkZEJyb3dzZXJWaWV3KHRoaXMudmlldykKICAgIHRoaXMuI2JvdW5kcyh7IC4uLnRoaXMub3B0aW9ucywgLi4udGhpcy5sYXN0T3Blbk9wdGlvbnMgfSkKICAgIHRoaXMud2luLmZvY3VzT25XZWJWaWV3KCkKICAgIHJldHVybiByZXN1bHQKICB9CgogIGFzeW5jIGZvY3VzIChvcHRzKSB7CiAgICBhd2FpdCBzdXBlci5mb2N1cyhvcHRzKQogICAgY29uc3QgcmVzdWx0ID0gdGhpcy52aWV3LndlYkNvbnRlbnRzLmZvY3VzKCkKICAgIGlmICh0aGlzLnZpZXcud2ViQ29udGVudHMuaXNGb2N1c2VkKCkpIHJldHVybiByZXN1bHQKICAgIGF3YWl0IG9uY2UodGhpcy52aWV3LndlYkNvbnRlbnRzLCAnZm9jdXMnKQogICAgcmV0dXJuIHJlc3VsdAogIH0KCiAgYXN5bmMgYmx1ciAoKSB7CiAgICBpZiAodGhpcy52aWV3LndlYkNvbnRlbnRzLmlzRm9jdXNlZCgpID09PSBmYWxzZSkgcmV0dXJuIHRydWUKCiAgICAvLyBOT1RFOiBgdGhpcy53aW4uYmx1cldlYlZpZXcoKWAgaXMgbm90IGEgdmlhYmxlIGFsdGVybmF0aXZlLgogICAgLy8gICAgICAgTWlnaHQgc2VlbSBsaWtlIGl0IGlzLiBJdCBpcyBub3QuIFRoZSBibHVyIGV2ZW50IHdvbid0IGZpcmUuCiAgICAvLyAgICAgICBJdCdzIHByb2JhYmx5IHRvIGRvIHdpdGggdGhlIGlzc3VlIG9mICp3aGljaCogdmlldyBpcyBibHVycmVkLgogICAgLy8gICAgICAgQWxzbywgdGhlcmUgaXMgbm8gd2ViQ29udGVudHMuYmx1ciAodjIxLjIuMCAmIGRvd24gZm9yIHN1cmUpCiAgICAvLyAgICAgICBUaGUgZm9sbG93aW5nIGRvZXMgdGhlIHRyaWNrOgogICAgdGhpcy53aW4uYmx1cigpCiAgICB0aGlzLndpbi5mb2N1cygpCgogICAgcmV0dXJuIHRoaXMudmlldy53ZWJDb250ZW50cy5pc0ZvY3VzZWQoKSA9PT0gZmFsc2UKICB9CgogIGFzeW5jIGhpZGUgKCkgewogICAgcmV0dXJuIHRoaXMuaGlkZGVuID09PSBmYWxzZSAmJiB0aGlzLndpbiAmJiB0aGlzLndpbi5yZW1vdmVCcm93c2VyVmlldyh0aGlzLnZpZXcpCiAgfQoKICBpc0Nsb3NlZCAoKSB7CiAgICByZXR1cm4gdGhpcy5jbG9zZWQKICB9CgogIGFzeW5jIGNsb3NlICgpIHsKICAgIGlmICh0aGlzLnZpZXcgJiYgIXRoaXMuY2xvc2VkKSB0cnkgeyB0aGlzLndpbi5yZW1vdmVCcm93c2VyVmlldyh0aGlzLnZpZXcpIH0gY2F0Y2gge30KICAgIHRoaXMud2luID0gbnVsbCAvLyBkZXRhY2ggZnJvbSBwYXJlbnQgd2luZG93CiAgICByZXR1cm4gc3VwZXIuY2xvc2UoKQogIH0KfQoKY2xhc3MgUGVhckdVSSBleHRlbmRzIFJlYWR5UmVzb3VyY2UgewogIHN0YXRpYyBWaWV3ID0gVmlldwogIHN0YXRpYyBXaW5kb3cgPSBXaW5kb3cKICBfYXBwID0gbnVsbAogICN0cmF5CgogIGNvbnN0cnVjdG9yICh7IHNvY2tldFBhdGgsIGNvbm5lY3RUaW1lb3V0LCB0cnlib290LCBzdGF0ZSB9KSB7CiAgICBzdXBlcigpCiAgICB0aGlzLnN0YXRlID0gc3RhdGUKICAgIHRoaXMuaXBjID0gbmV3IElQQy5DbGllbnQoewogICAgICBsb2NrOiBjb25zdGFudHMuUExBVEZPUk1fTE9DSywKICAgICAgc29ja2V0UGF0aCwKICAgICAgY29ubmVjdFRpbWVvdXQsCiAgICAgIGFwaTogewogICAgICAgIHJlcG9ydHMgKG1ldGhvZCkgewogICAgICAgICAgcmV0dXJuIChwYXJhbXMgPSB7fSkgPT4gewogICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBtZXRob2QuY3JlYXRlUmVxdWVzdFN0cmVhbSgpCiAgICAgICAgICAgIHN0cmVhbS5vbmNlKCdkYXRhJywgKCkgPT4geyBQZWFyR1VJLnJlcG9ydE1vZGUoc3RhdGUpIH0pCiAgICAgICAgICAgIHN0cmVhbS53cml0ZShwYXJhbXMpCiAgICAgICAgICAgIHJldHVybiBzdHJlYW0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIGNvbm5lY3Q6IHRyeWJvb3QKICAgIH0pCiAgICB0aGlzLnN0cmVhbXMgPSBuZXcgRnJlZWxpc3QoKQogICAgdGhpcy5zdHJlYW1zTWFwID0gbmV3IE1hcCgpCiAgICB0aGlzLmlwYy5vbmNlKCdjbG9zZScsICgpID0+IHRoaXMuY2xvc2UoKSkKCiAgICBlbGVjdHJvbi5pcGNNYWluLm9uKCdleGl0JywgKGUsIGNvZGUpID0+IHsgcHJvY2Vzcy5leGl0KGNvZGUpIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbignaWQnLCAoZXZlbnQpID0+IHsKICAgICAgcmV0dXJuIChldmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnNlbmRlci5pZCkKICAgIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbigncGFyZW50SWQnLCAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmdldEN0cmwoZXZlbnQuc2VuZGVyLmlkKQogICAgICByZXR1cm4gKGV2ZW50LnJldHVyblZhbHVlID0gaW5zdGFuY2UucGFyZW50SWQpCiAgICB9KQoKICAgIGVsZWN0cm9uLmlwY01haW4ub24oJ3dhcm1pbmcnLCAoZXZ0KSA9PiB7CiAgICAgIHRoaXMuI3N0cmVhbSh0aGlzLmlwYy53YXJtaW5nKCksIGV2dCkKICAgIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbigncmVwb3J0cycsIChldnQpID0+IHsKICAgICAgdGhpcy4jc3RyZWFtKHRoaXMuaXBjLnJlcG9ydHMoKSwgZXZ0KQogICAgfSkKCiAgICBlbGVjdHJvbi5pcGNNYWluLm9uKCdhc3NldCcsIChldnQsIG9wdHMgPSB7fSkgPT4gewogICAgICB0aGlzLiNzdHJlYW0odGhpcy5pcGMuYXNzZXQob3B0cyksIGV2dCkKICAgIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbignZHVtcCcsIChldnQsIG9wdHMgPSB7fSkgPT4gewogICAgICB0aGlzLiNzdHJlYW0odGhpcy5pcGMuZHVtcChvcHRzKSwgZXZ0KQogICAgfSkKCiAgICBlbGVjdHJvbi5pcGNNYWluLm9uKCdzdGFnZScsIChldnQsIG9wdHMgPSB7fSkgPT4gewogICAgICB0aGlzLiNzdHJlYW0odGhpcy5pcGMuc3RhZ2Uob3B0cyksIGV2dCkKICAgIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbigncmVsZWFzZScsIChldnQsIG9wdHMgPSB7fSkgPT4gewogICAgICB0aGlzLiNzdHJlYW0odGhpcy5pcGMucmVsZWFzZShvcHRzKSwgZXZ0KQogICAgfSkKCiAgICBlbGVjdHJvbi5pcGNNYWluLm9uKCdpbmZvJywgKGV2dCwgb3B0cyA9IHt9KSA9PiB7CiAgICAgIHRoaXMuI3N0cmVhbSh0aGlzLmlwYy5pbmZvKG9wdHMpLCBldnQpCiAgICB9KQoKICAgIGVsZWN0cm9uLmlwY01haW4ub24oJ3NlZWQnLCAoZXZ0LCBvcHRzID0ge30pID0+IHsKICAgICAgdGhpcy4jc3RyZWFtKHRoaXMuaXBjLnNlZWQob3B0cyksIGV2dCkKICAgIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbignbWVzc2FnZXMnLCAoZXZ0LCBwYXR0ZXJuKSA9PiB7CiAgICAgIHRoaXMuI3N0cmVhbSh0aGlzLm1lc3NhZ2VzKHBhdHRlcm4pLCBldnQpCiAgICB9KQoKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdnZXRNZWRpYUFjY2Vzc1N0YXR1cycsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuZ2V0TWVkaWFBY2Nlc3NTdGF0dXMoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnYXNrRm9yTWVkaWFBY2Nlc3MnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmFza0Zvck1lZGlhQWNjZXNzKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ2Rlc2t0b3BTb3VyY2VzJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5kZXNrdG9wU291cmNlcyguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdjaHJvbWUnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmNocm9tZSguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdjdHJsJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5jdHJsKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3BhcmVudCcsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMucGFyZW50KC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ29wZW4nLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLm9wZW4oLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnY2xvc2UnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmd1aUNsb3NlKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3F1aXQnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLnF1aXQoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnc2hvdycsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuc2hvdyguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdoaWRlJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5oaWRlKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ21pbmltaXplJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5taW5pbWl6ZSguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdtYXhpbWl6ZScsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMubWF4aW1pemUoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnc2V0TWluaW1pemFibGUnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLnNldE1pbmltaXphYmxlKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3NldE1heGltaXphYmxlJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5zZXRNYXhpbWl6YWJsZSguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdmdWxsc2NyZWVuICcsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuZnVsbHNjcmVlbiguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdyZXN0b3JlJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5yZXN0b3JlKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ2ZpbmQnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmZpbmQoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnZm9jdXMnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmZvY3VzKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ2JsdXInLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmJsdXIoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnZGltZW5zaW9ucycsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuZGltZW5zaW9ucyguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdpc1Zpc2libGUnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmlzVmlzaWJsZSguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdpc0Nsb3NlZCcsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuaXNDbG9zZWQoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnaXNNaW5pbWl6ZWQnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmlzTWluaW1pemVkKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ2lzTWF4aW1pemVkJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5pc01heGltaXplZCguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdpc0Z1bGxzY3JlZW4nLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmlzRnVsbHNjcmVlbiguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdzZXRTaXplJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5zZXRTaXplKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3Blcm1pdCcsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMucGVybWl0KC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3VubG9hZGluZycsIGFzeW5jIChldnQsIC4uLmFyZ3MpID0+IHRoaXMudW5sb2FkaW5nKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ2NvbXBsZXRlVW5sb2FkJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5jb21wbGV0ZVVubG9hZCguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdhdHRhY2hNYWluVmlldycsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuYXR0YWNoTWFpblZpZXcoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnZGV0YWNoTWFpblZpZXcnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmRldGFjaE1haW5WaWV3KC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ2FmdGVyVmlld0xvYWRlZCcsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuYWZ0ZXJWaWV3TG9hZGVkKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3NldFdpbmRvd0J1dHRvblBvc2l0aW9uJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5zZXRXaW5kb3dCdXR0b25Qb3NpdGlvbiguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdzZXRXaW5kb3dCdXR0b25WaXNpYmlsaXR5JywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5zZXRXaW5kb3dCdXR0b25WaXNpYmlsaXR5KC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3JlcXVlc3RJZGVudGl0eScsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMucmVxdWVzdElkZW50aXR5KC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3NoYXJlSWRlbnRpdHknLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLnNoYXJlSWRlbnRpdHkoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnY2xlYXJJZGVudGl0eScsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuY2xlYXJJZGVudGl0eSguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdtZXNzYWdlJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5tZXNzYWdlKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ2NoZWNrcG9pbnQnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLmNoZWNrcG9pbnQoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgndmVyc2lvbnMnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLnZlcnNpb25zKC4uLmFyZ3MpKQogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3VwZGF0ZWQnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLnVwZGF0ZWQoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnZ2V0JywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5nZXQoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnZXhpc3RzJywgKGV2dCwgLi4uYXJncykgPT4gdGhpcy5leGlzdHMoLi4uYXJncykpCiAgICBlbGVjdHJvbi5pcGNNYWluLmhhbmRsZSgnY29tcGFyZScsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuY29tcGFyZSguLi5hcmdzKSkKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdiYWRnZScsIChldnQsIC4uLmFyZ3MpID0+IHRoaXMuYmFkZ2UoLi4uYXJncykpCgogICAgZWxlY3Ryb24uaXBjTWFpbi5oYW5kbGUoJ3Jlc3RhcnQnLCAoZXZ0LCAuLi5hcmdzKSA9PiB7CiAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmdldEN0cmwoZXZ0LnNlbmRlci5pZCkKICAgICAgaWYgKGN0cmwpIGN0cmwucXVpdHRpbmcgPSB0cnVlCiAgICAgIHJldHVybiB0aGlzLnJlc3RhcnQoLi4uYXJncykKICAgIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbigndHJheScsIChldnQsIG9wdHMpID0+IHsKICAgICAgY29uc3QgdHJheSA9IG5ldyBUcmF5KHsKICAgICAgICBvcHRzLAogICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLAogICAgICAgIG9uTWVudUNsaWNrOiAoZGF0YSkgPT4gZXZ0LnJlcGx5KCd0cmF5JywgZGF0YSkKICAgICAgfSkKICAgICAgdGhpcy4jdHJheSA9IHRyYXkKICAgICAgdHJheS5yZWFkeSgpCiAgICB9KQoKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCd1bnRyYXknLCBhc3luYyAoKSA9PiB7CiAgICAgIGlmICh0aGlzLiN0cmF5KSB7CiAgICAgICAgYXdhaXQgdGhpcy4jdHJheS5jbG9zZSgpCiAgICAgICAgdGhpcy4jdHJheSA9IG51bGwKICAgICAgfQogICAgfSkKCiAgICBlbGVjdHJvbi5pcGNNYWluLm9uKCdzeXN0ZW0tdGhlbWUnLCAoZXZ0KSA9PiB7CiAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBzdHJlYW14LlJlYWRhYmxlKCkKCiAgICAgIHN0cmVhbS5wdXNoKHsgbW9kZTogZ2V0RGFya01vZGUoKSA/ICdkYXJrJyA6ICdsaWdodCcgfSkKCiAgICAgIGNvbnN0IG9uVXBkYXRlZCA9ICgpID0+IHsKICAgICAgICBjb25zdCBtb2RlID0gZ2V0RGFya01vZGUoKSA/ICdkYXJrJyA6ICdsaWdodCcKICAgICAgICBzdHJlYW0ucHVzaCh7IG1vZGUgfSkKICAgICAgfQoKICAgICAgZWxlY3Ryb24ubmF0aXZlVGhlbWUub24oJ3VwZGF0ZWQnLCBvblVwZGF0ZWQpCgogICAgICBzdHJlYW0ub24oJ2Rlc3Ryb3knLCAoKSA9PiB7CiAgICAgICAgZWxlY3Ryb24ubmF0aXZlVGhlbWUucmVtb3ZlTGlzdGVuZXIoJ3VwZGF0ZWQnLCBvblVwZGF0ZWQpCiAgICAgIH0pCgogICAgICB0aGlzLiNzdHJlYW0oc3RyZWFtLCBldnQpCiAgICB9KQoKICAgIGVsZWN0cm9uLmlwY01haW4uaGFuZGxlKCdyZXBvcnQnLCAoZXZ0LCAuLi5hcmdzKSA9PiB0aGlzLnJlcG9ydCguLi5hcmdzKSkKCiAgICBlbGVjdHJvbi5pcGNNYWluLm9uKCdwaXBlJywgKGV2dCkgPT4gewogICAgICB0aGlzLiNzdHJlYW0oZ2xvYmFsLlBlYXIucGlwZSwgZXZ0KQogICAgfSkKCiAgICBlbGVjdHJvbi5pcGNNYWluLm9uKCdydW4nLCAoZXZ0LCBsaW5rLCBhcmdzKSA9PiB7CiAgICAgIHRoaXMuI3N0cmVhbShnbG9iYWwuUGVhci5ydW4obGluaywgYXJncyksIGV2dCkKICAgIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbignc3RyZWFtSWQnLCAoZXZ0KSA9PiB7CiAgICAgIGV2dC5yZXR1cm5WYWx1ZSA9IHRoaXMuc3RyZWFtcy5uZXh0SWQoKQogICAgICByZXR1cm4gZXZ0LnJldHVyblZhbHVlCiAgICB9KQoKICAgIGVsZWN0cm9uLmlwY01haW4ub24oJ3N0cmVhbUVuZCcsIChldnQsIGlkLCBkYXRhKSA9PiB7CiAgICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtcy5mcm9tKGlkKQogICAgICBpZiAoIXN0cmVhbSkgcmV0dXJuCiAgICAgIHN0cmVhbS5lbmQoZGF0YSkKICAgIH0pCgogICAgZWxlY3Ryb24uaXBjTWFpbi5vbignc3RyZWFtQ2xvc2UnLCAoZXZ0LCBpZCkgPT4gewogICAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbXMuZnJvbShpZCkKICAgICAgaWYgKCFzdHJlYW0pIHJldHVybgogICAgICBzdHJlYW0uZGVzdHJveSgpCiAgICB9KQoKICAgIGVsZWN0cm9uLmlwY01haW4ub24oJ3N0cmVhbVdyaXRlJywgKGV2dCwgaWQsIGRhdGEpID0+IHsKICAgICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW1zLmZyb20oaWQpCiAgICAgIGlmICghc3RyZWFtKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignVW5leHBlY3RlZCBlbGVjdHJvbi1tYWluIHN0cmVhbSBlcnJvciAodW5rbm93biBpZCknKQogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIHN0cmVhbS53cml0ZShkYXRhKQogICAgfSkKCiAgICBlbGVjdHJvbi5pcGNNYWluLm9uKCdmb3VuZCcsIChldnQsIGlkKSA9PiB7CiAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBzdHJlYW14LlJlYWRhYmxlKHsgcmVhZCAoKSB7fSB9KQoKICAgICAgY29uc3QgY3RybCA9IHRoaXMuZ2V0Q3RybChpZCkKICAgICAgY29uc3Qgd2ViQ29udGVudHMgPSBjdHJsLndpbj8ud2ViQ29udGVudHMgfHwgY3RybC52aWV3Py53ZWJDb250ZW50cwoKICAgICAgY29uc3Qgb25Gb3VuZEluUGFnZSA9IChldmVudCwgcmVzdWx0KSA9PiB7CiAgICAgICAgc3RyZWFtLnB1c2gocmVzdWx0KQogICAgICB9CgogICAgICB3ZWJDb250ZW50cy5vbignZm91bmQtaW4tcGFnZScsIG9uRm91bmRJblBhZ2UpCgogICAgICBzdHJlYW0ub24oJ2Rlc3Ryb3knLCAoKSA9PiB7CiAgICAgICAgd2ViQ29udGVudHMucmVtb3ZlTGlzdGVuZXIoJ2ZvdW5kLWluLXBhZ2UnLCBvbkZvdW5kSW5QYWdlKQogICAgICB9KQoKICAgICAgdGhpcy4jc3RyZWFtKHN0cmVhbSwgZXZ0KQogICAgfSkKICB9CgogICNzdHJlYW0gKHN0cmVhbSwgZXZ0KSB7CiAgICBjb25zdCBpZCA9IHRoaXMuc3RyZWFtcy5hbGxvYyhzdHJlYW0pCiAgICBjb25zdCB3Y0lkID0gZXZ0LnNlbmRlci5pZAogICAgdGhpcy5zdHJlYW1zTWFwLnNldChpZCwgd2NJZCkKCiAgICBzdHJlYW0ub24oJ2Nsb3NlJywgKCkgPT4gewogICAgICB0aGlzLnN0cmVhbXNNYXAuZGVsZXRlKGlkKQogICAgICB0aGlzLnN0cmVhbXMuZnJlZShpZCkKICAgICAgZXZ0LnJlcGx5KCdzdHJlYW1DbG9zZScsIGlkKQogICAgfSkKICAgIHN0cmVhbS5vbignZGF0YScsIChkYXRhKSA9PiB7CiAgICAgIGV2dC5yZXBseSgnc3RyZWFtRGF0YScsIGlkLCBkYXRhKQogICAgfSkKICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gewogICAgICBldnQucmVwbHkoJ3N0cmVhbURhdGEnLCBpZCwgbnVsbCkKICAgICAgZXZ0LnJlcGx5KCdzdHJlYW1FbmQnLCBpZCkKICAgIH0pCiAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycikgPT4gewogICAgICBldnQucmVwbHkoJ3N0cmVhbUVycm9yJywgaWQsIGVyci5zdGFjaykKICAgIH0pCiAgICByZXR1cm4gaWQKICB9CgogIGFzeW5jIGFwcCAoKSB7CiAgICBjb25zdCBhcHAgPSBuZXcgQXBwKHRoaXMpCiAgICB0aGlzLm9uY2UoJ2Nsb3NlJywgYXN5bmMgKCkgPT4geyBhcHAucXVpdCgpIH0pCiAgICBhd2FpdCBhcHAuc3RhcnQoKQogICAgcmV0dXJuIGFwcAogIH0KCiAgYXN5bmMgX29wZW4gKCkgewogICAgYXdhaXQgdGhpcy5pcGMucmVhZHkoKQogIH0KCiAgYXN5bmMgX2Nsb3NlICgpIHsKICAgIGF3YWl0IHRoaXMuaXBjLmNsb3NlKCkKICB9CgogIHN0YXRpYyBhc3luYyBjdHJsICh0eXBlLCBlbnRyeSwgeyBzdGF0ZSwgcGFyZW50SWQgPSAwLCB1YSwgc2Vzc25hbWUgPSBudWxsLCBhcHBraW4gfSwgb3B0aW9ucyA9IHt9LCBvcGVuT3B0aW9ucyA9IHt9KSB7CiAgICBlbnRyeSA9IGVudHJ5IHx8ICcvJwogICAgO1tlbnRyeV0gPSBlbnRyeS5zcGxpdCgnKycpCiAgICBpZiAoZW50cnkuc2xpY2UoMCwgMikgPT09ICcuLycpIGVudHJ5ID0gZW50cnkuc2xpY2UoMSkKICAgIGlmIChlbnRyeVswXSAhPT0gJy8nKSBlbnRyeSA9IGAvfiR7ZW50cnl9YAogICAgY29uc3QgbWV0YSA9IHsgc3RhdGUsIHBhcmVudElkLCB1YSwgc2Vzc25hbWUsIGFwcGtpbiB9CiAgICBjb25zdCBpbnN0YW5jZSA9IHR5cGUgPT09ICd2aWV3JyA/IG5ldyBWaWV3KGVudHJ5LCBvcHRpb25zLCBtZXRhKSA6IG5ldyBXaW5kb3coZW50cnksIG9wdGlvbnMsIG1ldGEpCiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYWZ0ZXJJbnN0YW50aWF0aW9uID09PSAnZnVuY3Rpb24nKSBhd2FpdCBvcHRpb25zLmFmdGVySW5zdGFudGlhdGlvbihpbnN0YW5jZSkKCiAgICBhd2FpdCBpbnN0YW5jZS5vcGVuKG9wZW5PcHRpb25zKQoKICAgIHJldHVybiBpbnN0YW5jZQogIH0KCiAgc3RhdGljIGN0cmxzICgpIHsgcmV0dXJuIEFycmF5LmZyb20oR3VpQ3RybFtrTWFwXS52YWx1ZXMoKSkgfQogIHN0YXRpYyBmcm9tV2ViQ29udGVudHMgKHdjKSB7CiAgICBmb3IgKGNvbnN0IFssIGN0cmxdIG9mIEd1aUN0cmxba01hcF0pIHsKICAgICAgaWYgKGN0cmwudmlldz8ud2ViQ29udGVudHMgPT09IHdjIHx8IGN0cmwud2luPy53ZWJDb250ZW50cyA9PT0gd2MpIHJldHVybiBjdHJsCiAgICB9CiAgICByZXR1cm4gbnVsbAogIH0KCiAgc3RhdGljIG9mU2Vzc2lvbiAoc2Vzc2lvbikgewogICAgcmV0dXJuIEFycmF5LmZyb20oR3VpQ3RybFtrTWFwXS52YWx1ZXMoKSkuZmlsdGVyKChjdHJsKSA9PiBjdHJsLnNlc3Npb24gPT09IHNlc3Npb24pCiAgfQoKICBzdGF0aWMgb2ZDb250ZXh0IChzdGF0ZSkgewogICAgcmV0dXJuIEFycmF5LmZyb20oR3VpQ3RybFtrTWFwXS52YWx1ZXMoKSkuZmlsdGVyKChjdHJsKSA9PiBjdHJsLnN0YXRlID09PSBzdGF0ZSkKICB9CgogIHN0YXRpYyByZXBvcnRNb2RlIChzdGF0ZSkgewogICAgY29uc3QgY3RybHMgPSB0aGlzLm9mQ29udGV4dChzdGF0ZSkKICAgIGZvciAoY29uc3QgY3RybCBvZiBjdHJscykgaWYgKGN0cmwuZGV0YWNoTWFpblZpZXcpIGN0cmwuZGV0YWNoTWFpblZpZXcoKQogIH0KCiAgc3RhdGljIGNocm9tZSAobmFtZSkgewogICAgY29uc3Qgd2luID0gbmV3IGVsZWN0cm9uLkJyb3dzZXJXaW5kb3coeyBzaG93OiB0cnVlIH0pCiAgICB3aW4ubG9hZFVSTCgnY2hyb21lOi8vJyArIG5hbWUpCiAgfQoKICBoYXNDdHJsIChpZCkgeyByZXR1cm4gR3VpQ3RybFtrTWFwXS5oYXMoaWQpIH0KCiAgZ2V0Q3RybCAoaWQpIHsKICAgIGNvbnN0IGluc3RhbmNlID0gR3VpQ3RybFtrTWFwXS5nZXQoaWQpCiAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgZ2hvc3Q6IHRydWUsCiAgICAgICAgZ3VpQ2xvc2UgKCkgeyByZXR1cm4gZmFsc2UgfSwKICAgICAgICBzaG93ICgpIHsgcmV0dXJuIGZhbHNlIH0sCiAgICAgICAgaGlkZSAoKSB7IHJldHVybiBmYWxzZSB9LAogICAgICAgIGZpbmQgKCkgeyByZXR1cm4gMCB9LAogICAgICAgIGZvY3VzICgpIHsgcmV0dXJuIGZhbHNlIH0sCiAgICAgICAgYmx1ciAoKSB7IHJldHVybiBmYWxzZSB9LAogICAgICAgIGRpbWVuc2lvbnMgKCkgeyByZXR1cm4gbnVsbCB9LAogICAgICAgIG1heGltaXplICgpIHsgcmV0dXJuIGZhbHNlIH0sCiAgICAgICAgbWluaW1pemUgKCkgeyByZXR1cm4gZmFsc2UgfSwKICAgICAgICBpc1Zpc2libGUgKCkgeyByZXR1cm4gZmFsc2UgfSwKICAgICAgICBpc01heGltaXplZCAoKSB7IHJldHVybiBmYWxzZSB9LAogICAgICAgIGlzTWluaW1pemVkICgpIHsgcmV0dXJuIGZhbHNlIH0sCiAgICAgICAgaXNDbG9zZWQgKCkgeyByZXR1cm4gdHJ1ZSB9LAogICAgICAgIHVubG9hZGluZyAoKSB7fSwKICAgICAgICBjb21wbGV0ZVVubG9hZCAoKSB7fQogICAgICB9CiAgICB9CiAgICByZXR1cm4gaW5zdGFuY2UKICB9CgogIGdldE1lZGlhQWNjZXNzU3RhdHVzICh7IG1lZGlhIH0pIHsKICAgIGlmIChpc0xpbnV4KSB7CiAgICAgIHJldHVybiAndW5zdXBwb3J0ZWQnCiAgICB9IGVsc2UgewogICAgICByZXR1cm4gZWxlY3Ryb24uc3lzdGVtUHJlZmVyZW5jZXMuZ2V0TWVkaWFBY2Nlc3NTdGF0dXMobWVkaWEpCiAgICB9CiAgfQoKICBhc3luYyBhc2tGb3JNZWRpYUFjY2VzcyAoeyBpZCwgbWVkaWEgfSkgewogICAgaWYgKGlzTGludXgpIHJldHVybiBmYWxzZQogICAgaWYgKG1lZGlhID09PSAnc2NyZWVuJykgewogICAgICByZXR1cm4gZWxlY3Ryb24uc3lzdGVtUHJlZmVyZW5jZXMuZ2V0TWVkaWFBY2Nlc3NTdGF0dXMobWVkaWEpCiAgICB9CgogICAgcmV0dXJuIGVsZWN0cm9uLnN5c3RlbVByZWZlcmVuY2VzLmFza0Zvck1lZGlhQWNjZXNzKG1lZGlhKQogIH0KCiAgZGVza3RvcFNvdXJjZXMgKHBhcmFtcykgewogICAgcmV0dXJuIGVsZWN0cm9uLmRlc2t0b3BDYXB0dXJlci5nZXRTb3VyY2VzKHBhcmFtcykKICB9CgogIGNocm9tZSAoeyBuYW1lIH0pIHsgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY2hyb21lKG5hbWUpIH0KCiAgYXN5bmMgY3RybCAocGFyYW1zKSB7CiAgICBjb25zdCB7IHBhcmVudElkLCB0eXBlLCBlbnRyeSwgb3B0aW9ucyA9IHt9LCBvcGVuT3B0aW9ucywgc3RhdGUgfSA9IHBhcmFtcwogICAgY29uc3QgaW5zdGFuY2UgPSBhd2FpdCB0aGlzLmNvbnN0cnVjdG9yLmN0cmwodHlwZSwgZW50cnksIHsgcGFyZW50SWQsIHN0YXRlIH0sIG9wdGlvbnMsIG9wZW5PcHRpb25zKQogICAgcmV0dXJuIGluc3RhbmNlLmlkCiAgfQoKICBhc3luYyBwYXJlbnQgKHsgaWQsIGFjdCwgYXJncyB9KSB7CiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuZ2V0Q3RybChpZCkKICAgIGlmICghaW5zdGFuY2UpIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgcGFyZW50IHdpdGggaWQgIiR7aWR9IiB0byBwZXJmb3JtIGFjdGlvbiAiJHthY3R9IiFgKQogICAgaWYgKGFjdCA9PT0gJ2ZvY3VzJykgcmV0dXJuIGluc3RhbmNlLmZvY3VzKC4uLmFyZ3MpCiAgICBpZiAoYWN0ID09PSAnYmx1cicpIHJldHVybiBpbnN0YW5jZS5ibHVyKCkKICAgIGlmIChhY3QgPT09ICdzaG93JykgcmV0dXJuIGluc3RhbmNlLnNob3coKQogICAgaWYgKGFjdCA9PT0gJ2hpZGUnKSByZXR1cm4gaW5zdGFuY2UuaGlkZSgpCiAgICBpZiAoYWN0ID09PSAnZGltZW5zaW9ucycpIHJldHVybiBpbnN0YW5jZS5kaW1lbnNpb25zKC4uLmFyZ3MpCiAgICBpZiAoYWN0ID09PSAnaXNDbG9zZWQnKSByZXR1cm4gaW5zdGFuY2UuaXNDbG9zZWQoKQogICAgaWYgKGFjdCA9PT0gJ2lzVmlzaWJsZScpIHJldHVybiBpbnN0YW5jZS5pc1Zpc2libGUoKQogICAgaWYgKGFjdCA9PT0gJ2lzTWluaW1pemVkJykgcmV0dXJuIGluc3RhbmNlLmlzTWluaW1pemVkKCkKICAgIGlmIChhY3QgPT09ICdpc01heGltaXplZCcpIHJldHVybiBpbnN0YW5jZS5pc01heGltaXplZCgpCiAgICBpZiAoYWN0ID09PSAnaXNGdWxsc2NyZWVuJykgcmV0dXJuIGluc3RhbmNlLmlzRnVsbHNjcmVlbigpCiAgfQoKICBvcGVuICh7IGlkLCBvcHRpb25zIH0pIHsgcmV0dXJuIHRoaXMuZ2V0Q3RybChpZCkub3BlbihvcHRpb25zKSB9CgogIC8vIGd1aUNsb3NlIGJlY2F1c2UgUmVhZHlSZXNvdXJjZSBuZWVkcyBjbG9zZSAoYWZmZWN0cyBpbnRlcm5hbCBuYW1pbmcgb25seSkKICBndWlDbG9zZSAoeyBpZCB9KSB7IHJldHVybiB0aGlzLmdldEN0cmwoaWQpLmNsb3NlKCkgfQoKICBxdWl0ICh7IGlkIH0pIHsgcmV0dXJuIHRoaXMuZ2V0Q3RybChpZCkucXVpdCgpIH0KCiAgc2hvdyAoeyBpZCB9KSB7IHJldHVybiB0aGlzLmdldEN0cmwoaWQpLnNob3coKSB9CgogIGhpZGUgKHsgaWQgfSkgeyByZXR1cm4gdGhpcy5nZXRDdHJsKGlkKS5oaWRlKCkgfQoKICBtaW5pbWl6ZSAoeyBpZCB9KSB7IHJldHVybiB0aGlzLmdldEN0cmwoaWQpLm1pbmltaXplKCkgfQoKICBtYXhpbWl6ZSAoeyBpZCB9KSB7IHJldHVybiB0aGlzLmdldEN0cmwoaWQpLm1heGltaXplKCkgfQoKICBzZXRNaW5pbWl6YWJsZSAoeyBpZCwgdmFsdWUgfSkgeyByZXR1cm4gdGhpcy5nZXRDdHJsKGlkKS5zZXRNaW5pbWl6YWJsZSh2YWx1ZSkgfQoKICBzZXRNYXhpbWl6YWJsZSAoeyBpZCwgdmFsdWUgfSkgeyByZXR1cm4gdGhpcy5nZXRDdHJsKGlkKS5zZXRNYXhpbWl6YWJsZSh2YWx1ZSkgfQoKICBmdWxsc2NyZWVuICh7IGlkIH0pIHsgcmV0dXJuIHRoaXMuZ2V0Q3RybChpZCkuZnVsbHNjcmVlbigpIH0KCiAgcmVzdG9yZSAoeyBpZCB9KSB7IHJldHVybiB0aGlzLmdldEN0cmwoaWQpLnJlc3RvcmUoKSB9CgogIGZpbmQgKHsgaWQsIG9wdGlvbnMgfSkgeyByZXR1cm4gdGhpcy5nZXRDdHJsKGlkKS5maW5kKG9wdGlvbnMpIH0KCiAgZm9jdXMgKHsgaWQsIG9wdGlvbnMgfSkgeyByZXR1cm4gdGhpcy5nZXRDdHJsKGlkKS5mb2N1cyhvcHRpb25zKSB9CgogIGJsdXIgKHsgaWQgfSkgeyByZXR1cm4gdGhpcy5nZXRDdHJsKGlkKS5ibHVyKCkgfQoKICBkaW1lbnNpb25zICh7IGlkLCBvcHRpb25zIH0pIHsgcmV0dXJuIHRoaXMuZ2V0Q3RybChpZCkuZGltZW5zaW9ucyhvcHRpb25zKSB9CgogIGlzVmlzaWJsZSAoeyBpZCB9KSB7IHJldHVybiB0aGlzLmdldEN0cmwoaWQpLmlzVmlzaWJsZSgpIH0KCiAgaXNDbG9zZWQgKHsgaWQgfSkgeyByZXR1cm4gKHRoaXMuaGFzQ3RybChpZCkpID8gdGhpcy5nZXRDdHJsKGlkKS5pc0Nsb3NlZCgpIDogdHJ1ZSB9CgogIGlzTWluaW1pemVkICh7IGlkIH0pIHsgcmV0dXJuIHRoaXMuZ2V0Q3RybChpZCkuaXNNaW5pbWl6ZWQoKSB9CgogIGlzTWF4aW1pemVkICh7IGlkIH0pIHsgcmV0dXJuIHRoaXMuZ2V0Q3RybChpZCkuaXNNYXhpbWl6ZWQoKSB9CgogIGlzRnVsbHNjcmVlbiAoeyBpZCB9KSB7IHJldHVybiB0aGlzLmdldEN0cmwoaWQpLmlzRnVsbHNjcmVlbigpIH0KCiAgc2V0U2l6ZSAoeyBpZCwgd2lkdGgsIGhlaWdodCB9KSB7IHJldHVybiB0aGlzLmdldEN0cmwoaWQpLnNldFNpemUod2lkdGgsIGhlaWdodCkgfQoKICB1bmxvYWRpbmcgKHsgaWQgfSkgeyByZXR1cm4gdGhpcy5nZXRDdHJsKGlkKS51bmxvYWRpbmcoKSB9CgogIGFzeW5jIGNvbXBsZXRlVW5sb2FkICh7IGlkLCBhY3Rpb24gfSkgewogICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmdldEN0cmwoaWQpCiAgICBpZiAoIWluc3RhbmNlKSByZXR1cm4KICAgIGluc3RhbmNlLmNvbXBsZXRlVW5sb2FkKGFjdGlvbikKICB9CgogIGFzeW5jIHJlcG9ydCAocnB0KSB7IHJldHVybiB0aGlzLl9hcHAgPyB0aGlzLl9hcHAucmVwb3J0KHJwdCkgOiB0aGlzLmlwYy5jcmVhdGVSZXBvcnQocnB0KSB9CgogIGFzeW5jIGF0dGFjaE1haW5WaWV3ICh7IGlkIH0pIHsgdGhpcy5nZXRDdHJsKGlkKS5hdHRhY2hNYWluVmlldygpIH0KCiAgYXN5bmMgZGV0YWNoTWFpblZpZXcgKHsgaWQgfSkgeyB0aGlzLmdldEN0cmwoaWQpLmRldGFjaE1haW5WaWV3KCkgfQoKICBhc3luYyBhZnRlclZpZXdMb2FkZWQgKHsgaWQgfSkgewogICAgcmV0dXJuIHRoaXMuZ2V0Q3RybChpZCkuYWZ0ZXJWaWV3TG9hZGVkKCkKICB9CgogIGFzeW5jIHNldFdpbmRvd0J1dHRvblBvc2l0aW9uICh7IGlkLCBwb2ludCB9KSB7CiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuZ2V0Q3RybChpZCkKICAgIGlmICghaW5zdGFuY2UpIHJldHVybgogICAgaW5zdGFuY2Uuc2V0V2luZG93QnV0dG9uUG9zaXRpb24ocG9pbnQpCiAgfQoKICBhc3luYyBzZXRXaW5kb3dCdXR0b25WaXNpYmlsaXR5ICh7IGlkLCB2aXNpYmxlIH0pIHsKICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5nZXRDdHJsKGlkKQogICAgaWYgKCFpbnN0YW5jZSkgcmV0dXJuCiAgICBpbnN0YW5jZS5zZXRXaW5kb3dCdXR0b25WaXNpYmlsaXR5KHZpc2libGUpCiAgfQoKICByZXF1ZXN0SWRlbnRpdHkgKHBhcmFtcykgeyByZXR1cm4gdGhpcy5pcGMucmVxdWVzdElkZW50aXR5KHBhcmFtcykgfQoKICBzaGFyZUlkZW50aXR5IChpZGVudGl0eSkgeyByZXR1cm4gdGhpcy5pcGMuc2hhcmVJZGVudGl0eShpZGVudGl0eSkgfQoKICBjbGVhcklkZW50aXR5ICgpIHsgcmV0dXJuIHRoaXMuaXBjLmNsZWFySWRlbnRpdHkoKSB9CgogIG1lc3NhZ2UgKG1zZykgeyByZXR1cm4gdGhpcy5pcGMubWVzc2FnZShtc2cpIH0KCiAgbWVzc2FnZXMgKHBhdHRlcm4pIHsgcmV0dXJuIHRoaXMuaXBjLm1lc3NhZ2VzKHBhdHRlcm4pIH0KCiAgY2hlY2twb2ludCAoc3RhdGUpIHsgcmV0dXJuIHRoaXMuaXBjLmNoZWNrcG9pbnQoc3RhdGUpIH0KCiAgdmVyc2lvbnMgKCkgeyByZXR1cm4gdGhpcy5pcGMudmVyc2lvbnMoKSB9CgogIHVwZGF0ZWQgKCkgewogICAgaWYgKHR5cGVvZiB0aGlzLmlwYy51cGRhdGVkID09PSAnZnVuY3Rpb24nKSByZXR1cm4gdGhpcy5pcGMudXBkYXRlZCgpCiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkKICB9CgogIHJlc3RhcnQgKG9wdHMgPSB7fSkgeyByZXR1cm4gdGhpcy5pcGMucmVzdGFydChvcHRzKSB9CgogIGdldCAocGFyYW1zKSB7IHJldHVybiB0aGlzLmlwYy5nZXQocGFyYW1zKSB9CgogIGV4aXN0cyAocGFyYW1zKSB7IHJldHVybiB0aGlzLmlwYy5leGlzdHMocGFyYW1zKSB9CgogIGNvbXBhcmUgKHBhcmFtcykgeyByZXR1cm4gdGhpcy5pcGMuY29tcGFyZShwYXJhbXMpIH0KCiAgd2FybWluZyAoKSB7IHJldHVybiB0aGlzLmlwYy53YXJtaW5nKCkgfQoKICByZXBvcnRzICgpIHsgcmV0dXJuIHRoaXMuaXBjLnJlcG9ydHMoKSB9CgogIHBlcm1pdCAocGFyYW1zKSB7IHJldHVybiB0aGlzLmlwYy5wZXJtaXQocGFyYW1zKSB9CgogIGJhZGdlICh7IGlkLCBjb3VudCB9KSB7CiAgICBpZiAoIWlzTGludXgpIHsKICAgICAgcmV0dXJuIGVsZWN0cm9uLmFwcC5zZXRCYWRnZUNvdW50KGNvdW50KQogICAgfSBlbHNlIHsKICAgICAgdGhpcy5nZXRDdHJsKGlkKS53aW4uc2V0SWNvbihsaW51eEJhZGdlSWNvbihjb3VudCkpCiAgICAgIHJldHVybiB0cnVlCiAgICB9CiAgfQp9CgpjbGFzcyBGcmVlbGlzdCB7CiAgYWxsb2NlZCA9IFtdCiAgZnJlZWQgPSBbXQoKICBuZXh0SWQgKCkgewogICAgcmV0dXJuIHRoaXMuZnJlZWQubGVuZ3RoID09PSAwID8gdGhpcy5hbGxvY2VkLmxlbmd0aCA6IHRoaXMuZnJlZWRbdGhpcy5mcmVlZC5sZW5ndGggLSAxXQogIH0KCiAgYWxsb2MgKGl0ZW0pIHsKICAgIGNvbnN0IGlkID0gdGhpcy5mcmVlZC5sZW5ndGggPT09IDAgPyB0aGlzLmFsbG9jZWQucHVzaChudWxsKSAtIDEgOiB0aGlzLmZyZWVkLnBvcCgpCiAgICB0aGlzLmFsbG9jZWRbaWRdID0gaXRlbQogICAgcmV0dXJuIGlkCiAgfQoKICBmcmVlIChpZCkgewogICAgdGhpcy5mcmVlZC5wdXNoKGlkKQogICAgdGhpcy5hbGxvY2VkW2lkXSA9IG51bGwKICB9CgogIGZyb20gKGlkKSB7CiAgICByZXR1cm4gaWQgPCB0aGlzLmFsbG9jZWQubGVuZ3RoID8gdGhpcy5hbGxvY2VkW2lkXSA6IG51bGwKICB9CgogIGVtcHRpZWQgKCkgewogICAgcmV0dXJuIHRoaXMuZnJlZWQubGVuZ3RoID09PSB0aGlzLmFsbG9jZWQubGVuZ3RoCiAgfQoKICAqIFtTeW1ib2wuaXRlcmF0b3JdICgpIHsKICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmFsbG9jZWQpIHsKICAgICAgaWYgKGl0ZW0gPT09IG51bGwpIGNvbnRpbnVlCiAgICAgIHlpZWxkIGl0ZW0KICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGxpbnV4QmFkZ2VJY29uIChuKSB7CiAgaWYgKG4gPCAxKSB7CiAgICByZXR1cm4gcmVxdWlyZSgnLi9pY29ucy9saW51eCcpCiAgfSBlbHNlIHsKICAgIHN3aXRjaCAobikgewogICAgICBjYXNlIDE6CiAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4vaWNvbnMvYmFkZ2UtMScpCiAgICAgIGNhc2UgMjoKICAgICAgICByZXR1cm4gcmVxdWlyZSgnLi9pY29ucy9iYWRnZS0yJykKICAgICAgY2FzZSAzOgogICAgICAgIHJldHVybiByZXF1aXJlKCcuL2ljb25zL2JhZGdlLTMnKQogICAgICBjYXNlIDQ6CiAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4vaWNvbnMvYmFkZ2UtNCcpCiAgICAgIGNhc2UgNToKICAgICAgICByZXR1cm4gcmVxdWlyZSgnLi9pY29ucy9iYWRnZS01JykKICAgICAgY2FzZSA2OgogICAgICAgIHJldHVybiByZXF1aXJlKCcuL2ljb25zL2JhZGdlLTYnKQogICAgICBjYXNlIDc6CiAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4vaWNvbnMvYmFkZ2UtNycpCiAgICAgIGNhc2UgODoKICAgICAgICByZXR1cm4gcmVxdWlyZSgnLi9pY29ucy9iYWRnZS04JykKICAgICAgY2FzZSA5OgogICAgICAgIHJldHVybiByZXF1aXJlKCcuL2ljb25zL2JhZGdlLTknKQogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiByZXF1aXJlKCcuL2ljb25zL2JhZGdlLW1vcmUnKQogICAgfQogIH0KfQoKY2xhc3MgVHJheSBleHRlbmRzIFJlYWR5UmVzb3VyY2UgewogIGNvbnN0cnVjdG9yICh7IG9wdHMsIHN0YXRlLCBvbk1lbnVDbGljayB9KSB7CiAgICBzdXBlcigpCiAgICB0aGlzLnRyYXkgPSBudWxsCgogICAgdGhpcy5vcHRzID0gb3B0cwogICAgdGhpcy5zdGF0ZSA9IHN0YXRlCiAgICB0aGlzLm9uTWVudUNsaWNrID0gb25NZW51Q2xpY2sKICB9CgogIF9jbG9zZSAoKSB7CiAgICBpZiAodGhpcy50cmF5KSB7CiAgICAgIHRoaXMudHJheS5kZXN0cm95KCkKICAgIH0KICB9CgogIGFzeW5jIF9vcGVuICgpIHsKICAgIGNvbnN0IHsgaWNvbiwgbWVudSwgb3MgfSA9IHRoaXMub3B0cwoKICAgIGNvbnN0IG9zRW5hYmxlZCA9IHsgLi4uZGVmYXVsdFRyYXlPcywgLi4ub3MgfQogICAgaWYgKCFvc0VuYWJsZWRbcHJvY2Vzcy5wbGF0Zm9ybV0pIHsKICAgICAgY29uc29sZS53YXJuKGBUcmF5IGlzIG5vdCBlbmFibGVkIG9uIHBsYXRmb3JtICR7cHJvY2Vzcy5wbGF0Zm9ybX1gKQogICAgICByZXR1cm4KICAgIH0KCiAgICBjb25zdCBndWlPcHRpb25zID0gdGhpcy5zdGF0ZS5vcHRpb25zPy5ndWkgPz8gdGhpcy5zdGF0ZS5jb25maWcub3B0aW9ucz8uZ3VpID8/IHt9CiAgICBjb25zdCBjbG9zZUhpZGVzID0gZ3VpT3B0aW9ucy5jbG9zZUhpZGVzID8/IGd1aU9wdGlvbnNbcHJvY2Vzcy5wbGF0Zm9ybV0/LmNsb3NlSGlkZXMgPz8gZmFsc2UKICAgIGlmICghY2xvc2VIaWRlcykgewogICAgICBjb25zb2xlLndhcm4oJ2Nsb3NlSGlkZXMgbXVzdCBiZSBlbmFibGVkIHRvIHVzZSB0cmF5JykKICAgICAgcmV0dXJuCiAgICB9CgogICAgY29uc3QgaWNvbk5hdGl2ZUltZyA9IGljb24gPyBhd2FpdCB0aGlzLiNnZXRJY29uTmF0aXZlSW1nKGljb24pIDogZGVmYXVsdFRyYXlJY29uCiAgICBjb25zdCBtZW51VGVtcGxhdGUgPSBPYmplY3QuZW50cmllcyhtZW51KS5tYXAoKFtrZXksIGxhYmVsXSkgPT4gKHsgbGFiZWwsIGNsaWNrOiAoKSA9PiB0aGlzLm9uTWVudUNsaWNrKGtleSkgfSkpCgogICAgaWYgKGlzTWFjKSB7CiAgICAgIGljb25OYXRpdmVJbWcuc2V0VGVtcGxhdGVJbWFnZSh0cnVlKQogICAgfQoKICAgIHRoaXMudHJheSA9IG5ldyBlbGVjdHJvbi5UcmF5KGljb25OYXRpdmVJbWcpCiAgICB0aGlzLnRyYXkub24oJ2NsaWNrJywgKCkgPT4gdGhpcy5vbk1lbnVDbGljaygnY2xpY2snKSkKICAgIGNvbnN0IGNvbnRleHRNZW51ID0gZWxlY3Ryb24uTWVudS5idWlsZEZyb21UZW1wbGF0ZShtZW51VGVtcGxhdGUpCiAgICB0aGlzLnRyYXkuc2V0Q29udGV4dE1lbnUoY29udGV4dE1lbnUpCiAgfQoKICBhc3luYyAjZ2V0SWNvbk5hdGl2ZUltZyAoaWNvbikgewogICAgdHJ5IHsKICAgICAgY29uc3QgaWNvblVybCA9IGAke3RoaXMuc3RhdGUucnRpLmJyaWRnZX0vJHtpY29ufWAKICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goaWNvblVybCwgeyBoZWFkZXJzOiB7ICdYLVBlYXInOiBgUGVhciAke3RoaXMuc3RhdGUuaWR9YCB9IH0pCiAgICAgIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCB0cmF5IGljb246ICR7YXdhaXQgcmVzLnRleHQoKX1gKQoKICAgICAgY29uc3QgaWNvbkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpKQogICAgICBjb25zdCBpY29uTmF0aXZlSW1nID0gZWxlY3Ryb24ubmF0aXZlSW1hZ2UuY3JlYXRlRnJvbUJ1ZmZlcihpY29uQnVmZmVyKQogICAgICBpZiAoaWNvbk5hdGl2ZUltZy5pc0VtcHR5KCkpIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNyZWF0ZSB0cmF5IGljb246IEludmFsaWQgaW1hZ2UsIHRyeSBQTkcgb3IgSlBFRycpCgogICAgICBjb25zdCB0cmF5SWNvblNpemUgPSBpc1dpbmRvd3MgPyB7IHdpZHRoOiAxNiwgaGVpZ2h0OiAxNiB9IDogeyB3aWR0aDogMjIsIGhlaWdodDogMjIgfQogICAgICByZXR1cm4gaWNvbk5hdGl2ZUltZy5yZXNpemUodHJheUljb25TaXplKQogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgIGNvbnNvbGUud2FybihlcnIpCiAgICAgIHJldHVybiBkZWZhdWx0VHJheUljb24KICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGdldERhcmtNb2RlICgpIHsKICBjb25zdCB7IHNob3VsZFVzZUhpZ2hDb250cmFzdENvbG9ycywgc2hvdWxkVXNlSW52ZXJ0ZWRDb2xvclNjaGVtZSwgc2hvdWxkVXNlRGFya0NvbG9ycyB9ID0gZWxlY3Ryb24ubmF0aXZlVGhlbWUKICBpZiAoc2hvdWxkVXNlSGlnaENvbnRyYXN0Q29sb3JzKSByZXR1cm4gdHJ1ZQogIGVsc2UgaWYgKHNob3VsZFVzZUludmVydGVkQ29sb3JTY2hlbWUpIHJldHVybiAhc2hvdWxkVXNlRGFya0NvbG9ycwogIHJldHVybiBzaG91bGRVc2VEYXJrQ29sb3JzCn0KCmZ1bmN0aW9uIHBhcnNlQ29uZmlnTnVtYmVyICh2YWx1ZSwgZmllbGQpIHsKICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdmFsdWUKICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBOdW1iZXIuaXNGaW5pdGUoK3ZhbHVlKSkgcmV0dXJuICt2YWx1ZQogIHRocm93IG5ldyBFcnJvcihgVGhlIHZhbHVlIG9mICR7ZmllbGR9IGNvbmZpZ3VyYXRpb24gZmllbGQgbXVzdCBiZSBhIG51bWJlciBvciBudW1lcmljIHN0cmluZywgZ290OiAke3ZhbHVlfWApCn0KCm1vZHVsZS5leHBvcnRzID0gUGVhckdVSQpjb25zdCB7IG5hdGl2ZUltYWdlIH0gPSByZXF1aXJlKCdlbGVjdHJvbicpCgptb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQVlBQUFERFBtSExBQUFGVDBsRVFWUjQydTJkejI4YlJSVEh2N04yaTZrcXNZSldiU1NFRWlSU1hISElBU0VCZ216VkRRZUtGTytORzg2eGlTcktId0JweFJrMUVsQnhpL2tMN0ZPRmlGRTJOemdnSlNld0kyRkxnRVFyTmJpWHlvM3RIUTZSYUN2WmtHUi96TXpPOTNPTExPK08zM3puelh1VGZXOEZMS1BlWHFnS0tkZkhmU2FGV0FwbU4ybzIyY01Cc1JvS2dBSWdObE9rQ2JLbjVYOHVqL3FkQzgxUEJRVmcyYVJQK242U1lxQUFOSi80LzdwbUVrS2dBQXlhK0RTRXdDRFEwTWxQNm43MEFBWlBmQkxlZ0I0Z0I1TWZaeHdVUUk0bS96ampzVzhMR01rdUNySTIvak4wVFovOEo4ZDFtTzNBT2dFRTVXWUlJTlJ4Yk03NVUzQ2VLLzM3dHh5TU1QcnRRYXIzRkxDY1J0dmZIUHVCUks5eW9SbGtzdm9kQVhmNUhaeDUveTA0Sng2dnlmMzdEOUQ5OE10WWwvNC9MOEFzUU1LYnNEYTZXVXoreWRlbmNPN3FGVHo3MG5rbFc0RVZBcWkzTGxjZ0hIZThBQlJ0NFVVSHozOThDUy80YjBBVUM4cHNZNFVBQkp4YmtISmFsNmovbVRkZnhMbXJINkEwZFVaNVFNZ3RJR1BjYS9NNGUrVnRpTUxUR2ZpamUzc1lQWHlFVTlOVDlBREhjdk8vK3RlRmc4VUpidjRZcTErNjR3TEU4dks4RjJlY3AxOTcrYW5KbDZNSWUrSFAyRnRyNHV4bmk2a0pZSklYeUk4SEVHSU9VbnBKTHRiSkFXSXk5UCs4aDcrK3VZUDlILzlnREdBVDBXQ0krOS8vaEwrLzJnS0drZEt4NUVjQVVhRW1NUXJUdk1YRmErK3V4NzNHdy9idnVIdjdEZ1k3ZHpNMzBiaHRJRGNDQ01yZmhla2JNTDRBOXI1b2FtVTM2N2VBUnNzL2ZFcTNrci9mei84R1dvNVJIcURlZXE4aXhHZ3gwWXRLQ3NDa1NHOE9VbFM1YnJrRkVBcUFVQUNFQWlBMkJZRW5UNi9KZnErbWNBUWRDa0Fod1V5akI2Q1hhR3E1NjN2MEFCWWpJbXd5QmlDSDRwZXZ0NHdldnhIUEE5UjNmVTlFWWoyN085cDlGS2pwRnBEYzgzdUVXd0MzQVV5dUQ2QUE2QUZJM3IyQVdZVWhVdlNBb3hkcEtpQVhjWXAyQWdobU43WUJ6T2h2dWcxdEs0TVB1L29CRm9laTN2SnZ4UG4reFpYNVZWTW5YK00wTURzRXNHcjU3OWRzUlhZcUx0QnpNelBBZmpIMlAzaktLL05Hcm40OUJiRHJleWFleitza2dxTTBpbUlhbUxQVThLaGR3bGdhbG9JSVZIaUQ0emFMcEFmSWdUZUkweW1VSHNCZ2I1RFBYc0hEWWhlRlFTMDNRcmdkSGdoaDJhdnFOUEhhWmdFMm9OUDdBdGdtYmxLYnVJeVJvK0ZTVUE2N1dkK1hNVURLWFVCMFI0a0E2aDNQeGVCRVJROEI4Skd3N09tWFhPRU0xMEdVdzNNQUNvQlFBSVFDSUF3Q3M2UFU3OG45NGsyYS8wbWJ1RDBhZ1dRT1R3S1AwaVl1UldRMG5GRnhFc2dZZ0RGQTl0UTdub3Y5NG5XYTM5WWc4T0FrY0pYbVp4cElLQUJDQVJBS2dOZ1VCSmI2UGRrdlhxTDVINlBpREFEZ1FaQVJiZUtDVjVwaHZqeUFSdWhmaGlhNlNMRmNuakVBWTREMGFMUXZyd05pV21zTDhJVVJhUnJYOGRqeWpXa2dvUUFJQlVBb0FFS0ladkFrTUdhYk9LVkVvaHVVTjJyNnBvRm1yQUJ6SDB3cHlCQkFMQUV3QnJDYzJCNmcwZlkzYlMreFpoWkFLQUJDQVJBS2dGZ1hCRXJJSFNIWWJFeE5DdXRzMHdva3BvZ3M1K0NoRlRPUmtkZ0pYbTJ1S2QwQ2pFZUtxckdyMTBFSVFLMEE2dTJGT1FqcEdpdUFpRUZnekQxRTNrTEVrMENtZ1lRQ0lCUUFvUUNJVlVHZ2hQZ1drRnMwcFFKR29rc2prSmhabk9VMFdnc2RjMmN2Q2l1elB5d3AzUUxNeCtUU05SRjc3RW1jQkZZaFdmOW5iUkFvSUQ4Q2VCTElOSkJRQUlRQ0lCUUFzU29JbEJDZklETDRlUUNUS1lqWUw1bGdjV2pIMHlLRkRXYllKMUFKZkdFRVlReWd3TzI2WWxDc2EyRUJ0b2xUUUwva3dobDZYSDlNQXdrRlFDZ0FRZ0VRUWhUQWs4RDJRalhoUzI0SHN4dkdsRzJ6VFp5VWlWWUhTK0FtQUdNRXdCakFjb3p5QVBXV2Y4UG94bzcwQUlRQ0lCUUEwWWQvQUhUVnI2eUhXQVNEQUFBQUFFbEZUa1N1UW1DQycpCmNvbnN0IHsgbmF0aXZlSW1hZ2UgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJykKCm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBWUFBQUREUG1ITEFBQUhwVWxFUVZSNDJ1MmRiV3dVUlJqSC83UDMwcU8wNVpBU3NCU2tKaFNLQmdoQkU4U1VJMXhKQ0JIdkVnbEJQbERVbUNDb2FFdzBSc09MaVNiR0NDWnE0Z2R0VVF3cUpsZE5OTldXOUZBVEFtZ0N4b0JYQW0wUmFwRVdMcVhBOVY1Mi9OREU0MmdyN2QzdTdlN3QvL2R4cnJzeis4eC9ubm5tMloycGdNMEl0ZGZWQ3lrYlJ2cE5DckU1V04zU2FDZDdLQ0MyaGdLZ0FJaWRjZElFK1NmaWYwT085NXE1cmE4TENzQm1uVDdhOVZxS2dRSXdlY2YvM3oyMUVBSUZZS0dPMTBNSURBSXQydmxhMVVjUFlPR08xOEliMEFNVVFPZm4wZzRLb0lBNlA1djIyRzhLU01sT09HVGp5TCtoMCtxZGYydTd4aklkMkU0QXdacldNSUN3S1JxakNCUXRtd1hQdkFvNEpwZENPQlNvTjJLSW4rL0Z6Wi9QUXUyOXFYc1RCR3hPVTd1L2JjUWZKS0tCdWExQlBVYS9LSEZoOGhZZnZFdnZoN04wNHNqVnAxSVlpSFNoNy9NdzRzZTZzMzYrTzNrQkNpRGlINlVUUldkZ2JrdVYxcDFmdEd3V0twNFB3RFc1YkV4L0wxTXFlcHVQNE9yZU5sMUVZSXNwSUJSWkdZQlF2Q05iT0g5VGVORkRNMUg1eW5vNFBFVmo5eFlPQlZQWExJTlNYSVMrTjVzMWI1TXRCQ0NnN0lHVXM0Mk0ra1daRzNjL0Z4alcrYkh1eStnL2VncUQ1M29nRXltNFo1YWpaUEVjbE15YkRZajB3SjJ5WWdsaXB5L2dldWdQVFFOQ0pvTHloUGZKaCtHZU1pbWpyTy9RY2ZTOS9TT2dwdlVVd3puME54NUQ4WnA1cU5peUZrcVIrNy9meWgrcnpVb0F0b2dCUW4vNnR3c0ZqNDRTMFBteXVHVVVBaWR1TDZ4NVpuazI5OExzQTl2Z0xrL1BRZ09STG5SdisreC9yeW5iL0NDbVA3NHFvNnhyMTZjWS9PVzhackZBNFhnQUlSWkJTcCtXZ3paTDRRekRNYk0wby9NQjRPcjN4KzU0WGYrKzQ1Z2FxSVdqMlBOZjJZUUY5MlF0Z0JGWG9uVE8rdU9hTTNWWVdleW5jM2UrVUpXSVg3NmFLYWF5WWdhQkl4dkwwU2lSMGpYQk0vL1oyb1pzcmt0MFhVSFBnWmFNanBVRGlURzZqOHd4S2hPcG5JTFgyNmVCZ2hGQXNLWTVySGNkRVg5MkFraWRqYUwvN05IeFgraFdoazBkOFl1OTlBQmFNbm9pYUFTMjVyZHRwZXNYWnl3YlpVckZqWEM3cG5Vd0JqQnJURHZKamZLMXl6TEtycDA2QjdYbmhuMDlRQ2l5S2lCRTZsRk5ieXJOK2F6VFhndkE1UzFOTnpPWlF0KytOczNyc2RnVW9DNkNGUFdGUHZydmVuRWx5aFpWWjVUMU5oOUI0dVFsemV2aUZHQXlTamM5Z1BMVlN6UEtCaUpkdVBxZVBqRXVCV0FpSnE1YmdPa2I2akxLQnYrNWdwNGRCM1dya3dJd0NjV0IrMUR4eEJxSVc5Yjl5ZjRCWE56OUJkUytHQVZReUV4WVBSY1ZUejhDNFhTa2N3ZlhiK0xDVzE4aUdibWlhOTNXQ2dMZEpYdGxMTnBvWUFzNnRMNmhaK1c5bUxFdEFNV1Y3b3BVYkJBWDNqbUkrSzkvNi81QWxoSkFzS29wQ2lDcTZkTHlqTjluMVBNVTFkNkR5dTJQUVhHNzB1dWN3VGd1dnZ1MXBpOThDbWdacUQxQ1Jac2huYiswRXBVdnJZUGlTYi92VnhOSlhIdy9oRmhiUjk3YXdSaGdISnorNExBMk05bVN1ekhqNWZWd1RFaS81cFhKRkxvLytoWTNtOC9vMW41TGZBOFFPdVAzQ1ZVMDVLL0cvS1lDWFF1bm9mTFZEWEJPbkpCdVFVcEY5eWZmNGNZM3AvSnViNU5PQWRwOXYyY21uUGVWby9MMURYQ1dwdC9wUzFXaVovOFB1SDd3ZDBQYXhDa2dUOU9BczNveVp1N2NDTmVra2x0MExuSHBxME80dHY4MzNkdk5qMElOeEZGWmdzcmRHek5lN2d5TmZoWGUyb1h3MWk0Y3UyOU1KUEhYVXg5ekZXQzBGNmpadW56czgzN05kTGluRE4rV0lCd09lQ3Ftam05eVRDUTFHLzNtRklBVVVXRDhtelFOb0NEaUZOTUpJRmpkY2dKQWxmbE4xMkxhbmNGakhmMEE5d1lpRlBIdnpPWDYrVnVYNzdCcTV6TUdHQm9CTzJ6Ky9DWWJrUjBCTHhEMTVzMEFjV2ZPZWRmeEJJUm1HdjNtRk1BWnY4K28vSHloaUdBOEIwVXhFYVRoMHRCcW5jOFlRQ2NSR09FTnNqMHNraDZnQUx4QkxpZUYwZ05ZMkJzVTVsbkJTV2NuSEluR2doSENoK0VoSVR6anF6ZFR4NXQyRldBSHpQVC9BbmhLMkdqSHhPVVptVXB1RHRhRU8vTmRMMk1BalU0QnNTcUdDQ0RVNGZNaTRRcVlRd0FTRkVDK2lYbThRa2syZ0JnTzh3QVVBS0VBQ0FWQUdBVG1EMDhzS3VQT1hUVC9yVGJ4Um1rRWtuZVlDUnpQTVhFNkl0VmtsUkdaUU1ZQWpBSHlUNmpENTBYY3VaM210MnNRT0pRSjNFSHpjeGxJS0FCQ0FSQUtnTmdwQ1BURW9qTG1YRUh6cHpFaUJ3QXdFV1RvTVhGakZzZWMxbkJoZVFBVFlmNXRhS0lUT202WFp3ekFHRUEvbXRwWE5nQml0cWt0SUNrQUhZMnIrQXIxeURjdUF3a0ZRQ2dBUWdFUVFpd0xNNEU1SGhObktLcm9ETmEwTkpwM0dXaU5FV0RkRDFNY01nd2dKd0V3QnJBNU9YdUFwblovbTkyM1dITVZRQ2dBUWdFUUNvRFlMZ2lVa0NlRjRHRmp4aXhobFJPMEFzbFJSRFpuNktNVmF5SlZjVEk0cjNXdm9WT0E1WkdpM3JLalYwRVlnTEVDQ0xYWExZS1FYc3NLUUdVUW1PTWNJdmRBWlNhUXkwQkNBUkFLZ0ZBQXhGWkJvSVRZQjhqRE5LVUJwRVFualVCeVhNWFpuS1pJWFlkMWUwOE5CNm9QYlRaMENyQStWdDY2Sm5KdXV4YVp3SHBJN3YremJSQW9JRGNCekFSeUdVZ29BRUlCRUFxQTJDb0lsQkF2UUxYdzl3Qld4aUZ5L2ljVDNCemE0VFBGRWpaWXhYTUNEWUgvTUlJd0JqREE3WHBGd2hreWhRVjRUSndCeER4ZUtFa2Z4eCtYZ1lRQ0lCUUFvUUFJSVFiQVRHQjdYYjNHdHp3UnJHNnh6TFp0SGhNbnBhYTdneVd3QzRCbEJNQVl3T1pZeWdPRUl2NmRsajdZa1I2QVVBQ0VBaURtNFY4RVhHejc5NDNOOHdBQUFBQkpSVTVFcmtKZ2dnPT0nKQpjb25zdCB7IG5hdGl2ZUltYWdlIH0gPSByZXF1aXJlKCdlbGVjdHJvbicpCgptb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQVlBQUFERFBtSExBQUFJUlVsRVFWUjQydTJkYjJ4YlZ4bkduM1A5Ti84YU4yMjJsQzFMM0tscDNhTEtJbWhqMVVwYzFkazAwTlJZWXVvMHFTTDlNQW10YkJvZ0lURnBkR1VTQWdTcyt3Q29LcXlCZ1dCZmNENkFoRWltT2tqdE9xR0pkSnUwT20xbTA1SWxTMVBzcEU1aU84NDlmT2hvNGpucFl2dmE5MTdmNS9jdDUrYmNlM3plNTc3blBhL1BPUmF3R09HeDNuNGg1Wm0xcmtraGpvYTZoZ2FzMUI4S2lLV2hBQ2dBWW1YczdJTHFFdzIrTEl1dHMzUDRSVUVCV016bzY5WFhVZ3dVZ01FTmY2ZDdhaUVFQ3NCRWhxK0VFQmdFbXRUNFdqMlBIc0RFaHRmQ0c5QUQxSUR4eTJrSEJWQkR4aStsUGRZYkFwWmxIRFk1c1BZMXhNMXUvTlh0MnNod1lEa0JoSHpERVFBUkk3UkYxTnZoN3JrZnpzNVcySnJxSVJTQjVmazBzdkZwTEk2TVE4NWxLOThHcTd2dndiSGcyVFV2U0NUN2RnNkhLdkgyTzd2YjBISjRQeHIzYklmaWRLejVQK3BTRGpmZnU0SWJwNGVSdTVJcytmTjlsaGVnQUtMQmRZd280bjA3aDd5YUdsOFIyUExkUjlCeW9CdEMyVmo0cFdheW1QcjkzNUg2MDJoRlJHQ0pJU0FjUGRnSG9YaldmdE9yTjRTMy9mZ0piUEozRmFjWmx4UGJqbjRWazBJZzljZC9hZDRtU3doQVFIa0ZVbmJxR2ZXM2ZDZFlZSHlwU3FRdXhURS9laG5aYXpjQUFDN3ZYV2g2Y0RmcU83YXR0RjhSYUh1cUYvRjM0c2lOSlRRTkNKa0lxZ0syemszWWN2Q0xlV1c1dVhsTXZQcG5aUDd4Nzd6eU5NWXhlL290Ykg0dWdOYkhIMTd4Qkc0bldvNzBZUHJGUVFhQmE3cjVTOEhuaFlKRDZ3UjBnUkp1bVlSQXdjRHJlNmFuNkh0OTJwaFNWWEgxeE92SW5MOTJ4M3JiVGo2RnBqM2JWMFNUV3NDSG9aOXJHZ3ZVamdjUXdnOHBBeHJlMFZPaWNBcHdiLzljM3Q4TDR4T2ZhWHdBbUJ0NU4wOEE5c1o2Mk5xYnNIenRKbU1BTXpILzdqaXlVemRXM0h4MFlrUDFzckhyaFVIaDVqb0tZTzM1a20xQVlybWlDWjdkejM3NVRDbjE1bDU3dTdUWW9hV2hvR3g1T2xWVzhQcnBZYUJtQkJEeS9TMVM2V2RFZzZVSm9GUWE5KzNLKzNzcE1RZDFhb0hUUUMxWlB4RzBCc2VxMXk1WFR5YzI3OXViVnpiN3p3K1lCNmo1bkVXekU4MUh2b1N0anowRTRWZ3hUMmI2djBpY0dyRzJBTUxSUi9xRVdENms2VTJsdnNiZTlzUERuMHhpQkpRNk45eDN0K1FaSGdEU0gxM0h4QS9lcU1pWFF5YnpBS29mVXZUWHpOdnVzcUd4cTJQZDYrbkpHY3llZngrenI1MEhzbXBGMnNBRklRYkdWdWVDdS9OdXVCL3VyTmd6R0FQbzZ0Q0E1WVgwSis1QVFIRTZJR3dyNzZURDA0VG1iaCthdTMyWWUyd01INzg4cVBrd1FBSG9hZitaUll3Zit1a3FmeXpnMkhzWEdudDg4T3ozdzlIY2VQdlNKbjhYYkQ5NkVoUGZmQjFRdFF0Y09BUVlTaEVTUzZNZkkvRnFCUEduZjRWVU5QK0xvb1lkOTZINTZYMFc5Z0RPeHBNeW5SelFzUVd4YWoxSUpqS1lmT0VOZEp6K0Jwd3RtMjZYZTNyOG1EMTF6cG9DQ0hrSGt3Q1NXdDR6ZkRrWU1Pcm5sWE5aekY1NEg2MWZXWG5yWGEyYk5mMUN5UEl4Z0ZCeDFzanR5M3c0VlZEbXVIOHJCYUFISC94aUJMNWpQVVhWY1Ivd292blJMK1NWM2ZqMW14dGU2Q21jMnBuSUZPc0J3cGVEQWFHS0tuN3BVdGxVb0hBNzBkenR5eXRidkRLQnVTc1hObFMvL3ZPRk9ZQ2w4WmxhandHMFc3K25OK2x6TWFqUDVxQ3NTdTl1ZWZSQnBQNzZIdFRKK1R2V2RUMTBMendQN01rZkVxNG5ORjBQd0dsZ0NjTkFzWUhjell1WDg4ZHdUeFBhZjlZUDEvNzEwOENOaC8yNDkzdFBRdGh0ZWVYSmtkS1doM05ScUk3TW5CcEN3NjRPMkJ2cjg2TDVqdThmd2VMVktTekdQa0l1Y1JOUUZEaGFQV2pZMFE3bjFzSlY3QXZ4U2N6KzVpMXRoeWhqeGdER2pzd0JGQjhNQnJ5NDU5dGZnNjNPVmRwUU1qV0RpUmYrVUpMN045ZkdFQ21TUVBHYk5IV2dxRGdsSFluaGF1SjNhSHZ1Y2RUZDExWkVmMGpNdm5NSjB6LzVDMlFpbzMyUVNnZGRPcVh1RFd4NFlpODhCL3lvOTk1VE1NYi9IeldkUlNvYVJ5SjhBWmx6VnpXZCtsRUFxNGVjYVBDbGN1cnZQdFp6dk9TM3I5NE8xd1B0Y0xSdmdkTGd2bVg0MUNLeXNldkl2UDBmSUZmZUdnQnVEOStZQ3p5dTE3UGxRZzdwU0F6cDZuM0ZZSUlnTU5ibkFaS2VxblZBMWw1Mjd4Y2JFRmFEalo0VnhGbUFUck1DSXhnZllDSklNNHBORUJuQitJd0JLaVFDUGJ4QnFZZEYwZ1BVZ0RjbzU2UlFlZ0FUZTRQYVBDczRaNC9EdGpSUU0wTDRaZVNXRUo0SjlCdko4SWFkQlZnQkkvMWVBRThKVysrWXVDb2psM05IUTc1SXZOclBaUXlnMFNrZ1prVVhBWVJqQVErV0hIM0dFSUFFQlZCdDBtNlBVSEpuUUhTSGVRQUtnRkFBaEFJZ0RBS3JoenVkbEZuN0NYYi82ajd4Sk5rSnBPb3dFMWpNTVhFVlJLbzVyeDZaUU1ZQWpBR3FUemdXOENCcmY1N2RiOVVnOEZZbThEaTduOU5BUWdFUUNvQlFBTVJLUWFBN25aUnArd0YyL3dwNjVBQUFKb0lNZlV6Y2JYSHNHSTdVbGdjd0VNYmZoaWJpQUx5TUFZajVQTURnMk1FemdPZzBkQTlJQ3FDQ25hc0VhdW5JTjA0RENRVkFLQUJDQVJCQ2FnSm1Bc3M4Sms1WFZCRVArWVlHakRzTk5NY2JZTjZGS1RZWkFWQ1dBQmdEV0p5eVBjRGdXUENzMWJkWWN4WkFLQUJDQVJBS2dGZ3VDSlNRRjRYZ1lXUDZUR0dWVWZZQ0tWTkVGdWZXb2hWeklsVnhNYlJyK0tTdVE0RHBrYUxmdEcrdmdnZ0FmUVVRSHV2MVEwaVBhUVdnV2x2L1pRdEFRTDRDbFpsQVRnTUpCVUFvQUVJQkVFc0ZnUkxpdDRBY1lWZnF3TEtJc3hOSW1iTTRpek1ZN1kyWjEzcHFwSy9yemFPNkRnSG14OHhiMTBUWmJkY2lFOWdQeWYxL2xnMENCZVRYQVdZQ09RMGtGQUNoQUFnRlFDd1ZCRXFJYjBFMThYb0FNMk1UWmYvSUJEZUh4Z0tHbU1LR3ZEd25VQmY0Z3hHRU1ZQU9idGNqbHV4aFEvUUFqNG5UZ2JUYkF5VVg0UHZIYVNDaEFBZ0ZRQ2dBUW9nT01CTTQxdHV2OFMxSFExMURwdG0yeldQaXBOUjBkN0FFVGdBd2pRQVlBMWdjVTNtQWNEVDRrcWtQZHFRSElCUUFvUUNJY2ZnZjdXeTdxRW9iQ0lzQUFBQUFTVVZPUks1Q1lJST0nKQpjb25zdCB7IG5hdGl2ZUltYWdlIH0gPSByZXF1aXJlKCdlbGVjdHJvbicpCgptb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUltYWdlLmNyZWF0ZUZyb21EYXRhVVJMKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQVlBQUFERFBtSExBQUFHa0VsRVFWUjQydTJkMzIrVFZSakh2K2R0TndvTTl2TExBVWJDRXRrc1JqSWx4a1NRVmVsQUlKRTJYbmdoQ2VPR1JDWUIvd0FENktVeFlLS1k2TVZtTk1adzAzb2hrSFJLRWFMR0N6Tk1WTHBkdElSNHdVQXBQeHhkZjd6SGl5VXIxUTdXOWYxeDN2ZjlmdTdldDN2UE9Ydk85enpuZVU3ZmN5cmdNeEtqZmYxQ3lzRjZuMGtoOXNXN1VrTitzb2NHNG1zb0FBcUErSmtnVFdBL21laTdzdEZudW9mZkZoU0F6enA5cHVmTkZBTUZvSGpIUDZoTU00UkFBYmlvNDYwUUFvTkFsM2ErV2ZYUkE3aTQ0ODN3QnZRQUh1ajhadHBCQVhpbzgrZlNIdjlOQVJXWlEwQU8xZjhNT2JkMy92M3RtczEwNERzQnhNUERhUUJwVmRzbjJsb1FlSFFSZ3F2YllVd1VZZVR2VFduenlpM0lRc1g4K3Z6dXZwT2owWE4xUDVESXg3cUg0M2FQL3BYdnY0YkZHOWI5Ny82VmR6N0g1SVVyRFpmM01DL0FMRUFpTXNQWXlObmQrUXRpVDlidGZDdW5BbDhJSUpIWkdvUFE5UG9DVUdNS0Y0dGIwZkY2MVBaNmZTRUFBZTA0cEZ5cmN0Uy8vUEEydE9pTGJBOEltUVlxd0x6TmE2QnYydUJJM1o3eEFJbkwwY05Ddys0WjNQd2NSci9VNndXSTRRTzlFWE43UUVQSC9wMFFXblVzM3ZybE10cWY3Z2FFc053TGVHY0tFS0lIVXByWk9mck1BYUo1TERtd0JhRlZ5NmV2eTNjbWNQMjliOUQrWmJjdFp1TVU0Q0RCOERJczIvNWN6YjN4VTkvQnVIR1BVMERER0lFaGlVcmF5aXJXSDl3eWFHWjVIVy91Z3RiYU1uMTk5M0lPZDc4YXNhejk5YVlCendnZ0hqNmJ0cnFPVE5ROEFTemFzeEVMdTlaVTlWc3NZZnpEMHd3QzdTYVppYzQrcFJzd2FkNWR0UkFyWHUydHVYZmp6SThvWi82Mi9mOW5ET0FBS3c2OWpHRGJndW5yd3AvanlKKzh3RFR3b2FsZVpsdE1pTXB1VXd1MWVTRncvbzV1dEc4TVY2czNERno3NUF4Z1NBcGdGcEZlRDZUb2QyMm11aUNJanIxOU5mZHVYcnlFeVIrdU90WW1UZ0Uyc3ZSUUZLM0xxbDlKbFBKMzhOY0hLVWZiUkFIWVJPdXpxN0cwOTVtYWU5ZStTRUhlTGxJQW5rY1Q2SGhqSjBTZ2F1N2J2NDVoNHV2Zm5XOGFlOGQ2MnZkdnd2ekhWazVmVis1TjR2cUowMHEwelYxQllHdmJDVm5JRHpuWWdtekRCbjVjeDRwZHo5ZmN1NTc4SHBXcmR5aUFSb2wzSnZNQThxYW1sbVBSaUtVNS84QU9hS0hXNnVndlRFSmJHSUorc1BjaEtVUHRGM2VMWDNvS3BaNjEwOWY1ank4QVpjTnZhYUFGcVptQmMxYVdQNjlqYWMxMUlEUVBqN3p5UXNQbExObmNVM045NjlPTGtHWEdBTGJ5eDBmblhkMStWN3dQa0JpTFJvUWhCdTJyVWZwYTFJcE9BZWE5ditjMDQ2ZlNDTFNGR25zb29HSFZudTAxdDI2Yy9RbWxhemVyRmlvYVhoYUEydE5BZUtCMzFuOC9rZnl0OGJna0ZBRCtJNEIvZmg2YjA3NkFCN2wveGdDRUF2QkRNT2l1alNGUzVJSEdOMms2Z0NmaUZPVUVFTzlLalFEb1ZOOTBLV1YzQnM5MjlBUGNISXBFSm5xMG1lZlhEL1FlY1d2bk13dVlHZ0ZIZlA3L0t6WWlzekVkeU91MkdhQVl6RFpiUmlOcG9VcWpYMDBCakVValZxL1BXNEZLSW1qa29DaW1nUjVMRFJzOUpZd3JnUmFJd0Fsdk1OZkRJdWtCUE9BTm1qa3BsQjdBeGQ3QW0yY0ZsNE01QkVwRG5oSEN5ZlNVRUE1RStsWHFlR1d6QUQrZzB1OEY4Smk0bVk2SnN4bFpLZStMaDlNNXUrdGxER0RES1NBcTQ0Z0FFdG1JamxKTFRBMEI4SlV3K3ltRWRLR1ZCMEVjaCtzQUZBQ2hBQWdGUUJnRTJrZW9rSmZGNERHYS8zNmI2SGthZ2RnT1Z3SWJPU2JPUXFSUjduUmlKWkF4QUdNQSswbGtJenFLd2NNMHYxK0R3S21Wd0NNMFA5TkFRZ0VRQ29CUUFNUlBRV0Nva0plRjRJczBmeFVuMWdBQUxnUlpma3ljS2VKWU41ejJsZ2RRQ1BXM29Za2NMTnd1enhpQU1ZQjFKRWUzRGdKaXJkSVdrQlNBaGNiVklsNDY4bzFwSUtFQUNBVkFLQUJDaUNmZ1NtQ1R4OFE1aWlGeThYQnFTTjAwMEIwandMMHZwZ1JrR2tCVEFtQU00SE9hOWdESjBlZzV2Mit4WmhaQUtBQkNBUkFLZ1BndUNKU1FsNFRnWVdQT3BMRGFDSzFBbWhTUno1bDZhY1dkU0VOY2lqOHhmTUxSS2NEMVNOSHYydEdySVEzQVdRRWtSdnQ2SUtUdVdnRVkvdFovMHdJUWtNZGhjQ1dRYVNDaEFBZ0ZRQ2dBNHFzZ1VFSjhCc2p6TktVRFZFU09SaUJOWm5FK0o1bnB5N3EzOTR4MHJPdmJmWTVPQWU3SHpWdlhSTk50TjJNbHNCK1MrLzk4R3dRS3lMMEFWd0taQmhJS2dGQUFoQUlndmdvQ0pjUmJNRno4UG9DYkNZaW1mMlNDbTBPekVTVlMySGduendsMEJQNWdCR0VNNElEYjFVVXBtRkRDQWp3bXpnRUtJUjFhT2NMeHh6U1FVQUNFQWlBVUFDSEVBYmdTT05yWGIzS1JJL0d1bEd1MmJmT1lPQ2xOM1Iwc2dXTUFYQ01BeGdBK3gxVWVJSkdKSG5YMXdZNzBBSVFDSUJRQVVZZC9BZjZXQXcwb2dzTjVBQUFBQUVsRlRrU3VRbUNDJykKY29uc3QgeyBuYXRpdmVJbWFnZSB9ID0gcmVxdWlyZSgnZWxlY3Ryb24nKQoKbW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJbWFnZS5jcmVhdGVGcm9tRGF0YVVSTCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRERQbUhMQUFBSHRFbEVRVlI0MnUyZFMyd2JWUlNHL3pzZUd6ZHhra2xNUmRyU2toUkltOUpGZ0NJRUNHcW9pMkNCaUdHRkFKR3VrS2lRZUFuQkFwVUtBUnNrS2lGWUlLR1l4NElGNENDQkJHcFEzVTNLVzBXMFVDZUZPRlJKS1cwU3AzazVmc3hsa1VVeXhTR0paK0taOGZ6ZnpvK1plMzN1UCtlZWMyYnV0WURIU1BUdjdSSlNkcGY2VEFxeEw5WjJPTzRsZXlnZ25vWUNvQUNJbDFGcGdzcVRpcjRpVjN2TXR0NlhCQVhnc1VGZjZuZ3J4VUFCT0h6Zy8rK2NWZ2lCQW5EUndLK0ZFQmdFdW5Ud3JXcVBIc0RGQTIrRk42QUhxSUxCTjlNUENxQ0tCcitjL25odkNpaktOSHd5WHZvenBOMCsrSXY3dFpMcHdITUNpTFgzSmdFazdXcGYzZFprNnZoQ2FzelMvZ2g0bko3KzZKR1NIMGhrT3JmMXhpeWRiNXRyY00ySHo1anE3OEI5cjBObWl5disvbkplZ0ZtQVJHU0pheU50dGV2M1gzMjU0NllDVHdnZ2tkclRDYUZvcFFWUXVTbGMzYWc1emphZUVJQ0E4aWFrYkxFNzZ2ZXZiekRPNTFNenlJNmNYNTNEMHFXbFhvQlRRQ1d2dG5DOTRmVjBhZ2puWHZpVUhzQVNOMzhxK3BSUWNQOFNicjZNcTE5cXBRTEU5aWQyUjhvMnRoWXllb0N4U2R0amdlcnhBRUowUU1xSWhXZlVsZzRReXhSQXZWRUErUXNUdHB1TmxjQkt1dHY2V3FNSCtNZCtBVlNQQjlCOWNZbGljaTJiMlBIa0hkMm1qRjFYWS9RQVE2TzJwNFJWSTRCWSsxZkp0VGRnK1FKUU50VkM4YXVHOUxNd3NLaXFwd2o0V2h1ZzFQaFJQRHNGL2NJc1BVQWw2RWxGVjU1WDdTKy9IZjlXWXhHb01EMExtUzJpTnJZVFd2UUdyR3ZaQUNYZ1gvQU9tVWxNcDRZdy90bTN5UC84TndYZ2R2d2JqRVVnZlM2SGpXODlndEQyMGdtS1g2dURkdk5PTk96YWdiSGtUeGg5NHpCUTBMMHRnRVRxN2s0aGl2ZGJldElLRlFMVlM0cEFnYkNHUUhqNXlxRHdLUWp2dVFtQkRXR2NmZlpqeTBYZ01nK2dkMENLTGxkbUFFMTFwZlZYS0dMMnpEbmt6bzhEUlIxcVl4MXFXalpDQ1FZTTM2dmJzUlg1RisvRmhWZSs1QlRnUnZMbnhqSDcxOS93TjlWRERkVkF6K1V4OXMyUHlIelE5NStBVHpRRTBMVC9Mb1FqTndKaUlXaHZ1cjBEazd0UFl1NW9tZ0p3R3hQdjltSGkzYjc1Z0Q4Y2hLZ0xvSmkrV05vclRPUXcrdHBYeUkrTW9mbmh1eGNwUXlEODRHMFlzVkFBTEFUWk1aR05acGNjL01WY2pIK1B5Uk9uRGUvVnRtMkJFZzVTQUY1aC9QUHZMZ2tLZlFqZTB1TFJLU0FRT2lTem1iaU5QUmlzZElQWjVDRDA1M0pRTGxzSUN2MmJ3dDRVUUt5MUp3TWdZMmxxT1JDTk9QMTNGMmV5QmdFb1FUK0RRS3NRT280NHZvOSs0ekRwdVFJRllBZS92MzBVN2Z0M3J6N1EybFNMOVUvZVkzaHZOSDRFaFZQTFArSHJ1MXFER3Jya0p0TFo4Ykw2NzRybkFSSUQwWWpRUlhmbFdsejdVcUNjeUtIKyt1MFF5b0w5czMrTVlPTFVzV1dQYlhqZ0p1TzVkQjNaSDZxK0RtRGQ4M3VPK0RWVGVjeWRHMFZ3dzhJTm9jYm9MbHo4NUdmSThia2xqL04zWElHbXlBMkc5MmIrSElZK1BNMDAwTTVwb0J3bWpwMHdKalJORGJqeWpVZWh0aldXL0g0dzBvck5MejFrdUVNSUFHTTlmWmE1ZjhZQUZXVGl2VDQwM0xvVHdlWUZMN0J1U3pOYURqMk95Uk4vSUh0NkdQck1ISHlOSWRSczI0SlEyeFpER1JnQU10K2Z4T3pYQTlZR21NNk1BWndmbVpjVERLclhYWTdOQngrQnZ5RzA2bU9uVDUvQnlOTWZyV3BWMEhKWHZ6TTlnQlFaWVBXTE5HMWcxWEZLNGVRRm5Ia2hqdWJuSDBCTjY4WVYya05pL05pdk9QL3FGMERPK3VjQlBMODIwQXhtVmdhSEhyb2VqZEVic1c3ekZmOXg5Y0Q4YmVLcDFCREdFbjJtN3Y0dHR6YlE4d0pJcEtJdm16bCt4LzdkQjB4RjRadHFFZHgxRmRUMTlWQUNmdWl6YzhnUGp5SGJOd1E1bFRmMTI3ZzhmR1V1OElDZDdldkQwNWdaL3MzTzMrK3dLM0t3VXdNeUZWdEZLWEtxNlJzODVRU0VhODFLOXdwaUZtQmpWbUQzNEFNc0JGbEd1UVVpT3dlZk1jQWFpY0FPYjFEdVpwSDBBRlhnRGN6c0ZFb1A0R0p2VUoxN0JSZlVOSHo1ZU5VSTRaM2t2QkNlaUhRNWFlQWRtd1Y0QVNmOVh3QzNpVnRxbTdnS0k0dUZmYkgyWkxyUzdUSUdzSGdYRUxkaGl3QVNneEVOZVgrbk13UWdRUUZVbW14UUUwcWhHOFIyV0FlZ0FBZ0ZRQ2dBd2lDd2NnU3pHWmxURDlMOGkyMmlaV2dFVW5GWUNWek5ObkZyaU5RTHJYWlVBaGtETUFhb1BJbkJpSWFjK2hUTjc5VWdjTDRTZUlEbVp4cElLQUJDQVJBS2dIZ3BDQXhtTXpLcjNrbnpMMkJIRFFCZ0ljZ1YyOFRGcnUxTlZwY0hjQkRPWDRZbTBnQmFHUU1ROTNtQW52NDkzWUJvY2JRRkpBV3doc1pWSXRXMjVSdlRRRUlCRUFxQVVBQ0VFTmZEU3FESmJlSnNSUmZwV1B2aHVIUFRRSGRjQWU1OU1NVW5rd0JNQ1lBeGdNY3g3UUY2K3FOSHZMN0VtbGtBb1FBSUJVQW9BT0s1SUZCQy9pSUVOeHV6SjRWVmp0TUt4S1NJUE03OFF5dnVST3JpbDlqMjNrTzJUZ0d1UjRvdTExNjlDcElBN0JWQW9uOXZCNFRVWENzQTNkdjZOeTBBQWZrbWRGWUNtUVlTQ29CUUFJUUNJSjRLQWlYRSs0QThTbFBhUUZHa2FRUmlNb3Z6T0QycHZZUHVIVDA5MmRuMnpUNWJwd0QzNCthbGE4SjAzNjJvQkhaQmN2MmZaNE5BQWZrWXdFb2cwMEJDQVJBS2dGQUF4Rk5Cb0lSNEdycUxud2R3TXo1aCtrOG11RGgwTU9LSUZEYld5bjBDYllGL0dFRVlBOWpnZGpXUlZ4T09zQUMzaWJPQmJGQ0RVb2p3K21NYVNDZ0FRZ0VRQ29BUVlnT3NCUGJ2N2JMNGxNZGpiWWRkczJ5YjI4UkphZW5xWUFrY0JPQWFBVEFHOERpdThnQ0pWUFJsVjIvc1NBOUFLQUJDQVJEbjhDOGVXWklVbURzQnFBQUFBQUJKUlU1RXJrSmdnZz09JykKY29uc3QgeyBuYXRpdmVJbWFnZSB9ID0gcmVxdWlyZSgnZWxlY3Ryb24nKQoKbW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJbWFnZS5jcmVhdGVGcm9tRGF0YVVSTCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRERQbUhMQUFBSTRFbEVRVlI0MnUyZGYyd2JaeG5IdisvWmNaeGZudk9ySWVtdnBDd0pTYmNTT3NxMklxV2U0Z3gxb2lTZVFBaUJ0QlFKeE5ZT05na2tKRFIxWXdpRUpySDlzNG9oMFdSU0VZSUtISWxSMkpLcW50UnQzWmpVcGt4SzdMYllUZHZFNlZMUFRXTEhjZXg3K1NOUzA0dWQxTDA3Kys1OHorYy9uLzNldlg2Zjd6M3Y4enkrOXpXRHlmQUdlZ2NZNTRQWjN1T01IZlMwalF5WmFUd0VFS2FHQkVBQ0lNeU1sWWFnOFBqZEwvTjdiZE0rK2dJakFaak02T3UxVjFNTUpBQ2RHMzZqYzZvaEJCS0FnUXlmRHlGUUVHaFE0NnQxUGZJQUJqYThHdDZBUEVBUkdGOUpQMGdBUldSOE9mMHgzeFNRNWlGWStGRDI5eEF5dXZIdjdGY3UwNEhwQk9EcEdQVUI4T21wVDlhZGRTamZzd1BXT2dkWWlSVmlmQW5KcVp0WVBITVo0blFzcjlkbU1EbkRBZmZwckc5d1JQdmJSejM1dlBzcm5ud0FOUWYyb216THB1eGRTSXVJWFp6RTdKOThTSjY5SnVzYWQvTUNKQUMvZXgwanNsQi8rMGhMUG96UEhEWTB2TkFQUjFkYlRwL25vb2liYjMrSXlPOU9xUzRDVTB3QlhuOVBQNWpnekQ2NmhaM0NXYmtWbTEvNUxzcDNiTTY5alNDZ2J2K2pFTXBMTWZ1cmsrcE9QMllRQUlQd0tqaHYxa1BVWC8rTEF4bkc1NmswRmlhQ1NJVENFT05Mc0RnclVkSFpqTEl0RFpMUDFlemJqVVRnT2hiK09xWmFRRWlGb0FKU3RyOGR6cS9zbEJ4YnZCckc5Ry8vanBRL0lqa2VBVkQxMUI1ODdqdTlZSmJWYkwzK1d5NHNEUDhYU0lvVUJFcmMvSVQ3T1NhZ2I1MkF6aVhqbEZFd25GOTdzT09aZlM2NWZkdzYrQVBKWFowSXorTHE0V1BndDVMcnRuRWU3c2Ftdm03SnNhbGovOFRDbjgrcEVnc1Vqd2RnckF1Y3UxUThvMU9tY0xKaWY2eEZZbnd1Y3N3Y2ZXdEQ0d05BOVBkblVOM2RoWkpxeCsxamxRKzF5aElBVFFFYTR1ajVvdVQxd2tRUVN4L2trTnFsUk53NDRZUDk4NDJyaDJibktBak1RTFFNY2FUeld1RHBmTFo3VUhiTzM3Wk44bnJ1ekNjNXQ0MmR1SUFZTHFnU3ZLNmRCb3BHQUo2T2YvdnlmUTIvVzU0QUxEdnVrN2h3bmhZUmYyY2k2MmVGV2p2QUdNVFp4WUtNbSttbmdQVUxRVms0SkhQK2YyaTc1SFV5Y210MTdyY0pjSHh2RHh3UGQ4Syt1UjVDcVczRm9TV1hrWmo2RlBQL21jRGM4WS9BNHlrU2dGR3hOZFZLcC9YUDVnRUFwZDNiMGZqMEFkanFNbXRVZ3EwRTVjMU5LRzl1UW5YUGx4SCt3MXRJblBxZnVRWGc5VC9lejFpNlQ5V1RGcUFRYUsydWxMeE94eFpSdHI4Tm01OTlFa0xKM1UxZ3EzRmc2MCsvamVuYWsvZGNCQ295RHlCMmdiTUJvM2tBUzBXWjlPNjIyOUQwbzIvY05qNFhPUmF2VENFWmpvQnpEbHRERGNxYkc4RXNsdFVzMTJwQjQ4QitURTU5aHFVemt6UUZHS3BFVVdLUnZLN3NXUDJOS1I2OGpwblhUMko1YkVacW1QWWFOUHprNjZobzNYYkhlYXhvK09FVG1Iei9EVUJVeDNYUkUwR0ZFSURGa3ZYNFF1QUtyaDErTThQNEFKRHlSM0Q5eDhleE1CNlVCcFNOZGFqODVpN1Yra1lDS0FBOG5WbTNUOGNUQ0wvOHQ0MXIraWtSNGQ4TUk1MVlraHl1MnR0SkFqQlU1TEtVV2U2Tm52MEVZamgrOTdiVE1jeWRDMGlPbFcxdE1Ha01ZS3Q4alNlaVF4cjJJQ2luVVhvaHM2Z1QrL2hTenUwWHh5ZFIvZWlEcTBhcnFnQnNnaXEvQ0JwS0FKNlc0U2lBcUtxcDVVVzNLOS85WHI2UjJlWFVWTzVmSXgxZDgxd2dZeENxYkJCdkppZ0xVQnlnaVRpZDcyc3NCYVl5VThPYUNxUXdtMXNhV1ZXMkpxamdFT2VURkFNVW12SFgzNVhWTHZIZUZZZ0pxY0hLZG0zTHViMjlUZm9FMGZKY1RKYjdOOFR6QU42TGJoY1QyV0RocmxpQVVtQlN4RUxnQ2h5N1dtOGZ1bS92ZzRpKzhSNlEydGlRekdHRFkzZTdWRkRYWm9vOUNGVHYrVDI5RVAzWHh4SUJsRzZxUWMzelBZaThNckpodS9xZlBiRVM5TjNCL05seFNnTU5OdzJNWGtic3N2UUJrTHJISDBidHo3KzJFdEd2dmZQTHJhai9aUitjanp3Z2pTZHVSR1Q5SGtBUGhlcUFHMGRQWXZ1dkIyNy81QXNBdFQxNzROamRqdm14UzFpNjlpbVlSVURwbG5wVWRiVm0zUGs4TFdKbThHM1Z5c0NBRGg4S1hZa0I4aCtaSzZYajBENVo3Y29QZEtEcDZiNmNmZ1ZjRy9tSC8zSUtjMzg4cTlyZHIwOFB3RmtVdVBkRm1ob2dLMDZKLzJNY1YyL0YwWFM0VC9LVTBJWjFnSGdDNGVQdklIYmlndXBmd3ZSTHc1U2dhSGxZWlFtYzMvOHFISS9zUkdsOWRkYlBwT2JqbUR2blIrU1lEK0oxZVl0RWFXM2czYVljdi90RkplMDdEKzA3b2pnVnU5K0owaTl0ZzdXbUNoQVl4UGxGTEFXbWtmeG9TdEY1YVhsNGJpN3dpTlo5U0YyS0luVXBxdFgzMTlrZEdleDNBbEZud1FZZ2FRMHFQWWZjZ0RDZjVMcFhFR1VCR21jRldob2ZvRUtRYXNndEVHbHBmSW9COGlRQ0xieUIzTTBpeVFNVWdUZFFzbE1vZVFBRGU0UGkzQ3M0WlEzQnNqeFVORUk0NmxzUndqT3VBVDBaWHJkWmdCblEwLzhGMEM1aDYyMFRWMkI0T25YUTArRUxGZnE2RkFPb3VBdUlFZEZFQU42Z3k0bmxrbjU5Q0lDREJGQm9FblluRTFLRElEU0g2Z0FrQUlJRVFKQUFDQW9DQzRjOUVlVko2MHMwL0hlT2lUTktnMEFVSEtvRTNzczJjWG1FaTZrV0xTcUJGQU5RREZCNHZFR1hFMG5yY3pUOFpnMENWeXFCUjJqNEtRMGtTQUFFQ1lBZ0FSQm1DZ0x0aVNoUFdCK2o0VjlGaXhvQVFJV2dnbXdUcDFnY3JhTys0dklBT2tML3k5QllDRUFMeFFDRThUekFjS0JuRUdETnVoNEJUZ0xJNCtBS3JtTGM4bzNTUUlJRVFKQUFDQklBUVJDR2hpcUJDcmVKMHhTUmhUd2RJMFA2VFFPTmNRY1k5OEVVQy9jQlVDUUFpZ0ZNam1JUE1CeHduemI3RW12S0FnZ1NBRUVDSUVnQWhPbUNRQTQreGhodE5xWk5DaXVjcDFFZ0ZJckk1S3c4dEdKTXVNakdQRjhZZlUzVEtjRHdjRFpnMkx0WGdBK0F0Z0x3Qm5xN3dMalRzQUlRemExL3hRSmc0SzlDcEVvZ3BZRUVDWUFnQVJBa0FNSlVRU0FIZXhQZzc5SlFha0NhaFdnUUNJVlpuTWtaOXZjR2pXczkwZGZmZHVxZ3BsT0E4VEh5MGpXbXVPOXFWQUlId0duOW4ybURRQWIrRkVDVlFFb0RDUklBUVFJZ1NBQ0VxWUpBRHZZOFJBTS9EMkJrTEV6eG4welE0dENnU3hjcHJLZUY5Z25VQlByRENJSmlBQTNjcnBNdFc3MjZHQUhhSms0REVuWW5oSlNMN2o5S0F3a1NBRUVDSUVnQUJFRm9BRlVDQTcwREtwL3l2S2R0eERETHRtbWJPTTVWWFIzTWdaY0FHRVlBRkFPWUhFTjVBSy9mL2FLaE4zWWtEMENRQUFnU0FLRWYvZzhlZHZ1Um42b3pEZ0FBQUFCSlJVNUVya0pnZ2c9PScpCmNvbnN0IHsgbmF0aXZlSW1hZ2UgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJykKCm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBWUFBQUREUG1ITEFBQUdJRWxFUVZSNDJ1MmRTMndiUlJ6R3YxazdpUnRDc2pZUGNRRWxFclNrcC9CcXFWcFN0N1dMT0tER055UWs2clMzQnFRaUpHNm9yVGh3YkM5d1F6R1BGamc1UjZRRXhhbUVoRVNSV2dScTdWRFpSYWowUU1HQ0loa24yZUVRQkhXVGxOaGV6OFB6L1k3cmVHZDI1dnYrODUvSnpsakFNZktsZEZaSU9iM2VaMUtJeWN6VzJaeEw3ZUdCT0EwRlFBRVFsNG15Q2RSVFRMMHRtLzNPdHJtM0JBWGdXS2R2OVAwd3hVQUJHTjd4ZDd0bkdFS2dBQ3pxK0U0SWdVbWdwWjBmVm5tTUFCWjNmQmpSZ0JHZ0N6cS9uWHBRQUYzVSthM1V4NzBoWUVWV0VKRzU5VDlEeGZiT3Y3MWVteGtPbkJOQVpuU3VBS0Nnc2t6UkgwWGs0Y0hRN3JkYy9EVzh1cmtldm1kS3FmbDFQNUNvVG15Ynk0VGgvbGo2VVR6eTVrdWgxWG54eFhjZ2F5dWIrdHYvaXdLY0JVZ2tOL0JHeGNiUTMreFE0SVFBOHNVREV4Q2V2NzRBcE5QNmQwSUFBdDVwU0Rtc0src1BmdnNUdDByWFdpcXI3NEU0ZXVLTitZTU1aR2hSZ0VPQUF1b1hmc2IxQ3g4MS8wVlBZUGpzVk1PbFcxY3FRRDFnRXJnbXpGOUpIUmNlRGpVM3p0K1ZLZ1F1M25seDlOamVwS3BuR3N6dXdFTXZIMnk0ZHUza2gvanJ5eDlidXQ5NlVhQjdJb0FRWTVBeXpNN3hXeFJPU0lPemg4UUxPOWU0djlYTzN6RElNRUNieWVBcno2QTNNZFJ3N2VhbjU1a0VicHhwUlhJU0s0Vk9Gckg5dGZGcEpjL1M2eUh4ZlBqdVh5OFo3Qm9CWkVZL0wzUzZqR0pLalFDR0R1OUViMkt3WWFyYUNmZHpGZ0JncHBqYS9KeHFTcEg3RCs3bytOalBITUJRaHJMUG9zZS90OEg5djV4YjZGeXVhZFZVcjNod1FvaVZRNkhlMUtDRlFCR0xySEgvSDVmTHFILzFFd1h3VDZZM0JpbXlYWnY1WjNlaFoyaWdjZXovNUh4SHkrUVFZSXI3KzZPNEwvMjBVdmRUQUNhTi9aTzdFQjFVNjM0S3dDRDNKL2FyZHo4RllJcjdqKzVHZFBBZTVlNjNMd25zSFRnamE5V2N4aHFVUTNmL1FBOFMrNTlxZFAvM1Y1VzQzem9CWkVabXFnQ3FvVTR0RjFOSm5jL2tIOW1ONkVCL28vdlBuVmRXdnZNcmdTTEF2TGF5aDNvUjMvZmtXdmQvZlYxWkhaZ0ROTUhsZHhkQ2R2OGVwZTYzNG4yQS9HSXFLUUl4cmE1RVBVdUJJdDZIUkZLdit3MGVBc0o3Zjg5VTRrZjJJTklmMHpiMmN3alFPQXlJZUIvaTQwOG9kZjlHTDRWU0FEcmNmL1M1QnZmTFFPTG14d1V0ZGFFQUZFY0I3LzR0aUkrUE5ici91eDlRLythR2N2ZWJtUU5JVVFXYTM2U3BnZUhXM0QrT3lKWTczSDkyUWR0RENQcTVkWnJlaS8vZ0ZveTgveW9pc2I1L3IvMys3U0p1dlBHWkZ2ZFRBQUR5eGRUSmRyNi9mV3J2Q1ZPZmpkdkROeGNDVHpqKy9JWTVzanpoQTFWZldRUFVvMjMvZzJkMGFxK1Y3amRUQUl1cHBNNzErVzRRUVRNSFJYRWFhTURVVUZmbk13Zm9rQWgwUklOV0Q0dGtCT2lDYU5ET1NhR01BQlpIZys0OEszZzVXa0ZrS2RjMVFuaXZzQ3FFWThtc1NSMXY3Q3pBQlV6NnZRQWVFN2ZSTVhHS2tTdkxrNW5SUWtWMXVjd0JkSjRDWWdCYUJKQXZKMzBzOVV5WUlRQWVFNmVlV3N3WDN2STBpSGE0RGtBQkVBcUFVQUNFU2FBNllyV3FyRWRQc2ZsdmJ4Ty95a1lneXVGS1lEUEh4SFVRR1N5UDZGZ0paQTdBSEVBOStYTFNSejE2bk0zdmFoSzR1aEo0Z3MzUGFTQ2hBQWdGUUNnQTRsSVNHS3RWWlMyNmo4My9IenJXQUFBdUJHay9KbTVUNG5oc3J0QmRFY0Fnek4rR0ppb0FScGdERVBzaXdFenB3RFFnaG8xdUFVa0JkTEJ4dmFRTFI3NXhHa2dvQUVJQkVBcUFFR0lWWEFsczg1ZzRyUVNpa2htZHpaazdEYlREQWZhK21CS1JCUUJ0Q1lBNWdPTzBIUUZtU3FsNTE3ZFljeFpBS0FCQ0FSQUtnRGlYQkVySVMwTHdzREU5VTFqdklsdUJ0Q2tpeDFsOWFjVk9aQ0F1WlI2Zk82TjFDTEFlS2JMV3V0ZERBWUJlQWVSTDZURUk2VnNyZ0lCSllKdGppRHlOZ0N1Qm5BWVNDb0JRQUlRQ0lFNGxnUkxpQTBBdXNDazFzQ0lxYkFUUzVpek9jV2FLNmJLOXZSY1VKclorTWFsMUNMQWZtN2V1aWJickhzWktZQmFTKy8rY1RRSUY1R0dBSzRHY0JoSUtnRkFBaEFJZ1RpV0JFdUoxQkJhL0QyQXpFZEgyajB4d2MyZzVhY1FVTmpQQ2N3SzF3QitNSU13Qk5JUmRYeXhGODBhMEFJK0owMEF0NXNOYlR0Si9uQVlTQ29CUUFJUUNJSVJvZ0N1QnBYUTI1RnRlekd5ZHRXYmJObytKa3pMVTNjRVNPQVhBR2dFd0IzQWNxeUpBdnBnNmFmWEJqb3dBaEFJZ0ZBQXhoNzhCTzdVTmlSQnd0RWNBQUFBQVNVVk9SSzVDWUlJPScpCmNvbnN0IHsgbmF0aXZlSW1hZ2UgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJykKCm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBWUFBQUREUG1ITEFBQUpCMGxFUVZSNDJ1MmRmMndiWnhuSHYrLzVaeEludHB2RVNkdTBhOXFSeENOczZTaU1kcWp4cUZOcEN0WGlpaURRQ3FSSTAyQUJhWUFtcEVHVlRwVkFVQkFEYVpQUUJBbGpTR2hqSkFKVkZDVlQwNWEyb3RzZ2FRVTA3bWdjc3JSTG1pWlhKN0VkeDc2WFB5d2x2U1RPSFB2czgrV2V6MysreTN2MzVuMis3L00reit2M2ZjMmdNN3I5VFcyTTg4N1Y3bkhHanZwcWVydjAxQjRDQ0YxREFpQUJFSHJHU0UyUWU0YThKL2g2eTlUMkhXTWtBSjBaUFZsNUpjVkFBc2h6dzYvMVRDV0VRQUxRa09HeklRUUtBalZxZktYZVJ4NUF3NFpYd2h1UUI5Z0F4cytrSGlTQURXVDhkT3FqdnlFZ3pnTXc4SzdWN3lHZ2RlUGZXNjlVaGdQZENjRG43dXNIMEo4djlUSHNjcURnazlVd1ZUb2hXRXpnc1RoaVV6T0lYQjFGOU8yYldYOC9nODdwOFh2UHJIcURRMnlwN2ZObHEvZmJ2dEFBNThFOUtOaFdtZlJ2b25mdVFqdy9BUEdWQzBCVVN1czlIK1lGU0FCRDNpUkdaSUdXMnQ1cXBZMHZiQzVDNWZjUHcxWnpYOHBsNWllbWNQUGttMWdZR0ZkY0JMb1lBcnFIRHJTQUNZN1ZlM3J1aG5EbXRLRHF4MStDdGJKc1hlVXNyazNZZHZ3SVJqdGV3OExndUxKMTBrY3ZieG9HK0k1MU5rMVNENUJ1NzYvNDBlZGdmN2hPSG5lR0loQXZYVVhvbnpjUUd3OUNzQmVnb0g0N0hKOStFT1l5dVdibngrOWdwTzJYUUV4U3pBdlFSRkNPTURWVXdMNjdkb1ZyZi8vNTF4QWZDY3F2bnczZ2J1ZEZWUDZnRmNVZjNiWGtDU3BLVVhKa0Q0SmRsOGtEckhEejE3elBNZ0ZQSkFub1BHazhVZ1REd1BLTDdtY2EwM2tXTm4zN0FNb2UzeXNiZWdMUC94clJkMjRsTjA2SkdkVmQ3VEFXRnkxZW0vUC9EMlB0cnlvV0Myd2NEOEJZQXpqM0tQaEVSNXJDV1JYejVsTFo1L0RZeEpyR0J3QWVqR0xteW50d1B2clEwbk5jVGtXYmpXWUNjNlZQazBIMk9SYWNTNm5jd20xeDJYT1U3Yk1ieHdOSWhpNk9lRlluZUI3NDV2N09kTXZHWjhLeXp3YXJKYVZ5Qmx2aHN1ZUUwcTcvYXJPREcwWUFQdmZwL215L1k4aWJ2Z0RDUTZOd2ZLcCs4Yk8xeWdYQlZRQnBJcnhtdVNLM2ZMNGdQSEtMUElDeUthSTM5WlN1UGYzM3pQNXhFTEhEalRBV0ozcTBZRGFoL0R2TkdQL3VINUtXc1QrMUY5YXRycVdZUU9JUS8zUlowZitmWW9BY3dVTXhUUHorTGJtQkg2N0RsbDg4Q1ZORGhkd29XNHRRZHF3WkZhMmZrVjJmUHZjUFJDL2YxSzhINkI0NjJNSlkvQWxsTFpPNytzKytQb2h4ZXlGY2h6MWd4a1JRYUhOWHczYnlLU3hNQnhHYkMwT3dtR0V1dFlNSjhyNHBYcnFLeVIrZVZyeE9HaHNDcEFadzFxWmxUM0QzbFVzSXZYMER6dFo5c0gvY0RXWklHTnJrTElISldiSlNORU1qbUQ3MWQ0VC80czlLZldnbU1NY1lkam5nYk4ySDRnZnZYelQrbWtIZy9WVkFNeUROeldQKzNBZ0pRTXNVUEY2TExWOC9CRU9CZGNXOVdIQVc4VWdVZ3NrSW83MFlURWhrYTh4Z2dLMzJQaFI5NzBuY3JqOFA4ZVh6SkFBdFl0bGJoYTNmYUlGZ05pMkZIL0U0cGk5Y2dmakdKY1N1VFMwRmdhNENsTFR1UWVuQlIyQW9USWlGQ1FKY3ZrYkVaOEtZK2UwN2xBVm9qWXF2TmN1TUw4MUhNZnFUMXpGNTRwVE0rQUFnVFlRaHZuUWVJOC85Q3RHcHU3SjdyczgvQmtPVlRhY2V3R3g3a1VmRUxoVnJNSnhPb2NMUDFzRzZwVngyYmFMbkhDSjkvMTJ6WE13L2pWcy83OEgyamk4dkRna0dxd1gyTCs3RjFNbGUvUW5BVjkwakFoQVZUUzJ2ZXozWnJuZlJKMnBrbitQaGVRUmZUVzFDWi83aUtNS0JteWpjdVhYeG1xMStKNllvQmxBR0p1Rk0xaDNYc20vd29wUGl1dGI0UmNadXl3UmdMclZUREtBRy8zbnBiSG9pTXk3cloyeDl5ekNXLy9tSzU2V0lKdFlEZEYvM2VwakVPblAzeHV4UEJjWm41ZC9nV2NvZFlEWVQrT3hDU3VXdDIrVXJoMk96SWNYcWxxZER3SHJYNytVMzRmZmVSM0g5MHRJdXdXS0c4K2xHVFAyMDc4TUR5T1k2RkN3VFFHVDBBeG9DdERRTUJOOThGMUlrS3J0V2V2QVJPTnIzQTBMeTRhRHdrQnVibno2MDRycjQxM2NWY2Y4VUJPWUk2WU1RYnYvNWI3SnY5NWpBNEdyWkQ4ZWpIOFBNd0hYTUI4WVJENGJBckdhWXQ1WEJWcjlURnZndGltbkFqL0RwNjhvRndma1pBMlEvTXM4VWQzdmp1c3VVSFd2R3B2MjcwMzVuNk1ZWXhwNzdIWGd3cWtqdnowOFB3SmtJckgrVHBncXNPMDZaUEhFSzBhOU9vdHkzUCtVbFlRREE0eEttTHd6aXpzblQ0Skc0c21rd09lajB5V1I3bU9QSVBoVHZyb0dsUFBrcTM5aE1DTFAvdW9IcE55NWk0Y3FFWXFrZkNlRGVJV2ZJZXp5VDhnKzBOM1prVXQ2d293U1doNnBnTEMrQllFN3NEbzZMYzVpL2RpdHRvNmRxZkFvQ0V6MmdRODMzeHdOQmhBTC9WdlAvejdNZU9kemlBRVJIemhvZ2Foek85Qm5wQklUWkp0V3pnaWdMVURFclVOdjRBRTBFS1VhNjN4T29hWHlLQWJJa0FqVzhRYnFIUlpJSDJBRGVJSk9UUXNrRGFOZ2JiTXl6Z21QR0FBd0xYUnRHQ0MvM0o0VHdqS2N0bnd5ZnQxbUFIc2luM3d1Z1U4S1NIUk9YWTNnOGR0VG43Zy9rK3IwVUF5aDRDb2dXVVVVQTNjTWVCeFpNTGZraEFBNFNRSzZKV0IxTWlIV0NVQjJhQnlBQkVDUUFnZ1JBVUJDWU82d1JrVWVOTDFEejM5c21EcEVhZ2NnNU5CTzRubVBpc2dpWFl0VnF6QVJTREVBeFFPN3BIdlk0RURVK1M4MnYxeUF3TVJQWVFjMVBhU0JCQWlCSUFBUUpnTkJURUdpTmlEeGlmSXlhZndrMTVnQUFtZ2pLeVRGeEdZdmpJMzM5RzhzRDVCSDV2dzJOQlFCVVV3eEFhTThEOVBnUGRBSnNSMTYzQUNjQlpMRnhCYzlHTy9LTjBrQ0NCRUNRQUFnU0FFRVFtb2RtQWpNOEprNVZKQmJ3dVh1NzhqY04xRVlQME83Q0ZBUHZCNUNSQUNnRzBEa1plNEFldi9lTTNyZFlVeFpBa0FBSUVnQkJBaUIwRndSeThFSEc2TEF4ZFZKWVlZQmFnY2hRUkRvbnNXaEZtM0NKRGZycStsNVVkUWpRUEp5MWFiYjNDdWdIb0s0QXV2MU5EV0Rjb1ZrQlNQcldmOFlDWU9BL2cwUXpnWlFHRWlRQWdnUkFrQUFJWFFXQkhPdzNBRDlMVGFrQ2NSYWdSaUF5ek9KMFRzOVEwN0IyclNmMXQ5UzhkVlRWSVVEN2FIbnJHc3U0N2tyTUJMYUIwLzQvM1FhQkRQd3JBTTBFVWhwSWtBQUlFZ0JCQWlCMEZRUnlzRzlCMHZCNkFDMWpZQm4veUFSdERoMzI1RVVLNjZ1bWN3SlZnWDR3Z3FBWVFBVzM2MkFMeHU2OGFBRTZKazRGSWxZSGhKaUgraCtsZ1FRSmdDQUJFQ1FBZ2lCVWdHWUMvVTF0Q2o5eXdGZlRxNWx0MjNSTUhPZUs3Zzdtd0FzQU5DTUFpZ0YwanFZOFFQZVE5N2ltRDNZa0QwQ1FBQWdTQUpFLy9CL0Y5ZTFuYUtHUk9RQUFBQUJKUlU1RXJrSmdnZz09JykKY29uc3QgeyBuYXRpdmVJbWFnZSB9ID0gcmVxdWlyZSgnZWxlY3Ryb24nKQoKbW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJbWFnZS5jcmVhdGVGcm9tRGF0YVVSTCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRERQbUhMQUFBSTRVbEVRVlI0MnUyZGEyd1UxeFhILzNkMzFsNmJ0VDErWVRDWTREUitGb0xWMWtwVEpMTVY2eWhOb21hM3liY21xbW5VVnNLTkZQcFEreVVGRXFscHBiYVFEKzBYcXRwVktqVVBvWFdpaWhEaGlFV0JoalFKd1lVRzFvVGFUb214OFd2ODJ2Zk83UWRMbU1GcmV4K3pPek03NS9mTnM1NlpPL2Y4NTl4enp0NTdsOEZrZUFjN3V4am5QWWsrNDR6dDh6U2U2alZUZjFoQW1Cb1NBQW1BTURNQ2RVSHU4YnRlNUttZTA5VC9QQ01CbU16b3E1MnZwaGhJQURvMy9GclhWRU1JSkFBREdUNGJRcUFnMEtER1YrdCs1QUVNYkhnMXZBRjVnRHd3ZmlidElBSGtrZkhUYVkvNWhvQTRINGFWOXliK0RNTkdOLzZkN1VwbU9EQ2RBRHd0L1Q0QVByMjBwNkM5RnZhZGRSQXFTOEVFSytSQUdKRWJrd2lldXc1NUxKRDErek9Zbkw1QjErbUVIM0JJN3FaK1QxYmVmc0VDOFFlN0llNXBRMEZsV2VMYngyVUVocjdBOUZ2dkkvajJZTnJQdDU0WElBSDRYYXNZa1EyN20wN1ZxMjE4b2JrQ3RiOThFdll0RzVNK1IvcndVMHk4OENaNEtLNjZDRXd4QkhqOWU5MWdGakh4cTVhN0lkeTJveHAxaDUrQ1VMb2hwZlBFOWxiWWpwUmc5TURmMGhhQnFUMUFuNzl6Q09EYlUreWFWVDFBT204L3MxdXg3YzgvUkdGTnBlSzRISTFoN2hNL0FwZUhFWmNDRUNvMm9IaG5QVXJ2YndDektkOVA2ZnhsM0hxK1QxVXZRSVdnSEZIZTdWeGgvTkROU1l5KzlBWmlWNllVeCtkeEFkTzdhbEQ3aXlkUldGMis3QWtlK0RMbW5BTUkrWWJJQTZ4dzgxZGR6ekVMSGw4bG9IT21jVWtKREJmdlB0aXlmMC9xMXlxdzRON1hEa0J3Rk4wK0ZKWG1NZkxzc1RVamZlczlwYmpueURNUVNwYUhqQVgvQ0VaLy9JcHFYaUIvUEFCamJlRGNxZUlWeFRTRnM0TGlielVyakE4QUU4ZlBySnZteFVmbU1OSDNIalkvL2ZEdFk0N0diUkFheXhFYm5GSGxJYWtTbUFPS211dVVobDBNWXVIMWdhVE9uWC8xQXVMQjBKMUNoOE8xUTdXMjVZOEhrSzI5SFBHc0ZuaGFuKzNvU2F1VEswcVVZLy9ZRkNBbkdVZEdaSVRIcGxGY1g3c3NxSWF0a05Kb1I2THFZTjRJd05OeTBwZnRlL2hkNlFuQWNsYzB6Nk94MUxRZGpTcitMcXlwSUErZ1hvcm9TajZsNjA3VE9ZVWl5azR2S1U2dGZpQXFQWWhRNWxEdCtTa0d5QUdSY1dYQVZyaXBFcFpOeVluQXRyTmFrUW9DZ0tYQUJ1YXdtYzhEZVAwUHVSbUxQNjdxUlhOUUNBeDhkQjE0YlBkeUhHZTFvdno3SFpqNjljbDF6NjNjdHhkZ0s3TjFTMVVSNGd0UnN3MEJjaHM0NnpLYUJ3aWYreHpoOFNsRklhaWk0eXNJWGg1QjRLMHJxK2VoM1IwbzNYbGY0cXkzd0VwRGdKR1k5SjVWR3RCcXdaYjlibFQ4MUFWV1hxaDhLKzhUVWZPYko3RFIzYkc2NHdyR1ZHa1hsWUp6eE9MeFM1ajlhZ1BLMmxzVlEwSFZ3MTlIeGQ2dklUdytCVGtZZ2JXa0NJVWJLOEVzeTI1LzRzUS9VZjNJTjVTK2NDWkVIc0JvM0hyaFRjei81NzhKMDhTaXJUWFkwRkFIKzZZcWhmRW4zem1Qd0w4K1V4by9FZ1ZYWWZ3bkFlUVlIb3JqNWsvK2pvbC9uSU1jV2R1QXNZVWdSbnRPWVBwMy9iQldsOXoxbVhvemhZdzFCQlE0anZLUTFLdGhDekwvR2s3bW1IbjVOT2I2UGtiWkUrMG9idHFHZ2lvUnpDWkFEa2NRbVpDd01QQVo1bDcvQ0h3bXZQVFlXNVNGbitqVXJEa0Y0S252azRDMHFxQ3JwNWJYWEU0dG5pVStNb2ZwUDd5TDZTVCsxNzU5cytMdjBJMWJKdlVBV1lESk9LM3JCbG9ZaXUvZG9qZ1V2RFJDQXRDQ0szODhnNWJ1UFNtZlozZDlDZVdQdHQ4UkRBQmpMM3B2dS9pMUtQNTJxMklLV1R3VVJ1QWRmMXJ0TjhSOEFPODFsNVBKckNkM2Q4eCtLVkNlRDZGa2g3S2dzK2hwdzl4ZlBsajM3YTl5NzFZY21yOTBIWWpJK2U0QlVwMi9wMjhpSDN5QjZNd2NiT1dsdDQ5VlB2SWdGazVjV25OU1NPWFBIMUxPSHVZY2t2ZTh1aU1NT2ZiVWg0RjBtSGxQT1FIRVZ1YkExdDgrRGFGcDVWZTd6R0ZEOWNISFVPbHFWeHlmdlhBVmtROUhWWFAvRkFQa2tObGpaMUgyUUt2aSt3QjdiVFhxai80SWk5YytSM2gwRXBBNWJOVWlOalJ1ZzdYWXJrejlwSGxNdkh4UzlYYnBibExvVWd5Zzg4Z2NTQ3NZdE8ycVFkMmg3MEp3cERZZklCNE00Y1pMcnlMOC9nMVYzMzU5ZWdET0pDRDFSWm9ha0hLY0VoMFl4LzkrOVFvMi8rdzdzTmRXSjNWT2VHSUdOMzkvSEpHUHg3S1RCcE56VHA5TTFnYVdQZk1neEk1ZEtOeVllSHBYWkdvVzBybC9ZL2JZMll4V0E5SGF3UFdHSEwvclVDYm50M2J2T1poUkd0WmNBZnY5ZGJDV093QUxRMXhhUlBqVFVVUUh4ak4rTmxvZW5wd0xQS2psL1dOWHA3RndkVnJMNTlmWkd6bmtGZ0ZKekZrSFJJU012K0JKSnlETU5zbnVGVVJaZ0laWmdkYkdCNmdRcEJycEZvaTBORDdGQUZrU2dSYmVJTjNOSXNrRDVJRTN5R1NuVVBJQUJ2WUcrYmxYY0V3WWhqWGFtemRDK0pOdlNRajduVjE2TXJ4dXN3QXpvS2ZmQzZCZHdsYmJKaTdIOEhoc242ZkZONXpyKzFJTW9OSXVJRVpGRXdGNGg1d2lvamEzUGdUQVFRTElOU0c3eUN5eEhoQ2FRM1VBRWdCQkFpQklBQVFGZ2JuREhwSjRSRGhNM1g5bm40Z1NkUUtSYzZnU21NbzJjVm1FeTdGNkxTcUJGQU5RREpCN3ZFTk9FUkhoT2VwK3N3YUJTNVhBZzlUOWxBWVNKQUNDQkVDUUFBZ3pCWUgya01SRHdqZXArNWZSb2dZQVVDRklzMjNpVWhKSFE3OHZ2enlBanREL01qUTJES0NlWWdEQ2VCNmdiM0J2RDhDMjY3b0hPQWtnaTUxcmNlYmJsbStVQmhJa0FJSUVRSkFBQ0lJd1BGUUp6SENiT0UyUjJiQ241VlN2ZnROQVk3d0J4cDJZWXVVK0FCa0pnR0lBazVPeEIrZ2JkSjAyK3hKcnlnSUlFZ0JCQWlCSUFJVHBna0FPUHNBWWJUYW1UUXBydVVpOVFHUW9JcE96TkduRm1IQ1pEWGlhKzQ5cU9nUVlIczY2RFB2Mld1QURvSzBBdklPZGJXQmNOS3dBWkhQclAyTUJNUEFqa0trU1NHa2dRUUlnU0FBRUNZQXdWUkRJd2Y0SzhEUFVsUm9RWjhQVUNVU0dXWnpKNmZOM0RoblhlckxQM2ZqdVBrMkhBT05qNUtWckxPTzJxMUVKN0FLbjlYK21EUUlaK1BjQXFnUlNHa2lRQUFnU0FFRUNJRXdWQkhLd0E1QU5QQi9BeUZoWnhqOHlRWXREaDV5NlNHRTk5YlJQb0NiUUQwWVFGQU5vNEhaRkZoVzh1dWdCMmlaT0EwSjJFWmFZazk0L1NnTUpFZ0JCQWlCSUFBUkJhQUJWQWdjN3UxUys1RVZQNHluRExOdW1iZUk0VjNWMU1BY09BekNNQUNnR01EbUc4Z0Jldit1UW9UZDJKQTlBa0FBSUVnQ2hILzRQeVZqdkdTaE04eU1BQUFBQVNVVk9SSzVDWUlJPScpCmNvbnN0IHsgbmF0aXZlSW1hZ2UgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJykKCm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBWUFBQUREUG1ITEFBQUZPMGxFUVZSNDJ1MmR6MjhiUlJUSHYyTTd3YUpRYlZ0VkZJbERJNVVFVndJRnpwUXN5b1pydlFlNDRsd2JJWlUvQUtVVnQxNWFEbkNOdVNQWmh4NHFZcFN0T01FaFNpVWtZaGZKUG5Bb29ncGJrSkRqSHpzY0xJVzBzbHM3KzJ0bTUvdTViVGIycnQ5ODU4MTd6enZQQW9aUmE2MVZoSlJiNDg1SklkYmR4ZTJxU2ZiSWdSZ05CVUFCRUpNcDBBVEowM1MrbExPK1pxbnhoYUFBREJ2MFNhK1BVZ3dVZ09JRC83ejNqRUlJRklCR0F4K0hFQmdFYWpyNFVWMlBIa0RqZ1kvQ0c5QURaR0R3dzl3SEJaQ2h3VC9KL1ppM0JBeGxCM2xaSFg4T0hkMEgvL2g5VGJNY0dDY0F0OVR3QUhqMFd5T0U2UWFvdDV5ZHNTY2svUEpTdzlWeDloL25SVjZBV1lDRVBXRnVkSFFmL0dtV0FpTUVVR3V1bGlGeTFuZ0JTS1AxYjRRQUJISzNJZVhGckViOVlid0Fsd0NWaEhwNkhxS1lQem9PL0VPZ0Z6QUluTXJON3p2WFJRNVhaMXZubjRzUGdiMW4vMWk2dG1MSDlSa3UzUG9ZcDk5ZE9qcisvYXZ2OE8vZC9WZ0R3dXg0QUNHV0lXV1VnMk9kVURoYXdVcWc0V1RIQXdUNXFzVFFpL01TbHovN1lFdG5FNDBMQmpNakFMZDB6NHZmZ0hvTGdGbkFHT3BOWi9xVWJvTXhBS0VIU0RIVmEzNVVGbUo0TmRJM1RiQ2tVeWlkdzZuM0Z5ZWVuenYvZExIeTFIdVhNUGY2bWZHMzNSL2k3K3JQcGkwQndUS2txT2c2MjRwdnY0SFhQbG1kK3YvUFhGbWVlRzdZUFl4RUFGd0NESWNDWUF4QWt1THd0ei93K1B1ZkpwNS85WjFMZU9uQ3VhUGpKN3Y3NkQ5K01qNEc2QTBvQU4zbzd6N0N3ZTZqaWVmbmIxbFBDZUNmSDMrSjlMc0EvUVV3LzhvZDJmV3JLZDVCbTB0QWlyZ0xkUitBSDJscStkQ3hHUU1ZakFpd3d5eUFUTVd2WDkvWCt2NjFlQjZnOXRDeFJTQVMvTktGendRcVNIVFA3NUVYTElGcWVnQzExK1hTeGtvOHMzSHBMUEpuWHo0Njd1My9DZm5YWVd6dW4wR2dZZ3lhQnhqZ2dFRWdnOEg0Z3o5MVBZQVVQakQ3SnMwVXlFU2NJamlmVDA0VzlnWWFMNEJhMDdrUjV2V1hOMVkyZFIxOEJvR2pHYkJwK09kWGJFYTJ5eGJnVzRrWm9GY0kvUVZQWEdsaDNMT2ZkUUFOYWdOeERqN1R3QXltaHJOMkNXTWhLQVlScE9FTlR0b3NraDRnQTk0Z1RLZFFlZ0NOdlVFMmV3VVBDaDNrKzlYTUNPRWJieVNFYTNaRnBZRlhOZ3N3QVpWK0w0QnQ0aWExaVVzWU9SeXN1eVd2ay9SMUdRTVkwQVZFT1FIVTJyYUYvbHhaRFFId2tiRGs2Ull0a1J0c2dhUU82d0FVQUtFQUNBVkFHQVFtUjdIcnkxN2hKczEvM0NhV1R5T1F4R0VsY0pZMmNURWlnOEZDR3BWQXhnQ01BWktuMXJZdDlBclhhWDVUZzhCUkpYQ1Q1bWNhU0NnQVFnRVFDb0NZRkFRV3U3N3NGajZrK2Y4bmpSb0F3RUtRRm0zaTNEY2JYclk4Z0VLb3Z3MU5kQUFzTUFZZytubUFlbXQxQ3hBWGxiYUFwQUJpTkc3T1pzczNwb0dFQWlBVUFLRUFDQ0dLd1VwZ3lEWnhxUktJamx2YXJxcWJCdW94QS9SOU1DVXZQUUNoQk1BWXdIQkNlNEI2eTlreGZZczFzd0JDQVJBS2dGQUF4TGdnVUVJK0VJTE54dEpKWVhON3RBSUpLU0xER1QyMG9pY3lFQS9jdHhwM1VsMEN0RWVLaXJhek53Y1BRTG9DcUxYV2xpR2twYTBBQWdhQklkY1FlUnNCSzRGTUF3a0ZRQ2dBUWdFUW80SkFDZkV0SU8vVGxDa3dGQjBhZ1lUTTRneW4zbHhyNnp0NmdWZGUvR0U5MVNWQWYzVGV1aVpDMzNzVWxjQUtKUGYvR1JzRUNzaFBBVllDbVFZU0NvQlFBSVFDSUVZRmdSTGljd1FhUHcrZ00za1Ira2NtdURtMGJTdVJ3cm9MN0JPWUN2ekJDTUlZSUFXM2E0bCtvYWFFQmRnbUxnVzZSUXU1Z2MzNXh6U1FVQUNFQWlBVUFDRWtCVmdKYksxVkluN0xQWGR4VzV0dDIyd1RKMldrdTRNbGNCT0FOZ0pnREdBNFdubUFXdE81b1hWalIzb0FRZ0VRQ29Db3czOEQ2S3FubkZ3QVRBQUFBQUJKUlU1RXJrSmdnZz09JykKY29uc3QgeyBuYXRpdmVJbWFnZSB9ID0gcmVxdWlyZSgnZWxlY3Ryb24nKQoKbW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVJbWFnZS5jcmVhdGVGcm9tRGF0YVVSTCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRERQbUhMQUFBRC9VbEVRVlI0QWUzZE1YSVRTUmdGNFBlUFpyY2NFT2dJZHJCbW5ma0lReUZ2aXVZRWE5OEFUZ0NjQUc1Z2NRSTVwTXFtRURjd0dUS0I1d2dLQ0ZTMk5NMUlBVlNCUktBWjkzVFBlMTlnQjFQbFFIclYzZk83KzI4RG1mSE55YWs1ZDc3cG1UTTd5dzh2UnlDU1FLZ3BBT1FVQUhJS0FEa0ZnSndDUUU0QklLY0FrRk1BeUNrQTVCUUFjaW5ZTEYyQm5odHRmb1lDSWt3TTVDNXVCaDgzUG5DWURSOWY1ZWc0dmluZ1Z3N1o1Z2RXZ0FCRkFNYlRwME5ZMHQvNDBEa3dvd2lBSVhsVGZkSDdrTi9vTlpCY1p4YUI0eStENTViZzJjYUhXK2Y1UDVwVm44NzF4ai9uOENsL2ZQVUtIZENkS2NEc3VQcG1NalNudnkwNFpsVXRvU00wQlpEcnpnaFE5a1lPeXduOEtDRFNCYW9FVGdlTkZnS3FQL1k2cGdXaTFnRGtvbG9EaktmL0RjMld6OUFrN2tKZ2JJdkFzbnJWczFOSVl6UUZrRk1BeUNrQTVCUUFjbkV0QXY5KzlOYk5aeU9FYks4L1EwVG9DMEhqcjRNTXZxU1Bydk9EaTZBQ1FyOGx6RXA4aENkdS91MUo5V3VDZ0dnTlFDNjRFV0ExSkZ0cDUvQkdld0lEcFAxN3ZtZ0tJS2NBa0ZNQXlJVzNCbkMyZWs4dTBFbmsvM3VXOEtnU09CMjhnaTlsT3NxUDNoY0lpQ3FCd0V0NDRyQ1lJTERwTGJ4QzBPMndEOHo2OE9VTzFNSWJBUmJmanExTXZkWG4yZWsxa0p3Q1FFNEJJS2NBa0F0d0VaZ1c2TjJQMEVXOUpLcnRZa0pBaDBPM3RZbnp6QzBYWi9uUnBJQm5haE8zVy91WXptZ2xBT1BickkvN3Y0WUlnZHJFdFdDKzE3ZGs0WEhmbjJ5ajEwQnlDZ0E1QllDY0FrQ3VuVVhnM256bTd0TFhrSjhpTzFRcUhhRktZTU50NG5ibHlzVkJHNVZBclFISXRWY0p2RXVmUTFyWFppWFEyMjVjMlU1VEFEa0ZnSndDUUU0QklOZGVKWENlUG9IODBFWU5ZRVdIUTMyMmlkdFIvcy9WQkE5RWgwTTl0b25iemZvRzB3TThFSzBCeUQzb0NIQng4L1M4U3ZBK1FxWUxJeDZRU3pLMWZBdWJwZ0J5Q2dBNUJZQ2NBaURDVEpWQW4yM2ltbFpha1I5ZGpsQ0RLb0VlMjhRMXJ1Y20xYzhSYXRBYWdGenRFV0I5dnA3OGlIWE1OQUtRVXdESUtRRGtGQUJ5dFJlQkR1NnpHWDA1b1JXRzVCb2lkZWh3NkhyVFNweGNhWi96ZjYvZW9nYTFpWE4yaWtoWnNyNkd0dDBBakc5T2ptSE8zd1VQVFN0QnJYWUFETzVOOVNGbWtDanBOWkNjQWtCT0FTQ25BSkJyb0JKbzc2cWZueUQrTGRmSHhrUjJwMHJnOU9RV3NiSnlNano4Y0lZYVZBbU0rdWlhN2FPbUppcUJwM0E2L3hlckppcUIvMWUvTWtpVTlCcElUZ0VncHdDUVV3RElOVkVKZklFeTR2MEFNZXRaN1VzbWREajBOdHRIQVBJRDlRbHNoUzZNRUdxdFhSaGg5K2tZSVZDYnVCYk05L3BJRmhta2Rab0N5Q2tBNUJRQWNncUFDRE5WQWxjYldwcDFuUjllUm5Oc1cyM2luR3YwZEhCVlZsaGRpaDFOQUxRR0lCZlZDTERxNmhsMVk4Y0FhUVFncHdDUVV3RElmUWREblA3WTRGNWh4Z0FBQUFCSlJVNUVya0pnZ2c9PScpCmNvbnN0IHsgbmF0aXZlSW1hZ2UgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJykKCm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSW1hZ2UuY3JlYXRlRnJvbURhdGFVUkwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFFY1NVUkJWSGdCblZPeFVRTXhFTnlUVE80U0ZPRWh3aDN3RERCRGhyNENvQUpLQUNwZzZBQXFFREU0Y0Fsa0hrajhkRUJDcExFT1BiYUY5Qy8rc1hkR0k5M3Bibi92L2dSMHdMeWZYTlNySzBaMFhXTEJGWmpVVmdUbTdVaERzaWE0ZlRNN0x2NktvMnl5bDAzZzh4K0RVU3czM0phanlVMHZnVThlZzFtSEFNTEIrc3dzN3N2Ujh4UCtVMElXem4wMlhmMEVkUk5YUzBoeFp1WjZHRjhQWXNQTVRoWEJYalVLcXdJWGVBejdwZnp4TlVzQXVmRHNwRm9LWWpoT0ZJUnZtWGt4SkN2djBDcEJGQzJYczRmbDNyUktGZGdkemN3ZnpXQWlybG8rS2EvOWRwa1NNQ3Zra0ozRVg5OEFmY2dvaUJFSTRvSFpCTWtQcTZmUWozRGF5TlVvQjlQQk4zQXl6UklFb3ZyeGlHWGlXaG1ESHN2ZGw0ZG03RGNvVVZ6UFArMS9kZ0FBQUFCSlJVNUVya0pnZ2c9PScpCid1c2Ugc3RyaWN0Jwptb2R1bGUuZXhwb3J0cyA9IHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJyA/IHJlcXVpcmUoJy4vcHJlbG9hZCcpIDogcmVxdWlyZSgnLi9ndWknKQovKiBlc2xpbnQtZW52IGJyb3dzZXIgKi8KY29uc3Qgc3RyZWFteCA9IHJlcXVpcmUoJ3N0cmVhbXgnKQpjb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoJ2VsZWN0cm9uJykKCm1vZHVsZS5leHBvcnRzID0gY2xhc3MgSVBDIHsKICBnZXRNZWRpYUFjY2Vzc1N0YXR1cyAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdnZXRNZWRpYUFjY2Vzc1N0YXR1cycsIC4uLmFyZ3MpIH0KICBhc2tGb3JNZWRpYUFjY2VzcyAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdhc2tGb3JNZWRpYUFjY2VzcycsIC4uLmFyZ3MpIH0KICBkZXNrdG9wU291cmNlcyAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdkZXNrdG9wU291cmNlcycsIC4uLmFyZ3MpIH0KICBjaHJvbWUgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnY2hyb21lJywgLi4uYXJncykgfQogIGN0cmwgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnY3RybCcsIC4uLmFyZ3MpIH0KICBwYXJlbnQgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgncGFyZW50JywgLi4uYXJncykgfQogIG9wZW4gKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnb3BlbicsIC4uLmFyZ3MpIH0KICBjbG9zZSAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdjbG9zZScsIC4uLmFyZ3MpIH0KICBxdWl0ICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ3F1aXQnLCAuLi5hcmdzKSB9CiAgc2hvdyAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdzaG93JywgLi4uYXJncykgfQogIGhpZGUgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnaGlkZScsIC4uLmFyZ3MpIH0KICBtaW5pbWl6ZSAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdtaW5pbWl6ZScsIC4uLmFyZ3MpIH0KICBtYXhpbWl6ZSAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdtYXhpbWl6ZScsIC4uLmFyZ3MpIH0KICBzZXRNYXhpbWl6YWJsZSAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdzZXRNYXhpbWl6YWJsZScsIC4uLmFyZ3MpIH0KICBzZXRNaW5pbWl6YWJsZSAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdzZXRNaW5pbWl6YWJsZScsIC4uLmFyZ3MpIH0KICBmdWxsc2NyZWVuICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ2Z1bGxzY3JlZW4nLCAuLi5hcmdzKSB9CiAgcmVzdG9yZSAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdyZXN0b3JlJywgLi4uYXJncykgfQogIGZvY3VzICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ2ZvY3VzJywgLi4uYXJncykgfQogIGJsdXIgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnYmx1cicsIC4uLmFyZ3MpIH0KICBkaW1lbnNpb25zICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ2RpbWVuc2lvbnMnLCAuLi5hcmdzKSB9CiAgaXNWaXNpYmxlICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ2lzVmlzaWJsZScsIC4uLmFyZ3MpIH0KICBpc0Nsb3NlZCAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdpc0Nsb3NlZCcsIC4uLmFyZ3MpIH0KICBpc01pbmltaXplZCAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdpc01pbmltaXplZCcsIC4uLmFyZ3MpIH0KICBpc01heGltaXplZCAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdpc01heGltaXplZCcsIC4uLmFyZ3MpIH0KICBpc0Z1bGxzY3JlZW4gKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnaXNGdWxsc2NyZWVuJywgLi4uYXJncykgfQogIHNldFNpemUgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnc2V0U2l6ZScsIC4uLmFyZ3MpIH0KICBwZXJtaXQgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgncGVybWl0JywgLi4uYXJncykgfQogIHVubG9hZGluZyAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCd1bmxvYWRpbmcnLCAuLi5hcmdzKSB9CiAgY29tcGxldGVVbmxvYWQgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnY29tcGxldGVVbmxvYWQnLCAuLi5hcmdzKSB9CiAgYXR0YWNoTWFpblZpZXcgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnYXR0YWNoTWFpblZpZXcnLCAuLi5hcmdzKSB9CiAgZGV0YWNoTWFpblZpZXcgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnZGV0YWNoTWFpblZpZXcnLCAuLi5hcmdzKSB9CiAgYWZ0ZXJWaWV3TG9hZGVkICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ2FmdGVyVmlld0xvYWRlZCcsIC4uLmFyZ3MpIH0KICBzZXRXaW5kb3dCdXR0b25Qb3NpdGlvbiAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdzZXRXaW5kb3dCdXR0b25Qb3NpdGlvbicsIC4uLmFyZ3MpIH0KICBzZXRXaW5kb3dCdXR0b25WaXNpYmlsaXR5ICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ3NldFdpbmRvd0J1dHRvblZpc2liaWxpdHknLCAuLi5hcmdzKSB9CiAgYXN5bmMgcmVxdWVzdElkZW50aXR5ICguLi5hcmdzKSB7CiAgICBjb25zdCBwdWJsaWNLZXkgPSBhd2FpdCBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ3JlcXVlc3RJZGVudGl0eScsIC4uLmFyZ3MpCiAgICByZXR1cm4gQnVmZmVyLmZyb20ocHVibGljS2V5KQogIH0KCiAgc2hhcmVJZGVudGl0eSAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdzaGFyZUlkZW50aXR5JywgLi4uYXJncykgfQogIGNsZWFySWRlbnRpdHkgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnY2xlYXJJZGVudGl0eScsIC4uLmFyZ3MpIH0KICBtZXNzYWdlICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ21lc3NhZ2UnLCAuLi5hcmdzKSB9CiAgY2hlY2twb2ludCAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdjaGVja3BvaW50JywgLi4uYXJncykgfQogIHZlcnNpb25zICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ3ZlcnNpb25zJywgLi4uYXJncykgfQogIHVwZGF0ZWQgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgndXBkYXRlZCcsIC4uLmFyZ3MpIH0KICByZXN0YXJ0ICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ3Jlc3RhcnQnLCAuLi5hcmdzKSB9CiAgZ2V0ICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ2dldCcsIC4uLmFyZ3MpIH0KICBleGlzdHMgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnZXhpc3RzJywgLi4uYXJncykgfQogIGNvbXBhcmUgKC4uLmFyZ3MpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLmludm9rZSgnY29tcGFyZScsIC4uLmFyZ3MpIH0KICBiYWRnZSAoLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCdiYWRnZScsIC4uLmFyZ3MpIH0KICBmaW5kICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ2ZpbmQnLCAuLi5hcmdzKSB9CgogIGdldFBhdGhGb3JGaWxlIChmaWxlKSB7IHJldHVybiBlbGVjdHJvbi53ZWJVdGlscy5nZXRQYXRoRm9yRmlsZShmaWxlKSB9CgogIHRyYXkgKG9wdHMsIGxpc3RlbmVyKSB7CiAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5vbigndHJheScsIChlLCBkYXRhKSA9PiB7IGxpc3RlbmVyKGRhdGEsIG9wdHMsIGxpc3RlbmVyKSB9KQogICAgZWxlY3Ryb24uaXBjUmVuZGVyZXIuc2VuZCgndHJheScsIG9wdHMpCiAgICByZXR1cm4gKCkgPT4gewogICAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3RyYXknKQogICAgICByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuaW52b2tlKCd1bnRyYXknKQogICAgfQogIH0KCiAgc2VuZFRvIChpZCwgLi4uYXJncykgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuc2VuZCgnc2VuZC10bycsIGlkLCAuLi5hcmdzKSB9CiAgcmVjZWl2ZUZyb20gKGZuKSB7CiAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5vbignc2VuZCcsIGZuKQogICAgcmV0dXJuICgpID0+IGVsZWN0cm9uLmlwY1JlbmRlcmVyLnJlbW92ZUxpc3RlbmVyKCdzZW5kJywgZm4pCiAgfQoKICBnZXRJZCAoKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kU3luYygnaWQnKSB9CiAgZ2V0UGFyZW50SWQgKCkgeyByZXR1cm4gZWxlY3Ryb24uaXBjUmVuZGVyZXIuc2VuZFN5bmMoJ3BhcmVudElkJykgfQogIGV4aXQgKGNvZGUpIHsgcmV0dXJuIGVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmRTeW5jKCdleGl0JywgY29kZSkgfQoKICBtZXNzYWdlcyAocGF0dGVybikgeyByZXR1cm4gbmV3IFN0cmVhbSgnbWVzc2FnZXMnLCBwYXR0ZXJuKSB9CiAgZm91bmQgKG9wdHMgPSB7fSkgeyByZXR1cm4gbmV3IFN0cmVhbSgnZm91bmQnLCBvcHRzKSB9CiAgc3lzdGVtVGhlbWUgKCkgeyByZXR1cm4gbmV3IFN0cmVhbSgnc3lzdGVtLXRoZW1lJykgfQogIHdhcm1pbmcgKCkgeyByZXR1cm4gbmV3IFN0cmVhbSgnd2FybWluZycpIH0KICByZXBvcnRzICgpIHsgcmV0dXJuIG5ldyBTdHJlYW0oJ3JlcG9ydHMnKSB9CiAgcnVuIChsaW5rLCBhcmdzKSB7IHJldHVybiBuZXcgU3RyZWFtKCdydW4nLCBsaW5rLCBhcmdzKSB9CiAgcGlwZSAoKSB7IHJldHVybiBuZXcgU3RyZWFtKCdwaXBlJykgfQogIGR1bXAgKG9wdHMgPSB7fSkgeyByZXR1cm4gbmV3IFN0cmVhbSgnZHVtcCcsIG9wdHMpIH0KICBzdGFnZSAob3B0cyA9IHt9KSB7IHJldHVybiBuZXcgU3RyZWFtKCdzdGFnZScsIG9wdHMpIH0KICByZWxlYXNlIChvcHRzID0ge30pIHsgcmV0dXJuIG5ldyBTdHJlYW0oJ3JlbGVhc2UnLCBvcHRzKSB9CiAgaW5mbyAob3B0cyA9IHt9KSB7IHJldHVybiBuZXcgU3RyZWFtKCdpbmZvJywgb3B0cykgfQogIHNlZWQgKG9wdHMgPSB7fSkgeyByZXR1cm4gbmV3IFN0cmVhbSgnc2VlZCcsIG9wdHMpIH0KCiAgcmVwb3J0ICguLi5hcmdzKSB7IHJldHVybiBlbGVjdHJvbi5pcGNSZW5kZXJlci5pbnZva2UoJ3JlcG9ydCcsIC4uLmFyZ3MpIH0KCiAgcmVmICgpIHt9CiAgdW5yZWYgKCkge30KfQoKY2xhc3MgU3RyZWFtIGV4dGVuZHMgc3RyZWFteC5EdXBsZXggewogICNpZCA9IG51bGwKICAjbWV0aG9kID0gbnVsbAogICNndWFyZCAoZm4pIHsKICAgIHJldHVybiAoZXZ0LCBpZCwgLi4uYXJncykgPT4gewogICAgICBpZiAoaWQgIT09IHRoaXMuI2lkKSByZXR1cm4KICAgICAgZm4oLi4uYXJncykKICAgIH0KICB9CgogIGNvbnN0cnVjdG9yIChtZXRob2QsIC4uLmFyZ3MpIHsKICAgIHN1cGVyKCkKICAgIHRoaXMuI21ldGhvZCA9IG1ldGhvZAogICAgdGhpcy4jaWQgPSBlbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kU3luYygnc3RyZWFtSWQnKQogICAgZWxlY3Ryb24uaXBjUmVuZGVyZXIuc2VuZCh0aGlzLiNtZXRob2QsIC4uLmFyZ3MpCiAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5vbignc3RyZWFtRXJyb3InLCB0aGlzLiNndWFyZCgoc3RhY2spID0+IHsKICAgICAgdGhpcy5kZXN0cm95KG5ldyBFcnJvcignU3RyZWFtIEVycm9yIChmcm9tIGVsZWN0cm9uLW1haW4pOiAnICsgc3RhY2spKQogICAgfSkpCiAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5vbignc3RyZWFtQ2xvc2UnLCB0aGlzLiNndWFyZCgoKSA9PiB0aGlzLmRlc3Ryb3koKSkpCiAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5vbignc3RyZWFtRW5kJywgdGhpcy4jZ3VhcmQoKCkgPT4gdGhpcy5lbmQoKSkpCiAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5vbignc3RyZWFtRGF0YScsIHRoaXMuI2d1YXJkKChkYXRhKSA9PiB7IHRoaXMucHVzaChkYXRhKSB9KSkKCiAgICB0aGlzLm9uY2UoJ2Nsb3NlJywgKCkgPT4gewogICAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kKCdzdHJlYW1DbG9zZScsIHRoaXMuI2lkKQogICAgfSkKICB9CgogIF93cml0ZSAoZGF0YSwgY2IpIHsKICAgIGVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmQoJ3N0cmVhbVdyaXRlJywgdGhpcy4jaWQsIGRhdGEpCiAgICBjYigpCiAgfQoKICBfZmluYWwgKGNiKSB7CiAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kKCdzdHJlYW1FbmQnLCB0aGlzLiNpZCkKICAgIGNiKCkKICB9Cn0KLyogZXNsaW50LWVudiBicm93c2VyICovCid1c2Ugc3RyaWN0Jwpjb25zdCBJUEMgPSByZXF1aXJlKCcuL2lwYycpCmNvbnN0IGFwaSA9IHJlcXVpcmUoJy4uL2FwaScpCmNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZSgnZWxlY3Ryb24nKQoKbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBQZWFyR1VJIHsKICBjb25zdHJ1Y3RvciAoeyBBUEksIHN0YXRlIH0pIHsKICAgIGNvbnN0IGlkID0gdGhpcy5pZCA9IGVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmRTeW5jKCdpZCcpCgogICAgdGhpcy5pcGMgPSBuZXcgSVBDKCkKICAgIGVsZWN0cm9uLmlwY1JlbmRlcmVyLm9uKCdpcGMnLCAoZSwgZGF0YSkgPT4gewogICAgICB0aGlzLmlwYy5zdHJlYW0ucHVzaChCdWZmZXIuZnJvbShkYXRhKSkKICAgIH0pCgogICAgY29uc3QgdGVhcmRvd24gPSBhc3luYyAoZm4pID0+IHsKICAgICAgaWYgKHN0YXRlLmlzRGVjYWwpIHJldHVybgogICAgICBjb25zdCBhY3Rpb24gPSBhd2FpdCB0aGlzLmlwYy51bmxvYWRpbmcoeyBpZCB9KSAvLyBvbmx5IHJlc29sdmVzIHdoZW4gdW5sb2FkaW5nIG9jY3VycwogICAgICBhd2FpdCBmbigpCiAgICAgIGF3YWl0IHRoaXMuaXBjLmNvbXBsZXRlVW5sb2FkKHsgaWQsIGFjdGlvbiB9KQogICAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdyZWxvYWQnKSBsb2NhdGlvbi5yZWxvYWQoKQogICAgICBlbHNlIGlmIChhY3Rpb24udHlwZSA9PT0gJ25hdicpIGxvY2F0aW9uLmhyZWYgPSBhY3Rpb24udXJsCiAgICB9CgogICAgQVBJID0gYXBpKEFQSSkKICAgIHRoaXMuYXBpID0gbmV3IEFQSSh0aGlzLmlwYywgc3RhdGUsIHRlYXJkb3duLCBpZCkKICB9Cn0KZnVuY3Rpb24gaXNCdWZmZXIgKHZhbHVlKSB7CiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5Cn0KCmZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7CiAgcmV0dXJuIEJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKQp9CgpmdW5jdGlvbiBhbGxvYyAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHsKICByZXR1cm4gQnVmZmVyLmFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKQp9CgpmdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkgewogIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSkKfQoKZnVuY3Rpb24gYWxsb2NVbnNhZmVTbG93IChzaXplKSB7CiAgcmV0dXJuIEJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3coc2l6ZSkKfQoKZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykgewogIHJldHVybiBCdWZmZXIuYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKQp9CgpmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7CiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKGEsIGIpCn0KCmZ1bmN0aW9uIGNvbmNhdCAoYnVmZmVycywgdG90YWxMZW5ndGgpIHsKICByZXR1cm4gQnVmZmVyLmNvbmNhdChidWZmZXJzLCB0b3RhbExlbmd0aCkKfQoKZnVuY3Rpb24gY29weSAoc291cmNlLCB0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7CiAgcmV0dXJuIHRvQnVmZmVyKHNvdXJjZSkuY29weSh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKQp9CgpmdW5jdGlvbiBlcXVhbHMgKGEsIGIpIHsKICByZXR1cm4gdG9CdWZmZXIoYSkuZXF1YWxzKGIpCn0KCmZ1bmN0aW9uIGZpbGwgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCwgZW5kLCBlbmNvZGluZykgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLmZpbGwodmFsdWUsIG9mZnNldCwgZW5kLCBlbmNvZGluZykKfQoKZnVuY3Rpb24gZnJvbSAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKQp9CgpmdW5jdGlvbiBpbmNsdWRlcyAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHsKICByZXR1cm4gdG9CdWZmZXIoYnVmZmVyKS5pbmNsdWRlcyh2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpCn0KCmZ1bmN0aW9uIGluZGV4T2YgKGJ1ZmZlciwgdmFsdWUsIGJ5ZmVPZmZzZXQsIGVuY29kaW5nKSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikuaW5kZXhPZih2YWx1ZSwgYnlmZU9mZnNldCwgZW5jb2RpbmcpCn0KCmZ1bmN0aW9uIGxhc3RJbmRleE9mIChidWZmZXIsIHZhbHVlLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLmxhc3RJbmRleE9mKHZhbHVlLCBieXRlT2Zmc2V0LCBlbmNvZGluZykKfQoKZnVuY3Rpb24gc3dhcDE2IChidWZmZXIpIHsKICByZXR1cm4gdG9CdWZmZXIoYnVmZmVyKS5zd2FwMTYoKQp9CgpmdW5jdGlvbiBzd2FwMzIgKGJ1ZmZlcikgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLnN3YXAzMigpCn0KCmZ1bmN0aW9uIHN3YXA2NCAoYnVmZmVyKSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikuc3dhcDY0KCkKfQoKZnVuY3Rpb24gdG9CdWZmZXIgKGJ1ZmZlcikgewogIGlmIChCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkgcmV0dXJuIGJ1ZmZlcgogIHJldHVybiBCdWZmZXIuZnJvbShidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpCn0KCmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIsIGVuY29kaW5nLCBzdGFydCwgZW5kKSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikudG9TdHJpbmcoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpCn0KCmZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikud3JpdGUoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpCn0KCmZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLndyaXRlRG91YmxlTEUodmFsdWUsIG9mZnNldCkKfQoKZnVuY3Rpb24gd3JpdGVGbG9hdExFIChidWZmZXIsIHZhbHVlLCBvZmZzZXQpIHsKICByZXR1cm4gdG9CdWZmZXIoYnVmZmVyKS53cml0ZUZsb2F0TEUodmFsdWUsIG9mZnNldCkKfQoKZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0KSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikud3JpdGVVSW50MzJMRSh2YWx1ZSwgb2Zmc2V0KQp9CgpmdW5jdGlvbiB3cml0ZUludDMyTEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLndyaXRlSW50MzJMRSh2YWx1ZSwgb2Zmc2V0KQp9CgpmdW5jdGlvbiByZWFkRG91YmxlTEUgKGJ1ZmZlciwgb2Zmc2V0KSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikucmVhZERvdWJsZUxFKG9mZnNldCkKfQoKZnVuY3Rpb24gcmVhZEZsb2F0TEUgKGJ1ZmZlciwgb2Zmc2V0KSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikucmVhZEZsb2F0TEUob2Zmc2V0KQp9CgpmdW5jdGlvbiByZWFkVUludDMyTEUgKGJ1ZmZlciwgb2Zmc2V0KSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikucmVhZFVJbnQzMkxFKG9mZnNldCkKfQoKZnVuY3Rpb24gcmVhZEludDMyTEUgKGJ1ZmZlciwgb2Zmc2V0KSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikucmVhZEludDMyTEUob2Zmc2V0KQp9CgpmdW5jdGlvbiB3cml0ZURvdWJsZUJFIChidWZmZXIsIHZhbHVlLCBvZmZzZXQpIHsKICByZXR1cm4gdG9CdWZmZXIoYnVmZmVyKS53cml0ZURvdWJsZUJFKHZhbHVlLCBvZmZzZXQpCn0KCmZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0KSB7CiAgcmV0dXJuIHRvQnVmZmVyKGJ1ZmZlcikud3JpdGVGbG9hdEJFKHZhbHVlLCBvZmZzZXQpCn0KCmZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLndyaXRlVUludDMyQkUodmFsdWUsIG9mZnNldCkKfQoKZnVuY3Rpb24gd3JpdGVJbnQzMkJFIChidWZmZXIsIHZhbHVlLCBvZmZzZXQpIHsKICByZXR1cm4gdG9CdWZmZXIoYnVmZmVyKS53cml0ZUludDMyQkUodmFsdWUsIG9mZnNldCkKfQoKZnVuY3Rpb24gcmVhZERvdWJsZUJFIChidWZmZXIsIG9mZnNldCkgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLnJlYWREb3VibGVCRShvZmZzZXQpCn0KCmZ1bmN0aW9uIHJlYWRGbG9hdEJFIChidWZmZXIsIG9mZnNldCkgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLnJlYWRGbG9hdEJFKG9mZnNldCkKfQoKZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChidWZmZXIsIG9mZnNldCkgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLnJlYWRVSW50MzJCRShvZmZzZXQpCn0KCmZ1bmN0aW9uIHJlYWRJbnQzMkJFIChidWZmZXIsIG9mZnNldCkgewogIHJldHVybiB0b0J1ZmZlcihidWZmZXIpLnJlYWRJbnQzMkJFKG9mZnNldCkKfQoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgaXNCdWZmZXIsCiAgaXNFbmNvZGluZywKICBhbGxvYywKICBhbGxvY1Vuc2FmZSwKICBhbGxvY1Vuc2FmZVNsb3csCiAgYnl0ZUxlbmd0aCwKICBjb21wYXJlLAogIGNvbmNhdCwKICBjb3B5LAogIGVxdWFscywKICBmaWxsLAogIGZyb20sCiAgaW5jbHVkZXMsCiAgaW5kZXhPZiwKICBsYXN0SW5kZXhPZiwKICBzd2FwMTYsCiAgc3dhcDMyLAogIHN3YXA2NCwKICB0b0J1ZmZlciwKICB0b1N0cmluZywKICB3cml0ZSwKICB3cml0ZURvdWJsZUxFLAogIHdyaXRlRmxvYXRMRSwKICB3cml0ZVVJbnQzMkxFLAogIHdyaXRlSW50MzJMRSwKICByZWFkRG91YmxlTEUsCiAgcmVhZEZsb2F0TEUsCiAgcmVhZFVJbnQzMkxFLAogIHJlYWRJbnQzMkxFLAogIHdyaXRlRG91YmxlQkUsCiAgd3JpdGVGbG9hdEJFLAogIHdyaXRlVUludDMyQkUsCiAgd3JpdGVJbnQzMkJFLAogIHJlYWREb3VibGVCRSwKICByZWFkRmxvYXRCRSwKICByZWFkVUludDMyQkUsCiAgcmVhZEludDMyQkUKCn0KewogICJuYW1lIjogImI0YSIsCiAgInZlcnNpb24iOiAiMS42LjciLAogICJkZXNjcmlwdGlvbiI6ICJCcmlkZ2luZyB0aGUgZ2FwIGJldHdlZW4gYnVmZmVycyBhbmQgdHlwZWQgYXJyYXlzIiwKICAibWFpbiI6ICJpbmRleC5qcyIsCiAgImZpbGVzIjogWwogICAgImJyb3dzZXIuanMiLAogICAgImluZGV4LmpzIiwKICAgICJsaWIiCiAgXSwKICAiYnJvd3NlciI6IHsKICAgICIuL2luZGV4LmpzIjogIi4vYnJvd3Nlci5qcyIKICB9LAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAic3RhbmRhcmQgJiYgYnJpdHRsZSB0ZXN0LyoubWpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2I0YS5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iNGEvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iNGEjcmVhZG1lIiwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuNS4yIiwKICAgICJuYW5vYmVuY2giOiAiXjMuMC4wIiwKICAgICJzdGFuZGFyZCI6ICJeMTcuMS4wIgogIH0KfQpjb25zdCByZXNvbHZlID0gcmVxdWlyZSgnYmFyZS1tb2R1bGUtcmVzb2x2ZScpCmNvbnN0IHsgVmVyc2lvbiB9ID0gcmVxdWlyZSgnYmFyZS1zZW12ZXInKQpjb25zdCBlcnJvcnMgPSByZXF1aXJlKCcuL2xpYi9lcnJvcnMnKQoKbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZnVuY3Rpb24gcmVzb2x2ZSgKICBzcGVjaWZpZXIsCiAgcGFyZW50VVJMLAogIG9wdHMsCiAgcmVhZFBhY2thZ2UKKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICByZWFkUGFja2FnZSA9IG9wdHMKICAgIG9wdHMgPSB7fQogIH0gZWxzZSBpZiAodHlwZW9mIHJlYWRQYWNrYWdlICE9PSAnZnVuY3Rpb24nKSB7CiAgICByZWFkUGFja2FnZSA9IGRlZmF1bHRSZWFkUGFja2FnZQogIH0KCiAgcmV0dXJuIHsKICAgICpbU3ltYm9sLml0ZXJhdG9yXSgpIHsKICAgICAgY29uc3QgZ2VuZXJhdG9yID0gZXhwb3J0cy5hZGRvbihzcGVjaWZpZXIsIHBhcmVudFVSTCwgb3B0cykKCiAgICAgIGxldCBuZXh0ID0gZ2VuZXJhdG9yLm5leHQoKQoKICAgICAgd2hpbGUgKG5leHQuZG9uZSAhPT0gdHJ1ZSkgewogICAgICAgIGNvbnN0IHZhbHVlID0gbmV4dC52YWx1ZQoKICAgICAgICBpZiAodmFsdWUucGFja2FnZSkgewogICAgICAgICAgbmV4dCA9IGdlbmVyYXRvci5uZXh0KHJlYWRQYWNrYWdlKHZhbHVlLnBhY2thZ2UpKQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBuZXh0ID0gZ2VuZXJhdG9yLm5leHQoeWllbGQgdmFsdWUucmVzb2x1dGlvbikKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXh0LnZhbHVlCiAgICB9LAoKICAgIGFzeW5jICpbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkgewogICAgICBjb25zdCBnZW5lcmF0b3IgPSBleHBvcnRzLmFkZG9uKHNwZWNpZmllciwgcGFyZW50VVJMLCBvcHRzKQoKICAgICAgbGV0IG5leHQgPSBnZW5lcmF0b3IubmV4dCgpCgogICAgICB3aGlsZSAobmV4dC5kb25lICE9PSB0cnVlKSB7CiAgICAgICAgY29uc3QgdmFsdWUgPSBuZXh0LnZhbHVlCgogICAgICAgIGlmICh2YWx1ZS5wYWNrYWdlKSB7CiAgICAgICAgICBuZXh0ID0gZ2VuZXJhdG9yLm5leHQoYXdhaXQgcmVhZFBhY2thZ2UodmFsdWUucGFja2FnZSkpCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5leHQgPSBnZW5lcmF0b3IubmV4dCh5aWVsZCB2YWx1ZS5yZXNvbHV0aW9uKQogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIG5leHQudmFsdWUKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGRlZmF1bHRSZWFkUGFja2FnZSgpIHsKICByZXR1cm4gbnVsbAp9Cgpjb25zdCB7IFVOUkVTT0xWRUQsIFlJRUxERUQsIFJFU09MVkVEIH0gPSByZXNvbHZlLmNvbnN0YW50cwoKZXhwb3J0cy5jb25zdGFudHMgPSB7CiAgVU5SRVNPTFZFRCwKICBZSUVMREVELAogIFJFU09MVkVECn0KCmV4cG9ydHMuYWRkb24gPSBmdW5jdGlvbiogKHNwZWNpZmllciwgcGFyZW50VVJMLCBvcHRzID0ge30pIHsKICBjb25zdCB7IHJlc29sdXRpb25zID0gbnVsbCB9ID0gb3B0cwoKICBpZiAoZXhwb3J0cy5zdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyKHNwZWNpZmllcikpIHsKICAgIHNwZWNpZmllciA9ICcvJyArIHNwZWNpZmllcgogIH0KCiAgbGV0IHN0YXR1cwoKICBpZiAocmVzb2x1dGlvbnMpIHsKICAgIHN0YXR1cyA9IHlpZWxkKiByZXNvbHZlLnByZXJlc29sdmVkKHNwZWNpZmllciwgcmVzb2x1dGlvbnMsIHBhcmVudFVSTCwgb3B0cykKCiAgICBpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzCiAgfQoKICBzdGF0dXMgPSB5aWVsZCogZXhwb3J0cy51cmwoc3BlY2lmaWVyLCBwYXJlbnRVUkwsIG9wdHMpCgogIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKCiAgbGV0IHZlcnNpb24gPSBudWxsCgogIGNvbnN0IGkgPSBzcGVjaWZpZXIubGFzdEluZGV4T2YoJ0AnKQoKICBpZiAoaSA+IDApIHsKICAgIHZlcnNpb24gPSBzcGVjaWZpZXIuc3Vic3RyaW5nKGkgKyAxKQoKICAgIHRyeSB7CiAgICAgIFZlcnNpb24ucGFyc2UodmVyc2lvbikKCiAgICAgIHNwZWNpZmllciA9IHNwZWNpZmllci5zdWJzdHJpbmcoMCwgaSkKICAgIH0gY2F0Y2ggewogICAgICB2ZXJzaW9uID0gbnVsbAogICAgfQogIH0KCiAgaWYgKAogICAgc3BlY2lmaWVyID09PSAnLicgfHwKICAgIHNwZWNpZmllciA9PT0gJy4uJyB8fAogICAgc3BlY2lmaWVyWzBdID09PSAnLycgfHwKICAgIHNwZWNpZmllclswXSA9PT0gJ1xcJyB8fAogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4vJykgfHwKICAgIHNwZWNpZmllci5zdGFydHNXaXRoKCcuXFwnKSB8fAogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4uLycpIHx8CiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLi5cXCcpCiAgKSB7CiAgICByZXR1cm4geWllbGQqIGV4cG9ydHMuZGlyZWN0b3J5KHNwZWNpZmllciwgdmVyc2lvbiwgcGFyZW50VVJMLCBvcHRzKQogIH0KCiAgcmV0dXJuIHlpZWxkKiBleHBvcnRzLnBhY2thZ2Uoc3BlY2lmaWVyLCB2ZXJzaW9uLCBwYXJlbnRVUkwsIG9wdHMpCn0KCmV4cG9ydHMudXJsID0gZnVuY3Rpb24qICh1cmwsIHBhcmVudFVSTCwgb3B0cyA9IHt9KSB7CiAgbGV0IHJlc29sdXRpb24KICB0cnkgewogICAgcmVzb2x1dGlvbiA9IG5ldyBVUkwodXJsKQogIH0gY2F0Y2ggewogICAgcmV0dXJuIFVOUkVTT0xWRUQKICB9CgogIGNvbnN0IHJlc29sdmVkID0geWllbGQgeyByZXNvbHV0aW9uIH0KCiAgcmV0dXJuIHJlc29sdmVkID8gUkVTT0xWRUQgOiBZSUVMREVECn0KCmV4cG9ydHMucGFja2FnZSA9IGZ1bmN0aW9uKiAoCiAgcGFja2FnZVNwZWNpZmllciwKICBwYWNrYWdlVmVyc2lvbiwKICBwYXJlbnRVUkwsCiAgb3B0cyA9IHt9CikgewogIGlmIChwYWNrYWdlU3BlY2lmaWVyID09PSAnJykgewogICAgdGhyb3cgZXJyb3JzLklOVkFMSURfQURET05fU1BFQ0lGSUVSKAogICAgICBgQWRkb24gc3BlY2lmaWVyICcke3BhY2thZ2VTcGVjaWZpZXJ9JyBpcyBub3QgYSB2YWxpZCBwYWNrYWdlIG5hbWVgCiAgICApCiAgfQoKICBsZXQgcGFja2FnZU5hbWUKCiAgaWYgKHBhY2thZ2VTcGVjaWZpZXJbMF0gIT09ICdAJykgewogICAgcGFja2FnZU5hbWUgPSBwYWNrYWdlU3BlY2lmaWVyLnNwbGl0KCcvJywgMSkuam9pbigpCiAgfSBlbHNlIHsKICAgIGlmICghcGFja2FnZVNwZWNpZmllci5pbmNsdWRlcygnLycpKSB7CiAgICAgIHRocm93IGVycm9ycy5JTlZBTElEX0FERE9OX1NQRUNJRklFUigKICAgICAgICBgQWRkb24gc3BlY2lmaWVyICcke3BhY2thZ2VTcGVjaWZpZXJ9JyBpcyBub3QgYSB2YWxpZCBwYWNrYWdlIG5hbWVgCiAgICAgICkKICAgIH0KCiAgICBwYWNrYWdlTmFtZSA9IHBhY2thZ2VTcGVjaWZpZXIuc3BsaXQoJy8nLCAyKS5qb2luKCcvJykKICB9CgogIGlmICgKICAgIHBhY2thZ2VOYW1lWzBdID09PSAnLicgfHwKICAgIHBhY2thZ2VOYW1lLmluY2x1ZGVzKCdcXCcpIHx8CiAgICBwYWNrYWdlTmFtZS5pbmNsdWRlcygnJScpCiAgKSB7CiAgICB0aHJvdyBlcnJvcnMuSU5WQUxJRF9BRERPTl9TUEVDSUZJRVIoCiAgICAgIGBBZGRvbiBzcGVjaWZpZXIgJyR7cGFja2FnZVNwZWNpZmllcn0nIGlzIG5vdCBhIHZhbGlkIHBhY2thZ2UgbmFtZWAKICAgICkKICB9CgogIGNvbnN0IHBhY2thZ2VTdWJwYXRoID0gJy4nICsgcGFja2FnZVNwZWNpZmllci5zdWJzdHJpbmcocGFja2FnZU5hbWUubGVuZ3RoKQoKICBjb25zdCBzdGF0dXMgPSB5aWVsZCogZXhwb3J0cy5wYWNrYWdlU2VsZigKICAgIHBhY2thZ2VOYW1lLAogICAgcGFja2FnZVN1YnBhdGgsCiAgICBwYWNrYWdlVmVyc2lvbiwKICAgIHBhcmVudFVSTCwKICAgIG9wdHMKICApCgogIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKCiAgcGFyZW50VVJMID0gbmV3IFVSTChwYXJlbnRVUkwuaHJlZikKCiAgZG8gewogICAgY29uc3QgcGFja2FnZVVSTCA9IG5ldyBVUkwoJ25vZGVfbW9kdWxlcy8nICsgcGFja2FnZU5hbWUgKyAnLycsIHBhcmVudFVSTCkKCiAgICBwYXJlbnRVUkwucGF0aG5hbWUgPSBwYXJlbnRVUkwucGF0aG5hbWUuc3Vic3RyaW5nKAogICAgICAwLAogICAgICBwYXJlbnRVUkwucGF0aG5hbWUubGFzdEluZGV4T2YoJy8nKQogICAgKQoKICAgIGNvbnN0IGluZm8gPSB5aWVsZCB7IHBhY2thZ2U6IG5ldyBVUkwoJ3BhY2thZ2UuanNvbicsIHBhY2thZ2VVUkwpIH0KCiAgICBpZiAoaW5mbykgewogICAgICByZXR1cm4geWllbGQqIGV4cG9ydHMuZGlyZWN0b3J5KAogICAgICAgIHBhY2thZ2VTdWJwYXRoLAogICAgICAgIHBhY2thZ2VWZXJzaW9uLAogICAgICAgIHBhY2thZ2VVUkwsCiAgICAgICAgb3B0cwogICAgICApCiAgICB9CiAgfSB3aGlsZSAocGFyZW50VVJMLnBhdGhuYW1lICE9PSAnJyAmJiBwYXJlbnRVUkwucGF0aG5hbWUgIT09ICcvJykKCiAgcmV0dXJuIFVOUkVTT0xWRUQKfQoKZXhwb3J0cy5wYWNrYWdlU2VsZiA9IGZ1bmN0aW9uKiAoCiAgcGFja2FnZU5hbWUsCiAgcGFja2FnZVN1YnBhdGgsCiAgcGFja2FnZVZlcnNpb24sCiAgcGFyZW50VVJMLAogIG9wdHMgPSB7fQopIHsKICBmb3IgKGNvbnN0IHBhY2thZ2VVUkwgb2YgcmVzb2x2ZS5sb29rdXBQYWNrYWdlU2NvcGUocGFyZW50VVJMLCBvcHRzKSkgewogICAgY29uc3QgaW5mbyA9IHlpZWxkIHsgcGFja2FnZTogcGFja2FnZVVSTCB9CgogICAgaWYgKGluZm8pIHsKICAgICAgaWYgKGluZm8ubmFtZSA9PT0gcGFja2FnZU5hbWUpIHsKICAgICAgICByZXR1cm4geWllbGQqIGV4cG9ydHMuZGlyZWN0b3J5KAogICAgICAgICAgcGFja2FnZVN1YnBhdGgsCiAgICAgICAgICBwYWNrYWdlVmVyc2lvbiwKICAgICAgICAgIHBhY2thZ2VVUkwsCiAgICAgICAgICBvcHRzCiAgICAgICAgKQogICAgICB9CgogICAgICBicmVhawogICAgfQogIH0KCiAgcmV0dXJuIFVOUkVTT0xWRUQKfQoKZXhwb3J0cy5sb29rdXBQcmVidWlsZHNTY29wZSA9IGZ1bmN0aW9uKiBsb29rdXBQcmVidWlsZHNTY29wZSh1cmwsIG9wdHMgPSB7fSkgewogIGNvbnN0IHsgcmVzb2x1dGlvbnMgPSBudWxsIH0gPSBvcHRzCgogIGlmIChyZXNvbHV0aW9ucykgewogICAgZm9yIChjb25zdCB7IHJlc29sdXRpb24gfSBvZiByZXNvbHZlLnByZXJlc29sdmVkKAogICAgICAnI3ByZWJ1aWxkcycsCiAgICAgIHJlc29sdXRpb25zLAogICAgICB1cmwsCiAgICAgIG9wdHMKICAgICkpIHsKICAgICAgaWYgKHJlc29sdXRpb24pIHJldHVybiB5aWVsZCByZXNvbHV0aW9uCiAgICB9CiAgfQoKICBjb25zdCBzY29wZVVSTCA9IG5ldyBVUkwodXJsLmhyZWYpCgogIGRvIHsKICAgIHlpZWxkIG5ldyBVUkwoJ3ByZWJ1aWxkcy8nLCBzY29wZVVSTCkKCiAgICBzY29wZVVSTC5wYXRobmFtZSA9IHNjb3BlVVJMLnBhdGhuYW1lLnN1YnN0cmluZygKICAgICAgMCwKICAgICAgc2NvcGVVUkwucGF0aG5hbWUubGFzdEluZGV4T2YoJy8nKQogICAgKQoKICAgIGlmICgKICAgICAgc2NvcGVVUkwucGF0aG5hbWUubGVuZ3RoID09PSAzICYmCiAgICAgIGV4cG9ydHMuaXNXaW5kb3dzRHJpdmVMZXR0ZXIoc2NvcGVVUkwucGF0aG5hbWUuc3Vic3RyaW5nKDEpKQogICAgKSB7CiAgICAgIGJyZWFrCiAgICB9CiAgfSB3aGlsZSAoc2NvcGVVUkwucGF0aG5hbWUgIT09ICcnICYmIHNjb3BlVVJMLnBhdGhuYW1lICE9PSAnLycpCn0KCmV4cG9ydHMuZmlsZSA9IGZ1bmN0aW9uKiAoZmlsZW5hbWUsIHBhcmVudFVSTCwgb3B0cyA9IHt9KSB7CiAgaWYgKHBhcmVudFVSTC5wcm90b2NvbCA9PT0gJ2ZpbGU6JyAmJiAvJTJmfCU1Yy9pLnRlc3QoZmlsZW5hbWUpKSB7CiAgICB0aHJvdyBlcnJvcnMuSU5WQUxJRF9BRERPTl9TUEVDSUZJRVIoCiAgICAgIGBBZGRvbiBzcGVjaWZpZXIgJyR7ZmlsZW5hbWV9JyBpcyBpbnZhbGlkYAogICAgKQogIH0KCiAgY29uc3QgeyBleHRlbnNpb25zID0gW10gfSA9IG9wdHMKCiAgbGV0IHN0YXR1cyA9IFVOUkVTT0xWRUQKCiAgZm9yIChjb25zdCBleHQgb2YgZXh0ZW5zaW9ucykgewogICAgaWYgKHlpZWxkIHsgcmVzb2x1dGlvbjogbmV3IFVSTChmaWxlbmFtZSArIGV4dCwgcGFyZW50VVJMKSB9KSB7CiAgICAgIHJldHVybiBSRVNPTFZFRAogICAgfQoKICAgIHN0YXR1cyA9IFlJRUxERUQKICB9CgogIHJldHVybiBzdGF0dXMKfQoKZXhwb3J0cy5kaXJlY3RvcnkgPSBmdW5jdGlvbiogKGRpcm5hbWUsIHZlcnNpb24sIHBhcmVudFVSTCwgb3B0cyA9IHt9KSB7CiAgY29uc3QgewogICAgcmVzb2x1dGlvbnMgPSBudWxsLAogICAgaG9zdCA9IG51bGwsIC8vIFNob3J0aGFuZCBmb3Igc2luZ2xlIGhvc3QgcmVzb2x1dGlvbgogICAgaG9zdHMgPSBob3N0ICE9PSBudWxsID8gW2hvc3RdIDogW10sCiAgICBidWlsdGlucyA9IFtdLAogICAgbWF0Y2hlZENvbmRpdGlvbnMgPSBbXQogIH0gPSBvcHRzCgogIGxldCBkaXJlY3RvcnlVUkwKCiAgaWYgKAogICAgZGlybmFtZVtkaXJuYW1lLmxlbmd0aCAtIDFdID09PSAnLycgfHwKICAgIGRpcm5hbWVbZGlybmFtZS5sZW5ndGggLSAxXSA9PT0gJ1xcJwogICkgewogICAgZGlyZWN0b3J5VVJMID0gbmV3IFVSTChkaXJuYW1lLCBwYXJlbnRVUkwpCiAgfSBlbHNlIHsKICAgIGRpcmVjdG9yeVVSTCA9IG5ldyBVUkwoZGlybmFtZSArICcvJywgcGFyZW50VVJMKQogIH0KCiAgLy8gSW50ZXJuYWwgcHJlcmVzb2x1dGlvbiBwYXRoLCBkbyBub3QgZGVwZW5kIG9uIHRoaXMhIEl0IHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0CiAgLy8gd2FybmluZy4KICBpZiAocmVzb2x1dGlvbnMpIHsKICAgIGNvbnN0IHN0YXR1cyA9IHlpZWxkKiByZXNvbHZlLnByZXJlc29sdmVkKAogICAgICAnYmFyZTphZGRvbicsCiAgICAgIHJlc29sdXRpb25zLAogICAgICBkaXJlY3RvcnlVUkwsCiAgICAgIG9wdHMKICAgICkKCiAgICBpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzCiAgfQoKICBjb25zdCB1bnZlcnNpb25lZCA9IHZlcnNpb24gPT09IG51bGwKCiAgbGV0IG5hbWUgPSBudWxsCgogIGNvbnN0IGluZm8gPSB5aWVsZCB7IHBhY2thZ2U6IG5ldyBVUkwoJ3BhY2thZ2UuanNvbicsIGRpcmVjdG9yeVVSTCkgfQoKICBpZiAoaW5mbykgewogICAgaWYgKHR5cGVvZiBpbmZvLm5hbWUgPT09ICdzdHJpbmcnICYmIGluZm8ubmFtZSAhPT0gJycpIHsKICAgICAgaWYgKGluZm8ubmFtZS5pbmNsdWRlcygnX18nKSkgewogICAgICAgIHRocm93IGVycm9ycy5JTlZBTElEX1BBQ0tBR0VfTkFNRSgKICAgICAgICAgIGBQYWNrYWdlIG5hbWUgJyR7aW5mby5uYW1lfScgaXMgaW52YWxpZGAKICAgICAgICApCiAgICAgIH0KCiAgICAgIG5hbWUgPSBpbmZvLm5hbWUucmVwbGFjZSgvXC8vZywgJ19fJykucmVwbGFjZSgvXkAvLCAnJykKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBVTlJFU09MVkVECiAgICB9CgogICAgaWYgKHR5cGVvZiBpbmZvLnZlcnNpb24gPT09ICdzdHJpbmcnICYmIGluZm8udmVyc2lvbiAhPT0gJycpIHsKICAgICAgaWYgKHZlcnNpb24gIT09IG51bGwgJiYgaW5mby52ZXJzaW9uICE9PSB2ZXJzaW9uKSByZXR1cm4gVU5SRVNPTFZFRAoKICAgICAgdmVyc2lvbiA9IGluZm8udmVyc2lvbgogICAgfQogIH0gZWxzZSB7CiAgICByZXR1cm4gVU5SRVNPTFZFRAogIH0KCiAgbGV0IHN0YXR1cwoKICBzdGF0dXMgPSB5aWVsZCogcmVzb2x2ZS5idWlsdGluVGFyZ2V0KG5hbWUsIHZlcnNpb24sIGJ1aWx0aW5zLCBvcHRzKQoKICBpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzCgogIGZvciAoY29uc3QgcHJlYnVpbGRzVVJMIG9mIGV4cG9ydHMubG9va3VwUHJlYnVpbGRzU2NvcGUoZGlyZWN0b3J5VVJMLCBvcHRzKSkgewogICAgc3RhdHVzID0gVU5SRVNPTFZFRAoKICAgIGZvciAoY29uc3QgaG9zdCBvZiBob3N0cykgewogICAgICBjb25zdCBjb25kaXRpb25zID0gaG9zdC5zcGxpdCgnLScpCgogICAgICBtYXRjaGVkQ29uZGl0aW9ucy5wdXNoKC4uLmNvbmRpdGlvbnMpCgogICAgICBpZiAodmVyc2lvbiAhPT0gbnVsbCkgewogICAgICAgIHN0YXR1cyB8PSB5aWVsZCogZXhwb3J0cy5maWxlKAogICAgICAgICAgaG9zdCArICcvJyArIG5hbWUgKyAnQCcgKyB2ZXJzaW9uLAogICAgICAgICAgcHJlYnVpbGRzVVJMLAogICAgICAgICAgb3B0cwogICAgICAgICkKICAgICAgfQoKICAgICAgaWYgKHVudmVyc2lvbmVkKSB7CiAgICAgICAgc3RhdHVzIHw9IHlpZWxkKiBleHBvcnRzLmZpbGUoaG9zdCArICcvJyArIG5hbWUsIHByZWJ1aWxkc1VSTCwgb3B0cykKICAgICAgfQoKICAgICAgZm9yIChjb25zdCBfIG9mIGNvbmRpdGlvbnMpIG1hdGNoZWRDb25kaXRpb25zLnBvcCgpCiAgICB9CgogICAgaWYgKHN0YXR1cyA9PT0gUkVTT0xWRUQpIHJldHVybiBzdGF0dXMKICB9CgogIHJldHVybiB5aWVsZCogZXhwb3J0cy5saW5rZWQobmFtZSwgdmVyc2lvbiwgb3B0cykKfQoKZXhwb3J0cy5saW5rZWQgPSBmdW5jdGlvbiogKG5hbWUsIHZlcnNpb24gPSBudWxsLCBvcHRzID0ge30pIHsKICBjb25zdCB7CiAgICBsaW5rZWQgPSB0cnVlLAogICAgaG9zdCA9IG51bGwsIC8vIFNob3J0aGFuZCBmb3Igc2luZ2xlIGhvc3QgcmVzb2x1dGlvbgogICAgaG9zdHMgPSBob3N0ICE9PSBudWxsID8gW2hvc3RdIDogW10sCiAgICBtYXRjaGVkQ29uZGl0aW9ucyA9IFtdCiAgfSA9IG9wdHMKCiAgaWYgKGxpbmtlZCA9PT0gZmFsc2UgfHwgaG9zdHMubGVuZ3RoID09PSAwKSByZXR1cm4gVU5SRVNPTFZFRAoKICBsZXQgc3RhdHVzID0gVU5SRVNPTFZFRAoKICBmb3IgKGNvbnN0IGhvc3Qgb2YgaG9zdHMpIHsKICAgIGNvbnN0IFtwbGF0Zm9ybSA9IG51bGxdID0gaG9zdC5zcGxpdCgnLScsIDEpCgogICAgaWYgKHBsYXRmb3JtID09PSBudWxsKSBjb250aW51ZQoKICAgIG1hdGNoZWRDb25kaXRpb25zLnB1c2gocGxhdGZvcm0pCgogICAgc3RhdHVzIHw9IHlpZWxkKiBwbGF0Zm9ybUFydGVmYWN0KG5hbWUsIHZlcnNpb24sIHBsYXRmb3JtLCBvcHRzKQoKICAgIG1hdGNoZWRDb25kaXRpb25zLnBvcCgpCiAgfQoKICByZXR1cm4gc3RhdHVzCn0KCmZ1bmN0aW9uKiBwbGF0Zm9ybUFydGVmYWN0KG5hbWUsIHZlcnNpb24gPSBudWxsLCBwbGF0Zm9ybSwgb3B0cyA9IHt9KSB7CiAgY29uc3QgeyBsaW5rZWRQcm90b2NvbCA9ICdsaW5rZWQ6JyB9ID0gb3B0cwoKICBpZiAocGxhdGZvcm0gPT09ICdkYXJ3aW4nIHx8IHBsYXRmb3JtID09PSAnaW9zJykgewogICAgaWYgKHZlcnNpb24gIT09IG51bGwpIHsKICAgICAgaWYgKAogICAgICAgIHlpZWxkIHsKICAgICAgICAgIHJlc29sdXRpb246IG5ldyBVUkwoCiAgICAgICAgICAgIGAke2xpbmtlZFByb3RvY29sfSR7bmFtZX0uJHt2ZXJzaW9ufS5mcmFtZXdvcmsvJHtuYW1lfS4ke3ZlcnNpb259YAogICAgICAgICAgKQogICAgICAgIH0KICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFJFU09MVkVECiAgICAgIH0KCiAgICAgIGlmIChwbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHsKICAgICAgICBpZiAoCiAgICAgICAgICB5aWVsZCB7CiAgICAgICAgICAgIHJlc29sdXRpb246IG5ldyBVUkwoYCR7bGlua2VkUHJvdG9jb2x9bGliJHtuYW1lfS4ke3ZlcnNpb259LmR5bGliYCkKICAgICAgICAgIH0KICAgICAgICApIHsKICAgICAgICAgIHJldHVybiBSRVNPTFZFRAogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGlmICgKICAgICAgeWllbGQgewogICAgICAgIHJlc29sdXRpb246IG5ldyBVUkwoYCR7bGlua2VkUHJvdG9jb2x9JHtuYW1lfS5mcmFtZXdvcmsvJHtuYW1lfWApCiAgICAgIH0KICAgICkgewogICAgICByZXR1cm4gUkVTT0xWRUQKICAgIH0KCiAgICBpZiAocGxhdGZvcm0gPT09ICdkYXJ3aW4nKSB7CiAgICAgIGlmICgKICAgICAgICB5aWVsZCB7CiAgICAgICAgICByZXNvbHV0aW9uOiBuZXcgVVJMKGAke2xpbmtlZFByb3RvY29sfWxpYiR7bmFtZX0uZHlsaWJgKQogICAgICAgIH0KICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFJFU09MVkVECiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gWUlFTERFRAogIH0KCiAgaWYgKHBsYXRmb3JtID09PSAnbGludXgnIHx8IHBsYXRmb3JtID09PSAnYW5kcm9pZCcpIHsKICAgIGlmICh2ZXJzaW9uICE9PSBudWxsKSB7CiAgICAgIGlmICgKICAgICAgICB5aWVsZCB7CiAgICAgICAgICByZXNvbHV0aW9uOiBuZXcgVVJMKGAke2xpbmtlZFByb3RvY29sfWxpYiR7bmFtZX0uJHt2ZXJzaW9ufS5zb2ApCiAgICAgICAgfQogICAgICApIHsKICAgICAgICByZXR1cm4gUkVTT0xWRUQKICAgICAgfQogICAgfQoKICAgIGlmICgKICAgICAgeWllbGQgewogICAgICAgIHJlc29sdXRpb246IG5ldyBVUkwoYCR7bGlua2VkUHJvdG9jb2x9bGliJHtuYW1lfS5zb2ApCiAgICAgIH0KICAgICkgewogICAgICByZXR1cm4gUkVTT0xWRUQKICAgIH0KCiAgICByZXR1cm4gWUlFTERFRAogIH0KCiAgaWYgKHBsYXRmb3JtID09PSAnd2luMzInKSB7CiAgICBpZiAodmVyc2lvbiAhPT0gbnVsbCkgewogICAgICBpZiAoCiAgICAgICAgeWllbGQgewogICAgICAgICAgcmVzb2x1dGlvbjogbmV3IFVSTChgJHtsaW5rZWRQcm90b2NvbH0ke25hbWV9LSR7dmVyc2lvbn0uZGxsYCkKICAgICAgICB9CiAgICAgICkgewogICAgICAgIHJldHVybiBSRVNPTFZFRAogICAgICB9CiAgICB9CgogICAgaWYgKAogICAgICB5aWVsZCB7CiAgICAgICAgcmVzb2x1dGlvbjogbmV3IFVSTChgJHtsaW5rZWRQcm90b2NvbH0ke25hbWV9LmRsbGApCiAgICAgIH0KICAgICkgewogICAgICByZXR1cm4gUkVTT0xWRUQKICAgIH0KICB9CgogIHJldHVybiBVTlJFU09MVkVECn0KCmV4cG9ydHMuaXNXaW5kb3dzRHJpdmVMZXR0ZXIgPSByZXNvbHZlLmlzV2luZG93c0RyaXZlTGV0dGVyCgpleHBvcnRzLnN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIgPSByZXNvbHZlLnN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIKbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBBZGRvblJlc29sdmVFcnJvciBleHRlbmRzIEVycm9yIHsKICBjb25zdHJ1Y3Rvcihtc2csIGNvZGUsIGZuID0gQWRkb25SZXNvbHZlRXJyb3IpIHsKICAgIHN1cGVyKGAke2NvZGV9OiAke21zZ31gKQogICAgdGhpcy5jb2RlID0gY29kZQoKICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkgewogICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBmbikKICAgIH0KICB9CgogIGdldCBuYW1lKCkgewogICAgcmV0dXJuICdBZGRvblJlc29sdmVFcnJvcicKICB9CgogIHN0YXRpYyBJTlZBTElEX0FERE9OX1NQRUNJRklFUihtc2cpIHsKICAgIHJldHVybiBuZXcgQWRkb25SZXNvbHZlRXJyb3IoCiAgICAgIG1zZywKICAgICAgJ0lOVkFMSURfQURET05fU1BFQ0lGSUVSJywKICAgICAgQWRkb25SZXNvbHZlRXJyb3IuSU5WQUxJRF9BRERPTl9TUEVDSUZJRVIKICAgICkKICB9CgogIHN0YXRpYyBJTlZBTElEX1BBQ0tBR0VfTkFNRShtc2cpIHsKICAgIHJldHVybiBuZXcgQWRkb25SZXNvbHZlRXJyb3IoCiAgICAgIG1zZywKICAgICAgJ0lOVkFMSURfUEFDS0FHRV9OQU1FJywKICAgICAgQWRkb25SZXNvbHZlRXJyb3IuSU5WQUxJRF9QQUNLQUdFX05BTUUKICAgICkKICB9Cn0KewogICJuYW1lIjogImJhcmUtYWRkb24tcmVzb2x2ZSIsCiAgInZlcnNpb24iOiAiMS45LjQiLAogICJkZXNjcmlwdGlvbiI6ICJMb3ctbGV2ZWwgYWRkb24gcmVzb2x1dGlvbiBhbGdvcml0aG0gZm9yIEJhcmUiLAogICJleHBvcnRzIjogewogICAgIi4vcGFja2FnZSI6ICIuL3BhY2thZ2UuanNvbiIsCiAgICAiLiI6IHsKICAgICAgInR5cGVzIjogIi4vaW5kZXguZC50cyIsCiAgICAgICJkZWZhdWx0IjogIi4vaW5kZXguanMiCiAgICB9LAogICAgIi4vZXJyb3JzIjogewogICAgICAidHlwZXMiOiAiLi9saWIvZXJyb3JzLmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2xpYi9lcnJvcnMuanMiCiAgICB9CiAgfSwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgImluZGV4LmQudHMiLAogICAgImxpYiIKICBdLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAicHJldHRpZXIgLiAtLWNoZWNrICYmIGJhcmUgdGVzdC5qcyIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLWFkZG9uLXJlc29sdmUuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2giLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1hZGRvbi1yZXNvbHZlL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1hZGRvbi1yZXNvbHZlI3JlYWRtZSIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJiYXJlLW1vZHVsZS1yZXNvbHZlIjogIl4xLjEwLjAiLAogICAgImJhcmUtc2VtdmVyIjogIl4xLjAuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS11cmwiOiAiXjIuMS4zIiwKICAgICJicml0dGxlIjogIl4zLjIuMSIsCiAgICAicHJldHRpZXIiOiAiXjMuMy4zIiwKICAgICJwcmV0dGllci1jb25maWctc3RhbmRhcmQiOiAiXjcuMC4wIgogIH0sCiAgInBlZXJEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS11cmwiOiAiKiIKICB9LAogICJwZWVyRGVwZW5kZW5jaWVzTWV0YSI6IHsKICAgICJiYXJlLXVybCI6IHsKICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgfQogIH0KfQptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oJy4uJykKY29uc3QgcHJvY2VzcyA9IHJlcXVpcmUoJ3Byb2Nlc3MnKQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnI2JpbmRpbmcnKQoKZXhwb3J0cy5EYWVtb24gPSBjbGFzcyBEYWVtb24gewogIGNvbnN0cnVjdG9yKHBpZCkgewogICAgdGhpcy5waWQgPSBwaWQKICB9Cn0KCmV4cG9ydHMuc3Bhd24gPSBmdW5jdGlvbiBzcGF3bihmaWxlLCBhcmdzLCBvcHRzKSB7CiAgaWYgKEFycmF5LmlzQXJyYXkoYXJncykpIHsKICAgIGFyZ3MgPSBbLi4uYXJnc10KICB9IGVsc2UgaWYgKGFyZ3MgPT09IG51bGwpIHsKICAgIGFyZ3MgPSBbXQogIH0gZWxzZSB7CiAgICBvcHRzID0gYXJncwogICAgYXJncyA9IFtdCiAgfQoKICBpZiAoIW9wdHMpIG9wdHMgPSB7fQoKICBhcmdzID0gYXJncy5tYXAoU3RyaW5nKQoKICBjb25zdCB7IGN3ZCA9IHByb2Nlc3MuY3dkKCksIGVudiA9IHByb2Nlc3MuZW52IH0gPSBvcHRzCgogIGNvbnN0IHBhaXJzID0gW10KCiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZW52KSkgewogICAgcGFpcnMucHVzaChgJHtrZXl9PSR7dmFsdWV9YCkKICB9CgogIGNvbnN0IHBpZCA9IGJpbmRpbmcuc3Bhd24oZmlsZSwgYXJncywgcGFpcnMsIGN3ZCkKCiAgcmV0dXJuIG5ldyBleHBvcnRzLkRhZW1vbihwaWQpCn0KewogICJuYW1lIjogImJhcmUtZGFlbW9uIiwKICAidmVyc2lvbiI6ICIxLjIuMSIsCiAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZSBhbmQgbWFuYWdlIGRhZW1vbiBwcm9jZXNzZXMgaW4gSmF2YVNjcmlwdCIsCiAgImV4cG9ydHMiOiB7CiAgICAiLi9wYWNrYWdlIjogIi4vcGFja2FnZS5qc29uIiwKICAgICIuIjogIi4vaW5kZXguanMiCiAgfSwKICAiaW1wb3J0cyI6IHsKICAgICIjYmluZGluZyI6IHsKICAgICAgImJhcmUiOiAiLi9iaW5kaW5nL2JhcmUuanMiLAogICAgICAibm9kZSI6ICIuL2JpbmRpbmcvbm9kZS5qcyIKICAgIH0sCiAgICAicGF0aCI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1wYXRoIiwKICAgICAgImRlZmF1bHQiOiAicGF0aCIKICAgIH0sCiAgICAicHJvY2VzcyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1wcm9jZXNzIiwKICAgICAgImRlZmF1bHQiOiAicHJvY2VzcyIKICAgIH0KICB9LAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIsCiAgICAiYmluZGluZy5jIiwKICAgICJiaW5kaW5nL2JhcmUuanMiLAogICAgImJpbmRpbmcvbm9kZS5qcyIsCiAgICAiQ01ha2VMaXN0cy50eHQiLAogICAgInByZWJ1aWxkcyIKICBdLAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJucG0gcnVuIGxpbnQgJiYgbnBtIHJ1biB0ZXN0OmJhcmUgJiYgbnBtIHJ1biB0ZXN0Om5vZGUiLAogICAgInRlc3Q6YmFyZSI6ICJiYXJlIHRlc3QuanMiLAogICAgInRlc3Q6bm9kZSI6ICJub2RlIHRlc3QuanMiLAogICAgImxpbnQiOiAicHJldHRpZXIgLiAtLWNoZWNrIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtZGFlbW9uLmdpdCIKICB9LAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtZGFlbW9uL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1kYWVtb24jcmVhZG1lIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtcHJvY2VzcyI6ICJeNC4yLjEiLAogICAgInJlcXVpcmUtYWRkb24iOiAiXjEuMS4wIgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJiYXJlLWNvbXBhdC1uYXBpIjogIl4xLjMuNiIsCiAgICAiYmFyZS1mcyI6ICJeNC4xLjIiLAogICAgImJhcmUtcGF0aCI6ICJeMy4wLjAiLAogICAgImJyaXR0bGUiOiAiXjMuNC4wIiwKICAgICJjbWFrZS1iYXJlIjogIl4xLjEuMiIsCiAgICAiY21ha2UtZmV0Y2giOiAiXjEuNC4xIiwKICAgICJjbWFrZS1uYXBpIjogIl4xLjIuMiIsCiAgICAiY21ha2UtbnBtIjogIl4xLjEuMCIsCiAgICAicHJldHRpZXIiOiAiXjMuMy4zIiwKICAgICJwcmV0dGllci1jb25maWctc3RhbmRhcmQiOiAiXjcuMC4wIgogIH0KfQpjb25zdCBvcyA9IHJlcXVpcmUoJ2JhcmUtb3MnKQoKbW9kdWxlLmV4cG9ydHMgPSBuZXcgUHJveHkoT2JqZWN0LmNyZWF0ZShudWxsKSwgewogIG93bktleXMgKHRhcmdldCkgewogICAgcmV0dXJuIG9zLmdldEVudktleXMoKQogIH0sCgogIGdldCAodGFyZ2V0LCBwcm9wZXJ0eSkgewogICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSAhPT0gJ3N0cmluZycpIHJldHVybgoKICAgIHJldHVybiBvcy5nZXRFbnYocHJvcGVydHkpCiAgfSwKCiAgaGFzICh0YXJnZXQsIHByb3BlcnR5KSB7CiAgICBpZiAodHlwZW9mIHByb3BlcnR5ICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlCgogICAgcmV0dXJuIG9zLmhhc0Vudihwcm9wZXJ0eSkKICB9LAoKICBzZXQgKHRhcmdldCwgcHJvcGVydHksIHZhbHVlKSB7CiAgICBpZiAodHlwZW9mIHByb3BlcnR5ICE9PSAnc3RyaW5nJykgcmV0dXJuCgogICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZQoKICAgIGlmICh0eXBlICE9PSAnc3RyaW5nJyAmJiB0eXBlICE9PSAnbnVtYmVyJyAmJiB0eXBlICE9PSAnYm9vbGVhbicpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnZpcm9ubWVudCB2YXJpYWJsZSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLCBudW1iZXIsIG9yIGJvb2xlYW4nKQogICAgfQoKICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKQoKICAgIG9zLnNldEVudihwcm9wZXJ0eSwgdmFsdWUpCgogICAgcmV0dXJuIHRydWUKICB9LAoKICBkZWxldGVQcm9wZXJ0eSAodGFyZ2V0LCBwcm9wZXJ0eSkgewogICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSAhPT0gJ3N0cmluZycpIHJldHVybgoKICAgIG9zLnVuc2V0RW52KHByb3BlcnR5KQogIH0sCgogIGdldE93blByb3BlcnR5RGVzY3JpcHRvciAodGFyZ2V0LCBwcm9wZXJ0eSkgewogICAgcmV0dXJuIHsKICAgICAgdmFsdWU6IHRoaXMuZ2V0KHRhcmdldCwgcHJvcGVydHkpLAogICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICBjb25maWd1cmFibGU6IHRydWUsCiAgICAgIHdyaXRhYmxlOiB0cnVlCiAgICB9CiAgfQp9KQp7CiAgIm5hbWUiOiAiYmFyZS1lbnYiLAogICJ2ZXJzaW9uIjogIjMuMC4wIiwKICAiZGVzY3JpcHRpb24iOiAiRW52aXJvbm1lbnQgdmFyaWFibGUgc3VwcG9ydCBmb3IgSmF2YVNjcmlwdCIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIKICBdLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAic3RhbmRhcmQgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtZW52LmdpdCIKICB9LAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtZW52L2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1lbnYjcmVhZG1lIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtb3MiOiAiXjMuMC4xIgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJicml0dGxlIjogIl4zLjIuMSIsCiAgICAic3RhbmRhcmQiOiAiXjE3LjAuMCIKICB9Cn0KY29uc3QgZXJyb3JzID0gcmVxdWlyZSgnLi9saWIvZXJyb3JzJykKCmNsYXNzIEV2ZW50TGlzdGVuZXIgewogIGNvbnN0cnVjdG9yKCkgewogICAgdGhpcy5saXN0ID0gW10KICAgIHRoaXMuY291bnQgPSAwCiAgfQoKICBhcHBlbmQoY3R4LCBuYW1lLCBmbiwgb25jZSkgewogICAgdGhpcy5jb3VudCsrCiAgICBjdHguZW1pdCgnbmV3TGlzdGVuZXInLCBuYW1lLCBmbikgLy8gRW1pdCBCRUZPUkUgYWRkaW5nCiAgICB0aGlzLmxpc3QucHVzaChbZm4sIG9uY2VdKQogIH0KCiAgcHJlcGVuZChjdHgsIG5hbWUsIGZuLCBvbmNlKSB7CiAgICB0aGlzLmNvdW50KysKICAgIGN0eC5lbWl0KCduZXdMaXN0ZW5lcicsIG5hbWUsIGZuKSAvLyBFbWl0IEJFRk9SRSBhZGRpbmcKICAgIHRoaXMubGlzdC51bnNoaWZ0KFtmbiwgb25jZV0pCiAgfQoKICByZW1vdmUoY3R4LCBuYW1lLCBmbikgewogICAgZm9yIChsZXQgaSA9IDAsIG4gPSB0aGlzLmxpc3QubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIGNvbnN0IGwgPSB0aGlzLmxpc3RbaV0KCiAgICAgIGlmIChsWzBdID09PSBmbikgewogICAgICAgIHRoaXMubGlzdC5zcGxpY2UoaSwgMSkKCiAgICAgICAgaWYgKHRoaXMuY291bnQgPT09IDEpIGRlbGV0ZSBjdHguX2V2ZW50c1tuYW1lXQoKICAgICAgICBjdHguZW1pdCgncmVtb3ZlTGlzdGVuZXInLCBuYW1lLCBmbikgLy8gRW1pdCBBRlRFUiByZW1vdmluZwoKICAgICAgICB0aGlzLmNvdW50LS0KICAgICAgICByZXR1cm4KICAgICAgfQogICAgfQogIH0KCiAgcmVtb3ZlQWxsKGN0eCwgbmFtZSkgewogICAgY29uc3QgbGlzdCA9IFsuLi50aGlzLmxpc3RdCiAgICB0aGlzLmxpc3QgPSBbXQoKICAgIGlmICh0aGlzLmNvdW50ID09PSBsaXN0Lmxlbmd0aCkgZGVsZXRlIGN0eC5fZXZlbnRzW25hbWVdCgogICAgZm9yIChsZXQgaSA9IGxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgY3R4LmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgbmFtZSwgbGlzdFtpXVswXSkgLy8gRW1pdCBBRlRFUiByZW1vdmluZwogICAgfQoKICAgIHRoaXMuY291bnQgLT0gbGlzdC5sZW5ndGgKICB9CgogIGVtaXQoY3R4LCBuYW1lLCAuLi5hcmdzKSB7CiAgICBjb25zdCBsaXN0ID0gWy4uLnRoaXMubGlzdF0KCiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGxpc3QubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIGNvbnN0IGwgPSBsaXN0W2ldCgogICAgICBpZiAobFsxXSA9PT0gdHJ1ZSkgdGhpcy5yZW1vdmUoY3R4LCBuYW1lLCBsWzBdKQoKICAgICAgbFswXS5jYWxsKGN0eCwgLi4uYXJncykKICAgIH0KCiAgICByZXR1cm4gbGlzdC5sZW5ndGggPiAwCiAgfQp9CgpmdW5jdGlvbiBhcHBlbmRMaXN0ZW5lcihjdHgsIG5hbWUsIGZuLCBvbmNlKSB7CiAgY29uc3QgZSA9IGN0eC5fZXZlbnRzW25hbWVdIHx8IChjdHguX2V2ZW50c1tuYW1lXSA9IG5ldyBFdmVudExpc3RlbmVyKCkpCiAgZS5hcHBlbmQoY3R4LCBuYW1lLCBmbiwgb25jZSkKICByZXR1cm4gY3R4Cn0KCmZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihjdHgsIG5hbWUsIGZuLCBvbmNlKSB7CiAgY29uc3QgZSA9IGN0eC5fZXZlbnRzW25hbWVdIHx8IChjdHguX2V2ZW50c1tuYW1lXSA9IG5ldyBFdmVudExpc3RlbmVyKCkpCiAgZS5wcmVwZW5kKGN0eCwgbmFtZSwgZm4sIG9uY2UpCiAgcmV0dXJuIGN0eAp9CgpmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihjdHgsIG5hbWUsIGZuKSB7CiAgY29uc3QgZSA9IGN0eC5fZXZlbnRzW25hbWVdCiAgaWYgKGUgIT09IHVuZGVmaW5lZCkgZS5yZW1vdmUoY3R4LCBuYW1lLCBmbikKICByZXR1cm4gY3R4Cn0KCmZ1bmN0aW9uIHRocm93VW5oYW5kbGVkRXJyb3IoLi4uYXJncykgewogIGxldCBlcnIKCiAgaWYgKGFyZ3MubGVuZ3RoID4gMCkgZXJyID0gYXJnc1swXQoKICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgPT09IGZhbHNlKSBlcnIgPSBlcnJvcnMuVU5IQU5ETEVEX0VSUk9SKGVycikKCiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7CiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIGV4cG9ydHMucHJvdG90eXBlLmVtaXQpCiAgfQoKICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7CiAgICB0aHJvdyBlcnIKICB9KQp9Cgptb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBjbGFzcyBFdmVudEVtaXR0ZXIgewogIGNvbnN0cnVjdG9yKCkgewogICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKQogIH0KCiAgYWRkTGlzdGVuZXIobmFtZSwgZm4pIHsKICAgIHJldHVybiBhcHBlbmRMaXN0ZW5lcih0aGlzLCBuYW1lLCBmbiwgZmFsc2UpCiAgfQoKICBhZGRPbmNlTGlzdGVuZXIobmFtZSwgZm4pIHsKICAgIHJldHVybiBhcHBlbmRMaXN0ZW5lcih0aGlzLCBuYW1lLCBmbiwgdHJ1ZSkKICB9CgogIHByZXBlbmRMaXN0ZW5lcihuYW1lLCBmbikgewogICAgcmV0dXJuIHByZXBlbmRMaXN0ZW5lcih0aGlzLCBuYW1lLCBmbiwgZmFsc2UpCiAgfQoKICBwcmVwZW5kT25jZUxpc3RlbmVyKG5hbWUsIGZuKSB7CiAgICByZXR1cm4gcHJlcGVuZExpc3RlbmVyKHRoaXMsIG5hbWUsIGZuLCB0cnVlKQogIH0KCiAgcmVtb3ZlTGlzdGVuZXIobmFtZSwgZm4pIHsKICAgIHJldHVybiByZW1vdmVMaXN0ZW5lcih0aGlzLCBuYW1lLCBmbikKICB9CgogIG9uKG5hbWUsIGZuKSB7CiAgICByZXR1cm4gYXBwZW5kTGlzdGVuZXIodGhpcywgbmFtZSwgZm4sIGZhbHNlKQogIH0KCiAgb25jZShuYW1lLCBmbikgewogICAgcmV0dXJuIGFwcGVuZExpc3RlbmVyKHRoaXMsIG5hbWUsIGZuLCB0cnVlKQogIH0KCiAgb2ZmKG5hbWUsIGZuKSB7CiAgICByZXR1cm4gcmVtb3ZlTGlzdGVuZXIodGhpcywgbmFtZSwgZm4pCiAgfQoKICBlbWl0KG5hbWUsIC4uLmFyZ3MpIHsKICAgIGlmIChuYW1lID09PSAnZXJyb3InICYmIHRoaXMuX2V2ZW50cy5lcnJvciA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHRocm93VW5oYW5kbGVkRXJyb3IoLi4uYXJncykKICAgIH0KCiAgICBjb25zdCBlID0gdGhpcy5fZXZlbnRzW25hbWVdCiAgICByZXR1cm4gZSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBlLmVtaXQodGhpcywgbmFtZSwgLi4uYXJncykKICB9CgogIGxpc3RlbmVycyhuYW1lKSB7CiAgICBjb25zdCBlID0gdGhpcy5fZXZlbnRzW25hbWVdCiAgICByZXR1cm4gZSA9PT0gdW5kZWZpbmVkID8gW10gOiBbLi4uZS5saXN0XQogIH0KCiAgbGlzdGVuZXJDb3VudChuYW1lKSB7CiAgICBjb25zdCBlID0gdGhpcy5fZXZlbnRzW25hbWVdCiAgICByZXR1cm4gZSA9PT0gdW5kZWZpbmVkID8gMCA6IGUubGlzdC5sZW5ndGgKICB9CgogIGdldE1heExpc3RlbmVycygpIHsKICAgIHJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycwogIH0KCiAgc2V0TWF4TGlzdGVuZXJzKG4pIHt9CgogIHJlbW92ZUFsbExpc3RlbmVycyhuYW1lKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgewogICAgICBmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXModGhpcy5fZXZlbnRzKSkgewogICAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlCiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KQogICAgICB9CiAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpCiAgICB9IGVsc2UgewogICAgICBjb25zdCBlID0gdGhpcy5fZXZlbnRzW25hbWVdCiAgICAgIGlmIChlICE9PSB1bmRlZmluZWQpIGUucmVtb3ZlQWxsKHRoaXMsIG5hbWUpCiAgICB9CiAgICByZXR1cm4gdGhpcwogIH0KfQoKZXhwb3J0cy5FdmVudEVtaXR0ZXIgPSBleHBvcnRzCgpleHBvcnRzLmVycm9ycyA9IGVycm9ycwoKZXhwb3J0cy5kZWZhdWx0TWF4TGlzdGVuZXJzID0gMTAKCmV4cG9ydHMub24gPSBmdW5jdGlvbiBvbihlbWl0dGVyLCBuYW1lLCBvcHRzID0ge30pIHsKICBjb25zdCB7IHNpZ25hbCB9ID0gb3B0cwoKICBpZiAoc2lnbmFsICYmIHNpZ25hbC5hYm9ydGVkKSB7CiAgICB0aHJvdyBlcnJvcnMuT1BFUkFUSU9OX0FCT1JURUQoc2lnbmFsLnJlYXNvbikKICB9CgogIGxldCBlcnJvciA9IG51bGwKICBsZXQgZG9uZSA9IGZhbHNlCgogIGNvbnN0IGV2ZW50cyA9IFtdCiAgY29uc3QgcHJvbWlzZXMgPSBbXQoKICBlbWl0dGVyLm9uKG5hbWUsIG9uZXZlbnQpCgogIGlmIChuYW1lICE9PSAnZXJyb3InKSBlbWl0dGVyLm9uKCdlcnJvcicsIG9uZXJyb3IpCgogIGlmIChzaWduYWwpIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpCgogIHJldHVybiB7CiAgICBuZXh0KCkgewogICAgICBpZiAoZXZlbnRzLmxlbmd0aCkgewogICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyB2YWx1ZTogZXZlbnRzLnNoaWZ0KCksIGRvbmU6IGZhbHNlIH0pCiAgICAgIH0KCiAgICAgIGlmIChlcnJvcikgewogICAgICAgIGNvbnN0IGVyciA9IGVycm9yCgogICAgICAgIGVycm9yID0gbnVsbAoKICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKQogICAgICB9CgogICAgICBpZiAoZG9uZSkgcmV0dXJuIG9uY2xvc2UoKQoKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+CiAgICAgICAgcHJvbWlzZXMucHVzaCh7IHJlc29sdmUsIHJlamVjdCB9KQogICAgICApCiAgICB9LAoKICAgIHJldHVybigpIHsKICAgICAgcmV0dXJuIG9uY2xvc2UoKQogICAgfSwKCiAgICB0aHJvdyhlcnIpIHsKICAgICAgcmV0dXJuIG9uZXJyb3IoZXJyKQogICAgfSwKCiAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkgewogICAgICByZXR1cm4gdGhpcwogICAgfQogIH0KCiAgZnVuY3Rpb24gb25ldmVudCguLi5hcmdzKSB7CiAgICBpZiAocHJvbWlzZXMubGVuZ3RoKSB7CiAgICAgIHByb21pc2VzLnNoaWZ0KCkucmVzb2x2ZSh7IHZhbHVlOiBhcmdzLCBkb25lOiBmYWxzZSB9KQogICAgfSBlbHNlIHsKICAgICAgZXZlbnRzLnB1c2goYXJncykKICAgIH0KICB9CgogIGZ1bmN0aW9uIG9uZXJyb3IoZXJyKSB7CiAgICBpZiAocHJvbWlzZXMubGVuZ3RoKSB7CiAgICAgIHByb21pc2VzLnNoaWZ0KCkucmVqZWN0KGVycikKICAgIH0gZWxzZSB7CiAgICAgIGVycm9yID0gZXJyCiAgICB9CgogICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGRvbmU6IHRydWUgfSkKICB9CgogIGZ1bmN0aW9uIG9uYWJvcnQoKSB7CiAgICBvbmVycm9yKGVycm9ycy5PUEVSQVRJT05fQUJPUlRFRChzaWduYWwucmVhc29uKSkKICB9CgogIGZ1bmN0aW9uIG9uY2xvc2UoKSB7CiAgICBlbWl0dGVyLm9mZihuYW1lLCBvbmV2ZW50KQoKICAgIGlmIChuYW1lICE9PSAnZXJyb3InKSBlbWl0dGVyLm9mZignZXJyb3InLCBvbmVycm9yKQoKICAgIGlmIChzaWduYWwpIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpCgogICAgZG9uZSA9IHRydWUKCiAgICBpZiAocHJvbWlzZXMubGVuZ3RoKSBwcm9taXNlcy5zaGlmdCgpLnJlc29sdmUoeyBkb25lOiB0cnVlIH0pCgogICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGRvbmU6IHRydWUgfSkKICB9Cn0KCmV4cG9ydHMub25jZSA9IGZ1bmN0aW9uIG9uY2UoZW1pdHRlciwgbmFtZSwgb3B0cyA9IHt9KSB7CiAgY29uc3QgeyBzaWduYWwgfSA9IG9wdHMKCiAgaWYgKHNpZ25hbCAmJiBzaWduYWwuYWJvcnRlZCkgewogICAgdGhyb3cgZXJyb3JzLk9QRVJBVElPTl9BQk9SVEVEKHNpZ25hbC5yZWFzb24pCiAgfQoKICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgaWYgKG5hbWUgIT09ICdlcnJvcicpIGVtaXR0ZXIub24oJ2Vycm9yJywgb25lcnJvcikKCiAgICBpZiAoc2lnbmFsKSBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbmFib3J0KQoKICAgIGVtaXR0ZXIub25jZShuYW1lLCAoLi4uYXJncykgPT4gewogICAgICBpZiAobmFtZSAhPT0gJ2Vycm9yJykgZW1pdHRlci5vZmYoJ2Vycm9yJywgb25lcnJvcikKCiAgICAgIGlmIChzaWduYWwpIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpCgogICAgICByZXNvbHZlKGFyZ3MpCiAgICB9KQoKICAgIGZ1bmN0aW9uIG9uZXJyb3IoZXJyKSB7CiAgICAgIGVtaXR0ZXIub2ZmKCdlcnJvcicsIG9uZXJyb3IpCgogICAgICByZWplY3QoZXJyKQogICAgfQoKICAgIGZ1bmN0aW9uIG9uYWJvcnQoKSB7CiAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpCgogICAgICBvbmVycm9yKGVycm9ycy5PUEVSQVRJT05fQUJPUlRFRChzaWduYWwucmVhc29uKSkKICAgIH0KICB9KQp9CgpleHBvcnRzLmZvcndhcmQgPSBmdW5jdGlvbiBmb3J3YXJkKGZyb20sIHRvLCBuYW1lcywgb3B0cyA9IHt9KSB7CiAgaWYgKHR5cGVvZiBuYW1lcyA9PT0gJ3N0cmluZycpIG5hbWVzID0gW25hbWVzXQoKICBjb25zdCB7IGVtaXQgPSB0by5lbWl0LmJpbmQodG8pIH0gPSBvcHRzCgogIGNvbnN0IGxpc3RlbmVycyA9IG5hbWVzLm1hcCgKICAgIChuYW1lKSA9PgogICAgICBmdW5jdGlvbiBvbmV2ZW50KC4uLmFyZ3MpIHsKICAgICAgICBlbWl0KG5hbWUsIC4uLmFyZ3MpCiAgICAgIH0KICApCgogIHRvLm9uKCduZXdMaXN0ZW5lcicsIChuYW1lKSA9PiB7CiAgICBjb25zdCBpID0gbmFtZXMuaW5kZXhPZihuYW1lKQoKICAgIGlmIChpICE9PSAtMSAmJiB0by5saXN0ZW5lckNvdW50KG5hbWUpID09PSAwKSB7CiAgICAgIGZyb20ub24obmFtZSwgbGlzdGVuZXJzW2ldKQogICAgfQogIH0pLm9uKCdyZW1vdmVMaXN0ZW5lcicsIChuYW1lKSA9PiB7CiAgICBjb25zdCBpID0gbmFtZXMuaW5kZXhPZihuYW1lKQoKICAgIGlmIChpICE9PSAtMSAmJiB0by5saXN0ZW5lckNvdW50KG5hbWUpID09PSAwKSB7CiAgICAgIGZyb20ub2ZmKG5hbWUsIGxpc3RlbmVyc1tpXSkKICAgIH0KICB9KQp9CgpleHBvcnRzLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiBsaXN0ZW5lckNvdW50KGVtaXR0ZXIsIG5hbWUpIHsKICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KG5hbWUpCn0KbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBFdmVudEVtaXR0ZXJFcnJvciBleHRlbmRzIEVycm9yIHsKICBjb25zdHJ1Y3Rvcihtc2csIGNvZGUsIGZuID0gRXZlbnRFbWl0dGVyRXJyb3IsIG9wdHMpIHsKICAgIHN1cGVyKGAke2NvZGV9OiAke21zZ31gLCBvcHRzKQogICAgdGhpcy5jb2RlID0gY29kZQoKICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkgewogICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBmbikKICAgIH0KICB9CgogIGdldCBuYW1lKCkgewogICAgcmV0dXJuICdFdmVudEVtaXR0ZXJFcnJvcicKICB9CgogIHN0YXRpYyBPUEVSQVRJT05fQUJPUlRFRChjYXVzZSwgbXNnID0gJ09wZXJhdGlvbiBhYm9ydGVkJykgewogICAgcmV0dXJuIG5ldyBFdmVudEVtaXR0ZXJFcnJvcigKICAgICAgbXNnLAogICAgICAnT1BFUkFUSU9OX0FCT1JURUQnLAogICAgICBFdmVudEVtaXR0ZXJFcnJvci5PUEVSQVRJT05fQUJPUlRFRCwKICAgICAgeyBjYXVzZSB9CiAgICApCiAgfQoKICBzdGF0aWMgVU5IQU5ETEVEX0VSUk9SKGNhdXNlLCBtc2cgPSAnVW5oYW5kbGVkIGVycm9yJykgewogICAgcmV0dXJuIG5ldyBFdmVudEVtaXR0ZXJFcnJvcigKICAgICAgbXNnLAogICAgICAnVU5IQU5ETEVEX0VSUk9SJywKICAgICAgRXZlbnRFbWl0dGVyRXJyb3IuVU5IQU5ETEVEX0VSUk9SLAogICAgICB7IGNhdXNlIH0KICAgICkKICB9Cn0KewogICJuYW1lIjogImJhcmUtZXZlbnRzIiwKICAidmVyc2lvbiI6ICIyLjUuNCIsCiAgImRlc2NyaXB0aW9uIjogIkV2ZW50IGVtaXR0ZXJzIGZvciBKYXZhU2NyaXB0IiwKICAiZXhwb3J0cyI6IHsKICAgICIuIjogewogICAgICAidHlwZXMiOiAiLi9pbmRleC5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9pbmRleC5qcyIKICAgIH0sCiAgICAiLi9wYWNrYWdlIjogIi4vcGFja2FnZS5qc29uIiwKICAgICIuL2Vycm9ycyI6ICIuL2xpYi9lcnJvcnMuanMiCiAgfSwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgImluZGV4LmQudHMiLAogICAgImxpYiIKICBdLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAibnBtIHJ1biBsaW50ICYmIG5wbSBydW4gdGVzdDpiYXJlICYmIG5wbSBydW4gdGVzdDpub2RlIiwKICAgICJ0ZXN0OmJhcmUiOiAiYmFyZSB0ZXN0LmpzIiwKICAgICJ0ZXN0Om5vZGUiOiAibm9kZSB0ZXN0LmpzIiwKICAgICJsaW50IjogInByZXR0aWVyIC4gLS1jaGVjayIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLWV2ZW50cy5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLWV2ZW50cy9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtZXZlbnRzI3JlYWRtZSIsCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJicml0dGxlIjogIl4zLjMuMiIsCiAgICAicHJldHRpZXIiOiAiXjMuNC4yIiwKICAgICJwcmV0dGllci1jb25maWctc3RhbmRhcmQiOiAiXjcuMC4wIgogIH0KfQptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oKQpjb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdiYXJlLWV2ZW50cycpCmNvbnN0IHBhdGggPSByZXF1aXJlKCdiYXJlLXBhdGgnKQpjb25zdCB7IFJlYWRhYmxlLCBXcml0YWJsZSB9ID0gcmVxdWlyZSgnYmFyZS1zdHJlYW0nKQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi9iaW5kaW5nJykKY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9saWIvY29uc3RhbnRzJykKCmNvbnN0IGlzV2luZG93cyA9IEJhcmUucGxhdGZvcm0gPT09ICd3aW4zMicKCmV4cG9ydHMuY29uc3RhbnRzID0gY29uc3RhbnRzCgovLyBMaWdodGx5LW1vZGlmaWVkIGZyb20gdGhlIE5vZGUgRlMgaW50ZXJuYWwgdXRpbHMuCmZ1bmN0aW9uIGZsYWdzVG9OdW1iZXIoZmxhZ3MpIHsKICBzd2l0Y2ggKGZsYWdzKSB7CiAgICBjYXNlICdyJzoKICAgICAgcmV0dXJuIGNvbnN0YW50cy5PX1JET05MWQogICAgY2FzZSAncnMnOiAvLyBGYWxsIHRocm91Z2guCiAgICBjYXNlICdzcic6CiAgICAgIHJldHVybiBjb25zdGFudHMuT19SRE9OTFkgfCBjb25zdGFudHMuT19TWU5DCiAgICBjYXNlICdyKyc6CiAgICAgIHJldHVybiBjb25zdGFudHMuT19SRFdSCiAgICBjYXNlICdycysnOiAvLyBGYWxsIHRocm91Z2guCiAgICBjYXNlICdzcisnOgogICAgICByZXR1cm4gY29uc3RhbnRzLk9fUkRXUiB8IGNvbnN0YW50cy5PX1NZTkMKCiAgICBjYXNlICd3JzoKICAgICAgcmV0dXJuIGNvbnN0YW50cy5PX1RSVU5DIHwgY29uc3RhbnRzLk9fQ1JFQVQgfCBjb25zdGFudHMuT19XUk9OTFkKICAgIGNhc2UgJ3d4JzogLy8gRmFsbCB0aHJvdWdoLgogICAgY2FzZSAneHcnOgogICAgICByZXR1cm4gKAogICAgICAgIGNvbnN0YW50cy5PX1RSVU5DIHwKICAgICAgICBjb25zdGFudHMuT19DUkVBVCB8CiAgICAgICAgY29uc3RhbnRzLk9fV1JPTkxZIHwKICAgICAgICBjb25zdGFudHMuT19FWENMCiAgICAgICkKCiAgICBjYXNlICd3Kyc6CiAgICAgIHJldHVybiBjb25zdGFudHMuT19UUlVOQyB8IGNvbnN0YW50cy5PX0NSRUFUIHwgY29uc3RhbnRzLk9fUkRXUgogICAgY2FzZSAnd3grJzogLy8gRmFsbCB0aHJvdWdoLgogICAgY2FzZSAneHcrJzoKICAgICAgcmV0dXJuICgKICAgICAgICBjb25zdGFudHMuT19UUlVOQyB8CiAgICAgICAgY29uc3RhbnRzLk9fQ1JFQVQgfAogICAgICAgIGNvbnN0YW50cy5PX1JEV1IgfAogICAgICAgIGNvbnN0YW50cy5PX0VYQ0wKICAgICAgKQoKICAgIGNhc2UgJ2EnOgogICAgICByZXR1cm4gY29uc3RhbnRzLk9fQVBQRU5EIHwgY29uc3RhbnRzLk9fQ1JFQVQgfCBjb25zdGFudHMuT19XUk9OTFkKICAgIGNhc2UgJ2F4JzogLy8gRmFsbCB0aHJvdWdoLgogICAgY2FzZSAneGEnOgogICAgICByZXR1cm4gKAogICAgICAgIGNvbnN0YW50cy5PX0FQUEVORCB8CiAgICAgICAgY29uc3RhbnRzLk9fQ1JFQVQgfAogICAgICAgIGNvbnN0YW50cy5PX1dST05MWSB8CiAgICAgICAgY29uc3RhbnRzLk9fRVhDTAogICAgICApCiAgICBjYXNlICdhcyc6IC8vIEZhbGwgdGhyb3VnaC4KICAgIGNhc2UgJ3NhJzoKICAgICAgcmV0dXJuICgKICAgICAgICBjb25zdGFudHMuT19BUFBFTkQgfAogICAgICAgIGNvbnN0YW50cy5PX0NSRUFUIHwKICAgICAgICBjb25zdGFudHMuT19XUk9OTFkgfAogICAgICAgIGNvbnN0YW50cy5PX1NZTkMKICAgICAgKQoKICAgIGNhc2UgJ2ErJzoKICAgICAgcmV0dXJuIGNvbnN0YW50cy5PX0FQUEVORCB8IGNvbnN0YW50cy5PX0NSRUFUIHwgY29uc3RhbnRzLk9fUkRXUgogICAgY2FzZSAnYXgrJzogLy8gRmFsbCB0aHJvdWdoLgogICAgY2FzZSAneGErJzoKICAgICAgcmV0dXJuICgKICAgICAgICBjb25zdGFudHMuT19BUFBFTkQgfAogICAgICAgIGNvbnN0YW50cy5PX0NSRUFUIHwKICAgICAgICBjb25zdGFudHMuT19SRFdSIHwKICAgICAgICBjb25zdGFudHMuT19FWENMCiAgICAgICkKICAgIGNhc2UgJ2FzKyc6IC8vIEZhbGwgdGhyb3VnaC4KICAgIGNhc2UgJ3NhKyc6CiAgICAgIHJldHVybiAoCiAgICAgICAgY29uc3RhbnRzLk9fQVBQRU5EIHwKICAgICAgICBjb25zdGFudHMuT19DUkVBVCB8CiAgICAgICAgY29uc3RhbnRzLk9fUkRXUiB8CiAgICAgICAgY29uc3RhbnRzLk9fU1lOQwogICAgICApCiAgfQoKICB0aHJvdyB0eXBlRXJyb3IoJ0VSUl9JTlZBTElEX0FSR19WQUxVRScsIGBJbnZhbGlkIHZhbHVlIGluIGZsYWdzOiAke2ZsYWdzfWApCn0KCmZ1bmN0aW9uIG1vZGVUb051bWJlcihtb2RlKSB7CiAgbW9kZSA9IHBhcnNlSW50KG1vZGUsIDgpCiAgaWYgKGlzTmFOKG1vZGUpKQogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1ZBTFVFJywKICAgICAgJ01vZGUgbXVzdCBiZSBhIG51bWJlciBvciBvY3RhbCBzdHJpbmcnCiAgICApCiAgcmV0dXJuIG1vZGUKfQoKY29uc3QgZnJlZSA9IFtdCgpmdW5jdGlvbiBhbGxvYygpIHsKICBjb25zdCByZXEgPSB7IGhhbmRsZTogbnVsbCwgY2FsbGJhY2s6IG51bGwgfQogIHJlcS5oYW5kbGUgPSBiaW5kaW5nLmluaXQocmVxLCBvbnJlc3BvbnNlKQogIHJldHVybiByZXEKfQoKZnVuY3Rpb24gZ2V0UmVxKCkgewogIHJldHVybiBmcmVlLmxlbmd0aCA/IGZyZWUucG9wKCkgOiBhbGxvYygpCn0KCmZ1bmN0aW9uIG9ucmVzcG9uc2UoZXJyLCByZXN1bHQpIHsKICBjb25zdCByZXEgPSB0aGlzCiAgY29uc3QgY2IgPSByZXEuY2FsbGJhY2sKICByZXEuY2FsbGJhY2sgPSBudWxsCiAgZnJlZS5wdXNoKHJlcSkKICBjYihlcnIsIHJlc3VsdCkKfQoKZnVuY3Rpb24gb3BlbihmaWxlcGF0aCwgZmxhZ3MsIG1vZGUsIGNiKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIGlmICh0eXBlb2YgZmxhZ3MgPT09ICdmdW5jdGlvbicpIHsKICAgICAgY2IgPSBmbGFncwogICAgICBmbGFncyA9ICdyJwogICAgICBtb2RlID0gMG82NjYKICAgIH0gZWxzZSBpZiAodHlwZW9mIG1vZGUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgY2IgPSBtb2RlCiAgICAgIG1vZGUgPSAwbzY2NgogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICAgIHR5cGVvZiBjYiArCiAgICAgICAgICAnICgnICsKICAgICAgICAgIGNiICsKICAgICAgICAgICcpJwogICAgICApCiAgICB9CiAgfQoKICBpZiAodHlwZW9mIGZsYWdzID09PSAnc3RyaW5nJykgZmxhZ3MgPSBmbGFnc1RvTnVtYmVyKGZsYWdzKQogIGlmICh0eXBlb2YgbW9kZSA9PT0gJ3N0cmluZycpIG1vZGUgPSBtb2RlVG9OdW1iZXIobW9kZSkKCiAgY29uc3QgcmVxID0gZ2V0UmVxKCkKICByZXEuY2FsbGJhY2sgPSBjYgogIGJpbmRpbmcub3BlbihyZXEuaGFuZGxlLCBmaWxlcGF0aCwgZmxhZ3MsIG1vZGUpCn0KCmZ1bmN0aW9uIG9wZW5TeW5jKGZpbGVwYXRoLCBmbGFncyA9ICdyJywgbW9kZSA9IDBvNjY2KSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgZmxhZ3MgPT09ICdzdHJpbmcnKSBmbGFncyA9IGZsYWdzVG9OdW1iZXIoZmxhZ3MpCiAgaWYgKHR5cGVvZiBtb2RlID09PSAnc3RyaW5nJykgbW9kZSA9IG1vZGVUb051bWJlcihtb2RlKQoKICByZXR1cm4gYmluZGluZy5vcGVuU3luYyhmaWxlcGF0aCwgZmxhZ3MsIG1vZGUpCn0KCmZ1bmN0aW9uIGNsb3NlKGZkLCBjYiA9IG5vb3ApIHsKICBpZiAodHlwZW9mIGZkICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIG11c3QgYmUgYSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZkICsKICAgICAgICAnICgnICsKICAgICAgICBmZCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAoZmQgPCAwIHx8IGZkID4gMHg3ZmZmZmZmZikgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX09VVF9PRl9SQU5HRScsCiAgICAgICdGaWxlIGRlc2NyaXB0b3IgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlID49IDAgJiYgPD0gMjE0NzQ4MzY0Ny4gUmVjZWl2ZWQgJyArCiAgICAgICAgZmQKICAgICkKICB9CgogIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGNvbnN0IHJlcSA9IGdldFJlcSgpCiAgcmVxLmNhbGxiYWNrID0gY2IKICBiaW5kaW5nLmNsb3NlKHJlcS5oYW5kbGUsIGZkKQp9CgpmdW5jdGlvbiBjbG9zZVN5bmMoZmQpIHsKICBpZiAodHlwZW9mIGZkICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIG11c3QgYmUgYSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZkICsKICAgICAgICAnICgnICsKICAgICAgICBmZCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAoZmQgPCAwIHx8IGZkID4gMHg3ZmZmZmZmZikgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX09VVF9PRl9SQU5HRScsCiAgICAgICdGaWxlIGRlc2NyaXB0b3IgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlID49IDAgJiYgPD0gMjE0NzQ4MzY0Ny4gUmVjZWl2ZWQgJyArCiAgICAgICAgZmQKICAgICkKICB9CgogIHJldHVybiBiaW5kaW5nLmNsb3NlU3luYyhmZCkKfQoKZnVuY3Rpb24gYWNjZXNzKGZpbGVwYXRoLCBtb2RlLCBjYikgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICBpZiAodHlwZW9mIG1vZGUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgY2IgPSBtb2RlCiAgICAgIG1vZGUgPSBjb25zdGFudHMuRl9PSwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICAgIHR5cGVvZiBjYiArCiAgICAgICAgICAnICgnICsKICAgICAgICAgIGNiICsKICAgICAgICAgICcpJwogICAgICApCiAgICB9CiAgfQoKICBjb25zdCByZXEgPSBnZXRSZXEoKQogIHJlcS5jYWxsYmFjayA9IGNiCiAgYmluZGluZy5hY2Nlc3MocmVxLmhhbmRsZSwgZmlsZXBhdGgsIG1vZGUpCn0KCmZ1bmN0aW9uIGFjY2Vzc1N5bmMoZmlsZXBhdGgsIG1vZGUgPSBjb25zdGFudHMuRl9PSykgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBiaW5kaW5nLmFjY2Vzc1N5bmMoZmlsZXBhdGgsIG1vZGUpCn0KCmZ1bmN0aW9uIGV4aXN0cyhmaWxlcGF0aCwgY2IpIHsKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBjYiArCiAgICAgICAgJyAoJyArCiAgICAgICAgY2IgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgcmV0dXJuIGFjY2VzcyhmaWxlcGF0aCwgKGVycikgPT4gY2IoISFlcnIpKQp9CgpmdW5jdGlvbiBleGlzdHNTeW5jKGZpbGVwYXRoKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIHRyeSB7CiAgICBhY2Nlc3NTeW5jKGZpbGVwYXRoKQogICAgcmV0dXJuIHRydWUKICB9IGNhdGNoIHsKICAgIHJldHVybiBmYWxzZQogIH0KfQoKZnVuY3Rpb24gcmVhZChmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbiwgcG9zLCBjYikgewogIGlmICh0eXBlb2YgZmQgIT09ICdudW1iZXInKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdGaWxlIGRlc2NyaXB0b3IgbXVzdCBiZSBhIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmQgKwogICAgICAgICcgKCcgKwogICAgICAgIGZkICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmIChmZCA8IDAgfHwgZmQgPiAweDdmZmZmZmZmKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfT1VUX09GX1JBTkdFJywKICAgICAgJ0ZpbGUgZGVzY3JpcHRvciBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgPj0gMCAmJiA8PSAyMTQ3NDgzNjQ3LiBSZWNlaXZlZCAnICsKICAgICAgICBmZAogICAgKQogIH0KCiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSAmJiAhQXJyYXlCdWZmZXIuaXNWaWV3KGJ1ZmZlcikpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0J1ZmZlciBtdXN0IGJlIGEgYnVmZmVyLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBidWZmZXIgKwogICAgICAgICcgKCcgKwogICAgICAgIGJ1ZmZlciArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICBjYiA9IG9mZnNldAogICAgICBvZmZzZXQgPSAwCiAgICAgIGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoCiAgICAgIHBvcyA9IC0xCiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsZW4gPT09ICdmdW5jdGlvbicpIHsKICAgICAgY2IgPSBsZW4KICAgICAgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGggLSBvZmZzZXQKICAgICAgcG9zID0gLTEKICAgIH0gZWxzZSBpZiAodHlwZW9mIHBvcyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICBjYiA9IHBvcwogICAgICBwb3MgPSAtMQogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICAgIHR5cGVvZiBjYiArCiAgICAgICAgICAnICgnICsKICAgICAgICAgIGNiICsKICAgICAgICAgICcpJwogICAgICApCiAgICB9CiAgfQoKICBpZiAodHlwZW9mIHBvcyAhPT0gJ251bWJlcicpIHBvcyA9IC0xCgogIGNvbnN0IHJlcSA9IGdldFJlcSgpCiAgcmVxLmNhbGxiYWNrID0gY2IKICBiaW5kaW5nLnJlYWQocmVxLmhhbmRsZSwgZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4sIHBvcykKfQoKZnVuY3Rpb24gcmVhZFN5bmMoCiAgZmQsCiAgYnVmZmVyLAogIG9mZnNldCA9IDAsCiAgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGggLSBvZmZzZXQsCiAgcG9zID0gLTEKKSB7CiAgaWYgKHR5cGVvZiBmZCAhPT0gJ251bWJlcicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0ZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGEgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmZCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmQgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKGZkIDwgMCB8fCBmZCA+IDB4N2ZmZmZmZmYpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9PVVRfT0ZfUkFOR0UnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSA+PSAwICYmIDw9IDIxNDc0ODM2NDcuIFJlY2VpdmVkICcgKwogICAgICAgIGZkCiAgICApCiAgfQoKICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWZmZXIpICYmICFBcnJheUJ1ZmZlci5pc1ZpZXcoYnVmZmVyKSkgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnQnVmZmVyIG11c3QgYmUgYSBidWZmZXIuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGJ1ZmZlciArCiAgICAgICAgJyAoJyArCiAgICAgICAgYnVmZmVyICsKICAgICAgICAnKScKICAgICkKICB9CgogIHJldHVybiBiaW5kaW5nLnJlYWRTeW5jKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuLCBwb3MpCn0KCmZ1bmN0aW9uIHJlYWR2KGZkLCBidWZmZXJzLCBwb3MsIGNiKSB7CiAgaWYgKHR5cGVvZiBmZCAhPT0gJ251bWJlcicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0ZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGEgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmZCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmQgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKGZkIDwgMCB8fCBmZCA+IDB4N2ZmZmZmZmYpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9PVVRfT0ZfUkFOR0UnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSA+PSAwICYmIDw9IDIxNDc0ODM2NDcuIFJlY2VpdmVkICcgKwogICAgICAgIGZkCiAgICApCiAgfQoKICBpZiAodHlwZW9mIHBvcyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBwb3MKICAgIHBvcyA9IC0xCiAgfSBlbHNlIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgcG9zICE9PSAnbnVtYmVyJykgcG9zID0gLTEKCiAgY29uc3QgcmVxID0gZ2V0UmVxKCkKICByZXEuY2FsbGJhY2sgPSBjYgogIGJpbmRpbmcucmVhZHYocmVxLmhhbmRsZSwgZmQsIGJ1ZmZlcnMsIHBvcykKfQoKZnVuY3Rpb24gd3JpdGUoZmQsIGRhdGEsIG9mZnNldCwgbGVuLCBwb3MsIGNiKSB7CiAgaWYgKHR5cGVvZiBmZCAhPT0gJ251bWJlcicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0ZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGEgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmZCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmQgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKGZkIDwgMCB8fCBmZCA+IDB4N2ZmZmZmZmYpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9PVVRfT0ZfUkFOR0UnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSA+PSAwICYmIDw9IDIxNDc0ODM2NDcuIFJlY2VpdmVkICcgKwogICAgICAgIGZkCiAgICApCiAgfQoKICBpZiAoCiAgICB0eXBlb2YgZGF0YSAhPT0gJ3N0cmluZycgJiYKICAgICFCdWZmZXIuaXNCdWZmZXIoZGF0YSkgJiYKICAgICFBcnJheUJ1ZmZlci5pc1ZpZXcoZGF0YSkKICApIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0RhdGEgbXVzdCBiZSBhIHN0cmluZyBvciBidWZmZXIuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBkYXRhCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7CiAgICBsZXQgZW5jb2RpbmcgPSBsZW4KICAgIGNiID0gcG9zCiAgICBwb3MgPSBvZmZzZXQKCiAgICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIGlmICh0eXBlb2YgcG9zID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgY2IgPSBwb3MKICAgICAgICBwb3MgPSAtMQogICAgICAgIGVuY29kaW5nID0gJ3V0ZjgnCiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgY2IgPSBlbmNvZGluZwogICAgICAgIGVuY29kaW5nID0gJ3V0ZjgnCiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgICAgIHR5cGVvZiBjYiArCiAgICAgICAgICAgICcgKCcgKwogICAgICAgICAgICBjYiArCiAgICAgICAgICAgICcpJwogICAgICAgICkKICAgICAgfQogICAgfQoKICAgIGlmICh0eXBlb2YgcG9zID09PSAnc3RyaW5nJykgewogICAgICBlbmNvZGluZyA9IHBvcwogICAgICBwb3MgPSAtMQogICAgfQoKICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmNvZGluZykKICAgIG9mZnNldCA9IDAKICAgIGxlbiA9IGRhdGEuYnl0ZUxlbmd0aAogIH0gZWxzZSBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICBjYiA9IG9mZnNldAogICAgICBvZmZzZXQgPSAwCiAgICAgIGxlbiA9IGRhdGEuYnl0ZUxlbmd0aAogICAgICBwb3MgPSAtMQogICAgfSBlbHNlIGlmICh0eXBlb2YgbGVuID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGNiID0gbGVuCiAgICAgIGxlbiA9IGRhdGEuYnl0ZUxlbmd0aCAtIG9mZnNldAogICAgICBwb3MgPSAtMQogICAgfSBlbHNlIGlmICh0eXBlb2YgcG9zID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGNiID0gcG9zCiAgICAgIHBvcyA9IC0xCiAgICB9IGVsc2UgewogICAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgICAnQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAgICcgKCcgKwogICAgICAgICAgY2IgKwogICAgICAgICAgJyknCiAgICAgICkKICAgIH0KICB9CgogIGlmICh0eXBlb2YgcG9zICE9PSAnbnVtYmVyJykgcG9zID0gLTEKCiAgY29uc3QgcmVxID0gZ2V0UmVxKCkKICByZXEuY2FsbGJhY2sgPSBjYgogIGJpbmRpbmcud3JpdGUocmVxLmhhbmRsZSwgZmQsIGRhdGEsIG9mZnNldCwgbGVuLCBwb3MpCn0KCmZ1bmN0aW9uIHdyaXRlU3luYyhmZCwgZGF0YSwgb2Zmc2V0ID0gMCwgbGVuLCBwb3MpIHsKICBpZiAodHlwZW9mIGZkICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIG11c3QgYmUgYSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZkICsKICAgICAgICAnICgnICsKICAgICAgICBmZCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAoZmQgPCAwIHx8IGZkID4gMHg3ZmZmZmZmZikgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX09VVF9PRl9SQU5HRScsCiAgICAgICdGaWxlIGRlc2NyaXB0b3IgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlID49IDAgJiYgPD0gMjE0NzQ4MzY0Ny4gUmVjZWl2ZWQgJyArCiAgICAgICAgZmQKICAgICkKICB9CgogIGlmICgKICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJgogICAgIUJ1ZmZlci5pc0J1ZmZlcihkYXRhKSAmJgogICAgIUFycmF5QnVmZmVyLmlzVmlldyhkYXRhKQogICkgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRGF0YSBtdXN0IGJlIGEgc3RyaW5nIG9yIGJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGRhdGEKICAgICkKICB9CgogIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhKQoKICBpZiAodHlwZW9mIGxlbiAhPT0gJ251bWJlcicpIGxlbiA9IGRhdGEuYnl0ZUxlbmd0aCAtIG9mZnNldAoKICBpZiAodHlwZW9mIHBvcyAhPT0gJ251bWJlcicpIHBvcyA9IC0xCgogIHJldHVybiBiaW5kaW5nLndyaXRlU3luYyhmZCwgZGF0YSwgb2Zmc2V0LCBsZW4sIHBvcykKfQoKZnVuY3Rpb24gd3JpdGV2KGZkLCBidWZmZXJzLCBwb3MsIGNiKSB7CiAgaWYgKHR5cGVvZiBmZCAhPT0gJ251bWJlcicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0ZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGEgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmZCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmQgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKGZkIDwgMCB8fCBmZCA+IDB4N2ZmZmZmZmYpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9PVVRfT0ZfUkFOR0UnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSA+PSAwICYmIDw9IDIxNDc0ODM2NDcuIFJlY2VpdmVkICcgKwogICAgICAgIGZkCiAgICApCiAgfQoKICBpZiAodHlwZW9mIHBvcyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBwb3MKICAgIHBvcyA9IC0xCiAgfSBlbHNlIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgcG9zICE9PSAnbnVtYmVyJykgcG9zID0gLTEKCiAgY29uc3QgcmVxID0gZ2V0UmVxKCkKICByZXEuY2FsbGJhY2sgPSBjYgogIGJpbmRpbmcud3JpdGV2KHJlcS5oYW5kbGUsIGZkLCBidWZmZXJzLCBwb3MpCn0KCmZ1bmN0aW9uIHN0YXQoZmlsZXBhdGgsIGNiKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGNvbnN0IGRhdGEgPSBuZXcgQXJyYXkoU3RhdHMubGVuZ3RoKQoKICBjb25zdCByZXEgPSBnZXRSZXEoKQoKICByZXEuY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBfKSB7CiAgICBpZiAoZXJyKSBjYihlcnIsIG51bGwpCiAgICBlbHNlIGNiKG51bGwsIG5ldyBTdGF0cyguLi5kYXRhKSkKICB9CgogIGJpbmRpbmcuc3RhdChyZXEuaGFuZGxlLCBmaWxlcGF0aCwgZGF0YSkKfQoKZnVuY3Rpb24gc3RhdFN5bmMoZmlsZXBhdGgpIHsKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgcmV0dXJuIG5ldyBTdGF0cyguLi5iaW5kaW5nLnN0YXRTeW5jKGZpbGVwYXRoKSkKfQoKZnVuY3Rpb24gbHN0YXQoZmlsZXBhdGgsIGNiKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGNvbnN0IGRhdGEgPSBuZXcgQXJyYXkoU3RhdHMubGVuZ3RoKQoKICBjb25zdCByZXEgPSBnZXRSZXEoKQoKICByZXEuY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBfKSB7CiAgICBpZiAoZXJyKSBjYihlcnIsIG51bGwpCiAgICBlbHNlIGNiKG51bGwsIG5ldyBTdGF0cyguLi5kYXRhKSkKICB9CgogIGJpbmRpbmcubHN0YXQocmVxLmhhbmRsZSwgZmlsZXBhdGgsIGRhdGEpCn0KCmZ1bmN0aW9uIGxzdGF0U3luYyhmaWxlcGF0aCkgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICByZXR1cm4gbmV3IFN0YXRzKC4uLmJpbmRpbmcubHN0YXRTeW5jKGZpbGVwYXRoKSkKfQoKZnVuY3Rpb24gZnN0YXQoZmQsIGNiKSB7CiAgaWYgKHR5cGVvZiBmZCAhPT0gJ251bWJlcicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0ZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGEgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmZCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmQgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKGZkIDwgMCB8fCBmZCA+IDB4N2ZmZmZmZmYpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9PVVRfT0ZfUkFOR0UnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSA+PSAwICYmIDw9IDIxNDc0ODM2NDcuIFJlY2VpdmVkICcgKwogICAgICAgIGZkCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAnICgnICsKICAgICAgICBjYiArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBjb25zdCBkYXRhID0gbmV3IEFycmF5KFN0YXRzLmxlbmd0aCkKCiAgY29uc3QgcmVxID0gZ2V0UmVxKCkKCiAgcmVxLmNhbGxiYWNrID0gZnVuY3Rpb24gKGVyciwgXykgewogICAgaWYgKGVycikgY2IoZXJyLCBudWxsKQogICAgZWxzZSBjYihudWxsLCBuZXcgU3RhdHMoLi4uZGF0YSkpCiAgfQoKICBiaW5kaW5nLmZzdGF0KHJlcS5oYW5kbGUsIGZkLCBkYXRhKQp9CgpmdW5jdGlvbiBmc3RhdFN5bmMoZmQpIHsKICBpZiAodHlwZW9mIGZkICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIG11c3QgYmUgYSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZkICsKICAgICAgICAnICgnICsKICAgICAgICBmZCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAoZmQgPCAwIHx8IGZkID4gMHg3ZmZmZmZmZikgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX09VVF9PRl9SQU5HRScsCiAgICAgICdGaWxlIGRlc2NyaXB0b3IgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlID49IDAgJiYgPD0gMjE0NzQ4MzY0Ny4gUmVjZWl2ZWQgJyArCiAgICAgICAgZmQKICAgICkKICB9CgogIHJldHVybiBuZXcgU3RhdHMoLi4uYmluZGluZy5mc3RhdFN5bmMoZmQpKQp9CgpmdW5jdGlvbiBmdHJ1bmNhdGUoZmQsIGxlbiwgY2IpIHsKICBpZiAodHlwZW9mIGZkICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIG11c3QgYmUgYSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZkICsKICAgICAgICAnICgnICsKICAgICAgICBmZCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAoZmQgPCAwIHx8IGZkID4gMHg3ZmZmZmZmZikgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX09VVF9PRl9SQU5HRScsCiAgICAgICdGaWxlIGRlc2NyaXB0b3IgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlID49IDAgJiYgPD0gMjE0NzQ4MzY0Ny4gUmVjZWl2ZWQgJyArCiAgICAgICAgZmQKICAgICkKICB9CgogIGlmICh0eXBlb2YgbGVuID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYiA9IGxlbgogICAgbGVuID0gMAogIH0gZWxzZSBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAnICgnICsKICAgICAgICBjYiArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGxlbiAhPT0gJ251bWJlcicpIGxlbiA9IDAKCiAgY29uc3QgcmVxID0gZ2V0UmVxKCkKICByZXEuY2FsbGJhY2sgPSBjYgogIGJpbmRpbmcuZnRydW5jYXRlKHJlcS5oYW5kbGUsIGZkLCBsZW4pCn0KCmZ1bmN0aW9uIGZ0cnVuY2F0ZVN5bmMoZmQsIGxlbikgewogIGlmICh0eXBlb2YgZmQgIT09ICdudW1iZXInKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdGaWxlIGRlc2NyaXB0b3IgbXVzdCBiZSBhIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmQgKwogICAgICAgICcgKCcgKwogICAgICAgIGZkICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmIChmZCA8IDAgfHwgZmQgPiAweDdmZmZmZmZmKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfT1VUX09GX1JBTkdFJywKICAgICAgJ0ZpbGUgZGVzY3JpcHRvciBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgPj0gMCAmJiA8PSAyMTQ3NDgzNjQ3LiBSZWNlaXZlZCAnICsKICAgICAgICBmZAogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBsZW4gIT09ICdudW1iZXInKSBsZW4gPSAwCgogIGJpbmRpbmcuZnRydW5jYXRlU3luYyhmZCwgbGVuKQp9CgpmdW5jdGlvbiBjaG1vZChmaWxlcGF0aCwgbW9kZSwgY2IpIHsKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBtb2RlID09PSAnc3RyaW5nJykgbW9kZSA9IG1vZGVUb051bWJlcihtb2RlKQoKICBjb25zdCByZXEgPSBnZXRSZXEoKQogIHJlcS5jYWxsYmFjayA9IGNiCiAgYmluZGluZy5jaG1vZChyZXEuaGFuZGxlLCBmaWxlcGF0aCwgbW9kZSkKfQoKZnVuY3Rpb24gY2htb2RTeW5jKGZpbGVwYXRoLCBtb2RlKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgbW9kZSA9PT0gJ3N0cmluZycpIG1vZGUgPSBtb2RlVG9OdW1iZXIobW9kZSkKCiAgYmluZGluZy5jaG1vZFN5bmMoZmlsZXBhdGgsIG1vZGUpCn0KCmZ1bmN0aW9uIGZjaG1vZChmZCwgbW9kZSwgY2IpIHsKICBpZiAodHlwZW9mIGZkICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIG11c3QgYmUgYSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZkICsKICAgICAgICAnICgnICsKICAgICAgICBmZCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAoZmQgPCAwIHx8IGZkID4gMHg3ZmZmZmZmZikgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX09VVF9PRl9SQU5HRScsCiAgICAgICdGaWxlIGRlc2NyaXB0b3IgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlID49IDAgJiYgPD0gMjE0NzQ4MzY0Ny4gUmVjZWl2ZWQgJyArCiAgICAgICAgZmQKICAgICkKICB9CgogIGlmICh0eXBlb2YgbW9kZSA9PT0gJ3N0cmluZycpIG1vZGUgPSBtb2RlVG9OdW1iZXIobW9kZSkKCiAgY29uc3QgcmVxID0gZ2V0UmVxKCkKICByZXEuY2FsbGJhY2sgPSBjYgogIGJpbmRpbmcuZmNobW9kKHJlcS5oYW5kbGUsIGZkLCBtb2RlKQp9CgpmdW5jdGlvbiBmY2htb2RTeW5jKGZkLCBtb2RlKSB7CiAgaWYgKHR5cGVvZiBmZCAhPT0gJ251bWJlcicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0ZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGEgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmZCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmQgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKGZkIDwgMCB8fCBmZCA+IDB4N2ZmZmZmZmYpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9PVVRfT0ZfUkFOR0UnLAogICAgICAnRmlsZSBkZXNjcmlwdG9yIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSA+PSAwICYmIDw9IDIxNDc0ODM2NDcuIFJlY2VpdmVkICcgKwogICAgICAgIGZkCiAgICApCiAgfQoKICBpZiAodHlwZW9mIG1vZGUgPT09ICdzdHJpbmcnKSBtb2RlID0gbW9kZVRvTnVtYmVyKG1vZGUpCgogIGJpbmRpbmcuZmNobW9kU3luYyhmZCwgbW9kZSkKfQoKZnVuY3Rpb24gbWtkaXJSZWN1cnNpdmUoZmlsZXBhdGgsIG1vZGUsIGNiKSB7CiAgbWtkaXIoZmlsZXBhdGgsIHsgbW9kZSB9LCBmdW5jdGlvbiAoZXJyKSB7CiAgICBpZiAoZXJyID09PSBudWxsKSByZXR1cm4gY2IobnVsbCwgMCwgbnVsbCkKCiAgICBpZiAoZXJyLmNvZGUgIT09ICdFTk9FTlQnKSB7CiAgICAgIHN0YXQoZmlsZXBhdGgsIGZ1bmN0aW9uIChlLCBzdCkgewogICAgICAgIGlmIChlKSByZXR1cm4gY2IoZSwgZS5lcnJubywgbnVsbCkKICAgICAgICBpZiAoc3QuaXNEaXJlY3RvcnkoKSkgcmV0dXJuIGNiKG51bGwsIDAsIG51bGwpCiAgICAgICAgY2IoZXJyLCBlcnIuZXJybm8sIG51bGwpCiAgICAgIH0pCiAgICAgIHJldHVybgogICAgfQoKICAgIHdoaWxlIChmaWxlcGF0aC5lbmRzV2l0aChwYXRoLnNlcCkpIGZpbGVwYXRoID0gZmlsZXBhdGguc2xpY2UoMCwgLTEpCiAgICBjb25zdCBpID0gZmlsZXBhdGgubGFzdEluZGV4T2YocGF0aC5zZXApCiAgICBpZiAoaSA8PSAwKSByZXR1cm4gY2IoZXJyLCBlcnIuZXJybm8sIG51bGwpCgogICAgbWtkaXJSZWN1cnNpdmUoZmlsZXBhdGguc2xpY2UoMCwgaSksIG1vZGUsIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgaWYgKGVycikgcmV0dXJuIGNiKGVyciwgZXJyLmVycm5vLCBudWxsKQoKICAgICAgbWtkaXIoZmlsZXBhdGgsIHsgbW9kZSB9LCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgaWYgKGVyciA9PT0gbnVsbCkgcmV0dXJuIGNiKG51bGwsIDAsIG51bGwpCgogICAgICAgIHN0YXQoZmlsZXBhdGgsIGZ1bmN0aW9uIChlLCBzdCkgewogICAgICAgICAgaWYgKGUpIHJldHVybiBjYihlLCBlLmVycm5vLCBudWxsKQogICAgICAgICAgaWYgKHN0LmlzRGlyZWN0b3J5KCkpIHJldHVybiBjYihudWxsLCAwLCBudWxsKQogICAgICAgICAgY2IoZXJyLCBlcnIuZXJybm8sIG51bGwpCiAgICAgICAgfSkKICAgICAgfSkKICAgIH0pCiAgfSkKfQoKZnVuY3Rpb24gbWtkaXIoZmlsZXBhdGgsIG9wdHMsIGNiKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBvcHRzCiAgICBvcHRzID0geyBtb2RlOiAwbzc3NyB9CiAgfSBlbHNlIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ251bWJlcicpIG9wdHMgPSB7IG1vZGU6IG9wdHMgfQogIGVsc2UgaWYgKCFvcHRzKSBvcHRzID0ge30KCiAgY29uc3QgbW9kZSA9IHR5cGVvZiBvcHRzLm1vZGUgPT09ICdudW1iZXInID8gb3B0cy5tb2RlIDogMG83NzcKCiAgaWYgKG9wdHMucmVjdXJzaXZlKQogICAgcmV0dXJuIG1rZGlyUmVjdXJzaXZlKGZpbGVwYXRoLnJlcGxhY2UoL1wvL2csIHBhdGguc2VwKSwgbW9kZSwgY2IpCgogIGNvbnN0IHJlcSA9IGdldFJlcSgpCiAgcmVxLmNhbGxiYWNrID0gY2IKICBiaW5kaW5nLm1rZGlyKHJlcS5oYW5kbGUsIGZpbGVwYXRoLCBtb2RlKQp9CgpmdW5jdGlvbiBta2RpclJlY3Vyc2l2ZVN5bmMoZmlsZXBhdGgsIG1vZGUpIHsKICB0cnkgewogICAgbWtkaXJTeW5jKGZpbGVwYXRoLCB7IG1vZGUgfSkKICB9IGNhdGNoIChlcnIpIHsKICAgIGlmIChlcnIuY29kZSAhPT0gJ0VOT0VOVCcgJiYgc3RhdFN5bmMoZmlsZXBhdGgpLmlzRGlyZWN0b3J5KCkpIHsKICAgICAgcmV0dXJuCiAgICB9CgogICAgd2hpbGUgKGZpbGVwYXRoLmVuZHNXaXRoKHBhdGguc2VwKSkgZmlsZXBhdGggPSBmaWxlcGF0aC5zbGljZSgwLCAtMSkKICAgIGNvbnN0IGkgPSBmaWxlcGF0aC5sYXN0SW5kZXhPZihwYXRoLnNlcCkKICAgIGlmIChpIDw9IDApIHRocm93IGVycgoKICAgIG1rZGlyUmVjdXJzaXZlU3luYyhmaWxlcGF0aC5zbGljZSgwLCBpKSwgeyBtb2RlIH0pCgogICAgdHJ5IHsKICAgICAgbWtkaXJTeW5jKGZpbGVwYXRoLCB7IG1vZGUgfSkKICAgIH0gY2F0Y2ggKGVycikgewogICAgICBpZiAoc3RhdFN5bmMoZmlsZXBhdGgpLmlzRGlyZWN0b3J5KCkpIHsKICAgICAgICByZXR1cm4KICAgICAgfQoKICAgICAgdGhyb3cgZXJyCiAgICB9CiAgfQp9CgpmdW5jdGlvbiBta2RpclN5bmMoZmlsZXBhdGgsIG9wdHMpIHsKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBvcHRzID09PSAnbnVtYmVyJykgb3B0cyA9IHsgbW9kZTogb3B0cyB9CiAgZWxzZSBpZiAoIW9wdHMpIG9wdHMgPSB7fQoKICBjb25zdCBtb2RlID0gdHlwZW9mIG9wdHMubW9kZSA9PT0gJ251bWJlcicgPyBvcHRzLm1vZGUgOiAwbzc3NwoKICBpZiAob3B0cy5yZWN1cnNpdmUpCiAgICByZXR1cm4gbWtkaXJSZWN1cnNpdmVTeW5jKGZpbGVwYXRoLnJlcGxhY2UoL1wvL2csIHBhdGguc2VwKSwgbW9kZSkKCiAgYmluZGluZy5ta2RpclN5bmMoZmlsZXBhdGgsIG1vZGUpCn0KCmZ1bmN0aW9uIHJtZGlyKGZpbGVwYXRoLCBjYikgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAnICgnICsKICAgICAgICBjYiArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBjb25zdCByZXEgPSBnZXRSZXEoKQogIHJlcS5jYWxsYmFjayA9IGNiCiAgYmluZGluZy5ybWRpcihyZXEuaGFuZGxlLCBmaWxlcGF0aCkKfQoKZnVuY3Rpb24gcm1kaXJTeW5jKGZpbGVwYXRoKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGJpbmRpbmcucm1kaXJTeW5jKGZpbGVwYXRoKQp9CgpmdW5jdGlvbiBybVJlY3Vyc2l2ZShmaWxlcGF0aCwgb3B0cywgY2IpIHsKICBybWRpcihmaWxlcGF0aCwgZnVuY3Rpb24gKGVycikgewogICAgaWYgKGVyciA9PT0gbnVsbCkgcmV0dXJuIGNiKG51bGwpCgogICAgaWYgKGVyci5jb2RlICE9PSAnRU5PVEVNUFRZJykgcmV0dXJuIGNiKGVycikKCiAgICByZWFkZGlyKGZpbGVwYXRoLCBmdW5jdGlvbiAoZXJyLCBmaWxlcykgewogICAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJyKQoKICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJtZGlyKGZpbGVwYXRoLCBjYikKCiAgICAgIGxldCBtaXNzaW5nID0gZmlsZXMubGVuZ3RoCiAgICAgIGxldCBkb25lID0gZmFsc2UKCiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgICAgIHJtKGZpbGVwYXRoICsgcGF0aC5zZXAgKyBmaWxlLCBvcHRzLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuCgogICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBkb25lID0gdHJ1ZQogICAgICAgICAgICByZXR1cm4gY2IoZXJyKQogICAgICAgICAgfQoKICAgICAgICAgIGlmICgtLW1pc3NpbmcgPT09IDApIHJtZGlyKGZpbGVwYXRoLCBjYikKICAgICAgICB9KQogICAgICB9CiAgICB9KQogIH0pCn0KCmZ1bmN0aW9uIHJtKGZpbGVwYXRoLCBvcHRzLCBjYikgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHsKICAgIGNiID0gb3B0cwogICAgb3B0cyA9IHt9CiAgfSBlbHNlIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGxzdGF0KGZpbGVwYXRoLCBmdW5jdGlvbiAoZXJyLCBzdCkgewogICAgaWYgKGVycikgewogICAgICByZXR1cm4gY2IoZXJyLmNvZGUgPT09ICdFTk9FTlQnICYmIG9wdHMuZm9yY2UgPyBudWxsIDogZXJyKQogICAgfQoKICAgIGlmIChzdC5pc0RpcmVjdG9yeSgpKSB7CiAgICAgIGlmIChvcHRzLnJlY3Vyc2l2ZSkgcmV0dXJuIHJtUmVjdXJzaXZlKGZpbGVwYXRoLCBvcHRzLCBjYikKCiAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignaXMgYSBkaXJlY3RvcnknKQogICAgICBlcnIuY29kZSA9ICdFSVNESVInCiAgICAgIHJldHVybiBjYihlcnIpCiAgICB9CgogICAgdW5saW5rKGZpbGVwYXRoLCBjYikKICB9KQp9CgpmdW5jdGlvbiBybVJlY3Vyc2l2ZVN5bmMoZmlsZXBhdGgsIG9wdHMpIHsKICB0cnkgewogICAgcm1kaXJTeW5jKGZpbGVwYXRoKQogIH0gY2F0Y2ggKGVycikgewogICAgaWYgKGVyci5jb2RlICE9PSAnRU5PVEVNUFRZJykgdGhyb3cgZXJyCgogICAgY29uc3QgZmlsZXMgPSByZWFkZGlyU3luYyhmaWxlcGF0aCkKCiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHsKICAgICAgcm1TeW5jKGZpbGVwYXRoICsgcGF0aC5zZXAgKyBmaWxlLCBvcHRzKQogICAgfQoKICAgIHJtZGlyU3luYyhmaWxlcGF0aCkKICB9Cn0KCmZ1bmN0aW9uIHJtU3luYyhmaWxlcGF0aCwgb3B0cykgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAoIW9wdHMpIG9wdHMgPSB7fQoKICB0cnkgewogICAgY29uc3Qgc3QgPSBsc3RhdFN5bmMoZmlsZXBhdGgpCgogICAgaWYgKHN0LmlzRGlyZWN0b3J5KCkpIHsKICAgICAgaWYgKG9wdHMucmVjdXJzaXZlKSByZXR1cm4gcm1SZWN1cnNpdmVTeW5jKGZpbGVwYXRoLCBvcHRzKQoKICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdpcyBhIGRpcmVjdG9yeScpCiAgICAgIGVyci5jb2RlID0gJ0VJU0RJUicKICAgICAgdGhyb3cgZXJyCiAgICB9CgogICAgdW5saW5rU3luYyhmaWxlcGF0aCkKICB9IGNhdGNoIChlcnIpIHsKICAgIGlmIChlcnIuY29kZSAhPT0gJ0VOT0VOVCcgfHwgIW9wdHMuZm9yY2UpIHRocm93IGVycgogIH0KfQoKZnVuY3Rpb24gdW5saW5rKGZpbGVwYXRoLCBjYikgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAnICgnICsKICAgICAgICBjYiArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBjb25zdCByZXEgPSBnZXRSZXEoKQogIHJlcS5jYWxsYmFjayA9IGNiCiAgYmluZGluZy51bmxpbmsocmVxLmhhbmRsZSwgZmlsZXBhdGgpCn0KCmZ1bmN0aW9uIHVubGlua1N5bmMoZmlsZXBhdGgpIHsKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgYmluZGluZy51bmxpbmtTeW5jKGZpbGVwYXRoKQp9CgpmdW5jdGlvbiByZW5hbWUoc3JjLCBkc3QsIGNiKSB7CiAgaWYgKHR5cGVvZiBzcmMgIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBzcmMgKyAnICgnICsgc3JjICsgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGRzdCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGRzdCArICcgKCcgKyBkc3QgKyAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGNvbnN0IHJlcSA9IGdldFJlcSgpCiAgcmVxLmNhbGxiYWNrID0gY2IKICBiaW5kaW5nLnJlbmFtZShyZXEuaGFuZGxlLCBzcmMsIGRzdCkKfQoKZnVuY3Rpb24gcmVuYW1lU3luYyhzcmMsIGRzdCkgewogIGlmICh0eXBlb2Ygc3JjICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2Ygc3JjICsgJyAoJyArIHNyYyArICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBkc3QgIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBkc3QgKyAnICgnICsgZHN0ICsgJyknCiAgICApCiAgfQoKICBiaW5kaW5nLnJlbmFtZVN5bmMoc3JjLCBkc3QpCn0KCmZ1bmN0aW9uIGNvcHlGaWxlKHNyYywgZHN0LCBtb2RlLCBjYikgewogIGlmICh0eXBlb2YgbW9kZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBtb2RlCiAgICBtb2RlID0gMAogIH0KCiAgaWYgKHR5cGVvZiBzcmMgIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBzcmMgKyAnICgnICsgc3JjICsgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGRzdCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGRzdCArICcgKCcgKyBkc3QgKyAnKScKICAgICkKICB9CgogIGNvbnN0IHJlcSA9IGdldFJlcSgpCiAgcmVxLmNhbGxiYWNrID0gY2IKICBiaW5kaW5nLmNvcHlmaWxlKHJlcS5oYW5kbGUsIHNyYywgZHN0LCBtb2RlKQp9CgpmdW5jdGlvbiBjb3B5RmlsZVN5bmMoc3JjLCBkc3QsIG1vZGUgPSAwKSB7CiAgaWYgKHR5cGVvZiBzcmMgIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBzcmMgKyAnICgnICsgc3JjICsgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGRzdCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGRzdCArICcgKCcgKyBkc3QgKyAnKScKICAgICkKICB9CgogIGJpbmRpbmcuY29weWZpbGVTeW5jKHNyYywgZHN0LCBtb2RlKQp9CgpmdW5jdGlvbiByZWFscGF0aChmaWxlcGF0aCwgb3B0cywgY2IpIHsKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYiA9IG9wdHMKICAgIG9wdHMgPSB7fQogIH0gZWxzZSBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAnICgnICsKICAgICAgICBjYiArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSBvcHRzID0geyBlbmNvZGluZzogb3B0cyB9CiAgZWxzZSBpZiAoIW9wdHMpIG9wdHMgPSB7fQoKICBjb25zdCB7IGVuY29kaW5nID0gJ3V0ZjgnIH0gPSBvcHRzCgogIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmluZGluZy5zaXplb2ZGU1BhdGgpCgogIGNvbnN0IHJlcSA9IGdldFJlcSgpCgogIHJlcS5jYWxsYmFjayA9IGZ1bmN0aW9uIChlcnIsIF8pIHsKICAgIGlmIChlcnIpIHJldHVybiBjYihlcnIsIG51bGwpCiAgICBsZXQgcGF0aCA9IGRhdGEuc3ViYXJyYXkoMCwgZGF0YS5pbmRleE9mKDApKQogICAgaWYgKGVuY29kaW5nICE9PSAnYnVmZmVyJykgcGF0aCA9IHBhdGgudG9TdHJpbmcoZW5jb2RpbmcpCiAgICBjYihudWxsLCBwYXRoKQogIH0KCiAgYmluZGluZy5yZWFscGF0aChyZXEuaGFuZGxlLCBmaWxlcGF0aCwgZGF0YSkKfQoKZnVuY3Rpb24gcmVhbHBhdGhTeW5jKGZpbGVwYXRoLCBvcHRzKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7IGVuY29kaW5nOiBvcHRzIH0KICBlbHNlIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGNvbnN0IHsgZW5jb2RpbmcgPSAndXRmOCcgfSA9IG9wdHMKCiAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShiaW5kaW5nLnNpemVvZkZTUGF0aCkKCiAgYmluZGluZy5yZWFscGF0aFN5bmMoZmlsZXBhdGgsIGRhdGEpCgogIGZpbGVwYXRoID0gZGF0YS5zdWJhcnJheSgwLCBkYXRhLmluZGV4T2YoMCkpCiAgaWYgKGVuY29kaW5nICE9PSAnYnVmZmVyJykgZmlsZXBhdGggPSBmaWxlcGF0aC50b1N0cmluZyhlbmNvZGluZykKICByZXR1cm4gZmlsZXBhdGgKfQoKZnVuY3Rpb24gcmVhZGxpbmsoZmlsZXBhdGgsIG9wdHMsIGNiKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBvcHRzCiAgICBvcHRzID0ge30KICB9IGVsc2UgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBjYiArCiAgICAgICAgJyAoJyArCiAgICAgICAgY2IgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykgb3B0cyA9IHsgZW5jb2Rpbmc6IG9wdHMgfQogIGVsc2UgaWYgKCFvcHRzKSBvcHRzID0ge30KCiAgY29uc3QgeyBlbmNvZGluZyA9ICd1dGY4JyB9ID0gb3B0cwoKICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJpbmRpbmcuc2l6ZW9mRlNQYXRoKQoKICBjb25zdCByZXEgPSBnZXRSZXEoKQoKICByZXEuY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBfKSB7CiAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJyLCBudWxsKQogICAgbGV0IHBhdGggPSBkYXRhLnN1YmFycmF5KDAsIGRhdGEuaW5kZXhPZigwKSkKICAgIGlmIChlbmNvZGluZyAhPT0gJ2J1ZmZlcicpIHBhdGggPSBwYXRoLnRvU3RyaW5nKGVuY29kaW5nKQogICAgY2IobnVsbCwgcGF0aCkKICB9CgogIGJpbmRpbmcucmVhZGxpbmsocmVxLmhhbmRsZSwgZmlsZXBhdGgsIGRhdGEpCn0KCmZ1bmN0aW9uIHJlYWRsaW5rU3luYyhmaWxlcGF0aCwgb3B0cykgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSBvcHRzID0geyBlbmNvZGluZzogb3B0cyB9CiAgZWxzZSBpZiAoIW9wdHMpIG9wdHMgPSB7fQoKICBjb25zdCB7IGVuY29kaW5nID0gJ3V0ZjgnIH0gPSBvcHRzCgogIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmluZGluZy5zaXplb2ZGU1BhdGgpCgogIGJpbmRpbmcucmVhZGxpbmtTeW5jKGZpbGVwYXRoLCBkYXRhKQoKICBmaWxlcGF0aCA9IGRhdGEuc3ViYXJyYXkoMCwgZGF0YS5pbmRleE9mKDApKQogIGlmIChlbmNvZGluZyAhPT0gJ2J1ZmZlcicpIGZpbGVwYXRoID0gZmlsZXBhdGgudG9TdHJpbmcoZW5jb2RpbmcpCiAgcmV0dXJuIGZpbGVwYXRoCn0KCmZ1bmN0aW9uIG5vcm1hbGl6ZVN5bWxpbmtUYXJnZXQodGFyZ2V0LCB0eXBlLCBmaWxlcGF0aCkgewogIGlmIChpc1dpbmRvd3MpIHsKICAgIGlmICh0eXBlID09PSAnanVuY3Rpb24nKSB0YXJnZXQgPSBwYXRoLnJlc29sdmUoZmlsZXBhdGgsICcuLicsIHRhcmdldCkKCiAgICBpZiAocGF0aC5pc0Fic29sdXRlKHRhcmdldCkpIHJldHVybiBwYXRoLnRvTmFtZXNwYWNlZFBhdGgodGFyZ2V0KQoKICAgIHJldHVybiB0YXJnZXQucmVwbGFjZSgvXC8vZywgcGF0aC5zZXApCiAgfQoKICByZXR1cm4gdGFyZ2V0Cn0KCmZ1bmN0aW9uIHN5bWxpbmsodGFyZ2V0LCBmaWxlcGF0aCwgdHlwZSwgY2IpIHsKICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1RhcmdldCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSB0eXBlCiAgICB0eXBlID0gbnVsbAogIH0gZWxzZSBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAnICgnICsKICAgICAgICBjYiArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAnZmlsZSc6CiAgICAgICAgdHlwZSA9IDAKICAgICAgICBicmVhawogICAgICBjYXNlICdkaXInOgogICAgICAgIHR5cGUgPSBjb25zdGFudHMuVVZfRlNfU1lNTElOS19ESVIKICAgICAgICBicmVhawogICAgICBjYXNlICdqdW5jdGlvbic6CiAgICAgICAgdHlwZSA9IGNvbnN0YW50cy5VVl9GU19TWU1MSU5LX0pVTkNUSU9OCiAgICAgICAgYnJlYWsKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICAgICAnRVJSX0ZTX0lOVkFMSURfU1lNTElOS19UWVBFJywKICAgICAgICAgICdTeW1saW5rIHR5cGUgbXVzdCBiZSBvbmUgb2YgImRpciIsICJmaWxlIiwgb3IgImp1bmN0aW9uIi4gUmVjZWl2ZWQgIicgKwogICAgICAgICAgICB0eXBlICsKICAgICAgICAgICAgJyInCiAgICAgICAgKQogICAgfQogIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgIT09ICdudW1iZXInKSB7CiAgICBpZiAoaXNXaW5kb3dzKSB7CiAgICAgIHRhcmdldCA9IHBhdGgucmVzb2x2ZShmaWxlcGF0aCwgJy4uJywgdGFyZ2V0KQoKICAgICAgc3RhdCh0YXJnZXQsIChlcnIsIHN0KSA9PiB7CiAgICAgICAgdHlwZSA9CiAgICAgICAgICBlcnIgPT09IG51bGwgJiYgc3QuaXNEaXJlY3RvcnkoKQogICAgICAgICAgICA/IGNvbnN0YW50cy5VVl9GU19TWU1MSU5LX0RJUgogICAgICAgICAgICA6IGNvbnN0YW50cy5VVl9GU19TWU1MSU5LX0pVTkNUSU9OCgogICAgICAgIHN5bWxpbmsodGFyZ2V0LCBmaWxlcGF0aCwgdHlwZSwgY2IpCiAgICAgIH0pCgogICAgICByZXR1cm4KICAgIH0KCiAgICB0eXBlID0gMAogIH0KCiAgY29uc3QgcmVxID0gZ2V0UmVxKCkKICByZXEuY2FsbGJhY2sgPSBjYgogIGJpbmRpbmcuc3ltbGluaygKICAgIHJlcS5oYW5kbGUsCiAgICBub3JtYWxpemVTeW1saW5rVGFyZ2V0KHRhcmdldCksCiAgICBwYXRoLnRvTmFtZXNwYWNlZFBhdGgoZmlsZXBhdGgpLAogICAgdHlwZQogICkKfQoKZnVuY3Rpb24gc3ltbGlua1N5bmModGFyZ2V0LCBmaWxlcGF0aCwgdHlwZSkgewogIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnVGFyZ2V0IG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykgewogICAgc3dpdGNoICh0eXBlKSB7CiAgICAgIGNhc2UgJ2ZpbGUnOgogICAgICAgIHR5cGUgPSAwCiAgICAgICAgYnJlYWsKICAgICAgY2FzZSAnZGlyJzoKICAgICAgICB0eXBlID0gY29uc3RhbnRzLlVWX0ZTX1NZTUxJTktfRElSCiAgICAgICAgYnJlYWsKICAgICAgY2FzZSAnanVuY3Rpb24nOgogICAgICAgIHR5cGUgPSBjb25zdGFudHMuVVZfRlNfU1lNTElOS19KVU5DVElPTgogICAgICAgIGJyZWFrCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAgICAgJ0VSUl9GU19JTlZBTElEX1NZTUxJTktfVFlQRScsCiAgICAgICAgICAnU3ltbGluayB0eXBlIG11c3QgYmUgb25lIG9mICJkaXIiLCAiZmlsZSIsIG9yICJqdW5jdGlvbiIuIFJlY2VpdmVkICInICsKICAgICAgICAgICAgdHlwZSArCiAgICAgICAgICAgICciJwogICAgICAgICkKICAgIH0KICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlICE9PSAnbnVtYmVyJykgewogICAgaWYgKGlzV2luZG93cykgewogICAgICB0YXJnZXQgPSBwYXRoLnJlc29sdmUoZmlsZXBhdGgsICcuLicsIHRhcmdldCkKCiAgICAgIHR5cGUgPSBzdGF0U3luYyh0YXJnZXQpLmlzRGlyZWN0b3J5KCkKICAgICAgICA/IGNvbnN0YW50cy5VVl9GU19TWU1MSU5LX0RJUgogICAgICAgIDogY29uc3RhbnRzLlVWX0ZTX1NZTUxJTktfSlVOQ1RJT04KICAgIH0gZWxzZSB7CiAgICAgIHR5cGUgPSAwCiAgICB9CiAgfQoKICBiaW5kaW5nLnN5bWxpbmtTeW5jKAogICAgbm9ybWFsaXplU3ltbGlua1RhcmdldCh0YXJnZXQpLAogICAgcGF0aC50b05hbWVzcGFjZWRQYXRoKGZpbGVwYXRoKSwKICAgIHR5cGUKICApCn0KCmZ1bmN0aW9uIG9wZW5kaXIoZmlsZXBhdGgsIG9wdHMsIGNiKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBvcHRzCiAgICBvcHRzID0ge30KICB9IGVsc2UgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBjYiArCiAgICAgICAgJyAoJyArCiAgICAgICAgY2IgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykgb3B0cyA9IHsgZW5jb2Rpbmc6IG9wdHMgfQogIGVsc2UgaWYgKCFvcHRzKSBvcHRzID0ge30KCiAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShiaW5kaW5nLnNpemVvZkZTRGlyKQoKICBjb25zdCByZXEgPSBnZXRSZXEoKQoKICByZXEuY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBfKSB7CiAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJyLCBudWxsKQogICAgY2IobnVsbCwgbmV3IERpcihmaWxlcGF0aCwgZGF0YSwgb3B0cykpCiAgfQoKICBiaW5kaW5nLm9wZW5kaXIocmVxLmhhbmRsZSwgZmlsZXBhdGgsIGRhdGEpCn0KCmZ1bmN0aW9uIG9wZW5kaXJTeW5jKGZpbGVwYXRoLCBvcHRzKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7IGVuY29kaW5nOiBvcHRzIH0KICBlbHNlIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmluZGluZy5zaXplb2ZGU0RpcikKICBiaW5kaW5nLm9wZW5kaXJTeW5jKGZpbGVwYXRoLCBkYXRhKQogIHJldHVybiBuZXcgRGlyKGZpbGVwYXRoLCBkYXRhLCBvcHRzKQp9CgpmdW5jdGlvbiByZWFkZGlyKGZpbGVwYXRoLCBvcHRzLCBjYikgewogIGlmICh0eXBlb2YgZmlsZXBhdGggIT09ICdzdHJpbmcnKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGZpbGVwYXRoICsKICAgICAgICAnICgnICsKICAgICAgICBmaWxlcGF0aCArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHsKICAgIGNiID0gb3B0cwogICAgb3B0cyA9IHt9CiAgfSBlbHNlIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ0NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgY2IgKwogICAgICAgICcgKCcgKwogICAgICAgIGNiICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7IGVuY29kaW5nOiBvcHRzIH0KICBlbHNlIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGNvbnN0IHsgd2l0aEZpbGVUeXBlcyA9IGZhbHNlIH0gPSBvcHRzCgogIG9wZW5kaXIoZmlsZXBhdGgsIG9wdHMsIGFzeW5jIChlcnIsIGRpcikgPT4gewogICAgaWYgKGVycikgcmV0dXJuIGNiKGVyciwgbnVsbCkKICAgIGNvbnN0IHJlc3VsdCA9IFtdCiAgICBmb3IgYXdhaXQgKGNvbnN0IGVudHJ5IG9mIGRpcikgewogICAgICByZXN1bHQucHVzaCh3aXRoRmlsZVR5cGVzID8gZW50cnkgOiBlbnRyeS5uYW1lKQogICAgfQogICAgY2IobnVsbCwgcmVzdWx0KQogIH0pCn0KCmZ1bmN0aW9uIHJlYWRkaXJTeW5jKGZpbGVwYXRoLCBvcHRzKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7IGVuY29kaW5nOiBvcHRzIH0KICBlbHNlIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGNvbnN0IHsgd2l0aEZpbGVUeXBlcyA9IGZhbHNlIH0gPSBvcHRzCgogIGNvbnN0IGRpciA9IG9wZW5kaXJTeW5jKGZpbGVwYXRoLCBvcHRzKQogIGNvbnN0IHJlc3VsdCA9IFtdCgogIHdoaWxlICh0cnVlKSB7CiAgICBjb25zdCBlbnRyeSA9IGRpci5yZWFkU3luYygpCiAgICBpZiAoZW50cnkgPT09IG51bGwpIGJyZWFrCiAgICByZXN1bHQucHVzaCh3aXRoRmlsZVR5cGVzID8gZW50cnkgOiBlbnRyeS5uYW1lKQogIH0KCiAgcmV0dXJuIHJlc3VsdAp9CgpmdW5jdGlvbiByZWFkRmlsZShmaWxlcGF0aCwgb3B0cywgY2IpIHsKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYiA9IG9wdHMKICAgIG9wdHMgPSB7fQogIH0gZWxzZSBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAnICgnICsKICAgICAgICBjYiArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSBvcHRzID0geyBlbmNvZGluZzogb3B0cyB9CiAgZWxzZSBpZiAoIW9wdHMpIG9wdHMgPSB7fQoKICBjb25zdCB7IGVuY29kaW5nID0gJ2J1ZmZlcicgfSA9IG9wdHMKCiAgb3BlbihmaWxlcGF0aCwgb3B0cy5mbGFnIHx8ICdyJywgZnVuY3Rpb24gKGVyciwgZmQpIHsKICAgIGlmIChlcnIpIHJldHVybiBjYihlcnIpCgogICAgZnN0YXQoZmQsIGZ1bmN0aW9uIChlcnIsIHN0KSB7CiAgICAgIGlmIChlcnIpIHJldHVybiBjbG9zZUFuZEVycm9yKGVycikKCiAgICAgIGxldCBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc3Quc2l6ZSkKICAgICAgbGV0IGxlbiA9IDAKCiAgICAgIHJlYWQoZmQsIGJ1ZmZlciwgbG9vcCkKCiAgICAgIGZ1bmN0aW9uIGxvb3AoZXJyLCByKSB7CiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNsb3NlQW5kRXJyb3IoZXJyKQogICAgICAgIGxlbiArPSByCiAgICAgICAgaWYgKHIgPT09IDAgfHwgbGVuID09PSBidWZmZXIuYnl0ZUxlbmd0aCkgcmV0dXJuIGRvbmUoKQogICAgICAgIHJlYWQoZmQsIGJ1ZmZlci5zdWJhcnJheShsZW4pLCBsb29wKQogICAgICB9CgogICAgICBmdW5jdGlvbiBkb25lKCkgewogICAgICAgIGlmIChsZW4gIT09IGJ1ZmZlci5ieXRlTGVuZ3RoKSBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkoMCwgbGVuKQogICAgICAgIGNsb3NlKGZkLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJyKQogICAgICAgICAgaWYgKGVuY29kaW5nICE9PSAnYnVmZmVyJykgYnVmZmVyID0gYnVmZmVyLnRvU3RyaW5nKGVuY29kaW5nKQogICAgICAgICAgY2IobnVsbCwgYnVmZmVyKQogICAgICAgIH0pCiAgICAgIH0KICAgIH0pCgogICAgZnVuY3Rpb24gY2xvc2VBbmRFcnJvcihlcnIpIHsKICAgICAgY2xvc2UoZmQsIGZ1bmN0aW9uICgpIHsKICAgICAgICBjYihlcnIpCiAgICAgIH0pCiAgICB9CiAgfSkKfQoKZnVuY3Rpb24gcmVhZEZpbGVTeW5jKGZpbGVwYXRoLCBvcHRzKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7IGVuY29kaW5nOiBvcHRzIH0KICBlbHNlIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGNvbnN0IHsgZW5jb2RpbmcgPSAnYnVmZmVyJyB9ID0gb3B0cwoKICBjb25zdCBmZCA9IG9wZW5TeW5jKGZpbGVwYXRoLCBvcHRzLmZsYWcgfHwgJ3InKQoKICB0cnkgewogICAgY29uc3Qgc3QgPSBmc3RhdFN5bmMoZmQpCgogICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShzdC5zaXplKQogICAgbGV0IGxlbiA9IDAKCiAgICB3aGlsZSAodHJ1ZSkgewogICAgICBjb25zdCByID0gcmVhZFN5bmMoZmQsIGxlbiA/IGJ1ZmZlci5zdWJhcnJheShsZW4pIDogYnVmZmVyKQogICAgICBsZW4gKz0gcgogICAgICBpZiAociA9PT0gMCB8fCBsZW4gPT09IGJ1ZmZlci5ieXRlTGVuZ3RoKSBicmVhawogICAgfQoKICAgIGlmIChsZW4gIT09IGJ1ZmZlci5ieXRlTGVuZ3RoKSBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkoMCwgbGVuKQogICAgaWYgKGVuY29kaW5nICE9PSAnYnVmZmVyJykgYnVmZmVyID0gYnVmZmVyLnRvU3RyaW5nKGVuY29kaW5nKQogICAgcmV0dXJuIGJ1ZmZlcgogIH0gZmluYWxseSB7CiAgICB0cnkgewogICAgICBjbG9zZVN5bmMoZmQpCiAgICB9IGNhdGNoIHt9CiAgfQp9CgpmdW5jdGlvbiB3cml0ZUZpbGUoZmlsZXBhdGgsIGRhdGEsIG9wdHMsIGNiKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICgKICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJgogICAgIUJ1ZmZlci5pc0J1ZmZlcihkYXRhKSAmJgogICAgIUFycmF5QnVmZmVyLmlzVmlldyhkYXRhKQogICkgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRGF0YSBtdXN0IGJlIGEgc3RyaW5nIG9yIGJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGRhdGEKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBvcHRzCiAgICBvcHRzID0ge30KICB9IGVsc2UgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBjYiArCiAgICAgICAgJyAoJyArCiAgICAgICAgY2IgKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykgb3B0cyA9IHsgZW5jb2Rpbmc6IG9wdHMgfQogIGVsc2UgaWYgKCFvcHRzKSBvcHRzID0ge30KCiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIG9wdHMuZW5jb2RpbmcpCgogIG9wZW4oZmlsZXBhdGgsIG9wdHMuZmxhZyB8fCAndycsIG9wdHMubW9kZSB8fCAwbzY2NiwgZnVuY3Rpb24gKGVyciwgZmQpIHsKICAgIGlmIChlcnIpIHJldHVybiBjYihlcnIpCgogICAgd3JpdGUoZmQsIGRhdGEsIGxvb3ApCgogICAgZnVuY3Rpb24gbG9vcChlcnIsIHcpIHsKICAgICAgaWYgKGVycikgcmV0dXJuIGNsb3NlQW5kRXJyb3IoZXJyKQogICAgICBpZiAodyA9PT0gZGF0YS5ieXRlTGVuZ3RoKSByZXR1cm4gZG9uZSgpCiAgICAgIHdyaXRlKGZkLCBkYXRhLnN1YmFycmF5KHcpLCBsb29wKQogICAgfQoKICAgIGZ1bmN0aW9uIGRvbmUoKSB7CiAgICAgIGNsb3NlKGZkLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNiKGVycikKICAgICAgICByZXR1cm4gY2IobnVsbCkKICAgICAgfSkKICAgIH0KCiAgICBmdW5jdGlvbiBjbG9zZUFuZEVycm9yKGVycikgewogICAgICBjbG9zZShmZCwgZnVuY3Rpb24gKCkgewogICAgICAgIGNiKGVycikKICAgICAgfSkKICAgIH0KICB9KQp9CgpmdW5jdGlvbiB3cml0ZUZpbGVTeW5jKGZpbGVwYXRoLCBkYXRhLCBvcHRzKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICgKICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJgogICAgIUJ1ZmZlci5pc0J1ZmZlcihkYXRhKSAmJgogICAgIUFycmF5QnVmZmVyLmlzVmlldyhkYXRhKQogICkgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRGF0YSBtdXN0IGJlIGEgc3RyaW5nIG9yIGJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGRhdGEKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7IGVuY29kaW5nOiBvcHRzIH0KICBlbHNlIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBvcHRzLmVuY29kaW5nKQoKICBjb25zdCBmZCA9IG9wZW5TeW5jKGZpbGVwYXRoLCBvcHRzLmZsYWcgfHwgJ3cnLCBvcHRzLm1vZGUpCgogIHRyeSB7CiAgICBsZXQgbGVuID0gMAoKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgIGxlbiArPSB3cml0ZVN5bmMoZmQsIGxlbiA/IGRhdGEuc3ViYXJyYXkobGVuKSA6IGRhdGEpCiAgICAgIGlmIChsZW4gPT09IGRhdGEuYnl0ZUxlbmd0aCkgYnJlYWsKICAgIH0KICB9IGZpbmFsbHkgewogICAgdHJ5IHsKICAgICAgY2xvc2VTeW5jKGZkKQogICAgfSBjYXRjaCB7fQogIH0KfQoKZnVuY3Rpb24gYXBwZW5kRmlsZShmaWxlcGF0aCwgZGF0YSwgb3B0cywgY2IpIHsKICBpZiAodHlwZW9mIGZpbGVwYXRoICE9PSAnc3RyaW5nJykgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcgKwogICAgICAgIHR5cGVvZiBmaWxlcGF0aCArCiAgICAgICAgJyAoJyArCiAgICAgICAgZmlsZXBhdGggKwogICAgICAgICcpJwogICAgKQogIH0KCiAgaWYgKAogICAgdHlwZW9mIGRhdGEgIT09ICdzdHJpbmcnICYmCiAgICAhQnVmZmVyLmlzQnVmZmVyKGRhdGEpICYmCiAgICAhQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpCiAgKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdEYXRhIG11c3QgYmUgYSBzdHJpbmcgb3IgYnVmZmVyLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgZGF0YQogICAgKQogIH0KCiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYiA9IG9wdHMKICAgIG9wdHMgPSB7fQogIH0gZWxzZSBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7CiAgICB0aHJvdyB0eXBlRXJyb3IoCiAgICAgICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsCiAgICAgICdDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArCiAgICAgICAgdHlwZW9mIGNiICsKICAgICAgICAnICgnICsKICAgICAgICBjYiArCiAgICAgICAgJyknCiAgICApCiAgfQoKICBpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSBvcHRzID0geyBlbmNvZGluZzogb3B0cyB9CiAgZWxzZSBpZiAoIW9wdHMpIG9wdHMgPSB7fQoKICBvcHRzID0geyAuLi5vcHRzIH0KCiAgaWYgKCFvcHRzLmZsYWdzKSBvcHRzLmZsYWcgPSAnYScKCiAgcmV0dXJuIHdyaXRlRmlsZShmaWxlcGF0aCwgZGF0YSwgb3B0cywgY2IpCn0KCmZ1bmN0aW9uIGFwcGVuZEZpbGVTeW5jKGZpbGVwYXRoLCBkYXRhLCBvcHRzKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICgKICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJgogICAgIUJ1ZmZlci5pc0J1ZmZlcihkYXRhKSAmJgogICAgIUFycmF5QnVmZmVyLmlzVmlldyhkYXRhKQogICkgewogICAgdGhyb3cgdHlwZUVycm9yKAogICAgICAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLAogICAgICAnRGF0YSBtdXN0IGJlIGEgc3RyaW5nIG9yIGJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGRhdGEKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7IGVuY29kaW5nOiBvcHRzIH0KICBlbHNlIGlmICghb3B0cykgb3B0cyA9IHt9CgogIG9wdHMgPSB7IC4uLm9wdHMgfQoKICBpZiAoIW9wdHMuZmxhZ3MpIG9wdHMuZmxhZyA9ICdhJwoKICByZXR1cm4gd3JpdGVGaWxlU3luYyhmaWxlcGF0aCwgZGF0YSwgb3B0cykKfQoKZnVuY3Rpb24gd2F0Y2goZmlsZXBhdGgsIG9wdHMsIGNiKSB7CiAgaWYgKHR5cGVvZiBmaWxlcGF0aCAhPT0gJ3N0cmluZycpIHsKICAgIHRocm93IHR5cGVFcnJvcigKICAgICAgJ0VSUl9JTlZBTElEX0FSR19UWVBFJywKICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSAnICsKICAgICAgICB0eXBlb2YgZmlsZXBhdGggKwogICAgICAgICcgKCcgKwogICAgICAgIGZpbGVwYXRoICsKICAgICAgICAnKScKICAgICkKICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBvcHRzCiAgICBvcHRzID0ge30KICB9CgogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7IGVuY29kaW5nOiBvcHRzIH0KICBlbHNlIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGNvbnN0IHdhdGNoZXIgPSBuZXcgV2F0Y2hlcihmaWxlcGF0aCwgb3B0cykKICBpZiAoY2IpIHdhdGNoZXIub24oJ2NoYW5nZScsIGNiKQogIHJldHVybiB3YXRjaGVyCn0KCmNsYXNzIFN0YXRzIHsKICBjb25zdHJ1Y3RvcigKICAgIGRldiwKICAgIG1vZGUsCiAgICBubGluaywKICAgIHVpZCwKICAgIGdpZCwKICAgIHJkZXYsCiAgICBibGtzaXplLAogICAgaW5vLAogICAgc2l6ZSwKICAgIGJsb2NrcywKICAgIGF0aW1lTXMsCiAgICBtdGltZU1zLAogICAgY3RpbWVNcywKICAgIGJpcnRodGltZU1zCiAgKSB7CiAgICB0aGlzLmRldiA9IGRldgogICAgdGhpcy5tb2RlID0gbW9kZQogICAgdGhpcy5ubGluayA9IG5saW5rCiAgICB0aGlzLnVpZCA9IHVpZAogICAgdGhpcy5naWQgPSBnaWQKICAgIHRoaXMucmRldiA9IHJkZXYKICAgIHRoaXMuYmxrc2l6ZSA9IGJsa3NpemUKICAgIHRoaXMuaW5vID0gaW5vCiAgICB0aGlzLnNpemUgPSBzaXplCiAgICB0aGlzLmJsb2NrcyA9IGJsb2NrcwogICAgdGhpcy5hdGltZU1zID0gYXRpbWVNcwogICAgdGhpcy5tdGltZU1zID0gbXRpbWVNcwogICAgdGhpcy5jdGltZU1zID0gY3RpbWVNcwogICAgdGhpcy5iaXJ0aHRpbWVNcyA9IGJpcnRodGltZU1zCiAgICB0aGlzLmF0aW1lID0gbmV3IERhdGUoYXRpbWVNcykKICAgIHRoaXMubXRpbWUgPSBuZXcgRGF0ZShtdGltZU1zKQogICAgdGhpcy5jdGltZSA9IG5ldyBEYXRlKGN0aW1lTXMpCiAgICB0aGlzLmJpcnRodGltZSA9IG5ldyBEYXRlKGJpcnRodGltZU1zKQogIH0KCiAgaXNEaXJlY3RvcnkoKSB7CiAgICByZXR1cm4gKHRoaXMubW9kZSAmIGNvbnN0YW50cy5TX0lGTVQpID09PSBjb25zdGFudHMuU19JRkRJUgogIH0KCiAgaXNGaWxlKCkgewogICAgcmV0dXJuICh0aGlzLm1vZGUgJiBjb25zdGFudHMuU19JRk1UKSA9PT0gY29uc3RhbnRzLlNfSUZSRUcKICB9CgogIGlzQmxvY2tEZXZpY2UoKSB7CiAgICByZXR1cm4gKHRoaXMubW9kZSAmIGNvbnN0YW50cy5TX0lGTVQpID09PSBjb25zdGFudHMuU19JRkJMSwogIH0KCiAgaXNDaGFyYWN0ZXJEZXZpY2UoKSB7CiAgICByZXR1cm4gKHRoaXMubW9kZSAmIGNvbnN0YW50cy5TX0lGQ0hSKSA9PT0gY29uc3RhbnRzLlNfSUZDSFIKICB9CgogIGlzRklGTygpIHsKICAgIHJldHVybiAodGhpcy5tb2RlICYgY29uc3RhbnRzLlNfSUZNVCkgPT09IGNvbnN0YW50cy5TX0lGSUZPCiAgfQoKICBpc1N5bWJvbGljTGluaygpIHsKICAgIHJldHVybiAodGhpcy5tb2RlICYgY29uc3RhbnRzLlNfSUZNVCkgPT09IGNvbnN0YW50cy5TX0lGTE5LCiAgfQoKICBpc1NvY2tldCgpIHsKICAgIHJldHVybiAodGhpcy5tb2RlICYgY29uc3RhbnRzLlNfSUZNVCkgPT09IGNvbnN0YW50cy5TX0lGU09DSwogIH0KfQoKY2xhc3MgRGlyIHsKICBjb25zdHJ1Y3RvcihwYXRoLCBoYW5kbGUsIG9wdHMgPSB7fSkgewogICAgY29uc3QgeyBlbmNvZGluZyA9ICd1dGY4JywgYnVmZmVyU2l6ZSA9IDMyIH0gPSBvcHRzCgogICAgdGhpcy5faGFuZGxlID0gaGFuZGxlCiAgICB0aGlzLl9kaXJlbnRzID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJpbmRpbmcuc2l6ZW9mRlNEaXJlbnQgKiBidWZmZXJTaXplKQogICAgdGhpcy5fZW5jb2RpbmcgPSBlbmNvZGluZwogICAgdGhpcy5fYnVmZmVyID0gW10KICAgIHRoaXMuX2VuZGVkID0gZmFsc2UKCiAgICB0aGlzLnBhdGggPSBwYXRoCiAgfQoKICByZWFkKGNiKSB7CiAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzaWZ5KHRoaXMucmVhZC5iaW5kKHRoaXMpKQoKICAgIGlmICh0aGlzLl9idWZmZXIubGVuZ3RoKQogICAgICByZXR1cm4gcXVldWVNaWNyb3Rhc2soKCkgPT4gY2IobnVsbCwgdGhpcy5fYnVmZmVyLnNoaWZ0KCkpKQogICAgaWYgKHRoaXMuX2VuZGVkKSByZXR1cm4gcXVldWVNaWNyb3Rhc2soKCkgPT4gY2IobnVsbCwgbnVsbCkpCgogICAgY29uc3QgZGF0YSA9IFtdCiAgICBjb25zdCByZXEgPSBnZXRSZXEoKQoKICAgIHJlcS5jYWxsYmFjayA9IChlcnIsIF8pID0+IHsKICAgICAgaWYgKGVycikgcmV0dXJuIGNiKGVyciwgbnVsbCkKICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB0aGlzLl9lbmRlZCA9IHRydWUKICAgICAgZWxzZSB7CiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBkYXRhKSB7CiAgICAgICAgICBsZXQgbmFtZSA9IEJ1ZmZlci5mcm9tKGVudHJ5Lm5hbWUpCiAgICAgICAgICBpZiAodGhpcy5fZW5jb2RpbmcgIT09ICdidWZmZXInKSBuYW1lID0gbmFtZS50b1N0cmluZyh0aGlzLl9lbmNvZGluZykKICAgICAgICAgIHRoaXMuX2J1ZmZlci5wdXNoKG5ldyBEaXJlbnQodGhpcy5wYXRoLCBuYW1lLCBlbnRyeS50eXBlKSkKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLl9lbmRlZCkgcmV0dXJuIGNiKG51bGwsIG51bGwpCiAgICAgIGNiKG51bGwsIHRoaXMuX2J1ZmZlci5zaGlmdCgpKQogICAgfQoKICAgIGJpbmRpbmcucmVhZGRpcihyZXEuaGFuZGxlLCB0aGlzLl9oYW5kbGUsIHRoaXMuX2RpcmVudHMsIGRhdGEpCiAgfQoKICByZWFkU3luYygpIHsKICAgIGlmICh0aGlzLl9idWZmZXIubGVuZ3RoKSByZXR1cm4gdGhpcy5fYnVmZmVyLnNoaWZ0KCkKICAgIGlmICh0aGlzLl9lbmRlZCkgcmV0dXJuIG51bGwKCiAgICBjb25zdCBkYXRhID0gW10KCiAgICBiaW5kaW5nLnJlYWRkaXJTeW5jKHRoaXMuX2hhbmRsZSwgdGhpcy5fZGlyZW50cywgZGF0YSkKCiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHRoaXMuX2VuZGVkID0gdHJ1ZQogICAgZWxzZSB7CiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZGF0YSkgewogICAgICAgIGxldCBuYW1lID0gQnVmZmVyLmZyb20oZW50cnkubmFtZSkKICAgICAgICBpZiAodGhpcy5fZW5jb2RpbmcgIT09ICdidWZmZXInKSBuYW1lID0gbmFtZS50b1N0cmluZyh0aGlzLl9lbmNvZGluZykKICAgICAgICB0aGlzLl9idWZmZXIucHVzaChuZXcgRGlyZW50KHRoaXMucGF0aCwgbmFtZSwgZW50cnkudHlwZSkpCiAgICAgIH0KICAgIH0KCiAgICBpZiAodGhpcy5fZW5kZWQpIHJldHVybiBudWxsCiAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnNoaWZ0KCkKICB9CgogIGNsb3NlKGNiKSB7CiAgICBpZiAoIWNiKSByZXR1cm4gcHJvbWlzaWZ5KHRoaXMuY2xvc2UuYmluZCh0aGlzKSkKCiAgICBjb25zdCByZXEgPSBnZXRSZXEoKQoKICAgIHJlcS5jYWxsYmFjayA9IChlcnIsIF8pID0+IHsKICAgICAgdGhpcy5faGFuZGxlID0gbnVsbAogICAgICBjYihlcnIpCiAgICB9CgogICAgYmluZGluZy5jbG9zZWRpcihyZXEuaGFuZGxlLCB0aGlzLl9oYW5kbGUpCiAgfQoKICBjbG9zZVN5bmMoKSB7CiAgICBiaW5kaW5nLmNsb3NlZGlyU3luYyh0aGlzLl9oYW5kbGUpCiAgICB0aGlzLl9oYW5kbGUgPSBudWxsCiAgfQoKICBbU3ltYm9sLml0ZXJhdG9yXSgpIHsKICAgIHJldHVybiB7CiAgICAgIG5leHQ6ICgpID0+IHsKICAgICAgICBpZiAodGhpcy5fYnVmZmVyLmxlbmd0aCkgewogICAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiB0aGlzLl9idWZmZXIuc2hpZnQoKSB9CiAgICAgICAgfQoKICAgICAgICBpZiAodGhpcy5fZW5kZWQpIHsKICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUgfQogICAgICAgIH0KCiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLnJlYWRTeW5jKCkKCiAgICAgICAgaWYgKGVudHJ5KSB7CiAgICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IGVudHJ5IH0KICAgICAgICB9CgogICAgICAgIHRoaXMuY2xvc2VTeW5jKCkKCiAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9CiAgICAgIH0KICAgIH0KICB9CgogIFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSB7CiAgICByZXR1cm4gewogICAgICBuZXh0OiAoKSA9PgogICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgIGlmICh0aGlzLl9idWZmZXIubGVuZ3RoKSB7CiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHsgZG9uZTogZmFsc2UsIHZhbHVlOiB0aGlzLl9idWZmZXIuc2hpZnQoKSB9KQogICAgICAgICAgfQoKICAgICAgICAgIGlmICh0aGlzLl9lbmRlZCkgewogICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh7IGRvbmU6IHRydWUgfSkKICAgICAgICAgIH0KCiAgICAgICAgICB0aGlzLnJlYWQoKGVyciwgZW50cnkpID0+IHsKICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpCgogICAgICAgICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh7IGRvbmU6IGZhbHNlLCB2YWx1ZTogZW50cnkgfSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5jbG9zZSgoZXJyKSA9PiAoZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKHsgZG9uZTogdHJ1ZSB9KSkpCiAgICAgICAgICB9KQogICAgICAgIH0pCiAgICB9CiAgfQp9CgpjbGFzcyBEaXJlbnQgewogIGNvbnN0cnVjdG9yKHBhdGgsIG5hbWUsIHR5cGUpIHsKICAgIHRoaXMucGF0aCA9IHBhdGgKICAgIHRoaXMubmFtZSA9IG5hbWUKICAgIHRoaXMudHlwZSA9IHR5cGUKICB9CgogIGlzRmlsZSgpIHsKICAgIHJldHVybiB0aGlzLnR5cGUgPT09IGNvbnN0YW50cy5VVl9ESVJFTlRfRklMRQogIH0KCiAgaXNEaXJlY3RvcnkoKSB7CiAgICByZXR1cm4gdGhpcy50eXBlID09PSBjb25zdGFudHMuVVZfRElSRU5UX0RJUgogIH0KCiAgaXNTeW1ib2xpY0xpbmsoKSB7CiAgICByZXR1cm4gdGhpcy50eXBlID09PSBjb25zdGFudHMuVVZfRElSRU5UX0xJTksKICB9CgogIGlzRklGTygpIHsKICAgIHJldHVybiB0aGlzLnR5cGUgPT09IGNvbnN0YW50cy5VVl9ESVJFTlRfRklGTwogIH0KCiAgaXNTb2NrZXQoKSB7CiAgICByZXR1cm4gdGhpcy50eXBlID09PSBjb25zdGFudHMuVVZfRElSRU5UX1NPQ0tFVAogIH0KCiAgaXNDaGFyYWN0ZXJEZXZpY2UoKSB7CiAgICByZXR1cm4gdGhpcy50eXBlID09PSBjb25zdGFudHMuVVZfRElSRU5UX0NIQVIKICB9CgogIGlzQmxvY2tEZXZpY2UoKSB7CiAgICByZXR1cm4gdGhpcy50eXBlID09PSBjb25zdGFudHMuVVZfRElSRU5UX0JMT0NLCiAgfQp9CgpjbGFzcyBGaWxlV3JpdGVTdHJlYW0gZXh0ZW5kcyBXcml0YWJsZSB7CiAgY29uc3RydWN0b3IocGF0aCwgb3B0cyA9IHt9KSB7CiAgICBzdXBlcih7IG1hcCB9KQoKICAgIHRoaXMucGF0aCA9IHBhdGgKICAgIHRoaXMuZmQgPSAwCiAgICB0aGlzLmZsYWdzID0gb3B0cy5mbGFncyB8fCAndycKICAgIHRoaXMubW9kZSA9IG9wdHMubW9kZSB8fCAwbzY2NgogIH0KCiAgX29wZW4oY2IpIHsKICAgIG9wZW4odGhpcy5wYXRoLCB0aGlzLmZsYWdzLCB0aGlzLm1vZGUsIChlcnIsIGZkKSA9PiB7CiAgICAgIGlmIChlcnIpIHJldHVybiBjYihlcnIpCiAgICAgIHRoaXMuZmQgPSBmZAogICAgICBjYihudWxsKQogICAgfSkKICB9CgogIF93cml0ZXYoYmF0Y2gsIGNiKSB7CiAgICB3cml0ZXYoCiAgICAgIHRoaXMuZmQsCiAgICAgIGJhdGNoLm1hcCgoeyBjaHVuayB9KSA9PiBjaHVuayksCiAgICAgIGNiCiAgICApCiAgfQoKICBfZGVzdHJveShlcnIsIGNiKSB7CiAgICBpZiAoIXRoaXMuZmQpIHJldHVybiBjYihlcnIpCiAgICBjbG9zZSh0aGlzLmZkLCAoKSA9PiBjYihlcnIpKQogIH0KfQoKY2xhc3MgRmlsZVJlYWRTdHJlYW0gZXh0ZW5kcyBSZWFkYWJsZSB7CiAgY29uc3RydWN0b3IocGF0aCwgb3B0cyA9IHt9KSB7CiAgICBzdXBlcigpCgogICAgdGhpcy5wYXRoID0gcGF0aAogICAgdGhpcy5mZCA9IDAKCiAgICB0aGlzLl9vZmZzZXQgPSBvcHRzLnN0YXJ0IHx8IDAKICAgIHRoaXMuX21pc3NpbmcgPSAwCgogICAgaWYgKG9wdHMubGVuZ3RoKSB7CiAgICAgIHRoaXMuX21pc3NpbmcgPSBvcHRzLmxlbmd0aAogICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0cy5lbmQgPT09ICdudW1iZXInKSB7CiAgICAgIHRoaXMuX21pc3NpbmcgPSBvcHRzLmVuZCAtIHRoaXMuX29mZnNldCArIDEKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX21pc3NpbmcgPSAtMQogICAgfQogIH0KCiAgX29wZW4oY2IpIHsKICAgIG9wZW4odGhpcy5wYXRoLCBjb25zdGFudHMuT19SRE9OTFksIChlcnIsIGZkKSA9PiB7CiAgICAgIGlmIChlcnIpIHJldHVybiBjYihlcnIpCgogICAgICBjb25zdCBvbmVycm9yID0gKGVycikgPT4gY2xvc2UoZmQsICgpID0+IGNiKGVycikpCgogICAgICBmc3RhdChmZCwgKGVyciwgc3QpID0+IHsKICAgICAgICBpZiAoZXJyKSByZXR1cm4gb25lcnJvcihlcnIpCiAgICAgICAgaWYgKCFzdC5pc0ZpbGUoKSkKICAgICAgICAgIHJldHVybiBvbmVycm9yKG5ldyBFcnJvcih0aGlzLnBhdGggKyAnIGlzIG5vdCBhIGZpbGUnKSkKCiAgICAgICAgdGhpcy5mZCA9IGZkCiAgICAgICAgaWYgKHRoaXMuX21pc3NpbmcgPT09IC0xKSB0aGlzLl9taXNzaW5nID0gc3Quc2l6ZQoKICAgICAgICBpZiAoc3Quc2l6ZSA8IHRoaXMuX29mZnNldCkgewogICAgICAgICAgdGhpcy5fb2Zmc2V0ID0gc3Quc2l6ZQogICAgICAgICAgdGhpcy5fbWlzc2luZyA9IDAKICAgICAgICAgIHJldHVybiBjYihudWxsKQogICAgICAgIH0KICAgICAgICBpZiAoc3Quc2l6ZSA8IHRoaXMuX29mZnNldCArIHRoaXMuX21pc3NpbmcpIHsKICAgICAgICAgIHRoaXMuX21pc3NpbmcgPSBzdC5zaXplIC0gdGhpcy5fb2Zmc2V0CiAgICAgICAgICByZXR1cm4gY2IobnVsbCkKICAgICAgICB9CgogICAgICAgIGNiKG51bGwpCiAgICAgIH0pCiAgICB9KQogIH0KCiAgX3JlYWQoc2l6ZSkgewogICAgaWYgKCF0aGlzLl9taXNzaW5nKSB7CiAgICAgIHRoaXMucHVzaChudWxsKQogICAgICByZXR1cm4KICAgIH0KCiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jVW5zYWZlKE1hdGgubWluKHRoaXMuX21pc3NpbmcsIHNpemUpKQoKICAgIHJlYWQodGhpcy5mZCwgZGF0YSwgMCwgZGF0YS5ieXRlTGVuZ3RoLCB0aGlzLl9vZmZzZXQsIChlcnIsIHJlYWQpID0+IHsKICAgICAgaWYgKGVycikgcmV0dXJuIHRoaXMuZGVzdHJveShlcnIpCgogICAgICBpZiAoIXJlYWQpIHsKICAgICAgICB0aGlzLnB1c2gobnVsbCkKICAgICAgICByZXR1cm4KICAgICAgfQoKICAgICAgaWYgKHRoaXMuX21pc3NpbmcgPCByZWFkKSByZWFkID0gdGhpcy5fbWlzc2luZwogICAgICB0aGlzLnB1c2goZGF0YS5zdWJhcnJheSgwLCByZWFkKSkKICAgICAgdGhpcy5fbWlzc2luZyAtPSByZWFkCiAgICAgIHRoaXMuX29mZnNldCArPSByZWFkCiAgICAgIGlmICghdGhpcy5fbWlzc2luZykgdGhpcy5wdXNoKG51bGwpCiAgICB9KQogIH0KCiAgX2Rlc3Ryb3koZXJyLCBjYikgewogICAgaWYgKCF0aGlzLmZkKSByZXR1cm4gY2IoZXJyKQogICAgY2xvc2UodGhpcy5mZCwgKCkgPT4gY2IoZXJyKSkKICB9Cn0KCmNsYXNzIFdhdGNoZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIgewogIGNvbnN0cnVjdG9yKHBhdGgsIG9wdHMpIHsKICAgIGNvbnN0IHsgcGVyc2lzdGVudCA9IHRydWUsIHJlY3Vyc2l2ZSA9IGZhbHNlLCBlbmNvZGluZyA9ICd1dGY4JyB9ID0gb3B0cwoKICAgIHN1cGVyKCkKCiAgICB0aGlzLl9jbG9zZWQgPSBmYWxzZQogICAgdGhpcy5fZW5jb2RpbmcgPSBlbmNvZGluZwogICAgdGhpcy5faGFuZGxlID0gYmluZGluZy53YXRjaGVySW5pdCgKICAgICAgcGF0aCwKICAgICAgcmVjdXJzaXZlLAogICAgICB0aGlzLAogICAgICB0aGlzLl9vbmV2ZW50LAogICAgICB0aGlzLl9vbmNsb3NlCiAgICApCgogICAgaWYgKCFwZXJzaXN0ZW50KSB0aGlzLnVucmVmKCkKICB9CgogIF9vbmV2ZW50KGVyciwgZXZlbnRzLCBmaWxlbmFtZSkgewogICAgaWYgKGVycikgewogICAgICB0aGlzLmNsb3NlKCkKICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycikKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IHBhdGggPQogICAgICAgIHRoaXMuX2VuY29kaW5nID09PSAnYnVmZmVyJwogICAgICAgICAgPyBCdWZmZXIuZnJvbShmaWxlbmFtZSkKICAgICAgICAgIDogQnVmZmVyLmZyb20oZmlsZW5hbWUpLnRvU3RyaW5nKHRoaXMuX2VuY29kaW5nKQoKICAgICAgaWYgKGV2ZW50cyAmIGJpbmRpbmcuVVZfUkVOQU1FKSB7CiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCAncmVuYW1lJywgcGF0aCkKICAgICAgfQoKICAgICAgaWYgKGV2ZW50cyAmIGJpbmRpbmcuVVZfQ0hBTkdFKSB7CiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCAnY2hhbmdlJywgcGF0aCkKICAgICAgfQogICAgfQogIH0KCiAgX29uY2xvc2UoKSB7CiAgICB0aGlzLl9oYW5kbGUgPSBudWxsCgogICAgdGhpcy5lbWl0KCdjbG9zZScpCiAgfQoKICBjbG9zZSgpIHsKICAgIGlmICh0aGlzLl9jbG9zZWQpIHJldHVybgogICAgdGhpcy5fY2xvc2VkID0gdHJ1ZQoKICAgIGJpbmRpbmcud2F0Y2hlckNsb3NlKHRoaXMuX2hhbmRsZSkKICB9CgogIHJlZigpIHsKICAgIGlmICh0aGlzLl9oYW5kbGUpIGJpbmRpbmcud2F0Y2hlclJlZih0aGlzLl9oYW5kbGUpCiAgICByZXR1cm4gdGhpcwogIH0KCiAgdW5yZWYoKSB7CiAgICBpZiAodGhpcy5faGFuZGxlKSBiaW5kaW5nLndhdGNoZXJVbnJlZih0aGlzLl9oYW5kbGUpCiAgICByZXR1cm4gdGhpcwogIH0KCiAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHsKICAgIGNvbnN0IGJ1ZmZlciA9IFtdCiAgICBsZXQgZG9uZSA9IGZhbHNlCiAgICBsZXQgZXJyb3IgPSBudWxsCiAgICBsZXQgbmV4dCA9IG51bGwKCiAgICB0aGlzLm9uKCdjaGFuZ2UnLCAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4gewogICAgICBpZiAobmV4dCkgewogICAgICAgIG5leHQucmVzb2x2ZSh7IGRvbmU6IGZhbHNlLCB2YWx1ZTogeyBldmVudFR5cGUsIGZpbGVuYW1lIH0gfSkKICAgICAgICBuZXh0ID0gbnVsbAogICAgICB9IGVsc2UgewogICAgICAgIGJ1ZmZlci5wdXNoKHsgZXZlbnRUeXBlLCBmaWxlbmFtZSB9KQogICAgICB9CiAgICB9KQogICAgICAub24oJ2Vycm9yJywgKGVycikgPT4gewogICAgICAgIGRvbmUgPSB0cnVlCiAgICAgICAgZXJyb3IgPSBlcnIKCiAgICAgICAgaWYgKG5leHQpIHsKICAgICAgICAgIG5leHQucmVqZWN0KGVycm9yKQogICAgICAgICAgbmV4dCA9IG51bGwKICAgICAgICB9CiAgICAgIH0pCiAgICAgIC5vbignY2xvc2UnLCAoKSA9PiB7CiAgICAgICAgZG9uZSA9IHRydWUKCiAgICAgICAgaWYgKG5leHQpIHsKICAgICAgICAgIG5leHQucmVzb2x2ZSh7IGRvbmUgfSkKICAgICAgICAgIG5leHQgPSBudWxsCiAgICAgICAgfQogICAgICB9KQoKICAgIHJldHVybiB7CiAgICAgIG5leHQ6ICgpID0+CiAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgaWYgKGVycm9yKSByZXR1cm4gcmVqZWN0KGVycm9yKQoKICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKQogICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh7IGRvbmU6IGZhbHNlLCB2YWx1ZTogYnVmZmVyLnNoaWZ0KCkgfSkKCiAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuIHJlc29sdmUoeyBkb25lIH0pCgogICAgICAgICAgbmV4dCA9IHsgcmVzb2x2ZSwgcmVqZWN0IH0KICAgICAgICB9KQogICAgfQogIH0KfQoKZXhwb3J0cy5wcm9taXNlcyA9IHt9CgpmdW5jdGlvbiB0eXBlRXJyb3IoY29kZSwgbWVzc2FnZSkgewogIGNvbnN0IGVycm9yID0gbmV3IFR5cGVFcnJvcihtZXNzYWdlKQogIGVycm9yLmNvZGUgPSBjb2RlCiAgcmV0dXJuIGVycm9yCn0KCmZ1bmN0aW9uIG5vb3AoKSB7fQoKZXhwb3J0cy5hY2Nlc3MgPSBhY2Nlc3MKZXhwb3J0cy5hcHBlbmRGaWxlID0gYXBwZW5kRmlsZQpleHBvcnRzLmNobW9kID0gY2htb2QKZXhwb3J0cy5jbG9zZSA9IGNsb3NlCmV4cG9ydHMuY29weUZpbGUgPSBjb3B5RmlsZQpleHBvcnRzLmV4aXN0cyA9IGV4aXN0cwpleHBvcnRzLmZjaG1vZCA9IGZjaG1vZApleHBvcnRzLmZzdGF0ID0gZnN0YXQKZXhwb3J0cy5mdHJ1bmNhdGUgPSBmdHJ1bmNhdGUKZXhwb3J0cy5sc3RhdCA9IGxzdGF0CmV4cG9ydHMubWtkaXIgPSBta2RpcgpleHBvcnRzLm9wZW4gPSBvcGVuCmV4cG9ydHMub3BlbmRpciA9IG9wZW5kaXIKZXhwb3J0cy5yZWFkID0gcmVhZApleHBvcnRzLnJlYWRGaWxlID0gcmVhZEZpbGUKZXhwb3J0cy5yZWFkZGlyID0gcmVhZGRpcgpleHBvcnRzLnJlYWRsaW5rID0gcmVhZGxpbmsKZXhwb3J0cy5yZWFkdiA9IHJlYWR2CmV4cG9ydHMucmVhbHBhdGggPSByZWFscGF0aApleHBvcnRzLnJlbmFtZSA9IHJlbmFtZQpleHBvcnRzLnJtID0gcm0KZXhwb3J0cy5ybWRpciA9IHJtZGlyCmV4cG9ydHMuc3RhdCA9IHN0YXQKZXhwb3J0cy5zeW1saW5rID0gc3ltbGluawpleHBvcnRzLnVubGluayA9IHVubGluawpleHBvcnRzLndhdGNoID0gd2F0Y2gKZXhwb3J0cy53cml0ZSA9IHdyaXRlCmV4cG9ydHMud3JpdGVGaWxlID0gd3JpdGVGaWxlCmV4cG9ydHMud3JpdGV2ID0gd3JpdGV2CgpleHBvcnRzLmFjY2Vzc1N5bmMgPSBhY2Nlc3NTeW5jCmV4cG9ydHMuYXBwZW5kRmlsZVN5bmMgPSBhcHBlbmRGaWxlU3luYwpleHBvcnRzLmNobW9kU3luYyA9IGNobW9kU3luYwpleHBvcnRzLmNsb3NlU3luYyA9IGNsb3NlU3luYwpleHBvcnRzLmNvcHlGaWxlU3luYyA9IGNvcHlGaWxlU3luYwpleHBvcnRzLmV4aXN0c1N5bmMgPSBleGlzdHNTeW5jCmV4cG9ydHMuZmNobW9kU3luYyA9IGZjaG1vZFN5bmMKZXhwb3J0cy5mc3RhdFN5bmMgPSBmc3RhdFN5bmMKZXhwb3J0cy5mdHJ1bmNhdGVTeW5jID0gZnRydW5jYXRlU3luYwpleHBvcnRzLmxzdGF0U3luYyA9IGxzdGF0U3luYwpleHBvcnRzLm1rZGlyU3luYyA9IG1rZGlyU3luYwpleHBvcnRzLm9wZW5TeW5jID0gb3BlblN5bmMKZXhwb3J0cy5vcGVuZGlyU3luYyA9IG9wZW5kaXJTeW5jCmV4cG9ydHMucmVhZEZpbGVTeW5jID0gcmVhZEZpbGVTeW5jCmV4cG9ydHMucmVhZFN5bmMgPSByZWFkU3luYwpleHBvcnRzLnJlYWRkaXJTeW5jID0gcmVhZGRpclN5bmMKZXhwb3J0cy5yZWFkbGlua1N5bmMgPSByZWFkbGlua1N5bmMKZXhwb3J0cy5yZWFscGF0aFN5bmMgPSByZWFscGF0aFN5bmMKZXhwb3J0cy5yZW5hbWVTeW5jID0gcmVuYW1lU3luYwpleHBvcnRzLnJtU3luYyA9IHJtU3luYwpleHBvcnRzLnJtZGlyU3luYyA9IHJtZGlyU3luYwpleHBvcnRzLnN0YXRTeW5jID0gc3RhdFN5bmMKZXhwb3J0cy5zeW1saW5rU3luYyA9IHN5bWxpbmtTeW5jCmV4cG9ydHMudW5saW5rU3luYyA9IHVubGlua1N5bmMKZXhwb3J0cy53cml0ZUZpbGVTeW5jID0gd3JpdGVGaWxlU3luYwpleHBvcnRzLndyaXRlU3luYyA9IHdyaXRlU3luYwoKZXhwb3J0cy5wcm9taXNlcy5hY2Nlc3MgPSBwcm9taXNpZnkoYWNjZXNzKQpleHBvcnRzLnByb21pc2VzLmFwcGVuZEZpbGUgPSBwcm9taXNpZnkoYXBwZW5kRmlsZSkKZXhwb3J0cy5wcm9taXNlcy5jaG1vZCA9IHByb21pc2lmeShjaG1vZCkKZXhwb3J0cy5wcm9taXNlcy5jb3B5RmlsZSA9IHByb21pc2lmeShjb3B5RmlsZSkKZXhwb3J0cy5wcm9taXNlcy5sc3RhdCA9IHByb21pc2lmeShsc3RhdCkKZXhwb3J0cy5wcm9taXNlcy5ta2RpciA9IHByb21pc2lmeShta2RpcikKZXhwb3J0cy5wcm9taXNlcy5vcGVuZGlyID0gcHJvbWlzaWZ5KG9wZW5kaXIpCmV4cG9ydHMucHJvbWlzZXMucmVhZEZpbGUgPSBwcm9taXNpZnkocmVhZEZpbGUpCmV4cG9ydHMucHJvbWlzZXMucmVhZGRpciA9IHByb21pc2lmeShyZWFkZGlyKQpleHBvcnRzLnByb21pc2VzLnJlYWRsaW5rID0gcHJvbWlzaWZ5KHJlYWRsaW5rKQpleHBvcnRzLnByb21pc2VzLnJlYWxwYXRoID0gcHJvbWlzaWZ5KHJlYWxwYXRoKQpleHBvcnRzLnByb21pc2VzLnJlbmFtZSA9IHByb21pc2lmeShyZW5hbWUpCmV4cG9ydHMucHJvbWlzZXMucm0gPSBwcm9taXNpZnkocm0pCmV4cG9ydHMucHJvbWlzZXMucm1kaXIgPSBwcm9taXNpZnkocm1kaXIpCmV4cG9ydHMucHJvbWlzZXMuc3RhdCA9IHByb21pc2lmeShzdGF0KQpleHBvcnRzLnByb21pc2VzLnN5bWxpbmsgPSBwcm9taXNpZnkoc3ltbGluaykKZXhwb3J0cy5wcm9taXNlcy51bmxpbmsgPSBwcm9taXNpZnkodW5saW5rKQpleHBvcnRzLnByb21pc2VzLndyaXRlRmlsZSA9IHByb21pc2lmeSh3cml0ZUZpbGUpCgpleHBvcnRzLnByb21pc2VzLndhdGNoID0gd2F0Y2ggLy8gQWxyZWFkeSBhc3luYyBpdGVyYWJsZQoKZXhwb3J0cy5TdGF0cyA9IFN0YXRzCmV4cG9ydHMuRGlyID0gRGlyCmV4cG9ydHMuRGlyZW50ID0gRGlyZW50CmV4cG9ydHMuV2F0Y2hlciA9IFdhdGNoZXIKCmV4cG9ydHMuUmVhZFN0cmVhbSA9IEZpbGVSZWFkU3RyZWFtCmV4cG9ydHMuY3JlYXRlUmVhZFN0cmVhbSA9IGZ1bmN0aW9uIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCwgb3B0cykgewogIHJldHVybiBuZXcgRmlsZVJlYWRTdHJlYW0ocGF0aCwgb3B0cykKfQoKZXhwb3J0cy5Xcml0ZVN0cmVhbSA9IEZpbGVXcml0ZVN0cmVhbQpleHBvcnRzLmNyZWF0ZVdyaXRlU3RyZWFtID0gZnVuY3Rpb24gY3JlYXRlV3JpdGVTdHJlYW0ocGF0aCwgb3B0cykgewogIHJldHVybiBuZXcgRmlsZVdyaXRlU3RyZWFtKHBhdGgsIG9wdHMpCn0KCmZ1bmN0aW9uIHByb21pc2lmeShmbikgewogIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgZm4oLi4uYXJncywgZnVuY3Rpb24gKGVyciwgcmVzKSB7CiAgICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpCiAgICAgICAgcmVzb2x2ZShyZXMpCiAgICAgIH0pCiAgICB9KQogIH0KfQoKZnVuY3Rpb24gbWFwKGRhdGEpIHsKICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnID8gQnVmZmVyLmZyb20oZGF0YSkgOiBkYXRhCn0KY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4uL2JpbmRpbmcnKQoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgT19SRFdSOiBiaW5kaW5nLk9fUkRXUiwKICBPX1JET05MWTogYmluZGluZy5PX1JET05MWSwKICBPX1dST05MWTogYmluZGluZy5PX1dST05MWSwKICBPX0NSRUFUOiBiaW5kaW5nLk9fQ1JFQVQsCiAgT19UUlVOQzogYmluZGluZy5PX1RSVU5DLAogIE9fQVBQRU5EOiBiaW5kaW5nLk9fQVBQRU5ELAoKICBGX09LOiBiaW5kaW5nLkZfT0sgfHwgMCwKICBSX09LOiBiaW5kaW5nLlJfT0sgfHwgMCwKICBXX09LOiBiaW5kaW5nLldfT0sgfHwgMCwKICBYX09LOiBiaW5kaW5nLlhfT0sgfHwgMCwKCiAgU19JRk1UOiBiaW5kaW5nLlNfSUZNVCwKICBTX0lGUkVHOiBiaW5kaW5nLlNfSUZSRUcsCiAgU19JRkRJUjogYmluZGluZy5TX0lGRElSLAogIFNfSUZDSFI6IGJpbmRpbmcuU19JRkNIUiwKICBTX0lGTE5LOiBiaW5kaW5nLlNfSUZMTkssCiAgU19JRkJMSzogYmluZGluZy5TX0lGQkxLIHx8IDAsCiAgU19JRklGTzogYmluZGluZy5TX0lGSUZPIHx8IDAsCiAgU19JRlNPQ0s6IGJpbmRpbmcuU19JRlNPQ0sgfHwgMCwKCiAgU19JUlVTUjogYmluZGluZy5TX0lSVVNSIHx8IDAsCiAgU19JV1VTUjogYmluZGluZy5TX0lXVVNSIHx8IDAsCiAgU19JWFVTUjogYmluZGluZy5TX0lYVVNSIHx8IDAsCiAgU19JUkdSUDogYmluZGluZy5TX0lSR1JQIHx8IDAsCiAgU19JV0dSUDogYmluZGluZy5TX0lXR1JQIHx8IDAsCiAgU19JWEdSUDogYmluZGluZy5TX0lYR1JQIHx8IDAsCiAgU19JUk9USDogYmluZGluZy5TX0lST1RIIHx8IDAsCiAgU19JV09USDogYmluZGluZy5TX0lXT1RIIHx8IDAsCiAgU19JWE9USDogYmluZGluZy5TX0lYT1RIIHx8IDAsCgogIFVWX0RJUkVOVF9VTktOT1dOOiBiaW5kaW5nLlVWX0RJUkVOVF9VTktOT1dOLAogIFVWX0RJUkVOVF9GSUxFOiBiaW5kaW5nLlVWX0RJUkVOVF9GSUxFLAogIFVWX0RJUkVOVF9ESVI6IGJpbmRpbmcuVVZfRElSRU5UX0RJUiwKICBVVl9ESVJFTlRfTElOSzogYmluZGluZy5VVl9ESVJFTlRfTElOSywKICBVVl9ESVJFTlRfRklGTzogYmluZGluZy5VVl9ESVJFTlRfRklGTywKICBVVl9ESVJFTlRfU09DS0VUOiBiaW5kaW5nLlVWX0RJUkVOVF9TT0NLRVQsCiAgVVZfRElSRU5UX0NIQVI6IGJpbmRpbmcuVVZfRElSRU5UX0NIQVIsCiAgVVZfRElSRU5UX0JMT0NLOiBiaW5kaW5nLlVWX0RJUkVOVF9CTE9DSywKCiAgQ09QWUZJTEVfRVhDTDogYmluZGluZy5VVl9GU19DT1BZRklMRV9FWENMLAogIENPUFlGSUxFX0ZJQ0xPTkU6IGJpbmRpbmcuVVZfRlNfQ09QWUZJTEVfRklDTE9ORSwKICBDT1BZRklMRV9GSUNMT05FX0ZPUkNFOiBiaW5kaW5nLlVWX0ZTX0NPUFlGSUxFX0ZJQ0xPTkVfRk9SQ0UsCiAgVVZfRlNfU1lNTElOS19ESVI6IGJpbmRpbmcuVVZfRlNfU1lNTElOS19ESVIsCiAgVVZfRlNfU1lNTElOS19KVU5DVElPTjogYmluZGluZy5VVl9GU19TWU1MSU5LX0pVTkNUSU9OCn0KewogICJuYW1lIjogImJhcmUtZnMiLAogICJ2ZXJzaW9uIjogIjQuMS4yIiwKICAiZGVzY3JpcHRpb24iOiAiTmF0aXZlIGZpbGUgc3lzdGVtIGZvciBKYXZhc2NyaXB0IiwKICAiZXhwb3J0cyI6IHsKICAgICIuL3BhY2thZ2UiOiAiLi9wYWNrYWdlLmpzb24iLAogICAgIi4iOiB7CiAgICAgICJ0eXBlcyI6ICIuL2luZGV4LmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2luZGV4LmpzIgogICAgfSwKICAgICIuL3Byb21pc2VzIjogewogICAgICAidHlwZXMiOiAiLi9wcm9taXNlcy5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9wcm9taXNlcy5qcyIKICAgIH0sCiAgICAiLi9jb25zdGFudHMiOiB7CiAgICAgICJ0eXBlcyI6ICIuL2xpYi9jb25zdGFudHMuZC50cyIsCiAgICAgICJkZWZhdWx0IjogIi4vbGliL2NvbnN0YW50cy5qcyIKICAgIH0KICB9LAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIsCiAgICAiaW5kZXguZC50cyIsCiAgICAicHJvbWlzZXMuanMiLAogICAgInByb21pc2VzLmQudHMiLAogICAgImJpbmRpbmcuYyIsCiAgICAiYmluZGluZy5qcyIsCiAgICAiQ01ha2VMaXN0cy50eHQiLAogICAgImxpYiIsCiAgICAicHJlYnVpbGRzIgogIF0sCiAgImFkZG9uIjogdHJ1ZSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInByZXR0aWVyIC4gLS1jaGVjayAmJiBiYXJlIHRlc3QuanMiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1mcy5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLWZzL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1mcyNyZWFkbWUiLAogICJlbmdpbmVzIjogewogICAgImJhcmUiOiAiPj0xLjE2LjAiCiAgfSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtZXZlbnRzIjogIl4yLjUuNCIsCiAgICAiYmFyZS1wYXRoIjogIl4zLjAuMCIsCiAgICAiYmFyZS1zdHJlYW0iOiAiXjIuNi40IgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJiYXJlLWJ1ZmZlciI6ICJeMy4wLjIiLAogICAgImJyaXR0bGUiOiAiXjMuMS4xIiwKICAgICJjbWFrZS1iYXJlIjogIl4xLjEuNyIsCiAgICAicHJldHRpZXIiOiAiXjMuNC4xIiwKICAgICJwcmV0dGllci1jb25maWctc3RhbmRhcmQiOiAiXjcuMC4wIgogIH0sCiAgInBlZXJEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1idWZmZXIiOiAiKiIKICB9LAogICJwZWVyRGVwZW5kZW5jaWVzTWV0YSI6IHsKICAgICJiYXJlLWJ1ZmZlciI6IHsKICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgfQogIH0KfQptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oKQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi9iaW5kaW5nJykKCmNvbnN0IEVNUFRZID0gVWludDMyQXJyYXkub2YoMCwgMCkKCm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZ1bmN0aW9uIGhydGltZShwcmV2ID0gRU1QVFkpIHsKICBpZiAocHJldiBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ID09PSBmYWxzZSkgcHJldiA9IFVpbnQzMkFycmF5LmZyb20ocHJldikKCiAgaWYgKHByZXYubGVuZ3RoICE9PSAyKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1ByZXZpb3VzIHRpbWVzdGFtcCBtdXN0IGhhdmUgdHdvIGNvbXBvbmVudHMnKQogIH0KCiAgcmV0dXJuIGJpbmRpbmcuaHJ0aW1lKG5ldyBVaW50MzJBcnJheSgyKSwgcHJldikKfQoKZXhwb3J0cy5iaWdpbnQgPSBiaW5kaW5nLmhydGltZUJpZ2ludAp7CiAgIm5hbWUiOiAiYmFyZS1ocnRpbWUiLAogICJ2ZXJzaW9uIjogIjIuMC4xMSIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2gtcmVzb2x1dGlvbiB0aW1lcnMgZm9yIEphdmFTY3JpcHQiLAogICJleHBvcnRzIjogewogICAgIi4iOiB7CiAgICAgICJ0eXBlcyI6ICIuL2luZGV4LmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2luZGV4LmpzIgogICAgfSwKICAgICIuL3BhY2thZ2UiOiAiLi9wYWNrYWdlLmpzb24iCiAgfSwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgImluZGV4LmQudHMiLAogICAgImJpbmRpbmcuYyIsCiAgICAiYmluZGluZy5qcyIsCiAgICAiQ01ha2VMaXN0cy50eHQiLAogICAgInByZWJ1aWxkcyIKICBdLAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJwcmV0dGllciAuIC0tY2hlY2sgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtaHJ0aW1lLmdpdCIKICB9LAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtaHJ0aW1lL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1ocnRpbWUjcmVhZG1lIiwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuMi4xIiwKICAgICJjbWFrZS1iYXJlIjogIl4xLjEuNiIsCiAgICAicHJldHRpZXIiOiAiXjMuNC4yIiwKICAgICJwcmV0dGllci1jb25maWctc3RhbmRhcmQiOiAiXjcuMC4wIgogIH0KfQpjb25zdCB7IHNhdGlzZmllcyB9ID0gcmVxdWlyZSgnYmFyZS1zZW12ZXInKQpjb25zdCBlcnJvcnMgPSByZXF1aXJlKCcuL2xpYi9lcnJvcnMnKQoKbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZnVuY3Rpb24gcmVzb2x2ZSgKICBzcGVjaWZpZXIsCiAgcGFyZW50VVJMLAogIG9wdHMsCiAgcmVhZFBhY2thZ2UKKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICByZWFkUGFja2FnZSA9IG9wdHMKICAgIG9wdHMgPSB7fQogIH0gZWxzZSBpZiAodHlwZW9mIHJlYWRQYWNrYWdlICE9PSAnZnVuY3Rpb24nKSB7CiAgICByZWFkUGFja2FnZSA9IGRlZmF1bHRSZWFkUGFja2FnZQogIH0KCiAgcmV0dXJuIHsKICAgICpbU3ltYm9sLml0ZXJhdG9yXSgpIHsKICAgICAgY29uc3QgZ2VuZXJhdG9yID0gZXhwb3J0cy5tb2R1bGUoc3BlY2lmaWVyLCBwYXJlbnRVUkwsIG9wdHMpCgogICAgICBsZXQgbmV4dCA9IGdlbmVyYXRvci5uZXh0KCkKCiAgICAgIHdoaWxlIChuZXh0LmRvbmUgIT09IHRydWUpIHsKICAgICAgICBjb25zdCB2YWx1ZSA9IG5leHQudmFsdWUKCiAgICAgICAgaWYgKHZhbHVlLnBhY2thZ2UpIHsKICAgICAgICAgIG5leHQgPSBnZW5lcmF0b3IubmV4dChyZWFkUGFja2FnZSh2YWx1ZS5wYWNrYWdlKSkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbmV4dCA9IGdlbmVyYXRvci5uZXh0KHlpZWxkIHZhbHVlLnJlc29sdXRpb24pCiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gbmV4dC52YWx1ZQogICAgfSwKCiAgICBhc3luYyAqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHsKICAgICAgY29uc3QgZ2VuZXJhdG9yID0gZXhwb3J0cy5tb2R1bGUoc3BlY2lmaWVyLCBwYXJlbnRVUkwsIG9wdHMpCgogICAgICBsZXQgbmV4dCA9IGdlbmVyYXRvci5uZXh0KCkKCiAgICAgIHdoaWxlIChuZXh0LmRvbmUgIT09IHRydWUpIHsKICAgICAgICBjb25zdCB2YWx1ZSA9IG5leHQudmFsdWUKCiAgICAgICAgaWYgKHZhbHVlLnBhY2thZ2UpIHsKICAgICAgICAgIG5leHQgPSBnZW5lcmF0b3IubmV4dChhd2FpdCByZWFkUGFja2FnZSh2YWx1ZS5wYWNrYWdlKSkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbmV4dCA9IGdlbmVyYXRvci5uZXh0KHlpZWxkIHZhbHVlLnJlc29sdXRpb24pCiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gbmV4dC52YWx1ZQogICAgfQogIH0KfQoKZnVuY3Rpb24gZGVmYXVsdFJlYWRQYWNrYWdlKCkgewogIHJldHVybiBudWxsCn0KCi8vIE5vIHJlc29sdXRpb24gY2FuZGlkYXRlIHdhcyB5aWVsZGVkCmNvbnN0IFVOUkVTT0xWRUQgPSAweDAKLy8gQXQgbGVhc3QgMSByZXNvbHV0aW9uIGNhbmRpZGF0ZSB3YXMgeWllbGRlZApjb25zdCBZSUVMREVEID0gMHgxCi8vIEF0IGxlYXN0IDEgcmVzb2x1dGlvbiBjYW5kaWRhdGUgd2FzIHlpZWxkZWQgYW5kIHJlc29sdmVkCmNvbnN0IFJFU09MVkVEID0gWUlFTERFRCB8IDB4MgoKZXhwb3J0cy5jb25zdGFudHMgPSB7CiAgVU5SRVNPTFZFRCwKICBZSUVMREVELAogIFJFU09MVkVECn0KCmV4cG9ydHMubW9kdWxlID0gZnVuY3Rpb24qIChzcGVjaWZpZXIsIHBhcmVudFVSTCwgb3B0cyA9IHt9KSB7CiAgY29uc3QgeyByZXNvbHV0aW9ucyA9IG51bGwsIGltcG9ydHMgPSBudWxsIH0gPSBvcHRzCgogIGlmIChleHBvcnRzLnN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIoc3BlY2lmaWVyKSkgewogICAgc3BlY2lmaWVyID0gJy8nICsgc3BlY2lmaWVyCiAgfQoKICBsZXQgc3RhdHVzCgogIGlmIChyZXNvbHV0aW9ucykgewogICAgc3RhdHVzID0geWllbGQqIGV4cG9ydHMucHJlcmVzb2x2ZWQoc3BlY2lmaWVyLCByZXNvbHV0aW9ucywgcGFyZW50VVJMLCBvcHRzKQoKICAgIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKICB9CgogIHN0YXR1cyA9IHlpZWxkKiBleHBvcnRzLnVybChzcGVjaWZpZXIsIHBhcmVudFVSTCwgb3B0cykKCiAgaWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1cwoKICBzdGF0dXMgPSB5aWVsZCogZXhwb3J0cy5wYWNrYWdlSW1wb3J0cyhzcGVjaWZpZXIsIHBhcmVudFVSTCwgb3B0cykKCiAgaWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1cwoKICBpZiAoCiAgICBzcGVjaWZpZXIgPT09ICcuJyB8fAogICAgc3BlY2lmaWVyID09PSAnLi4nIHx8CiAgICBzcGVjaWZpZXJbMF0gPT09ICcvJyB8fAogICAgc3BlY2lmaWVyWzBdID09PSAnXFwnIHx8CiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLi8nKSB8fAogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy5cXCcpIHx8CiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLi4vJykgfHwKICAgIHNwZWNpZmllci5zdGFydHNXaXRoKCcuLlxcJykKICApIHsKICAgIGlmIChpbXBvcnRzKSB7CiAgICAgIHN0YXR1cyA9IHlpZWxkKiBleHBvcnRzLnBhY2thZ2VJbXBvcnRzRXhwb3J0cygKICAgICAgICBzcGVjaWZpZXIsCiAgICAgICAgaW1wb3J0cywKICAgICAgICBwYXJlbnRVUkwsCiAgICAgICAgdHJ1ZSwKICAgICAgICBvcHRzCiAgICAgICkKCiAgICAgIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKICAgIH0KCiAgICBzdGF0dXMgPSB5aWVsZCogZXhwb3J0cy5maWxlKHNwZWNpZmllciwgcGFyZW50VVJMLCBmYWxzZSwgb3B0cykKCiAgICBpZiAoc3RhdHVzID09PSBSRVNPTFZFRCkgcmV0dXJuIHN0YXR1cwoKICAgIHJldHVybiB5aWVsZCogZXhwb3J0cy5kaXJlY3Rvcnkoc3BlY2lmaWVyLCBwYXJlbnRVUkwsIG9wdHMpCiAgfQoKICByZXR1cm4geWllbGQqIGV4cG9ydHMucGFja2FnZShzcGVjaWZpZXIsIHBhcmVudFVSTCwgb3B0cykKfQoKZXhwb3J0cy51cmwgPSBmdW5jdGlvbiogKHVybCwgcGFyZW50VVJMLCBvcHRzID0ge30pIHsKICBjb25zdCB7IGltcG9ydHMgPSBudWxsIH0gPSBvcHRzCgogIGxldCByZXNvbHV0aW9uCiAgdHJ5IHsKICAgIHJlc29sdXRpb24gPSBuZXcgVVJMKHVybCkKICB9IGNhdGNoIHsKICAgIHJldHVybiBVTlJFU09MVkVECiAgfQoKICBpZiAoaW1wb3J0cykgewogICAgY29uc3Qgc3RhdHVzID0geWllbGQqIGV4cG9ydHMucGFja2FnZUltcG9ydHNFeHBvcnRzKAogICAgICByZXNvbHV0aW9uLmhyZWYsCiAgICAgIGltcG9ydHMsCiAgICAgIHBhcmVudFVSTCwKICAgICAgdHJ1ZSwKICAgICAgb3B0cwogICAgKQoKICAgIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKICB9CgogIGlmIChyZXNvbHV0aW9uLnByb3RvY29sID09PSAnbm9kZTonKSB7CiAgICBjb25zdCBzcGVjaWZpZXIgPSByZXNvbHV0aW9uLnBhdGhuYW1lCgogICAgaWYgKAogICAgICBzcGVjaWZpZXIgPT09ICcuJyB8fAogICAgICBzcGVjaWZpZXIgPT09ICcuLicgfHwKICAgICAgc3BlY2lmaWVyWzBdID09PSAnLycgfHwKICAgICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4vJykgfHwKICAgICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4uLycpCiAgICApIHsKICAgICAgdGhyb3cgZXJyb3JzLklOVkFMSURfTU9EVUxFX1NQRUNJRklFUigKICAgICAgICBgTW9kdWxlIHNwZWNpZmllciAnJHt1cmx9JyBpcyBub3QgYSB2YWxpZCBwYWNrYWdlIG5hbWVgCiAgICAgICkKICAgIH0KCiAgICByZXR1cm4geWllbGQqIGV4cG9ydHMucGFja2FnZShzcGVjaWZpZXIsIHBhcmVudFVSTCwgb3B0cykKICB9CgogIGNvbnN0IHJlc29sdmVkID0geWllbGQgeyByZXNvbHV0aW9uIH0KCiAgcmV0dXJuIHJlc29sdmVkID8gUkVTT0xWRUQgOiBZSUVMREVECn0KCmV4cG9ydHMucHJlcmVzb2x2ZWQgPSBmdW5jdGlvbiogKHNwZWNpZmllciwgcmVzb2x1dGlvbnMsIHBhcmVudFVSTCwgb3B0cyA9IHt9KSB7CiAgY29uc3QgaW1wb3J0cyA9IHJlc29sdXRpb25zW3BhcmVudFVSTC5ocmVmXQoKICBpZiAodHlwZW9mIGltcG9ydHMgPT09ICdvYmplY3QnICYmIGltcG9ydHMgIT09IG51bGwpIHsKICAgIHJldHVybiB5aWVsZCogZXhwb3J0cy5wYWNrYWdlSW1wb3J0c0V4cG9ydHMoCiAgICAgIHNwZWNpZmllciwKICAgICAgaW1wb3J0cywKICAgICAgcGFyZW50VVJMLAogICAgICB0cnVlLAogICAgICBvcHRzCiAgICApCiAgfQoKICByZXR1cm4gVU5SRVNPTFZFRAp9CgpleHBvcnRzLnBhY2thZ2UgPSBmdW5jdGlvbiogKHBhY2thZ2VTcGVjaWZpZXIsIHBhcmVudFVSTCwgb3B0cyA9IHt9KSB7CiAgY29uc3QgeyBidWlsdGlucyA9IFtdIH0gPSBvcHRzCgogIGlmIChwYWNrYWdlU3BlY2lmaWVyID09PSAnJykgewogICAgdGhyb3cgZXJyb3JzLklOVkFMSURfTU9EVUxFX1NQRUNJRklFUigKICAgICAgYE1vZHVsZSBzcGVjaWZpZXIgJyR7cGFja2FnZVNwZWNpZmllcn0nIGlzIG5vdCBhIHZhbGlkIHBhY2thZ2UgbmFtZWAKICAgICkKICB9CgogIGxldCBwYWNrYWdlTmFtZQoKICBpZiAocGFja2FnZVNwZWNpZmllclswXSAhPT0gJ0AnKSB7CiAgICBwYWNrYWdlTmFtZSA9IHBhY2thZ2VTcGVjaWZpZXIuc3BsaXQoJy8nLCAxKS5qb2luKCkKICB9IGVsc2UgewogICAgaWYgKCFwYWNrYWdlU3BlY2lmaWVyLmluY2x1ZGVzKCcvJykpIHsKICAgICAgdGhyb3cgZXJyb3JzLklOVkFMSURfTU9EVUxFX1NQRUNJRklFUigKICAgICAgICBgTW9kdWxlIHNwZWNpZmllciAnJHtwYWNrYWdlU3BlY2lmaWVyfScgaXMgbm90IGEgdmFsaWQgcGFja2FnZSBuYW1lYAogICAgICApCiAgICB9CgogICAgcGFja2FnZU5hbWUgPSBwYWNrYWdlU3BlY2lmaWVyLnNwbGl0KCcvJywgMikuam9pbignLycpCiAgfQoKICBpZiAoCiAgICBwYWNrYWdlTmFtZVswXSA9PT0gJy4nIHx8CiAgICBwYWNrYWdlTmFtZS5pbmNsdWRlcygnXFwnKSB8fAogICAgcGFja2FnZU5hbWUuaW5jbHVkZXMoJyUnKQogICkgewogICAgdGhyb3cgZXJyb3JzLklOVkFMSURfTU9EVUxFX1NQRUNJRklFUigKICAgICAgYE1vZHVsZSBzcGVjaWZpZXIgJyR7cGFja2FnZVNwZWNpZmllcn0nIGlzIG5vdCBhIHZhbGlkIHBhY2thZ2UgbmFtZWAKICAgICkKICB9CgogIGxldCBzdGF0dXMKCiAgc3RhdHVzID0geWllbGQqIGV4cG9ydHMuYnVpbHRpblRhcmdldChwYWNrYWdlU3BlY2lmaWVyLCBudWxsLCBidWlsdGlucywgb3B0cykKCiAgaWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1cwoKICBsZXQgcGFja2FnZVN1YnBhdGggPSAnLicgKyBwYWNrYWdlU3BlY2lmaWVyLnN1YnN0cmluZyhwYWNrYWdlTmFtZS5sZW5ndGgpCgogIHN0YXR1cyA9IHlpZWxkKiBleHBvcnRzLnBhY2thZ2VTZWxmKAogICAgcGFja2FnZU5hbWUsCiAgICBwYWNrYWdlU3VicGF0aCwKICAgIHBhcmVudFVSTCwKICAgIG9wdHMKICApCgogIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKCiAgcGFyZW50VVJMID0gbmV3IFVSTChwYXJlbnRVUkwuaHJlZikKCiAgZG8gewogICAgY29uc3QgcGFja2FnZVVSTCA9IG5ldyBVUkwoJ25vZGVfbW9kdWxlcy8nICsgcGFja2FnZU5hbWUgKyAnLycsIHBhcmVudFVSTCkKCiAgICBwYXJlbnRVUkwucGF0aG5hbWUgPSBwYXJlbnRVUkwucGF0aG5hbWUuc3Vic3RyaW5nKAogICAgICAwLAogICAgICBwYXJlbnRVUkwucGF0aG5hbWUubGFzdEluZGV4T2YoJy8nKQogICAgKQoKICAgIGNvbnN0IGluZm8gPSB5aWVsZCB7IHBhY2thZ2U6IG5ldyBVUkwoJ3BhY2thZ2UuanNvbicsIHBhY2thZ2VVUkwpIH0KCiAgICBpZiAoaW5mbykgewogICAgICBpZiAoaW5mby5lbmdpbmVzKSBleHBvcnRzLnZhbGlkYXRlRW5naW5lcyhwYWNrYWdlVVJMLCBpbmZvLmVuZ2luZXMsIG9wdHMpCgogICAgICBpZiAoaW5mby5leHBvcnRzKSB7CiAgICAgICAgcmV0dXJuIHlpZWxkKiBleHBvcnRzLnBhY2thZ2VFeHBvcnRzKAogICAgICAgICAgcGFja2FnZVVSTCwKICAgICAgICAgIHBhY2thZ2VTdWJwYXRoLAogICAgICAgICAgaW5mby5leHBvcnRzLAogICAgICAgICAgb3B0cwogICAgICAgICkKICAgICAgfQoKICAgICAgaWYgKHBhY2thZ2VTdWJwYXRoID09PSAnLicpIHsKICAgICAgICBpZiAodHlwZW9mIGluZm8ubWFpbiA9PT0gJ3N0cmluZycgJiYgaW5mby5tYWluICE9PSAnJykgewogICAgICAgICAgcGFja2FnZVN1YnBhdGggPSBpbmZvLm1haW4KICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIHlpZWxkKiBleHBvcnRzLmZpbGUoJ2luZGV4JywgcGFja2FnZVVSTCwgdHJ1ZSwgb3B0cykKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHN0YXR1cyA9IHlpZWxkKiBleHBvcnRzLmZpbGUocGFja2FnZVN1YnBhdGgsIHBhY2thZ2VVUkwsIGZhbHNlLCBvcHRzKQoKICAgICAgaWYgKHN0YXR1cyA9PT0gUkVTT0xWRUQpIHJldHVybiBzdGF0dXMKCiAgICAgIHJldHVybiB5aWVsZCogZXhwb3J0cy5kaXJlY3RvcnkocGFja2FnZVN1YnBhdGgsIHBhY2thZ2VVUkwsIG9wdHMpCiAgICB9CiAgfSB3aGlsZSAocGFyZW50VVJMLnBhdGhuYW1lICE9PSAnJyAmJiBwYXJlbnRVUkwucGF0aG5hbWUgIT09ICcvJykKCiAgcmV0dXJuIFVOUkVTT0xWRUQKfQoKZXhwb3J0cy5wYWNrYWdlU2VsZiA9IGZ1bmN0aW9uKiAoCiAgcGFja2FnZU5hbWUsCiAgcGFja2FnZVN1YnBhdGgsCiAgcGFyZW50VVJMLAogIG9wdHMgPSB7fQopIHsKICBmb3IgKGNvbnN0IHBhY2thZ2VVUkwgb2YgZXhwb3J0cy5sb29rdXBQYWNrYWdlU2NvcGUocGFyZW50VVJMLCBvcHRzKSkgewogICAgY29uc3QgaW5mbyA9IHlpZWxkIHsgcGFja2FnZTogcGFja2FnZVVSTCB9CgogICAgaWYgKGluZm8pIHsKICAgICAgaWYgKGluZm8ubmFtZSAhPT0gcGFja2FnZU5hbWUpIHJldHVybiBmYWxzZQoKICAgICAgaWYgKGluZm8uZXhwb3J0cykgewogICAgICAgIHJldHVybiB5aWVsZCogZXhwb3J0cy5wYWNrYWdlRXhwb3J0cygKICAgICAgICAgIHBhY2thZ2VVUkwsCiAgICAgICAgICBwYWNrYWdlU3VicGF0aCwKICAgICAgICAgIGluZm8uZXhwb3J0cywKICAgICAgICAgIG9wdHMKICAgICAgICApCiAgICAgIH0KCiAgICAgIGlmIChwYWNrYWdlU3VicGF0aCA9PT0gJy4nKSB7CiAgICAgICAgaWYgKHR5cGVvZiBpbmZvLm1haW4gPT09ICdzdHJpbmcnICYmIGluZm8ubWFpbiAhPT0gJycpIHsKICAgICAgICAgIHBhY2thZ2VTdWJwYXRoID0gaW5mby5tYWluCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiB5aWVsZCogZXhwb3J0cy5maWxlKCdpbmRleCcsIHBhY2thZ2VVUkwsIHRydWUsIG9wdHMpCiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBzdGF0dXMgPSB5aWVsZCogZXhwb3J0cy5maWxlKAogICAgICAgIHBhY2thZ2VTdWJwYXRoLAogICAgICAgIHBhY2thZ2VVUkwsCiAgICAgICAgZmFsc2UsCiAgICAgICAgb3B0cwogICAgICApCgogICAgICBpZiAoc3RhdHVzID09PSBSRVNPTFZFRCkgcmV0dXJuIHN0YXR1cwoKICAgICAgcmV0dXJuIHlpZWxkKiBleHBvcnRzLmRpcmVjdG9yeShwYWNrYWdlU3VicGF0aCwgcGFja2FnZVVSTCwgb3B0cykKICAgIH0KICB9CgogIHJldHVybiBVTlJFU09MVkVECn0KCmV4cG9ydHMucGFja2FnZUV4cG9ydHMgPSBmdW5jdGlvbiogKAogIHBhY2thZ2VVUkwsCiAgc3VicGF0aCwKICBwYWNrYWdlRXhwb3J0cywKICBvcHRzID0ge30KKSB7CiAgaWYgKHN1YnBhdGggPT09ICcuJykgewogICAgbGV0IG1haW5FeHBvcnQKCiAgICBpZiAodHlwZW9mIHBhY2thZ2VFeHBvcnRzID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KHBhY2thZ2VFeHBvcnRzKSkgewogICAgICBtYWluRXhwb3J0ID0gcGFja2FnZUV4cG9ydHMKICAgIH0gZWxzZSBpZiAodHlwZW9mIHBhY2thZ2VFeHBvcnRzID09PSAnb2JqZWN0JyAmJiBwYWNrYWdlRXhwb3J0cyAhPT0gbnVsbCkgewogICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFja2FnZUV4cG9ydHMpCgogICAgICBpZiAoa2V5cy5zb21lKChrZXkpID0+IGtleS5zdGFydHNXaXRoKCcuJykpKSB7CiAgICAgICAgaWYgKCcuJyBpbiBwYWNrYWdlRXhwb3J0cykgbWFpbkV4cG9ydCA9IHBhY2thZ2VFeHBvcnRzWycuJ10KICAgICAgfSBlbHNlIHsKICAgICAgICBtYWluRXhwb3J0ID0gcGFja2FnZUV4cG9ydHMKICAgICAgfQogICAgfQoKICAgIGlmIChtYWluRXhwb3J0KSB7CiAgICAgIGNvbnN0IHN0YXR1cyA9IHlpZWxkKiBleHBvcnRzLnBhY2thZ2VUYXJnZXQoCiAgICAgICAgcGFja2FnZVVSTCwKICAgICAgICBtYWluRXhwb3J0LAogICAgICAgIG51bGwsCiAgICAgICAgZmFsc2UsCiAgICAgICAgb3B0cwogICAgICApCgogICAgICBpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzCiAgICB9CiAgfSBlbHNlIGlmICh0eXBlb2YgcGFja2FnZUV4cG9ydHMgPT09ICdvYmplY3QnICYmIHBhY2thZ2VFeHBvcnRzICE9PSBudWxsKSB7CiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFja2FnZUV4cG9ydHMpCgogICAgaWYgKGtleXMuZXZlcnkoKGtleSkgPT4ga2V5LnN0YXJ0c1dpdGgoJy4nKSkpIHsKICAgICAgY29uc3Qgc3RhdHVzID0geWllbGQqIGV4cG9ydHMucGFja2FnZUltcG9ydHNFeHBvcnRzKAogICAgICAgIHN1YnBhdGgsCiAgICAgICAgcGFja2FnZUV4cG9ydHMsCiAgICAgICAgcGFja2FnZVVSTCwKICAgICAgICBmYWxzZSwKICAgICAgICBvcHRzCiAgICAgICkKCiAgICAgIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKICAgIH0KICB9CgogIHBhY2thZ2VVUkwgPSBuZXcgVVJMKCdwYWNrYWdlLmpzb24nLCBwYWNrYWdlVVJMKQoKICB0aHJvdyBlcnJvcnMuUEFDS0FHRV9QQVRIX05PVF9FWFBPUlRFRCgKICAgIGBQYWNrYWdlIHN1YnBhdGggJyR7c3VicGF0aH0nIGlzIG5vdCBkZWZpbmVkIGJ5ICJleHBvcnRzIiBpbiAnJHtwYWNrYWdlVVJMfSdgCiAgKQp9CgpleHBvcnRzLnBhY2thZ2VJbXBvcnRzID0gZnVuY3Rpb24qIChzcGVjaWZpZXIsIHBhcmVudFVSTCwgb3B0cyA9IHt9KSB7CiAgY29uc3QgeyBpbXBvcnRzID0gbnVsbCB9ID0gb3B0cwoKICBpZiAoc3BlY2lmaWVyID09PSAnIycgfHwgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJyMvJykpIHsKICAgIHRocm93IGVycm9ycy5JTlZBTElEX01PRFVMRV9TUEVDSUZJRVIoCiAgICAgIGBNb2R1bGUgc3BlY2lmaWVyICcke3NwZWNpZmllcn0nIGlzIG5vdCBhIHZhbGlkIGludGVybmFsIGltcG9ydHMgc3BlY2lmaWVyYAogICAgKQogIH0KCiAgZm9yIChjb25zdCBwYWNrYWdlVVJMIG9mIGV4cG9ydHMubG9va3VwUGFja2FnZVNjb3BlKHBhcmVudFVSTCwgb3B0cykpIHsKICAgIGNvbnN0IGluZm8gPSB5aWVsZCB7IHBhY2thZ2U6IHBhY2thZ2VVUkwgfQoKICAgIGlmIChpbmZvKSB7CiAgICAgIGlmIChpbmZvLmltcG9ydHMpIHsKICAgICAgICBjb25zdCBzdGF0dXMgPSB5aWVsZCogZXhwb3J0cy5wYWNrYWdlSW1wb3J0c0V4cG9ydHMoCiAgICAgICAgICBzcGVjaWZpZXIsCiAgICAgICAgICBpbmZvLmltcG9ydHMsCiAgICAgICAgICBwYWNrYWdlVVJMLAogICAgICAgICAgdHJ1ZSwKICAgICAgICAgIG9wdHMKICAgICAgICApCgogICAgICAgIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKICAgICAgfQoKICAgICAgaWYgKHNwZWNpZmllci5zdGFydHNXaXRoKCcjJykpIHsKICAgICAgICB0aHJvdyBlcnJvcnMuUEFDS0FHRV9JTVBPUlRfTk9UX0RFRklORUQoCiAgICAgICAgICBgUGFja2FnZSBpbXBvcnQgc3BlY2lmaWVyICcke3NwZWNpZmllcn0nIGlzIG5vdCBkZWZpbmVkIGJ5ICJpbXBvcnRzIiBpbiAnJHtwYWNrYWdlVVJMfSdgCiAgICAgICAgKQogICAgICB9CgogICAgICBicmVhawogICAgfQogIH0KCiAgaWYgKGltcG9ydHMpIHsKICAgIGNvbnN0IHN0YXR1cyA9IHlpZWxkKiBleHBvcnRzLnBhY2thZ2VJbXBvcnRzRXhwb3J0cygKICAgICAgc3BlY2lmaWVyLAogICAgICBpbXBvcnRzLAogICAgICBwYXJlbnRVUkwsCiAgICAgIHRydWUsCiAgICAgIG9wdHMKICAgICkKCiAgICBpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzCiAgfQoKICByZXR1cm4gVU5SRVNPTFZFRAp9CgpleHBvcnRzLnBhY2thZ2VJbXBvcnRzRXhwb3J0cyA9IGZ1bmN0aW9uKiAoCiAgbWF0Y2hLZXksCiAgbWF0Y2hPYmplY3QsCiAgcGFja2FnZVVSTCwKICBpc0ltcG9ydHMsCiAgb3B0cyA9IHt9CikgewogIGlmIChtYXRjaEtleSBpbiBtYXRjaE9iamVjdCAmJiAhbWF0Y2hLZXkuaW5jbHVkZXMoJyonKSkgewogICAgY29uc3QgdGFyZ2V0ID0gbWF0Y2hPYmplY3RbbWF0Y2hLZXldCgogICAgcmV0dXJuIHlpZWxkKiBleHBvcnRzLnBhY2thZ2VUYXJnZXQoCiAgICAgIHBhY2thZ2VVUkwsCiAgICAgIHRhcmdldCwKICAgICAgbnVsbCwKICAgICAgaXNJbXBvcnRzLAogICAgICBvcHRzCiAgICApCiAgfQoKICBjb25zdCBleHBhbnNpb25LZXlzID0gT2JqZWN0LmtleXMobWF0Y2hPYmplY3QpCiAgICAuZmlsdGVyKChrZXkpID0+IGtleS5pbmNsdWRlcygnKicpKQogICAgLnNvcnQoZXhwb3J0cy5wYXR0ZXJuS2V5Q29tcGFyZSkKCiAgZm9yIChjb25zdCBleHBhbnNpb25LZXkgb2YgZXhwYW5zaW9uS2V5cykgewogICAgY29uc3QgcGF0dGVybkluZGV4ID0gZXhwYW5zaW9uS2V5LmluZGV4T2YoJyonKQogICAgY29uc3QgcGF0dGVybkJhc2UgPSBleHBhbnNpb25LZXkuc3Vic3RyaW5nKDAsIHBhdHRlcm5JbmRleCkKCiAgICBpZiAobWF0Y2hLZXkuc3RhcnRzV2l0aChwYXR0ZXJuQmFzZSkgJiYgbWF0Y2hLZXkgIT09IHBhdHRlcm5CYXNlKSB7CiAgICAgIGNvbnN0IHBhdHRlcm5UcmFpbGVyID0gZXhwYW5zaW9uS2V5LnN1YnN0cmluZyhwYXR0ZXJuSW5kZXggKyAxKQoKICAgICAgaWYgKAogICAgICAgIHBhdHRlcm5UcmFpbGVyID09PSAnJyB8fAogICAgICAgIChtYXRjaEtleS5lbmRzV2l0aChwYXR0ZXJuVHJhaWxlcikgJiYKICAgICAgICAgIG1hdGNoS2V5Lmxlbmd0aCA+PSBleHBhbnNpb25LZXkubGVuZ3RoKQogICAgICApIHsKICAgICAgICBjb25zdCB0YXJnZXQgPSBtYXRjaE9iamVjdFtleHBhbnNpb25LZXldCgogICAgICAgIGNvbnN0IHBhdHRlcm5NYXRjaCA9IG1hdGNoS2V5LnN1YnN0cmluZygKICAgICAgICAgIHBhdHRlcm5CYXNlLmxlbmd0aCwKICAgICAgICAgIG1hdGNoS2V5Lmxlbmd0aCAtIHBhdHRlcm5UcmFpbGVyLmxlbmd0aAogICAgICAgICkKCiAgICAgICAgcmV0dXJuIHlpZWxkKiBleHBvcnRzLnBhY2thZ2VUYXJnZXQoCiAgICAgICAgICBwYWNrYWdlVVJMLAogICAgICAgICAgdGFyZ2V0LAogICAgICAgICAgcGF0dGVybk1hdGNoLAogICAgICAgICAgaXNJbXBvcnRzLAogICAgICAgICAgb3B0cwogICAgICAgICkKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIFVOUkVTT0xWRUQKfQoKZXhwb3J0cy52YWxpZGF0ZUVuZ2luZXMgPSBmdW5jdGlvbiB2YWxpZGF0ZUVuZ2luZXMoCiAgcGFja2FnZVVSTCwKICBwYWNrYWdlRW5naW5lcywKICBvcHRzID0ge30KKSB7CiAgY29uc3QgeyBlbmdpbmVzID0ge30gfSA9IG9wdHMKCiAgZm9yIChjb25zdCBbZW5naW5lLCByYW5nZV0gb2YgT2JqZWN0LmVudHJpZXMocGFja2FnZUVuZ2luZXMpKSB7CiAgICBpZiAoZW5naW5lIGluIGVuZ2luZXMpIHsKICAgICAgY29uc3QgdmVyc2lvbiA9IGVuZ2luZXNbZW5naW5lXQoKICAgICAgaWYgKCFzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UpKSB7CiAgICAgICAgcGFja2FnZVVSTCA9IG5ldyBVUkwoJ3BhY2thZ2UuanNvbicsIHBhY2thZ2VVUkwpCgogICAgICAgIHRocm93IGVycm9ycy5VTlNVUFBPUlRFRF9FTkdJTkUoCiAgICAgICAgICBgUGFja2FnZSBub3QgY29tcGF0aWJsZSB3aXRoIGVuZ2luZSAnJHtlbmdpbmV9JyAke3ZlcnNpb259LCByZXF1aXJlcyByYW5nZSAnJHtyYW5nZX0nIGRlZmluZWQgYnkgImVuZ2luZXMiIGluICcke3BhY2thZ2VVUkx9J2AKICAgICAgICApCiAgICAgIH0KICAgIH0KICB9Cn0KCmV4cG9ydHMucGF0dGVybktleUNvbXBhcmUgPSBmdW5jdGlvbiBwYXR0ZXJuS2V5Q29tcGFyZShrZXlBLCBrZXlCKSB7CiAgY29uc3QgcGF0dGVybkluZGV4QSA9IGtleUEuaW5kZXhPZignKicpCiAgY29uc3QgcGF0dGVybkluZGV4QiA9IGtleUIuaW5kZXhPZignKicpCiAgY29uc3QgYmFzZUxlbmd0aEEgPSBwYXR0ZXJuSW5kZXhBID09PSAtMSA/IGtleUEubGVuZ3RoIDogcGF0dGVybkluZGV4QSArIDEKICBjb25zdCBiYXNlTGVuZ3RoQiA9IHBhdHRlcm5JbmRleEIgPT09IC0xID8ga2V5Qi5sZW5ndGggOiBwYXR0ZXJuSW5kZXhCICsgMQogIGlmIChiYXNlTGVuZ3RoQSA+IGJhc2VMZW5ndGhCKSByZXR1cm4gLTEKICBpZiAoYmFzZUxlbmd0aEIgPiBiYXNlTGVuZ3RoQSkgcmV0dXJuIDEKICBpZiAocGF0dGVybkluZGV4QSA9PT0gLTEpIHJldHVybiAxCiAgaWYgKHBhdHRlcm5JbmRleEIgPT09IC0xKSByZXR1cm4gLTEKICBpZiAoa2V5QS5sZW5ndGggPiBrZXlCLmxlbmd0aCkgcmV0dXJuIC0xCiAgaWYgKGtleUIubGVuZ3RoID4ga2V5QS5sZW5ndGgpIHJldHVybiAxCiAgcmV0dXJuIDAKfQoKZXhwb3J0cy5wYWNrYWdlVGFyZ2V0ID0gZnVuY3Rpb24qICgKICBwYWNrYWdlVVJMLAogIHRhcmdldCwKICBwYXR0ZXJuTWF0Y2gsCiAgaXNJbXBvcnRzLAogIG9wdHMgPSB7fQopIHsKICBjb25zdCB7IGNvbmRpdGlvbnMgPSBbXSwgbWF0Y2hlZENvbmRpdGlvbnMgPSBbXSB9ID0gb3B0cwoKICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycpIHsKICAgIGlmICghdGFyZ2V0LnN0YXJ0c1dpdGgoJy4vJykgJiYgIWlzSW1wb3J0cykgewogICAgICBwYWNrYWdlVVJMID0gbmV3IFVSTCgncGFja2FnZS5qc29uJywgcGFja2FnZVVSTCkKCiAgICAgIHRocm93IGVycm9ycy5JTlZBTElEX1BBQ0tBR0VfVEFSR0VUKAogICAgICAgIGBJbnZhbGlkIHRhcmdldCAnJHt0YXJnZXR9JyBkZWZpbmVkIGJ5ICJleHBvcnRzIiBpbiAnJHtwYWNrYWdlVVJMfSdgCiAgICAgICkKICAgIH0KCiAgICBpZiAocGF0dGVybk1hdGNoICE9PSBudWxsKSB7CiAgICAgIHRhcmdldCA9IHRhcmdldC5yZXBsYWNlQWxsKCcqJywgcGF0dGVybk1hdGNoKQogICAgfQoKICAgIGNvbnN0IHN0YXR1cyA9IHlpZWxkKiBleHBvcnRzLnVybCh0YXJnZXQsIHBhY2thZ2VVUkwsIG9wdHMpCgogICAgaWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1cwoKICAgIGlmICgKICAgICAgdGFyZ2V0ID09PSAnLicgfHwKICAgICAgdGFyZ2V0ID09PSAnLi4nIHx8CiAgICAgIHRhcmdldFswXSA9PT0gJy8nIHx8CiAgICAgIHRhcmdldC5zdGFydHNXaXRoKCcuLycpIHx8CiAgICAgIHRhcmdldC5zdGFydHNXaXRoKCcuLi8nKQogICAgKSB7CiAgICAgIGNvbnN0IHJlc29sdmVkID0geWllbGQgeyByZXNvbHV0aW9uOiBuZXcgVVJMKHRhcmdldCwgcGFja2FnZVVSTCkgfQoKICAgICAgcmV0dXJuIHJlc29sdmVkID8gUkVTT0xWRUQgOiBZSUVMREVECiAgICB9CgogICAgcmV0dXJuIHlpZWxkKiBleHBvcnRzLnBhY2thZ2UodGFyZ2V0LCBwYWNrYWdlVVJMLCBvcHRzKQogIH0KCiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkgewogICAgZm9yIChjb25zdCB0YXJnZXRWYWx1ZSBvZiB0YXJnZXQpIHsKICAgICAgY29uc3Qgc3RhdHVzID0geWllbGQqIGV4cG9ydHMucGFja2FnZVRhcmdldCgKICAgICAgICBwYWNrYWdlVVJMLAogICAgICAgIHRhcmdldFZhbHVlLAogICAgICAgIHBhdHRlcm5NYXRjaCwKICAgICAgICBpc0ltcG9ydHMsCiAgICAgICAgb3B0cwogICAgICApCgogICAgICBpZiAoc3RhdHVzKSByZXR1cm4gc3RhdHVzCiAgICB9CiAgfSBlbHNlIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiB0YXJnZXQgIT09IG51bGwpIHsKICAgIGxldCBzdGF0dXMgPSBVTlJFU09MVkVECgogICAgZm9yIChjb25zdCBbY29uZGl0aW9uLCB0YXJnZXRWYWx1ZSwgc3Vic2V0XSBvZiBleHBvcnRzLmNvbmRpdGlvbk1hdGNoZXMoCiAgICAgIHRhcmdldCwKICAgICAgY29uZGl0aW9ucywKICAgICAgb3B0cwogICAgKSkgewogICAgICBtYXRjaGVkQ29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbikKCiAgICAgIHN0YXR1cyB8PSB5aWVsZCogZXhwb3J0cy5wYWNrYWdlVGFyZ2V0KAogICAgICAgIHBhY2thZ2VVUkwsCiAgICAgICAgdGFyZ2V0VmFsdWUsCiAgICAgICAgcGF0dGVybk1hdGNoLAogICAgICAgIGlzSW1wb3J0cywKICAgICAgICB7IC4uLm9wdHMsIGNvbmRpdGlvbnM6IHN1YnNldCB9CiAgICAgICkKCiAgICAgIG1hdGNoZWRDb25kaXRpb25zLnBvcCgpCiAgICB9CgogICAgaWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1cwogIH0KCiAgcmV0dXJuIFVOUkVTT0xWRUQKfQoKZXhwb3J0cy5idWlsdGluVGFyZ2V0ID0gZnVuY3Rpb24qICgKICBwYWNrYWdlU3BlY2lmaWVyLAogIHBhY2thZ2VWZXJzaW9uLAogIHRhcmdldCwKICBvcHRzID0ge30KKSB7CiAgY29uc3QgewogICAgYnVpbHRpblByb3RvY29sID0gJ2J1aWx0aW46JywKICAgIGNvbmRpdGlvbnMgPSBbXSwKICAgIG1hdGNoZWRDb25kaXRpb25zID0gW10KICB9ID0gb3B0cwoKICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycpIHsKICAgIGNvbnN0IHRhcmdldFBhcnRzID0gdGFyZ2V0LnNwbGl0KCdAJykKCiAgICBsZXQgdGFyZ2V0TmFtZQogICAgbGV0IHRhcmdldFZlcnNpb24KCiAgICBpZiAodGFyZ2V0WzBdICE9PSAnQCcpIHsKICAgICAgdGFyZ2V0TmFtZSA9IHRhcmdldFBhcnRzWzBdCiAgICAgIHRhcmdldFZlcnNpb24gPSB0YXJnZXRQYXJ0c1sxXSB8fCBudWxsCiAgICB9IGVsc2UgewogICAgICB0YXJnZXROYW1lID0gdGFyZ2V0UGFydHMuc2xpY2UoMCwgMikuam9pbignQCcpCiAgICAgIHRhcmdldFZlcnNpb24gPSB0YXJnZXRQYXJ0c1syXSB8fCBudWxsCiAgICB9CgogICAgaWYgKHBhY2thZ2VTcGVjaWZpZXIgPT09IHRhcmdldE5hbWUpIHsKICAgICAgaWYgKHBhY2thZ2VWZXJzaW9uID09PSBudWxsICYmIHRhcmdldFZlcnNpb24gPT09IG51bGwpIHsKICAgICAgICBjb25zdCByZXNvbHZlZCA9IHlpZWxkIHsKICAgICAgICAgIHJlc29sdXRpb246IG5ldyBVUkwoYnVpbHRpblByb3RvY29sICsgcGFja2FnZVNwZWNpZmllcikKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXNvbHZlZCA/IFJFU09MVkVEIDogWUlFTERFRAogICAgICB9CgogICAgICBsZXQgdmVyc2lvbiA9IG51bGwKCiAgICAgIGlmIChwYWNrYWdlVmVyc2lvbiA9PT0gbnVsbCkgewogICAgICAgIHZlcnNpb24gPSB0YXJnZXRWZXJzaW9uCiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0VmVyc2lvbiA9PT0gbnVsbCB8fCBwYWNrYWdlVmVyc2lvbiA9PT0gdGFyZ2V0VmVyc2lvbikgewogICAgICAgIHZlcnNpb24gPSBwYWNrYWdlVmVyc2lvbgogICAgICB9CgogICAgICBpZiAodmVyc2lvbiAhPT0gbnVsbCkgewogICAgICAgIGNvbnN0IHJlc29sdmVkID0geWllbGQgewogICAgICAgICAgcmVzb2x1dGlvbjogbmV3IFVSTCgKICAgICAgICAgICAgYnVpbHRpblByb3RvY29sICsgcGFja2FnZVNwZWNpZmllciArICdAJyArIHZlcnNpb24KICAgICAgICAgICkKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXNvbHZlZCA/IFJFU09MVkVEIDogWUlFTERFRAogICAgICB9CiAgICB9CiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHsKICAgIGZvciAoY29uc3QgdGFyZ2V0VmFsdWUgb2YgdGFyZ2V0KSB7CiAgICAgIGNvbnN0IHN0YXR1cyA9IHlpZWxkKiBleHBvcnRzLmJ1aWx0aW5UYXJnZXQoCiAgICAgICAgcGFja2FnZVNwZWNpZmllciwKICAgICAgICBwYWNrYWdlVmVyc2lvbiwKICAgICAgICB0YXJnZXRWYWx1ZSwKICAgICAgICBvcHRzCiAgICAgICkKCiAgICAgIGlmIChzdGF0dXMpIHJldHVybiBzdGF0dXMKICAgIH0KICB9IGVsc2UgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCAhPT0gbnVsbCkgewogICAgbGV0IHN0YXR1cyA9IFVOUkVTT0xWRUQKCiAgICBmb3IgKGNvbnN0IFtjb25kaXRpb24sIHRhcmdldFZhbHVlLCBzdWJzZXRdIG9mIGV4cG9ydHMuY29uZGl0aW9uTWF0Y2hlcygKICAgICAgdGFyZ2V0LAogICAgICBjb25kaXRpb25zLAogICAgICBvcHRzCiAgICApKSB7CiAgICAgIG1hdGNoZWRDb25kaXRpb25zLnB1c2goY29uZGl0aW9uKQoKICAgICAgc3RhdHVzIHw9IHlpZWxkKiBleHBvcnRzLmJ1aWx0aW5UYXJnZXQoCiAgICAgICAgcGFja2FnZVNwZWNpZmllciwKICAgICAgICBwYWNrYWdlVmVyc2lvbiwKICAgICAgICB0YXJnZXRWYWx1ZSwKICAgICAgICB7IC4uLm9wdHMsIGNvbmRpdGlvbnM6IHN1YnNldCB9CiAgICAgICkKCiAgICAgIG1hdGNoZWRDb25kaXRpb25zLnBvcCgpCiAgICB9CgogICAgaWYgKHN0YXR1cykgcmV0dXJuIHN0YXR1cwogIH0KCiAgcmV0dXJuIFVOUkVTT0xWRUQKfQoKZXhwb3J0cy5jb25kaXRpb25NYXRjaGVzID0gZnVuY3Rpb24qIGNvbmRpdGlvbk1hdGNoZXMoCiAgdGFyZ2V0LAogIGNvbmRpdGlvbnMsCiAgb3B0cyA9IHt9CikgewogIGlmIChjb25kaXRpb25zLmV2ZXJ5KChjb25kaXRpb24pID0+IHR5cGVvZiBjb25kaXRpb24gPT09ICdzdHJpbmcnKSkgewogICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRhcmdldCkKCiAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBrZXlzKSB7CiAgICAgIGlmIChjb25kaXRpb24gPT09ICdkZWZhdWx0JyB8fCBjb25kaXRpb25zLmluY2x1ZGVzKGNvbmRpdGlvbikpIHsKICAgICAgICB5aWVsZCBbY29uZGl0aW9uLCB0YXJnZXRbY29uZGl0aW9uXSwgY29uZGl0aW9uc10KCiAgICAgICAgcmV0dXJuIHRydWUKICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZQogIH0KCiAgbGV0IHlpZWxkZWQgPSBmYWxzZQoKICBmb3IgKGNvbnN0IHN1YnNldCBvZiBjb25kaXRpb25zKSB7CiAgICBpZiAoeWllbGQqIGNvbmRpdGlvbk1hdGNoZXModGFyZ2V0LCBzdWJzZXQsIG9wdHMpKSB7CiAgICAgIHlpZWxkZWQgPSB0cnVlCiAgICB9CiAgfQoKICByZXR1cm4geWllbGRlZAp9CgpleHBvcnRzLmxvb2t1cFBhY2thZ2VTY29wZSA9IGZ1bmN0aW9uKiBsb29rdXBQYWNrYWdlU2NvcGUodXJsLCBvcHRzID0ge30pIHsKICBjb25zdCB7IHJlc29sdXRpb25zID0gbnVsbCB9ID0gb3B0cwoKICBpZiAocmVzb2x1dGlvbnMpIHsKICAgIGZvciAoY29uc3QgeyByZXNvbHV0aW9uIH0gb2YgZXhwb3J0cy5wcmVyZXNvbHZlZCgKICAgICAgJyNwYWNrYWdlJywKICAgICAgcmVzb2x1dGlvbnMsCiAgICAgIHVybCwKICAgICAgb3B0cwogICAgKSkgewogICAgICBpZiAocmVzb2x1dGlvbikgcmV0dXJuIHlpZWxkIHJlc29sdXRpb24KICAgIH0KCiAgICAvLyBJbnRlcm5hbCBwcmVyZXNvbHV0aW9uIHBhdGgsIGRvIG5vdCBkZXBlbmQgb24gdGhpcyEgSXQgd2lsbCBiZSByZW1vdmVkIHdpdGhvdXQKICAgIC8vIHdhcm5pbmcuCiAgICBmb3IgKGNvbnN0IHsgcmVzb2x1dGlvbiB9IG9mIGV4cG9ydHMucHJlcmVzb2x2ZWQoCiAgICAgICdiYXJlOnBhY2thZ2UnLAogICAgICByZXNvbHV0aW9ucywKICAgICAgdXJsLAogICAgICBvcHRzCiAgICApKSB7CiAgICAgIGlmIChyZXNvbHV0aW9uKSByZXR1cm4geWllbGQgcmVzb2x1dGlvbgogICAgfQogIH0KCiAgY29uc3Qgc2NvcGVVUkwgPSBuZXcgVVJMKHVybC5ocmVmKQoKICBkbyB7CiAgICBpZiAoc2NvcGVVUkwucGF0aG5hbWUuZW5kc1dpdGgoJy9ub2RlX21vZHVsZXMnKSkgYnJlYWsKCiAgICB5aWVsZCBuZXcgVVJMKCdwYWNrYWdlLmpzb24nLCBzY29wZVVSTCkKCiAgICBzY29wZVVSTC5wYXRobmFtZSA9IHNjb3BlVVJMLnBhdGhuYW1lLnN1YnN0cmluZygKICAgICAgMCwKICAgICAgc2NvcGVVUkwucGF0aG5hbWUubGFzdEluZGV4T2YoJy8nKQogICAgKQoKICAgIGlmICgKICAgICAgc2NvcGVVUkwucGF0aG5hbWUubGVuZ3RoID09PSAzICYmCiAgICAgIGV4cG9ydHMuaXNXaW5kb3dzRHJpdmVMZXR0ZXIoc2NvcGVVUkwucGF0aG5hbWUuc3Vic3RyaW5nKDEpKQogICAgKSB7CiAgICAgIGJyZWFrCiAgICB9CiAgfSB3aGlsZSAoc2NvcGVVUkwucGF0aG5hbWUgIT09ICcnICYmIHNjb3BlVVJMLnBhdGhuYW1lICE9PSAnLycpCn0KCmV4cG9ydHMuZmlsZSA9IGZ1bmN0aW9uKiAoZmlsZW5hbWUsIHBhcmVudFVSTCwgaXNJbmRleCwgb3B0cyA9IHt9KSB7CiAgaWYgKAogICAgZmlsZW5hbWUgPT09ICcuJyB8fAogICAgZmlsZW5hbWUgPT09ICcuLicgfHwKICAgIGZpbGVuYW1lW2ZpbGVuYW1lLmxlbmd0aCAtIDFdID09PSAnLycgfHwKICAgIGZpbGVuYW1lW2ZpbGVuYW1lLmxlbmd0aCAtIDFdID09PSAnXFwnCiAgKSB7CiAgICByZXR1cm4gVU5SRVNPTFZFRAogIH0KCiAgaWYgKHBhcmVudFVSTC5wcm90b2NvbCA9PT0gJ2ZpbGU6JyAmJiAvJTJmfCU1Yy9pLnRlc3QoZmlsZW5hbWUpKSB7CiAgICB0aHJvdyBlcnJvcnMuSU5WQUxJRF9NT0RVTEVfU1BFQ0lGSUVSKAogICAgICBgTW9kdWxlIHNwZWNpZmllciAnJHtmaWxlbmFtZX0nIGlzIGludmFsaWRgCiAgICApCiAgfQoKICBjb25zdCB7IGV4dGVuc2lvbnMgPSBbXSB9ID0gb3B0cwoKICBsZXQgc3RhdHVzID0gVU5SRVNPTFZFRAoKICBpZiAoIWlzSW5kZXgpIHsKICAgIGlmICh5aWVsZCB7IHJlc29sdXRpb246IG5ldyBVUkwoZmlsZW5hbWUsIHBhcmVudFVSTCkgfSkgewogICAgICByZXR1cm4gUkVTT0xWRUQKICAgIH0KCiAgICBzdGF0dXMgPSBZSUVMREVECiAgfQoKICBmb3IgKGNvbnN0IGV4dCBvZiBleHRlbnNpb25zKSB7CiAgICBpZiAoeWllbGQgeyByZXNvbHV0aW9uOiBuZXcgVVJMKGZpbGVuYW1lICsgZXh0LCBwYXJlbnRVUkwpIH0pIHsKICAgICAgcmV0dXJuIFJFU09MVkVECiAgICB9CgogICAgc3RhdHVzID0gWUlFTERFRAogIH0KCiAgcmV0dXJuIHN0YXR1cwp9CgpleHBvcnRzLmRpcmVjdG9yeSA9IGZ1bmN0aW9uKiAoZGlybmFtZSwgcGFyZW50VVJMLCBvcHRzID0ge30pIHsKICBsZXQgZGlyZWN0b3J5VVJMCgogIGlmICgKICAgIGRpcm5hbWVbZGlybmFtZS5sZW5ndGggLSAxXSA9PT0gJy8nIHx8CiAgICBkaXJuYW1lW2Rpcm5hbWUubGVuZ3RoIC0gMV0gPT09ICdcXCcKICApIHsKICAgIGRpcmVjdG9yeVVSTCA9IG5ldyBVUkwoZGlybmFtZSwgcGFyZW50VVJMKQogIH0gZWxzZSB7CiAgICBkaXJlY3RvcnlVUkwgPSBuZXcgVVJMKGRpcm5hbWUgKyAnLycsIHBhcmVudFVSTCkKICB9CgogIGNvbnN0IGluZm8gPSB5aWVsZCB7IHBhY2thZ2U6IG5ldyBVUkwoJ3BhY2thZ2UuanNvbicsIGRpcmVjdG9yeVVSTCkgfQoKICBpZiAoaW5mbykgewogICAgaWYgKGluZm8uZXhwb3J0cykgewogICAgICByZXR1cm4geWllbGQqIGV4cG9ydHMucGFja2FnZUV4cG9ydHMoCiAgICAgICAgZGlyZWN0b3J5VVJMLAogICAgICAgICcuJywKICAgICAgICBpbmZvLmV4cG9ydHMsCiAgICAgICAgb3B0cwogICAgICApCiAgICB9CgogICAgaWYgKHR5cGVvZiBpbmZvLm1haW4gPT09ICdzdHJpbmcnICYmIGluZm8ubWFpbiAhPT0gJycpIHsKICAgICAgY29uc3Qgc3RhdHVzID0geWllbGQqIGV4cG9ydHMuZmlsZShpbmZvLm1haW4sIGRpcmVjdG9yeVVSTCwgZmFsc2UsIG9wdHMpCgogICAgICBpZiAoc3RhdHVzID09PSBSRVNPTFZFRCkgcmV0dXJuIHN0YXR1cwoKICAgICAgcmV0dXJuIHlpZWxkKiBleHBvcnRzLmRpcmVjdG9yeShpbmZvLm1haW4sIGRpcmVjdG9yeVVSTCwgb3B0cykKICAgIH0KICB9CgogIHJldHVybiB5aWVsZCogZXhwb3J0cy5maWxlKCdpbmRleCcsIGRpcmVjdG9yeVVSTCwgdHJ1ZSwgb3B0cykKfQoKLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2FzY2lpLXVwcGVyLWFscGhhCmZ1bmN0aW9uIGlzQVNDSUlVcHBlckFscGhhKGMpIHsKICByZXR1cm4gYyA+PSAweDQxICYmIGMgPD0gMHg1YQp9CgovLyBodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jYXNjaWktbG93ZXItYWxwaGEKZnVuY3Rpb24gaXNBU0NJSUxvd2VyQWxwaGEoYykgewogIHJldHVybiBjID49IDB4NjEgJiYgYyA8PSAweDdhCn0KCi8vIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNhc2NpaS1hbHBoYQpmdW5jdGlvbiBpc0FTQ0lJQWxwaGEoYykgewogIHJldHVybiBpc0FTQ0lJVXBwZXJBbHBoYShjKSB8fCBpc0FTQ0lJTG93ZXJBbHBoYShjKQp9CgovLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3dpbmRvd3MtZHJpdmUtbGV0dGVyCmV4cG9ydHMuaXNXaW5kb3dzRHJpdmVMZXR0ZXIgPSBmdW5jdGlvbiBpc1dpbmRvd3NEcml2ZUxldHRlcihpbnB1dCkgewogIHJldHVybiAoCiAgICBpbnB1dC5sZW5ndGggPj0gMiAmJgogICAgaXNBU0NJSUFscGhhKGlucHV0LmNoYXJDb2RlQXQoMCkpICYmCiAgICAoaW5wdXQuY2hhckNvZGVBdCgxKSA9PT0gMHgzYSB8fCBpbnB1dC5jaGFyQ29kZUF0KDEpID09PSAweDdjKQogICkKfQoKLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzdGFydC13aXRoLWEtd2luZG93cy1kcml2ZS1sZXR0ZXIKZXhwb3J0cy5zdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyID0gZnVuY3Rpb24gc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlcigKICBpbnB1dAopIHsKICByZXR1cm4gKAogICAgaW5wdXQubGVuZ3RoID49IDIgJiYKICAgIGV4cG9ydHMuaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaW5wdXQpICYmCiAgICAoaW5wdXQubGVuZ3RoID09PSAyIHx8CiAgICAgIGlucHV0LmNoYXJDb2RlQXQoMikgPT09IDB4MmYgfHwKICAgICAgaW5wdXQuY2hhckNvZGVBdCgyKSA9PT0gMHg1YyB8fAogICAgICBpbnB1dC5jaGFyQ29kZUF0KDIpID09PSAweDNmIHx8CiAgICAgIGlucHV0LmNoYXJDb2RlQXQoMikgPT09IDB4MjMpCiAgKQp9Cm1vZHVsZS5leHBvcnRzID0gY2xhc3MgTW9kdWxlUmVzb2x2ZUVycm9yIGV4dGVuZHMgRXJyb3IgewogIGNvbnN0cnVjdG9yKG1zZywgY29kZSwgZm4gPSBNb2R1bGVSZXNvbHZlRXJyb3IpIHsKICAgIHN1cGVyKGAke2NvZGV9OiAke21zZ31gKQogICAgdGhpcy5jb2RlID0gY29kZQoKICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkgewogICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBmbikKICAgIH0KICB9CgogIGdldCBuYW1lKCkgewogICAgcmV0dXJuICdNb2R1bGVSZXNvbHZlRXJyb3InCiAgfQoKICBzdGF0aWMgSU5WQUxJRF9NT0RVTEVfU1BFQ0lGSUVSKG1zZykgewogICAgcmV0dXJuIG5ldyBNb2R1bGVSZXNvbHZlRXJyb3IoCiAgICAgIG1zZywKICAgICAgJ0lOVkFMSURfTU9EVUxFX1NQRUNJRklFUicsCiAgICAgIE1vZHVsZVJlc29sdmVFcnJvci5JTlZBTElEX01PRFVMRV9TUEVDSUZJRVIKICAgICkKICB9CgogIHN0YXRpYyBJTlZBTElEX1BBQ0tBR0VfVEFSR0VUKG1zZykgewogICAgcmV0dXJuIG5ldyBNb2R1bGVSZXNvbHZlRXJyb3IoCiAgICAgIG1zZywKICAgICAgJ0lOVkFMSURfUEFDS0FHRV9UQVJHRVQnLAogICAgICBNb2R1bGVSZXNvbHZlRXJyb3IuSU5WQUxJRF9QQUNLQUdFX1RBUkdFVAogICAgKQogIH0KCiAgc3RhdGljIFBBQ0tBR0VfUEFUSF9OT1RfRVhQT1JURUQobXNnKSB7CiAgICByZXR1cm4gbmV3IE1vZHVsZVJlc29sdmVFcnJvcigKICAgICAgbXNnLAogICAgICAnUEFDS0FHRV9QQVRIX05PVF9FWFBPUlRFRCcsCiAgICAgIE1vZHVsZVJlc29sdmVFcnJvci5QQUNLQUdFX1BBVEhfTk9UX0VYUE9SVEVECiAgICApCiAgfQoKICBzdGF0aWMgUEFDS0FHRV9JTVBPUlRfTk9UX0RFRklORUQobXNnKSB7CiAgICByZXR1cm4gbmV3IE1vZHVsZVJlc29sdmVFcnJvcigKICAgICAgbXNnLAogICAgICAnUEFDS0FHRV9JTVBPUlRfTk9UX0RFRklORUQnLAogICAgICBNb2R1bGVSZXNvbHZlRXJyb3IuUEFDS0FHRV9JTVBPUlRfTk9UX0RFRklORUQKICAgICkKICB9CgogIHN0YXRpYyBVTlNVUFBPUlRFRF9FTkdJTkUobXNnKSB7CiAgICByZXR1cm4gbmV3IE1vZHVsZVJlc29sdmVFcnJvcigKICAgICAgbXNnLAogICAgICAnVU5TVVBQT1JURURfRU5HSU5FJywKICAgICAgTW9kdWxlUmVzb2x2ZUVycm9yLlVOU1VQUE9SVEVEX0VOR0lORQogICAgKQogIH0KfQp7CiAgIm5hbWUiOiAiYmFyZS1tb2R1bGUtcmVzb2x2ZSIsCiAgInZlcnNpb24iOiAiMS4xMC4yIiwKICAiZGVzY3JpcHRpb24iOiAiTG93LWxldmVsIG1vZHVsZSByZXNvbHV0aW9uIGFsZ29yaXRobSBmb3IgQmFyZSIsCiAgImV4cG9ydHMiOiB7CiAgICAiLi9wYWNrYWdlIjogIi4vcGFja2FnZS5qc29uIiwKICAgICIuIjogewogICAgICAidHlwZXMiOiAiLi9pbmRleC5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9pbmRleC5qcyIKICAgIH0sCiAgICAiLi9lcnJvcnMiOiB7CiAgICAgICJ0eXBlcyI6ICIuL2xpYi9lcnJvcnMuZC50cyIsCiAgICAgICJkZWZhdWx0IjogIi4vbGliL2Vycm9ycy5qcyIKICAgIH0KICB9LAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIsCiAgICAiaW5kZXguZC50cyIsCiAgICAibGliIgogIF0sCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJwcmV0dGllciAuIC0tY2hlY2sgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtbW9kdWxlLXJlc29sdmUuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2giLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1tb2R1bGUtcmVzb2x2ZS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtbW9kdWxlLXJlc29sdmUjcmVhZG1lIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtc2VtdmVyIjogIl4xLjAuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS11cmwiOiAiXjIuMS4zIiwKICAgICJicml0dGxlIjogIl4zLjIuMSIsCiAgICAicHJldHRpZXIiOiAiXjMuMy4zIiwKICAgICJwcmV0dGllci1jb25maWctc3RhbmRhcmQiOiAiXjcuMC4wIgogIH0sCiAgInBlZXJEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS11cmwiOiAiKiIKICB9LAogICJwZWVyRGVwZW5kZW5jaWVzTWV0YSI6IHsKICAgICJiYXJlLXVybCI6IHsKICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgfQogIH0KfQptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oKQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi9iaW5kaW5nJykKY29uc3QgZXJyb3JzID0gcmVxdWlyZSgnLi9saWIvZXJyb3JzJykKY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9saWIvY29uc3RhbnRzJykKCmV4cG9ydHMuY29uc3RhbnRzID0gY29uc3RhbnRzCgpleHBvcnRzLkVPTCA9IGJpbmRpbmcucGxhdGZvcm0gPT09ICd3aW4zMicgPyAnXHJcbicgOiAnXG4nCgpleHBvcnRzLnBsYXRmb3JtID0gZnVuY3Rpb24gcGxhdGZvcm0oKSB7CiAgcmV0dXJuIGJpbmRpbmcucGxhdGZvcm0KfQoKZXhwb3J0cy5hcmNoID0gZnVuY3Rpb24gYXJjaCgpIHsKICByZXR1cm4gYmluZGluZy5hcmNoCn0KCmV4cG9ydHMudHlwZSA9IGJpbmRpbmcudHlwZQpleHBvcnRzLnZlcnNpb24gPSBiaW5kaW5nLnZlcnNpb24KZXhwb3J0cy5yZWxlYXNlID0gYmluZGluZy5yZWxlYXNlCmV4cG9ydHMubWFjaGluZSA9IGJpbmRpbmcubWFjaGluZQpleHBvcnRzLmV4ZWNQYXRoID0gYmluZGluZy5leGVjUGF0aApleHBvcnRzLnBpZCA9IGJpbmRpbmcucGlkCmV4cG9ydHMucHBpZCA9IGJpbmRpbmcucHBpZApleHBvcnRzLmN3ZCA9IGJpbmRpbmcuY3dkCmV4cG9ydHMuY2hkaXIgPSBiaW5kaW5nLmNoZGlyCmV4cG9ydHMudG1wZGlyID0gYmluZGluZy50bXBkaXIKZXhwb3J0cy5ob21lZGlyID0gYmluZGluZy5ob21lZGlyCmV4cG9ydHMuaG9zdG5hbWUgPSBiaW5kaW5nLmhvc3RuYW1lCmV4cG9ydHMudXNlckluZm8gPSBiaW5kaW5nLnVzZXJJbmZvCgpleHBvcnRzLmtpbGwgPSBmdW5jdGlvbiBraWxsKHBpZCwgc2lnbmFsID0gY29uc3RhbnRzLnNpZ25hbHMuU0lHVEVSTSkgewogIGlmICh0eXBlb2Ygc2lnbmFsID09PSAnc3RyaW5nJykgewogICAgaWYgKHNpZ25hbCBpbiBjb25zdGFudHMuc2lnbmFscyA9PT0gZmFsc2UpIHsKICAgICAgdGhyb3cgZXJyb3JzLlVOS05PV05fU0lHTkFMKCdVbmtub3duIHNpZ25hbDogJyArIHNpZ25hbCkKICAgIH0KCiAgICBzaWduYWwgPSBjb25zdGFudHMuc2lnbmFsc1tzaWduYWxdCiAgfQoKICBiaW5kaW5nLmtpbGwocGlkLCBzaWduYWwpCn0KCmV4cG9ydHMuZW5kaWFubmVzcyA9IGZ1bmN0aW9uIGVuZGlhbm5lc3MoKSB7CiAgcmV0dXJuIGJpbmRpbmcuaXNMaXR0bGVFbmRpYW4gPyAnTEUnIDogJ0JFJwp9CgpleHBvcnRzLmF2YWlsYWJsZVBhcmFsbGVsaXNtID0gYmluZGluZy5hdmFpbGFibGVQYXJhbGxlbGlzbQoKZXhwb3J0cy5jcHVVc2FnZSA9IGZ1bmN0aW9uIGNwdVVzYWdlKHByZXZpb3VzKSB7CiAgY29uc3QgY3VycmVudCA9IGJpbmRpbmcuY3B1VXNhZ2UoKQoKICBpZiAocHJldmlvdXMpIHsKICAgIHJldHVybiB7CiAgICAgIHVzZXI6IGN1cnJlbnQudXNlciAtIHByZXZpb3VzLnVzZXIsCiAgICAgIHN5c3RlbTogY3VycmVudC5zeXN0ZW0gLSBwcmV2aW91cy5zeXN0ZW0KICAgIH0KICB9CgogIHJldHVybiBjdXJyZW50Cn0KCmV4cG9ydHMudGhyZWFkQ3B1VXNhZ2UgPSBmdW5jdGlvbiB0aHJlYWRDcHVVc2FnZShwcmV2aW91cykgewogIGNvbnN0IGN1cnJlbnQgPSBiaW5kaW5nLnRocmVhZENwdVVzYWdlKCkKCiAgaWYgKHByZXZpb3VzKSB7CiAgICByZXR1cm4gewogICAgICB1c2VyOiBjdXJyZW50LnVzZXIgLSBwcmV2aW91cy51c2VyLAogICAgICBzeXN0ZW06IGN1cnJlbnQuc3lzdGVtIC0gcHJldmlvdXMuc3lzdGVtCiAgICB9CiAgfQoKICByZXR1cm4gY3VycmVudAp9CgpleHBvcnRzLnJlc291cmNlVXNhZ2UgPSBiaW5kaW5nLnJlc291cmNlVXNhZ2UKZXhwb3J0cy5tZW1vcnlVc2FnZSA9IGJpbmRpbmcubWVtb3J5VXNhZ2UKZXhwb3J0cy5mcmVlbWVtID0gYmluZGluZy5mcmVlbWVtCmV4cG9ydHMudG90YWxtZW0gPSBiaW5kaW5nLnRvdGFsbWVtCmV4cG9ydHMudXB0aW1lID0gYmluZGluZy51cHRpbWUKZXhwb3J0cy5sb2FkYXZnID0gYmluZGluZy5sb2FkYXZnCmV4cG9ydHMuY3B1cyA9IGJpbmRpbmcuY3B1cwoKZXhwb3J0cy5nZXRQcm9jZXNzVGl0bGUgPSBiaW5kaW5nLmdldFByb2Nlc3NUaXRsZQoKZXhwb3J0cy5zZXRQcm9jZXNzVGl0bGUgPSBmdW5jdGlvbiBzZXRQcm9jZXNzVGl0bGUodGl0bGUpIHsKICBpZiAodHlwZW9mIHRpdGxlICE9PSAnc3RyaW5nJykgdGl0bGUgPSB0aXRsZS50b1N0cmluZygpCgogIGlmICh0aXRsZS5sZW5ndGggPj0gMjU2KSB7CiAgICB0aHJvdyBlcnJvcnMuVElUTEVfT1ZFUkZMT1coJ1Byb2Nlc3MgdGl0bGUgaXMgdG9vIGxvbmcnKQogIH0KCiAgYmluZGluZy5zZXRQcm9jZXNzVGl0bGUodGl0bGUpCn0KCmV4cG9ydHMuZ2V0RW52S2V5cyA9IGJpbmRpbmcuZ2V0RW52S2V5cwpleHBvcnRzLmdldEVudiA9IGJpbmRpbmcuZ2V0RW52CmV4cG9ydHMuaGFzRW52ID0gYmluZGluZy5oYXNFbnYKZXhwb3J0cy5zZXRFbnYgPSBiaW5kaW5nLnNldEVudgpleHBvcnRzLnVuc2V0RW52ID0gYmluZGluZy51bnNldEVudgpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi4vYmluZGluZycpCgptb2R1bGUuZXhwb3J0cyA9IHsKICBzaWduYWxzOiBiaW5kaW5nLnNpZ25hbHMsCiAgZXJybm9zOiBiaW5kaW5nLmVycm5vcwp9Cm1vZHVsZS5leHBvcnRzID0gY2xhc3MgT1NFcnJvciBleHRlbmRzIEVycm9yIHsKICBjb25zdHJ1Y3Rvcihtc2csIGNvZGUsIGZuID0gT1NFcnJvcikgewogICAgc3VwZXIoYCR7Y29kZX06ICR7bXNnfWApCiAgICB0aGlzLmNvZGUgPSBjb2RlCgogICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7CiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIGZuKQogICAgfQogIH0KCiAgZ2V0IG5hbWUoKSB7CiAgICByZXR1cm4gJ09TRXJyb3InCiAgfQoKICBzdGF0aWMgVU5LTk9XTl9TSUdOQUwobXNnKSB7CiAgICByZXR1cm4gbmV3IE9TRXJyb3IobXNnLCAnVU5LTk9XTl9TSUdOQUwnLCBPU0Vycm9yLlVOS05PV05fU0lHTkFMKQogIH0KCiAgc3RhdGljIFRJVExFX09WRVJGTE9XKG1zZykgewogICAgcmV0dXJuIG5ldyBPU0Vycm9yKG1zZywgJ1RJVExFX09WRVJGTE9XJywgT1NFcnJvci5USVRMRV9PVkVSRkxPVykKICB9Cn0KewogICJuYW1lIjogImJhcmUtb3MiLAogICJ2ZXJzaW9uIjogIjMuNi4xIiwKICAiZGVzY3JpcHRpb24iOiAiT3BlcmF0aW5nIHN5c3RlbSB1dGlsaXRpZXMgZm9yIEphdmFzY3JpcHQiLAogICJleHBvcnRzIjogewogICAgIi4iOiB7CiAgICAgICJ0eXBlcyI6ICIuL2luZGV4LmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2luZGV4LmpzIgogICAgfSwKICAgICIuL3BhY2thZ2UiOiAiLi9wYWNrYWdlLmpzb24iLAogICAgIi4vY29uc3RhbnRzIjogIi4vbGliL2NvbnN0YW50cy5qcyIsCiAgICAiLi9lcnJvcnMiOiAiLi9saWIvZXJyb3JzLmpzIgogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJpbmRleC5kLnRzIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IiwKICAgICJsaWIiLAogICAgInByZWJ1aWxkcyIKICBdLAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJwcmV0dGllciAuIC0tY2hlY2sgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtb3MuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2giLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1vcy9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtb3MjcmVhZG1lIiwKICAiZW5naW5lcyI6IHsKICAgICJiYXJlIjogIj49MS4xNC4wIgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJicml0dGxlIjogIl4zLjEuMSIsCiAgICAiY21ha2UtYmFyZSI6ICJeMS4xLjYiLAogICAgInByZXR0aWVyIjogIl4zLjQuMiIsCiAgICAicHJldHRpZXItY29uZmlnLXN0YW5kYXJkIjogIl43LjAuMCIKICB9Cn0KLyogZ2xvYmFsIEJhcmUgKi8KCi8vIFRoaXMgZXhwb3J0IFNIT1VMRCBOT1QgYmUgc2hvcnRlbmVkIGluIGFueSB3YXkgYXMgaGF2aW5nIHRoZSBmdWxsCi8vIGBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoLi4uKWAgc3RhdGVtZW50IGlzIGNydWNpYWwgZm9yIHN5bnRoZXNpemluZwovLyBFU00gZXhwb3J0cy4KCmlmIChCYXJlLnBsYXRmb3JtID09PSAnd2luMzInKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi93aW4zMicpCn0gZWxzZSB7CiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9wb3NpeCcpCn0KbW9kdWxlLmV4cG9ydHMgPSB7CiAgQ0hBUl9VUFBFUkNBU0VfQTogMHg0MSwKICBDSEFSX0xPV0VSQ0FTRV9BOiAweDYxLAogIENIQVJfVVBQRVJDQVNFX1o6IDB4NWEsCiAgQ0hBUl9MT1dFUkNBU0VfWjogMHg3YSwKICBDSEFSX0RPVDogMHgyZSwKICBDSEFSX0ZPUldBUkRfU0xBU0g6IDB4MmYsCiAgQ0hBUl9CQUNLV0FSRF9TTEFTSDogMHg1YywKICBDSEFSX0NPTE9OOiAweDNhLAogIENIQVJfUVVFU1RJT05fTUFSSzogMHgzZgp9CmNvbnN0IG9zID0gcmVxdWlyZSgnYmFyZS1vcycpCgpjb25zdCB7IG5vcm1hbGl6ZVN0cmluZyB9ID0gcmVxdWlyZSgnLi9zaGFyZWQnKQpjb25zdCB7CiAgQ0hBUl9ET1QsCiAgQ0hBUl9GT1JXQVJEX1NMQVNICn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpCgpmdW5jdGlvbiBpc1Bvc2l4UGF0aFNlcGFyYXRvciAoY29kZSkgewogIHJldHVybiBjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0gKfQoKZXhwb3J0cy53aW4zMiA9IHJlcXVpcmUoJy4vd2luMzInKQpleHBvcnRzLnBvc2l4ID0gZXhwb3J0cwoKZXhwb3J0cy5zZXAgPSAnLycKZXhwb3J0cy5kZWxpbWl0ZXIgPSAnOicKCmV4cG9ydHMucmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUgKC4uLmFyZ3MpIHsKICBsZXQgcmVzb2x2ZWRQYXRoID0gJycKICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlCgogIGZvciAobGV0IGkgPSBhcmdzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkgewogICAgY29uc3QgcGF0aCA9IGkgPj0gMCA/IGFyZ3NbaV0gOiBvcy5jd2QoKQoKICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgewogICAgICBjb250aW51ZQogICAgfQoKICAgIHJlc29sdmVkUGF0aCA9IGAke3BhdGh9LyR7cmVzb2x2ZWRQYXRofWAKICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSAogIH0KCiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplU3RyaW5nKHJlc29sdmVkUGF0aCwgIXJlc29sdmVkQWJzb2x1dGUsICcvJywgaXNQb3NpeFBhdGhTZXBhcmF0b3IpCgogIGlmIChyZXNvbHZlZEFic29sdXRlKSB7CiAgICByZXR1cm4gYC8ke3Jlc29sdmVkUGF0aH1gCiAgfQoKICByZXR1cm4gcmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDAgPyByZXNvbHZlZFBhdGggOiAnLicKfQoKZXhwb3J0cy5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUgKHBhdGgpIHsKICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLicKCiAgY29uc3QgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNICiAgY29uc3QgdHJhaWxpbmdTZXBhcmF0b3IgPSBwYXRoLmNoYXJDb2RlQXQocGF0aC5sZW5ndGggLSAxKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNICgogIHBhdGggPSBub3JtYWxpemVTdHJpbmcocGF0aCwgIWlzQWJzb2x1dGUsICcvJywgaXNQb3NpeFBhdGhTZXBhcmF0b3IpCgogIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgewogICAgaWYgKGlzQWJzb2x1dGUpIHJldHVybiAnLycKICAgIHJldHVybiB0cmFpbGluZ1NlcGFyYXRvciA/ICcuLycgOiAnLicKICB9CgogIGlmICh0cmFpbGluZ1NlcGFyYXRvcikgcGF0aCArPSAnLycKCiAgcmV0dXJuIGlzQWJzb2x1dGUgPyBgLyR7cGF0aH1gIDogcGF0aAp9CgpleHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbiBpc0Fic29sdXRlIChwYXRoKSB7CiAgcmV0dXJuIHBhdGgubGVuZ3RoID4gMCAmJiBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSAp9CgpleHBvcnRzLmpvaW4gPSBmdW5jdGlvbiBqb2luICguLi5hcmdzKSB7CiAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gJy4nCiAgbGV0IGpvaW5lZAogIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSkgewogICAgY29uc3QgYXJnID0gYXJnc1tpXQogICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7CiAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZCkgam9pbmVkID0gYXJnCiAgICAgIGVsc2Ugam9pbmVkICs9IGAvJHthcmd9YAogICAgfQogIH0KICBpZiAoam9pbmVkID09PSB1bmRlZmluZWQpIHJldHVybiAnLicKICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoam9pbmVkKQp9CgpleHBvcnRzLnJlbGF0aXZlID0gZnVuY3Rpb24gcmVsYXRpdmUgKGZyb20sIHRvKSB7CiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJycKCiAgZnJvbSA9IGV4cG9ydHMucmVzb2x2ZShmcm9tKQogIHRvID0gZXhwb3J0cy5yZXNvbHZlKHRvKQoKICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiAnJwoKICBjb25zdCBmcm9tU3RhcnQgPSAxCiAgY29uc3QgZnJvbUVuZCA9IGZyb20ubGVuZ3RoCiAgY29uc3QgZnJvbUxlbiA9IGZyb21FbmQgLSBmcm9tU3RhcnQKICBjb25zdCB0b1N0YXJ0ID0gMQogIGNvbnN0IHRvTGVuID0gdG8ubGVuZ3RoIC0gdG9TdGFydAoKICBjb25zdCBsZW5ndGggPSAoZnJvbUxlbiA8IHRvTGVuID8gZnJvbUxlbiA6IHRvTGVuKQogIGxldCBsYXN0Q29tbW9uU2VwID0gLTEKICBsZXQgaSA9IDAKICBmb3IgKDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICBjb25zdCBmcm9tQ29kZSA9IGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKQogICAgaWYgKGZyb21Db2RlICE9PSB0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKSkgewogICAgICBicmVhawogICAgfSBlbHNlIGlmIChmcm9tQ29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7CiAgICAgIGxhc3RDb21tb25TZXAgPSBpCiAgICB9CiAgfQogIGlmIChpID09PSBsZW5ndGgpIHsKICAgIGlmICh0b0xlbiA+IGxlbmd0aCkgewogICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSkgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkgewogICAgICAgIHJldHVybiB0by5zdWJzdHJpbmcodG9TdGFydCArIGkgKyAxKQogICAgICB9CiAgICAgIGlmIChpID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRvLnN1YnN0cmluZyh0b1N0YXJ0ICsgaSkKICAgICAgfQogICAgfSBlbHNlIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7CiAgICAgIGlmIChmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSkgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkgewogICAgICAgIGxhc3RDb21tb25TZXAgPSBpCiAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMCkgewogICAgICAgIGxhc3RDb21tb25TZXAgPSAwCiAgICAgIH0KICAgIH0KICB9CgogIGxldCBvdXQgPSAnJwogIGZvciAoaSA9IGZyb21TdGFydCArIGxhc3RDb21tb25TZXAgKyAxOyBpIDw9IGZyb21FbmQ7ICsraSkgewogICAgaWYgKGkgPT09IGZyb21FbmQgfHwgZnJvbS5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHsKICAgICAgb3V0ICs9IG91dC5sZW5ndGggPT09IDAgPyAnLi4nIDogJy8uLicKICAgIH0KICB9CgogIHJldHVybiBgJHtvdXR9JHt0by5zdWJzdHJpbmcodG9TdGFydCArIGxhc3RDb21tb25TZXApfWAKfQoKZXhwb3J0cy50b05hbWVzcGFjZWRQYXRoID0gZnVuY3Rpb24gdG9OYW1lc3BhY2VkUGF0aCAocGF0aCkgewogIHJldHVybiBwYXRoCn0KCmV4cG9ydHMuZGlybmFtZSA9IGZ1bmN0aW9uIGRpcm5hbWUgKHBhdGgpIHsKICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLicKICBjb25zdCBoYXNSb290ID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSBDSEFSX0ZPUldBUkRfU0xBU0gKICBsZXQgZW5kID0gLTEKICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZQogIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMTsgLS1pKSB7CiAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHsKICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHsKICAgICAgICBlbmQgPSBpCiAgICAgICAgYnJlYWsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2UKICAgIH0KICB9CgogIGlmIChlbmQgPT09IC0xKSByZXR1cm4gaGFzUm9vdCA/ICcvJyA6ICcuJwogIGlmIChoYXNSb290ICYmIGVuZCA9PT0gMSkgcmV0dXJuICcvLycKICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgZW5kKQp9CgpleHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24gYmFzZW5hbWUgKHBhdGgsIHN1ZmZpeCkgewogIGxldCBzdGFydCA9IDAKICBsZXQgZW5kID0gLTEKICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZQoKICBpZiAoc3VmZml4ICE9PSB1bmRlZmluZWQgJiYgc3VmZml4Lmxlbmd0aCA+IDAgJiYgc3VmZml4Lmxlbmd0aCA8PSBwYXRoLmxlbmd0aCkgewogICAgaWYgKHN1ZmZpeCA9PT0gcGF0aCkgeyByZXR1cm4gJycgfQogICAgbGV0IGV4dElkeCA9IHN1ZmZpeC5sZW5ndGggLSAxCiAgICBsZXQgZmlyc3ROb25TbGFzaEVuZCA9IC0xCiAgICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpCiAgICAgIGlmIChjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHsKICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkgewogICAgICAgICAgc3RhcnQgPSBpICsgMQogICAgICAgICAgYnJlYWsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGZpcnN0Tm9uU2xhc2hFbmQgPT09IC0xKSB7CiAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZQogICAgICAgICAgZmlyc3ROb25TbGFzaEVuZCA9IGkgKyAxCiAgICAgICAgfQogICAgICAgIGlmIChleHRJZHggPj0gMCkgewogICAgICAgICAgaWYgKGNvZGUgPT09IHN1ZmZpeC5jaGFyQ29kZUF0KGV4dElkeCkpIHsKICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkgewogICAgICAgICAgICAgIGVuZCA9IGkKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZXh0SWR4ID0gLTEKICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGlmIChzdGFydCA9PT0gZW5kKSBlbmQgPSBmaXJzdE5vblNsYXNoRW5kCiAgICBlbHNlIGlmIChlbmQgPT09IC0xKSBlbmQgPSBwYXRoLmxlbmd0aAogICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHN0YXJ0LCBlbmQpCiAgfQoKICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgaWYgKHBhdGguY2hhckNvZGVBdChpKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7CiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7CiAgICAgICAgc3RhcnQgPSBpICsgMQogICAgICAgIGJyZWFrCiAgICAgIH0KICAgIH0gZWxzZSBpZiAoZW5kID09PSAtMSkgewogICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZQogICAgICBlbmQgPSBpICsgMQogICAgfQogIH0KCiAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJwogIHJldHVybiBwYXRoLnN1YnN0cmluZyhzdGFydCwgZW5kKQp9CgpleHBvcnRzLmV4dG5hbWUgPSBmdW5jdGlvbiBleHRuYW1lIChwYXRoKSB7CiAgbGV0IHN0YXJ0RG90ID0gLTEKICBsZXQgc3RhcnRQYXJ0ID0gMAogIGxldCBlbmQgPSAtMQogIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlCiAgbGV0IHByZURvdFN0YXRlID0gMAogIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpCiAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7CiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7CiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDEKICAgICAgICBicmVhawogICAgICB9CiAgICAgIGNvbnRpbnVlCiAgICB9CiAgICBpZiAoZW5kID09PSAtMSkgewogICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZQogICAgICBlbmQgPSBpICsgMQogICAgfQogICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7CiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaQogICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxCiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkgewogICAgICBwcmVEb3RTdGF0ZSA9IC0xCiAgICB9CiAgfQoKICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHwgcHJlRG90U3RhdGUgPT09IDAgfHwgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSkgewogICAgcmV0dXJuICcnCiAgfQogIHJldHVybiBwYXRoLnN1YnN0cmluZyhzdGFydERvdCwgZW5kKQp9CmNvbnN0IHsKICBDSEFSX0RPVCwKICBDSEFSX0ZPUldBUkRfU0xBU0gKfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJykKCmV4cG9ydHMubm9ybWFsaXplU3RyaW5nID0gZnVuY3Rpb24gbm9ybWFsaXplU3RyaW5nIChwYXRoLCBhbGxvd0Fib3ZlUm9vdCwgc2VwYXJhdG9yLCBpc1BhdGhTZXBhcmF0b3IpIHsKICBsZXQgcmVzID0gJycKICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwCiAgbGV0IGxhc3RTbGFzaCA9IC0xCiAgbGV0IGRvdHMgPSAwCiAgbGV0IGNvZGUgPSAwCiAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcGF0aC5sZW5ndGg7ICsraSkgewogICAgaWYgKGkgPCBwYXRoLmxlbmd0aCkgewogICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpCiAgICB9IGVsc2UgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkgewogICAgICBicmVhawogICAgfSBlbHNlIHsKICAgICAgY29kZSA9IENIQVJfRk9SV0FSRF9TTEFTSAogICAgfQoKICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHsKICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gaSAtIDEgfHwgZG90cyA9PT0gMSkgOwogICAgICBlbHNlIGlmIChkb3RzID09PSAyKSB7CiAgICAgICAgaWYgKHJlcy5sZW5ndGggPCAyIHx8IGxhc3RTZWdtZW50TGVuZ3RoICE9PSAyIHx8IHJlcy5jaGFyQ29kZUF0KHJlcy5sZW5ndGggLSAxKSAhPT0gQ0hBUl9ET1QgfHwgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDIpICE9PSBDSEFSX0RPVCkgewogICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7CiAgICAgICAgICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcmVzLmxhc3RJbmRleE9mKHNlcGFyYXRvcikKICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkgewogICAgICAgICAgICAgIHJlcyA9ICcnCiAgICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcmVzID0gcmVzLnN1YnN0cmluZygwLCBsYXN0U2xhc2hJbmRleCkKICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9CiAgICAgICAgICAgICAgICByZXMubGVuZ3RoIC0gMSAtIHJlcy5sYXN0SW5kZXhPZihzZXBhcmF0b3IpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdFNsYXNoID0gaQogICAgICAgICAgICBkb3RzID0gMAogICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoICE9PSAwKSB7CiAgICAgICAgICAgIHJlcyA9ICcnCiAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMAogICAgICAgICAgICBsYXN0U2xhc2ggPSBpCiAgICAgICAgICAgIGRvdHMgPSAwCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkgewogICAgICAgICAgcmVzICs9IHJlcy5sZW5ndGggPiAwID8gYCR7c2VwYXJhdG9yfS4uYCA6ICcuLicKICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMgogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgIHJlcyArPSBgJHtzZXBhcmF0b3J9JHtwYXRoLnN1YnN0cmluZyhsYXN0U2xhc2ggKyAxLCBpKX1gCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJlcyA9IHBhdGguc3Vic3RyaW5nKGxhc3RTbGFzaCArIDEsIGkpCiAgICAgICAgfQogICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gaSAtIGxhc3RTbGFzaCAtIDEKICAgICAgfQogICAgICBsYXN0U2xhc2ggPSBpCiAgICAgIGRvdHMgPSAwCiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IENIQVJfRE9UICYmIGRvdHMgIT09IC0xKSB7CiAgICAgICsrZG90cwogICAgfSBlbHNlIHsKICAgICAgZG90cyA9IC0xCiAgICB9CiAgfQogIHJldHVybiByZXMKfQpjb25zdCBvcyA9IHJlcXVpcmUoJ2JhcmUtb3MnKQoKY29uc3QgeyBub3JtYWxpemVTdHJpbmcgfSA9IHJlcXVpcmUoJy4vc2hhcmVkJykKY29uc3QgewogIENIQVJfVVBQRVJDQVNFX0EsCiAgQ0hBUl9MT1dFUkNBU0VfQSwKICBDSEFSX1VQUEVSQ0FTRV9aLAogIENIQVJfTE9XRVJDQVNFX1osCiAgQ0hBUl9ET1QsCiAgQ0hBUl9GT1JXQVJEX1NMQVNILAogIENIQVJfQkFDS1dBUkRfU0xBU0gsCiAgQ0hBUl9DT0xPTiwKICBDSEFSX1FVRVNUSU9OX01BUksKfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJykKCmZ1bmN0aW9uIGlzV2luZG93c1BhdGhTZXBhcmF0b3IgKGNvZGUpIHsKICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIIHx8IGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gKfQoKZnVuY3Rpb24gaXNXaW5kb3dzRGV2aWNlUm9vdCAoY29kZSkgewogIHJldHVybiAoY29kZSA+PSBDSEFSX1VQUEVSQ0FTRV9BICYmIGNvZGUgPD0gQ0hBUl9VUFBFUkNBU0VfWikgfHwKICAgICAgICAgKGNvZGUgPj0gQ0hBUl9MT1dFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfTE9XRVJDQVNFX1opCn0KCmV4cG9ydHMucG9zaXggPSByZXF1aXJlKCcuL3Bvc2l4JykKZXhwb3J0cy53aW4zMiA9IGV4cG9ydHMKCmV4cG9ydHMuc2VwID0gJ1xcJwpleHBvcnRzLmRlbGltaXRlciA9ICc7JwoKZXhwb3J0cy5yZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZSAoLi4uYXJncykgewogIGxldCByZXNvbHZlZERldmljZSA9ICcnCiAgbGV0IHJlc29sdmVkVGFpbCA9ICcnCiAgbGV0IHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZQoKICBmb3IgKGxldCBpID0gYXJncy5sZW5ndGggLSAxOyBpID49IC0xOyBpLS0pIHsKICAgIGxldCBwYXRoCiAgICBpZiAoaSA+PSAwKSB7CiAgICAgIHBhdGggPSBhcmdzW2ldCgogICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIGNvbnRpbnVlCiAgICB9IGVsc2UgaWYgKHJlc29sdmVkRGV2aWNlLmxlbmd0aCA9PT0gMCkgewogICAgICBwYXRoID0gb3MuY3dkKCkKICAgIH0gZWxzZSB7CiAgICAgIHBhdGggPSBvcy5nZXRFbnYoYD0ke3Jlc29sdmVkRGV2aWNlfWApIHx8IG9zLmN3ZCgpCgogICAgICBpZiAocGF0aCA9PT0gdW5kZWZpbmVkIHx8IChwYXRoLnN1YnN0cmluZygwLCAyKS50b0xvd2VyQ2FzZSgpICE9PSByZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpICYmIHBhdGguY2hhckNvZGVBdCgyKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkpIHsKICAgICAgICBwYXRoID0gYCR7cmVzb2x2ZWREZXZpY2V9XFxgCiAgICAgIH0KICAgIH0KCiAgICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aAogICAgbGV0IHJvb3RFbmQgPSAwCiAgICBsZXQgZGV2aWNlID0gJycKICAgIGxldCBpc0Fic29sdXRlID0gZmFsc2UKICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkKCiAgICBpZiAobGVuID09PSAxKSB7CiAgICAgIGlmIChpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKGNvZGUpKSB7CiAgICAgICAgcm9vdEVuZCA9IDEKICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZQogICAgICB9CiAgICB9IGVsc2UgaWYgKGlzV2luZG93c1BhdGhTZXBhcmF0b3IoY29kZSkpIHsKICAgICAgaXNBYnNvbHV0ZSA9IHRydWUKCiAgICAgIGlmIChpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHsKICAgICAgICBsZXQgaiA9IDIKICAgICAgICBsZXQgbGFzdCA9IGoKICAgICAgICB3aGlsZSAoaiA8IGxlbiAmJiAhaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSB7CiAgICAgICAgICBqKysKICAgICAgICB9CiAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkgewogICAgICAgICAgY29uc3QgZmlyc3RQYXJ0ID0gcGF0aC5zdWJzdHJpbmcobGFzdCwgaikKICAgICAgICAgIGxhc3QgPSBqCiAgICAgICAgICB3aGlsZSAoaiA8IGxlbiAmJiBpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIHsKICAgICAgICAgICAgaisrCiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7CiAgICAgICAgICAgIGxhc3QgPSBqCiAgICAgICAgICAgIHdoaWxlIChqIDwgbGVuICYmICFpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIHsKICAgICAgICAgICAgICBqKysKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaiA9PT0gbGVuIHx8IGogIT09IGxhc3QpIHsKICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXCR7Zmlyc3RQYXJ0fVxcJHtwYXRoLnN1YnN0cmluZyhsYXN0LCBqKX1gCiAgICAgICAgICAgICAgcm9vdEVuZCA9IGoKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICByb290RW5kID0gMQogICAgICB9CiAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkgJiYgcGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7CiAgICAgIGRldmljZSA9IHBhdGguc3Vic3RyaW5nKDAsIDIpCiAgICAgIHJvb3RFbmQgPSAyCiAgICAgIGlmIChsZW4gPiAyICYmIGlzV2luZG93c1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgewogICAgICAgIGlzQWJzb2x1dGUgPSB0cnVlCiAgICAgICAgcm9vdEVuZCA9IDMKICAgICAgfQogICAgfQoKICAgIGlmIChkZXZpY2UubGVuZ3RoID4gMCkgewogICAgICBpZiAocmVzb2x2ZWREZXZpY2UubGVuZ3RoID4gMCkgewogICAgICAgIGlmIChkZXZpY2UudG9Mb3dlckNhc2UoKSAhPT0gcmVzb2x2ZWREZXZpY2UudG9Mb3dlckNhc2UoKSkgeyBjb250aW51ZSB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzb2x2ZWREZXZpY2UgPSBkZXZpY2UKICAgICAgfQogICAgfQoKICAgIGlmIChyZXNvbHZlZEFic29sdXRlKSB7CiAgICAgIGlmIChyZXNvbHZlZERldmljZS5sZW5ndGggPiAwKSB7IGJyZWFrIH0KICAgIH0gZWxzZSB7CiAgICAgIHJlc29sdmVkVGFpbCA9IGAke3BhdGguc3Vic3RyaW5nKHJvb3RFbmQpfVxcJHtyZXNvbHZlZFRhaWx9YAogICAgICByZXNvbHZlZEFic29sdXRlID0gaXNBYnNvbHV0ZQogICAgICBpZiAoaXNBYnNvbHV0ZSAmJiByZXNvbHZlZERldmljZS5sZW5ndGggPiAwKSB7CiAgICAgICAgYnJlYWsKICAgICAgfQogICAgfQogIH0KCiAgcmVzb2x2ZWRUYWlsID0gbm9ybWFsaXplU3RyaW5nKHJlc29sdmVkVGFpbCwgIXJlc29sdmVkQWJzb2x1dGUsICdcXCcsIGlzV2luZG93c1BhdGhTZXBhcmF0b3IpCgogIHJldHVybiByZXNvbHZlZEFic29sdXRlID8gYCR7cmVzb2x2ZWREZXZpY2V9XFwke3Jlc29sdmVkVGFpbH1gIDogYCR7cmVzb2x2ZWREZXZpY2V9JHtyZXNvbHZlZFRhaWx9YCB8fCAnLicKfQoKZXhwb3J0cy5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUgKHBhdGgpIHsKICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aAogIGlmIChsZW4gPT09IDApIHJldHVybiAnLicKICBsZXQgcm9vdEVuZCA9IDAKICBsZXQgZGV2aWNlCiAgbGV0IGlzQWJzb2x1dGUgPSBmYWxzZQogIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkKCiAgaWYgKGxlbiA9PT0gMSkgewogICAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCA/ICdcXCcgOiBwYXRoCiAgfQoKICBpZiAoaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihjb2RlKSkgewogICAgaXNBYnNvbHV0ZSA9IHRydWUKCiAgICBpZiAoaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMSkpKSB7CiAgICAgIGxldCBqID0gMgogICAgICBsZXQgbGFzdCA9IGoKICAgICAgd2hpbGUgKGogPCBsZW4gJiYgIWlzV2luZG93c1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgewogICAgICAgIGorKwogICAgICB9CiAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHsKICAgICAgICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoLnN1YnN0cmluZyhsYXN0LCBqKQogICAgICAgIGxhc3QgPSBqCiAgICAgICAgd2hpbGUgKGogPCBsZW4gJiYgaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSB7CiAgICAgICAgICBqKysKICAgICAgICB9CiAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkgewogICAgICAgICAgbGFzdCA9IGoKICAgICAgICAgIHdoaWxlIChqIDwgbGVuICYmICFpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIHsKICAgICAgICAgICAgaisrCiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7CiAgICAgICAgICAgIHJldHVybiBgXFxcXCR7Zmlyc3RQYXJ0fVxcJHtwYXRoLnN1YnN0cmluZyhsYXN0KX1cXGAKICAgICAgICAgIH0KICAgICAgICAgIGlmIChqICE9PSBsYXN0KSB7CiAgICAgICAgICAgIGRldmljZSA9IGBcXFxcJHtmaXJzdFBhcnR9XFwke3BhdGguc3Vic3RyaW5nKGxhc3QsIGopfWAKICAgICAgICAgICAgcm9vdEVuZCA9IGoKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHJvb3RFbmQgPSAxCiAgICB9CiAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpICYmIHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikgewogICAgZGV2aWNlID0gcGF0aC5zdWJzdHJpbmcoMCwgMikKICAgIHJvb3RFbmQgPSAyCiAgICBpZiAobGVuID4gMiAmJiBpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgyKSkpIHsKICAgICAgaXNBYnNvbHV0ZSA9IHRydWUKICAgICAgcm9vdEVuZCA9IDMKICAgIH0KICB9CgogIGxldCB0YWlsID0gcm9vdEVuZCA8IGxlbiA/IG5vcm1hbGl6ZVN0cmluZyhwYXRoLnN1YnN0cmluZyhyb290RW5kKSwgIWlzQWJzb2x1dGUsICdcXCcsIGlzV2luZG93c1BhdGhTZXBhcmF0b3IpIDogJycKICBpZiAodGFpbC5sZW5ndGggPT09IDAgJiYgIWlzQWJzb2x1dGUpIHsKICAgIHRhaWwgPSAnLicKICB9CiAgaWYgKHRhaWwubGVuZ3RoID4gMCAmJiBpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChsZW4gLSAxKSkpIHsKICAgIHRhaWwgKz0gJ1xcJwogIH0KICBpZiAoZGV2aWNlID09PSB1bmRlZmluZWQpIHsKICAgIHJldHVybiBpc0Fic29sdXRlID8gYFxcJHt0YWlsfWAgOiB0YWlsCiAgfQogIHJldHVybiBpc0Fic29sdXRlID8gYCR7ZGV2aWNlfVxcJHt0YWlsfWAgOiBgJHtkZXZpY2V9JHt0YWlsfWAKfQoKZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24gaXNBYnNvbHV0ZSAocGF0aCkgewogIGNvbnN0IGxlbiA9IHBhdGgubGVuZ3RoCiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIGZhbHNlCgogIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkKCiAgcmV0dXJuIGlzV2luZG93c1BhdGhTZXBhcmF0b3IoY29kZSkgfHwgKGxlbiA+IDIgJiYgaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04gJiYgaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKQp9CgpleHBvcnRzLmpvaW4gPSBmdW5jdGlvbiBqb2luICguLi5hcmdzKSB7CiAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gJy4nCgogIGxldCBqb2luZWQKICBsZXQgZmlyc3RQYXJ0CiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgKytpKSB7CiAgICBjb25zdCBhcmcgPSBhcmdzW2ldCiAgICBpZiAoYXJnLmxlbmd0aCA+IDApIHsKICAgICAgaWYgKGpvaW5lZCA9PT0gdW5kZWZpbmVkKSBqb2luZWQgPSBmaXJzdFBhcnQgPSBhcmcKICAgICAgZWxzZSBqb2luZWQgKz0gYFxcJHthcmd9YAogICAgfQogIH0KCiAgaWYgKGpvaW5lZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJy4nCgogIGxldCBuZWVkc1JlcGxhY2UgPSB0cnVlCiAgbGV0IHNsYXNoQ291bnQgPSAwCiAgaWYgKGlzV2luZG93c1BhdGhTZXBhcmF0b3IoZmlyc3RQYXJ0LmNoYXJDb2RlQXQoMCkpKSB7CiAgICArK3NsYXNoQ291bnQKICAgIGNvbnN0IGZpcnN0TGVuID0gZmlyc3RQYXJ0Lmxlbmd0aAogICAgaWYgKGZpcnN0TGVuID4gMSAmJiBpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDEpKSkgewogICAgICArK3NsYXNoQ291bnQKICAgICAgaWYgKGZpcnN0TGVuID4gMikgewogICAgICAgIGlmIChpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDIpKSkgewogICAgICAgICAgKytzbGFzaENvdW50CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5lZWRzUmVwbGFjZSA9IGZhbHNlCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIGlmIChuZWVkc1JlcGxhY2UpIHsKICAgIHdoaWxlIChzbGFzaENvdW50IDwgam9pbmVkLmxlbmd0aCAmJiBpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKGpvaW5lZC5jaGFyQ29kZUF0KHNsYXNoQ291bnQpKSkgewogICAgICBzbGFzaENvdW50KysKICAgIH0KCiAgICBpZiAoc2xhc2hDb3VudCA+PSAyKSB7CiAgICAgIGpvaW5lZCA9IGBcXCR7am9pbmVkLnN1YnN0cmluZyhzbGFzaENvdW50KX1gCiAgICB9CiAgfQoKICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoam9pbmVkKQp9CgpleHBvcnRzLnJlbGF0aXZlID0gZnVuY3Rpb24gcmVsYXRpdmUgKGZyb20sIHRvKSB7CiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJycKCiAgY29uc3QgZnJvbU9yaWcgPSBleHBvcnRzLnJlc29sdmUoZnJvbSkKICBjb25zdCB0b09yaWcgPSBleHBvcnRzLnJlc29sdmUodG8pCgogIGlmIChmcm9tT3JpZyA9PT0gdG9PcmlnKSByZXR1cm4gJycKCiAgZnJvbSA9IGZyb21PcmlnLnRvTG93ZXJDYXNlKCkKICB0byA9IHRvT3JpZy50b0xvd2VyQ2FzZSgpCgogIGlmIChmcm9tID09PSB0bykgcmV0dXJuICcnCgogIGxldCBmcm9tU3RhcnQgPSAwCiAgd2hpbGUgKGZyb21TdGFydCA8IGZyb20ubGVuZ3RoICYmIGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7CiAgICBmcm9tU3RhcnQrKwogIH0KICBsZXQgZnJvbUVuZCA9IGZyb20ubGVuZ3RoCiAgd2hpbGUgKGZyb21FbmQgLSAxID4gZnJvbVN0YXJ0ICYmIGZyb20uY2hhckNvZGVBdChmcm9tRW5kIC0gMSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHsKICAgIGZyb21FbmQtLQogIH0KICBjb25zdCBmcm9tTGVuID0gZnJvbUVuZCAtIGZyb21TdGFydAoKICBsZXQgdG9TdGFydCA9IDAKICB3aGlsZSAodG9TdGFydCA8IHRvLmxlbmd0aCAmJiB0by5jaGFyQ29kZUF0KHRvU3RhcnQpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7CiAgICB0b1N0YXJ0KysKICB9CiAgbGV0IHRvRW5kID0gdG8ubGVuZ3RoCiAgd2hpbGUgKHRvRW5kIC0gMSA+IHRvU3RhcnQgJiYgdG8uY2hhckNvZGVBdCh0b0VuZCAtIDEpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7CiAgICB0b0VuZC0tCiAgfQogIGNvbnN0IHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0CgogIGNvbnN0IGxlbmd0aCA9IGZyb21MZW4gPCB0b0xlbiA/IGZyb21MZW4gOiB0b0xlbgogIGxldCBsYXN0Q29tbW9uU2VwID0gLTEKICBsZXQgaSA9IDAKICBmb3IgKDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICBjb25zdCBmcm9tQ29kZSA9IGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKQogICAgaWYgKGZyb21Db2RlICE9PSB0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKSkgewogICAgICBicmVhawogICAgfSBlbHNlIGlmIChmcm9tQ29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgewogICAgICBsYXN0Q29tbW9uU2VwID0gaQogICAgfQogIH0KCiAgaWYgKGkgIT09IGxlbmd0aCkgewogICAgaWYgKGxhc3RDb21tb25TZXAgPT09IC0xKSByZXR1cm4gdG9PcmlnCiAgfSBlbHNlIHsKICAgIGlmICh0b0xlbiA+IGxlbmd0aCkgewogICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHsKICAgICAgICByZXR1cm4gdG9PcmlnLnN1YnN0cmluZyh0b1N0YXJ0ICsgaSArIDEpCiAgICAgIH0KICAgICAgaWYgKGkgPT09IDIpIHsKICAgICAgICByZXR1cm4gdG9PcmlnLnN1YnN0cmluZyh0b1N0YXJ0ICsgaSkKICAgICAgfQogICAgfQogICAgaWYgKGZyb21MZW4gPiBsZW5ndGgpIHsKICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgewogICAgICAgIGxhc3RDb21tb25TZXAgPSBpCiAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMikgewogICAgICAgIGxhc3RDb21tb25TZXAgPSAzCiAgICAgIH0KICAgIH0KICAgIGlmIChsYXN0Q29tbW9uU2VwID09PSAtMSkgbGFzdENvbW1vblNlcCA9IDAKICB9CgogIGxldCBvdXQgPSAnJwogIGZvciAoaSA9IGZyb21TdGFydCArIGxhc3RDb21tb25TZXAgKyAxOyBpIDw9IGZyb21FbmQ7ICsraSkgewogICAgaWYgKGkgPT09IGZyb21FbmQgfHwgZnJvbS5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7CiAgICAgIG91dCArPSBvdXQubGVuZ3RoID09PSAwID8gJy4uJyA6ICdcXC4uJwogICAgfQogIH0KCiAgdG9TdGFydCArPSBsYXN0Q29tbW9uU2VwCgogIGlmIChvdXQubGVuZ3RoID4gMCkgewogICAgcmV0dXJuIGAke291dH0ke3RvT3JpZy5zdWJzdHJpbmcodG9TdGFydCwgdG9FbmQpfWAKICB9CiAgaWYgKHRvT3JpZy5jaGFyQ29kZUF0KHRvU3RhcnQpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7CiAgICArK3RvU3RhcnQKICB9CiAgcmV0dXJuIHRvT3JpZy5zdWJzdHJpbmcodG9TdGFydCwgdG9FbmQpCn0KCmV4cG9ydHMudG9OYW1lc3BhY2VkUGF0aCA9IGZ1bmN0aW9uIHRvTmFtZXNwYWNlZFBhdGggKHBhdGgpIHsKICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiBwYXRoCgogIGNvbnN0IHJlc29sdmVkUGF0aCA9IGV4cG9ydHMucmVzb2x2ZShwYXRoKQoKICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA8PSAyKSByZXR1cm4gcGF0aAoKICBpZiAocmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHsKICAgIGlmIChyZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgewogICAgICBjb25zdCBjb2RlID0gcmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMikKICAgICAgaWYgKGNvZGUgIT09IENIQVJfUVVFU1RJT05fTUFSSyAmJiBjb2RlICE9PSBDSEFSX0RPVCkgewogICAgICAgIHJldHVybiBgXFxcXD9cXFVOQ1xcJHtyZXNvbHZlZFBhdGguc3Vic3RyaW5nKDIpfWAKICAgICAgfQogICAgfQogIH0gZWxzZSBpZiAoCiAgICBpc1dpbmRvd3NEZXZpY2VSb290KHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDApKSAmJgogICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTiAmJgogICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgyKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSAogICkgewogICAgcmV0dXJuIGBcXFxcP1xcJHtyZXNvbHZlZFBhdGh9YAogIH0KCiAgcmV0dXJuIHBhdGgKfQoKZXhwb3J0cy5kaXJuYW1lID0gZnVuY3Rpb24gZGlybmFtZSAocGF0aCkgewogIGNvbnN0IGxlbiA9IHBhdGgubGVuZ3RoCiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuICcuJwogIGxldCByb290RW5kID0gLTEKICBsZXQgb2Zmc2V0ID0gMAogIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkKCiAgaWYgKGxlbiA9PT0gMSkgewogICAgcmV0dXJuIGlzV2luZG93c1BhdGhTZXBhcmF0b3IoY29kZSkgPyBwYXRoIDogJy4nCiAgfQoKICBpZiAoaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihjb2RlKSkgewogICAgcm9vdEVuZCA9IG9mZnNldCA9IDEKCiAgICBpZiAoaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMSkpKSB7CiAgICAgIGxldCBqID0gMgogICAgICBsZXQgbGFzdCA9IGoKICAgICAgd2hpbGUgKGogPCBsZW4gJiYgIWlzV2luZG93c1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgewogICAgICAgIGorKwogICAgICB9CiAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHsKICAgICAgICBsYXN0ID0gagogICAgICAgIHdoaWxlIChqIDwgbGVuICYmIGlzV2luZG93c1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgewogICAgICAgICAgaisrCiAgICAgICAgfQogICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHsKICAgICAgICAgIGxhc3QgPSBqCiAgICAgICAgICB3aGlsZSAoaiA8IGxlbiAmJiAhaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSB7CiAgICAgICAgICAgIGorKwogICAgICAgICAgfQogICAgICAgICAgaWYgKGogPT09IGxlbikgewogICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICAgfQogICAgICAgICAgaWYgKGogIT09IGxhc3QpIHsKICAgICAgICAgICAgcm9vdEVuZCA9IG9mZnNldCA9IGogKyAxCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpICYmIHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikgewogICAgcm9vdEVuZCA9IGxlbiA+IDIgJiYgaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpID8gMyA6IDIKICAgIG9mZnNldCA9IHJvb3RFbmQKICB9CgogIGxldCBlbmQgPSAtMQogIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlCiAgZm9yIChsZXQgaSA9IGxlbiAtIDE7IGkgPj0gb2Zmc2V0OyAtLWkpIHsKICAgIGlmIChpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChpKSkpIHsKICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHsKICAgICAgICBlbmQgPSBpCiAgICAgICAgYnJlYWsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2UKICAgIH0KICB9CgogIGlmIChlbmQgPT09IC0xKSB7CiAgICBpZiAocm9vdEVuZCA9PT0gLTEpIHJldHVybiAnLicKCiAgICBlbmQgPSByb290RW5kCiAgfQogIHJldHVybiBwYXRoLnN1YnN0cmluZygwLCBlbmQpCn0KCmV4cG9ydHMuYmFzZW5hbWUgPSBmdW5jdGlvbiBiYXNlbmFtZSAocGF0aCwgc3VmZml4KSB7CiAgbGV0IHN0YXJ0ID0gMAogIGxldCBlbmQgPSAtMQogIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlCgogIGlmIChwYXRoLmxlbmd0aCA+PSAyICYmIGlzV2luZG93c0RldmljZVJvb3QocGF0aC5jaGFyQ29kZUF0KDApKSAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHsKICAgIHN0YXJ0ID0gMgogIH0KCiAgaWYgKHN1ZmZpeCAhPT0gdW5kZWZpbmVkICYmIHN1ZmZpeC5sZW5ndGggPiAwICYmIHN1ZmZpeC5sZW5ndGggPD0gcGF0aC5sZW5ndGgpIHsKICAgIGlmIChzdWZmaXggPT09IHBhdGgpIHJldHVybiAnJwogICAgbGV0IGV4dElkeCA9IHN1ZmZpeC5sZW5ndGggLSAxCiAgICBsZXQgZmlyc3ROb25TbGFzaEVuZCA9IC0xCiAgICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyAtLWkpIHsKICAgICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKQogICAgICBpZiAoaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihjb2RlKSkgewogICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7CiAgICAgICAgICBzdGFydCA9IGkgKyAxCiAgICAgICAgICBicmVhawogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAoZmlyc3ROb25TbGFzaEVuZCA9PT0gLTEpIHsKICAgICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlCiAgICAgICAgICBmaXJzdE5vblNsYXNoRW5kID0gaSArIDEKICAgICAgICB9CiAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7CiAgICAgICAgICBpZiAoY29kZSA9PT0gc3VmZml4LmNoYXJDb2RlQXQoZXh0SWR4KSkgewogICAgICAgICAgICBpZiAoLS1leHRJZHggPT09IC0xKSB7CiAgICAgICAgICAgICAgZW5kID0gaQogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBleHRJZHggPSAtMQogICAgICAgICAgICBlbmQgPSBmaXJzdE5vblNsYXNoRW5kCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgaWYgKHN0YXJ0ID09PSBlbmQpIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmQKICAgIGVsc2UgaWYgKGVuZCA9PT0gLTEpIGVuZCA9IHBhdGgubGVuZ3RoCiAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoc3RhcnQsIGVuZCkKICB9CiAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgLS1pKSB7CiAgICBpZiAoaXNXaW5kb3dzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaSkpKSB7CiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7CiAgICAgICAgc3RhcnQgPSBpICsgMQogICAgICAgIGJyZWFrCiAgICAgIH0KICAgIH0gZWxzZSBpZiAoZW5kID09PSAtMSkgewogICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZQogICAgICBlbmQgPSBpICsgMQogICAgfQogIH0KCiAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJwogIHJldHVybiBwYXRoLnN1YnN0cmluZyhzdGFydCwgZW5kKQp9CgpleHBvcnRzLmV4dG5hbWUgPSBmdW5jdGlvbiBleHRuYW1lIChwYXRoKSB7CiAgbGV0IHN0YXJ0ID0gMAogIGxldCBzdGFydERvdCA9IC0xCiAgbGV0IHN0YXJ0UGFydCA9IDAKICBsZXQgZW5kID0gLTEKICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZQogIGxldCBwcmVEb3RTdGF0ZSA9IDAKCiAgaWYgKHBhdGgubGVuZ3RoID49IDIgJiYgcGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OICYmIGlzV2luZG93c0RldmljZVJvb3QocGF0aC5jaGFyQ29kZUF0KDApKSkgewogICAgc3RhcnQgPSBzdGFydFBhcnQgPSAyCiAgfQoKICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyAtLWkpIHsKICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSkKICAgIGlmIChpc1dpbmRvd3NQYXRoU2VwYXJhdG9yKGNvZGUpKSB7CiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7CiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDEKICAgICAgICBicmVhawogICAgICB9CiAgICAgIGNvbnRpbnVlCiAgICB9CiAgICBpZiAoZW5kID09PSAtMSkgewogICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZQogICAgICBlbmQgPSBpICsgMQogICAgfQogICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7CiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaQogICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxCiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkgewogICAgICBwcmVEb3RTdGF0ZSA9IC0xCiAgICB9CiAgfQoKICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHwgcHJlRG90U3RhdGUgPT09IDAgfHwgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSkgewogICAgcmV0dXJuICcnCiAgfQogIHJldHVybiBwYXRoLnN1YnN0cmluZyhzdGFydERvdCwgZW5kKQp9CnsKICAibmFtZSI6ICJiYXJlLXBhdGgiLAogICJ2ZXJzaW9uIjogIjMuMC4wIiwKICAiZGVzY3JpcHRpb24iOiAiUGF0aCBtYW5pcHVsYXRpb24gbGlicmFyeSBmb3IgSmF2YVNjcmlwdCIsCiAgImV4cG9ydHMiOiB7CiAgICAiLiI6ICIuL2luZGV4LmpzIiwKICAgICIuL3BhY2thZ2UiOiAiLi9wYWNrYWdlLmpzb24iLAogICAgIi4vcG9zaXgiOiAiLi9saWIvcG9zaXguanMiLAogICAgIi4vd2luMzIiOiAiLi9saWIvd2luMzIuanMiCiAgfSwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgImxpYiIsCiAgICAiTk9USUNFIgogIF0sCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJzdGFuZGFyZCAmJiBiYXJlIHRlc3QuanMiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS1wYXRoLmdpdCIKICB9LAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtcGF0aC9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtcGF0aCNyZWFkbWUiLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1vcyI6ICJeMy4wLjEiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuMy4yIiwKICAgICJzdGFuZGFyZCI6ICJeMTcuMC4wIgogIH0KfQptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oKQovKiBnbG9iYWwgQmFyZSAqLwpjb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdiYXJlLWV2ZW50cycpCmNvbnN0IHsgRHVwbGV4IH0gPSByZXF1aXJlKCdiYXJlLXN0cmVhbScpCmNvbnN0IGJpbmRpbmcgPSByZXF1aXJlKCcuL2JpbmRpbmcnKQpjb25zdCBjb25zdGFudHMgPSByZXF1aXJlKCcuL2xpYi9jb25zdGFudHMnKQpjb25zdCBlcnJvcnMgPSByZXF1aXJlKCcuL2xpYi9lcnJvcnMnKQoKY29uc3QgZGVmYXVsdFJlYWRCdWZmZXJTaXplID0gNjU1MzYKCm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGNsYXNzIFBpcGUgZXh0ZW5kcyBEdXBsZXggewogIGNvbnN0cnVjdG9yKHBhdGgsIG9wdHMgPSB7fSkgewogICAgc3VwZXIoeyBlYWdlck9wZW46IHRydWUgfSkKCiAgICBpZiAodHlwZW9mIHBhdGggPT09ICdvYmplY3QnICYmIHBhdGggIT09IG51bGwpIHsKICAgICAgb3B0cyA9IHBhdGgKICAgICAgcGF0aCA9IG51bGwKICAgIH0KCiAgICBjb25zdCB7IHJlYWRCdWZmZXJTaXplID0gZGVmYXVsdFJlYWRCdWZmZXJTaXplLCBhbGxvd0hhbGZPcGVuID0gdHJ1ZSB9ID0KICAgICAgb3B0cwoKICAgIHRoaXMuX3N0YXRlID0gMAoKICAgIHRoaXMuX2FsbG93SGFsZk9wZW4gPSBhbGxvd0hhbGZPcGVuCgogICAgdGhpcy5fZmQgPSAtMQogICAgdGhpcy5fcGF0aCA9IG51bGwKCiAgICB0aGlzLl9wZW5kaW5nT3BlbiA9IG51bGwKICAgIHRoaXMuX3BlbmRpbmdXcml0ZSA9IG51bGwKICAgIHRoaXMuX3BlbmRpbmdGaW5hbCA9IG51bGwKICAgIHRoaXMuX3BlbmRpbmdEZXN0cm95ID0gbnVsbAoKICAgIHRoaXMuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvYyhyZWFkQnVmZmVyU2l6ZSkKCiAgICB0aGlzLl9oYW5kbGUgPSBiaW5kaW5nLmluaXQoCiAgICAgIHRoaXMuX2J1ZmZlciwKICAgICAgdGhpcywKICAgICAgbm9vcCwKICAgICAgdGhpcy5fb25jb25uZWN0LAogICAgICB0aGlzLl9vbndyaXRlLAogICAgICB0aGlzLl9vbmZpbmFsLAogICAgICB0aGlzLl9vbnJlYWQsCiAgICAgIHRoaXMuX29uY2xvc2UKICAgICkKCiAgICBpZiAodHlwZW9mIHBhdGggPT09ICdudW1iZXInKSB7CiAgICAgIHRoaXMub3BlbihwYXRoKQogICAgfSBlbHNlIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHsKICAgICAgdGhpcy5jb25uZWN0KHBhdGgpCiAgICB9CiAgfQoKICBnZXQgY29ubmVjdGluZygpIHsKICAgIHJldHVybiAodGhpcy5fc3RhdGUgJiBjb25zdGFudHMuc3RhdGUuQ09OTkVDVElORykgIT09IDAKICB9CgogIGdldCBwZW5kaW5nKCkgewogICAgcmV0dXJuICh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5DT05ORUNURUQpID09PSAwCiAgfQoKICBnZXQgcmVhZHlTdGF0ZSgpIHsKICAgIGlmICgKICAgICAgdGhpcy5fc3RhdGUgJiBjb25zdGFudHMuc3RhdGUuUkVBREFCTEUgJiYKICAgICAgdGhpcy5fc3RhdGUgJiBjb25zdGFudHMuc3RhdGUuV1JJVEFCTEUKICAgICkgewogICAgICByZXR1cm4gJ29wZW4nCiAgICB9CgogICAgaWYgKHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLlJFQURBQkxFKSB7CiAgICAgIHJldHVybiAncmVhZE9ubHknCiAgICB9CgogICAgaWYgKHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLldSSVRBQkxFKSB7CiAgICAgIHJldHVybiAnd3JpdGVPbmx5JwogICAgfQoKICAgIHJldHVybiAnb3BlbmluZycKICB9CgogIG9wZW4oZmQsIG9wdHMgPSB7fSwgb25jb25uZWN0KSB7CiAgICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHsKICAgICAgb25jb25uZWN0ID0gb3B0cwogICAgICBvcHRzID0ge30KICAgIH0KCiAgICBpZiAodHlwZW9mIGZkID09PSAnb2JqZWN0JyAmJiBmZCAhPT0gbnVsbCkgewogICAgICBvcHRzID0gZmQgfHwge30KICAgICAgZmQgPSBvcHRzLmZkCiAgICB9CgogICAgdHJ5IHsKICAgICAgY29uc3Qgc3RhdHVzID0gYmluZGluZy5vcGVuKHRoaXMuX2hhbmRsZSwgZmQpCgogICAgICB0aGlzLl9zdGF0ZSB8PSBjb25zdGFudHMuc3RhdGUuQ09OTkVDVEVECiAgICAgIHRoaXMuX2ZkID0gZmQKCiAgICAgIGlmIChzdGF0dXMgJiBiaW5kaW5nLlJFQURBQkxFKSB7CiAgICAgICAgdGhpcy5fc3RhdGUgfD0gY29uc3RhbnRzLnN0YXRlLlJFQURBQkxFCiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5wdXNoKG51bGwpCiAgICAgIH0KCiAgICAgIGlmIChzdGF0dXMgJiBiaW5kaW5nLldSSVRBQkxFKSB7CiAgICAgICAgdGhpcy5fc3RhdGUgfD0gY29uc3RhbnRzLnN0YXRlLldSSVRBQkxFCiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5lbmQoKQogICAgICB9CgogICAgICBpZiAob25jb25uZWN0KSB0aGlzLm9uY2UoJ2Nvbm5lY3QnLCBvbmNvbm5lY3QpCgogICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLmVtaXQoJ2Nvbm5lY3QnKSkKICAgIH0gY2F0Y2ggKGVycikgewogICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7CiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdPcGVuKSB0aGlzLl9wZW5kaW5nT3BlbihlcnIpCiAgICAgICAgZWxzZSB0aGlzLmRlc3Ryb3koZXJyKQogICAgICB9KQogICAgfQoKICAgIHJldHVybiB0aGlzCiAgfQoKICBjb25uZWN0KHBhdGgsIG9wdHMgPSB7fSwgb25jb25uZWN0KSB7CiAgICBpZiAoCiAgICAgIHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLkNPTk5FQ1RJTkcgfHwKICAgICAgdGhpcy5fc3RhdGUgJiBjb25zdGFudHMuc3RhdGUuQ09OTkVDVEVECiAgICApIHsKICAgICAgdGhyb3cgZXJyb3JzLlBJUEVfQUxSRUFEWV9DT05ORUNURUQoJ1BpcGUgaXMgYWxyZWFkeSBjb25uZWN0ZWQnKQogICAgfQoKICAgIHRoaXMuX3N0YXRlIHw9IGNvbnN0YW50cy5zdGF0ZS5DT05ORUNUSU5HCgogICAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIG9uY29ubmVjdCA9IG9wdHMKICAgICAgb3B0cyA9IHt9CiAgICB9CgogICAgaWYgKHR5cGVvZiBwYXRoID09PSAnb2JqZWN0JyAmJiBwYXRoICE9PSBudWxsKSB7CiAgICAgIG9wdHMgPSBwYXRoIHx8IHt9CiAgICAgIHBhdGggPSBvcHRzLnBhdGgKICAgIH0KCiAgICB0cnkgewogICAgICBiaW5kaW5nLmNvbm5lY3QodGhpcy5faGFuZGxlLCBwYXRoKQoKICAgICAgdGhpcy5fcGF0aCA9IHBhdGgKCiAgICAgIGlmIChvbmNvbm5lY3QpIHRoaXMub25jZSgnY29ubmVjdCcsIG9uY29ubmVjdCkKICAgIH0gY2F0Y2ggKGVycikgewogICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7CiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdPcGVuKSB0aGlzLl9wZW5kaW5nT3BlbihlcnIpCiAgICAgICAgZWxzZSB0aGlzLmRlc3Ryb3koZXJyKQogICAgICB9KQogICAgfQoKICAgIHJldHVybiB0aGlzCiAgfQoKICByZWYoKSB7CiAgICBiaW5kaW5nLnJlZih0aGlzLl9oYW5kbGUpCiAgfQoKICB1bnJlZigpIHsKICAgIGJpbmRpbmcudW5yZWYodGhpcy5faGFuZGxlKQogIH0KCiAgX29wZW4oY2IpIHsKICAgIGlmICh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5DT05ORUNURUQpIHJldHVybiBjYihudWxsKQogICAgdGhpcy5fcGVuZGluZ09wZW4gPSBjYgogIH0KCiAgX3JlYWQoKSB7CiAgICBpZiAoKHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLlJFQURJTkcpID09PSAwKSB7CiAgICAgIHRoaXMuX3N0YXRlIHw9IGNvbnN0YW50cy5zdGF0ZS5SRUFESU5HCiAgICAgIGJpbmRpbmcucmVzdW1lKHRoaXMuX2hhbmRsZSkKICAgIH0KICB9CgogIF93cml0ZXYoYmF0Y2gsIGNiKSB7CiAgICB0aGlzLl9wZW5kaW5nV3JpdGUgPSBbY2IsIGJhdGNoXQogICAgYmluZGluZy53cml0ZXYoCiAgICAgIHRoaXMuX2hhbmRsZSwKICAgICAgYmF0Y2gubWFwKCh7IGNodW5rIH0pID0+IGNodW5rKQogICAgKQogIH0KCiAgX2ZpbmFsKGNiKSB7CiAgICBpZiAoCiAgICAgIHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLlJFQURBQkxFICYmCiAgICAgIHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLldSSVRBQkxFCiAgICApIHsKICAgICAgdGhpcy5fcGVuZGluZ0ZpbmFsID0gY2IKICAgICAgYmluZGluZy5lbmQodGhpcy5faGFuZGxlKQogICAgfSBlbHNlIHsKICAgICAgY2IobnVsbCkKICAgIH0KICB9CgogIF9wcmVkZXN0cm95KCkgewogICAgaWYgKHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLkNMT1NJTkcpIHJldHVybgogICAgdGhpcy5fc3RhdGUgfD0gY29uc3RhbnRzLnN0YXRlLkNMT1NJTkcKICAgIGJpbmRpbmcuY2xvc2UodGhpcy5faGFuZGxlKQogIH0KCiAgX2Rlc3Ryb3koZXJyLCBjYikgewogICAgaWYgKHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLkNMT1NJTkcpIHJldHVybiBjYihlcnIpCiAgICB0aGlzLl9zdGF0ZSB8PSBjb25zdGFudHMuc3RhdGUuQ0xPU0lORwogICAgdGhpcy5fcGVuZGluZ0Rlc3Ryb3kgPSBjYgogICAgYmluZGluZy5jbG9zZSh0aGlzLl9oYW5kbGUpCiAgfQoKICBfY29udGludWVPcGVuKGVycikgewogICAgaWYgKHRoaXMuX3BlbmRpbmdPcGVuID09PSBudWxsKSByZXR1cm4KICAgIGNvbnN0IGNiID0gdGhpcy5fcGVuZGluZ09wZW4KICAgIHRoaXMuX3BlbmRpbmdPcGVuID0gbnVsbAogICAgY2IoZXJyKQogIH0KCiAgX2NvbnRpbnVlV3JpdGUoZXJyKSB7CiAgICBpZiAodGhpcy5fcGVuZGluZ1dyaXRlID09PSBudWxsKSByZXR1cm4KICAgIGNvbnN0IGNiID0gdGhpcy5fcGVuZGluZ1dyaXRlWzBdCiAgICB0aGlzLl9wZW5kaW5nV3JpdGUgPSBudWxsCiAgICBjYihlcnIpCiAgfQoKICBfY29udGludWVGaW5hbChlcnIpIHsKICAgIGlmICh0aGlzLl9wZW5kaW5nRmluYWwgPT09IG51bGwpIHJldHVybgogICAgY29uc3QgY2IgPSB0aGlzLl9wZW5kaW5nRmluYWwKICAgIHRoaXMuX3BlbmRpbmdGaW5hbCA9IG51bGwKICAgIGNiKGVycikKICB9CgogIF9jb250aW51ZURlc3Ryb3koKSB7CiAgICBpZiAodGhpcy5fcGVuZGluZ0Rlc3Ryb3kgPT09IG51bGwpIHJldHVybgogICAgY29uc3QgY2IgPSB0aGlzLl9wZW5kaW5nRGVzdHJveQogICAgdGhpcy5fcGVuZGluZ0Rlc3Ryb3kgPSBudWxsCiAgICBjYihudWxsKQogIH0KCiAgX29uY29ubmVjdChlcnIpIHsKICAgIGlmIChlcnIpIHsKICAgICAgaWYgKHRoaXMuX3BlbmRpbmdPcGVuKSB0aGlzLl9jb250aW51ZU9wZW4oZXJyKQogICAgICBlbHNlIHRoaXMuZGVzdHJveShlcnIpCiAgICAgIHJldHVybgogICAgfQoKICAgIHRoaXMuX3N0YXRlIHw9CiAgICAgIGNvbnN0YW50cy5zdGF0ZS5DT05ORUNURUQgfAogICAgICBjb25zdGFudHMuc3RhdGUuUkVBREFCTEUgfAogICAgICBjb25zdGFudHMuc3RhdGUuV1JJVEFCTEUKICAgIHRoaXMuX3N0YXRlICY9IH5jb25zdGFudHMuc3RhdGUuQ09OTkVDVElORwogICAgdGhpcy5fY29udGludWVPcGVuKCkKCiAgICB0aGlzLmVtaXQoJ2Nvbm5lY3QnKQogIH0KCiAgX29ucmVhZChlcnIsIHJlYWQpIHsKICAgIGlmIChlcnIpIHsKICAgICAgdGhpcy5kZXN0cm95KGVycikKICAgICAgcmV0dXJuCiAgICB9CgogICAgaWYgKHJlYWQgPT09IDApIHsKICAgICAgdGhpcy5wdXNoKG51bGwpCiAgICAgIGlmICh0aGlzLl9hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5lbmQoKQogICAgICByZXR1cm4KICAgIH0KCiAgICBjb25zdCBjb3B5ID0gQnVmZmVyLmFsbG9jVW5zYWZlKHJlYWQpCiAgICBjb3B5LnNldCh0aGlzLl9idWZmZXIuc3ViYXJyYXkoMCwgcmVhZCkpCgogICAgaWYgKHRoaXMucHVzaChjb3B5KSA9PT0gZmFsc2UgJiYgdGhpcy5kZXN0cm95aW5nID09PSBmYWxzZSkgewogICAgICB0aGlzLl9zdGF0ZSAmPSB+Y29uc3RhbnRzLnN0YXRlLlJFQURJTkcKICAgICAgYmluZGluZy5wYXVzZSh0aGlzLl9oYW5kbGUpCiAgICB9CiAgfQoKICBfb253cml0ZShlcnIpIHsKICAgIHRoaXMuX2NvbnRpbnVlV3JpdGUoZXJyKQogIH0KCiAgX29uZmluYWwoZXJyKSB7CiAgICB0aGlzLl9jb250aW51ZUZpbmFsKGVycikKICB9CgogIF9vbmNsb3NlKCkgewogICAgdGhpcy5faGFuZGxlID0gbnVsbAogICAgdGhpcy5fY29udGludWVEZXN0cm95KCkKICB9CgogIF9vbnNwYXduKHJlYWRhYmxlLCB3cml0YWJsZSkgewogICAgdGhpcy5fc3RhdGUgfD0gY29uc3RhbnRzLnN0YXRlLkNPTk5FQ1RFRAoKICAgIGlmIChyZWFkYWJsZSkgewogICAgICB0aGlzLl9zdGF0ZSB8PSBjb25zdGFudHMuc3RhdGUuUkVBREFCTEUKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMucHVzaChudWxsKQogICAgfQoKICAgIGlmICh3cml0YWJsZSkgewogICAgICB0aGlzLl9zdGF0ZSB8PSBjb25zdGFudHMuc3RhdGUuV1JJVEFCTEUKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuZW5kKCkKICAgIH0KCiAgICB0aGlzLl9jb250aW51ZU9wZW4oKQogIH0KfQoKZXhwb3J0cy5QaXBlID0gZXhwb3J0cwoKZXhwb3J0cy5waXBlID0gZnVuY3Rpb24gcGlwZSgpIHsKICByZXR1cm4gYmluZGluZy5waXBlKCkKfQoKZXhwb3J0cy5TZXJ2ZXIgPSBjbGFzcyBQaXBlU2VydmVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHsKICBjb25zdHJ1Y3RvcihvcHRzID0ge30sIG9uY29ubmVjdGlvbikgewogICAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIG9uY29ubmVjdGlvbiA9IG9wdHMKICAgICAgb3B0cyA9IHt9CiAgICB9CgogICAgc3VwZXIoKQoKICAgIGNvbnN0IHsgcmVhZEJ1ZmZlclNpemUgPSBkZWZhdWx0UmVhZEJ1ZmZlclNpemUsIGFsbG93SGFsZk9wZW4gPSB0cnVlIH0gPQogICAgICBvcHRzCgogICAgdGhpcy5fc3RhdGUgPSAwCgogICAgdGhpcy5fcmVhZEJ1ZmZlclNpemUgPSByZWFkQnVmZmVyU2l6ZQogICAgdGhpcy5fYWxsb3dIYWxmT3BlbiA9IGFsbG93SGFsZk9wZW4KCiAgICB0aGlzLl9wYXRoID0gbnVsbAogICAgdGhpcy5fY29ubmVjdGlvbnMgPSBuZXcgU2V0KCkKCiAgICB0aGlzLl9lcnJvciA9IG51bGwKICAgIHRoaXMuX2hhbmRsZSA9IG51bGwKCiAgICBpZiAob25jb25uZWN0aW9uKSB0aGlzLm9uKCdjb25uZWN0aW9uJywgb25jb25uZWN0aW9uKQogIH0KCiAgZ2V0IGxpc3RlbmluZygpIHsKICAgIHJldHVybiAodGhpcy5fc3RhdGUgJiBjb25zdGFudHMuc3RhdGUuQk9VTkQpICE9PSAwCiAgfQoKICBhZGRyZXNzKCkgewogICAgaWYgKCh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5CT1VORCkgPT09IDApIHsKICAgICAgcmV0dXJuIG51bGwKICAgIH0KCiAgICByZXR1cm4gdGhpcy5fcGF0aAogIH0KCiAgbGlzdGVuKHBhdGgsIGJhY2tsb2cgPSA1MTEsIG9wdHMgPSB7fSwgb25saXN0ZW5pbmcpIHsKICAgIGlmICgKICAgICAgdGhpcy5fc3RhdGUgJiBjb25zdGFudHMuc3RhdGUuQklORElORyB8fAogICAgICB0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5CT1VORAogICAgKSB7CiAgICAgIHRocm93IGVycm9ycy5TRVJWRVJfQUxSRUFEWV9MSVNURU5JTkcoJ1NlcnZlciBpcyBhbHJlYWR5IGxpc3RlbmluZycpCiAgICB9CgogICAgaWYgKHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLkNMT1NJTkcpIHsKICAgICAgdGhyb3cgZXJyb3JzLlNFUlZFUl9JU19DTE9TRUQoJ1NlcnZlciBpcyBjbG9zZWQnKQogICAgfQoKICAgIHRoaXMuX3N0YXRlIHw9IGNvbnN0YW50cy5zdGF0ZS5CSU5ESU5HCgogICAgaWYgKHR5cGVvZiBiYWNrbG9nID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIG9ubGlzdGVuaW5nID0gYmFja2xvZwogICAgICBiYWNrbG9nID0gNTExCiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIG9ubGlzdGVuaW5nID0gb3B0cwogICAgICBvcHRzID0ge30KICAgIH0KCiAgICBpZiAodHlwZW9mIHBhdGggPT09ICdvYmplY3QnICYmIHBhdGggIT09IG51bGwpIHsKICAgICAgb3B0cyA9IHBhdGggfHwge30KICAgICAgcGF0aCA9IG9wdHMucGF0aAogICAgICBiYWNrbG9nID0gb3B0cy5iYWNrbG9nIHx8IDUxMQogICAgfQoKICAgIHRoaXMuX2hhbmRsZSA9IGJpbmRpbmcuaW5pdCgKICAgICAgZW1wdHksCiAgICAgIHRoaXMsCiAgICAgIHRoaXMuX29uY29ubmVjdGlvbiwKICAgICAgbm9vcCwKICAgICAgbm9vcCwKICAgICAgbm9vcCwKICAgICAgbm9vcCwKICAgICAgdGhpcy5fb25jbG9zZQogICAgKQoKICAgIGlmICh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5VTlJFRkVEKSBiaW5kaW5nLnVucmVmKHRoaXMuX2hhbmRsZSkKCiAgICB0cnkgewogICAgICBiaW5kaW5nLmJpbmQodGhpcy5faGFuZGxlLCBwYXRoLCBiYWNrbG9nKQoKICAgICAgdGhpcy5fcGF0aCA9IHBhdGgKICAgICAgdGhpcy5fc3RhdGUgfD0gY29uc3RhbnRzLnN0YXRlLkJPVU5ECiAgICAgIHRoaXMuX3N0YXRlICY9IH5jb25zdGFudHMuc3RhdGUuQklORElORwoKICAgICAgaWYgKG9ubGlzdGVuaW5nKSB0aGlzLm9uY2UoJ2xpc3RlbmluZycsIG9ubGlzdGVuaW5nKQoKICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5lbWl0KCdsaXN0ZW5pbmcnKSkKICAgIH0gY2F0Y2ggKGVycikgewogICAgICB0aGlzLl9lcnJvciA9IGVycgoKICAgICAgYmluZGluZy5jbG9zZSh0aGlzLl9oYW5kbGUpCiAgICB9CgogICAgcmV0dXJuIHRoaXMKICB9CgogIGNsb3NlKG9uY2xvc2UpIHsKICAgIGlmIChvbmNsb3NlKSB0aGlzLm9uY2UoJ2Nsb3NlJywgb25jbG9zZSkKICAgIGlmICh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HKSByZXR1cm4KICAgIHRoaXMuX3N0YXRlIHw9IGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HCiAgICB0aGlzLl9jbG9zZU1heWJlKCkKICB9CgogIHJlZigpIHsKICAgIHRoaXMuX3N0YXRlICY9IH5jb25zdGFudHMuc3RhdGUuVU5SRUZFRAogICAgaWYgKHRoaXMuX2hhbmRsZSAhPT0gbnVsbCkgYmluZGluZy5yZWYodGhpcy5faGFuZGxlKQogIH0KCiAgdW5yZWYoKSB7CiAgICB0aGlzLl9zdGF0ZSB8PSBjb25zdGFudHMuc3RhdGUuVU5SRUZFRAogICAgaWYgKHRoaXMuX2hhbmRsZSAhPT0gbnVsbCkgYmluZGluZy51bnJlZih0aGlzLl9oYW5kbGUpCiAgfQoKICBfY2xvc2VNYXliZSgpIHsKICAgIGlmICh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HICYmIHRoaXMuX2Nvbm5lY3Rpb25zLnNpemUgPT09IDApIHsKICAgICAgaWYgKHRoaXMuX2hhbmRsZSAhPT0gbnVsbCkgYmluZGluZy5jbG9zZSh0aGlzLl9oYW5kbGUpCiAgICAgIGVsc2UgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5lbWl0KCdjbG9zZScpKQogICAgfQogIH0KCiAgX29uY29ubmVjdGlvbihlcnIpIHsKICAgIGlmIChlcnIpIHsKICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycikKICAgICAgcmV0dXJuCiAgICB9CgogICAgaWYgKHRoaXMuX3N0YXRlICYgY29uc3RhbnRzLnN0YXRlLkNMT1NJTkcpIHJldHVybgoKICAgIGNvbnN0IHBpcGUgPSBuZXcgZXhwb3J0cy5QaXBlKHsKICAgICAgcmVhZEJ1ZmZlclNpemU6IHRoaXMuX3JlYWRCdWZmZXJTaXplLAogICAgICBhbGxvd0hhbGZPcGVuOiB0aGlzLl9hbGxvd0hhbGZPcGVuCiAgICB9KQoKICAgIHRyeSB7CiAgICAgIGJpbmRpbmcuYWNjZXB0KHRoaXMuX2hhbmRsZSwgcGlwZS5faGFuZGxlKQoKICAgICAgcGlwZS5fcGF0aCA9IHRoaXMuX3BhdGgKICAgICAgcGlwZS5fc3RhdGUgfD0KICAgICAgICBjb25zdGFudHMuc3RhdGUuQ09OTkVDVEVEIHwKICAgICAgICBjb25zdGFudHMuc3RhdGUuUkVBREFCTEUgfAogICAgICAgIGNvbnN0YW50cy5zdGF0ZS5XUklUQUJMRQoKICAgICAgdGhpcy5fY29ubmVjdGlvbnMuYWRkKHBpcGUpCgogICAgICBwaXBlLm9uKCdjbG9zZScsICgpID0+IHsKICAgICAgICB0aGlzLl9jb25uZWN0aW9ucy5kZWxldGUocGlwZSkKICAgICAgICB0aGlzLl9jbG9zZU1heWJlKCkKICAgICAgfSkKCiAgICAgIHRoaXMuZW1pdCgnY29ubmVjdGlvbicsIHBpcGUpCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgcGlwZS5kZXN0cm95KCkKCiAgICAgIHRocm93IGVycgogICAgfQogIH0KCiAgX29uY2xvc2UoKSB7CiAgICBjb25zdCBlcnIgPSB0aGlzLl9lcnJvcgoKICAgIHRoaXMuX3N0YXRlICY9IH5jb25zdGFudHMuc3RhdGUuQklORElORwogICAgdGhpcy5fZXJyb3IgPSBudWxsCiAgICB0aGlzLl9oYW5kbGUgPSBudWxsCgogICAgaWYgKGVycikgdGhpcy5lbWl0KCdlcnJvcicsIGVycikKICAgIGVsc2UgdGhpcy5lbWl0KCdjbG9zZScpCiAgfQp9CgpleHBvcnRzLmNvbnN0YW50cyA9IGNvbnN0YW50cwpleHBvcnRzLmVycm9ycyA9IGVycm9ycwoKZXhwb3J0cy5jcmVhdGVDb25uZWN0aW9uID0gZnVuY3Rpb24gY3JlYXRlQ29ubmVjdGlvbihwYXRoLCBvcHRzLCBvbmNvbm5lY3QpIHsKICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHsKICAgIG9uY29ubmVjdCA9IG9wdHMKICAgIG9wdHMgPSB7fQogIH0KCiAgaWYgKHR5cGVvZiBwYXRoID09PSAnb2JqZWN0JyAmJiBwYXRoICE9PSBudWxsKSB7CiAgICBvcHRzID0gcGF0aCB8fCB7fQogICAgcGF0aCA9IG9wdHMucGF0aAogIH0KCiAgcmV0dXJuIG5ldyBleHBvcnRzLlBpcGUob3B0cykuY29ubmVjdChwYXRoLCBvcHRzLCBvbmNvbm5lY3QpCn0KCmV4cG9ydHMuY3JlYXRlU2VydmVyID0gZnVuY3Rpb24gY3JlYXRlU2VydmVyKG9wdHMsIG9uY29ubmVjdGlvbikgewogIHJldHVybiBuZXcgZXhwb3J0cy5TZXJ2ZXIob3B0cywgb25jb25uZWN0aW9uKQp9Cgpjb25zdCBlbXB0eSA9IEJ1ZmZlci5hbGxvYygwKQoKZnVuY3Rpb24gbm9vcCgpIHt9Cm1vZHVsZS5leHBvcnRzID0gewogIHN0YXRlOiB7CiAgICBDT05ORUNUSU5HOiAweDEsCiAgICBDT05ORUNURUQ6IDB4MiwKICAgIEJJTkRJTkc6IDB4NCwKICAgIEJPVU5EOiAweDgsCiAgICBSRUFESU5HOiAweDEwLAogICAgQ0xPU0lORzogMHgyMCwKICAgIFJFQURBQkxFOiAweDQwLAogICAgV1JJVEFCTEU6IDB4ODAKICB9Cn0KbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBQaXBlRXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgY29uc3RydWN0b3IobXNnLCBjb2RlLCBmbiA9IFBpcGVFcnJvcikgewogICAgc3VwZXIoYCR7Y29kZX06ICR7bXNnfWApCiAgICB0aGlzLmNvZGUgPSBjb2RlCgogICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7CiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIGZuKQogICAgfQogIH0KCiAgZ2V0IG5hbWUoKSB7CiAgICByZXR1cm4gJ1BpcGVFcnJvcicKICB9CgogIHN0YXRpYyBQSVBFX0FMUkVBRFlfQ09OTkVDVEVEKG1zZykgewogICAgcmV0dXJuIG5ldyBQaXBlRXJyb3IoCiAgICAgIG1zZywKICAgICAgJ1BJUEVfQUxSRUFEWV9DT05ORUNURUQnLAogICAgICBQaXBlRXJyb3IuUElQRV9BTFJFQURZX0NPTk5FQ1RFRAogICAgKQogIH0KCiAgc3RhdGljIFNFUlZFUl9BTFJFQURZX0xJU1RFTklORyhtc2cpIHsKICAgIHJldHVybiBuZXcgUGlwZUVycm9yKAogICAgICBtc2csCiAgICAgICdTRVJWRVJfQUxSRUFEWV9MSVNURU5JTkcnLAogICAgICBQaXBlRXJyb3IuU0VSVkVSX0FMUkVBRFlfTElTVEVOSU5HCiAgICApCiAgfQoKICBzdGF0aWMgU0VSVkVSX0lTX0NMT1NFRChtc2cpIHsKICAgIHJldHVybiBuZXcgUGlwZUVycm9yKG1zZywgJ1NFUlZFUl9JU19DTE9TRUQnLCBQaXBlRXJyb3IuU0VSVkVSX0lTX0NMT1NFRCkKICB9Cn0KewogICJuYW1lIjogImJhcmUtcGlwZSIsCiAgInZlcnNpb24iOiAiNC4wLjUiLAogICJkZXNjcmlwdGlvbiI6ICJOYXRpdmUgSS9PIHBpcGVzIGZvciBKYXZhU2NyaXB0IiwKICAiZXhwb3J0cyI6IHsKICAgICIuL3BhY2thZ2UiOiAiLi9wYWNrYWdlLmpzb24iLAogICAgIi4iOiB7CiAgICAgICJ0eXBlcyI6ICIuL2luZGV4LmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2luZGV4LmpzIgogICAgfSwKICAgICIuL2NvbnN0YW50cyI6IHsKICAgICAgInR5cGVzIjogIi4vbGliL2NvbnN0YW50cy5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9saWIvY29uc3RhbnRzLmpzIgogICAgfSwKICAgICIuL2Vycm9ycyI6IHsKICAgICAgInR5cGVzIjogIi4vbGliL2Vycm9ycy5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9saWIvZXJyb3JzLmpzIgogICAgfQogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJpbmRleC5kLnRzIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IiwKICAgICJsaWIiLAogICAgInByZWJ1aWxkcyIKICBdLAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJwcmV0dGllciAuIC0tY2hlY2sgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtcGlwZS5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXBpcGUvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXBpcGUjcmVhZG1lIiwKICAiZW5naW5lcyI6IHsKICAgICJiYXJlIjogIj49MS4xNi4wIgogIH0sCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJiYXJlLWV2ZW50cyI6ICJeMi4wLjAiLAogICAgImJhcmUtc3RyZWFtIjogIl4yLjAuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1wYXRoIjogIl4zLjAuMCIsCiAgICAiYnJpdHRsZSI6ICJeMy4yLjEiLAogICAgImNtYWtlLWJhcmUiOiAiXjEuMS42IiwKICAgICJwcmV0dGllciI6ICJeMy40LjEiLAogICAgInByZXR0aWVyLWNvbmZpZy1zdGFuZGFyZCI6ICJeNy4wLjAiCiAgfQp9CmNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2JhcmUtZXZlbnRzJykKY29uc3QgUGlwZSA9IHJlcXVpcmUoJ2JhcmUtcGlwZScpCmNvbnN0IFNpZ25hbCA9IHJlcXVpcmUoJ2JhcmUtc2lnbmFscycpCmNvbnN0IHR0eSA9IHJlcXVpcmUoJ2JhcmUtdHR5JykKY29uc3Qgb3MgPSByZXF1aXJlKCdiYXJlLW9zJykKY29uc3QgZW52ID0gcmVxdWlyZSgnYmFyZS1lbnYnKQpjb25zdCBocnRpbWUgPSByZXF1aXJlKCdiYXJlLWhydGltZScpCgpsZXQgc3RkaW4gPSBudWxsCmxldCBzdGRvdXQgPSBudWxsCmxldCBzdGRlcnIgPSBudWxsCgpjbGFzcyBQcm9jZXNzIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHsKICBjb25zdHJ1Y3RvcigpIHsKICAgIHN1cGVyKCkKCiAgICB0aGlzLl9zdGFydFRpbWUgPSBocnRpbWUuYmlnaW50KCkKCiAgICBFdmVudEVtaXR0ZXIuZm9yd2FyZChCYXJlLCB0aGlzLCBbCiAgICAgICd1bmNhdWdodEV4Y2VwdGlvbicsCiAgICAgICd1bmhhbmRsZWRSZWplY3Rpb24nLAogICAgICAnYmVmb3JlRXhpdCcsCiAgICAgICdleGl0JywKICAgICAgJ3N1c3BlbmQnLAogICAgICAnaWRsZScsCiAgICAgICdyZXN1bWUnCiAgICBdKQoKICAgIGNvbnN0IHNpZ25hbHMgPSBuZXcgU2lnbmFsLkVtaXR0ZXIoKQoKICAgIHNpZ25hbHMudW5yZWYoKQoKICAgIEV2ZW50RW1pdHRlci5mb3J3YXJkKHNpZ25hbHMsIHRoaXMsIFsKICAgICAgJ1NJR1RFUk0nLAogICAgICAnU0lHSU5UJywKICAgICAgJ1NJR1BJUEUnLAogICAgICAnU0lHSFVQJywKICAgICAgJ1NJR0JSRUFLJywKICAgICAgJ1NJR1dJTkNIJwogICAgXSkKICB9CgogIGdldCBzdGRpbigpIHsKICAgIGlmIChzdGRpbiA9PT0gbnVsbCkgewogICAgICBzdGRpbiA9IHR0eS5pc1RUWSgwKQogICAgICAgID8gbmV3IHR0eS5SZWFkU3RyZWFtKDApCiAgICAgICAgOiBuZXcgUGlwZSgwLCB7IGVhZ2VyT3BlbjogZmFsc2UgfSkKICAgICAgc3RkaW4uZmQgPSAwCiAgICB9CgogICAgcmV0dXJuIHN0ZGluCiAgfQoKICBnZXQgc3Rkb3V0KCkgewogICAgaWYgKHN0ZG91dCA9PT0gbnVsbCkgewogICAgICBzdGRvdXQgPSB0dHkuaXNUVFkoMSkKICAgICAgICA/IG5ldyB0dHkuV3JpdGVTdHJlYW0oMSkKICAgICAgICA6IG5ldyBQaXBlKDEsIHsgZWFnZXJPcGVuOiBmYWxzZSB9KQogICAgICBzdGRvdXQuZmQgPSAxCiAgICB9CgogICAgcmV0dXJuIHN0ZG91dAogIH0KCiAgZ2V0IHN0ZGVycigpIHsKICAgIGlmIChzdGRlcnIgPT09IG51bGwpIHsKICAgICAgc3RkZXJyID0gdHR5LmlzVFRZKDIpCiAgICAgICAgPyBuZXcgdHR5LldyaXRlU3RyZWFtKDIpCiAgICAgICAgOiBuZXcgUGlwZSgyLCB7IGVhZ2VyT3BlbjogZmFsc2UgfSkKICAgICAgc3RkZXJyLmZkID0gMgogICAgfQoKICAgIHJldHVybiBzdGRlcnIKICB9CgogIGdldCBwbGF0Zm9ybSgpIHsKICAgIHJldHVybiBvcy5wbGF0Zm9ybSgpCiAgfQoKICBnZXQgYXJjaCgpIHsKICAgIHJldHVybiBvcy5hcmNoKCkKICB9CgogIGdldCB0aXRsZSgpIHsKICAgIHJldHVybiBvcy5nZXRQcm9jZXNzVGl0bGUoKQogIH0KCiAgc2V0IHRpdGxlKHRpdGxlKSB7CiAgICBvcy5zZXRQcm9jZXNzVGl0bGUodGl0bGUpCiAgfQoKICBnZXQgcGlkKCkgewogICAgcmV0dXJuIG9zLnBpZCgpCiAgfQoKICBnZXQgcHBpZCgpIHsKICAgIHJldHVybiBvcy5wcGlkKCkKICB9CgogIGdldCBhcmd2KCkgewogICAgcmV0dXJuIEJhcmUuYXJndgogIH0KCiAgZ2V0IGV4ZWNQYXRoKCkgewogICAgcmV0dXJuIG9zLmV4ZWNQYXRoKCkKICB9CgogIGdldCBleGl0Q29kZSgpIHsKICAgIHJldHVybiBCYXJlLmV4aXRDb2RlCiAgfQoKICBzZXQgZXhpdENvZGUoY29kZSkgewogICAgQmFyZS5leGl0Q29kZSA9IGNvZGUKICB9CgogIGdldCB2ZXJzaW9uKCkgewogICAgcmV0dXJuIEJhcmUudmVyc2lvbgogIH0KCiAgZ2V0IHZlcnNpb25zKCkgewogICAgcmV0dXJuIEJhcmUudmVyc2lvbnMKICB9CgogIGdldCBlbnYoKSB7CiAgICByZXR1cm4gZW52CiAgfQoKICBnZXQgaHJ0aW1lKCkgewogICAgcmV0dXJuIGhydGltZQogIH0KCiAgZXhpdChjb2RlKSB7CiAgICBCYXJlLmV4aXQoY29kZSkKICB9CgogIHN1c3BlbmQoKSB7CiAgICBCYXJlLnN1c3BlbmQoKQogIH0KCiAgcmVzdW1lKCkgewogICAgQmFyZS5yZXN1bWUoKQogIH0KCiAgY3dkKCkgewogICAgcmV0dXJuIG9zLmN3ZCgpCiAgfQoKICBjaGRpcihkaXJlY3RvcnkpIHsKICAgIG9zLmNoZGlyKGRpcmVjdG9yeSkKICB9CgogIGtpbGwocGlkLCBzaWduYWwpIHsKICAgIG9zLmtpbGwocGlkLCBzaWduYWwpCiAgfQoKICB1cHRpbWUoKSB7CiAgICByZXR1cm4gTnVtYmVyKGhydGltZS5iaWdpbnQoKSAtIHRoaXMuX3N0YXJ0VGltZSkgLyAxZTkKICB9CgogIGNwdVVzYWdlKHByZXZpb3VzKSB7CiAgICByZXR1cm4gb3MuY3B1VXNhZ2UocHJldmlvdXMpCiAgfQoKICB0aHJlYWRDcHVVc2FnZShwcmV2aW91cykgewogICAgcmV0dXJuIG9zLnRocmVhZENwdVVzYWdlKHByZXZpb3VzKQogIH0KCiAgcmVzb3VyY2VVc2FnZSgpIHsKICAgIHJldHVybiBvcy5yZXNvdXJjZVVzYWdlKCkKICB9CgogIG1lbW9yeVVzYWdlKCkgewogICAgcmV0dXJuIG9zLm1lbW9yeVVzYWdlKCkKICB9CgogIG5leHRUaWNrKGNiLCAuLi5hcmdzKSB7CiAgICBxdWV1ZU1pY3JvdGFzayhjYi5iaW5kKG51bGwsIC4uLmFyZ3MpKQogIH0KCiAgW1N5bWJvbC5mb3IoJ2JhcmUuaW5zcGVjdCcpXSgpIHsKICAgIHJldHVybiB7CiAgICAgIF9fcHJvdG9fXzogeyBjb25zdHJ1Y3RvcjogUHJvY2VzcyB9LAoKICAgICAgcGxhdGZvcm06IHRoaXMucGxhdGZvcm0sCiAgICAgIGFyY2g6IHRoaXMuYXJjaCwKICAgICAgdGl0bGU6IHRoaXMudGl0bGUsCiAgICAgIHBpZDogdGhpcy5waWQsCiAgICAgIHBwaWQ6IHRoaXMucHBpZCwKICAgICAgYXJndjogdGhpcy5hcmd2LAogICAgICBleGVjUGF0aDogdGhpcy5leGVjUGF0aCwKICAgICAgZXhpdENvZGU6IHRoaXMuZXhpdENvZGUsCiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbiwKICAgICAgdmVyc2lvbnM6IHRoaXMudmVyc2lvbnMsCiAgICAgIGVudjogdGhpcy5lbnYKICAgIH0KICB9Cn0KCm1vZHVsZS5leHBvcnRzID0gbmV3IFByb2Nlc3MoKQp7CiAgIm5hbWUiOiAiYmFyZS1wcm9jZXNzIiwKICAidmVyc2lvbiI6ICI0LjIuMSIsCiAgImRlc2NyaXB0aW9uIjogIk5vZGUuanMtY29tcGF0aWJsZSBwcm9jZXNzIGNvbnRyb2wgZm9yIEJhcmUiLAogICJleHBvcnRzIjogewogICAgIi4iOiB7CiAgICAgICJ0eXBlcyI6ICIuL2luZGV4LmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2luZGV4LmpzIgogICAgfSwKICAgICIuL2dsb2JhbCI6IHsKICAgICAgInR5cGVzIjogIi4vZ2xvYmFsLmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2dsb2JhbC5qcyIKICAgIH0sCiAgICAiLi9wYWNrYWdlIjogIi4vcGFja2FnZS5qc29uIgogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJpbmRleC5kLnRzIiwKICAgICJnbG9iYWwuanMiLAogICAgImdsb2JhbC5kLnRzIgogIF0sCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJwcmV0dGllciAuIC0tY2hlY2sgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtcHJvY2Vzcy5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXByb2Nlc3MvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXByb2Nlc3MjcmVhZG1lIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtZW52IjogIl4zLjAuMCIsCiAgICAiYmFyZS1ldmVudHMiOiAiXjIuMy4xIiwKICAgICJiYXJlLWhydGltZSI6ICJeMi4wLjAiLAogICAgImJhcmUtb3MiOiAiXjMuNS4wIiwKICAgICJiYXJlLXBpcGUiOiAiXjQuMC4wIiwKICAgICJiYXJlLXNpZ25hbHMiOiAiXjQuMC4wIiwKICAgICJiYXJlLXR0eSI6ICJeNS4wLjAiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuMi4xIiwKICAgICJwcmV0dGllciI6ICJeMy40LjEiLAogICAgInByZXR0aWVyLWNvbmZpZy1zdGFuZGFyZCI6ICJeNy4wLjAiCiAgfQp9CmV4cG9ydHMuY29uc3RhbnRzID0gcmVxdWlyZSgnLi9saWIvY29uc3RhbnRzJykKZXhwb3J0cy5lcnJvcnMgPSByZXF1aXJlKCcuL2xpYi9lcnJvcnMnKQoKY29uc3QgVmVyc2lvbiA9IGV4cG9ydHMuVmVyc2lvbiA9IHJlcXVpcmUoJy4vbGliL3ZlcnNpb24nKQpjb25zdCBSYW5nZSA9IGV4cG9ydHMuUmFuZ2UgPSByZXF1aXJlKCcuL2xpYi9yYW5nZScpCmV4cG9ydHMuQ29tcGFyYXRvciA9IHJlcXVpcmUoJy4vbGliL2NvbXBhcmF0b3InKQoKZXhwb3J0cy5zYXRpc2ZpZXMgPSBmdW5jdGlvbiBzYXRpc2ZpZXMgKHZlcnNpb24sIHJhbmdlKSB7CiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnc3RyaW5nJykgdmVyc2lvbiA9IFZlcnNpb24ucGFyc2UodmVyc2lvbikKICBpZiAodHlwZW9mIHJhbmdlID09PSAnc3RyaW5nJykgcmFuZ2UgPSBSYW5nZS5wYXJzZShyYW5nZSkKCiAgcmV0dXJuIHJhbmdlLnRlc3QodmVyc2lvbikKfQpjb25zdCBjb25zdGFudHMgPSByZXF1aXJlKCcuL2NvbnN0YW50cycpCgpjb25zdCBzeW1ib2xzID0gewogIFtjb25zdGFudHMuRVFdOiAnPScsCiAgW2NvbnN0YW50cy5MVF06ICc8JywKICBbY29uc3RhbnRzLkxURV06ICc8PScsCiAgW2NvbnN0YW50cy5HVF06ICc+JywKICBbY29uc3RhbnRzLkdURV06ICc+PScKfQoKbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBDb21wYXJhdG9yIHsKICBjb25zdHJ1Y3RvciAob3BlcmF0b3IsIHZlcnNpb24pIHsKICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcgogICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbgogIH0KCiAgdGVzdCAodmVyc2lvbikgewogICAgY29uc3QgcmVzdWx0ID0gdmVyc2lvbi5jb21wYXJlKHRoaXMudmVyc2lvbikKCiAgICBzd2l0Y2ggKHRoaXMub3BlcmF0b3IpIHsKICAgICAgY2FzZSBjb25zdGFudHMuTFQ6IHJldHVybiByZXN1bHQgPCAwCiAgICAgIGNhc2UgY29uc3RhbnRzLkxURTogcmV0dXJuIHJlc3VsdCA8PSAwCiAgICAgIGNhc2UgY29uc3RhbnRzLkdUOiByZXR1cm4gcmVzdWx0ID4gMAogICAgICBjYXNlIGNvbnN0YW50cy5HVEU6IHJldHVybiByZXN1bHQgPj0gMAogICAgICBkZWZhdWx0OiByZXR1cm4gcmVzdWx0ID09PSAwCiAgICB9CiAgfQoKICB0b1N0cmluZyAoKSB7CiAgICByZXR1cm4gc3ltYm9sc1t0aGlzLm9wZXJhdG9yXSArIHRoaXMudmVyc2lvbgogIH0KfQptb2R1bGUuZXhwb3J0cyA9IHsKICBFUTogMSwKICBMVDogMiwKICBMVEU6IDMsCiAgR1Q6IDQsCiAgR1RFOiA1Cn0KbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBTZW1WZXJFcnJvciBleHRlbmRzIEVycm9yIHsKICBjb25zdHJ1Y3RvciAobXNnLCBjb2RlLCBmbiA9IFNlbVZlckVycm9yKSB7CiAgICBzdXBlcihgJHtjb2RlfTogJHttc2d9YCkKICAgIHRoaXMuY29kZSA9IGNvZGUKCiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHsKICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgZm4pCiAgICB9CiAgfQoKICBnZXQgbmFtZSAoKSB7CiAgICByZXR1cm4gJ1NlbVZlckVycm9yJwogIH0KCiAgc3RhdGljIElOVkFMSURfVkVSU0lPTiAobXNnLCBmbiA9IFNlbVZlckVycm9yLklOVkFMSURfVkVSU0lPTikgewogICAgcmV0dXJuIG5ldyBTZW1WZXJFcnJvcihtc2csICdJTlZBTElEX1ZFUlNJT04nLCBmbikKICB9CgogIHN0YXRpYyBJTlZBTElEX1JBTkdFIChtc2csIGZuID0gU2VtVmVyRXJyb3IuSU5WQUxJRF9SQU5HRSkgewogICAgcmV0dXJuIG5ldyBTZW1WZXJFcnJvcihtc2csICdJTlZBTElEX1JBTkdFJywgZm4pCiAgfQp9CmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJykKY29uc3QgZXJyb3JzID0gcmVxdWlyZSgnLi9lcnJvcnMnKQpjb25zdCBWZXJzaW9uID0gcmVxdWlyZSgnLi92ZXJzaW9uJykKY29uc3QgQ29tcGFyYXRvciA9IHJlcXVpcmUoJy4vY29tcGFyYXRvcicpCgpjb25zdCBSYW5nZSA9IG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGNsYXNzIFJhbmdlIHsKICBjb25zdHJ1Y3RvciAoY29tcGFyYXRvcnMgPSBbXSkgewogICAgdGhpcy5jb21wYXJhdG9ycyA9IGNvbXBhcmF0b3JzCiAgfQoKICB0ZXN0ICh2ZXJzaW9uKSB7CiAgICBmb3IgKGNvbnN0IHNldCBvZiB0aGlzLmNvbXBhcmF0b3JzKSB7CiAgICAgIGxldCBtYXRjaGVzID0gdHJ1ZQoKICAgICAgZm9yIChjb25zdCBjb21wYXJhdG9yIG9mIHNldCkgewogICAgICAgIGlmIChjb21wYXJhdG9yLnRlc3QodmVyc2lvbikpIGNvbnRpbnVlCiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlCiAgICAgICAgYnJlYWsKICAgICAgfQoKICAgICAgaWYgKG1hdGNoZXMpIHJldHVybiB0cnVlCiAgICB9CgogICAgcmV0dXJuIGZhbHNlCiAgfQoKICB0b1N0cmluZyAoKSB7CiAgICBsZXQgcmVzdWx0ID0gJycKICAgIGxldCBmaXJzdCA9IHRydWUKCiAgICBmb3IgKGNvbnN0IHNldCBvZiB0aGlzLmNvbXBhcmF0b3JzKSB7CiAgICAgIGlmIChmaXJzdCkgZmlyc3QgPSBmYWxzZQogICAgICBlbHNlIHJlc3VsdCArPSAnIHx8ICcKCiAgICAgIHJlc3VsdCArPSBzZXQuam9pbignICcpCiAgICB9CgogICAgcmV0dXJuIHJlc3VsdAogIH0KfQoKZXhwb3J0cy5wYXJzZSA9IGZ1bmN0aW9uIHBhcnNlIChpbnB1dCwgc3RhdGUgPSB7IHBvc2l0aW9uOiAwLCBwYXJ0aWFsOiBmYWxzZSB9KSB7CiAgbGV0IGkgPSBzdGF0ZS5wb3NpdGlvbgogIGxldCBjCgogIGNvbnN0IHVuZXhwZWN0ZWQgPSAoZXhwZWN0ZWQpID0+IHsKICAgIGxldCBtc2cKCiAgICBpZiAoaSA+PSBpbnB1dC5sZW5ndGgpIHsKICAgICAgbXNnID0gYFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGluICcke2lucHV0fSdgCiAgICB9IGVsc2UgewogICAgICBtc2cgPSBgVW5leHBlY3RlZCB0b2tlbiAnJHtpbnB1dFtpXX0nIGluICcke2lucHV0fScgYXQgcG9zaXRpb24gJHtpfWAKICAgIH0KCiAgICBpZiAoZXhwZWN0ZWQpIG1zZyArPSBgLCAke2V4cGVjdGVkfWAKCiAgICB0aHJvdyBlcnJvcnMuSU5WQUxJRF9WRVJTSU9OKG1zZywgdW5leHBlY3RlZCkKICB9CgogIGNvbnN0IGNvbXBhcmF0b3JzID0gW10KCiAgd2hpbGUgKGkgPCBpbnB1dC5sZW5ndGgpIHsKICAgIGNvbnN0IHNldCA9IFtdCgogICAgd2hpbGUgKGkgPCBpbnB1dC5sZW5ndGgpIHsKICAgICAgYyA9IGlucHV0W2ldCgogICAgICBsZXQgb3BlcmF0b3IgPSBjb25zdGFudHMuRVEKCiAgICAgIGlmIChjID09PSAnPCcpIHsKICAgICAgICBvcGVyYXRvciA9IGNvbnN0YW50cy5MVAogICAgICAgIGMgPSBpbnB1dFsrK2ldCgogICAgICAgIGlmIChjID09PSAnPScpIHsKICAgICAgICAgIG9wZXJhdG9yID0gY29uc3RhbnRzLkxURQogICAgICAgICAgYyA9IGlucHV0WysraV0KICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJz4nKSB7CiAgICAgICAgb3BlcmF0b3IgPSBjb25zdGFudHMuR1QKICAgICAgICBjID0gaW5wdXRbKytpXQoKICAgICAgICBpZiAoYyA9PT0gJz0nKSB7CiAgICAgICAgICBvcGVyYXRvciA9IGNvbnN0YW50cy5HVEUKICAgICAgICAgIGMgPSBpbnB1dFsrK2ldCiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGMgPT09ICc9JykgewogICAgICAgIGMgPSBpbnB1dFsrK2ldCiAgICAgIH0KCiAgICAgIGNvbnN0IHN0YXRlID0geyBwb3NpdGlvbjogaSwgcGFydGlhbDogdHJ1ZSB9CgogICAgICBzZXQucHVzaChuZXcgQ29tcGFyYXRvcihvcGVyYXRvciwgVmVyc2lvbi5wYXJzZShpbnB1dCwgc3RhdGUpKSkKCiAgICAgIGMgPSBpbnB1dFtpID0gc3RhdGUucG9zaXRpb25dCgogICAgICB3aGlsZSAoYyA9PT0gJyAnKSBjID0gaW5wdXRbKytpXQoKICAgICAgaWYgKGMgPT09ICd8JyAmJiBpbnB1dFtpICsgMV0gPT09ICd8JykgewogICAgICAgIGMgPSBpbnB1dFtpICs9IDJdCgogICAgICAgIHdoaWxlIChjID09PSAnICcpIGMgPSBpbnB1dFsrK2ldCgogICAgICAgIGJyZWFrCiAgICAgIH0KCiAgICAgIGlmIChjICYmIGMgIT09ICc8JyAmJiBjICE9PSAnPicpIHVuZXhwZWN0ZWQoJ2V4cGVjdGVkIFwnfHxcJywgXCc8XCcsIG9yIFwnPlwnJykKICAgIH0KCiAgICBpZiAoc2V0Lmxlbmd0aCkgY29tcGFyYXRvcnMucHVzaChzZXQpCiAgfQoKICBpZiAoaSA8IGlucHV0Lmxlbmd0aCAmJiBzdGF0ZS5wYXJ0aWFsID09PSBmYWxzZSkgdW5leHBlY3RlZCgnZXhwZWN0ZWQgZW5kIG9mIGlucHV0JykKCiAgc3RhdGUucG9zaXRpb24gPSBpCgogIHJldHVybiBuZXcgUmFuZ2UoY29tcGFyYXRvcnMpCn0KY29uc3QgZXJyb3JzID0gcmVxdWlyZSgnLi9lcnJvcnMnKQoKY29uc3QgVmVyc2lvbiA9IG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGNsYXNzIFZlcnNpb24gewogIGNvbnN0cnVjdG9yIChtYWpvciwgbWlub3IsIHBhdGNoLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IHsKICAgICAgcHJlcmVsZWFzZSA9IFtdLAogICAgICBidWlsZCA9IFtdCiAgICB9ID0gb3B0cwoKICAgIHRoaXMubWFqb3IgPSBtYWpvcgogICAgdGhpcy5taW5vciA9IG1pbm9yCiAgICB0aGlzLnBhdGNoID0gcGF0Y2gKICAgIHRoaXMucHJlcmVsZWFzZSA9IHByZXJlbGVhc2UKICAgIHRoaXMuYnVpbGQgPSBidWlsZAogIH0KCiAgY29tcGFyZSAodmVyc2lvbikgewogICAgcmV0dXJuIGV4cG9ydHMuY29tcGFyZSh0aGlzLCB2ZXJzaW9uKQogIH0KCiAgdG9TdHJpbmcgKCkgewogICAgbGV0IHJlc3VsdCA9IGAke3RoaXMubWFqb3J9LiR7dGhpcy5taW5vcn0uJHt0aGlzLnBhdGNofWAKCiAgICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCkgewogICAgICByZXN1bHQgKz0gJy0nICsgdGhpcy5wcmVyZWxlYXNlLmpvaW4oJy4nKQogICAgfQoKICAgIGlmICh0aGlzLmJ1aWxkLmxlbmd0aCkgewogICAgICByZXN1bHQgKz0gJysnICsgdGhpcy5idWlsZC5qb2luKCcuJykKICAgIH0KCiAgICByZXR1cm4gcmVzdWx0CiAgfQp9CgpleHBvcnRzLnBhcnNlID0gZnVuY3Rpb24gcGFyc2UgKGlucHV0LCBzdGF0ZSA9IHsgcG9zaXRpb246IDAsIHBhcnRpYWw6IGZhbHNlIH0pIHsKICBsZXQgaSA9IHN0YXRlLnBvc2l0aW9uCiAgbGV0IGMKCiAgY29uc3QgdW5leHBlY3RlZCA9IChleHBlY3RlZCkgPT4gewogICAgbGV0IG1zZwoKICAgIGlmIChpID49IGlucHV0Lmxlbmd0aCkgewogICAgICBtc2cgPSBgVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgaW4gJyR7aW5wdXR9J2AKICAgIH0gZWxzZSB7CiAgICAgIG1zZyA9IGBVbmV4cGVjdGVkIHRva2VuICcke2lucHV0W2ldfScgaW4gJyR7aW5wdXR9JyBhdCBwb3NpdGlvbiAke2l9YAogICAgfQoKICAgIGlmIChleHBlY3RlZCkgbXNnICs9IGAsICR7ZXhwZWN0ZWR9YAoKICAgIHRocm93IGVycm9ycy5JTlZBTElEX1ZFUlNJT04obXNnLCB1bmV4cGVjdGVkKQogIH0KCiAgY29uc3QgY29tcG9uZW50cyA9IFtdCgogIHdoaWxlIChjb21wb25lbnRzLmxlbmd0aCA8IDMpIHsKICAgIGMgPSBpbnB1dFtpXQoKICAgIGlmIChjb21wb25lbnRzLmxlbmd0aCA+IDApIHsKICAgICAgaWYgKGMgPT09ICcuJykgYyA9IGlucHV0WysraV0KICAgICAgZWxzZSB1bmV4cGVjdGVkKCdleHBlY3RlZCBcJy5cJycpCiAgICB9CgogICAgaWYgKGMgPT09ICcwJykgewogICAgICBjb21wb25lbnRzLnB1c2goMCkKCiAgICAgIGkrKwogICAgfSBlbHNlIGlmIChjID49ICcxJyAmJiBjIDw9ICc5JykgewogICAgICBsZXQgaiA9IDAKICAgICAgZG8gYyA9IGlucHV0W2kgKyArK2pdCiAgICAgIHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5JykKCiAgICAgIGNvbXBvbmVudHMucHVzaChwYXJzZUludChpbnB1dC5zdWJzdHJpbmcoaSwgaSArIGopKSkKCiAgICAgIGkgKz0gagogICAgfSBlbHNlIHVuZXhwZWN0ZWQoJ2V4cGVjdGVkIC9bMC05XS8nKQogIH0KCiAgY29uc3QgcHJlcmVsZWFzZSA9IFtdCgogIGlmIChpbnB1dFtpXSA9PT0gJy0nKSB7CiAgICBpKysKCiAgICB3aGlsZSAodHJ1ZSkgewogICAgICBjID0gaW5wdXRbaV0KCiAgICAgIGxldCB0YWcgPSAnJwogICAgICBsZXQgaiA9IDAKCiAgICAgIHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5JykgYyA9IGlucHV0W2kgKyArK2pdCgogICAgICBsZXQgaXNOdW1lcmljID0gZmFsc2UKCiAgICAgIGlmIChqKSB7CiAgICAgICAgdGFnICs9IGlucHV0LnN1YnN0cmluZyhpLCBpICsgaikKCiAgICAgICAgYyA9IGlucHV0W2kgKz0gal0KCiAgICAgICAgaXNOdW1lcmljID0gdGFnWzBdICE9PSAnMCcgfHwgdGFnLmxlbmd0aCA9PT0gMQogICAgICB9CgogICAgICBqID0gMAoKICAgICAgd2hpbGUgKChjID49ICcwJyAmJiBjIDw9ICc5JykgfHwgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHx8IGMgPT09ICctJykgYyA9IGlucHV0W2kgKyArK2pdCgogICAgICBpZiAoaikgewogICAgICAgIHRhZyArPSBpbnB1dC5zdWJzdHJpbmcoaSwgaSArIGopCgogICAgICAgIGMgPSBpbnB1dFtpICs9IGpdCiAgICAgIH0gZWxzZSBpZiAoIWlzTnVtZXJpYykgdW5leHBlY3RlZCgnZXhwZWN0ZWQgL1thLXpBLVotXS8nKQoKICAgICAgcHJlcmVsZWFzZS5wdXNoKHRhZykKCiAgICAgIGlmIChjID09PSAnLicpIGMgPSBpbnB1dFsrK2ldCiAgICAgIGVsc2UgYnJlYWsKICAgIH0KICB9CgogIGNvbnN0IGJ1aWxkID0gW10KCiAgaWYgKGlucHV0W2ldID09PSAnKycpIHsKICAgIGkrKwoKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgIGMgPSBpbnB1dFtpXQoKICAgICAgbGV0IHRhZyA9ICcnCiAgICAgIGxldCBqID0gMAoKICAgICAgd2hpbGUgKChjID49ICcwJyAmJiBjIDw9ICc5JykgfHwgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHx8IGMgPT09ICctJykgYyA9IGlucHV0W2kgKyArK2pdCgogICAgICBpZiAoaikgewogICAgICAgIHRhZyArPSBpbnB1dC5zdWJzdHJpbmcoaSwgaSArIGopCgogICAgICAgIGMgPSBpbnB1dFtpICs9IGpdCiAgICAgIH0gZWxzZSB1bmV4cGVjdGVkKCdleHBlY3RlZCAvWzAtOWEtekEtWi1dLycpCgogICAgICBidWlsZC5wdXNoKHRhZykKCiAgICAgIGlmIChjID09PSAnLicpIGMgPSBpbnB1dFsrK2ldCiAgICAgIGVsc2UgYnJlYWsKICAgIH0KICB9CgogIGlmIChpIDwgaW5wdXQubGVuZ3RoICYmIHN0YXRlLnBhcnRpYWwgPT09IGZhbHNlKSB1bmV4cGVjdGVkKCdleHBlY3RlZCBlbmQgb2YgaW5wdXQnKQoKICBzdGF0ZS5wb3NpdGlvbiA9IGkKCiAgcmV0dXJuIG5ldyBWZXJzaW9uKC4uLmNvbXBvbmVudHMsIHsgcHJlcmVsZWFzZSwgYnVpbGQgfSkKfQoKY29uc3QgaW50ZWdlciA9IC9eWzAtOV0rJC8KCmV4cG9ydHMuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHsKICBpZiAoYS5tYWpvciA+IGIubWFqb3IpIHJldHVybiAxCiAgaWYgKGEubWFqb3IgPCBiLm1ham9yKSByZXR1cm4gLTEKCiAgaWYgKGEubWlub3IgPiBiLm1pbm9yKSByZXR1cm4gMQogIGlmIChhLm1pbm9yIDwgYi5taW5vcikgcmV0dXJuIC0xCgogIGlmIChhLnBhdGNoID4gYi5wYXRjaCkgcmV0dXJuIDEKICBpZiAoYS5wYXRjaCA8IGIucGF0Y2gpIHJldHVybiAtMQoKICBpZiAoYS5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGIucHJlcmVsZWFzZS5sZW5ndGggPT09IDAgPyAwIDogMQogIGlmIChiLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKSByZXR1cm4gLTEKCiAgbGV0IGkgPSAwCiAgZG8gewogICAgbGV0IHggPSBhLnByZXJlbGVhc2VbaV0KICAgIGxldCB5ID0gYi5wcmVyZWxlYXNlW2ldCgogICAgaWYgKHggPT09IHVuZGVmaW5lZCkgcmV0dXJuIHkgPT09IHVuZGVmaW5lZCA/IDAgOiAtMQogICAgaWYgKHkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDEKCiAgICBpZiAoeCA9PT0geSkgY29udGludWUKCiAgICBjb25zdCB4SW50ID0gaW50ZWdlci50ZXN0KHgpCiAgICBjb25zdCB5SW50ID0gaW50ZWdlci50ZXN0KHkpCgogICAgaWYgKHhJbnQgJiYgeUludCkgewogICAgICB4ID0gK3gKICAgICAgeSA9ICt5CiAgICB9IGVsc2UgewogICAgICBpZiAoeEludCkgcmV0dXJuIC0xCiAgICAgIGlmICh5SW50KSByZXR1cm4gMQogICAgfQoKICAgIHJldHVybiB4ID4geSA/IDEgOiAtMQogIH0gd2hpbGUgKCsraSkKfQp7CiAgIm5hbWUiOiAiYmFyZS1zZW12ZXIiLAogICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAiZGVzY3JpcHRpb24iOiAiTWluaW1hbCBzZW1hbnRpYyB2ZXJzaW9uaW5nIGxpYnJhcnkgZm9yIEJhcmUiLAogICJleHBvcnRzIjogewogICAgIi4iOiAiLi9pbmRleC5qcyIsCiAgICAiLi9wYWNrYWdlIjogIi4vcGFja2FnZS5qc29uIiwKICAgICIuL2NvbnN0YW50cyI6ICIuL2xpYi9jb25zdGFudHMuanMiLAogICAgIi4vZXJyb3JzIjogIi4vbGliL2Vycm9ycy5qcyIsCiAgICAiLi92ZXJzaW9uIjogIi4vbGliL3ZlcnNpb24uanMiLAogICAgIi4vcmFuZ2UiOiAiLi9saWIvcmFuZ2UuanMiLAogICAgIi4vY29tcGFyYXRvciI6ICIuL2xpYi9jb21wYXJhdG9yLmpzIgogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJsaWIiCiAgXSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJhcmUgdGVzdC5qcyIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXNlbXZlci5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXNlbXZlci9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtc2VtdmVyI3JlYWRtZSIsCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJicml0dGxlIjogIl4zLjIuMSIsCiAgICAic3RhbmRhcmQiOiAiXjE3LjAuMCIKICB9Cn0KbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlLmFkZG9uKCkKLyogZ2xvYmFsIEJhcmUgKi8KY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnYmFyZS1ldmVudHMnKQpjb25zdCBvcyA9IHJlcXVpcmUoJ2JhcmUtb3MnKQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi9iaW5kaW5nJykKY29uc3QgZXJyb3JzID0gcmVxdWlyZSgnLi9saWIvZXJyb3JzJykKCmNvbnN0IHNpZ25hbHMgPSBvcy5jb25zdGFudHMuc2lnbmFscwoKbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gY2xhc3MgU2lnbmFsIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHsKICBjb25zdHJ1Y3RvcihzaWdudW0pIHsKICAgIHN1cGVyKCkKCiAgICBpZiAodHlwZW9mIHNpZ251bSA9PT0gJ3N0cmluZycpIHsKICAgICAgaWYgKHNpZ251bSBpbiBzaWduYWxzID09PSBmYWxzZSkgewogICAgICAgIHRocm93IGVycm9ycy5VTktOT1dOX1NJR05BTCgnVW5rbm93biBzaWduYWw6ICcgKyBzaWdudW0pCiAgICAgIH0KCiAgICAgIHNpZ251bSA9IHNpZ25hbHNbc2lnbnVtXQogICAgfQoKICAgIHRoaXMuX3NpZ251bSA9IHNpZ251bQogICAgdGhpcy5faGFuZGxlID0gYmluZGluZy5pbml0KHRoaXMsIHRoaXMuX29uc2lnbmFsLCB0aGlzLl9vbmNsb3NlKQogICAgdGhpcy5fY2xvc2luZyA9IG51bGwKICB9CgogIF9vbnNpZ25hbCgpIHsKICAgIHRoaXMuZW1pdCgnc2lnbmFsJywgdGhpcy5fc2lnbnVtKQogIH0KCiAgX29uY2xvc2UoKSB7CiAgICB0aGlzLl9oYW5kbGUgPSBudWxsCgogICAgdGhpcy5lbWl0KCdjbG9zZScpCiAgfQoKICBzdGFydCgpIHsKICAgIGJpbmRpbmcuc3RhcnQodGhpcy5faGFuZGxlLCB0aGlzLl9zaWdudW0pCiAgfQoKICBzdG9wKCkgewogICAgaWYgKHRoaXMuX2Nsb3NpbmcpIHJldHVybgogICAgYmluZGluZy5zdG9wKHRoaXMuX2hhbmRsZSkKICB9CgogIHJlZigpIHsKICAgIGJpbmRpbmcucmVmKHRoaXMuX2hhbmRsZSkKICB9CgogIHVucmVmKCkgewogICAgYmluZGluZy51bnJlZih0aGlzLl9oYW5kbGUpCiAgfQoKICBjbG9zZSgpIHsKICAgIGlmICh0aGlzLl9jbG9zaW5nKSByZXR1cm4gdGhpcy5fY2xvc2luZwogICAgdGhpcy5fY2xvc2luZyA9IEV2ZW50RW1pdHRlci5vbmNlKHRoaXMsICdjbG9zZScpCgogICAgYmluZGluZy5jbG9zZSh0aGlzLl9oYW5kbGUpCgogICAgcmV0dXJuIHRoaXMuX2Nsb3NpbmcKICB9CgogIHN0YXRpYyBzZW5kKHNpZ251bSwgcGlkID0gb3MucGlkKCkpIHsKICAgIG9zLmtpbGwocGlkLCBzaWdudW0pCiAgfQp9CgpleHBvcnRzLkVtaXR0ZXIgPSByZXF1aXJlKCcuL2xpYi9lbWl0dGVyJykKCmV4cG9ydHMuY29uc3RhbnRzID0gc2lnbmFscwpleHBvcnRzLmVycm9ycyA9IGVycm9ycwpjb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdiYXJlLWV2ZW50cycpCmNvbnN0IFNpZ25hbCA9IHJlcXVpcmUoJy4uJykKCm1vZHVsZS5leHBvcnRzID0gY2xhc3MgU2lnbmFsRW1pdHRlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7CiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpCgogICAgdGhpcy5fc2lnbmFscyA9IG5ldyBNYXAoKQogICAgdGhpcy5fdW5yZWZlZCA9IGZhbHNlCgogICAgdGhpcy5vbignbmV3TGlzdGVuZXInLCB0aGlzLl9vbm5ld2xpc3RlbmVyKS5vbigKICAgICAgJ3JlbW92ZUxpc3RlbmVyJywKICAgICAgdGhpcy5fb25yZW1vdmVsaXN0ZW5lcgogICAgKQogIH0KCiAgcmVmKCkgewogICAgdGhpcy5fdW5yZWZlZCA9IGZhbHNlCiAgICBmb3IgKGNvbnN0IHNpZ25hbCBvZiB0aGlzLl9zaWduYWxzLnZhbHVlcygpKSBzaWduYWwucmVmKCkKICB9CgogIHVucmVmKCkgewogICAgdGhpcy5fdW5yZWZlZCA9IHRydWUKICAgIGZvciAoY29uc3Qgc2lnbmFsIG9mIHRoaXMuX3NpZ25hbHMudmFsdWVzKCkpIHNpZ25hbC51bnJlZigpCiAgfQoKICBfb25uZXdsaXN0ZW5lcihuYW1lKSB7CiAgICBpZiAobmFtZSA9PT0gJ25ld0xpc3RlbmVyJyB8fCBuYW1lID09PSAncmVtb3ZlTGlzdGVuZXInKSByZXR1cm4KCiAgICBpZiAodGhpcy5saXN0ZW5lckNvdW50KG5hbWUpID09PSAwKSB7CiAgICAgIGNvbnN0IHNpZ25hbCA9IG5ldyBTaWduYWwobmFtZSkKCiAgICAgIHNpZ25hbC5vbignc2lnbmFsJywgdGhpcy5fb25zaWduYWwuYmluZCh0aGlzLCBuYW1lKSkuc3RhcnQoKQoKICAgICAgaWYgKHRoaXMuX3VucmVmZWQpIHNpZ25hbC51bnJlZigpCgogICAgICB0aGlzLl9zaWduYWxzLnNldChuYW1lLCBzaWduYWwpCiAgICB9CiAgfQoKICBfb25yZW1vdmVsaXN0ZW5lcihuYW1lKSB7CiAgICBpZiAobmFtZSA9PT0gJ25ld0xpc3RlbmVyJyB8fCBuYW1lID09PSAncmVtb3ZlTGlzdGVuZXInKSByZXR1cm4KCiAgICBpZiAodGhpcy5saXN0ZW5lckNvdW50KG5hbWUpID09PSAwKSB7CiAgICAgIGNvbnN0IHNpZ25hbCA9IHRoaXMuX3NpZ25hbHMuZ2V0KG5hbWUpCgogICAgICBpZiAodGhpcy5fdW5yZWZlZCkgc2lnbmFsLnJlZigpCgogICAgICBzaWduYWwuY2xvc2UoKQoKICAgICAgdGhpcy5fc2lnbmFscy5kZWxldGUobmFtZSkKICAgIH0KICB9CgogIF9vbnNpZ25hbChuYW1lKSB7CiAgICB0aGlzLmVtaXQobmFtZSkKICB9Cn0KbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBTaWduYWxFcnJvciBleHRlbmRzIEVycm9yIHsKICBjb25zdHJ1Y3Rvcihtc2csIGNvZGUsIGZuID0gU2lnbmFsRXJyb3IpIHsKICAgIHN1cGVyKGAke2NvZGV9OiAke21zZ31gKQogICAgdGhpcy5jb2RlID0gY29kZQoKICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkgewogICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBmbikKICAgIH0KICB9CgogIGdldCBuYW1lKCkgewogICAgcmV0dXJuICdTaWduYWxFcnJvcicKICB9CgogIHN0YXRpYyBVTktOT1dOX1NJR05BTChtc2cpIHsKICAgIHJldHVybiBuZXcgU2lnbmFsRXJyb3IobXNnLCAnVU5LTk9XTl9TSUdOQUwnLCBTaWduYWxFcnJvci5VTktOT1dOX1NJR05BTCkKICB9Cn0KewogICJuYW1lIjogImJhcmUtc2lnbmFscyIsCiAgInZlcnNpb24iOiAiNC4wLjIiLAogICJkZXNjcmlwdGlvbiI6ICJOYXRpdmUgc2lnbmFsIGhhbmRsaW5nIGZvciBKYXZhU2NyaXB0IiwKICAiZXhwb3J0cyI6IHsKICAgICIuIjogewogICAgICAidHlwZXMiOiAiLi9pbmRleC5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9pbmRleC5qcyIKICAgIH0sCiAgICAiLi9wYWNrYWdlIjogIi4vcGFja2FnZS5qc29uIiwKICAgICIuL2Vycm9ycyI6ICIuL2xpYi9lcnJvcnMuanMiLAogICAgIi4vZW1pdHRlciI6ICIuL2xpYi9lbWl0dGVyLmpzIgogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJpbmRleC5kLnRzIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IiwKICAgICJsaWIiLAogICAgInByZWJ1aWxkcyIKICBdLAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJwcmV0dGllciAuIC0tY2hlY2sgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtc2lnbmFscy5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXNpZ25hbHMvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXNpZ25hbHMjcmVhZG1lIiwKICAiZW5naW5lcyI6IHsKICAgICJiYXJlIjogIj49MS43LjAiCiAgfSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtZXZlbnRzIjogIl4yLjUuMyIsCiAgICAiYmFyZS1vcyI6ICJeMy4zLjEiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuMi4xIiwKICAgICJjbWFrZS1iYXJlIjogIl4xLjEuNiIsCiAgICAicHJldHRpZXIiOiAiXjMuNC4xIiwKICAgICJwcmV0dGllci1jb25maWctc3RhbmRhcmQiOiAiXjcuMC4wIgogIH0KfQpjb25zdCBzdHJlYW0gPSByZXF1aXJlKCdzdHJlYW14JykKCmNvbnN0IGRlZmF1bHRFbmNvZGluZyA9ICd1dGY4JwoKbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gc3RyZWFtLlN0cmVhbQoKZXhwb3J0cy5waXBlbGluZSA9IHN0cmVhbS5waXBlbGluZQoKZXhwb3J0cy5pc1N0cmVhbSA9IHN0cmVhbS5pc1N0cmVhbQpleHBvcnRzLmlzRW5kZWQgPSBzdHJlYW0uaXNFbmRlZApleHBvcnRzLmlzRmluaXNoZWQgPSBzdHJlYW0uaXNGaW5pc2hlZApleHBvcnRzLmlzRGlzdHVyYmVkID0gc3RyZWFtLmlzRGlzdHVyYmVkCgpleHBvcnRzLmdldFN0cmVhbUVycm9yID0gc3RyZWFtLmdldFN0cmVhbUVycm9yCgpleHBvcnRzLlN0cmVhbSA9IGV4cG9ydHMKCmV4cG9ydHMuUmVhZGFibGUgPSBjbGFzcyBSZWFkYWJsZSBleHRlbmRzIHN0cmVhbS5SZWFkYWJsZSB7CiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7CiAgICBzdXBlcih7CiAgICAgIC4uLm9wdHMsCiAgICAgIGJ5dGVMZW5ndGg6IG51bGwsCiAgICAgIGJ5dGVMZW5ndGhSZWFkYWJsZTogbnVsbCwKICAgICAgbWFwOiBudWxsLAogICAgICBtYXBSZWFkYWJsZTogbnVsbAogICAgfSkKCiAgICBpZiAodGhpcy5fY29uc3RydWN0KSB0aGlzLl9vcGVuID0gdGhpcy5fY29uc3RydWN0CgogICAgaWYgKHRoaXMuX3JlYWQgIT09IHN0cmVhbS5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQpIHsKICAgICAgdGhpcy5fcmVhZCA9IHJlYWQuYmluZCh0aGlzLCB0aGlzLl9yZWFkKQogICAgfQoKICAgIGlmICh0aGlzLl9kZXN0cm95ICE9PSBzdHJlYW0uU3RyZWFtLnByb3RvdHlwZS5fZGVzdHJveSkgewogICAgICB0aGlzLl9kZXN0cm95ID0gZGVzdHJveS5iaW5kKHRoaXMsIHRoaXMuX2Rlc3Ryb3kpCiAgICB9CiAgfQoKICBwdXNoKGNodW5rLCBlbmNvZGluZykgewogICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHsKICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcgfHwgZGVmYXVsdEVuY29kaW5nKQogICAgfQoKICAgIHJldHVybiBzdXBlci5wdXNoKGNodW5rKQogIH0KCiAgdW5zaGlmdChjaHVuaywgZW5jb2RpbmcpIHsKICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7CiAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nIHx8IGRlZmF1bHRFbmNvZGluZykKICAgIH0KCiAgICBzdXBlci51bnNoaWZ0KGNodW5rKQogIH0KfQoKZXhwb3J0cy5Xcml0YWJsZSA9IGNsYXNzIFdyaXRhYmxlIGV4dGVuZHMgc3RyZWFtLldyaXRhYmxlIHsKICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHsKICAgIHN1cGVyKHsKICAgICAgLi4ub3B0cywKICAgICAgYnl0ZUxlbmd0aDogbnVsbCwKICAgICAgYnl0ZUxlbmd0aFdyaXRhYmxlLAogICAgICBtYXA6IG51bGwsCiAgICAgIG1hcFdyaXRhYmxlOiBudWxsCiAgICB9KQoKICAgIGlmICh0aGlzLl9jb25zdHJ1Y3QpIHRoaXMuX29wZW4gPSB0aGlzLl9jb25zdHJ1Y3QKCiAgICBpZiAodGhpcy5fd3JpdGUgIT09IHN0cmVhbS5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlKSB7CiAgICAgIHRoaXMuX3dyaXRlID0gd3JpdGUuYmluZCh0aGlzLCB0aGlzLl93cml0ZSkKICAgIH0KCiAgICBpZiAodGhpcy5fZGVzdHJveSAhPT0gc3RyZWFtLlN0cmVhbS5wcm90b3R5cGUuX2Rlc3Ryb3kpIHsKICAgICAgdGhpcy5fZGVzdHJveSA9IGRlc3Ryb3kuYmluZCh0aGlzLCB0aGlzLl9kZXN0cm95KQogICAgfQogIH0KCiAgd3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYikgewogICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICBjYiA9IGVuY29kaW5nCiAgICAgIGVuY29kaW5nID0gbnVsbAogICAgfQoKICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgZGVmYXVsdEVuY29kaW5nCiAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKQogICAgfSBlbHNlIHsKICAgICAgZW5jb2RpbmcgPSAnYnVmZmVyJwogICAgfQoKICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLndyaXRlKHsgY2h1bmssIGVuY29kaW5nIH0pCgogICAgaWYgKGNiKSBzdHJlYW0uV3JpdGFibGUuZHJhaW5lZCh0aGlzKS50aGVuKCgpID0+IGNiKG51bGwpLCBjYikKCiAgICByZXR1cm4gcmVzdWx0CiAgfQoKICBlbmQoY2h1bmssIGVuY29kaW5nLCBjYikgewogICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykgewogICAgICBjYiA9IGNodW5rCiAgICAgIGNodW5rID0gbnVsbAogICAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHsKICAgICAgY2IgPSBlbmNvZGluZwogICAgICBlbmNvZGluZyA9IG51bGwKICAgIH0KCiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykgewogICAgICBlbmNvZGluZyA9IGVuY29kaW5nIHx8IGRlZmF1bHRFbmNvZGluZwogICAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyB8fCBkZWZhdWx0RW5jb2RpbmcpCiAgICB9IGVsc2UgewogICAgICBlbmNvZGluZyA9ICdidWZmZXInCiAgICB9CgogICAgY29uc3QgcmVzdWx0ID0KICAgICAgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiBjaHVuayAhPT0gbnVsbAogICAgICAgID8gc3VwZXIuZW5kKHsgY2h1bmssIGVuY29kaW5nIH0pCiAgICAgICAgOiBzdXBlci5lbmQoKQoKICAgIGlmIChjYikgdGhpcy5vbmNlKCdlbmQnLCAoKSA9PiBjYihudWxsKSkKCiAgICByZXR1cm4gcmVzdWx0CiAgfQp9CgpleHBvcnRzLkR1cGxleCA9IGNsYXNzIER1cGxleCBleHRlbmRzIHN0cmVhbS5EdXBsZXggewogIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkgewogICAgc3VwZXIoewogICAgICAuLi5vcHRzLAogICAgICBieXRlTGVuZ3RoOiBudWxsLAogICAgICBieXRlTGVuZ3RoUmVhZGFibGU6IG51bGwsCiAgICAgIGJ5dGVMZW5ndGhXcml0YWJsZSwKICAgICAgbWFwOiBudWxsLAogICAgICBtYXBSZWFkYWJsZTogbnVsbCwKICAgICAgbWFwV3JpdGFibGU6IG51bGwKICAgIH0pCgogICAgaWYgKHRoaXMuX2NvbnN0cnVjdCkgdGhpcy5fb3BlbiA9IHRoaXMuX2NvbnN0cnVjdAoKICAgIGlmICh0aGlzLl9yZWFkICE9PSBzdHJlYW0uUmVhZGFibGUucHJvdG90eXBlLl9yZWFkKSB7CiAgICAgIHRoaXMuX3JlYWQgPSByZWFkLmJpbmQodGhpcywgdGhpcy5fcmVhZCkKICAgIH0KCiAgICBpZiAodGhpcy5fd3JpdGUgIT09IHN0cmVhbS5EdXBsZXgucHJvdG90eXBlLl93cml0ZSkgewogICAgICB0aGlzLl93cml0ZSA9IHdyaXRlLmJpbmQodGhpcywgdGhpcy5fd3JpdGUpCiAgICB9CgogICAgaWYgKHRoaXMuX2Rlc3Ryb3kgIT09IHN0cmVhbS5TdHJlYW0ucHJvdG90eXBlLl9kZXN0cm95KSB7CiAgICAgIHRoaXMuX2Rlc3Ryb3kgPSBkZXN0cm95LmJpbmQodGhpcywgdGhpcy5fZGVzdHJveSkKICAgIH0KICB9CgogIHB1c2goY2h1bmssIGVuY29kaW5nKSB7CiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykgewogICAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyB8fCBkZWZhdWx0RW5jb2RpbmcpCiAgICB9CgogICAgcmV0dXJuIHN1cGVyLnB1c2goY2h1bmspCiAgfQoKICB1bnNoaWZ0KGNodW5rLCBlbmNvZGluZykgewogICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHsKICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcgfHwgZGVmYXVsdEVuY29kaW5nKQogICAgfQoKICAgIHN1cGVyLnVuc2hpZnQoY2h1bmspCiAgfQoKICB3cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGNiID0gZW5jb2RpbmcKICAgICAgZW5jb2RpbmcgPSBudWxsCiAgICB9CgogICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHsKICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBkZWZhdWx0RW5jb2RpbmcKICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpCiAgICB9IGVsc2UgewogICAgICBlbmNvZGluZyA9ICdidWZmZXInCiAgICB9CgogICAgY29uc3QgcmVzdWx0ID0gc3VwZXIud3JpdGUoeyBjaHVuaywgZW5jb2RpbmcgfSkKCiAgICBpZiAoY2IpIHN0cmVhbS5Xcml0YWJsZS5kcmFpbmVkKHRoaXMpLnRoZW4oKCkgPT4gY2IobnVsbCksIGNiKQoKICAgIHJldHVybiByZXN1bHQKICB9CgogIGVuZChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGNiID0gY2h1bmsKICAgICAgY2h1bmsgPSBudWxsCiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICBjYiA9IGVuY29kaW5nCiAgICAgIGVuY29kaW5nID0gbnVsbAogICAgfQoKICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgZGVmYXVsdEVuY29kaW5nCiAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKQogICAgfSBlbHNlIHsKICAgICAgZW5jb2RpbmcgPSAnYnVmZmVyJwogICAgfQoKICAgIGNvbnN0IHJlc3VsdCA9CiAgICAgIGNodW5rICE9PSB1bmRlZmluZWQgJiYgY2h1bmsgIT09IG51bGwKICAgICAgICA/IHN1cGVyLmVuZCh7IGNodW5rLCBlbmNvZGluZyB9KQogICAgICAgIDogc3VwZXIuZW5kKCkKCiAgICBpZiAoY2IpIHRoaXMub25jZSgnZW5kJywgKCkgPT4gY2IobnVsbCkpCgogICAgcmV0dXJuIHJlc3VsdAogIH0KfQoKZXhwb3J0cy5UcmFuc2Zvcm0gPSBjbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBzdHJlYW0uVHJhbnNmb3JtIHsKICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHsKICAgIHN1cGVyKHsKICAgICAgLi4ub3B0cywKICAgICAgYnl0ZUxlbmd0aDogbnVsbCwKICAgICAgYnl0ZUxlbmd0aFJlYWRhYmxlOiBudWxsLAogICAgICBieXRlTGVuZ3RoV3JpdGFibGUsCiAgICAgIG1hcDogbnVsbCwKICAgICAgbWFwUmVhZGFibGU6IG51bGwsCiAgICAgIG1hcFdyaXRhYmxlOiBudWxsCiAgICB9KQoKICAgIGlmICh0aGlzLl90cmFuc2Zvcm0gIT09IHN0cmVhbS5UcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm0pIHsKICAgICAgdGhpcy5fdHJhbnNmb3JtID0gdHJhbnNmb3JtLmJpbmQodGhpcywgdGhpcy5fdHJhbnNmb3JtKQogICAgfSBlbHNlIHsKICAgICAgdGhpcy5fdHJhbnNmb3JtID0gcGFzc3Rocm91Z2gKICAgIH0KICB9CgogIHB1c2goY2h1bmssIGVuY29kaW5nKSB7CiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykgewogICAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyB8fCBkZWZhdWx0RW5jb2RpbmcpCiAgICB9CgogICAgcmV0dXJuIHN1cGVyLnB1c2goY2h1bmspCiAgfQoKICB1bnNoaWZ0KGNodW5rLCBlbmNvZGluZykgewogICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHsKICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcgfHwgZGVmYXVsdEVuY29kaW5nKQogICAgfQoKICAgIHN1cGVyLnVuc2hpZnQoY2h1bmspCiAgfQoKICB3cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGNiID0gZW5jb2RpbmcKICAgICAgZW5jb2RpbmcgPSBudWxsCiAgICB9CgogICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHsKICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBkZWZhdWx0RW5jb2RpbmcKICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpCiAgICB9IGVsc2UgewogICAgICBlbmNvZGluZyA9ICdidWZmZXInCiAgICB9CgogICAgY29uc3QgcmVzdWx0ID0gc3VwZXIud3JpdGUoeyBjaHVuaywgZW5jb2RpbmcgfSkKCiAgICBpZiAoY2IpIHN0cmVhbS5Xcml0YWJsZS5kcmFpbmVkKHRoaXMpLnRoZW4oKCkgPT4gY2IobnVsbCksIGNiKQoKICAgIHJldHVybiByZXN1bHQKICB9CgogIGVuZChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGNiID0gY2h1bmsKICAgICAgY2h1bmsgPSBudWxsCiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICBjYiA9IGVuY29kaW5nCiAgICAgIGVuY29kaW5nID0gbnVsbAogICAgfQoKICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgZGVmYXVsdEVuY29kaW5nCiAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKQogICAgfSBlbHNlIHsKICAgICAgZW5jb2RpbmcgPSAnYnVmZmVyJwogICAgfQoKICAgIGNvbnN0IHJlc3VsdCA9CiAgICAgIGNodW5rICE9PSB1bmRlZmluZWQgJiYgY2h1bmsgIT09IG51bGwKICAgICAgICA/IHN1cGVyLmVuZCh7IGNodW5rLCBlbmNvZGluZyB9KQogICAgICAgIDogc3VwZXIuZW5kKCkKCiAgICBpZiAoY2IpIHRoaXMub25jZSgnZW5kJywgKCkgPT4gY2IobnVsbCkpCgogICAgcmV0dXJuIHJlc3VsdAogIH0KfQoKZXhwb3J0cy5QYXNzVGhyb3VnaCA9IGNsYXNzIFBhc3NUaHJvdWdoIGV4dGVuZHMgZXhwb3J0cy5UcmFuc2Zvcm0ge30KCmV4cG9ydHMuZmluaXNoZWQgPSBmdW5jdGlvbiBmaW5pc2hlZChzdHJlYW0sIG9wdHMsIGNiKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYiA9IG9wdHMKICAgIG9wdHMgPSB7fQogIH0KCiAgaWYgKCFvcHRzKSBvcHRzID0ge30KCiAgY29uc3QgeyBjbGVhbnVwID0gZmFsc2UgfSA9IG9wdHMKCiAgY29uc3QgZG9uZSA9ICgpID0+IHsKICAgIGNiKGV4cG9ydHMuZ2V0U3RyZWFtRXJyb3Ioc3RyZWFtLCB7IGFsbDogdHJ1ZSB9KSkKCiAgICBpZiAoY2xlYW51cCkgZGV0YWNoKCkKICB9CgogIGNvbnN0IGRldGFjaCA9ICgpID0+IHsKICAgIHN0cmVhbS5vZmYoJ2Nsb3NlJywgZG9uZSkKICAgIHN0cmVhbS5vZmYoJ2Vycm9yJywgbm9vcCkKICB9CgogIGlmIChzdHJlYW0uZGVzdHJveWVkKSB7CiAgICBkb25lKCkKICB9IGVsc2UgewogICAgc3RyZWFtLm9uKCdjbG9zZScsIGRvbmUpCiAgICBzdHJlYW0ub24oJ2Vycm9yJywgbm9vcCkKICB9CgogIHJldHVybiBkZXRhY2gKfQoKZnVuY3Rpb24gcmVhZChyZWFkLCBjYikgewogIHJlYWQuY2FsbCh0aGlzLCA2NTUzNikKCiAgY2IobnVsbCkKfQoKZnVuY3Rpb24gd3JpdGUod3JpdGUsIGRhdGEsIGNiKSB7CiAgd3JpdGUuY2FsbCh0aGlzLCBkYXRhLmNodW5rLCBkYXRhLmVuY29kaW5nLCBjYikKfQoKZnVuY3Rpb24gdHJhbnNmb3JtKHRyYW5zZm9ybSwgZGF0YSwgY2IpIHsKICB0cmFuc2Zvcm0uY2FsbCh0aGlzLCBkYXRhLmNodW5rLCBkYXRhLmVuY29kaW5nLCBjYikKfQoKZnVuY3Rpb24gZGVzdHJveShkZXN0cm95LCBjYikgewogIGRlc3Ryb3kuY2FsbCh0aGlzLCBleHBvcnRzLmdldFN0cmVhbUVycm9yKHRoaXMpLCBjYikKfQoKZnVuY3Rpb24gcGFzc3Rocm91Z2goZGF0YSwgY2IpIHsKICBjYihudWxsLCBkYXRhLmNodW5rKQp9CgpmdW5jdGlvbiBieXRlTGVuZ3RoV3JpdGFibGUoZGF0YSkgewogIHJldHVybiBkYXRhLmNodW5rLmJ5dGVMZW5ndGgKfQoKZnVuY3Rpb24gbm9vcCgpIHt9CnsKICAibmFtZSI6ICJiYXJlLXN0cmVhbSIsCiAgInZlcnNpb24iOiAiMi42LjUiLAogICJkZXNjcmlwdGlvbiI6ICJTdHJlYW1pbmcgZGF0YSBmb3IgSmF2YVNjcmlwdCIsCiAgImV4cG9ydHMiOiB7CiAgICAiLiI6IHsKICAgICAgInR5cGVzIjogIi4vaW5kZXguZC50cyIsCiAgICAgICJkZWZhdWx0IjogIi4vaW5kZXguanMiCiAgICB9LAogICAgIi4vcGFja2FnZSI6ICIuL3BhY2thZ2UuanNvbiIsCiAgICAiLi9wcm9taXNlcyI6ICIuL3Byb21pc2VzLmpzIiwKICAgICIuL3dlYiI6ICIuL3dlYi5qcyIsCiAgICAiLi9nbG9iYWwiOiAiLi9nbG9iYWwuanMiCiAgfSwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgImluZGV4LmQudHMiLAogICAgInByb21pc2VzLmpzIiwKICAgICJ3ZWIuanMiLAogICAgImdsb2JhbC5qcyIKICBdLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAicHJldHRpZXIgLiAtLWNoZWNrICYmIGJhcmUgdGVzdC5qcyIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXN0cmVhbS5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXN0cmVhbS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtc3RyZWFtI3JlYWRtZSIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJzdHJlYW14IjogIl4yLjIxLjAiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtYnVmZmVyIjogIl4zLjAuMCIsCiAgICAiYmFyZS1ldmVudHMiOiAiXjIuNS40IiwKICAgICJicml0dGxlIjogIl4zLjUuMiIsCiAgICAicHJldHRpZXIiOiAiXjMuMy4zIiwKICAgICJwcmV0dGllci1jb25maWctc3RhbmRhcmQiOiAiXjcuMC4wIgogIH0sCiAgInBlZXJEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1idWZmZXIiOiAiKiIsCiAgICAiYmFyZS1ldmVudHMiOiAiKiIKICB9LAogICJwZWVyRGVwZW5kZW5jaWVzTWV0YSI6IHsKICAgICJiYXJlLWJ1ZmZlciI6IHsKICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgfSwKICAgICJiYXJlLWV2ZW50cyI6IHsKICAgICAgIm9wdGlvbmFsIjogdHJ1ZQogICAgfQogIH0KfQptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oKQovKiBnbG9iYWwgQmFyZSAqLwpjb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdiYXJlLWV2ZW50cycpCmNvbnN0IG9zID0gcmVxdWlyZSgnYmFyZS1vcycpCmNvbnN0IGVudiA9IHJlcXVpcmUoJ2JhcmUtZW52JykKY29uc3QgUGlwZSA9IHJlcXVpcmUoJ2JhcmUtcGlwZScpCmNvbnN0IGJpbmRpbmcgPSByZXF1aXJlKCcuL2JpbmRpbmcnKQpjb25zdCBjb25zdGFudHMgPSByZXF1aXJlKCcuL2xpYi9jb25zdGFudHMnKQpjb25zdCBlcnJvcnMgPSByZXF1aXJlKCcuL2xpYi9lcnJvcnMnKQoKZXhwb3J0cy5TdWJwcm9jZXNzID0gY2xhc3MgU3VicHJvY2VzcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7CiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpCgogICAgdGhpcy5zcGF3bmZpbGUgPSBudWxsCiAgICB0aGlzLnNwYXduYXJncyA9IFtdCiAgICB0aGlzLnBpZCA9IG51bGwKICAgIHRoaXMuc3RkaW8gPSBbXQogICAgdGhpcy5leGl0Q29kZSA9IG51bGwKICAgIHRoaXMuc2lnbmFsQ29kZSA9IG51bGwKICAgIHRoaXMua2lsbGVkID0gZmFsc2UKCiAgICB0aGlzLl9oYW5kbGUgPSBiaW5kaW5nLmluaXQodGhpcywgdGhpcy5fb25leGl0KQogIH0KCiAgX29uZXhpdChjb2RlLCBzaWduYWwpIHsKICAgIHRoaXMuZXhpdENvZGUgPSBjb2RlCiAgICB0aGlzLnNpZ25hbENvZGUgPSBzaWduYWwKCiAgICB0aGlzLmVtaXQoJ2V4aXQnLCBjb2RlLCBzaWduYWwpCiAgfQoKICBnZXQgc3RkaW4oKSB7CiAgICByZXR1cm4gdGhpcy5zdGRpb1swXSB8fCBudWxsCiAgfQoKICBnZXQgc3Rkb3V0KCkgewogICAgcmV0dXJuIHRoaXMuc3RkaW9bMV0gfHwgbnVsbAogIH0KCiAgZ2V0IHN0ZGVycigpIHsKICAgIHJldHVybiB0aGlzLnN0ZGlvWzJdIHx8IG51bGwKICB9CgogIHJlZigpIHsKICAgIGZvciAoY29uc3QgcGlwZSBvZiB0aGlzLnN0ZGlvKSB7CiAgICAgIGlmIChwaXBlKSBwaXBlLnJlZigpCiAgICB9CgogICAgYmluZGluZy5yZWYodGhpcy5faGFuZGxlKQogIH0KCiAgdW5yZWYoKSB7CiAgICBmb3IgKGNvbnN0IHBpcGUgb2YgdGhpcy5zdGRpbykgewogICAgICBpZiAocGlwZSkgcGlwZS51bnJlZigpCiAgICB9CgogICAgYmluZGluZy51bnJlZih0aGlzLl9oYW5kbGUpCiAgfQoKICBraWxsKHNpZ251bSA9IGNvbnN0YW50cy5TSUdURVJNKSB7CiAgICBpZiAodHlwZW9mIHNpZ251bSA9PT0gJ3N0cmluZycpIHsKICAgICAgaWYgKHNpZ251bSBpbiBjb25zdGFudHMgPT09IGZhbHNlKSB7CiAgICAgICAgdGhyb3cgZXJyb3JzLlVOS05PV05fU0lHTkFMKCdVbmtub3duIHNpZ25hbDogJyArIHNpZ251bSkKICAgICAgfQoKICAgICAgc2lnbnVtID0gY29uc3RhbnRzW3NpZ251bV0KICAgIH0KCiAgICBiaW5kaW5nLmtpbGwodGhpcy5faGFuZGxlLCBzaWdudW0pCgogICAgdGhpcy5raWxsZWQgPSB0cnVlCiAgfQp9CgpleHBvcnRzLmNvbnN0YW50cyA9IGNvbnN0YW50cwpleHBvcnRzLmVycm9ycyA9IGVycm9ycwoKZXhwb3J0cy5zcGF3biA9IGZ1bmN0aW9uIHNwYXduKGZpbGUsIGFyZ3MsIG9wdHMpIHsKICBpZiAoQXJyYXkuaXNBcnJheShhcmdzKSkgewogICAgYXJncyA9IFsuLi5hcmdzXQogIH0gZWxzZSBpZiAoYXJncyA9PT0gbnVsbCkgewogICAgYXJncyA9IFtdCiAgfSBlbHNlIHsKICAgIG9wdHMgPSBhcmdzCiAgICBhcmdzID0gW10KICB9CgogIGlmICghb3B0cykgb3B0cyA9IHt9CgogIGFyZ3MgPSBhcmdzLm1hcChTdHJpbmcpCgogIGxldCB7CiAgICBjd2QgPSBvcy5jd2QoKSwKICAgIHN0ZGlvID0gW10sCiAgICBkZXRhY2hlZCA9IGZhbHNlLAogICAgdWlkID0gLTEsCiAgICBnaWQgPSAtMQogIH0gPSBvcHRzCgogIGNvbnN0IHBhaXJzID0gW10KCiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0cy5lbnYgfHwgZW52KSkKICAgIHBhaXJzLnB1c2goYCR7a2V5fT0ke3ZhbHVlfWApCgogIGlmIChBcnJheS5pc0FycmF5KHN0ZGlvKSkgewogICAgc3RkaW8gPSBbLi4uc3RkaW9dCiAgfSBlbHNlIGlmICh0eXBlb2Ygc3RkaW8gPT09ICdzdHJpbmcnKSB7CiAgICBzdGRpbyA9IFtzdGRpbywgc3RkaW8sIHN0ZGlvXQogIH0gZWxzZSB7CiAgICBzdGRpbyA9IFtdCiAgfQoKICBjb25zdCBzdWJwcm9jZXNzID0gbmV3IGV4cG9ydHMuU3VicHJvY2VzcygpCgogIHN1YnByb2Nlc3Muc3Bhd25maWxlID0gZmlsZQogIHN1YnByb2Nlc3Muc3Bhd25hcmdzID0gYXJncwoKICBmb3IgKGxldCBpID0gMCwgbiA9IE1hdGgubWF4KDMsIHN0ZGlvLmxlbmd0aCk7IGkgPCBuOyBpKyspIHsKICAgIHN1YnByb2Nlc3Muc3RkaW9baV0gPSBudWxsCgogICAgbGV0IGZkID0gc3RkaW9baV0gfHwgJ3BpcGUnCgogICAgaWYgKGZkID09PSAnaW5oZXJpdCcpIGZkID0gaSA8IDMgPyBpIDogJ2lnbm9yZScKCiAgICBpZiAoZmQgPT09ICdpZ25vcmUnKSB7CiAgICAgIHN0ZGlvW2ldID0geyBmbGFnczogYmluZGluZy5VVl9JR05PUkUgfQogICAgfSBlbHNlIGlmIChmZCA9PT0gJ3BpcGUnIHx8IGZkID09PSAnb3ZlcmxhcHBlZCcpIHsKICAgICAgY29uc3QgcGlwZSA9IG5ldyBQaXBlKCkKCiAgICAgIHBpcGUuX29uc3Bhd24odHJ1ZSAvKiBSZWFkYWJsZSAqLywgdHJ1ZSAvKiBXcml0YWJsZSAqLykKCiAgICAgIGxldCBmbGFncyA9CiAgICAgICAgYmluZGluZy5VVl9DUkVBVEVfUElQRSB8CiAgICAgICAgYmluZGluZy5VVl9SRUFEQUJMRV9QSVBFIHwKICAgICAgICBiaW5kaW5nLlVWX1dSSVRBQkxFX1BJUEUKCiAgICAgIGlmIChmZCA9PT0gJ292ZXJsYXBwZWQnKSBmbGFncyB8PSBiaW5kaW5nLlVWX05PTkJMT0NLX1BJUEUKCiAgICAgIHN0ZGlvW2ldID0geyBmbGFncywgcGlwZTogcGlwZS5faGFuZGxlIH0KCiAgICAgIHN1YnByb2Nlc3Muc3RkaW9baV0gPSBwaXBlCiAgICB9IGVsc2UgewogICAgICBzdGRpb1tpXSA9IHsgZmxhZ3M6IGJpbmRpbmcuVVZfSU5IRVJJVF9GRCwgZmQgfQogICAgfQogIH0KCiAgc3VicHJvY2Vzcy5waWQgPSBiaW5kaW5nLnNwYXduKAogICAgc3VicHJvY2Vzcy5faGFuZGxlLAogICAgZmlsZSwKICAgIGFyZ3MsCiAgICBjd2QsCiAgICBwYWlycywKICAgIHN0ZGlvLAogICAgZGV0YWNoZWQsCiAgICB1aWQsCiAgICBnaWQKICApCgogIHJldHVybiBzdWJwcm9jZXNzCn0KCmV4cG9ydHMuc3Bhd25TeW5jID0gZnVuY3Rpb24gc3Bhd24oZmlsZSwgYXJncywgb3B0cykgewogIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7CiAgICBhcmdzID0gWy4uLmFyZ3NdCiAgfSBlbHNlIGlmIChhcmdzID09PSBudWxsKSB7CiAgICBhcmdzID0gW10KICB9IGVsc2UgewogICAgb3B0cyA9IGFyZ3MKICAgIGFyZ3MgPSBbXQogIH0KCiAgaWYgKCFvcHRzKSBvcHRzID0ge30KCiAgbGV0IHsKICAgIGN3ZCA9IG9zLmN3ZCgpLAogICAgaW5wdXQgPSBudWxsLAogICAgc3RkaW8gPSBbXSwKICAgIGRldGFjaGVkID0gZmFsc2UsCiAgICB1aWQgPSAtMSwKICAgIGdpZCA9IC0xLAogICAgbWF4QnVmZmVyID0gMTAyNCAqIDEwMjQKICB9ID0gb3B0cwoKICBjb25zdCBwYWlycyA9IFtdCgogIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdHMuZW52IHx8IGVudikpCiAgICBwYWlycy5wdXNoKGAke2tleX09JHt2YWx1ZX1gKQoKICBpZiAoQXJyYXkuaXNBcnJheShzdGRpbykpIHsKICAgIHN0ZGlvID0gWy4uLnN0ZGlvXQogIH0gZWxzZSBpZiAodHlwZW9mIHN0ZGlvID09PSAnc3RyaW5nJykgewogICAgc3RkaW8gPSBbc3RkaW8sIHN0ZGlvLCBzdGRpb10KICB9IGVsc2UgewogICAgc3RkaW8gPSBbXQogIH0KCiAgY29uc3Qgc3VicHJvY2VzcyA9IG5ldyBleHBvcnRzLlN1YnByb2Nlc3MoKQoKICBpZiAoaW5wdXQpIHsKICAgIHN0ZGlvWzBdID0gewogICAgICBmbGFnczogYmluZGluZy5VVl9DUkVBVEVfUElQRSB8IGJpbmRpbmcuVVZfUkVBREFCTEVfUElQRSwKICAgICAgYnVmZmVyOiBpbnB1dAogICAgfQoKICAgIHN1YnByb2Nlc3Muc3RkaW9bMF0gPSBudWxsCiAgfQoKICBmb3IgKGxldCBpID0gaW5wdXQgPyAxIDogMCwgbiA9IE1hdGgubWF4KDMsIHN0ZGlvLmxlbmd0aCk7IGkgPCBuOyBpKyspIHsKICAgIHN1YnByb2Nlc3Muc3RkaW9baV0gPSBudWxsCgogICAgbGV0IGZkID0gc3RkaW9baV0gfHwgJ3BpcGUnCgogICAgaWYgKGZkID09PSAnaW5oZXJpdCcpIGZkID0gaSA8IDMgPyBpIDogJ2lnbm9yZScKCiAgICBpZiAoZmQgPT09ICdpZ25vcmUnKSB7CiAgICAgIHN0ZGlvW2ldID0geyBmbGFnczogYmluZGluZy5VVl9JR05PUkUgfQogICAgfSBlbHNlIGlmIChmZCA9PT0gJ3BpcGUnKSB7CiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhtYXhCdWZmZXIpCgogICAgICBzdGRpb1tpXSA9IHsKICAgICAgICBmbGFnczogYmluZGluZy5VVl9DUkVBVEVfUElQRSB8IGJpbmRpbmcuVVZfV1JJVEFCTEVfUElQRSwKICAgICAgICBidWZmZXIsCiAgICAgICAgd3JpdHRlbjogMAogICAgICB9CgogICAgICBpZiAoaSA+IDApIHN1YnByb2Nlc3Muc3RkaW9baV0gPSBidWZmZXIKICAgIH0gZWxzZSBpZiAodHlwZW9mIGZkID09PSAnbnVtYmVyJykgewogICAgICBzdGRpb1tpXSA9IHsgZmxhZ3M6IGJpbmRpbmcuVVZfSU5IRVJJVF9GRCwgZmQgfQogICAgfQogIH0KCiAgc3VicHJvY2Vzcy5waWQgPSBiaW5kaW5nLnNwYXduU3luYygKICAgIHN1YnByb2Nlc3MuX2hhbmRsZSwKICAgIGZpbGUsCiAgICBhcmdzLAogICAgY3dkLAogICAgcGFpcnMsCiAgICBzdGRpbywKICAgIGRldGFjaGVkLAogICAgdWlkLAogICAgZ2lkCiAgKQoKICBmb3IgKGxldCBpID0gMSwgbiA9IHN0ZGlvLmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgaWYgKHN0ZGlvW2ldLmZsYWdzICYgYmluZGluZy5VVl9XUklUQUJMRV9QSVBFKSB7CiAgICAgIHN1YnByb2Nlc3Muc3RkaW9baV0gPSBzdWJwcm9jZXNzLnN0ZGlvW2ldLnN1YmFycmF5KDAsIHN0ZGlvW2ldLndyaXR0ZW4pCiAgICB9CiAgfQoKICByZXR1cm4gewogICAgc3RhdHVzOiBzdWJwcm9jZXNzLmV4aXRDb2RlLAogICAgc2lnbmFsOiBzdWJwcm9jZXNzLnNpZ25hbENvZGUsCiAgICBvdXRwdXQ6IHN1YnByb2Nlc3Muc3RkaW8sCiAgICBwaWQ6IHN1YnByb2Nlc3MucGlkLAogICAgc3Rkb3V0OiBzdWJwcm9jZXNzLnN0ZG91dCwKICAgIHN0ZGVycjogc3VicHJvY2Vzcy5zdGRlcnIKICB9Cn0KY29uc3Qgb3MgPSByZXF1aXJlKCdiYXJlLW9zJykKCm1vZHVsZS5leHBvcnRzID0gb3MuY29uc3RhbnRzLnNpZ25hbHMKbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBTdWJwcm9jZXNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgY29uc3RydWN0b3IobXNnLCBjb2RlLCBmbiA9IFN1YnByb2Nlc3NFcnJvcikgewogICAgc3VwZXIoYCR7Y29kZX06ICR7bXNnfWApCiAgICB0aGlzLmNvZGUgPSBjb2RlCgogICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7CiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIGZuKQogICAgfQogIH0KCiAgZ2V0IG5hbWUoKSB7CiAgICByZXR1cm4gJ1N1YnByb2Nlc3NFcnJvcicKICB9CgogIHN0YXRpYyBVTktOT1dOX1NJR05BTChtc2cpIHsKICAgIHJldHVybiBuZXcgU3VicHJvY2Vzc0Vycm9yKAogICAgICBtc2csCiAgICAgICdVTktOT1dOX1NJR05BTCcsCiAgICAgIFN1YnByb2Nlc3NFcnJvci5VTktOT1dOX1NJR05BTAogICAgKQogIH0KfQp7CiAgIm5hbWUiOiAiYmFyZS1zdWJwcm9jZXNzIiwKICAidmVyc2lvbiI6ICI1LjAuMyIsCiAgImRlc2NyaXB0aW9uIjogIk5hdGl2ZSBwcm9jZXNzIHNwYXduaW5nIGZvciBKYXZhU2NyaXB0IiwKICAiZXhwb3J0cyI6IHsKICAgICIuIjogewogICAgICAidHlwZXMiOiAiLi9pbmRleC5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9pbmRleC5qcyIKICAgIH0sCiAgICAiLi9wYWNrYWdlIjogIi4vcGFja2FnZS5qc29uIiwKICAgICIuL2NvbnN0YW50cyI6IHsKICAgICAgInR5cGVzIjogIi4vbGliL2NvbnN0YW50cy5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9saWIvY29uc3RhbnRzLmpzIgogICAgfSwKICAgICIuL2Vycm9ycyI6IHsKICAgICAgInR5cGVzIjogIi4vbGliL2Vycm9ycy5kLnRzIiwKICAgICAgImRlZmF1bHQiOiAiLi9saWIvZXJyb3JzLmpzIgogICAgfQogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJpbmRleC5kLnRzIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IiwKICAgICJsaWIiLAogICAgInByZWJ1aWxkcyIKICBdLAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJwcmV0dGllciAuIC0tY2hlY2sgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtc3VicHJvY2Vzcy5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXN1YnByb2Nlc3MvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXN1YnByb2Nlc3MjcmVhZG1lIiwKICAiZW5naW5lcyI6IHsKICAgICJiYXJlIjogIj49MS43LjAiCiAgfSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtZW52IjogIl4zLjAuMCIsCiAgICAiYmFyZS1ldmVudHMiOiAiXjIuNS40IiwKICAgICJiYXJlLW9zIjogIl4zLjAuMSIsCiAgICAiYmFyZS1waXBlIjogIl40LjAuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1idWZmZXIiOiAiXjMuMC4yIiwKICAgICJicml0dGxlIjogIl4zLjIuMSIsCiAgICAiY21ha2UtYmFyZSI6ICJeMS4xLjciLAogICAgInByZXR0aWVyIjogIl4zLjQuMSIsCiAgICAicHJldHRpZXItY29uZmlnLXN0YW5kYXJkIjogIl43LjAuMCIKICB9LAogICJwZWVyRGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtYnVmZmVyIjogIioiCiAgfSwKICAicGVlckRlcGVuZGVuY2llc01ldGEiOiB7CiAgICAiYmFyZS1idWZmZXIiOiB7CiAgICAgICJvcHRpb25hbCI6IHRydWUKICAgIH0KICB9Cn0KbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlLmFkZG9uKCkKLyogZ2xvYmFsIEJhcmUgKi8KY29uc3QgeyBSZWFkYWJsZSwgV3JpdGFibGUgfSA9IHJlcXVpcmUoJ2JhcmUtc3RyZWFtJykKY29uc3QgU2lnbmFsID0gcmVxdWlyZSgnYmFyZS1zaWduYWxzJykKY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4vYmluZGluZycpCmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vbGliL2NvbnN0YW50cycpCgpjb25zdCBkZWZhdWx0UmVhZEJ1ZmZlclNpemUgPSA2NTUzNgoKZXhwb3J0cy5SZWFkU3RyZWFtID0gY2xhc3MgVFRZUmVhZFN0cmVhbSBleHRlbmRzIFJlYWRhYmxlIHsKICBjb25zdHJ1Y3RvcihmZCwgb3B0cyA9IHt9KSB7CiAgICBzdXBlcigpCgogICAgY29uc3QgeyByZWFkQnVmZmVyU2l6ZSA9IGRlZmF1bHRSZWFkQnVmZmVyU2l6ZSwgYWxsb3dIYWxmT3BlbiA9IHRydWUgfSA9CiAgICAgIG9wdHMKCiAgICB0aGlzLl9zdGF0ZSA9IDAKCiAgICB0aGlzLl9hbGxvd0hhbGZPcGVuID0gYWxsb3dIYWxmT3BlbgoKICAgIHRoaXMuX3BlbmRpbmdEZXN0cm95ID0gbnVsbAoKICAgIHRoaXMuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvYyhyZWFkQnVmZmVyU2l6ZSkKCiAgICB0aGlzLl9oYW5kbGUgPSBiaW5kaW5nLmluaXQoCiAgICAgIGZkLAogICAgICB0aGlzLl9idWZmZXIsCiAgICAgIHRoaXMsCiAgICAgIG5vb3AsCiAgICAgIHRoaXMuX29ucmVhZCwKICAgICAgdGhpcy5fb25jbG9zZQogICAgKQogIH0KCiAgZ2V0IGlzVFRZKCkgewogICAgcmV0dXJuIHRydWUKICB9CgogIHNldE1vZGUobW9kZSkgewogICAgYmluZGluZy5zZXRNb2RlKHRoaXMuX2hhbmRsZSwgbW9kZSkKICAgIHJldHVybiB0aGlzCiAgfQoKICBzZXRSYXdNb2RlKGVuYWJsZWQpIHsKICAgIHJldHVybiB0aGlzLnNldE1vZGUoZW5hYmxlZCA/IGNvbnN0YW50cy5tb2RlLlJBVyA6IGNvbnN0YW50cy5tb2RlLk5PUk1BTCkKICB9CgogIF9yZWFkKCkgewogICAgaWYgKCh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5SRUFESU5HKSA9PT0gMCkgewogICAgICB0aGlzLl9zdGF0ZSB8PSBjb25zdGFudHMuc3RhdGUuUkVBRElORwogICAgICBiaW5kaW5nLnJlc3VtZSh0aGlzLl9oYW5kbGUpCiAgICB9CiAgfQoKICBfcHJlZGVzdHJveSgpIHsKICAgIGlmICh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HKSByZXR1cm4KICAgIHRoaXMuX3N0YXRlIHw9IGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HCiAgICBiaW5kaW5nLmNsb3NlKHRoaXMuX2hhbmRsZSkKICB9CgogIF9kZXN0cm95KGVyciwgY2IpIHsKICAgIGlmICh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HKSByZXR1cm4gY2IoZXJyKQogICAgdGhpcy5fc3RhdGUgfD0gY29uc3RhbnRzLnN0YXRlLkNMT1NJTkcKICAgIHRoaXMuX3BlbmRpbmdEZXN0cm95ID0gY2IKICAgIGJpbmRpbmcuY2xvc2UodGhpcy5faGFuZGxlKQogIH0KCiAgX2NvbnRpbnVlRGVzdHJveSgpIHsKICAgIGlmICh0aGlzLl9wZW5kaW5nRGVzdHJveSA9PT0gbnVsbCkgcmV0dXJuCiAgICBjb25zdCBjYiA9IHRoaXMuX3BlbmRpbmdEZXN0cm95CiAgICB0aGlzLl9wZW5kaW5nRGVzdHJveSA9IG51bGwKICAgIGNiKG51bGwpCiAgfQoKICBfb25yZWFkKGVyciwgcmVhZCkgewogICAgaWYgKGVycikgewogICAgICB0aGlzLmRlc3Ryb3koZXJyKQogICAgICByZXR1cm4KICAgIH0KCiAgICBpZiAocmVhZCA9PT0gMCkgewogICAgICB0aGlzLnB1c2gobnVsbCkKICAgICAgaWYgKHRoaXMuX2FsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB0aGlzLmVuZCgpCiAgICAgIHJldHVybgogICAgfQoKICAgIGNvbnN0IGNvcHkgPSBCdWZmZXIuYWxsb2NVbnNhZmUocmVhZCkKICAgIGNvcHkuc2V0KHRoaXMuX2J1ZmZlci5zdWJhcnJheSgwLCByZWFkKSkKCiAgICBpZiAodGhpcy5wdXNoKGNvcHkpID09PSBmYWxzZSAmJiB0aGlzLmRlc3Ryb3lpbmcgPT09IGZhbHNlKSB7CiAgICAgIHRoaXMuX3N0YXRlICY9IH5jb25zdGFudHMuc3RhdGUuUkVBRElORwogICAgICBiaW5kaW5nLnBhdXNlKHRoaXMuX2hhbmRsZSkKICAgIH0KICB9CgogIF9vbmNsb3NlKCkgewogICAgdGhpcy5faGFuZGxlID0gbnVsbAogICAgdGhpcy5fY29udGludWVEZXN0cm95KCkKICB9Cn0KCmV4cG9ydHMuV3JpdGVTdHJlYW0gPSBjbGFzcyBUVFlXcml0ZVN0cmVhbSBleHRlbmRzIFdyaXRhYmxlIHsKICBjb25zdHJ1Y3RvcihmZCwgb3B0cyA9IHt9KSB7CiAgICBzdXBlcigpCgogICAgdGhpcy5fc3RhdGUgPSAwCiAgICB0aGlzLl9zaXplID0gbnVsbAoKICAgIHRoaXMuX3BlbmRpbmdXcml0ZSA9IG51bGwKICAgIHRoaXMuX3BlbmRpbmdEZXN0cm95ID0gbnVsbAoKICAgIHRoaXMuX2hhbmRsZSA9IGJpbmRpbmcuaW5pdCgKICAgICAgZmQsCiAgICAgIGVtcHR5LAogICAgICB0aGlzLAogICAgICB0aGlzLl9vbndyaXRlLAogICAgICBub29wLAogICAgICB0aGlzLl9vbmNsb3NlCiAgICApCgogICAgdGhpcy5fc2l6ZSA9IHRoaXMuZ2V0V2luZG93U2l6ZSgpCgogICAgaWYgKFRUWVdyaXRlU3RyZWFtLl9zdHJlYW1zLnNpemUgPT09IDApIFRUWVdyaXRlU3RyZWFtLl9yZXNpemUuc3RhcnQoKQogICAgVFRZV3JpdGVTdHJlYW0uX3N0cmVhbXMuYWRkKHRoaXMpCiAgfQoKICBnZXQgaXNUVFkoKSB7CiAgICByZXR1cm4gdHJ1ZQogIH0KCiAgZ2V0IGNvbHVtbnMoKSB7CiAgICByZXR1cm4gdGhpcy5fc2l6ZVswXQogIH0KCiAgZ2V0IHJvd3MoKSB7CiAgICByZXR1cm4gdGhpcy5fc2l6ZVsxXQogIH0KCiAgZ2V0V2luZG93U2l6ZSgpIHsKICAgIHJldHVybiBiaW5kaW5nLmdldFdpbmRvd1NpemUodGhpcy5faGFuZGxlKQogIH0KCiAgX3dyaXRldihiYXRjaCwgY2IpIHsKICAgIHRoaXMuX3BlbmRpbmdXcml0ZSA9IFtjYiwgYmF0Y2hdCiAgICBiaW5kaW5nLndyaXRldigKICAgICAgdGhpcy5faGFuZGxlLAogICAgICBiYXRjaC5tYXAoKHsgY2h1bmsgfSkgPT4gY2h1bmspCiAgICApCiAgfQoKICBfcHJlZGVzdHJveSgpIHsKICAgIGlmICh0aGlzLl9zdGF0ZSAmIGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HKSByZXR1cm4KICAgIHRoaXMuX3N0YXRlIHw9IGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HCiAgICBiaW5kaW5nLmNsb3NlKHRoaXMuX2hhbmRsZSkKICAgIFRUWVdyaXRlU3RyZWFtLl9zdHJlYW1zLmRlbGV0ZSh0aGlzKQogICAgaWYgKFRUWVdyaXRlU3RyZWFtLl9zdHJlYW1zLnNpemUgPT09IDApIFRUWVdyaXRlU3RyZWFtLl9yZXNpemUuc3RvcCgpCiAgfQoKICBfZGVzdHJveShlcnIsIGNiKSB7CiAgICBpZiAodGhpcy5fc3RhdGUgJiBjb25zdGFudHMuc3RhdGUuQ0xPU0lORykgcmV0dXJuIGNiKGVycikKICAgIHRoaXMuX3N0YXRlIHw9IGNvbnN0YW50cy5zdGF0ZS5DTE9TSU5HCiAgICB0aGlzLl9wZW5kaW5nRGVzdHJveSA9IGNiCiAgICBiaW5kaW5nLmNsb3NlKHRoaXMuX2hhbmRsZSkKICAgIFRUWVdyaXRlU3RyZWFtLl9zdHJlYW1zLmRlbGV0ZSh0aGlzKQogICAgaWYgKFRUWVdyaXRlU3RyZWFtLl9zdHJlYW1zLnNpemUgPT09IDApIFRUWVdyaXRlU3RyZWFtLl9yZXNpemUuc3RvcCgpCiAgfQoKICBfY29udGludWVXcml0ZShlcnIpIHsKICAgIGlmICh0aGlzLl9wZW5kaW5nV3JpdGUgPT09IG51bGwpIHJldHVybgogICAgY29uc3QgY2IgPSB0aGlzLl9wZW5kaW5nV3JpdGVbMF0KICAgIHRoaXMuX3BlbmRpbmdXcml0ZSA9IG51bGwKICAgIGNiKGVycikKICB9CgogIF9jb250aW51ZURlc3Ryb3koKSB7CiAgICBpZiAodGhpcy5fcGVuZGluZ0Rlc3Ryb3kgPT09IG51bGwpIHJldHVybgogICAgY29uc3QgY2IgPSB0aGlzLl9wZW5kaW5nRGVzdHJveQogICAgdGhpcy5fcGVuZGluZ0Rlc3Ryb3kgPSBudWxsCiAgICBjYihudWxsKQogIH0KCiAgX29ud3JpdGUoZXJyKSB7CiAgICB0aGlzLl9jb250aW51ZVdyaXRlKGVycikKICB9CgogIF9vbmNsb3NlKCkgewogICAgdGhpcy5faGFuZGxlID0gbnVsbAogICAgdGhpcy5fY29udGludWVEZXN0cm95KCkKICB9CgogIF9vbnJlc2l6ZSgpIHsKICAgIHRoaXMuX3NpemUgPSB0aGlzLmdldFdpbmRvd1NpemUoKQogICAgdGhpcy5lbWl0KCdyZXNpemUnKQogIH0KCiAgc3RhdGljIF9zdHJlYW1zID0gbmV3IFNldCgpCgogIHN0YXRpYyBfcmVzaXplID0gbmV3IFNpZ25hbCgnU0lHV0lOQ0gnKQp9CgpleHBvcnRzLmNvbnN0YW50cyA9IGNvbnN0YW50cwoKZXhwb3J0cy5pc1RUWSA9IGJpbmRpbmcuaXNUVFkKCmV4cG9ydHMuaXNhdHR5ID0gZXhwb3J0cy5pc1RUWSAvLyBGb3IgTm9kZS5qcyBjb21wYXRpYmlsaXR5CgpleHBvcnRzLldyaXRlU3RyZWFtLl9yZXNpemUKICAub24oJ3NpZ25hbCcsICgpID0+IHsKICAgIGZvciAoY29uc3Qgc3RyZWFtIG9mIGV4cG9ydHMuV3JpdGVTdHJlYW0uX3N0cmVhbXMpIHsKICAgICAgc3RyZWFtLl9vbnJlc2l6ZSgpCiAgICB9CiAgfSkKICAudW5yZWYoKQoKY29uc3QgZW1wdHkgPSBCdWZmZXIuYWxsb2MoMCkKCmZ1bmN0aW9uIG5vb3AoKSB7fQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi4vYmluZGluZycpCgptb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSB7CiAgbW9kZTogewogICAgTk9STUFMOiBiaW5kaW5nLk1PREVfTk9STUFMLAogICAgUkFXOiBiaW5kaW5nLk1PREVfUkFXLAogICAgSU86IGJpbmRpbmcuTU9ERV9JTyB8fCAwCiAgfSwKCiAgc3RhdGU6IHsKICAgIFJFQURJTkc6IDB4MSwKICAgIENMT1NJTkc6IDB4MgogIH0KfQoKLyoqIEBkZXByZWNhdGVkIFVzZSBgbW9kZS5OT1JNQUxgICovCmV4cG9ydHMuTU9ERV9OT1JNQUwgPSBleHBvcnRzLm1vZGUuTk9STUFMCi8qKiBAZGVwcmVjYXRlZCBVc2UgYG1vZGUuUkFXYCAqLwpleHBvcnRzLk1PREVfUkFXID0gZXhwb3J0cy5tb2RlLlJBVwovKiogQGRlcHJlY2F0ZWQgVXNlIGBtb2RlLklPYCAqLwpleHBvcnRzLk1PREVfSU8gPSBleHBvcnRzLm1vZGUuSU8KewogICJuYW1lIjogImJhcmUtdHR5IiwKICAidmVyc2lvbiI6ICI1LjAuMiIsCiAgImRlc2NyaXB0aW9uIjogIk5hdGl2ZSBUVFkgc3RyZWFtcyBmb3IgSmF2YVNjcmlwdCIsCiAgImV4cG9ydHMiOiB7CiAgICAiLiI6IHsKICAgICAgInR5cGVzIjogIi4vaW5kZXguZC50cyIsCiAgICAgICJkZWZhdWx0IjogIi4vaW5kZXguanMiCiAgICB9LAogICAgIi4vcGFja2FnZSI6ICIuL3BhY2thZ2UuanNvbiIsCiAgICAiLi9jb25zdGFudHMiOiAiLi9saWIvY29uc3RhbnRzLmpzIgogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJpbmRleC5kLnRzIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IiwKICAgICJsaWIiLAogICAgInByZWJ1aWxkcyIKICBdLAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJwcmV0dGllciAuIC0tY2hlY2sgJiYgYmFyZSB0ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtdHR5LmdpdCIKICB9LAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtdHR5L2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vYmFyZS10dHkjcmVhZG1lIiwKICAiZW5naW5lcyI6IHsKICAgICJiYXJlIjogIj49MS4xNi4wIgogIH0sCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJiYXJlLWV2ZW50cyI6ICJeMi4yLjAiLAogICAgImJhcmUtc2lnbmFscyI6ICJeNC4wLjAiLAogICAgImJhcmUtc3RyZWFtIjogIl4yLjAuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy4yLjEiLAogICAgImNtYWtlLWJhcmUiOiAiXjEuMS42IiwKICAgICJwcmV0dGllciI6ICJeMy40LjEiLAogICAgInByZXR0aWVyLWNvbmZpZy1zdGFuZGFyZCI6ICJeNy4wLjAiCiAgfQp9Cm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZS5hZGRvbigpCmNvbnN0IHBhdGggPSByZXF1aXJlKCdiYXJlLXBhdGgnKQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi9iaW5kaW5nJykKY29uc3QgZXJyb3JzID0gcmVxdWlyZSgnLi9saWIvZXJyb3JzJykKCmNvbnN0IGlzV2luZG93cyA9IEJhcmUucGxhdGZvcm0gPT09ICd3aW4zMicKCm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGNsYXNzIFVSTCB7CiAgc3RhdGljIHsKICAgIGJpbmRpbmcudGFnKHRoaXMpCiAgfQoKICBjb25zdHJ1Y3RvcihpbnB1dCwgYmFzZSwgb3B0cyA9IHt9KSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgdGhyb3cgZXJyb3JzLklOVkFMSURfVVJMKCkKCiAgICBpbnB1dCA9IGAke2lucHV0fWAKCiAgICBpZiAoYmFzZSAhPT0gdW5kZWZpbmVkKSBiYXNlID0gYCR7YmFzZX1gCgogICAgdGhpcy5fY29tcG9uZW50cyA9IG5ldyBVaW50MzJBcnJheSg4KQoKICAgIHRoaXMuX3BhcnNlKGlucHV0LCBiYXNlLCBvcHRzLnRocm93ICE9PSBmYWxzZSkKICB9CgogIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ocmVmCgogIGdldCBocmVmKCkgewogICAgcmV0dXJuIHRoaXMuX2hyZWYKICB9CgogIHNldCBocmVmKHZhbHVlKSB7CiAgICB0aGlzLl91cGRhdGUodmFsdWUpCiAgfQoKICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcHJvdG9jb2wKCiAgZ2V0IHByb3RvY29sKCkgewogICAgcmV0dXJuIHRoaXMuX3NsaWNlKDAsIHRoaXMuX2NvbXBvbmVudHNbMF0pICsgJzonCiAgfQoKICBzZXQgcHJvdG9jb2wodmFsdWUpIHsKICAgIHRoaXMuX3VwZGF0ZSgKICAgICAgdGhpcy5fcmVwbGFjZSh2YWx1ZS5yZXBsYWNlKC86KyQvLCAnJyksIDAsIHRoaXMuX2NvbXBvbmVudHNbMF0pCiAgICApCiAgfQoKICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdXNlcm5hbWUKCiAgZ2V0IHVzZXJuYW1lKCkgewogICAgcmV0dXJuIHRoaXMuX3NsaWNlKHRoaXMuX2NvbXBvbmVudHNbMF0gKyAzIC8qIDovLyAqLywgdGhpcy5fY29tcG9uZW50c1sxXSkKICB9CgogIHNldCB1c2VybmFtZSh2YWx1ZSkgewogICAgaWYgKGNhbm5vdEhhdmVDcmVkZW50aWFsc09yUG9ydCh0aGlzKSkgewogICAgICByZXR1cm4KICAgIH0KCiAgICBpZiAodGhpcy51c2VybmFtZSA9PT0gJycpIHZhbHVlICs9ICdAJwoKICAgIHRoaXMuX3VwZGF0ZSgKICAgICAgdGhpcy5fcmVwbGFjZSgKICAgICAgICB2YWx1ZSwKICAgICAgICB0aGlzLl9jb21wb25lbnRzWzBdICsgMyAvKiA6Ly8gKi8sCiAgICAgICAgdGhpcy5fY29tcG9uZW50c1sxXQogICAgICApCiAgICApCiAgfQoKICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGFzc3dvcmQKCiAgZ2V0IHBhc3N3b3JkKCkgewogICAgcmV0dXJuIHRoaXMuX2hyZWYuc2xpY2UoCiAgICAgIHRoaXMuX2NvbXBvbmVudHNbMV0gKyAxIC8qIDogKi8sCiAgICAgIHRoaXMuX2NvbXBvbmVudHNbMl0gLSAxIC8qIEAgKi8KICAgICkKICB9CgogIHNldCBwYXNzd29yZCh2YWx1ZSkgewogICAgaWYgKGNhbm5vdEhhdmVDcmVkZW50aWFsc09yUG9ydCh0aGlzKSkgewogICAgICByZXR1cm4KICAgIH0KCiAgICBsZXQgc3RhcnQgPSB0aGlzLl9jb21wb25lbnRzWzFdICsgMSAvKiA6ICovCiAgICBsZXQgZW5kID0gdGhpcy5fY29tcG9uZW50c1syXSAtIDEgLyogQCAqLwoKICAgIGlmICh0aGlzLnBhc3N3b3JkID09PSAnJykgewogICAgICB2YWx1ZSA9ICc6JyArIHZhbHVlCiAgICAgIHN0YXJ0LS0KICAgIH0KCiAgICBpZiAodGhpcy51c2VybmFtZSA9PT0gJycpIHsKICAgICAgdmFsdWUgKz0gJ0AnCiAgICAgIGVuZCsrCiAgICB9CgogICAgdGhpcy5fdXBkYXRlKHRoaXMuX3JlcGxhY2UodmFsdWUsIHN0YXJ0LCBlbmQpKQogIH0KCiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3QKCiAgZ2V0IGhvc3QoKSB7CiAgICByZXR1cm4gdGhpcy5fc2xpY2UodGhpcy5fY29tcG9uZW50c1syXSwgdGhpcy5fY29tcG9uZW50c1s1XSkKICB9CgogIHNldCBob3N0KHZhbHVlKSB7CiAgICBpZiAoaGFzT3BhcXVlUGF0aCh0aGlzKSkgewogICAgICByZXR1cm4KICAgIH0KCiAgICB0aGlzLl91cGRhdGUoCiAgICAgIHRoaXMuX3JlcGxhY2UoCiAgICAgICAgdmFsdWUsCiAgICAgICAgdGhpcy5fY29tcG9uZW50c1syXSwKICAgICAgICB0aGlzLl9jb21wb25lbnRzW3ZhbHVlLmluY2x1ZGVzKCc6JykgPyA1IDogM10KICAgICAgKQogICAgKQogIH0KCiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RuYW1lCgogIGdldCBob3N0bmFtZSgpIHsKICAgIHJldHVybiB0aGlzLl9zbGljZSh0aGlzLl9jb21wb25lbnRzWzJdLCB0aGlzLl9jb21wb25lbnRzWzNdKQogIH0KCiAgc2V0IGhvc3RuYW1lKHZhbHVlKSB7CiAgICBpZiAoaGFzT3BhcXVlUGF0aCh0aGlzKSkgewogICAgICByZXR1cm4KICAgIH0KCiAgICB0aGlzLl91cGRhdGUodGhpcy5fcmVwbGFjZSh2YWx1ZSwgdGhpcy5fY29tcG9uZW50c1syXSwgdGhpcy5fY29tcG9uZW50c1szXSkpCiAgfQoKICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcG9ydAoKICBnZXQgcG9ydCgpIHsKICAgIHJldHVybiB0aGlzLl9zbGljZSh0aGlzLl9jb21wb25lbnRzWzNdICsgMSAvKiA6ICovLCB0aGlzLl9jb21wb25lbnRzWzVdKQogIH0KCiAgc2V0IHBvcnQodmFsdWUpIHsKICAgIGlmIChjYW5ub3RIYXZlQ3JlZGVudGlhbHNPclBvcnQodGhpcykpIHsKICAgICAgcmV0dXJuCiAgICB9CgogICAgbGV0IHN0YXJ0ID0gdGhpcy5fY29tcG9uZW50c1szXSArIDEgLyogOiAqLwoKICAgIGlmICh0aGlzLnBvcnQgPT09ICcnKSB7CiAgICAgIHZhbHVlID0gJzonICsgdmFsdWUKICAgICAgc3RhcnQtLQogICAgfQoKICAgIHRoaXMuX3VwZGF0ZSh0aGlzLl9yZXBsYWNlKHZhbHVlLCBzdGFydCwgdGhpcy5fY29tcG9uZW50c1s1XSkpCiAgfQoKICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGF0aG5hbWUKCiAgZ2V0IHBhdGhuYW1lKCkgewogICAgcmV0dXJuIHRoaXMuX3NsaWNlKHRoaXMuX2NvbXBvbmVudHNbNV0sIHRoaXMuX2NvbXBvbmVudHNbNl0gLSAxIC8qID8gKi8pCiAgfQoKICBzZXQgcGF0aG5hbWUodmFsdWUpIHsKICAgIGlmIChoYXNPcGFxdWVQYXRoKHRoaXMpKSB7CiAgICAgIHJldHVybgogICAgfQoKICAgIGlmICh2YWx1ZVswXSAhPT0gJy8nICYmIHZhbHVlWzBdICE9PSAnXFwnKSB7CiAgICAgIHZhbHVlID0gJy8nICsgdmFsdWUKICAgIH0KCiAgICB0aGlzLl91cGRhdGUoCiAgICAgIHRoaXMuX3JlcGxhY2UodmFsdWUsIHRoaXMuX2NvbXBvbmVudHNbNV0sIHRoaXMuX2NvbXBvbmVudHNbNl0gLSAxIC8qID8gKi8pCiAgICApCiAgfQoKICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNoCgogIGdldCBzZWFyY2goKSB7CiAgICByZXR1cm4gdGhpcy5fc2xpY2UoCiAgICAgIHRoaXMuX2NvbXBvbmVudHNbNl0gLSAxIC8qID8gKi8sCiAgICAgIHRoaXMuX2NvbXBvbmVudHNbN10gLSAxIC8qICMgKi8KICAgICkKICB9CgogIHNldCBzZWFyY2godmFsdWUpIHsKICAgIGlmICh2YWx1ZSAmJiB2YWx1ZVswXSAhPT0gJz8nKSB2YWx1ZSA9ICc/JyArIHZhbHVlCgogICAgdGhpcy5fdXBkYXRlKAogICAgICB0aGlzLl9yZXBsYWNlKAogICAgICAgIHZhbHVlLAogICAgICAgIHRoaXMuX2NvbXBvbmVudHNbNl0gLSAxIC8qID8gKi8sCiAgICAgICAgdGhpcy5fY29tcG9uZW50c1s3XSAtIDEgLyogIyAqLwogICAgICApCiAgICApCiAgfQoKICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaGFzaAoKICBnZXQgaGFzaCgpIHsKICAgIHJldHVybiB0aGlzLl9zbGljZSh0aGlzLl9jb21wb25lbnRzWzddIC0gMSAvKiAjICovKQogIH0KCiAgc2V0IGhhc2godmFsdWUpIHsKICAgIGlmICh2YWx1ZSAmJiB2YWx1ZVswXSAhPT0gJyMnKSB2YWx1ZSA9ICcjJyArIHZhbHVlCgogICAgdGhpcy5fdXBkYXRlKHRoaXMuX3JlcGxhY2UodmFsdWUsIHRoaXMuX2NvbXBvbmVudHNbN10gLSAxIC8qICMgKi8pKQogIH0KCiAgdG9TdHJpbmcoKSB7CiAgICByZXR1cm4gdGhpcy5faHJlZgogIH0KCiAgdG9KU09OKCkgewogICAgcmV0dXJuIHRoaXMuX2hyZWYKICB9CgogIFtTeW1ib2wuZm9yKCdiYXJlLmluc3BlY3QnKV0oKSB7CiAgICByZXR1cm4gewogICAgICBfX3Byb3RvX186IHsgY29uc3RydWN0b3I6IFVSTCB9LAoKICAgICAgaHJlZjogdGhpcy5ocmVmLAogICAgICBwcm90b2NvbDogdGhpcy5wcm90b2NvbCwKICAgICAgdXNlcm5hbWU6IHRoaXMudXNlcm5hbWUsCiAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkLAogICAgICBob3N0OiB0aGlzLmhvc3QsCiAgICAgIGhvc3RuYW1lOiB0aGlzLmhvc3RuYW1lLAogICAgICBwb3J0OiB0aGlzLnBvcnQsCiAgICAgIHBhdGhuYW1lOiB0aGlzLnBhdGhuYW1lLAogICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoLAogICAgICBoYXNoOiB0aGlzLmhhc2gKICAgIH0KICB9CgogIF9zbGljZShzdGFydCwgZW5kID0gdGhpcy5faHJlZi5sZW5ndGgpIHsKICAgIHJldHVybiB0aGlzLl9ocmVmLnNsaWNlKHN0YXJ0LCBlbmQpCiAgfQoKICBfcmVwbGFjZShyZXBsYWNlbWVudCwgc3RhcnQsIGVuZCA9IHRoaXMuX2hyZWYubGVuZ3RoKSB7CiAgICByZXR1cm4gdGhpcy5fc2xpY2UoMCwgc3RhcnQpICsgcmVwbGFjZW1lbnQgKyB0aGlzLl9zbGljZShlbmQpCiAgfQoKICBfcGFyc2UoaHJlZiwgYmFzZSwgc2hvdWxkVGhyb3cpIHsKICAgIHRyeSB7CiAgICAgIHRoaXMuX2hyZWYgPSBiaW5kaW5nLnBhcnNlKAogICAgICAgIFN0cmluZyhocmVmKSwKICAgICAgICBiYXNlID8gU3RyaW5nKGJhc2UpIDogbnVsbCwKICAgICAgICB0aGlzLl9jb21wb25lbnRzLAogICAgICAgIHNob3VsZFRocm93CiAgICAgICkKICAgIH0gY2F0Y2ggKGVycikgewogICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVHlwZUVycm9yKSB0aHJvdyBlcnIKCiAgICAgIHRocm93IGVycm9ycy5JTlZBTElEX1VSTCgpCiAgICB9CiAgfQoKICBfdXBkYXRlKGhyZWYpIHsKICAgIHRyeSB7CiAgICAgIHRoaXMuX3BhcnNlKGhyZWYsIG51bGwsIHRydWUpCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFR5cGVFcnJvcikgdGhyb3cgZXJyCiAgICB9CiAgfQp9CgovLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybC1vcGFxdWUtcGF0aApmdW5jdGlvbiBoYXNPcGFxdWVQYXRoKHVybCkgewogIHJldHVybiB1cmwucGF0aG5hbWVbMF0gIT09ICcvJwp9CgovLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2Nhbm5vdC1oYXZlLWEtdXNlcm5hbWUtcGFzc3dvcmQtcG9ydApmdW5jdGlvbiBjYW5ub3RIYXZlQ3JlZGVudGlhbHNPclBvcnQodXJsKSB7CiAgcmV0dXJuIHVybC5ob3N0bmFtZSA9PT0gJycgfHwgdXJsLnByb3RvY29sID09PSAnZmlsZTonCn0KCmNvbnN0IFVSTCA9IGV4cG9ydHMKCmV4cG9ydHMuVVJMID0gVVJMIC8vIEZvciBOb2RlLmpzIGNvbXBhdGliaWxpdHkKCmV4cG9ydHMuZXJyb3JzID0gZXJyb3JzCgpleHBvcnRzLmlzVVJMID0gZnVuY3Rpb24gaXNVUkwodmFsdWUpIHsKICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlCgogIGxldCBjb25zdHJ1Y3RvciA9IHZhbHVlLmNvbnN0cnVjdG9yCgogIHdoaWxlICh0eXBlb2YgY29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicpIHsKICAgIGlmIChiaW5kaW5nLmlzVGFnZ2VkKGNvbnN0cnVjdG9yKSkgcmV0dXJuIHRydWUKCiAgICBjb25zdHJ1Y3RvciA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoY29uc3RydWN0b3IpCiAgfQoKICByZXR1cm4gZmFsc2UKfQoKZXhwb3J0cy5wYXJzZSA9IGZ1bmN0aW9uIHBhcnNlKGlucHV0LCBiYXNlKSB7CiAgY29uc3QgdXJsID0gbmV3IFVSTChpbnB1dCwgYmFzZSwgeyB0aHJvdzogZmFsc2UgfSkKICByZXR1cm4gdXJsLmhyZWYgPyB1cmwgOiBudWxsCn0KCmV4cG9ydHMuY2FuUGFyc2UgPSBmdW5jdGlvbiBjYW5QYXJzZShpbnB1dCwgYmFzZSkgewogIHJldHVybiBiaW5kaW5nLmNhblBhcnNlKFN0cmluZyhpbnB1dCksIGJhc2UgPyBTdHJpbmcoYmFzZSkgOiBudWxsKQp9CgpleHBvcnRzLmZpbGVVUkxUb1BhdGggPSBmdW5jdGlvbiBmaWxlVVJMVG9QYXRoKHVybCkgewogIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykgewogICAgdXJsID0gbmV3IFVSTCh1cmwpCiAgfQoKICBpZiAodXJsLnByb3RvY29sICE9PSAnZmlsZTonKSB7CiAgICB0aHJvdyBlcnJvcnMuSU5WQUxJRF9VUkxfU0NIRU1FKCdUaGUgVVJMIG11c3QgdXNlIHRoZSBmaWxlOiBwcm90b2NvbCcpCiAgfQoKICBpZiAoaXNXaW5kb3dzKSB7CiAgICBpZiAoLyUyZnwlNWMvaS50ZXN0KHVybC5wYXRobmFtZSkpIHsKICAgICAgdGhyb3cgZXJyb3JzLklOVkFMSURfRklMRV9VUkxfUEFUSCgKICAgICAgICAnVGhlIGZpbGU6IFVSTCBwYXRoIG11c3Qgbm90IGluY2x1ZGUgZW5jb2RlZCBcXCBvciAvIGNoYXJhY3RlcnMnCiAgICAgICkKICAgIH0KICB9IGVsc2UgewogICAgaWYgKHVybC5ob3N0bmFtZSkgewogICAgICB0aHJvdyBlcnJvcnMuSU5WQUxJRF9GSUxFX1VSTF9IT1NUKAogICAgICAgICJUaGUgZmlsZTogVVJMIGhvc3QgbXVzdCBiZSAnbG9jYWxob3N0JyBvciBlbXB0eSIKICAgICAgKQogICAgfQoKICAgIGlmICgvJTJmL2kudGVzdCh1cmwucGF0aG5hbWUpKSB7CiAgICAgIHRocm93IGVycm9ycy5JTlZBTElEX0ZJTEVfVVJMX1BBVEgoCiAgICAgICAgJ1RoZSBmaWxlOiBVUkwgcGF0aCBtdXN0IG5vdCBpbmNsdWRlIGVuY29kZWQgLyBjaGFyYWN0ZXJzJwogICAgICApCiAgICB9CiAgfQoKICBjb25zdCBwYXRobmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudCh1cmwucGF0aG5hbWUpKQoKICBpZiAoaXNXaW5kb3dzKSB7CiAgICBpZiAodXJsLmhvc3RuYW1lKSByZXR1cm4gJ1xcXFwnICsgdXJsLmhvc3RuYW1lICsgcGF0aG5hbWUKCiAgICBjb25zdCBsZXR0ZXIgPSBwYXRobmFtZS5jaGFyQ29kZUF0KDEpIHwgMHgyMAoKICAgIGlmICgKICAgICAgbGV0dGVyIDwgMHg2MSAvKiBhICovIHx8CiAgICAgIGxldHRlciA+IDB4N2EgLyogeiAqLyB8fAogICAgICBwYXRobmFtZS5jaGFyQ29kZUF0KDIpICE9PSAweDNhIC8qIDogKi8KICAgICkgewogICAgICB0aHJvdyBlcnJvcnMuSU5WQUxJRF9GSUxFX1VSTF9QQVRIKCdUaGUgZmlsZTogVVJMIHBhdGggbXVzdCBiZSBhYnNvbHV0ZScpCiAgICB9CgogICAgcmV0dXJuIHBhdGhuYW1lLnNsaWNlKDEpCiAgfQoKICByZXR1cm4gcGF0aG5hbWUKfQoKZXhwb3J0cy5wYXRoVG9GaWxlVVJMID0gZnVuY3Rpb24gcGF0aFRvRmlsZVVSTChwYXRobmFtZSkgewogIGxldCByZXNvbHZlZCA9IHBhdGgucmVzb2x2ZShwYXRobmFtZSkKCiAgaWYgKHBhdGhuYW1lW3BhdGhuYW1lLmxlbmd0aCAtIDFdID09PSAnLycpIHsKICAgIHJlc29sdmVkICs9ICcvJwogIH0gZWxzZSBpZiAoaXNXaW5kb3dzICYmIHBhdGhuYW1lW3BhdGhuYW1lLmxlbmd0aCAtIDFdID09PSAnXFwnKSB7CiAgICByZXNvbHZlZCArPSAnXFwnCiAgfQoKICByZXNvbHZlZCA9IHJlc29sdmVkCiAgICAucmVwbGFjZUFsbCgnJScsICclMjUnKSAvLyBNdXN0IGJlIGZpcnN0CiAgICAucmVwbGFjZUFsbCgnIycsICclMjMnKQogICAgLnJlcGxhY2VBbGwoJz8nLCAnJTNmJykKICAgIC5yZXBsYWNlQWxsKCdcbicsICclMGEnKQogICAgLnJlcGxhY2VBbGwoJ1xyJywgJyUwZCcpCiAgICAucmVwbGFjZUFsbCgnXHQnLCAnJTA5JykKCiAgaWYgKCFpc1dpbmRvd3MpIHsKICAgIHJlc29sdmVkID0gcmVzb2x2ZWQucmVwbGFjZUFsbCgnXFwnLCAnJTVjJykKICB9CgogIHJldHVybiBuZXcgVVJMKCdmaWxlOicgKyByZXNvbHZlZCkKfQptb2R1bGUuZXhwb3J0cyA9IGNsYXNzIFVSTEVycm9yIGV4dGVuZHMgRXJyb3IgewogIGNvbnN0cnVjdG9yKG1zZywgY29kZSwgZm4gPSBVUkxFcnJvcikgewogICAgc3VwZXIoYCR7Y29kZX06ICR7bXNnfWApCiAgICB0aGlzLmNvZGUgPSBjb2RlCgogICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7CiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIGZuKQogICAgfQogIH0KCiAgZ2V0IG5hbWUoKSB7CiAgICByZXR1cm4gJ1VSTEVycm9yJwogIH0KCiAgc3RhdGljIElOVkFMSURfVVJMKG1zZyA9ICdJbnZhbGlkIFVSTCcpIHsKICAgIHJldHVybiBuZXcgVVJMRXJyb3IobXNnLCAnSU5WQUxJRF9VUkwnLCBVUkxFcnJvci5JTlZBTElEX1VSTCkKICB9CgogIHN0YXRpYyBJTlZBTElEX1VSTF9TQ0hFTUUobXNnID0gJ0ludmFsaWQgVVJMJykgewogICAgcmV0dXJuIG5ldyBVUkxFcnJvcihtc2csICdJTlZBTElEX1VSTF9TQ0hFTUUnLCBVUkxFcnJvci5JTlZBTElEX1VSTF9TQ0hFTUUpCiAgfQoKICBzdGF0aWMgSU5WQUxJRF9GSUxFX1VSTF9IT1NUKG1zZyA9ICdJbnZhbGlkIGZpbGU6IFVSTCBob3N0JykgewogICAgcmV0dXJuIG5ldyBVUkxFcnJvcigKICAgICAgbXNnLAogICAgICAnSU5WQUxJRF9GSUxFX1VSTF9IT1NUJywKICAgICAgVVJMRXJyb3IuSU5WQUxJRF9GSUxFX1VSTF9IT1NUCiAgICApCiAgfQoKICBzdGF0aWMgSU5WQUxJRF9GSUxFX1VSTF9QQVRIKG1zZyA9ICdJbnZhbGlkIGZpbGU6IFVSTCBwYXRoJykgewogICAgcmV0dXJuIG5ldyBVUkxFcnJvcigKICAgICAgbXNnLAogICAgICAnSU5WQUxJRF9GSUxFX1VSTF9QQVRIJywKICAgICAgVVJMRXJyb3IuSU5WQUxJRF9GSUxFX1VSTF9QQVRICiAgICApCiAgfQp9CnsKICAibmFtZSI6ICJiYXJlLXVybCIsCiAgInZlcnNpb24iOiAiMi4xLjUiLAogICJkZXNjcmlwdGlvbiI6ICJXSEFUV0cgVVJMIGltcGxlbWVudGF0aW9uIGZvciBKYXZhU2NyaXB0IiwKICAiZXhwb3J0cyI6IHsKICAgICIuL3BhY2thZ2UiOiAiLi9wYWNrYWdlLmpzb24iLAogICAgIi4iOiB7CiAgICAgICJ0eXBlcyI6ICIuL2luZGV4LmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2luZGV4LmpzIgogICAgfSwKICAgICIuL2dsb2JhbCI6IHsKICAgICAgInR5cGVzIjogIi4vZ2xvYmFsLmQudHMiLAogICAgICAiZGVmYXVsdCI6ICIuL2dsb2JhbC5qcyIKICAgIH0KICB9LAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIsCiAgICAiaW5kZXguZC50cyIsCiAgICAiZ2xvYmFsLmpzIiwKICAgICJnbG9iYWwuZC50cyIsCiAgICAiYmluZGluZy5jIiwKICAgICJiaW5kaW5nLmpzIiwKICAgICJDTWFrZUxpc3RzLnR4dCIsCiAgICAibGliIiwKICAgICJwcmVidWlsZHMiCiAgXSwKICAiYWRkb24iOiB0cnVlLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAicHJldHRpZXIgLiAtLWNoZWNrICYmIGJhcmUgdGVzdC5qcyIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXVybC5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9iYXJlLXVybC9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2JhcmUtdXJsIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtcGF0aCI6ICJeMy4wLjAiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuMy4yIiwKICAgICJjbWFrZS1iYXJlIjogIl4xLjEuNiIsCiAgICAiY21ha2UtZmV0Y2giOiAiXjEuMC4wIiwKICAgICJwcmV0dGllciI6ICJeMy4zLjMiLAogICAgInByZXR0aWVyLWNvbmZpZy1zdGFuZGFyZCI6ICJeNy4wLjAiCiAgfQp9CmNvbnN0IExFID0gZXhwb3J0cy5MRSA9IChuZXcgVWludDhBcnJheShuZXcgVWludDE2QXJyYXkoWzB4ZmZdKS5idWZmZXIpKVswXSA9PT0gMHhmZgoKZXhwb3J0cy5CRSA9ICFMRQpjb25zdCBiNGEgPSByZXF1aXJlKCdiNGEnKQoKY29uc3QgeyBCRSB9ID0gcmVxdWlyZSgnLi9lbmRpYW4nKQoKZXhwb3J0cy5zdGF0ZSA9IGZ1bmN0aW9uIChzdGFydCA9IDAsIGVuZCA9IDAsIGJ1ZmZlciA9IG51bGwpIHsKICByZXR1cm4geyBzdGFydCwgZW5kLCBidWZmZXIsIGNhY2hlOiBudWxsIH0KfQoKY29uc3QgcmF3ID0gZXhwb3J0cy5yYXcgPSByZXF1aXJlKCcuL3JhdycpCgpjb25zdCB1aW50ID0gZXhwb3J0cy51aW50ID0gewogIHByZWVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHN0YXRlLmVuZCArPSBuIDw9IDB4ZmMgPyAxIDogbiA8PSAweGZmZmYgPyAzIDogbiA8PSAweGZmZmZmZmZmID8gNSA6IDkKICB9LAogIGVuY29kZSAoc3RhdGUsIG4pIHsKICAgIGlmIChuIDw9IDB4ZmMpIHVpbnQ4LmVuY29kZShzdGF0ZSwgbikKICAgIGVsc2UgaWYgKG4gPD0gMHhmZmZmKSB7CiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IDB4ZmQKICAgICAgdWludDE2LmVuY29kZShzdGF0ZSwgbikKICAgIH0gZWxzZSBpZiAobiA8PSAweGZmZmZmZmZmKSB7CiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IDB4ZmUKICAgICAgdWludDMyLmVuY29kZShzdGF0ZSwgbikKICAgIH0gZWxzZSB7CiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IDB4ZmYKICAgICAgdWludDY0LmVuY29kZShzdGF0ZSwgbikKICAgIH0KICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGNvbnN0IGEgPSB1aW50OC5kZWNvZGUoc3RhdGUpCiAgICBpZiAoYSA8PSAweGZjKSByZXR1cm4gYQogICAgaWYgKGEgPT09IDB4ZmQpIHJldHVybiB1aW50MTYuZGVjb2RlKHN0YXRlKQogICAgaWYgKGEgPT09IDB4ZmUpIHJldHVybiB1aW50MzIuZGVjb2RlKHN0YXRlKQogICAgcmV0dXJuIHVpbnQ2NC5kZWNvZGUoc3RhdGUpCiAgfQp9Cgpjb25zdCB1aW50OCA9IGV4cG9ydHMudWludDggPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgbikgewogICAgc3RhdGUuZW5kICs9IDEKICB9LAogIGVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHZhbGlkYXRlVWludChuKQogICAgc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdID0gbgogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgaWYgKHN0YXRlLnN0YXJ0ID49IHN0YXRlLmVuZCkgdGhyb3cgbmV3IEVycm9yKCdPdXQgb2YgYm91bmRzJykKICAgIHJldHVybiBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10KICB9Cn0KCmNvbnN0IHVpbnQxNiA9IGV4cG9ydHMudWludDE2ID0gewogIHByZWVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHN0YXRlLmVuZCArPSAyCiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICB2YWxpZGF0ZVVpbnQobikKICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IG4KICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IG4gPj4+IDgKICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGlmIChzdGF0ZS5lbmQgLSBzdGF0ZS5zdGFydCA8IDIpIHRocm93IG5ldyBFcnJvcignT3V0IG9mIGJvdW5kcycpCiAgICByZXR1cm4gKAogICAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gKwogICAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gKiAweDEwMAogICAgKQogIH0KfQoKY29uc3QgdWludDI0ID0gZXhwb3J0cy51aW50MjQgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgbikgewogICAgc3RhdGUuZW5kICs9IDMKICB9LAogIGVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHZhbGlkYXRlVWludChuKQogICAgc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdID0gbgogICAgc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdID0gbiA+Pj4gOAogICAgc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdID0gbiA+Pj4gMTYKICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGlmIChzdGF0ZS5lbmQgLSBzdGF0ZS5zdGFydCA8IDMpIHRocm93IG5ldyBFcnJvcignT3V0IG9mIGJvdW5kcycpCiAgICByZXR1cm4gKAogICAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gKwogICAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gKiAweDEwMCArCiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSAqIDB4MTAwMDAKICAgICkKICB9Cn0KCmNvbnN0IHVpbnQzMiA9IGV4cG9ydHMudWludDMyID0gewogIHByZWVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHN0YXRlLmVuZCArPSA0CiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICB2YWxpZGF0ZVVpbnQobikKICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IG4KICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IG4gPj4+IDgKICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IG4gPj4+IDE2CiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSBuID4+PiAyNAogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgNCkgdGhyb3cgbmV3IEVycm9yKCdPdXQgb2YgYm91bmRzJykKICAgIHJldHVybiAoCiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSArCiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSAqIDB4MTAwICsKICAgICAgc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdICogMHgxMDAwMCArCiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSAqIDB4MTAwMDAwMAogICAgKQogIH0KfQoKY29uc3QgdWludDQwID0gZXhwb3J0cy51aW50NDAgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgbikgewogICAgc3RhdGUuZW5kICs9IDUKICB9LAogIGVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHZhbGlkYXRlVWludChuKQogICAgY29uc3QgciA9IE1hdGguZmxvb3IobiAvIDB4MTAwKQogICAgdWludDguZW5jb2RlKHN0YXRlLCBuKQogICAgdWludDMyLmVuY29kZShzdGF0ZSwgcikKICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGlmIChzdGF0ZS5lbmQgLSBzdGF0ZS5zdGFydCA8IDUpIHRocm93IG5ldyBFcnJvcignT3V0IG9mIGJvdW5kcycpCiAgICByZXR1cm4gdWludDguZGVjb2RlKHN0YXRlKSArIDB4MTAwICogdWludDMyLmRlY29kZShzdGF0ZSkKICB9Cn0KCmNvbnN0IHVpbnQ0OCA9IGV4cG9ydHMudWludDQ4ID0gewogIHByZWVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHN0YXRlLmVuZCArPSA2CiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICB2YWxpZGF0ZVVpbnQobikKICAgIGNvbnN0IHIgPSBNYXRoLmZsb29yKG4gLyAweDEwMDAwKQogICAgdWludDE2LmVuY29kZShzdGF0ZSwgbikKICAgIHVpbnQzMi5lbmNvZGUoc3RhdGUsIHIpCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICBpZiAoc3RhdGUuZW5kIC0gc3RhdGUuc3RhcnQgPCA2KSB0aHJvdyBuZXcgRXJyb3IoJ091dCBvZiBib3VuZHMnKQogICAgcmV0dXJuIHVpbnQxNi5kZWNvZGUoc3RhdGUpICsgMHgxMDAwMCAqIHVpbnQzMi5kZWNvZGUoc3RhdGUpCiAgfQp9Cgpjb25zdCB1aW50NTYgPSBleHBvcnRzLnVpbnQ1NiA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICBzdGF0ZS5lbmQgKz0gNwogIH0sCiAgZW5jb2RlIChzdGF0ZSwgbikgewogICAgdmFsaWRhdGVVaW50KG4pCiAgICBjb25zdCByID0gTWF0aC5mbG9vcihuIC8gMHgxMDAwMDAwKQogICAgdWludDI0LmVuY29kZShzdGF0ZSwgbikKICAgIHVpbnQzMi5lbmNvZGUoc3RhdGUsIHIpCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICBpZiAoc3RhdGUuZW5kIC0gc3RhdGUuc3RhcnQgPCA3KSB0aHJvdyBuZXcgRXJyb3IoJ091dCBvZiBib3VuZHMnKQogICAgcmV0dXJuIHVpbnQyNC5kZWNvZGUoc3RhdGUpICsgMHgxMDAwMDAwICogdWludDMyLmRlY29kZShzdGF0ZSkKICB9Cn0KCmNvbnN0IHVpbnQ2NCA9IGV4cG9ydHMudWludDY0ID0gewogIHByZWVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHN0YXRlLmVuZCArPSA4CiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICB2YWxpZGF0ZVVpbnQobikKICAgIGNvbnN0IHIgPSBNYXRoLmZsb29yKG4gLyAweDEwMDAwMDAwMCkKICAgIHVpbnQzMi5lbmNvZGUoc3RhdGUsIG4pCiAgICB1aW50MzIuZW5jb2RlKHN0YXRlLCByKQogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgOCkgdGhyb3cgbmV3IEVycm9yKCdPdXQgb2YgYm91bmRzJykKICAgIHJldHVybiB1aW50MzIuZGVjb2RlKHN0YXRlKSArIDB4MTAwMDAwMDAwICogdWludDMyLmRlY29kZShzdGF0ZSkKICB9Cn0KCmNvbnN0IGludCA9IGV4cG9ydHMuaW50ID0gemlnWmFnSW50KHVpbnQpCmV4cG9ydHMuaW50OCA9IHppZ1phZ0ludCh1aW50OCkKZXhwb3J0cy5pbnQxNiA9IHppZ1phZ0ludCh1aW50MTYpCmV4cG9ydHMuaW50MjQgPSB6aWdaYWdJbnQodWludDI0KQpleHBvcnRzLmludDMyID0gemlnWmFnSW50KHVpbnQzMikKZXhwb3J0cy5pbnQ0MCA9IHppZ1phZ0ludCh1aW50NDApCmV4cG9ydHMuaW50NDggPSB6aWdaYWdJbnQodWludDQ4KQpleHBvcnRzLmludDU2ID0gemlnWmFnSW50KHVpbnQ1NikKZXhwb3J0cy5pbnQ2NCA9IHppZ1phZ0ludCh1aW50NjQpCgpjb25zdCBiaWd1aW50NjQgPSBleHBvcnRzLmJpZ3VpbnQ2NCA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICBzdGF0ZS5lbmQgKz0gOAogIH0sCiAgZW5jb2RlIChzdGF0ZSwgbikgewogICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhzdGF0ZS5idWZmZXIuYnVmZmVyLCBzdGF0ZS5zdGFydCArIHN0YXRlLmJ1ZmZlci5ieXRlT2Zmc2V0LCA4KQogICAgdmlldy5zZXRCaWdVaW50NjQoMCwgbiwgdHJ1ZSkgLy8gbGl0dGxlIGVuZGlhbgogICAgc3RhdGUuc3RhcnQgKz0gOAogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgOCkgdGhyb3cgbmV3IEVycm9yKCdPdXQgb2YgYm91bmRzJykKICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoc3RhdGUuYnVmZmVyLmJ1ZmZlciwgc3RhdGUuc3RhcnQgKyBzdGF0ZS5idWZmZXIuYnl0ZU9mZnNldCwgOCkKICAgIGNvbnN0IG4gPSB2aWV3LmdldEJpZ1VpbnQ2NCgwLCB0cnVlKSAvLyBsaXR0bGUgZW5kaWFuCiAgICBzdGF0ZS5zdGFydCArPSA4CiAgICByZXR1cm4gbgogIH0KfQoKZXhwb3J0cy5iaWdpbnQ2NCA9IHppZ1phZ0JpZ0ludChiaWd1aW50NjQpCgpjb25zdCBiaWd1aW50ID0gZXhwb3J0cy5iaWd1aW50ID0gewogIHByZWVuY29kZSAoc3RhdGUsIG4pIHsKICAgIGxldCBsZW4gPSAwCiAgICBmb3IgKGxldCBtID0gbjsgbTsgbSA9IG0gPj4gNjRuKSBsZW4rKwogICAgdWludC5wcmVlbmNvZGUoc3RhdGUsIGxlbikKICAgIHN0YXRlLmVuZCArPSA4ICogbGVuCiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICBsZXQgbGVuID0gMAogICAgZm9yIChsZXQgbSA9IG47IG07IG0gPSBtID4+IDY0bikgbGVuKysKICAgIHVpbnQuZW5jb2RlKHN0YXRlLCBsZW4pCiAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KHN0YXRlLmJ1ZmZlci5idWZmZXIsIHN0YXRlLnN0YXJ0ICsgc3RhdGUuYnVmZmVyLmJ5dGVPZmZzZXQsIDggKiBsZW4pCiAgICBmb3IgKGxldCBtID0gbiwgaSA9IDA7IG07IG0gPSBtID4+IDY0biwgaSArPSA4KSB7CiAgICAgIHZpZXcuc2V0QmlnVWludDY0KGksIEJpZ0ludC5hc1VpbnROKDY0LCBtKSwgdHJ1ZSkgLy8gbGl0dGxlIGVuZGlhbgogICAgfQogICAgc3RhdGUuc3RhcnQgKz0gOCAqIGxlbgogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgY29uc3QgbGVuID0gdWludC5kZWNvZGUoc3RhdGUpCiAgICBpZiAoc3RhdGUuZW5kIC0gc3RhdGUuc3RhcnQgPCA4ICogbGVuKSB0aHJvdyBuZXcgRXJyb3IoJ091dCBvZiBib3VuZHMnKQogICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhzdGF0ZS5idWZmZXIuYnVmZmVyLCBzdGF0ZS5zdGFydCArIHN0YXRlLmJ1ZmZlci5ieXRlT2Zmc2V0LCA4ICogbGVuKQogICAgbGV0IG4gPSAwbgogICAgZm9yIChsZXQgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSBuID0gKG4gPDwgNjRuKSArIHZpZXcuZ2V0QmlnVWludDY0KGkgKiA4LCB0cnVlKSAvLyBsaXR0bGUgZW5kaWFuCiAgICBzdGF0ZS5zdGFydCArPSA4ICogbGVuCiAgICByZXR1cm4gbgogIH0KfQoKZXhwb3J0cy5iaWdpbnQgPSB6aWdaYWdCaWdJbnQoYmlndWludCkKCmV4cG9ydHMubGV4aW50ID0gcmVxdWlyZSgnLi9sZXhpbnQnKQoKZXhwb3J0cy5mbG9hdDMyID0gewogIHByZWVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHN0YXRlLmVuZCArPSA0CiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KHN0YXRlLmJ1ZmZlci5idWZmZXIsIHN0YXRlLnN0YXJ0ICsgc3RhdGUuYnVmZmVyLmJ5dGVPZmZzZXQsIDQpCiAgICB2aWV3LnNldEZsb2F0MzIoMCwgbiwgdHJ1ZSkgLy8gbGl0dGxlIGVuZGlhbgogICAgc3RhdGUuc3RhcnQgKz0gNAogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgNCkgdGhyb3cgbmV3IEVycm9yKCdPdXQgb2YgYm91bmRzJykKICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoc3RhdGUuYnVmZmVyLmJ1ZmZlciwgc3RhdGUuc3RhcnQgKyBzdGF0ZS5idWZmZXIuYnl0ZU9mZnNldCwgNCkKICAgIGNvbnN0IGZsb2F0ID0gdmlldy5nZXRGbG9hdDMyKDAsIHRydWUpIC8vIGxpdHRsZSBlbmRpYW4KICAgIHN0YXRlLnN0YXJ0ICs9IDQKICAgIHJldHVybiBmbG9hdAogIH0KfQoKZXhwb3J0cy5mbG9hdDY0ID0gewogIHByZWVuY29kZSAoc3RhdGUsIG4pIHsKICAgIHN0YXRlLmVuZCArPSA4CiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KHN0YXRlLmJ1ZmZlci5idWZmZXIsIHN0YXRlLnN0YXJ0ICsgc3RhdGUuYnVmZmVyLmJ5dGVPZmZzZXQsIDgpCiAgICB2aWV3LnNldEZsb2F0NjQoMCwgbiwgdHJ1ZSkgLy8gbGl0dGxlIGVuZGlhbgogICAgc3RhdGUuc3RhcnQgKz0gOAogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgOCkgdGhyb3cgbmV3IEVycm9yKCdPdXQgb2YgYm91bmRzJykKICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoc3RhdGUuYnVmZmVyLmJ1ZmZlciwgc3RhdGUuc3RhcnQgKyBzdGF0ZS5idWZmZXIuYnl0ZU9mZnNldCwgOCkKICAgIGNvbnN0IGZsb2F0ID0gdmlldy5nZXRGbG9hdDY0KDAsIHRydWUpIC8vIGxpdHRsZSBlbmRpYW4KICAgIHN0YXRlLnN0YXJ0ICs9IDgKICAgIHJldHVybiBmbG9hdAogIH0KfQoKY29uc3QgYnVmZmVyID0gZXhwb3J0cy5idWZmZXIgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgYikgewogICAgaWYgKGIpIHVpbnQ4YXJyYXkucHJlZW5jb2RlKHN0YXRlLCBiKQogICAgZWxzZSBzdGF0ZS5lbmQrKwogIH0sCiAgZW5jb2RlIChzdGF0ZSwgYikgewogICAgaWYgKGIpIHVpbnQ4YXJyYXkuZW5jb2RlKHN0YXRlLCBiKQogICAgZWxzZSBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSAwCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICBjb25zdCBsZW4gPSB1aW50LmRlY29kZShzdGF0ZSkKICAgIGlmIChsZW4gPT09IDApIHJldHVybiBudWxsCiAgICBpZiAoc3RhdGUuZW5kIC0gc3RhdGUuc3RhcnQgPCBsZW4pIHRocm93IG5ldyBFcnJvcignT3V0IG9mIGJvdW5kcycpCiAgICByZXR1cm4gc3RhdGUuYnVmZmVyLnN1YmFycmF5KHN0YXRlLnN0YXJ0LCAoc3RhdGUuc3RhcnQgKz0gbGVuKSkKICB9Cn0KCmV4cG9ydHMuYmluYXJ5ID0gewogIC4uLmJ1ZmZlciwKICBwcmVlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICBpZiAodHlwZW9mIGIgPT09ICdzdHJpbmcnKSB1dGY4LnByZWVuY29kZShzdGF0ZSwgYikKICAgIGVsc2UgYnVmZmVyLnByZWVuY29kZShzdGF0ZSwgYikKICB9LAogIGVuY29kZSAoc3RhdGUsIGIpIHsKICAgIGlmICh0eXBlb2YgYiA9PT0gJ3N0cmluZycpIHV0ZjguZW5jb2RlKHN0YXRlLCBiKQogICAgZWxzZSBidWZmZXIuZW5jb2RlKHN0YXRlLCBiKQogIH0KfQoKZXhwb3J0cy5hcnJheWJ1ZmZlciA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICB1aW50LnByZWVuY29kZShzdGF0ZSwgYi5ieXRlTGVuZ3RoKQogICAgc3RhdGUuZW5kICs9IGIuYnl0ZUxlbmd0aAogIH0sCiAgZW5jb2RlIChzdGF0ZSwgYikgewogICAgdWludC5lbmNvZGUoc3RhdGUsIGIuYnl0ZUxlbmd0aCkKCiAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYikKCiAgICBzdGF0ZS5idWZmZXIuc2V0KHZpZXcsIHN0YXRlLnN0YXJ0KQogICAgc3RhdGUuc3RhcnQgKz0gYi5ieXRlTGVuZ3RoCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICBjb25zdCBsZW4gPSB1aW50LmRlY29kZShzdGF0ZSkKCiAgICBjb25zdCBiID0gbmV3IEFycmF5QnVmZmVyKGxlbikKICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShiKQoKICAgIHZpZXcuc2V0KHN0YXRlLmJ1ZmZlci5zdWJhcnJheShzdGF0ZS5zdGFydCwgc3RhdGUuc3RhcnQgKz0gbGVuKSkKCiAgICByZXR1cm4gYgogIH0KfQoKZnVuY3Rpb24gdHlwZWRhcnJheSAoVHlwZWRBcnJheSwgc3dhcCkgewogIGNvbnN0IG4gPSBUeXBlZEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UCgogIHJldHVybiB7CiAgICBwcmVlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICAgIHVpbnQucHJlZW5jb2RlKHN0YXRlLCBiLmxlbmd0aCkKICAgICAgc3RhdGUuZW5kICs9IGIuYnl0ZUxlbmd0aAogICAgfSwKICAgIGVuY29kZSAoc3RhdGUsIGIpIHsKICAgICAgdWludC5lbmNvZGUoc3RhdGUsIGIubGVuZ3RoKQoKICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KGIuYnVmZmVyLCBiLmJ5dGVPZmZzZXQsIGIuYnl0ZUxlbmd0aCkKCiAgICAgIGlmIChCRSAmJiBzd2FwKSBzd2FwKHZpZXcpCgogICAgICBzdGF0ZS5idWZmZXIuc2V0KHZpZXcsIHN0YXRlLnN0YXJ0KQogICAgICBzdGF0ZS5zdGFydCArPSBiLmJ5dGVMZW5ndGgKICAgIH0sCiAgICBkZWNvZGUgKHN0YXRlKSB7CiAgICAgIGNvbnN0IGxlbiA9IHVpbnQuZGVjb2RlKHN0YXRlKQoKICAgICAgbGV0IGIgPSBzdGF0ZS5idWZmZXIuc3ViYXJyYXkoc3RhdGUuc3RhcnQsIHN0YXRlLnN0YXJ0ICs9IGxlbiAqIG4pCiAgICAgIGlmIChiLmJ5dGVMZW5ndGggIT09IGxlbiAqIG4pIHRocm93IG5ldyBFcnJvcignT3V0IG9mIGJvdW5kcycpCiAgICAgIGlmICgoYi5ieXRlT2Zmc2V0ICUgbikgIT09IDApIGIgPSBuZXcgVWludDhBcnJheShiKQoKICAgICAgaWYgKEJFICYmIHN3YXApIHN3YXAoYikKCiAgICAgIHJldHVybiBuZXcgVHlwZWRBcnJheShiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGggLyBuKQogICAgfQogIH0KfQoKY29uc3QgdWludDhhcnJheSA9IGV4cG9ydHMudWludDhhcnJheSA9IHR5cGVkYXJyYXkoVWludDhBcnJheSkKZXhwb3J0cy51aW50MTZhcnJheSA9IHR5cGVkYXJyYXkoVWludDE2QXJyYXksIGI0YS5zd2FwMTYpCmV4cG9ydHMudWludDMyYXJyYXkgPSB0eXBlZGFycmF5KFVpbnQzMkFycmF5LCBiNGEuc3dhcDMyKQoKZXhwb3J0cy5pbnQ4YXJyYXkgPSB0eXBlZGFycmF5KEludDhBcnJheSkKZXhwb3J0cy5pbnQxNmFycmF5ID0gdHlwZWRhcnJheShJbnQxNkFycmF5LCBiNGEuc3dhcDE2KQpleHBvcnRzLmludDMyYXJyYXkgPSB0eXBlZGFycmF5KEludDMyQXJyYXksIGI0YS5zd2FwMzIpCgpleHBvcnRzLmJpZ3VpbnQ2NGFycmF5ID0gdHlwZWRhcnJheShCaWdVaW50NjRBcnJheSwgYjRhLnN3YXA2NCkKZXhwb3J0cy5iaWdpbnQ2NGFycmF5ID0gdHlwZWRhcnJheShCaWdJbnQ2NEFycmF5LCBiNGEuc3dhcDY0KQoKZXhwb3J0cy5mbG9hdDMyYXJyYXkgPSB0eXBlZGFycmF5KEZsb2F0MzJBcnJheSwgYjRhLnN3YXAzMikKZXhwb3J0cy5mbG9hdDY0YXJyYXkgPSB0eXBlZGFycmF5KEZsb2F0NjRBcnJheSwgYjRhLnN3YXA2NCkKCmZ1bmN0aW9uIHN0cmluZyAoZW5jb2RpbmcpIHsKICByZXR1cm4gewogICAgcHJlZW5jb2RlIChzdGF0ZSwgcykgewogICAgICBjb25zdCBsZW4gPSBiNGEuYnl0ZUxlbmd0aChzLCBlbmNvZGluZykKICAgICAgdWludC5wcmVlbmNvZGUoc3RhdGUsIGxlbikKICAgICAgc3RhdGUuZW5kICs9IGxlbgogICAgfSwKICAgIGVuY29kZSAoc3RhdGUsIHMpIHsKICAgICAgY29uc3QgbGVuID0gYjRhLmJ5dGVMZW5ndGgocywgZW5jb2RpbmcpCiAgICAgIHVpbnQuZW5jb2RlKHN0YXRlLCBsZW4pCiAgICAgIGI0YS53cml0ZShzdGF0ZS5idWZmZXIsIHMsIHN0YXRlLnN0YXJ0LCBlbmNvZGluZykKICAgICAgc3RhdGUuc3RhcnQgKz0gbGVuCiAgICB9LAogICAgZGVjb2RlIChzdGF0ZSkgewogICAgICBjb25zdCBsZW4gPSB1aW50LmRlY29kZShzdGF0ZSkKICAgICAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgbGVuKSB0aHJvdyBuZXcgRXJyb3IoJ091dCBvZiBib3VuZHMnKQogICAgICByZXR1cm4gYjRhLnRvU3RyaW5nKHN0YXRlLmJ1ZmZlciwgZW5jb2RpbmcsIHN0YXRlLnN0YXJ0LCAoc3RhdGUuc3RhcnQgKz0gbGVuKSkKICAgIH0sCiAgICBmaXhlZCAobikgewogICAgICByZXR1cm4gewogICAgICAgIHByZWVuY29kZSAoc3RhdGUpIHsKICAgICAgICAgIHN0YXRlLmVuZCArPSBuCiAgICAgICAgfSwKICAgICAgICBlbmNvZGUgKHN0YXRlLCBzKSB7CiAgICAgICAgICBiNGEud3JpdGUoc3RhdGUuYnVmZmVyLCBzLCBzdGF0ZS5zdGFydCwgbiwgZW5jb2RpbmcpCiAgICAgICAgICBzdGF0ZS5zdGFydCArPSBuCiAgICAgICAgfSwKICAgICAgICBkZWNvZGUgKHN0YXRlKSB7CiAgICAgICAgICBpZiAoc3RhdGUuZW5kIC0gc3RhdGUuc3RhcnQgPCBuKSB0aHJvdyBuZXcgRXJyb3IoJ091dCBvZiBib3VuZHMnKQogICAgICAgICAgcmV0dXJuIGI0YS50b1N0cmluZyhzdGF0ZS5idWZmZXIsIGVuY29kaW5nLCBzdGF0ZS5zdGFydCwgKHN0YXRlLnN0YXJ0ICs9IG4pKQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQoKY29uc3QgdXRmOCA9IGV4cG9ydHMuc3RyaW5nID0gZXhwb3J0cy51dGY4ID0gc3RyaW5nKCd1dGYtOCcpCmV4cG9ydHMuYXNjaWkgPSBzdHJpbmcoJ2FzY2lpJykKZXhwb3J0cy5oZXggPSBzdHJpbmcoJ2hleCcpCmV4cG9ydHMuYmFzZTY0ID0gc3RyaW5nKCdiYXNlNjQnKQpleHBvcnRzLnVjczIgPSBleHBvcnRzLnV0ZjE2bGUgPSBzdHJpbmcoJ3V0ZjE2bGUnKQoKZXhwb3J0cy5ib29sID0gewogIHByZWVuY29kZSAoc3RhdGUsIGIpIHsKICAgIHN0YXRlLmVuZCsrCiAgfSwKICBlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSBiID8gMSA6IDAKICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGlmIChzdGF0ZS5zdGFydCA+PSBzdGF0ZS5lbmQpIHRocm93IEVycm9yKCdPdXQgb2YgYm91bmRzJykKICAgIHJldHVybiBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPT09IDEKICB9Cn0KCmNvbnN0IGZpeGVkID0gZXhwb3J0cy5maXhlZCA9IGZ1bmN0aW9uIGZpeGVkIChuKSB7CiAgcmV0dXJuIHsKICAgIHByZWVuY29kZSAoc3RhdGUsIHMpIHsKICAgICAgaWYgKHMuYnl0ZUxlbmd0aCAhPT0gbikgdGhyb3cgbmV3IEVycm9yKCdJbmNvcnJlY3QgYnVmZmVyIHNpemUnKQogICAgICBzdGF0ZS5lbmQgKz0gbgogICAgfSwKICAgIGVuY29kZSAoc3RhdGUsIHMpIHsKICAgICAgc3RhdGUuYnVmZmVyLnNldChzLCBzdGF0ZS5zdGFydCkKICAgICAgc3RhdGUuc3RhcnQgKz0gbgogICAgfSwKICAgIGRlY29kZSAoc3RhdGUpIHsKICAgICAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgbikgdGhyb3cgbmV3IEVycm9yKCdPdXQgb2YgYm91bmRzJykKICAgICAgcmV0dXJuIHN0YXRlLmJ1ZmZlci5zdWJhcnJheShzdGF0ZS5zdGFydCwgKHN0YXRlLnN0YXJ0ICs9IG4pKQogICAgfQogIH0KfQoKZXhwb3J0cy5maXhlZDMyID0gZml4ZWQoMzIpCmV4cG9ydHMuZml4ZWQ2NCA9IGZpeGVkKDY0KQoKZXhwb3J0cy5hcnJheSA9IGZ1bmN0aW9uIGFycmF5IChlbmMpIHsKICByZXR1cm4gewogICAgcHJlZW5jb2RlIChzdGF0ZSwgbGlzdCkgewogICAgICB1aW50LnByZWVuY29kZShzdGF0ZSwgbGlzdC5sZW5ndGgpCiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykgZW5jLnByZWVuY29kZShzdGF0ZSwgbGlzdFtpXSkKICAgIH0sCiAgICBlbmNvZGUgKHN0YXRlLCBsaXN0KSB7CiAgICAgIHVpbnQuZW5jb2RlKHN0YXRlLCBsaXN0Lmxlbmd0aCkKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSBlbmMuZW5jb2RlKHN0YXRlLCBsaXN0W2ldKQogICAgfSwKICAgIGRlY29kZSAoc3RhdGUpIHsKICAgICAgY29uc3QgbGVuID0gdWludC5kZWNvZGUoc3RhdGUpCiAgICAgIGlmIChsZW4gPiAweDEwMDAwMCkgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBpcyB0b28gYmlnJykKICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KGxlbikKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJyW2ldID0gZW5jLmRlY29kZShzdGF0ZSkKICAgICAgcmV0dXJuIGFycgogICAgfQogIH0KfQoKZXhwb3J0cy5mcmFtZSA9IGZ1bmN0aW9uIGZyYW1lIChlbmMpIHsKICBjb25zdCBkdW1teSA9IGV4cG9ydHMuc3RhdGUoKQoKICByZXR1cm4gewogICAgcHJlZW5jb2RlIChzdGF0ZSwgbSkgewogICAgICBjb25zdCBlbmQgPSBzdGF0ZS5lbmQKICAgICAgZW5jLnByZWVuY29kZShzdGF0ZSwgbSkKICAgICAgdWludC5wcmVlbmNvZGUoc3RhdGUsIHN0YXRlLmVuZCAtIGVuZCkKICAgIH0sCiAgICBlbmNvZGUgKHN0YXRlLCBtKSB7CiAgICAgIGR1bW15LmVuZCA9IDAKICAgICAgZW5jLnByZWVuY29kZShkdW1teSwgbSkKICAgICAgdWludC5lbmNvZGUoc3RhdGUsIGR1bW15LmVuZCkKICAgICAgZW5jLmVuY29kZShzdGF0ZSwgbSkKICAgIH0sCiAgICBkZWNvZGUgKHN0YXRlKSB7CiAgICAgIGNvbnN0IGVuZCA9IHN0YXRlLmVuZAogICAgICBjb25zdCBsZW4gPSB1aW50LmRlY29kZShzdGF0ZSkKICAgICAgc3RhdGUuZW5kID0gc3RhdGUuc3RhcnQgKyBsZW4KICAgICAgY29uc3QgbSA9IGVuYy5kZWNvZGUoc3RhdGUpCiAgICAgIHN0YXRlLnN0YXJ0ID0gc3RhdGUuZW5kCiAgICAgIHN0YXRlLmVuZCA9IGVuZAogICAgICByZXR1cm4gbQogICAgfQogIH0KfQoKZXhwb3J0cy5kYXRlID0gewogIHByZWVuY29kZSAoc3RhdGUsIGQpIHsKICAgIGludC5wcmVlbmNvZGUoc3RhdGUsIGQuZ2V0VGltZSgpKQogIH0sCiAgZW5jb2RlIChzdGF0ZSwgZCkgewogICAgaW50LmVuY29kZShzdGF0ZSwgZC5nZXRUaW1lKCkpCiAgfSwKICBkZWNvZGUgKHN0YXRlLCBkKSB7CiAgICByZXR1cm4gbmV3IERhdGUoaW50LmRlY29kZShzdGF0ZSkpCiAgfQp9CgpleHBvcnRzLmpzb24gPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgdikgewogICAgdXRmOC5wcmVlbmNvZGUoc3RhdGUsIEpTT04uc3RyaW5naWZ5KHYpKQogIH0sCiAgZW5jb2RlIChzdGF0ZSwgdikgewogICAgdXRmOC5lbmNvZGUoc3RhdGUsIEpTT04uc3RyaW5naWZ5KHYpKQogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgcmV0dXJuIEpTT04ucGFyc2UodXRmOC5kZWNvZGUoc3RhdGUpKQogIH0KfQoKZXhwb3J0cy5uZGpzb24gPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgdikgewogICAgdXRmOC5wcmVlbmNvZGUoc3RhdGUsIEpTT04uc3RyaW5naWZ5KHYpICsgJ1xuJykKICB9LAogIGVuY29kZSAoc3RhdGUsIHYpIHsKICAgIHV0ZjguZW5jb2RlKHN0YXRlLCBKU09OLnN0cmluZ2lmeSh2KSArICdcbicpCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICByZXR1cm4gSlNPTi5wYXJzZSh1dGY4LmRlY29kZShzdGF0ZSkpCiAgfQp9CgovLyBzaW1wbGUgaGVscGVyIGZvciB3aGVuIHlvdSB3YW50IHRvIGp1c3QgZXhwcmVzcyBub3RoaW5nCmV4cG9ydHMubm9uZSA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICAvLyBkbyBub3RoaW5nCiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICAvLyBkbyBub3RoaW5nCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICByZXR1cm4gbnVsbAogIH0KfQoKLy8gImFueSIgZW5jb2RlcnMgaGVyZSBmb3IgaGVscGluZyBqdXN0IHN0cnVjdHVyZSBhbnkgb2JqZWN0IHdpdGhvdXQgc2NoZW1hdGlzaW5nIGl0Cgpjb25zdCBhbnlBcnJheSA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCBhcnIpIHsKICAgIHVpbnQucHJlZW5jb2RlKHN0YXRlLCBhcnIubGVuZ3RoKQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKICAgICAgYW55LnByZWVuY29kZShzdGF0ZSwgYXJyW2ldKQogICAgfQogIH0sCiAgZW5jb2RlIChzdGF0ZSwgYXJyKSB7CiAgICB1aW50LmVuY29kZShzdGF0ZSwgYXJyLmxlbmd0aCkKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CiAgICAgIGFueS5lbmNvZGUoc3RhdGUsIGFycltpXSkKICAgIH0KICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGNvbnN0IGFyciA9IFtdCiAgICBsZXQgbGVuID0gdWludC5kZWNvZGUoc3RhdGUpCiAgICB3aGlsZSAobGVuLS0gPiAwKSB7CiAgICAgIGFyci5wdXNoKGFueS5kZWNvZGUoc3RhdGUpKQogICAgfQogICAgcmV0dXJuIGFycgogIH0KfQoKY29uc3QgYW55T2JqZWN0ID0gewogIHByZWVuY29kZSAoc3RhdGUsIG8pIHsKICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKQogICAgdWludC5wcmVlbmNvZGUoc3RhdGUsIGtleXMubGVuZ3RoKQogICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykgewogICAgICB1dGY4LnByZWVuY29kZShzdGF0ZSwga2V5KQogICAgICBhbnkucHJlZW5jb2RlKHN0YXRlLCBvW2tleV0pCiAgICB9CiAgfSwKICBlbmNvZGUgKHN0YXRlLCBvKSB7CiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobykKICAgIHVpbnQuZW5jb2RlKHN0YXRlLCBrZXlzLmxlbmd0aCkKICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHsKICAgICAgdXRmOC5lbmNvZGUoc3RhdGUsIGtleSkKICAgICAgYW55LmVuY29kZShzdGF0ZSwgb1trZXldKQogICAgfQogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgbGV0IGxlbiA9IHVpbnQuZGVjb2RlKHN0YXRlKQogICAgY29uc3QgbyA9IHt9CiAgICB3aGlsZSAobGVuLS0gPiAwKSB7CiAgICAgIGNvbnN0IGtleSA9IHV0ZjguZGVjb2RlKHN0YXRlKQogICAgICBvW2tleV0gPSBhbnkuZGVjb2RlKHN0YXRlKQogICAgfQogICAgcmV0dXJuIG8KICB9Cn0KCmNvbnN0IGFueVR5cGVzID0gWwogIGV4cG9ydHMubm9uZSwKICBleHBvcnRzLmJvb2wsCiAgZXhwb3J0cy5zdHJpbmcsCiAgZXhwb3J0cy5idWZmZXIsCiAgZXhwb3J0cy51aW50LAogIGV4cG9ydHMuaW50LAogIGV4cG9ydHMuZmxvYXQ2NCwKICBhbnlBcnJheSwKICBhbnlPYmplY3QsCiAgZXhwb3J0cy5kYXRlCl0KCmNvbnN0IGFueSA9IGV4cG9ydHMuYW55ID0gewogIHByZWVuY29kZSAoc3RhdGUsIG8pIHsKICAgIGNvbnN0IHQgPSBnZXRUeXBlKG8pCiAgICB1aW50LnByZWVuY29kZShzdGF0ZSwgdCkKICAgIGFueVR5cGVzW3RdLnByZWVuY29kZShzdGF0ZSwgbykKICB9LAogIGVuY29kZSAoc3RhdGUsIG8pIHsKICAgIGNvbnN0IHQgPSBnZXRUeXBlKG8pCiAgICB1aW50LmVuY29kZShzdGF0ZSwgdCkKICAgIGFueVR5cGVzW3RdLmVuY29kZShzdGF0ZSwgbykKICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGNvbnN0IHQgPSB1aW50LmRlY29kZShzdGF0ZSkKICAgIGlmICh0ID49IGFueVR5cGVzLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHR5cGU6ICcgKyB0KQogICAgcmV0dXJuIGFueVR5cGVzW3RdLmRlY29kZShzdGF0ZSkKICB9Cn0KCmZ1bmN0aW9uIGdldFR5cGUgKG8pIHsKICBpZiAobyA9PT0gbnVsbCB8fCBvID09PSB1bmRlZmluZWQpIHJldHVybiAwCiAgaWYgKHR5cGVvZiBvID09PSAnYm9vbGVhbicpIHJldHVybiAxCiAgaWYgKHR5cGVvZiBvID09PSAnc3RyaW5nJykgcmV0dXJuIDIKICBpZiAoYjRhLmlzQnVmZmVyKG8pKSByZXR1cm4gMwogIGlmICh0eXBlb2YgbyA9PT0gJ251bWJlcicpIHsKICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKG8pKSByZXR1cm4gbyA+PSAwID8gNCA6IDUKICAgIHJldHVybiA2CiAgfQogIGlmIChBcnJheS5pc0FycmF5KG8pKSByZXR1cm4gNwogIGlmIChvIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIDkKICBpZiAodHlwZW9mIG8gPT09ICdvYmplY3QnKSByZXR1cm4gOAoKICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHR5cGUgZm9yICcgKyBvKQp9CgpleHBvcnRzLmZyb20gPSBmdW5jdGlvbiBmcm9tIChlbmMpIHsKICBpZiAodHlwZW9mIGVuYyA9PT0gJ3N0cmluZycpIHJldHVybiBmcm9tTmFtZWQoZW5jKQogIGlmIChlbmMucHJlZW5jb2RlKSByZXR1cm4gZW5jCiAgaWYgKGVuYy5lbmNvZGluZ0xlbmd0aCkgcmV0dXJuIGZyb21BYnN0cmFjdEVuY29kZXIoZW5jKQogIHJldHVybiBmcm9tQ29kZWMoZW5jKQp9CgpmdW5jdGlvbiBmcm9tTmFtZWQgKGVuYykgewogIHN3aXRjaCAoZW5jKSB7CiAgICBjYXNlICdhc2NpaSc6IHJldHVybiByYXcuYXNjaWkKICAgIGNhc2UgJ3V0Zi04JzoKICAgIGNhc2UgJ3V0ZjgnOiByZXR1cm4gcmF3LnV0ZjgKICAgIGNhc2UgJ2hleCc6IHJldHVybiByYXcuaGV4CiAgICBjYXNlICdiYXNlNjQnOiByZXR1cm4gcmF3LmJhc2U2NAogICAgY2FzZSAndXRmMTYtbGUnOgogICAgY2FzZSAndXRmMTZsZSc6CiAgICBjYXNlICd1Y3MtMic6CiAgICBjYXNlICd1Y3MyJzogcmV0dXJuIHJhdy51Y3MyCiAgICBjYXNlICduZGpzb24nOiByZXR1cm4gcmF3Lm5kanNvbgogICAgY2FzZSAnanNvbic6IHJldHVybiByYXcuanNvbgogICAgY2FzZSAnYmluYXJ5JzoKICAgIGRlZmF1bHQ6IHJldHVybiByYXcuYmluYXJ5CiAgfQp9CgpmdW5jdGlvbiBmcm9tQ29kZWMgKGVuYykgewogIGxldCB0bXBNID0gbnVsbAogIGxldCB0bXBCdWYgPSBudWxsCgogIHJldHVybiB7CiAgICBwcmVlbmNvZGUgKHN0YXRlLCBtKSB7CiAgICAgIHRtcE0gPSBtCiAgICAgIHRtcEJ1ZiA9IGVuYy5lbmNvZGUobSkKICAgICAgc3RhdGUuZW5kICs9IHRtcEJ1Zi5ieXRlTGVuZ3RoCiAgICB9LAogICAgZW5jb2RlIChzdGF0ZSwgbSkgewogICAgICByYXcuZW5jb2RlKHN0YXRlLCBtID09PSB0bXBNID8gdG1wQnVmIDogZW5jLmVuY29kZShtKSkKICAgICAgdG1wTSA9IHRtcEJ1ZiA9IG51bGwKICAgIH0sCiAgICBkZWNvZGUgKHN0YXRlKSB7CiAgICAgIHJldHVybiBlbmMuZGVjb2RlKHJhdy5kZWNvZGUoc3RhdGUpKQogICAgfQogIH0KfQoKZnVuY3Rpb24gZnJvbUFic3RyYWN0RW5jb2RlciAoZW5jKSB7CiAgcmV0dXJuIHsKICAgIHByZWVuY29kZSAoc3RhdGUsIG0pIHsKICAgICAgc3RhdGUuZW5kICs9IGVuYy5lbmNvZGluZ0xlbmd0aChtKQogICAgfSwKICAgIGVuY29kZSAoc3RhdGUsIG0pIHsKICAgICAgZW5jLmVuY29kZShtLCBzdGF0ZS5idWZmZXIsIHN0YXRlLnN0YXJ0KQogICAgICBzdGF0ZS5zdGFydCArPSBlbmMuZW5jb2RlLmJ5dGVzCiAgICB9LAogICAgZGVjb2RlIChzdGF0ZSkgewogICAgICBjb25zdCBtID0gZW5jLmRlY29kZShzdGF0ZS5idWZmZXIsIHN0YXRlLnN0YXJ0LCBzdGF0ZS5lbmQpCiAgICAgIHN0YXRlLnN0YXJ0ICs9IGVuYy5kZWNvZGUuYnl0ZXMKICAgICAgcmV0dXJuIG0KICAgIH0KICB9Cn0KCmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlIChlbmMsIG0pIHsKICBjb25zdCBzdGF0ZSA9IGV4cG9ydHMuc3RhdGUoKQogIGVuYy5wcmVlbmNvZGUoc3RhdGUsIG0pCiAgc3RhdGUuYnVmZmVyID0gYjRhLmFsbG9jVW5zYWZlKHN0YXRlLmVuZCkKICBlbmMuZW5jb2RlKHN0YXRlLCBtKQogIHJldHVybiBzdGF0ZS5idWZmZXIKfQoKZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUgKGVuYywgYnVmZmVyKSB7CiAgcmV0dXJuIGVuYy5kZWNvZGUoZXhwb3J0cy5zdGF0ZSgwLCBidWZmZXIuYnl0ZUxlbmd0aCwgYnVmZmVyKSkKfQoKZnVuY3Rpb24gemlnWmFnSW50IChlbmMpIHsKICByZXR1cm4gewogICAgcHJlZW5jb2RlIChzdGF0ZSwgbikgewogICAgICBlbmMucHJlZW5jb2RlKHN0YXRlLCB6aWdaYWdFbmNvZGVJbnQobikpCiAgICB9LAogICAgZW5jb2RlIChzdGF0ZSwgbikgewogICAgICBlbmMuZW5jb2RlKHN0YXRlLCB6aWdaYWdFbmNvZGVJbnQobikpCiAgICB9LAogICAgZGVjb2RlIChzdGF0ZSkgewogICAgICByZXR1cm4gemlnWmFnRGVjb2RlSW50KGVuYy5kZWNvZGUoc3RhdGUpKQogICAgfQogIH0KfQoKZnVuY3Rpb24gemlnWmFnRGVjb2RlSW50IChuKSB7CiAgcmV0dXJuIG4gPT09IDAgPyBuIDogKG4gJiAxKSA9PT0gMCA/IG4gLyAyIDogLShuICsgMSkgLyAyCn0KCmZ1bmN0aW9uIHppZ1phZ0VuY29kZUludCAobikgewogIC8vIDAsIC0xLCAxLCAtMiwgMiwgLi4uCiAgcmV0dXJuIG4gPCAwID8gKDIgKiAtbikgLSAxIDogbiA9PT0gMCA/IDAgOiAyICogbgp9CgpmdW5jdGlvbiB6aWdaYWdCaWdJbnQgKGVuYykgewogIHJldHVybiB7CiAgICBwcmVlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICAgIGVuYy5wcmVlbmNvZGUoc3RhdGUsIHppZ1phZ0VuY29kZUJpZ0ludChuKSkKICAgIH0sCiAgICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICAgIGVuYy5lbmNvZGUoc3RhdGUsIHppZ1phZ0VuY29kZUJpZ0ludChuKSkKICAgIH0sCiAgICBkZWNvZGUgKHN0YXRlKSB7CiAgICAgIHJldHVybiB6aWdaYWdEZWNvZGVCaWdJbnQoZW5jLmRlY29kZShzdGF0ZSkpCiAgICB9CiAgfQp9CgpmdW5jdGlvbiB6aWdaYWdEZWNvZGVCaWdJbnQgKG4pIHsKICByZXR1cm4gbiA9PT0gMG4gPyBuIDogKG4gJiAxbikgPT09IDBuID8gbiAvIDJuIDogLShuICsgMW4pIC8gMm4KfQoKZnVuY3Rpb24gemlnWmFnRW5jb2RlQmlnSW50IChuKSB7CiAgLy8gMCwgLTEsIDEsIC0yLCAyLCAuLi4KICByZXR1cm4gbiA8IDBuID8gKDJuICogLW4pIC0gMW4gOiBuID09PSAwbiA/IDBuIDogMm4gKiBuCn0KCmZ1bmN0aW9uIHZhbGlkYXRlVWludCAobikgewogIGlmICgobiA+PSAwKSA9PT0gZmFsc2UgLyogSGFuZGxlcyBOYU4gYXMgd2VsbCAqLykgdGhyb3cgbmV3IEVycm9yKCd1aW50IG11c3QgYmUgcG9zaXRpdmUnKQp9Cm1vZHVsZS5leHBvcnRzID0gewogIHByZWVuY29kZSwKICBlbmNvZGUsCiAgZGVjb2RlCn0KCmZ1bmN0aW9uIHByZWVuY29kZSAoc3RhdGUsIG51bSkgewogIGlmIChudW0gPCAyNTEpIHsKICAgIHN0YXRlLmVuZCsrCiAgfSBlbHNlIGlmIChudW0gPCAyNTYpIHsKICAgIHN0YXRlLmVuZCArPSAyCiAgfSBlbHNlIGlmIChudW0gPCAweDEwMDAwKSB7CiAgICBzdGF0ZS5lbmQgKz0gMwogIH0gZWxzZSBpZiAobnVtIDwgMHgxMDAwMDAwKSB7CiAgICBzdGF0ZS5lbmQgKz0gNAogIH0gZWxzZSBpZiAobnVtIDwgMHgxMDAwMDAwMDApIHsKICAgIHN0YXRlLmVuZCArPSA1CiAgfSBlbHNlIHsKICAgIHN0YXRlLmVuZCsrCiAgICBjb25zdCBleHAgPSBNYXRoLmZsb29yKE1hdGgubG9nKG51bSkgLyBNYXRoLmxvZygyKSkgLSAzMgogICAgcHJlZW5jb2RlKHN0YXRlLCBleHApCiAgICBzdGF0ZS5lbmQgKz0gNgogIH0KfQoKZnVuY3Rpb24gZW5jb2RlIChzdGF0ZSwgbnVtKSB7CiAgY29uc3QgbWF4ID0gMjUxCiAgY29uc3QgeCA9IG51bSAtIG1heAoKICBpZiAobnVtIDwgbWF4KSB7CiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSBudW0KICB9IGVsc2UgaWYgKG51bSA8IDI1NikgewogICAgc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdID0gbWF4CiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSB4CiAgfSBlbHNlIGlmIChudW0gPCAweDEwMDAwKSB7CiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSBtYXggKyAxCiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSB4ID4+IDggJiAweGZmCiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSB4ICYgMHhmZgogIH0gZWxzZSBpZiAobnVtIDwgMHgxMDAwMDAwKSB7CiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSBtYXggKyAyCiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSB4ID4+IDE2CiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSB4ID4+IDggJiAweGZmCiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSB4ICYgMHhmZgogIH0gZWxzZSBpZiAobnVtIDwgMHgxMDAwMDAwMDApIHsKICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IG1heCArIDMKICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IHggPj4gMjQKICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IHggPj4gMTYgJiAweGZmCiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSB4ID4+IDggJiAweGZmCiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSB4ICYgMHhmZgogIH0gZWxzZSB7CiAgICAvLyBuZWVkIHRvIHVzZSBNYXRoIGhlcmUgYXMgYml0d2lzZSBvcHMgYXJlIDMyIGJpdAogICAgY29uc3QgZXhwID0gTWF0aC5mbG9vcihNYXRoLmxvZyh4KSAvIE1hdGgubG9nKDIpKSAtIDMyCiAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPSAweGZmCgogICAgZW5jb2RlKHN0YXRlLCBleHApCiAgICBjb25zdCByZW0gPSB4IC8gTWF0aC5wb3coMiwgZXhwIC0gMTEpCgogICAgZm9yIChsZXQgaSA9IDU7IGkgPj0gMDsgaS0tKSB7CiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IHJlbSAvIE1hdGgucG93KDIsIDggKiBpKSAmIDB4ZmYKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGRlY29kZSAoc3RhdGUpIHsKICBjb25zdCBtYXggPSAyNTEKCiAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgMSkgdGhyb3cgbmV3IEVycm9yKCdPdXQgb2YgYm91bmRzJykKCiAgY29uc3QgZmxhZyA9IHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXQoKICBpZiAoZmxhZyA8IG1heCkgcmV0dXJuIGZsYWcKCiAgaWYgKHN0YXRlLmVuZCAtIHN0YXRlLnN0YXJ0IDwgZmxhZyAtIG1heCArIDEpIHsKICAgIHRocm93IG5ldyBFcnJvcignT3V0IG9mIGJvdW5kcy4nKQogIH0KCiAgaWYgKGZsYWcgPCAyNTIpIHsKICAgIHJldHVybiBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gKwogICAgICBtYXgKICB9CgogIGlmIChmbGFnIDwgMjUzKSB7CiAgICByZXR1cm4gKHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA8PCA4KSArCiAgICAgIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSArCiAgICAgIG1heAogIH0KCiAgaWYgKGZsYWcgPCAyNTQpIHsKICAgIHJldHVybiAoc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdIDw8IDE2KSArCiAgICAgIChzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gPDwgOCkgKwogICAgICBzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gKwogICAgICBtYXgKICB9CgogIC8vIDw8IDI0IHJlc3VsdCBtYXkgYmUgaW50ZXJwcmV0ZWQgYXMgbmVnYXRpdmUKICBpZiAoZmxhZyA8IDI1NSkgewogICAgcmV0dXJuIChzdGF0ZS5idWZmZXJbc3RhdGUuc3RhcnQrK10gKiAweDEwMDAwMDApICsKICAgICAgKHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA8PCAxNikgKwogICAgICAoc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdIDw8IDgpICsKICAgICAgc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdICsKICAgICAgbWF4CiAgfQoKICBjb25zdCBleHAgPSBkZWNvZGUoc3RhdGUpCgogIGlmIChzdGF0ZS5lbmQgLSBzdGF0ZS5zdGFydCA8IDYpIHRocm93IG5ldyBFcnJvcignT3V0IG9mIGJvdW5kcycpCgogIGxldCByZW0gPSAwCiAgZm9yIChsZXQgaSA9IDU7IGkgPj0gMDsgaS0tKSB7CiAgICByZW0gKz0gc3RhdGUuYnVmZmVyW3N0YXRlLnN0YXJ0KytdICogTWF0aC5wb3coMiwgOCAqIGkpCiAgfQoKICByZXR1cm4gKHJlbSAqIE1hdGgucG93KDIsIGV4cCAtIDExKSkgKyBtYXgKfQp7CiAgIm5hbWUiOiAiY29tcGFjdC1lbmNvZGluZyIsCiAgInZlcnNpb24iOiAiMi4xNi4xIiwKICAiZGVzY3JpcHRpb24iOiAiQSBzZXJpZXMgb2YgY29tcGFjdCBlbmNvZGluZyBzY2hlbWVzIGZvciBidWlsZGluZyBzbWFsbCBhbmQgZmFzdCBwYXJzZXJzIGFuZCBzZXJpYWxpemVycyIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYjRhIjogIl4xLjMuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy4wLjAiLAogICAgInN0YW5kYXJkIjogIl4xNi4wLjMiCiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC5qcyIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NvbXBhY3QtZW5jb2RpbmcvY29tcGFjdC1lbmNvZGluZy5naXQiCiAgfSwKICAiYXV0aG9yIjogIk1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkiLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY29tcGFjdC1lbmNvZGluZy9jb21wYWN0LWVuY29kaW5nL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vY29tcGFjdC1lbmNvZGluZy9jb21wYWN0LWVuY29kaW5nIgp9CmNvbnN0IGI0YSA9IHJlcXVpcmUoJ2I0YScpCgpjb25zdCB7IEJFIH0gPSByZXF1aXJlKCcuL2VuZGlhbicpCgpleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgYikgewogICAgc3RhdGUuZW5kICs9IGIuYnl0ZUxlbmd0aAogIH0sCiAgZW5jb2RlIChzdGF0ZSwgYikgewogICAgc3RhdGUuYnVmZmVyLnNldChiLCBzdGF0ZS5zdGFydCkKICAgIHN0YXRlLnN0YXJ0ICs9IGIuYnl0ZUxlbmd0aAogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgY29uc3QgYiA9IHN0YXRlLmJ1ZmZlci5zdWJhcnJheShzdGF0ZS5zdGFydCwgc3RhdGUuZW5kKQogICAgc3RhdGUuc3RhcnQgPSBzdGF0ZS5lbmQKICAgIHJldHVybiBiCiAgfQp9Cgpjb25zdCBidWZmZXIgPSBleHBvcnRzLmJ1ZmZlciA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICBpZiAoYikgdWludDhhcnJheS5wcmVlbmNvZGUoc3RhdGUsIGIpCiAgICBlbHNlIHN0YXRlLmVuZCsrCiAgfSwKICBlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICBpZiAoYikgdWludDhhcnJheS5lbmNvZGUoc3RhdGUsIGIpCiAgICBlbHNlIHN0YXRlLmJ1ZmZlcltzdGF0ZS5zdGFydCsrXSA9IDAKICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGNvbnN0IGIgPSBzdGF0ZS5idWZmZXIuc3ViYXJyYXkoc3RhdGUuc3RhcnQpCiAgICBpZiAoYi5ieXRlTGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbAogICAgc3RhdGUuc3RhcnQgPSBzdGF0ZS5lbmQKICAgIHJldHVybiBiCiAgfQp9CgpleHBvcnRzLmJpbmFyeSA9IHsKICAuLi5idWZmZXIsCiAgcHJlZW5jb2RlIChzdGF0ZSwgYikgewogICAgaWYgKHR5cGVvZiBiID09PSAnc3RyaW5nJykgdXRmOC5wcmVlbmNvZGUoc3RhdGUsIGIpCiAgICBlbHNlIGJ1ZmZlci5wcmVlbmNvZGUoc3RhdGUsIGIpCiAgfSwKICBlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICBpZiAodHlwZW9mIGIgPT09ICdzdHJpbmcnKSB1dGY4LmVuY29kZShzdGF0ZSwgYikKICAgIGVsc2UgYnVmZmVyLmVuY29kZShzdGF0ZSwgYikKICB9Cn0KCmV4cG9ydHMuYXJyYXlidWZmZXIgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgYikgewogICAgc3RhdGUuZW5kICs9IGIuYnl0ZUxlbmd0aAogIH0sCiAgZW5jb2RlIChzdGF0ZSwgYikgewogICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KGIpCgogICAgc3RhdGUuYnVmZmVyLnNldCh2aWV3LCBzdGF0ZS5zdGFydCkKICAgIHN0YXRlLnN0YXJ0ICs9IGIuYnl0ZUxlbmd0aAogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgY29uc3QgYiA9IG5ldyBBcnJheUJ1ZmZlcihzdGF0ZS5lbmQgLSBzdGF0ZS5zdGFydCkKICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShiKQoKICAgIHZpZXcuc2V0KHN0YXRlLmJ1ZmZlci5zdWJhcnJheShzdGF0ZS5zdGFydCkpCgogICAgc3RhdGUuc3RhcnQgPSBzdGF0ZS5lbmQKCiAgICByZXR1cm4gYgogIH0KfQoKZnVuY3Rpb24gdHlwZWRhcnJheSAoVHlwZWRBcnJheSwgc3dhcCkgewogIGNvbnN0IG4gPSBUeXBlZEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UCgogIHJldHVybiB7CiAgICBwcmVlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICAgIHN0YXRlLmVuZCArPSBiLmJ5dGVMZW5ndGgKICAgIH0sCiAgICBlbmNvZGUgKHN0YXRlLCBiKSB7CiAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDhBcnJheShiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpCgogICAgICBpZiAoQkUgJiYgc3dhcCkgc3dhcCh2aWV3KQoKICAgICAgc3RhdGUuYnVmZmVyLnNldCh2aWV3LCBzdGF0ZS5zdGFydCkKICAgICAgc3RhdGUuc3RhcnQgKz0gYi5ieXRlTGVuZ3RoCiAgICB9LAogICAgZGVjb2RlIChzdGF0ZSkgewogICAgICBsZXQgYiA9IHN0YXRlLmJ1ZmZlci5zdWJhcnJheShzdGF0ZS5zdGFydCkKICAgICAgaWYgKChiLmJ5dGVPZmZzZXQgJSBuKSAhPT0gMCkgYiA9IG5ldyBVaW50OEFycmF5KGIpCgogICAgICBpZiAoQkUgJiYgc3dhcCkgc3dhcChiKQoKICAgICAgc3RhdGUuc3RhcnQgPSBzdGF0ZS5lbmQKCiAgICAgIHJldHVybiBuZXcgVHlwZWRBcnJheShiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGggLyBuKQogICAgfQogIH0KfQoKY29uc3QgdWludDhhcnJheSA9IGV4cG9ydHMudWludDhhcnJheSA9IHR5cGVkYXJyYXkoVWludDhBcnJheSkKZXhwb3J0cy51aW50MTZhcnJheSA9IHR5cGVkYXJyYXkoVWludDE2QXJyYXksIGI0YS5zd2FwMTYpCmV4cG9ydHMudWludDMyYXJyYXkgPSB0eXBlZGFycmF5KFVpbnQzMkFycmF5LCBiNGEuc3dhcDMyKQoKZXhwb3J0cy5pbnQ4YXJyYXkgPSB0eXBlZGFycmF5KEludDhBcnJheSkKZXhwb3J0cy5pbnQxNmFycmF5ID0gdHlwZWRhcnJheShJbnQxNkFycmF5LCBiNGEuc3dhcDE2KQpleHBvcnRzLmludDMyYXJyYXkgPSB0eXBlZGFycmF5KEludDMyQXJyYXksIGI0YS5zd2FwMzIpCgpleHBvcnRzLmJpZ3VpbnQ2NGFycmF5ID0gdHlwZWRhcnJheShCaWdVaW50NjRBcnJheSwgYjRhLnN3YXA2NCkKZXhwb3J0cy5iaWdpbnQ2NGFycmF5ID0gdHlwZWRhcnJheShCaWdJbnQ2NEFycmF5LCBiNGEuc3dhcDY0KQoKZXhwb3J0cy5mbG9hdDMyYXJyYXkgPSB0eXBlZGFycmF5KEZsb2F0MzJBcnJheSwgYjRhLnN3YXAzMikKZXhwb3J0cy5mbG9hdDY0YXJyYXkgPSB0eXBlZGFycmF5KEZsb2F0NjRBcnJheSwgYjRhLnN3YXA2NCkKCmZ1bmN0aW9uIHN0cmluZyAoZW5jb2RpbmcpIHsKICByZXR1cm4gewogICAgcHJlZW5jb2RlIChzdGF0ZSwgcykgewogICAgICBzdGF0ZS5lbmQgKz0gYjRhLmJ5dGVMZW5ndGgocywgZW5jb2RpbmcpCiAgICB9LAogICAgZW5jb2RlIChzdGF0ZSwgcykgewogICAgICBzdGF0ZS5zdGFydCArPSBiNGEud3JpdGUoc3RhdGUuYnVmZmVyLCBzLCBzdGF0ZS5zdGFydCwgZW5jb2RpbmcpCiAgICB9LAogICAgZGVjb2RlIChzdGF0ZSkgewogICAgICBjb25zdCBzID0gYjRhLnRvU3RyaW5nKHN0YXRlLmJ1ZmZlciwgZW5jb2RpbmcsIHN0YXRlLnN0YXJ0KQogICAgICBzdGF0ZS5zdGFydCA9IHN0YXRlLmVuZAogICAgICByZXR1cm4gcwogICAgfQogIH0KfQoKY29uc3QgdXRmOCA9IGV4cG9ydHMuc3RyaW5nID0gZXhwb3J0cy51dGY4ID0gc3RyaW5nKCd1dGYtOCcpCmV4cG9ydHMuYXNjaWkgPSBzdHJpbmcoJ2FzY2lpJykKZXhwb3J0cy5oZXggPSBzdHJpbmcoJ2hleCcpCmV4cG9ydHMuYmFzZTY0ID0gc3RyaW5nKCdiYXNlNjQnKQpleHBvcnRzLnVjczIgPSBleHBvcnRzLnV0ZjE2bGUgPSBzdHJpbmcoJ3V0ZjE2bGUnKQoKZXhwb3J0cy5hcnJheSA9IGZ1bmN0aW9uIGFycmF5IChlbmMpIHsKICByZXR1cm4gewogICAgcHJlZW5jb2RlIChzdGF0ZSwgbGlzdCkgewogICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGxpc3QpIGVuYy5wcmVlbmNvZGUoc3RhdGUsIHZhbHVlKQogICAgfSwKICAgIGVuY29kZSAoc3RhdGUsIGxpc3QpIHsKICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBsaXN0KSBlbmMuZW5jb2RlKHN0YXRlLCB2YWx1ZSkKICAgIH0sCiAgICBkZWNvZGUgKHN0YXRlKSB7CiAgICAgIGNvbnN0IGFyciA9IFtdCiAgICAgIHdoaWxlIChzdGF0ZS5zdGFydCA8IHN0YXRlLmVuZCkgYXJyLnB1c2goZW5jLmRlY29kZShzdGF0ZSkpCiAgICAgIHJldHVybiBhcnIKICAgIH0KICB9Cn0KCmV4cG9ydHMuanNvbiA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCB2KSB7CiAgICB1dGY4LnByZWVuY29kZShzdGF0ZSwgSlNPTi5zdHJpbmdpZnkodikpCiAgfSwKICBlbmNvZGUgKHN0YXRlLCB2KSB7CiAgICB1dGY4LmVuY29kZShzdGF0ZSwgSlNPTi5zdHJpbmdpZnkodikpCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICByZXR1cm4gSlNPTi5wYXJzZSh1dGY4LmRlY29kZShzdGF0ZSkpCiAgfQp9CgpleHBvcnRzLm5kanNvbiA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCB2KSB7CiAgICB1dGY4LnByZWVuY29kZShzdGF0ZSwgSlNPTi5zdHJpbmdpZnkodikgKyAnXG4nKQogIH0sCiAgZW5jb2RlIChzdGF0ZSwgdikgewogICAgdXRmOC5lbmNvZGUoc3RhdGUsIEpTT04uc3RyaW5naWZ5KHYpICsgJ1xuJykKICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIHJldHVybiBKU09OLnBhcnNlKHV0ZjguZGVjb2RlKHN0YXRlKSkKICB9Cn0KcmVxdWlyZS5hZGRvbiA9IHJlcXVpcmUoJ3JlcXVpcmUtYWRkb24nKQoKbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlLmFkZG9uKCcuJywgX19maWxlbmFtZSkKY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4vYmluZGluZycpCgpleHBvcnRzLmNyYzMyID0gZnVuY3Rpb24gY3JjMzIgKGJ1ZmZlcikgewogIHJldHVybiBiaW5kaW5nLmNyY191MzJfbmFwaShidWZmZXIpCn0KewogICJuYW1lIjogImNyYy1uYXRpdmUiLAogICJ2ZXJzaW9uIjogIjEuMS43IiwKICAiZGVzY3JpcHRpb24iOiAibGliY3JjIEphdmFTY3JpcHQgYmluZGluZ3MgZm9yIE5vZGUuanMiLAogICJtYWluIjogImluZGV4LmpzIiwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgIm1hY3Jvcy5oIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IiwKICAgICJwcmVidWlsZHMiCiAgXSwKICAiYWRkb24iOiB0cnVlLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAibnBtIHJ1biBsaW50ICYmIG5wbSBydW4gdGVzdDpiYXJlICYmIG5wbSBydW4gdGVzdDpub2RlIiwKICAgICJ0ZXN0OmJhcmUiOiAiYmFyZSB0ZXN0Lm1qcyIsCiAgICAidGVzdDpub2RlIjogIm5vZGUgdGVzdC5tanMiLAogICAgImxpbnQiOiAic3RhbmRhcmQiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vY3JjLW5hdGl2ZS5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9jcmMtbmF0aXZlL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vY3JjLW5hdGl2ZSNyZWFkbWUiLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAicmVxdWlyZS1hZGRvbiI6ICJeMS4xLjAiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuMS4wIiwKICAgICJjbWFrZS1iYXJlIjogIl4xLjEuNyIsCiAgICAiY21ha2UtZmV0Y2giOiAiXjEuMS4wIiwKICAgICJjbWFrZS1uYXBpIjogIl4xLjAuMiIsCiAgICAic3RhbmRhcmQiOiAiXjE3LjAuMCIKICB9Cn0KLyoqCiAqIFRoZSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIENSQzMyIGlzIGEgdmVyc2lvbiBvZiB0aGUgc2xpY2UtYnktMTYgYWxnb3JpdGhtCiAqIGFzIGltcGxlbWVudGVkIGJ5IFN0ZXBoYW4gQnJ1bW1lLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3N0YnJ1bW1lL2NyYzMyLgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNiBTdGVwaGFuIEJydW1tZQogKgogKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KICogSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZQogKiB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KICoKICogUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsCiAqIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LAogKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgogKgogKiAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdCBjbGFpbQogKiAgICB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCiAqICAgIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0CiAqICAgIGRvY3VtZW50YXRpb24gd291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KICogMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUKICogICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgogKiAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgogKi8KCmNvbnN0IGxvb2t1cCA9IHJlcXVpcmUoJy4vbG9va3VwJykKCmV4cG9ydHMuY3JjMzIgPSBmdW5jdGlvbiBjcmMzMiAoYnVmZmVyKSB7CiAgbGV0IGNyYyA9IH4wCiAgbGV0IGkgPSAwCiAgbGV0IGxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoCgogIHdoaWxlIChsZW5ndGggPj0gMTYpIHsKICAgIGNyYyA9IGxvb2t1cFsxNV1bYnVmZmVyW2krK10gXiAoY3JjICYgMHhmZildIF4KICAgICAgICAgIGxvb2t1cFsxNF1bYnVmZmVyW2krK10gXiAoKGNyYyA+Pj4gOCkgJiAweGZmKV0gXgogICAgICAgICAgbG9va3VwWzEzXVtidWZmZXJbaSsrXSBeICgoY3JjID4+PiAxNikgJiAweGZmKV0gXgogICAgICAgICAgbG9va3VwWzEyXVtidWZmZXJbaSsrXSBeIChjcmMgPj4+IDI0KV0gXgogICAgICAgICAgbG9va3VwWzExXVtidWZmZXJbaSsrXV0gXgogICAgICAgICAgbG9va3VwWzEwXVtidWZmZXJbaSsrXV0gXgogICAgICAgICAgbG9va3VwWzldW2J1ZmZlcltpKytdXSBeCiAgICAgICAgICBsb29rdXBbOF1bYnVmZmVyW2krK11dIF4KICAgICAgICAgIGxvb2t1cFs3XVtidWZmZXJbaSsrXV0gXgogICAgICAgICAgbG9va3VwWzZdW2J1ZmZlcltpKytdXSBeCiAgICAgICAgICBsb29rdXBbNV1bYnVmZmVyW2krK11dIF4KICAgICAgICAgIGxvb2t1cFs0XVtidWZmZXJbaSsrXV0gXgogICAgICAgICAgbG9va3VwWzNdW2J1ZmZlcltpKytdXSBeCiAgICAgICAgICBsb29rdXBbMl1bYnVmZmVyW2krK11dIF4KICAgICAgICAgIGxvb2t1cFsxXVtidWZmZXJbaSsrXV0gXgogICAgICAgICAgbG9va3VwWzBdW2J1ZmZlcltpKytdXQoKICAgIGxlbmd0aCAtPSAxNgogIH0KCiAgd2hpbGUgKGxlbmd0aC0tID4gMCkgewogICAgY3JjID0gKGNyYyA+Pj4gOCkgXiBsb29rdXBbMF1bKGNyYyAmIDB4ZmYpIF4gYnVmZmVyW2krK11dCiAgfQoKICByZXR1cm4gfmNyYyA+Pj4gMAp9CmNvbnN0IGZhbGxiYWNrID0gcmVxdWlyZSgnLi9mYWxsYmFjaycpCgp0cnkgewogIGNvbnN0IG5hdGl2ZSA9IHJlcXVpcmUoJ2NyYy1uYXRpdmUnKQoKICBleHBvcnRzLmNyYzMyID0gZnVuY3Rpb24gY3JjMzIgKGJ1ZmZlcikgewogICAgcmV0dXJuIGJ1ZmZlci5ieXRlTGVuZ3RoIDw9IDI0ID8gZmFsbGJhY2suY3JjMzIoYnVmZmVyKSA6IG5hdGl2ZS5jcmMzMihidWZmZXIpCiAgfQp9IGNhdGNoIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZhbGxiYWNrCn0KY29uc3QgbG9va3VwID0gbmV3IEFycmF5KDE2KQoKZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7CiAgbG9va3VwW2ldID0gbmV3IFVpbnQzMkFycmF5KDB4MTAwKQp9Cgpmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmOyBpKyspIHsKICBsZXQgY3JjID0gaQoKICBmb3IgKGxldCBqID0gMDsgaiA8IDg7IGorKykgewogICAgY3JjID0gKGNyYyA+Pj4gMSkgXiAoKGNyYyAmIDEpICogMHhlZGI4ODMyMCkKICB9CgogIGxvb2t1cFswXVtpXSA9IGNyYwp9Cgpmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmOyBpKyspIHsKICBmb3IgKGxldCBqID0gMTsgaiA8IDE2OyBqKyspIHsKICAgIGxvb2t1cFtqXVtpXSA9IChsb29rdXBbaiAtIDFdW2ldID4+PiA4KSBeIGxvb2t1cFswXVtsb29rdXBbaiAtIDFdW2ldICYgMHhmZl0KICB9Cn0KCm1vZHVsZS5leHBvcnRzID0gbG9va3VwCnsKICAibmFtZSI6ICJjcmMtdW5pdmVyc2FsIiwKICAidmVyc2lvbiI6ICIxLjAuNCIsCiAgImRlc2NyaXB0aW9uIjogIlVuaXZlcnNhbCB3cmFwcGVyIGZvciBsaWJjcmMgd2l0aCBhIEphdmFTY3JpcHQgZmFsbGJhY2siLAogICJtYWluIjogImluZGV4LmpzIiwKICAiZmlsZXMiOiBbCiAgICAiZmFsbGJhY2suanMiLAogICAgImluZGV4LmpzIiwKICAgICJsb29rdXAuanMiCiAgXSwKICAiYnJvd3NlciI6IHsKICAgICIuL2luZGV4LmpzIjogIi4vZmFsbGJhY2suanMiCiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC5tanMiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vY3JjLXVuaXZlcnNhbC5naXQiCiAgfSwKICAiYXV0aG9yIjogIkthc3BlciBJc2FnZXIgRGFsc2dhcsOwIDxrYXNwZXJAZnVua3Rpb25lbC5jbz4iLAogICJsaWNlbnNlIjogIklTQyIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9jcmMtdW5pdmVyc2FsL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vY3JjLXVuaXZlcnNhbCNyZWFkbWUiLAogICJvcHRpb25hbERlcGVuZGVuY2llcyI6IHsKICAgICJjcmMtbmF0aXZlIjogIl4xLjAuMyIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy4xLjAiLAogICAgInN0YW5kYXJkIjogIl4xNy4wLjAiCiAgfQp9Cm1vZHVsZS5leHBvcnRzID0gY2xhc3MgRml4ZWRGSUZPIHsKICBjb25zdHJ1Y3RvciAoaHdtKSB7CiAgICBpZiAoIShod20gPiAwKSB8fCAoKGh3bSAtIDEpICYgaHdtKSAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdNYXggc2l6ZSBmb3IgYSBGaXhlZEZJRk8gc2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvJykKICAgIHRoaXMuYnVmZmVyID0gbmV3IEFycmF5KGh3bSkKICAgIHRoaXMubWFzayA9IGh3bSAtIDEKICAgIHRoaXMudG9wID0gMAogICAgdGhpcy5idG0gPSAwCiAgICB0aGlzLm5leHQgPSBudWxsCiAgfQoKICBjbGVhciAoKSB7CiAgICB0aGlzLnRvcCA9IHRoaXMuYnRtID0gMAogICAgdGhpcy5uZXh0ID0gbnVsbAogICAgdGhpcy5idWZmZXIuZmlsbCh1bmRlZmluZWQpCiAgfQoKICBwdXNoIChkYXRhKSB7CiAgICBpZiAodGhpcy5idWZmZXJbdGhpcy50b3BdICE9PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZQogICAgdGhpcy5idWZmZXJbdGhpcy50b3BdID0gZGF0YQogICAgdGhpcy50b3AgPSAodGhpcy50b3AgKyAxKSAmIHRoaXMubWFzawogICAgcmV0dXJuIHRydWUKICB9CgogIHNoaWZ0ICgpIHsKICAgIGNvbnN0IGxhc3QgPSB0aGlzLmJ1ZmZlclt0aGlzLmJ0bV0KICAgIGlmIChsYXN0ID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQKICAgIHRoaXMuYnVmZmVyW3RoaXMuYnRtXSA9IHVuZGVmaW5lZAogICAgdGhpcy5idG0gPSAodGhpcy5idG0gKyAxKSAmIHRoaXMubWFzawogICAgcmV0dXJuIGxhc3QKICB9CgogIHBlZWsgKCkgewogICAgcmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMuYnRtXQogIH0KCiAgaXNFbXB0eSAoKSB7CiAgICByZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5idG1dID09PSB1bmRlZmluZWQKICB9Cn0KY29uc3QgRml4ZWRGSUZPID0gcmVxdWlyZSgnLi9maXhlZC1zaXplJykKCm1vZHVsZS5leHBvcnRzID0gY2xhc3MgRmFzdEZJRk8gewogIGNvbnN0cnVjdG9yIChod20pIHsKICAgIHRoaXMuaHdtID0gaHdtIHx8IDE2CiAgICB0aGlzLmhlYWQgPSBuZXcgRml4ZWRGSUZPKHRoaXMuaHdtKQogICAgdGhpcy50YWlsID0gdGhpcy5oZWFkCiAgICB0aGlzLmxlbmd0aCA9IDAKICB9CgogIGNsZWFyICgpIHsKICAgIHRoaXMuaGVhZCA9IHRoaXMudGFpbAogICAgdGhpcy5oZWFkLmNsZWFyKCkKICAgIHRoaXMubGVuZ3RoID0gMAogIH0KCiAgcHVzaCAodmFsKSB7CiAgICB0aGlzLmxlbmd0aCsrCiAgICBpZiAoIXRoaXMuaGVhZC5wdXNoKHZhbCkpIHsKICAgICAgY29uc3QgcHJldiA9IHRoaXMuaGVhZAogICAgICB0aGlzLmhlYWQgPSBwcmV2Lm5leHQgPSBuZXcgRml4ZWRGSUZPKDIgKiB0aGlzLmhlYWQuYnVmZmVyLmxlbmd0aCkKICAgICAgdGhpcy5oZWFkLnB1c2godmFsKQogICAgfQogIH0KCiAgc2hpZnQgKCkgewogICAgaWYgKHRoaXMubGVuZ3RoICE9PSAwKSB0aGlzLmxlbmd0aC0tCiAgICBjb25zdCB2YWwgPSB0aGlzLnRhaWwuc2hpZnQoKQogICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkICYmIHRoaXMudGFpbC5uZXh0KSB7CiAgICAgIGNvbnN0IG5leHQgPSB0aGlzLnRhaWwubmV4dAogICAgICB0aGlzLnRhaWwubmV4dCA9IG51bGwKICAgICAgdGhpcy50YWlsID0gbmV4dAogICAgICByZXR1cm4gdGhpcy50YWlsLnNoaWZ0KCkKICAgIH0KCiAgICByZXR1cm4gdmFsCiAgfQoKICBwZWVrICgpIHsKICAgIGNvbnN0IHZhbCA9IHRoaXMudGFpbC5wZWVrKCkKICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnRhaWwubmV4dCkgcmV0dXJuIHRoaXMudGFpbC5uZXh0LnBlZWsoKQogICAgcmV0dXJuIHZhbAogIH0KCiAgaXNFbXB0eSAoKSB7CiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDAKICB9Cn0KewogICJuYW1lIjogImZhc3QtZmlmbyIsCiAgInZlcnNpb24iOiAiMS4zLjIiLAogICJkZXNjcmlwdGlvbiI6ICJBIGZhc3QgZmlmbyBpbXBsZW1lbnRhdGlvbiBzaW1pbGFyIHRvIHRoZSBvbmUgcG93ZXJpbmcgbmV4dFRpY2sgaW4gTm9kZS5qcyBjb3JlIiwKICAibWFpbiI6ICJpbmRleC5qcyIsCiAgImZpbGVzIjogWwogICAgIi4vaW5kZXguanMiLAogICAgIi4vZml4ZWQtc2l6ZS5qcyIKICBdLAogICJkZXBlbmRlbmNpZXMiOiB7fSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgInN0YW5kYXJkIjogIl4xNy4xLjAiLAogICAgImJyaXR0bGUiOiAiXjMuMy4yIgogIH0sCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJzdGFuZGFyZCAmJiBicml0dGxlIHRlc3QuanMiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvZmFzdC1maWZvLmdpdCIKICB9LAogICJhdXRob3IiOiAiTWF0aGlhcyBCdXVzIChAbWFmaW50b3NoKSIsCiAgImxpY2Vuc2UiOiAiTUlUIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9mYXN0LWZpZm8vaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvZmFzdC1maWZvIgp9CmNvbnN0IHsgRHVwbGV4LCBnZXRTdHJlYW1FcnJvciB9ID0gcmVxdWlyZSgnc3RyZWFteCcpCmNvbnN0IGI0YSA9IHJlcXVpcmUoJ2I0YScpCgptb2R1bGUuZXhwb3J0cyA9IGNsYXNzIEZyYW1lZFN0cmVhbSBleHRlbmRzIER1cGxleCB7CiAgY29uc3RydWN0b3IgKHJhd1N0cmVhbSwgeyBiaXRzID0gMzIgfSA9IHt9KSB7CiAgICBzdXBlcih7IG1hcFdyaXRhYmxlIH0pCgogICAgaWYgKGJpdHMgIT09IDMyICYmIGJpdHMgIT09IDI0ICYmIGJpdHMgIT09IDE2ICYmIGJpdHMgIT09IDgpIHRocm93IG5ldyBFcnJvcignRnJhbWUgYml0cyBpcyBpbnZhbGlkJykKCiAgICB0aGlzLnJhd1N0cmVhbSA9IHJhd1N0cmVhbQogICAgdGhpcy5mcmFtZUJpdHMgPSBiaXRzCiAgICB0aGlzLmZyYW1lQnl0ZXMgPSB0aGlzLmZyYW1lQml0cyAvIDgKICAgIHRoaXMubWF4TWVzc2FnZUxlbmd0aCA9IDB4ZmZmZmZmZmYgPj4+ICgzMiAtIHRoaXMuZnJhbWVCaXRzKQoKICAgIHRoaXMuX2ZhY3RvciA9IDAKICAgIHRoaXMuX21pc3NpbmdCeXRlcyA9IDAKICAgIHRoaXMuX21lc3NhZ2UgPSBudWxsCiAgICB0aGlzLl93cml0ZUNhbGxiYWNrID0gbnVsbAogICAgdGhpcy5fZW5kZWQgPSAyCgogICAgcmF3U3RyZWFtLm9uKCdkYXRhJywgdGhpcy5fb25kYXRhLmJpbmQodGhpcykpCiAgICByYXdTdHJlYW0ub24oJ2VuZCcsIHRoaXMuX29uZW5kLmJpbmQodGhpcykpCiAgICByYXdTdHJlYW0ub24oJ2RyYWluJywgdGhpcy5fb25kcmFpbi5iaW5kKHRoaXMpKQogICAgcmF3U3RyZWFtLm9uKCdlcnJvcicsIHRoaXMuX29uZXJyb3IuYmluZCh0aGlzKSkKICAgIHJhd1N0cmVhbS5vbignY2xvc2UnLCB0aGlzLl9vbmNsb3NlLmJpbmQodGhpcykpCiAgfQoKICBfcHJlZGVzdHJveSAoKSB7CiAgICB0aGlzLnJhd1N0cmVhbS5kZXN0cm95KGdldFN0cmVhbUVycm9yKHRoaXMpKQoKICAgIHRoaXMuX21heWJlQ29udGludWUobmV3IEVycm9yKCdTdHJlYW0gZGVzdHJveWVkJykpCiAgfQoKICBfcmVhZCAoY2IpIHsKICAgIHRoaXMucmF3U3RyZWFtLnJlc3VtZSgpIC8vIHJlc3RhcnQgc3RhdGUgbWFjaGluZQogICAgY2IobnVsbCkKICB9CgogIF93cml0ZSAoZGF0YSwgY2IpIHsKICAgIGNvbnN0IHdyYXAgPSB0aGlzLl9mcmFtZShkYXRhLmJ5dGVMZW5ndGgpCiAgICB3cmFwLnNldChkYXRhLCB0aGlzLmZyYW1lQnl0ZXMpCgogICAgaWYgKHRoaXMucmF3U3RyZWFtLndyaXRlKHdyYXApID09PSB0cnVlKSByZXR1cm4gY2IobnVsbCkKICAgIHRoaXMuX3dyaXRlQ2FsbGJhY2sgPSBjYgogIH0KCiAgX21heWJlQ29udGludWUgKGVycikgewogICAgY29uc3QgY2IgPSB0aGlzLl93cml0ZUNhbGxiYWNrCiAgICB0aGlzLl93cml0ZUNhbGxiYWNrID0gbnVsbAogICAgaWYgKGNiICE9PSBudWxsKSBjYihlcnIpCiAgfQoKICBfZnJhbWUgKGxlbikgewogICAgaWYgKGxlbiA+IHRoaXMubWF4TWVzc2FnZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdNZXNzYWdlIGxlbmd0aCAoJyArIGxlbiArICcpIGlzIGxvbmdlciB0aGFuIG1heCBmcmFtZSAoJyArIHRoaXMubWF4TWVzc2FnZUxlbmd0aCArICcpJykKCiAgICBjb25zdCB3cmFwID0gYjRhLmFsbG9jVW5zYWZlKGxlbiArIHRoaXMuZnJhbWVCeXRlcykKCiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZnJhbWVCeXRlczsgaSsrKSB7CiAgICAgIHdyYXBbaV0gPSBsZW4KICAgICAgbGVuID4+Pj0gOAogICAgfQoKICAgIHJldHVybiB3cmFwCiAgfQoKICBfb25jbG9zZSAoKSB7CiAgICBpZiAodGhpcy5fZW5kZWQgIT09IDApIHRoaXMuZGVzdHJveSgpCiAgfQoKICBfb25kcmFpbiAoKSB7CiAgICB0aGlzLl9tYXliZUNvbnRpbnVlKG51bGwpCiAgfQoKICBfb25lcnJvciAoZXJyKSB7CiAgICB0aGlzLmRlc3Ryb3koZXJyKQogIH0KCiAgX29uZGF0YSAoZGF0YSkgewogICAgbGV0IHJlYWQgPSAwCgogICAgd2hpbGUgKHJlYWQgPCBkYXRhLmJ5dGVMZW5ndGggJiYgIXRoaXMuZGVzdHJveWluZykgewogICAgICBpZiAodGhpcy5fZmFjdG9yIDwgdGhpcy5mcmFtZUJpdHMpIHsKICAgICAgICBjb25zdCBieXRlID0gZGF0YVtyZWFkKytdCiAgICAgICAgdGhpcy5fbWlzc2luZ0J5dGVzICs9ICgxIDw8IHRoaXMuX2ZhY3RvcikgKiBieXRlCiAgICAgICAgdGhpcy5fZmFjdG9yICs9IDgKCiAgICAgICAgaWYgKHRoaXMuX2ZhY3RvciA9PT0gdGhpcy5mcmFtZUJpdHMpIHsKICAgICAgICAgIGlmIChkYXRhLmJ5dGVMZW5ndGggLSByZWFkID49IHRoaXMuX21pc3NpbmdCeXRlcykgeyAvLyBxdWljayBjaGVjayBpZiB3ZSBjYW4gYXZvaWQgYSBjb3B5CiAgICAgICAgICAgIHRoaXMuX3B1c2goZGF0YS5zdWJhcnJheShyZWFkLCByZWFkICs9IHRoaXMuX21pc3NpbmdCeXRlcykpCiAgICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgbWFrZSBhIGJ1ZmZlciB0byByZWFkIGludG8KICAgICAgICAgICAgdGhpcy5fbWVzc2FnZSA9IGI0YS5hbGxvY1Vuc2FmZSh0aGlzLl9taXNzaW5nQnl0ZXMpCiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb250aW51ZQogICAgICB9CgogICAgICBjb25zdCBjaHVuayA9IGRhdGEuc3ViYXJyYXkocmVhZCwgcmVhZCArPSB0aGlzLl9taXNzaW5nQnl0ZXMpCiAgICAgIHRoaXMuX21lc3NhZ2Uuc2V0KGNodW5rLCB0aGlzLl9tZXNzYWdlLmJ5dGVMZW5ndGggLSB0aGlzLl9taXNzaW5nQnl0ZXMpCgogICAgICBpZiAocmVhZCA+IGRhdGEuYnl0ZUxlbmd0aCkgewogICAgICAgIHRoaXMuX21pc3NpbmdCeXRlcyAtPSBjaHVuay5ieXRlTGVuZ3RoCiAgICAgICAgcmV0dXJuCiAgICAgIH0KCiAgICAgIHRoaXMuX3B1c2godGhpcy5fbWVzc2FnZSkKICAgIH0KICB9CgogIF9wdXNoIChtZXNzYWdlKSB7CiAgICB0aGlzLl9mYWN0b3IgPSAwCiAgICB0aGlzLl9taXNzaW5nQnl0ZXMgPSAwCiAgICB0aGlzLl9tZXNzYWdlID0gbnVsbAoKICAgIC8vIHBhdXNlIHN0YXRlIG1hY2hpbmUgaWYgb3VyIGJ1ZmZlciBpcyBmdWxsCiAgICBpZiAodGhpcy5wdXNoKG1lc3NhZ2UpID09PSBmYWxzZSkgdGhpcy5yYXdTdHJlYW0ucGF1c2UoKQogIH0KCiAgX29uZW5kICgpIHsKICAgIGlmICh0aGlzLl9mYWN0b3IpIHsKICAgICAgdGhpcy5kZXN0cm95KG5ldyBFcnJvcignU3RyZWFtIGludGVycnVwdGVkJykpCiAgICAgIHJldHVybgogICAgfQoKICAgIHRoaXMuX2VuZGVkLS0KICAgIHRoaXMucHVzaChudWxsKQogIH0KCiAgX2ZpbmFsIChjYikgewogICAgdGhpcy5fZW5kZWQtLQogICAgdGhpcy5yYXdTdHJlYW0uZW5kKCkKICAgIGNiKG51bGwpCiAgfQp9CgpmdW5jdGlvbiBtYXBXcml0YWJsZSAocykgewogIHJldHVybiB0eXBlb2YgcyA9PT0gJ3N0cmluZycgPyBiNGEuZnJvbShzKSA6IHMKfQp7CiAgIm5hbWUiOiAiZnJhbWVkLXN0cmVhbSIsCiAgInZlcnNpb24iOiAiMS4wLjEiLAogICJkZXNjcmlwdGlvbiI6ICJSZWFkL3dyaXRlIHN0cmVhbSBtZXNzYWdlcyBwcmVmaXhlZCA4LCAxNiwgMjQgb3IgMzIgYml0IGxlbmd0aCIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAic3RhbmRhcmQgJiYgYnJpdHRsZSB0ZXN0LmpzIC0tY292ZXJhZ2UiLAogICAgImxpbnQiOiAic3RhbmRhcmQiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9mcmFtZWQtc3RyZWFtLmdpdCIKICB9LAogICJhdXRob3IiOiAiIiwKICAibGljZW5zZSI6ICJNSVQiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vZnJhbWVkLXN0cmVhbS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2ZyYW1lZC1zdHJlYW0iLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYjRhIjogIl4xLjYuMSIsCiAgICAic3RyZWFteCI6ICJeMi4xMy4wIgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJicml0dGxlIjogIl4zLjEuMSIsCiAgICAiZHVwbGV4LXRocm91Z2giOiAiXjEuMC4yIiwKICAgICJzdGFuZGFyZCI6ICJeMTcuMC4wIgogIH0KfQpyZXF1aXJlLmFkZG9uID0gcmVxdWlyZSgncmVxdWlyZS1hZGRvbicpCgptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oJy4nLCBfX2ZpbGVuYW1lKQpjb25zdCB7IGlzV2luZG93cyB9ID0gcmVxdWlyZSgnd2hpY2gtcnVudGltZScpCmNvbnN0IGJpbmRpbmcgPSByZXF1aXJlKCcuL2JpbmRpbmcnKQoKZnVuY3Rpb24gb253b3JrKGVyciwgcmVzdWx0KSB7CiAgaWYgKGVycikgdGhpcy5yZWplY3QoZXJyKQogIGVsc2UgdGhpcy5yZXNvbHZlKHJlc3VsdCkKfQoKZXhwb3J0cy50cnlMb2NrID0gZnVuY3Rpb24gdHJ5TG9jayhmZCwgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gMCwgb3B0cyA9IHt9KSB7CiAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdvYmplY3QnKSB7CiAgICBvcHRzID0gb2Zmc2V0CiAgICBvZmZzZXQgPSAwCiAgfQoKICBpZiAodHlwZW9mIGxlbmd0aCA9PT0gJ29iamVjdCcpIHsKICAgIG9wdHMgPSBsZW5ndGgKICAgIGxlbmd0aCA9IDAKICB9CgogIGlmICh0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHsKICAgIG9wdHMgPSB7fQogIH0KCiAgdHJ5IHsKICAgIGJpbmRpbmcuZnNfZXh0X25hcGlfdHJ5X2xvY2soZmQsIG9mZnNldCwgbGVuZ3RoLCBvcHRzLnNoYXJlZCA/IDAgOiAxKQogIH0gY2F0Y2ggKGVycikgewogICAgaWYgKGVyci5jb2RlID09PSAnRUFHQUlOJykgcmV0dXJuIGZhbHNlCiAgICB0aHJvdyBlcnIKICB9CgogIHJldHVybiB0cnVlCn0KCmV4cG9ydHMud2FpdEZvckxvY2sgPSBmdW5jdGlvbiB3YWl0Rm9yTG9jaygKICBmZCwKICBvZmZzZXQgPSAwLAogIGxlbmd0aCA9IDAsCiAgb3B0cyA9IHt9CikgewogIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnb2JqZWN0JykgewogICAgb3B0cyA9IG9mZnNldAogICAgb2Zmc2V0ID0gMAogIH0KCiAgaWYgKHR5cGVvZiBsZW5ndGggPT09ICdvYmplY3QnKSB7CiAgICBvcHRzID0gbGVuZ3RoCiAgICBsZW5ndGggPSAwCiAgfQoKICBpZiAodHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7CiAgICBvcHRzID0ge30KICB9CgogIGNvbnN0IHJlcSA9IEJ1ZmZlci5hbGxvYyhiaW5kaW5nLnNpemVvZl9mc19leHRfbmFwaV9sb2NrX3QpCiAgY29uc3QgY3R4ID0gewogICAgcmVxLAogICAgcmVzb2x2ZTogbnVsbCwKICAgIHJlamVjdDogbnVsbAogIH0KCiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGN0eC5yZXNvbHZlID0gcmVzb2x2ZQogICAgY3R4LnJlamVjdCA9IHJlamVjdAogIH0pCgogIHRyeSB7CiAgICBiaW5kaW5nLmZzX2V4dF9uYXBpX3dhaXRfZm9yX2xvY2soCiAgICAgIHJlcSwKICAgICAgZmQsCiAgICAgIG9mZnNldCwKICAgICAgbGVuZ3RoLAogICAgICBvcHRzLnNoYXJlZCA/IDAgOiAxLAogICAgICBjdHgsCiAgICAgIG9ud29yawogICAgKQogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycikKICB9CgogIHJldHVybiBwcm9taXNlCn0KCmV4cG9ydHMudHJ5RG93bmdyYWRlTG9jayA9IGZ1bmN0aW9uIHRyeURvd25ncmFkZUxvY2soCiAgZmQsCiAgb2Zmc2V0ID0gMCwKICBsZW5ndGggPSAwCikgewogIHRyeSB7CiAgICBiaW5kaW5nLmZzX2V4dF9uYXBpX3RyeV9kb3duZ3JhZGVfbG9jayhmZCwgb2Zmc2V0LCBsZW5ndGgpCiAgfSBjYXRjaCAoZXJyKSB7CiAgICBpZiAoZXJyLmNvZGUgPT09ICdFQUdBSU4nKSByZXR1cm4gZmFsc2UKICAgIHRocm93IGVycgogIH0KCiAgcmV0dXJuIHRydWUKfQoKZXhwb3J0cy53YWl0Rm9yRG93bmdyYWRlTG9jayA9IGZ1bmN0aW9uIGRvd25ncmFkZUxvY2soCiAgZmQsCiAgb2Zmc2V0ID0gMCwKICBsZW5ndGggPSAwCikgewogIGNvbnN0IHJlcSA9IEJ1ZmZlci5hbGxvYyhiaW5kaW5nLnNpemVvZl9mc19leHRfbmFwaV9sb2NrX3QpCiAgY29uc3QgY3R4ID0gewogICAgcmVxLAogICAgcmVzb2x2ZTogbnVsbCwKICAgIHJlamVjdDogbnVsbAogIH0KCiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGN0eC5yZXNvbHZlID0gcmVzb2x2ZQogICAgY3R4LnJlamVjdCA9IHJlamVjdAogIH0pCgogIHRyeSB7CiAgICBiaW5kaW5nLmZzX2V4dF9uYXBpX3dhaXRfZm9yX2Rvd25ncmFkZV9sb2NrKAogICAgICByZXEsCiAgICAgIGZkLAogICAgICBvZmZzZXQsCiAgICAgIGxlbmd0aCwKICAgICAgY3R4LAogICAgICBvbndvcmsKICAgICkKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpCiAgfQoKICByZXR1cm4gcHJvbWlzZQp9CgpleHBvcnRzLnRyeVVwZ3JhZGVMb2NrID0gZnVuY3Rpb24gdHJ5VXBncmFkZUxvY2soZmQsIG9mZnNldCA9IDAsIGxlbmd0aCA9IDApIHsKICB0cnkgewogICAgYmluZGluZy5mc19leHRfbmFwaV90cnlfdXBncmFkZV9sb2NrKGZkLCBvZmZzZXQsIGxlbmd0aCkKICB9IGNhdGNoIChlcnIpIHsKICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBR0FJTicpIHJldHVybiBmYWxzZQogICAgdGhyb3cgZXJyCiAgfQoKICByZXR1cm4gdHJ1ZQp9CgpleHBvcnRzLndhaXRGb3JVcGdyYWRlTG9jayA9IGZ1bmN0aW9uIHVwZ3JhZGVMb2NrKGZkLCBvZmZzZXQgPSAwLCBsZW5ndGggPSAwKSB7CiAgY29uc3QgcmVxID0gQnVmZmVyLmFsbG9jKGJpbmRpbmcuc2l6ZW9mX2ZzX2V4dF9uYXBpX2xvY2tfdCkKICBjb25zdCBjdHggPSB7CiAgICByZXEsCiAgICByZXNvbHZlOiBudWxsLAogICAgcmVqZWN0OiBudWxsCiAgfQoKICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgY3R4LnJlc29sdmUgPSByZXNvbHZlCiAgICBjdHgucmVqZWN0ID0gcmVqZWN0CiAgfSkKCiAgdHJ5IHsKICAgIGJpbmRpbmcuZnNfZXh0X25hcGlfd2FpdF9mb3JfdXBncmFkZV9sb2NrKAogICAgICByZXEsCiAgICAgIGZkLAogICAgICBvZmZzZXQsCiAgICAgIGxlbmd0aCwKICAgICAgY3R4LAogICAgICBvbndvcmsKICAgICkKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpCiAgfQoKICByZXR1cm4gcHJvbWlzZQp9CgpleHBvcnRzLnVubG9jayA9IGZ1bmN0aW9uIHVubG9jayhmZCwgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gMCkgewogIGJpbmRpbmcuZnNfZXh0X25hcGlfdW5sb2NrKGZkLCBvZmZzZXQsIGxlbmd0aCkKfQoKZXhwb3J0cy50cmltID0gZnVuY3Rpb24gdHJpbShmZCwgb2Zmc2V0LCBsZW5ndGgpIHsKICBjb25zdCByZXEgPSBCdWZmZXIuYWxsb2MoYmluZGluZy5zaXplb2ZfZnNfZXh0X25hcGlfdHJpbV90KQogIGNvbnN0IGN0eCA9IHsKICAgIHJlcSwKICAgIHJlc29sdmU6IG51bGwsCiAgICByZWplY3Q6IG51bGwKICB9CgogIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICBjdHgucmVzb2x2ZSA9IHJlc29sdmUKICAgIGN0eC5yZWplY3QgPSByZWplY3QKICB9KQoKICB0cnkgewogICAgYmluZGluZy5mc19leHRfbmFwaV90cmltKHJlcSwgZmQsIG9mZnNldCwgbGVuZ3RoLCBjdHgsIG9ud29yaykKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpCiAgfQoKICByZXR1cm4gcHJvbWlzZQp9CgpleHBvcnRzLnNwYXJzZSA9IGZ1bmN0aW9uIHNwYXJzZShmZCkgewogIC8vIFNob3J0IGNpcmN1aXQgb24gZXZlcnl0aGluZyBidXQgV2luZG93cwogIGlmICghaXNXaW5kb3dzKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkKCiAgY29uc3QgcmVxID0gQnVmZmVyLmFsbG9jKGJpbmRpbmcuc2l6ZW9mX2ZzX2V4dF9uYXBpX3NwYXJzZV90KQogIGNvbnN0IGN0eCA9IHsKICAgIHJlcSwKICAgIHJlc29sdmU6IG51bGwsCiAgICByZWplY3Q6IG51bGwKICB9CgogIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICBjdHgucmVzb2x2ZSA9IHJlc29sdmUKICAgIGN0eC5yZWplY3QgPSByZWplY3QKICB9KQoKICB0cnkgewogICAgYmluZGluZy5mc19leHRfbmFwaV9zcGFyc2UocmVxLCBmZCwgY3R4LCBvbndvcmspCiAgfSBjYXRjaCAoZXJyKSB7CiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKQogIH0KCiAgcmV0dXJuIHByb21pc2UKfQoKZXhwb3J0cy5zd2FwID0gZnVuY3Rpb24gc3dhcChmcm9tLCB0bykgewogIGNvbnN0IHJlcSA9IEJ1ZmZlci5hbGxvYyhiaW5kaW5nLnNpemVvZl9mc19leHRfbmFwaV9zd2FwX3QpCiAgY29uc3QgY3R4ID0gewogICAgcmVxLAogICAgcmVzb2x2ZTogbnVsbCwKICAgIHJlamVjdDogbnVsbAogIH0KCiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGN0eC5yZXNvbHZlID0gcmVzb2x2ZQogICAgY3R4LnJlamVjdCA9IHJlamVjdAogIH0pCgogIHRyeSB7CiAgICBiaW5kaW5nLmZzX2V4dF9uYXBpX3N3YXAocmVxLCBmcm9tLCB0bywgY3R4LCBvbndvcmspCiAgfSBjYXRjaCAoZXJyKSB7CiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKQogIH0KCiAgcmV0dXJuIHByb21pc2UKfQoKZXhwb3J0cy5nZXRBdHRyID0gZnVuY3Rpb24gZ2V0QXR0cihmZCwgbmFtZSkgewogIGNvbnN0IHJlcSA9IEJ1ZmZlci5hbGxvYyhiaW5kaW5nLnNpemVvZl9mc19leHRfbmFwaV9nZXRfYXR0cl90KQogIGNvbnN0IGN0eCA9IHsKICAgIHJlcSwKICAgIHJlc29sdmU6IG51bGwsCiAgICByZWplY3Q6IG51bGwKICB9CgogIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICBjdHgucmVzb2x2ZSA9IHJlc29sdmUKICAgIGN0eC5yZWplY3QgPSByZWplY3QKICB9KQoKICB0cnkgewogICAgYmluZGluZy5mc19leHRfbmFwaV9nZXRfYXR0cihyZXEsIGZkLCBuYW1lLCBjdHgsIG9ud29yaykKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpCiAgfQoKICByZXR1cm4gcHJvbWlzZS50aGVuKChidWZmZXIpID0+CiAgICBidWZmZXIgPT09IG51bGwgPyBudWxsIDogQnVmZmVyLmZyb20oYnVmZmVyKQogICkKfQoKZXhwb3J0cy5zZXRBdHRyID0gZnVuY3Rpb24gc2V0QXR0cihmZCwgbmFtZSwgdmFsdWUsIGVuY29kaW5nKSB7CiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHZhbHVlID0gQnVmZmVyLmZyb20odmFsdWUsIGVuY29kaW5nKQoKICBjb25zdCByZXEgPSBCdWZmZXIuYWxsb2MoYmluZGluZy5zaXplb2ZfZnNfZXh0X25hcGlfc2V0X2F0dHJfdCkKICBjb25zdCBjdHggPSB7CiAgICByZXEsCiAgICB2YWx1ZSwKICAgIHJlc29sdmU6IG51bGwsCiAgICByZWplY3Q6IG51bGwKICB9CgogIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICBjdHgucmVzb2x2ZSA9IHJlc29sdmUKICAgIGN0eC5yZWplY3QgPSByZWplY3QKICB9KQoKICB0cnkgewogICAgYmluZGluZy5mc19leHRfbmFwaV9zZXRfYXR0cihyZXEsIGZkLCBuYW1lLCB2YWx1ZSwgY3R4LCBvbndvcmspCiAgfSBjYXRjaCAoZXJyKSB7CiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKQogIH0KCiAgcmV0dXJuIHByb21pc2UKfQoKZXhwb3J0cy5yZW1vdmVBdHRyID0gZnVuY3Rpb24gcmVtb3ZlQXR0cihmZCwgbmFtZSkgewogIGNvbnN0IHJlcSA9IEJ1ZmZlci5hbGxvYyhiaW5kaW5nLnNpemVvZl9mc19leHRfbmFwaV9yZW1vdmVfYXR0cl90KQogIGNvbnN0IGN0eCA9IHsKICAgIHJlcSwKICAgIHJlc29sdmU6IG51bGwsCiAgICByZWplY3Q6IG51bGwKICB9CgogIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICBjdHgucmVzb2x2ZSA9IHJlc29sdmUKICAgIGN0eC5yZWplY3QgPSByZWplY3QKICB9KQoKICB0cnkgewogICAgYmluZGluZy5mc19leHRfbmFwaV9yZW1vdmVfYXR0cihyZXEsIGZkLCBuYW1lLCBjdHgsIG9ud29yaykKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpCiAgfQoKICByZXR1cm4gcHJvbWlzZQp9CgpleHBvcnRzLmxpc3RBdHRycyA9IGZ1bmN0aW9uIGxpc3RBdHRycyhmZCkgewogIGNvbnN0IHJlcSA9IEJ1ZmZlci5hbGxvYyhiaW5kaW5nLnNpemVvZl9mc19leHRfbmFwaV9saXN0X2F0dHJzX3QpCiAgY29uc3QgY3R4ID0gewogICAgcmVxLAogICAgcmVzb2x2ZTogbnVsbCwKICAgIHJlamVjdDogbnVsbAogIH0KCiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGN0eC5yZXNvbHZlID0gcmVzb2x2ZQogICAgY3R4LnJlamVjdCA9IHJlamVjdAogIH0pCgogIHRyeSB7CiAgICBiaW5kaW5nLmZzX2V4dF9uYXBpX2xpc3RfYXR0cnMocmVxLCBmZCwgY3R4LCBvbndvcmspCiAgfSBjYXRjaCAoZXJyKSB7CiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKQogIH0KCiAgcmV0dXJuIHByb21pc2UKfQp7CiAgIm5hbWUiOiAiZnMtbmF0aXZlLWV4dGVuc2lvbnMiLAogICJ2ZXJzaW9uIjogIjEuNC4yIiwKICAiZGVzY3JpcHRpb24iOiAiTmF0aXZlIGZpbGUgc3lzdGVtIGV4dGVuc2lvbnMgZm9yIGFkdmFuY2VkIGZpbGUgb3BlcmF0aW9ucyIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIsCiAgICAibWFjcm9zLmgiLAogICAgImJpbmRpbmcuYyIsCiAgICAiYmluZGluZy5qcyIsCiAgICAiQ01ha2VMaXN0cy50eHQiLAogICAgImluY2x1ZGUiLAogICAgInNyYyIsCiAgICAicHJlYnVpbGRzIgogIF0sCiAgImltcG9ydHMiOiB7CiAgICAiY2hpbGRfcHJvY2VzcyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1zdWJwcm9jZXNzIiwKICAgICAgImRlZmF1bHQiOiAiY2hpbGRfcHJvY2VzcyIKICAgIH0sCiAgICAiZnMiOiB7CiAgICAgICJiYXJlIjogImJhcmUtZnMiLAogICAgICAiZGVmYXVsdCI6ICJmcyIKICAgIH0sCiAgICAiZnMvKiI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1mcy8qIiwKICAgICAgImRlZmF1bHQiOiAiZnMvKiIKICAgIH0sCiAgICAicGF0aCI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1wYXRoIiwKICAgICAgImRlZmF1bHQiOiAicGF0aCIKICAgIH0KICB9LAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJucG0gcnVuIGxpbnQgJiYgbnBtIHJ1biB0ZXN0OmJhcmUgJiYgbnBtIHJ1biB0ZXN0Om5vZGUiLAogICAgInRlc3Q6YmFyZSI6ICJiYXJlIHRlc3QuanMiLAogICAgInRlc3Q6bm9kZSI6ICJub2RlIHRlc3QuanMiLAogICAgImxpbnQiOiAicHJldHRpZXIgLiAtLWNoZWNrIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2ZzLW5hdGl2ZS1leHRlbnNpb25zLmdpdCIKICB9LAogICJhdXRob3IiOiAiS2FzcGVyIElzYWdlciBEYWxzZ2Fyw7AgPGthc3BlckBmdW5rdGlvbmVsLmNvPiIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9mcy1uYXRpdmUtZXh0ZW5zaW9ucy9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2ZzLW5hdGl2ZS1leHRlbnNpb25zI3JlYWRtZSIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJyZXF1aXJlLWFkZG9uIjogIl4xLjEuMCIsCiAgICAid2hpY2gtcnVudGltZSI6ICJeMS4yLjAiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtZnMiOiAiXjMuMC4yIiwKICAgICJiYXJlLXBhdGgiOiAiXjMuMC4wIiwKICAgICJiYXJlLXN1YnByb2Nlc3MiOiAiXjQuMC4xIiwKICAgICJicml0dGxlIjogIl4zLjEuMSIsCiAgICAiY21ha2UtYmFyZSI6ICJeMS4xLjEwIiwKICAgICJjbWFrZS1uYXBpIjogIl4xLjAuNSIsCiAgICAibWluaW1pc3QiOiAiXjEuMi42IiwKICAgICJwcmV0dGllciI6ICJeMy41LjMiLAogICAgInByZXR0aWVyLWNvbmZpZy1zdGFuZGFyZCI6ICJeNy4wLjAiLAogICAgInRlc3QtdG1wIjogIl4xLjIuMSIKICB9Cn0KY29uc3Qgc29kaXVtID0gcmVxdWlyZSgnc29kaXVtLXVuaXZlcnNhbCcpCmNvbnN0IGMgPSByZXF1aXJlKCdjb21wYWN0LWVuY29kaW5nJykKY29uc3QgYjRhID0gcmVxdWlyZSgnYjRhJykKCi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lcmtsZV90cmVlI1NlY29uZF9wcmVpbWFnZV9hdHRhY2sKY29uc3QgTEVBRl9UWVBFID0gYjRhLmZyb20oWzBdKQpjb25zdCBQQVJFTlRfVFlQRSA9IGI0YS5mcm9tKFsxXSkKY29uc3QgUk9PVF9UWVBFID0gYjRhLmZyb20oWzJdKQoKY29uc3QgSFlQRVJDT1JFID0gYjRhLmZyb20oJ2h5cGVyY29yZScpCgpleHBvcnRzLmtleVBhaXIgPSBmdW5jdGlvbiAoc2VlZCkgewogIC8vIGtleSBwYWlycyBtaWdodCBzdGF5IGFyb3VuZCBmb3IgYSB3aGlsZSwgc28gYmV0dGVyIG5vdCB0byB1c2UgYSBkZWZhdWx0IHNsYWIgdG8gYXZvaWQgcmV0YWluaW5nIGl0IGNvbXBsZXRlbHkKICBjb25zdCBzbGFiID0gYjRhLmFsbG9jVW5zYWZlU2xvdyhzb2RpdW0uY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMgKyBzb2RpdW0uY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMpCiAgY29uc3QgcHVibGljS2V5ID0gc2xhYi5zdWJhcnJheSgwLCBzb2RpdW0uY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpCiAgY29uc3Qgc2VjcmV0S2V5ID0gc2xhYi5zdWJhcnJheShzb2RpdW0uY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpCgogIGlmIChzZWVkKSBzb2RpdW0uY3J5cHRvX3NpZ25fc2VlZF9rZXlwYWlyKHB1YmxpY0tleSwgc2VjcmV0S2V5LCBzZWVkKQogIGVsc2Ugc29kaXVtLmNyeXB0b19zaWduX2tleXBhaXIocHVibGljS2V5LCBzZWNyZXRLZXkpCgogIHJldHVybiB7CiAgICBwdWJsaWNLZXksCiAgICBzZWNyZXRLZXkKICB9Cn0KCmV4cG9ydHMudmFsaWRhdGVLZXlQYWlyID0gZnVuY3Rpb24gKGtleVBhaXIpIHsKICBjb25zdCBwayA9IGI0YS5hbGxvY1Vuc2FmZShzb2RpdW0uY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpCiAgc29kaXVtLmNyeXB0b19zaWduX2VkMjU1MTlfc2tfdG9fcGsocGssIGtleVBhaXIuc2VjcmV0S2V5KQogIHJldHVybiBiNGEuZXF1YWxzKHBrLCBrZXlQYWlyLnB1YmxpY0tleSkKfQoKZXhwb3J0cy5zaWduID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHNlY3JldEtleSkgewogIC8vIERlZGljYXRlZCBzbGFiIGZvciB0aGUgc2lnbmF0dXJlLCB0byBhdm9pZCByZXRhaW5pbmcgdW5uZWVkZWQgbWVtIGFuZCBmb3Igc2VjdXJpdHkKICBjb25zdCBzaWduYXR1cmUgPSBiNGEuYWxsb2NVbnNhZmVTbG93KHNvZGl1bS5jcnlwdG9fc2lnbl9CWVRFUykKICBzb2RpdW0uY3J5cHRvX3NpZ25fZGV0YWNoZWQoc2lnbmF0dXJlLCBtZXNzYWdlLCBzZWNyZXRLZXkpCiAgcmV0dXJuIHNpZ25hdHVyZQp9CgpleHBvcnRzLnZlcmlmeSA9IGZ1bmN0aW9uIChtZXNzYWdlLCBzaWduYXR1cmUsIHB1YmxpY0tleSkgewogIGlmIChzaWduYXR1cmUuYnl0ZUxlbmd0aCAhPT0gc29kaXVtLmNyeXB0b19zaWduX0JZVEVTKSByZXR1cm4gZmFsc2UKICBpZiAocHVibGljS2V5LmJ5dGVMZW5ndGggIT09IHNvZGl1bS5jcnlwdG9fc2lnbl9QVUJMSUNLRVlCWVRFUykgcmV0dXJuIGZhbHNlCiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2lnbl92ZXJpZnlfZGV0YWNoZWQoc2lnbmF0dXJlLCBtZXNzYWdlLCBwdWJsaWNLZXkpCn0KCmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChtZXNzYWdlLCBwdWJsaWNLZXkpIHsKICBjb25zdCBjaXBoZXJ0ZXh0ID0gYjRhLmFsbG9jKG1lc3NhZ2UuYnl0ZUxlbmd0aCArIHNvZGl1bS5jcnlwdG9fYm94X1NFQUxCWVRFUykKICBzb2RpdW0uY3J5cHRvX2JveF9zZWFsKGNpcGhlcnRleHQsIG1lc3NhZ2UsIHB1YmxpY0tleSkKICByZXR1cm4gY2lwaGVydGV4dAp9CgpleHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoY2lwaGVydGV4dCwga2V5UGFpcikgewogIGlmIChjaXBoZXJ0ZXh0LmJ5dGVMZW5ndGggPCBzb2RpdW0uY3J5cHRvX2JveF9TRUFMQllURVMpIHJldHVybiBudWxsCgogIGNvbnN0IHBsYWludGV4dCA9IGI0YS5hbGxvYyhjaXBoZXJ0ZXh0LmJ5dGVMZW5ndGggLSBzb2RpdW0uY3J5cHRvX2JveF9TRUFMQllURVMpCgogIGlmICghc29kaXVtLmNyeXB0b19ib3hfc2VhbF9vcGVuKHBsYWludGV4dCwgY2lwaGVydGV4dCwga2V5UGFpci5wdWJsaWNLZXksIGtleVBhaXIuc2VjcmV0S2V5KSkgewogICAgcmV0dXJuIG51bGwKICB9CgogIHJldHVybiBwbGFpbnRleHQKfQoKZXhwb3J0cy5lbmNyeXB0aW9uS2V5UGFpciA9IGZ1bmN0aW9uIChzZWVkKSB7CiAgY29uc3QgcHVibGljS2V5ID0gYjRhLmFsbG9jKHNvZGl1bS5jcnlwdG9fYm94X1BVQkxJQ0tFWUJZVEVTKQogIGNvbnN0IHNlY3JldEtleSA9IGI0YS5hbGxvYyhzb2RpdW0uY3J5cHRvX2JveF9TRUNSRVRLRVlCWVRFUykKCiAgaWYgKHNlZWQpIHsKICAgIHNvZGl1bS5jcnlwdG9fYm94X3NlZWRfa2V5cGFpcihwdWJsaWNLZXksIHNlY3JldEtleSwgc2VlZCkKICB9IGVsc2UgewogICAgc29kaXVtLmNyeXB0b19ib3hfa2V5cGFpcihwdWJsaWNLZXksIHNlY3JldEtleSkKICB9CgogIHJldHVybiB7CiAgICBwdWJsaWNLZXksCiAgICBzZWNyZXRLZXkKICB9Cn0KCmV4cG9ydHMuZGF0YSA9IGZ1bmN0aW9uIChkYXRhKSB7CiAgY29uc3Qgb3V0ID0gYjRhLmFsbG9jVW5zYWZlKDMyKQoKICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX2JhdGNoKG91dCwgWwogICAgTEVBRl9UWVBFLAogICAgYy5lbmNvZGUoYy51aW50NjQsIGRhdGEuYnl0ZUxlbmd0aCksCiAgICBkYXRhCiAgXSkKCiAgcmV0dXJuIG91dAp9CgpleHBvcnRzLnBhcmVudCA9IGZ1bmN0aW9uIChhLCBiKSB7CiAgaWYgKGEuaW5kZXggPiBiLmluZGV4KSB7CiAgICBjb25zdCB0bXAgPSBhCiAgICBhID0gYgogICAgYiA9IHRtcAogIH0KCiAgY29uc3Qgb3V0ID0gYjRhLmFsbG9jVW5zYWZlKDMyKQoKICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX2JhdGNoKG91dCwgWwogICAgUEFSRU5UX1RZUEUsCiAgICBjLmVuY29kZShjLnVpbnQ2NCwgYS5zaXplICsgYi5zaXplKSwKICAgIGEuaGFzaCwKICAgIGIuaGFzaAogIF0pCgogIHJldHVybiBvdXQKfQoKZXhwb3J0cy50cmVlID0gZnVuY3Rpb24gKHJvb3RzLCBvdXQpIHsKICBjb25zdCBidWZmZXJzID0gbmV3IEFycmF5KDMgKiByb290cy5sZW5ndGggKyAxKQogIGxldCBqID0gMAoKICBidWZmZXJzW2orK10gPSBST09UX1RZUEUKCiAgZm9yIChsZXQgaSA9IDA7IGkgPCByb290cy5sZW5ndGg7IGkrKykgewogICAgY29uc3QgciA9IHJvb3RzW2ldCiAgICBidWZmZXJzW2orK10gPSByLmhhc2gKICAgIGJ1ZmZlcnNbaisrXSA9IGMuZW5jb2RlKGMudWludDY0LCByLmluZGV4KQogICAgYnVmZmVyc1tqKytdID0gYy5lbmNvZGUoYy51aW50NjQsIHIuc2l6ZSkKICB9CgogIGlmICghb3V0KSBvdXQgPSBiNGEuYWxsb2NVbnNhZmUoMzIpCiAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaF9iYXRjaChvdXQsIGJ1ZmZlcnMpCiAgcmV0dXJuIG91dAp9CgpleHBvcnRzLmhhc2ggPSBmdW5jdGlvbiAoZGF0YSwgb3V0KSB7CiAgaWYgKCFvdXQpIG91dCA9IGI0YS5hbGxvY1Vuc2FmZSgzMikKICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIGRhdGEgPSBbZGF0YV0KCiAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaF9iYXRjaChvdXQsIGRhdGEpCgogIHJldHVybiBvdXQKfQoKZXhwb3J0cy5yYW5kb21CeXRlcyA9IGZ1bmN0aW9uIChuKSB7CiAgY29uc3QgYnVmID0gYjRhLmFsbG9jVW5zYWZlKG4pCiAgc29kaXVtLnJhbmRvbWJ5dGVzX2J1ZihidWYpCiAgcmV0dXJuIGJ1Zgp9CgpleHBvcnRzLmRpc2NvdmVyeUtleSA9IGZ1bmN0aW9uIChrZXkpIHsKICBpZiAoIWtleSB8fCBrZXkuYnl0ZUxlbmd0aCAhPT0gMzIpIHRocm93IG5ldyBFcnJvcignTXVzdCBwYXNzIGEgMzIgYnl0ZSBidWZmZXInKQogIC8vIERpc2NvdmVyeSBrZXlzIG1pZ2h0IHN0YXkgYXJvdW5kIGZvciBhIHdoaWxlLCBzbyBiZXR0ZXIgbm90IHRvIHVzZSBzbGFiIG1lbW9yeSAoZm9yIGJldHRlciBnYykKICBjb25zdCBkaWdlc3QgPSBiNGEuYWxsb2NVbnNhZmVTbG93KDMyKQogIHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2goZGlnZXN0LCBIWVBFUkNPUkUsIGtleSkKICByZXR1cm4gZGlnZXN0Cn0KCmlmIChzb2RpdW0uc29kaXVtX2ZyZWUpIHsKICBleHBvcnRzLmZyZWUgPSBmdW5jdGlvbiAoc2VjdXJlQnVmKSB7CiAgICBpZiAoc2VjdXJlQnVmLnNlY3VyZSkgc29kaXVtLnNvZGl1bV9mcmVlKHNlY3VyZUJ1ZikKICB9Cn0gZWxzZSB7CiAgZXhwb3J0cy5mcmVlID0gZnVuY3Rpb24gKCkge30KfQoKZXhwb3J0cy5uYW1lc3BhY2UgPSBmdW5jdGlvbiAobmFtZSwgY291bnQpIHsKICBjb25zdCBpZHMgPSB0eXBlb2YgY291bnQgPT09ICdudW1iZXInID8gcmFuZ2UoY291bnQpIDogY291bnQKCiAgLy8gTmFtZXNwYWNlcyBhcmUgbG9uZy1saXZlZCwgc28gYmV0dGVyIHRvIHVzZSBhIGRlZGljYXRlZCBzbGFiCiAgY29uc3QgYnVmID0gYjRhLmFsbG9jVW5zYWZlU2xvdygzMiAqIGlkcy5sZW5ndGgpCgogIGNvbnN0IGxpc3QgPSBuZXcgQXJyYXkoaWRzLmxlbmd0aCkKCiAgLy8gbnMgaXMgZW1oZW1lcmFsLCBzbyBkZWZhdWx0IHNsYWIKICBjb25zdCBucyA9IGI0YS5hbGxvY1Vuc2FmZSgzMykKICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKG5zLnN1YmFycmF5KDAsIDMyKSwgdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnID8gYjRhLmZyb20obmFtZSkgOiBuYW1lKQoKICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHsKICAgIGxpc3RbaV0gPSBidWYuc3ViYXJyYXkoMzIgKiBpLCAzMiAqIGkgKyAzMikKICAgIG5zWzMyXSA9IGlkc1tpXQogICAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaChsaXN0W2ldLCBucykKICB9CgogIHJldHVybiBsaXN0Cn0KCmZ1bmN0aW9uIHJhbmdlIChjb3VudCkgewogIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCkKICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIGFycltpXSA9IGkKICByZXR1cm4gYXJyCn0KewogICJuYW1lIjogImh5cGVyY29yZS1jcnlwdG8iLAogICJ2ZXJzaW9uIjogIjMuNi4xIiwKICAiZGVzY3JpcHRpb24iOiAiVGhlIGNyeXB0byBwcmltaXRpdmVzIHVzZWQgaW4gaHlwZXJjb3JlLCBleHRyYWN0ZWQgaW50byBhIHNlcGFyYXRlIG1vZHVsZSIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIKICBdLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYjRhIjogIl4xLjYuNiIsCiAgICAiY29tcGFjdC1lbmNvZGluZyI6ICJeMi4xNS4wIiwKICAgICJzb2RpdW0tdW5pdmVyc2FsIjogIl41LjAuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy41LjAiLAogICAgInN0YW5kYXJkIjogIl4xNy4xLjAiCiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC5qcyIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9oeXBlcmNvcmUtY3J5cHRvLmdpdCIKICB9LAogICJhdXRob3IiOiAiTWF0aGlhcyBCdXVzIChAbWFmaW50b3NoKSIsCiAgImxpY2Vuc2UiOiAiTUlUIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9oeXBlcmNvcmUtY3J5cHRvL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL2h5cGVyY29yZS1jcnlwdG8iCn0KY29uc3QgejMyID0gcmVxdWlyZSgnejMyJykKY29uc3QgYjRhID0gcmVxdWlyZSgnYjRhJykKCm1vZHVsZS5leHBvcnRzID0gewogIGVuY29kZSwKICBkZWNvZGUsCiAgbm9ybWFsaXplLAogIGlzVmFsaWQKfQoKZnVuY3Rpb24gZW5jb2RlIChrZXkpIHsKICBpZiAoIWI0YS5pc0J1ZmZlcihrZXkpKSB0aHJvdyBuZXcgRXJyb3IoJ0tleSBtdXN0IGJlIGEgQnVmZmVyJykKICBpZiAoa2V5LmJ5dGVMZW5ndGggIT09IDMyKSB0aHJvdyBuZXcgRXJyb3IoJ0tleSBtdXN0IGJlIDMyLWJ5dGVzIGxvbmcnKQogIHJldHVybiB6MzIuZW5jb2RlKGtleSkKfQoKZnVuY3Rpb24gZGVjb2RlIChpZCkgewogIGlmIChiNGEuaXNCdWZmZXIoaWQpKSB7CiAgICBpZiAoaWQuYnl0ZUxlbmd0aCAhPT0gMzIpIHRocm93IG5ldyBFcnJvcignSUQgbXVzdCBiZSAzMi1ieXRlcyBsb25nJykKICAgIHJldHVybiBpZAogIH0KICBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJykgewogICAgaWYgKGlkLnN0YXJ0c1dpdGgoJ3BlYXI6Ly8nKSkgaWQgPSBpZC5zbGljZSg3KS5zcGxpdCgnLycpWzBdCiAgICBpZiAoaWQubGVuZ3RoID09PSA1MikgcmV0dXJuIHozMi5kZWNvZGUoaWQpCiAgICBpZiAoaWQubGVuZ3RoID09PSA2NCkgewogICAgICBjb25zdCBidWYgPSBiNGEuZnJvbShpZCwgJ2hleCcpCiAgICAgIGlmIChidWYuYnl0ZUxlbmd0aCA9PT0gMzIpIHJldHVybiBidWYKICAgIH0KICB9CiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEh5cGVyY29yZSBrZXknKQp9CgpmdW5jdGlvbiBub3JtYWxpemUgKGFueSkgewogIHJldHVybiBlbmNvZGUoZGVjb2RlKGFueSkpCn0KCmZ1bmN0aW9uIGlzVmFsaWQgKGFueSkgewogIHRyeSB7CiAgICBkZWNvZGUoYW55KQogICAgcmV0dXJuIHRydWUKICB9IGNhdGNoIHsKICAgIHJldHVybiBmYWxzZQogIH0KfQp7CiAgIm5hbWUiOiAiaHlwZXJjb3JlLWlkLWVuY29kaW5nIiwKICAidmVyc2lvbiI6ICIxLjMuMCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnZlcnQgSHlwZXJjb3JlIGtleXMgdG8vZnJvbSB6LWJhc2UzMiBvciBoZXgiLAogICJtYWluIjogImluZGV4LmpzIiwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC5qcyIKICB9LAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIKICBdLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYjRhIjogIl4xLjUuMyIsCiAgICAiejMyIjogIl4xLjAuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy4xLjEiLAogICAgImh5cGVyY29yZSI6ICJeMTAuMC4wIiwKICAgICJyYW5kb20tYWNjZXNzLW1lbW9yeSI6ICJeNi4wLjAiLAogICAgInN0YW5kYXJkIjogIl4xNy4xLjAiCiAgfSwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vaHlwZXJjb3JlLWlkLWVuY29kaW5nLmdpdCIKICB9LAogICJrZXl3b3JkcyI6IFtdLAogICJhdXRob3IiOiAiIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2h5cGVyY29yZS1pZC1lbmNvZGluZy9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL2h5cGVyY29yZS1pZC1lbmNvZGluZyNyZWFkbWUiCn0KJ3VzZSBzdHJpY3QnCmNvbnN0IEVPTCA9ICdcbicKY29uc3Qgbm9vcCA9ICgpID0+IHt9Cm1vZHVsZS5leHBvcnRzID0gewogIGNvbW1hbmQsCiAgaGlkZGVuQ29tbWFuZCwKICBoZWFkZXIsCiAgZm9vdGVyLAogIGFyZ3YsCiAgZmxhZywKICBoaWRkZW5GbGFnLAogIGFyZywKICByZXN0LAogIHZhbGlkYXRlLAogIHN1bW1hcnksCiAgZGVzY3JpcHRpb24sCiAgc2xvcHB5LAogIGJhaWwKfQoKY2xhc3MgUGFyc2VyIHsKICBjb25zdHJ1Y3RvciAoYXJndikgewogICAgdGhpcy5hcmd2ID0gYXJndgogICAgdGhpcy5pID0gMAogICAgdGhpcy5tdWx0aSA9IG51bGwKICB9CgogIHJlc3QgKCkgewogICAgY29uc3QgcmVzdCA9IHRoaXMuYXJndi5zbGljZSh0aGlzLmkpCiAgICB0aGlzLmxhc3RpID0gdGhpcy5pCiAgICB0aGlzLmkgPSB0aGlzLmFyZ3YubGVuZ3RoCiAgICByZXR1cm4gcmVzdAogIH0KCiAgbmV4dCAoKSB7CiAgICB3aGlsZSAodHJ1ZSkgewogICAgICBjb25zdCByID0gewogICAgICAgIGZsYWc6IG51bGwsCiAgICAgICAgcmVzdDogbnVsbCwKICAgICAgICBhcmc6IG51bGwKICAgICAgfQoKICAgICAgaWYgKHRoaXMubXVsdGkgJiYgdGhpcy5tdWx0aS5sZW5ndGgpIHsKICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5tdWx0aS5wb3AoKQogICAgICAgIHIuZmxhZyA9IHsgbG9uZzogZmFsc2UsIG5hbWUsIHZhbHVlOiAnJyB9CiAgICAgICAgcmV0dXJuIHIKICAgICAgfQoKICAgICAgdGhpcy5tdWx0aSA9IG51bGwKCiAgICAgIGlmICh0aGlzLmkgPj0gdGhpcy5hcmd2Lmxlbmd0aCkgcmV0dXJuIG51bGwKICAgICAgdGhpcy5sYXN0aSA9IHRoaXMuaQogICAgICBjb25zdCBhID0gdGhpcy5hcmd2W3RoaXMuaSsrXQoKICAgICAgaWYgKGEgPT09ICctLScpIHsKICAgICAgICByLnJlc3QgPSB0aGlzLnJlc3QoKQogICAgICAgIHJldHVybiByCiAgICAgIH0KCiAgICAgIGlmIChhLmxlbmd0aCA+IDIgJiYgYVswXSA9PT0gJy0nICYmIGFbMV0gPT09ICctJykgewogICAgICAgIGxldCBqID0gYS5pbmRleE9mKCc9JykKICAgICAgICBpZiAoaiA9PT0gLTEpIGogPSBhLmxlbmd0aAogICAgICAgIGNvbnN0IGludmVyc2UgPSBhLnN0YXJ0c1dpdGgoJy0tbm8tJykKICAgICAgICBjb25zdCBuYW1lID0gaW52ZXJzZSA/IGEuc2xpY2UoNSwgaikgOiBhLnNsaWNlKDIsIGopCiAgICAgICAgY29uc3QgdmFsdWUgPSBhLnNsaWNlKGogKyAxKQogICAgICAgIHIuZmxhZyA9IHsgbG9uZzogdHJ1ZSwgbmFtZSwgdmFsdWUsIGludmVyc2UgfQogICAgICAgIHJldHVybiByCiAgICAgIH0KCiAgICAgIGlmIChhLmxlbmd0aCA+IDEgJiYgYVswXSA9PT0gJy0nKSB7CiAgICAgICAgdGhpcy5tdWx0aSA9IFtdCiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB0aGlzLm11bHRpLnB1c2goYVtpXSkKICAgICAgICB0aGlzLm11bHRpLnJldmVyc2UoKQogICAgICAgIGNvbnRpbnVlCiAgICAgIH0KCiAgICAgIHIuYXJnID0gYQogICAgICByZXR1cm4gcgogICAgfQogIH0KfQoKY2xhc3MgQ29tbWFuZCB7CiAgY29uc3RydWN0b3IgKHBhcmVudCwgbmFtZSkgewogICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQKICAgIHRoaXMubmFtZSA9IG5hbWUKICAgIHRoaXMuaGlkZGVuID0gZmFsc2UKICAgIHRoaXMuZGVzY3JpcHRpb24gPSAnJwogICAgdGhpcy5zdW1tYXJ5ID0gJycKICAgIHRoaXMuaGVhZGVyID0gJycKICAgIHRoaXMuZm9vdGVyID0gJycKCiAgICB0aGlzLmZsYWdzID0ge30KICAgIHRoaXMuYXJncyA9IHt9CiAgICB0aGlzLnBvc2l0aW9uYWxzID0gW10KICAgIHRoaXMucmVzdCA9IG51bGwKICAgIHRoaXMuYmFpbGVkID0gbnVsbAogICAgdGhpcy5pbmRpY2VzID0geyBmbGFnczoge30sIGFyZ3M6IHt9LCBwb3NpdGlvbmFsczogW10sIHJlc3Q6IHVuZGVmaW5lZCB9CgogICAgdGhpcy5ydW5uaW5nID0gbnVsbAoKICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSBbXQogICAgdGhpcy5fcnVubmVyID0gbnVsbAogICAgdGhpcy5fb25iYWlsID0gbnVsbAogICAgdGhpcy5faW5kZW50ID0gJycKICAgIHRoaXMuX3N0cmljdEZsYWdzID0gdHJ1ZQogICAgdGhpcy5fc3RyaWN0QXJncyA9IHRydWUKICAgIHRoaXMuX2xhYmVscyA9IHsKICAgICAgYXJndW1lbnRzOiAnQXJndW1lbnRzOicsCiAgICAgIGZsYWdzOiAnRmxhZ3M6JywKICAgICAgY29tbWFuZHM6ICdDb21tYW5kczonCiAgICB9CgogICAgdGhpcy5fZGVmaW5lZENvbW1hbmRzID0gbmV3IE1hcCgpCiAgICB0aGlzLl9kZWZpbmVkRmxhZ3MgPSBuZXcgTWFwKCkKICAgIHRoaXMuX2RlZmluZWRBcmdzID0gW10KICAgIHRoaXMuX2RlZmluZWRSZXN0ID0gbnVsbAogIH0KCiAgaGlkZSAoKSB7CiAgICB0aGlzLmhpZGRlbiA9IHRydWUKICAgIHJldHVybiB0aGlzCiAgfQoKICBiYWlsIChiYWlsKSB7CiAgICB0cnkgewogICAgICB0aGlzLmJhaWxlZCA9IHsgb3V0cHV0OiB0aGlzLl9iYWlsKGJhaWwpLCBiYWlsIH0KICAgIH0gY2F0Y2ggKGVycikgewogICAgICB0aGlzLmJhaWxlZCA9IHsgZXJyb3I6IGVyciwgYmFpbCB9CiAgICAgIHRocm93IGVycgogICAgfQogICAgcmV0dXJuIHRoaXMuYmFpbGVkCiAgfQoKICBvdmVydmlldyAoeyBmdWxsID0gZmFsc2UgfSA9IHt9KSB7CiAgICBsZXQgcyA9ICcnCiAgICBpZiAodGhpcy5oZWFkZXIpIHMgKz0gdGhpcy5oZWFkZXIgKyBFT0wgKyBFT0wKCiAgICBmb3IgKGNvbnN0IFtuYW1lLCBjb21tYW5kXSBvZiB0aGlzLl9kZWZpbmVkQ29tbWFuZHMpIHsKICAgICAgaWYgKGNvbW1hbmQuaGlkZGVuKSBjb250aW51ZQogICAgICBpZiAoZnVsbCkgewogICAgICAgIGNvbW1hbmQuX2luZGVudCA9IHRoaXMuaGVhZGVyID8gJyAgJyA6ICcnCiAgICAgICAgcyArPSBjb21tYW5kLl9pbmRlbnQgKyBjb21tYW5kLl9vbmVsaW5lcihmYWxzZSkgKyBFT0wgKyBjb21tYW5kLl9hbGlnbmVkKCkgKyBFT0wKICAgICAgICBjb21tYW5kLl9pbmRlbnQgPSAnJwogICAgICB9IGVsc2UgcyArPSAnICAnICsgdGhpcy5uYW1lICsgJyAnICsgbmFtZSArICcgfiAnICsgY29tbWFuZC5zdW1tYXJ5ICsgRU9MCiAgICB9CgogICAgaWYgKHRoaXMuZm9vdGVyKSBzICs9IEVPTCArIChPYmplY3QuaGFzT3duKHRoaXMuZm9vdGVyLCAnb3ZlcnZpZXcnKSA/IHRoaXMuZm9vdGVyLm92ZXJ2aWV3IDogdGhpcy5mb290ZXIpICsgRU9MCgogICAgcmV0dXJuIHMKICB9CgogIGhlbHAgKC4uLmFyZ3MpIHsKICAgIGxldCBzID0gJycKCiAgICBpZiAodGhpcy5oZWFkZXIpIHMgKz0gdGhpcy5oZWFkZXIgKyBFT0wgKyBFT0wKICAgIHRoaXMuX2luZGVudCA9IHRoaXMuaGVhZGVyID8gJyAgJyA6ICcnCiAgICBzICs9IHRoaXMudXNhZ2UoLi4uYXJncykKICAgIHRoaXMuX2luZGVudCA9ICcnCgogICAgaWYgKHRoaXMuZm9vdGVyKSBzICs9IEVPTCArIChPYmplY3QuaGFzT3duKHRoaXMuZm9vdGVyLCAnaGVscCcpID8gdGhpcy5mb290ZXIuaGVscCA6IHRoaXMuZm9vdGVyKSArIEVPTAoKICAgIHJldHVybiBzCiAgfQoKICB1c2FnZSAoc3ViY29tbWFuZCwgLi4uYXJncykgewogICAgaWYgKHN1YmNvbW1hbmQpIHsKICAgICAgY29uc3Qgc3ViID0gdGhpcy5fZGVmaW5lZENvbW1hbmRzLmdldChzdWJjb21tYW5kKQogICAgICBpZiAoIXN1YikgcmV0dXJuIHRoaXMuYmFpbChjcmVhdGVCYWlsKHRoaXMsICdVTktOT1dOX0FSRycsIG51bGwsIHsgdmFsdWU6IHN1YmNvbW1hbmQgfSkpCiAgICAgIHN1Yi5wYXJlbnQgPSB0aGlzCiAgICAgIGNvbnN0IHN0ciA9IHN1Yi51c2FnZSguLi5hcmdzKQogICAgICByZXR1cm4gc3RyCiAgICB9CiAgICBsZXQgcyA9IHRoaXMuX2luZGVudCArIHRoaXMuX29uZWxpbmVyKGZhbHNlKSArIEVPTAogICAgcyArPSB0aGlzLl9hbGlnbmVkKCkKCiAgICByZXR1cm4gcwogIH0KCiAgcGFyc2UgKGlucHV0ID0gYXJndigpLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IHsgc3luYyA9IGZhbHNlIH0gPSBvcHRzCiAgICBjb25zdCBwID0gbmV3IFBhcnNlcihpbnB1dCkKCiAgICBsZXQgYyA9IHRoaXMuX3Jlc2V0KCkKICAgIGxldCBiYWlsID0gbnVsbAoKICAgIGNvbnN0IHZpc2l0ZWQgPSBbY10KCiAgICB3aGlsZSAoYmFpbCA9PT0gbnVsbCkgewogICAgICBpZiAoYy5fZGVmaW5lZFJlc3QgIT09IG51bGwgJiYgYy5wb3NpdGlvbmFscy5sZW5ndGggPT09IGMuX2RlZmluZWRBcmdzLmxlbmd0aCAmJiBjLl9kZWZpbmVkQXJncy5sZW5ndGggPiAwKSB7CiAgICAgICAgYmFpbCA9IGMuX29ucmVzdChwLnJlc3QoKSwgcCkKICAgICAgICBicmVhawogICAgICB9CgogICAgICBjb25zdCBuID0gcC5uZXh0KCkKICAgICAgaWYgKG4gPT09IG51bGwpIGJyZWFrCgogICAgICBpZiAobi5mbGFnKSB7CiAgICAgICAgYmFpbCA9IGMuX29uZmxhZyhuLmZsYWcsIHApCiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgaWYgKG4uYXJnICYmIGMuX2RlZmluZWRBcmdzLmxlbmd0aCA+IDApIHsKICAgICAgICBiYWlsID0gYy5fb25hcmcobi5hcmcsIHApCiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgaWYgKGMuX2RlZmluZWRDb21tYW5kcy5zaXplID4gMCkgewogICAgICAgIGNvbnN0IGNtZCA9IGMuX2dldENvbW1hbmQobi5hcmcpCgogICAgICAgIGlmIChjbWQgIT09IG51bGwpIHsKICAgICAgICAgIGMgPSBjbWQuX3Jlc2V0KCkKICAgICAgICAgIHZpc2l0ZWQucHVzaChjKQogICAgICAgICAgY29udGludWUKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHAuaS0tCiAgICAgIGJhaWwgPSBjLl9vbnJlc3QocC5yZXN0KCksIHApCiAgICB9CgogICAgaWYgKCFiYWlsKSB7CiAgICAgIGNvbnN0IG1pc3NpbmcgPSB0aGlzLl9kZWZpbmVkQXJncy5maWx0ZXIoKGFyZykgPT4gIWFyZy5vcHRpb25hbCAmJiAhKGFyZy5uYW1lIGluIGMuYXJncykpCiAgICAgIGlmIChtaXNzaW5nLmxlbmd0aCA+IDApIGJhaWwgPSBjcmVhdGVCYWlsKHRoaXMsICdNSVNTSU5HX0FSRycsIG51bGwsIHsgdmFsdWU6IG1pc3NpbmdbMF0uaGVscCB9KQogICAgfQoKICAgIGlmICghYmFpbCkgewogICAgICBpZiAoYyAhPT0gdGhpcyAmJiAhYy5wYXJlbnQpIGMucGFyZW50ID0gdGhpcwogICAgICBpZiAoYy5mbGFncy5oZWxwKSB7CiAgICAgICAgaWYgKCFvcHRzLnNpbGVudCkgY29uc29sZS5sb2coYy5oZWxwKCkpCiAgICAgICAgcmV0dXJuIG51bGwKICAgICAgfQogICAgICBmb3IgKGNvbnN0IHYgb2YgYy5fdmFsaWRhdG9ycykgewogICAgICAgIGJhaWwgPSBydW5WYWxpZGF0aW9uKHYsIGMpCiAgICAgICAgaWYgKGJhaWwpIHsKICAgICAgICAgIGMuYmFpbChiYWlsKQogICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKGMuX3J1bm5lciAhPT0gbnVsbCkgewogICAgICAgIGlmIChzeW5jKSBydW5TeW5jKGMpCiAgICAgICAgZWxzZSBjLnJ1bm5pbmcgPSBydW5Bc3luYyhjKQogICAgICB9CiAgICAgIHJldHVybiBjCiAgICB9CgogICAgYy5iYWlsKGJhaWwpCiAgICByZXR1cm4gbnVsbAogIH0KCiAgX29uZWxpbmVyIChzaG9ydCwgcmVsYXRpdmUpIHsKICAgIGNvbnN0IHN0YWNrID0gW3RoaXNdCiAgICBpZiAoIXJlbGF0aXZlKSB7CiAgICAgIHdoaWxlIChzdGFja1tzdGFjay5sZW5ndGggLSAxXS5wYXJlbnQpIHN0YWNrLnB1c2goc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0ucGFyZW50KQogICAgfQoKICAgIGNvbnN0IHJ1biA9IHN0YWNrLnJldmVyc2UoKS5tYXAoYyA9PiBjLm5hbWUgfHwgJ2FwcCcpCgogICAgaWYgKCFzaG9ydCkgewogICAgICBpZiAodGhpcy5fZGVmaW5lZEZsYWdzLnNpemUgPiAwKSBydW4ucHVzaCgnW2ZsYWdzXScpCiAgICAgIGZvciAoY29uc3QgYXJnIG9mIHRoaXMuX2RlZmluZWRBcmdzKSBydW4ucHVzaChhcmcuaGVscCkKICAgICAgaWYgKHRoaXMuX2RlZmluZWRDb21tYW5kcy5zaXplID4gMCkgcnVuLnB1c2goJ1tjb21tYW5kXScpCiAgICAgIGlmICh0aGlzLl9kZWZpbmVkUmVzdCAhPT0gbnVsbCkgcnVuLnB1c2godGhpcy5fZGVmaW5lZFJlc3QuaGVscCkKICAgIH0KCiAgICByZXR1cm4gcnVuLmpvaW4oJyAnKQogIH0KCiAgX2FsaWduZWQgKHBhZGRpbmcgPSAwLCBjb2xvciA9IGZhbHNlKSB7CiAgICBjb25zdCBsID0gW10KICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0KCkKICAgIGNvbnN0IGluZGVudCA9IHRoaXMuX2luZGVudAogICAgaWYgKHRoaXMuc3VtbWFyeSkgewogICAgICBsLnB1c2goWycnLCAnJ10pCiAgICAgIGwucHVzaCguLi50aGlzLnN1bW1hcnkuc3BsaXQoRU9MKS5tYXAoKGxpbmUpID0+IFt0aGlzLl9pbmRlbnQgKyBsaW5lLCAnJ10pKQogICAgfQogICAgaWYgKHRoaXMuZGVzY3JpcHRpb24pIHsKICAgICAgbC5wdXNoKFsnJywgJyddKQogICAgICBsLnB1c2goLi4udGhpcy5kZXNjcmlwdGlvbi5zcGxpdChFT0wpLm1hcCgobGluZSkgPT4gW3RoaXMuX2luZGVudCArIGxpbmUsICcnXSkpCiAgICB9CgogICAgaWYgKHRoaXMuX2RlZmluZWRBcmdzLmxlbmd0aCA+IDAgfHwgdGhpcy5fZGVmaW5lZFJlc3QgIT09IG51bGwpIHsKICAgICAgbC5wdXNoKFsnJywgJyddKQogICAgICBsLnB1c2goW2luZGVudCArIHRoaXMuX2xhYmVscy5hcmd1bWVudHMsICcnXSkKICAgICAgZm9yIChjb25zdCBhcmcgb2YgdGhpcy5fZGVmaW5lZEFyZ3MpIHsKICAgICAgICBsLnB1c2goW2luZGVudCArICcgICcgKyBhcmcuaGVscCwgYXJnLnVzYWdlKCldKQogICAgICB9CiAgICB9CgogICAgaWYgKHRoaXMuX2RlZmluZWRSZXN0KSB7CiAgICAgIGwucHVzaChbaW5kZW50ICsgJyAgJyArIHRoaXMuX2RlZmluZWRSZXN0LmhlbHAsIHRoaXMuX2RlZmluZWRSZXN0LmRlc2NyaXB0aW9uXSkKICAgIH0KCiAgICBpZiAodGhpcy5fZGVmaW5lZEZsYWdzLnNpemUpIHsKICAgICAgbC5wdXNoKFsnJywgJyddKQogICAgICBsLnB1c2goW2luZGVudCArIHRoaXMuX2xhYmVscy5mbGFncywgJyddKQogICAgICBmb3IgKGNvbnN0IGZsYWcgb2YgdGhpcy5fZGVmaW5lZEZsYWdzLnZhbHVlcygpKSB7CiAgICAgICAgaWYgKHZpc2l0ZWQuaGFzKGZsYWcpKSBjb250aW51ZQogICAgICAgIHZpc2l0ZWQuYWRkKGZsYWcpCiAgICAgICAgaWYgKCFmbGFnLmhpZGRlbikgbC5wdXNoKFtpbmRlbnQgKyAnICAnICsgZmxhZy5oZWxwLCBmbGFnLmRlc2NyaXB0aW9uXSkKICAgICAgfQogICAgfQoKICAgIGlmICh0aGlzLl9kZWZpbmVkQ29tbWFuZHMuc2l6ZSkgewogICAgICBsLnB1c2goWycnLCAnJ10pCiAgICAgIGwucHVzaChbaW5kZW50ICsgdGhpcy5fbGFiZWxzLmNvbW1hbmRzLCAnJ10pCiAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLl9kZWZpbmVkQ29tbWFuZHMudmFsdWVzKCkpIHsKICAgICAgICBpZiAoYy5oaWRkZW4pIGNvbnRpbnVlCiAgICAgICAgbC5wdXNoKFtpbmRlbnQgKyAnICAnICsgYy5fb25lbGluZXIodHJ1ZSwgdHJ1ZSksIGMuc3VtbWFyeSB8fCBjLmRlc2NyaXB0aW9uXSkKICAgICAgfQogICAgfQoKICAgIGlmIChwYWRkaW5nID09PSAwKSB7CiAgICAgIGZvciAoY29uc3QgW2xlZnQsIHJpZ2h0XSBvZiBsKSB7CiAgICAgICAgaWYgKCFyaWdodCkgY29udGludWUKICAgICAgICBpZiAobGVmdC5sZW5ndGggPiBwYWRkaW5nKSBwYWRkaW5nID0gbGVmdC5sZW5ndGgKICAgICAgfQogICAgfQoKICAgIGlmIChjb2xvciA9PT0gZmFsc2UpIHsKICAgICAgcmV0dXJuIHRoaXMuX2FsaWduZWQocGFkZGluZywgdHJ1ZSkKICAgIH0KCiAgICBsZXQgcyA9ICcnCiAgICBmb3IgKGNvbnN0IFtsZWZ0LCByaWdodF0gb2YgbCkgewogICAgICBzICs9IChsZWZ0LnBhZEVuZChwYWRkaW5nLCAnICcpICsgJyAgICcgKyByaWdodCkudHJpbUVuZCgpICsgRU9MCiAgICB9CgogICAgcyA9IHMudHJpbUVuZCgpCgogICAgcmV0dXJuIHMgPyBzICsgRU9MIDogJycKICB9CgogIF9hZGRDb21tYW5kIChjKSB7CiAgICBpZiAoIWMuaGVhZGVyKSBjLmhlYWRlciA9IHRoaXMuaGVhZGVyCiAgICBpZiAoIWMuZm9vdGVyKSBjLmZvb3RlciA9IHRoaXMuZm9vdGVyCiAgICBpZiAoIWMucGFyZW50KSBjLnBhcmVudCA9IHRoaXMKICAgIHRoaXMuX2RlZmluZWRDb21tYW5kcy5zZXQoYy5uYW1lLCBjKQogIH0KCiAgX2FkZEZsYWcgKGYpIHsKICAgIHRoaXMuX2RlZmluZWRGbGFncy5zZXQoZi5uYW1lLCBmKQogICAgZm9yIChjb25zdCBhbGlhcyBvZiBmLmFsaWFzZXMpIHsKICAgICAgaWYgKGFsaWFzICE9PSBmLm5hbWUpIHsKICAgICAgICB0aGlzLl9kZWZpbmVkRmxhZ3Muc2V0KGFsaWFzLCBmKQogICAgICB9CiAgICB9CiAgfQoKICBfYWRkQXJnIChhKSB7CiAgICB0aGlzLl9kZWZpbmVkQXJncy5wdXNoKGEpCiAgfQoKICBfYWRkUmVzdCAoYSkgewogICAgdGhpcy5fZGVmaW5lZFJlc3QgPSBhCiAgfQoKICBfYWRkRGF0YSAoZCkgewogICAgc3dpdGNoIChkLnR5cGUpIHsKICAgICAgY2FzZSAnYmFpbCc6IHsKICAgICAgICBpZiAodGhpcy5fb25iYWlsICE9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ29uYmFpbCBhbHJlYWR5IHNldCcpCiAgICAgICAgdGhpcy5fb25iYWlsID0gZC52YWx1ZQogICAgICAgIGJyZWFrCiAgICAgIH0KICAgICAgY2FzZSAnbmFtZSc6IHsKICAgICAgICB0aGlzLm5hbWUgPSBkLnZhbHVlCiAgICAgICAgYnJlYWsKICAgICAgfQogICAgICBjYXNlICdzdW1tYXJ5JzogewogICAgICAgIHRoaXMuc3VtbWFyeSA9IGQudmFsdWUKICAgICAgICBicmVhawogICAgICB9CiAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzogewogICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkLnZhbHVlCiAgICAgICAgYnJlYWsKICAgICAgfQogICAgICBjYXNlICdoZWFkZXInOiB7CiAgICAgICAgdGhpcy5oZWFkZXIgPSB1bmluZGVudChkLnZhbHVlKQogICAgICAgIGJyZWFrCiAgICAgIH0KICAgICAgY2FzZSAnZm9vdGVyJzogewogICAgICAgIHRoaXMuZm9vdGVyID0gKGQudmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIGQudmFsdWUgPT09ICdvYmplY3QnKQogICAgICAgICAgPyB7IGhlbHA6IHVuaW5kZW50KGQudmFsdWUuaGVscCB8fCAnJyksIG92ZXJ2aWV3OiBkLnZhbHVlLm92ZXJ2aWV3IH0KICAgICAgICAgIDogdW5pbmRlbnQoZC52YWx1ZSkKICAgICAgICBicmVhawogICAgICB9CiAgICAgIGNhc2UgJ3Nsb3BweSc6IHsKICAgICAgICB0aGlzLl9zdHJpY3RGbGFncyA9ICEoZC52YWx1ZT8uZmxhZ3MpCiAgICAgICAgdGhpcy5fc3RyaWN0QXJncyA9ICEoZC52YWx1ZT8uYXJncykKICAgICAgICBicmVhawogICAgICB9CiAgICB9CiAgfQoKICBfYWRkVmFsaWRhdGlvbiAoX3ZhbGlkYXRvcikgewogICAgdGhpcy5fdmFsaWRhdG9ycy5wdXNoKF92YWxpZGF0b3IpCiAgfQoKICBfYWRkUnVubmVyIChfcnVubmVyKSB7CiAgICB0aGlzLl9ydW5uZXIgPSBfcnVubmVyCiAgfQoKICBfcmVzZXQgKCkgewogICAgdGhpcy5mbGFncyA9IHt9CiAgICB0aGlzLmFyZ3MgPSB7fQogICAgdGhpcy5wb3NpdGlvbmFscyA9IFtdCiAgICB0aGlzLnJlc3QgPSBudWxsCiAgICB0aGlzLmluZGljZXMgPSB7IGZsYWdzOiB7fSwgYXJnczoge30sIHBvc2l0aW9uYWxzOiBbXSwgcmVzdDogdW5kZWZpbmVkIH0KICAgIHRoaXMucnVubmluZyA9IG51bGwKCiAgICBmb3IgKGNvbnN0IFtuYW1lLCB7IHZhbHVlIH1dIG9mIHRoaXMuX2RlZmluZWRGbGFncykgewogICAgICBpZiAobmFtZSA9PT0gc25ha2VUb0NhbWVsKG5hbWUpKSB7CiAgICAgICAgdGhpcy5mbGFnc1tuYW1lXSA9IHZhbHVlCiAgICAgIH0KICAgIH0KICAgIHJldHVybiB0aGlzCiAgfQoKICBfZ2V0RmxhZyAobmFtZSwgZmxhZykgewogICAgbGV0IGYgPSB0aGlzLl9kZWZpbmVkRmxhZ3MuZ2V0KG5hbWUpCiAgICBpZiAoZiAmJiBmbGFnLmxvbmcgJiYgZi5hbGlhc2VzLmluZGV4T2YobmFtZSkgPiAwKSBmID0gdW5kZWZpbmVkCiAgICBpZiAoZiA9PT0gdW5kZWZpbmVkICYmIHRoaXMuX3N0cmljdEZsYWdzID09PSBmYWxzZSkgZiA9IGRlZmF1bHRGbGFnKG5hbWUpCiAgICByZXR1cm4gZiB8fCBudWxsCiAgfQoKICBfZ2V0Q29tbWFuZCAobmFtZSkgewogICAgcmV0dXJuIHRoaXMuX2RlZmluZWRDb21tYW5kcy5nZXQobmFtZSkgfHwgbnVsbAogIH0KCiAgX29uZmxhZyAoZmxhZywgcGFyc2VyKSB7CiAgICBjb25zdCBkZWYgPSB0aGlzLl9nZXRGbGFnKGZsYWcubmFtZSwgZmxhZykKICAgIGlmIChkZWYgPT09IG51bGwpIHJldHVybiBjcmVhdGVCYWlsKHRoaXMsICdVTktOT1dOX0ZMQUcnLCBmbGFnLCBudWxsKQoKICAgIGlmIChkZWYuYm9vbGVhbiA9PT0gdHJ1ZSkgewogICAgICBpZiAoZmxhZy52YWx1ZSkgcmV0dXJuIGNyZWF0ZUJhaWwodGhpcywgJ0lOVkFMSURfRkxBRycsIGZsYWcsIG51bGwpCiAgICAgIHRoaXMuZmxhZ3NbZGVmLm5hbWVdID0gIWZsYWcuaW52ZXJzZQogICAgICBpZiAoZGVmLmFsaWFzZXNbMV0pIHRoaXMuZmxhZ3NbZGVmLmFsaWFzZXNbMV1dID0gdGhpcy5mbGFnc1tkZWYubmFtZV0KICAgICAgZGVmLmFsaWFzZXMuZm9yRWFjaChlID0+IHsgdGhpcy5pbmRpY2VzLmZsYWdzW2VdID0gcGFyc2VyLmxhc3RpIH0pCiAgICAgIGlmICghZGVmLmFsaWFzZXMuaW5jbHVkZXMoZGVmLm5hbWUpKSB0aGlzLmluZGljZXMuZmxhZ3NbZGVmLm5hbWVdID0gcGFyc2VyLmxhc3RpCiAgICAgIHJldHVybiBudWxsCiAgICB9CgogICAgaWYgKGRlZi5ib29sZWFuID09PSBmYWxzZSkgewogICAgICBpZiAoZmxhZy52YWx1ZSkgewogICAgICAgIGlmIChkZWYudmFsdWVDaG9pY2VzICYmICFkZWYudmFsdWVDaG9pY2VzLmluY2x1ZGVzKGZsYWcudmFsdWUpKSB7CiAgICAgICAgICByZXR1cm4gY3JlYXRlQmFpbCh0aGlzLCAnSU5WQUxJRF9GTEFHJywgZmxhZywgbnVsbCkKICAgICAgICB9CgogICAgICAgIGNvbnN0IHZhbHVlID0gZGVmLm11bHRpID8gKHRoaXMuZmxhZ3NbZGVmLm5hbWVdIHx8IFtdKS5jb25jYXQoZmxhZy52YWx1ZSkgOiBmbGFnLnZhbHVlCiAgICAgICAgdGhpcy5mbGFnc1tkZWYubmFtZV0gPSB2YWx1ZQogICAgICAgIGlmIChkZWYuYWxpYXNlc1sxXSkgdGhpcy5mbGFnc1tkZWYuYWxpYXNlc1sxXV0gPSB2YWx1ZQogICAgICAgIGRlZi5hbGlhc2VzLmZvckVhY2goZSA9PiB7IHRoaXMuaW5kaWNlcy5mbGFnc1tlXSA9IHBhcnNlci5sYXN0aSB9KQogICAgICAgIGlmICghZGVmLmFsaWFzZXMuaW5jbHVkZXMoZGVmLm5hbWUpKSB0aGlzLmluZGljZXMuZmxhZ3NbZGVmLm5hbWVdID0gcGFyc2VyLmxhc3RpCiAgICAgICAgcmV0dXJuIG51bGwKICAgICAgfQoKICAgICAgY29uc3QgbmV4dCA9IHBhcnNlci5uZXh0KCkKICAgICAgY29uc3QgYXJnbGVzcyA9IG5leHQgPT09IG51bGwgfHwgIW5leHQuYXJnCiAgICAgIGlmIChkZWYudmFsdWVSZXF1aXJlZCAmJiBhcmdsZXNzICYmICFkZWYuaGFzRGVmYXVsdCkgewogICAgICAgIHJldHVybiBjcmVhdGVCYWlsKHRoaXMsICdJTlZBTElEX0ZMQUcnLCBmbGFnLCBudWxsKQogICAgICB9CgogICAgICBjb25zdCBuZXh0VmFsdWUgPSAhbmV4dD8uYXJnICYmIGRlZi5oYXNEZWZhdWx0ID8gZGVmLnZhbHVlIDogbmV4dD8uYXJnCiAgICAgIGlmIChkZWYudmFsdWVDaG9pY2VzICYmICFkZWYudmFsdWVDaG9pY2VzLmluY2x1ZGVzKG5leHRWYWx1ZSkpIHsKICAgICAgICByZXR1cm4gY3JlYXRlQmFpbCh0aGlzLCAnSU5WQUxJRF9GTEFHJywgZmxhZywgbnVsbCkKICAgICAgfQogICAgICBjb25zdCB2YWx1ZSA9IGRlZi5tdWx0aSA/ICh0aGlzLmZsYWdzW2RlZi5uYW1lXSB8fCBbXSkuY29uY2F0KG5leHRWYWx1ZSkgOiAobmV4dFZhbHVlKQogICAgICB0aGlzLmZsYWdzW2RlZi5uYW1lXSA9IHZhbHVlCiAgICAgIGlmIChkZWYuYWxpYXNlc1sxXSkgdGhpcy5mbGFnc1tkZWYuYWxpYXNlc1sxXV0gPSB2YWx1ZQogICAgICBpZiAoZGVmLm11bHRpKSB7CiAgICAgICAgZGVmLmFsaWFzZXMuZm9yRWFjaChlID0+IHsgdGhpcy5pbmRpY2VzLmZsYWdzW2VdID0gKHRoaXMuaW5kaWNlcy5mbGFnc1tlXSB8fCBbXSkuY29uY2F0KHBhcnNlci5sYXN0aSkgfSkKICAgICAgICBpZiAoIWRlZi5hbGlhc2VzLmluY2x1ZGVzKGRlZi5uYW1lKSkgdGhpcy5pbmRpY2VzLmZsYWdzW2RlZi5uYW1lXSA9ICh0aGlzLmluZGljZXMuZmxhZ3NbZGVmLm5hbWVdIHx8IFtdKS5jb25jYXQocGFyc2VyLmxhc3RpKQogICAgICB9IGVsc2UgewogICAgICAgIGRlZi5hbGlhc2VzLmZvckVhY2goZSA9PiB7IHRoaXMuaW5kaWNlcy5mbGFnc1tlXSA9IHBhcnNlci5sYXN0aSB9KQogICAgICAgIGlmICghZGVmLmFsaWFzZXMuaW5jbHVkZXMoZGVmLm5hbWUpKSB0aGlzLmluZGljZXMuZmxhZ3NbZGVmLm5hbWVdID0gcGFyc2VyLmxhc3RpCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbnVsbAogIH0KCiAgX29uYXJnIChhcmcsIHBhcnNlcikgewogICAgY29uc3QgaW5mbyA9IHsgaW5kZXg6IHRoaXMucG9zaXRpb25hbHMubGVuZ3RoLCB2YWx1ZTogYXJnIH0KICAgIGlmICh0aGlzLl9kZWZpbmVkQXJncy5sZW5ndGggPD0gdGhpcy5wb3NpdGlvbmFscy5sZW5ndGgpIHsKICAgICAgaWYgKHRoaXMuX3N0cmljdEFyZ3MgPT09IGZhbHNlKSB7CiAgICAgICAgdGhpcy5wb3NpdGlvbmFscy5wdXNoKGFyZykKICAgICAgICB0aGlzLmluZGljZXMucG9zaXRpb25hbHMucHVzaChwYXJzZXIubGFzdGkpCiAgICAgICAgcmV0dXJuIG51bGwKICAgICAgfQoKICAgICAgcmV0dXJuIGNyZWF0ZUJhaWwodGhpcywgJ1VOS05PV05fQVJHJywgbnVsbCwgaW5mbykKICAgIH0KCiAgICBjb25zdCBkZWYgPSB0aGlzLl9kZWZpbmVkQXJnc1t0aGlzLnBvc2l0aW9uYWxzLmxlbmd0aF0KICAgIHRoaXMucG9zaXRpb25hbHMucHVzaChhcmcpCiAgICB0aGlzLmluZGljZXMucG9zaXRpb25hbHMucHVzaChwYXJzZXIubGFzdGkpCiAgICB0aGlzLmFyZ3NbZGVmLm5hbWVdID0gYXJnCiAgICB0aGlzLmluZGljZXMuYXJnc1tkZWYubmFtZV0gPSBwYXJzZXIubGFzdGkKCiAgICByZXR1cm4gbnVsbAogIH0KCiAgX29ucmVzdCAocmVzdCwgcGFyc2VyKSB7CiAgICBpZiAodGhpcy5fZGVmaW5lZFJlc3QgPT09IG51bGwgJiYgdGhpcy5fc3RyaWN0QXJncykgewogICAgICByZXR1cm4gY3JlYXRlQmFpbCh0aGlzLCAnVU5LTk9XTl9BUkcnLCBudWxsLCB7IGluZGV4OiB0aGlzLnBvc2l0aW9uYWxzLmxlbmd0aCwgdmFsdWU6IHJlc3Quam9pbignICcpIH0pCiAgICB9CgogICAgdGhpcy5yZXN0ID0gcmVzdAogICAgdGhpcy5pbmRpY2VzLnJlc3QgPSBwYXJzZXIubGFzdGkKICAgIHJldHVybiBudWxsCiAgfQoKICBfYmFpbCAoYmFpbCkgewogICAgaWYgKHR5cGVvZiB0aGlzLl9vbmJhaWwgPT09ICdmdW5jdGlvbicpIHJldHVybiB0aGlzLl9vbmJhaWwoYmFpbCkKICAgIGlmICh0aGlzLnBhcmVudCkgcmV0dXJuIHRoaXMucGFyZW50Ll9iYWlsKGJhaWwpCiAgICBpZiAoYmFpbC5mbGFnKSB0aHJvdyBuZXcgQmFpbChiYWlsLnJlYXNvbiArICc6ICcgKyBiYWlsLmZsYWcubmFtZSkKICAgIGlmIChiYWlsLmFyZykgdGhyb3cgbmV3IEJhaWwoYmFpbC5yZWFzb24gKyAnOiAnICsgYmFpbC5hcmcudmFsdWUpCiAgICB0aHJvdyBuZXcgQmFpbChiYWlsLnJlYXNvbikKICB9Cn0KCmNsYXNzIEZsYWcgewogIGNvbnN0cnVjdG9yIChzcGVjLCBkZXNjcmlwdGlvbiA9ICcnKSB7CiAgICBjb25zdCB7IGxvbmdOYW1lLCBzaG9ydE5hbWUsIGFsaWFzZXMsIGJvb2xlYW4sIGhlbHAsIHZhbHVlLCB2YWx1ZVJlcXVpcmVkIH0gPSBwYXJzZUZsYWcoc3BlYykKICAgIHRoaXMubmFtZSA9IHNuYWtlVG9DYW1lbChsb25nTmFtZSB8fCBzaG9ydE5hbWUpCiAgICB0aGlzLmFsaWFzZXMgPSBhbGlhc2VzCiAgICB0aGlzLmJvb2xlYW4gPSBib29sZWFuCiAgICB0aGlzLmhlbHAgPSBoZWxwCiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KICAgIHRoaXMuaGlkZGVuID0gZmFsc2UKICAgIHRoaXMubXVsdGkgPSBmYWxzZQogICAgdGhpcy52YWx1ZUNob2ljZXMgPSB1bmRlZmluZWQKICAgIHRoaXMuaGFzRGVmYXVsdCA9IGZhbHNlCiAgICB0aGlzLnZhbHVlID0gdmFsdWUKICAgIHRoaXMudmFsdWVSZXF1aXJlZCA9IHZhbHVlUmVxdWlyZWQKICB9CgogIGRlZmF1bHQgKHZhbCkgewogICAgdGhpcy5oYXNEZWZhdWx0ID0gdHJ1ZQogICAgdGhpcy52YWx1ZSA9IHZhbAogICAgdGhpcy5kZXNjcmlwdGlvbiArPSBgIChkZWZhdWx0OiAke3ZhbH0pYAogICAgcmV0dXJuIHRoaXMKICB9CgogIG11bHRpcGxlICgpIHsKICAgIHRoaXMubXVsdGkgPSB0cnVlCiAgICByZXR1cm4gdGhpcwogIH0KCiAgY2hvaWNlcyAodmFsdWVDaG9pY2VzKSB7CiAgICB0aGlzLnZhbHVlQ2hvaWNlcyA9IHZhbHVlQ2hvaWNlcwogICAgdGhpcy5kZXNjcmlwdGlvbiArPSBgIChjaG9pY2VzOiAke3ZhbHVlQ2hvaWNlcy5qb2luKCcsICcpfSlgCiAgICByZXR1cm4gdGhpcwogIH0KCiAgaGlkZSAoKSB7CiAgICB0aGlzLmhpZGRlbiA9IHRydWUKICAgIHJldHVybiB0aGlzCiAgfQp9CgpjbGFzcyBBcmcgewogIGNvbnN0cnVjdG9yIChoZWxwLCBkZXNjcmlwdGlvbiA9ICcnKSB7CiAgICB0aGlzLm9wdGlvbmFsID0gaGVscC5zdGFydHNXaXRoKCdbJykKICAgIHRoaXMubmFtZSA9IHNuYWtlVG9DYW1lbChoZWxwKQogICAgdGhpcy5oZWxwID0gaGVscAogICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCiAgICB0aGlzLmhpZGRlbiA9IGZhbHNlCiAgfQoKICBoaWRlICgpIHsKICAgIHRoaXMuaGlkZGVuID0gdHJ1ZQogICAgcmV0dXJuIHRoaXMKICB9CgogIHVzYWdlICgpIHsKICAgIGlmICghdGhpcy5vcHRpb25hbCkgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb24KICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5kZXNjcmlwdGlvbi5zbGljZSgwLCAxKQogICAgcmV0dXJuICh0aGlzLmRlc2NyaXB0aW9uICYmIGZpcnN0LnRvTG93ZXJDYXNlKCkgPT09IGZpcnN0ID8gJ29wdGlvbmFsLiAnIDogJ09wdGlvbmFsLiAnKSArIHRoaXMuZGVzY3JpcHRpb24KICB9Cn0KCmNsYXNzIFJlc3QgewogIGNvbnN0cnVjdG9yIChoZWxwLCBkZXNjcmlwdGlvbiA9ICcnKSB7CiAgICB0aGlzLmhlbHAgPSBoZWxwCiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KICB9Cn0KCmNsYXNzIERhdGEgewogIGNvbnN0cnVjdG9yICh0eXBlLCB2YWx1ZSkgewogICAgdGhpcy50eXBlID0gdHlwZQogICAgdGhpcy52YWx1ZSA9IHZhbHVlCiAgfQp9CgpjbGFzcyBWYWxpZGF0aW9uIHsKICBjb25zdHJ1Y3RvciAodmFsaWRhdG9yLCBkZXNjcmlwdGlvbiA9ICdpbnZhbGlkIGNvbW1hbmQnKSB7CiAgICBpZiAodHlwZW9mIHZhbGlkYXRvciA9PT0gJ3N0cmluZycpIFtkZXNjcmlwdGlvbiwgdmFsaWRhdG9yXSA9IFt2YWxpZGF0b3IsIGRlc2NyaXB0aW9uXQogICAgdGhpcy52YWxpZGF0b3IgPSB2YWxpZGF0b3IKICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgogIH0KfQoKZnVuY3Rpb24gYXJndiAoKSB7CiAgcmV0dXJuIHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJyA/IGdsb2JhbC5CYXJlLmFyZ3Yuc2xpY2UoMikgOiBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikKfQoKZnVuY3Rpb24gY29tbWFuZCAobmFtZSwgLi4uYXJncykgewogIGNvbnN0IGMgPSBuZXcgQ29tbWFuZChudWxsLCBuYW1lKQogIGZvciAoY29uc3QgYSBvZiBhcmdzKSB7CiAgICBpZiAoYSBpbnN0YW5jZW9mIENvbW1hbmQpIHsKICAgICAgYy5fYWRkQ29tbWFuZChhKQogICAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgRmxhZykgewogICAgICBjLl9hZGRGbGFnKGEpCiAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcmcpIHsKICAgICAgYy5fYWRkQXJnKGEpCiAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBSZXN0KSB7CiAgICAgIGMuX2FkZFJlc3QoYSkKICAgIH0gZWxzZSBpZiAoYSBpbnN0YW5jZW9mIERhdGEpIHsKICAgICAgYy5fYWRkRGF0YShhKQogICAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgVmFsaWRhdGlvbikgewogICAgICBjLl9hZGRWYWxpZGF0aW9uKGEpCiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGMuX2FkZFJ1bm5lcihhKQogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGFyZzogJyArIGEpCiAgICB9CiAgfQogIGMuX2FkZEZsYWcobmV3IEZsYWcoJy0taGVscHwtaCcsICdTaG93IGhlbHAnKSkKICBpZiAoIWMuX3J1bm5lcikgYy5fYWRkUnVubmVyKG5vb3ApCiAgcmV0dXJuIGMKfQoKLy8gZGVwcmVjYXRlZCwgcmVtb3ZlZCBzb29uLCB1c2UuaGlkZSgpCmZ1bmN0aW9uIGhpZGRlbkNvbW1hbmQgKG5hbWUsIC4uLmFyZ3MpIHsKICByZXR1cm4gY29tbWFuZChuYW1lLCAuLi5hcmdzKS5oaWRlKCkKfQoKZnVuY3Rpb24gYmFpbCAoZm4pIHsKICByZXR1cm4gbmV3IERhdGEoJ2JhaWwnLCBmbikKfQoKZnVuY3Rpb24gc2xvcHB5IChvcHRzKSB7CiAgcmV0dXJuIG5ldyBEYXRhKCdzbG9wcHknLCBvcHRzKQp9CgpmdW5jdGlvbiBzdW1tYXJ5IChkZXNjKSB7CiAgcmV0dXJuIG5ldyBEYXRhKCdzdW1tYXJ5JywgZGVzYykKfQoKZnVuY3Rpb24gZGVzY3JpcHRpb24gKGRlc2MsIC4uLnZhbHVlcykgewogIGlmIChBcnJheS5pc0FycmF5KGRlc2MpKSByZXR1cm4gZGVzY3JpcHRpb24oZGVkZW50KGRlc2MsIHZhbHVlcykpCiAgcmV0dXJuIG5ldyBEYXRhKCdkZXNjcmlwdGlvbicsIGRlc2MpCn0KCmZ1bmN0aW9uIGhlYWRlciAoZGVzYykgewogIHJldHVybiBuZXcgRGF0YSgnaGVhZGVyJywgZGVzYykKfQoKZnVuY3Rpb24gZm9vdGVyIChkZXNjKSB7CiAgcmV0dXJuIG5ldyBEYXRhKCdmb290ZXInLCBkZXNjKQp9CgovLyBkZXByZWNhdGVkLCByZW1vdmVkIHNvb24sIHVzZSAuaGlkZSgpCmZ1bmN0aW9uIGhpZGRlbkZsYWcgKGhlbHAsIGRlc2NyaXB0aW9uKSB7CiAgcmV0dXJuIGZsYWcoaGVscCwgZGVzY3JpcHRpb24pLmhpZGUoKQp9CgpmdW5jdGlvbiBmbGFnIChoZWxwLCBkZXNjcmlwdGlvbikgewogIHJldHVybiBuZXcgRmxhZyhoZWxwLCBkZXNjcmlwdGlvbikKfQoKZnVuY3Rpb24gcmVzdCAoaGVscCwgZGVzY3JpcHRpb24pIHsKICByZXR1cm4gbmV3IFJlc3QoaGVscCwgZGVzY3JpcHRpb24pCn0KCmZ1bmN0aW9uIGFyZyAoaGVscCwgZGVzY3JpcHRpb24pIHsKICByZXR1cm4gbmV3IEFyZyhoZWxwLCBkZXNjcmlwdGlvbikKfQoKZnVuY3Rpb24gdmFsaWRhdGUgKHZhbGlkYXRvciwgZGVzY3JpcHRpb24pIHsKICByZXR1cm4gbmV3IFZhbGlkYXRpb24odmFsaWRhdG9yLCBkZXNjcmlwdGlvbikKfQoKZnVuY3Rpb24gdW5pbmRlbnQgKGluZm8pIHsKICBjb25zdCBsaW5lcyA9IGluZm8uc3BsaXQoJ1xuJykuZmlsdGVyKHRyaW1MaW5lKQogIGlmICghbGluZXMubGVuZ3RoKSByZXR1cm4gJycKICBjb25zdCBpbmRlbnQgPSBsaW5lc1swXS5tYXRjaCgvXihccyopLylbMV0KCiAgbGV0IHMgPSAnJwogIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykgcyArPSBsaW5lLnNsaWNlKGluZGVudC5sZW5ndGgpLnRyaW1FbmQoKSArICdcbicKICByZXR1cm4gcy50cmltRW5kKCkKfQoKZnVuY3Rpb24gdHJpbUxpbmUgKGxpbmUpIHsKICByZXR1cm4gbGluZS50cmltKCkKfQoKZnVuY3Rpb24gc25ha2VUb0NhbWVsIChuYW1lKSB7CiAgY29uc3QgcGFydHMgPSBuYW1lLm1hdGNoKC8oW2EtekEtWjAtOS1dKykvKVsxXS5zcGxpdCgvLSsvKQogIGZvciAobGV0IGkgPSAxOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHBhcnRzW2ldID0gcGFydHNbaV0uc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHBhcnRzW2ldLnNsaWNlKDEpCiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpCn0KCmZ1bmN0aW9uIHBhcnNlRmxhZyAoaGVscCkgewogIGNvbnN0IHBhcnRzID0gaGVscC5zcGxpdCgvW3wgXS8pCiAgY29uc3QgcmVzdWx0ID0geyBsb25nTmFtZTogbnVsbCwgc2hvcnROYW1lOiBudWxsLCBhbGlhc2VzOiBbXSwgYm9vbGVhbjogdHJ1ZSwgaGVscCwgdmFsdWU6IG51bGwsIGludmVyc2U6IGZhbHNlLCB2YWx1ZVJlcXVpcmVkOiBmYWxzZSB9CiAgZm9yIChjb25zdCBwIG9mIHBhcnRzKSB7CiAgICByZXN1bHQuaW52ZXJzZSA9IHAuc3RhcnRzV2l0aCgnLS1uby0nKQogICAgaWYgKHAuc3RhcnRzV2l0aCgnLS0nKSkgewogICAgICBjb25zdCBuYW1lID0gcmVzdWx0LmludmVyc2UgPyB0cmltRmxhZyhwKS5zbGljZSgzKSA6IHRyaW1GbGFnKHApCiAgICAgIGlmIChyZXN1bHQubG9uZ05hbWUgPT09IG51bGwpIHJlc3VsdC5sb25nTmFtZSA9IG5hbWUKICAgICAgcmVzdWx0LnZhbHVlID0gcmVzdWx0LmludmVyc2UKICAgICAgcmVzdWx0LmFsaWFzZXMucHVzaChuYW1lKQogICAgICBjb250aW51ZQogICAgfQoKICAgIGlmIChwLnN0YXJ0c1dpdGgoJy0nKSkgewogICAgICBjb25zdCBuYW1lID0gdHJpbUZsYWcocCkKICAgICAgaWYgKHJlc3VsdC5zaG9ydE5hbWUgPT09IG51bGwpIHJlc3VsdC5zaG9ydE5hbWUgPSBuYW1lCiAgICAgIHJlc3VsdC52YWx1ZSA9IGZhbHNlCiAgICAgIHJlc3VsdC5hbGlhc2VzLnB1c2gobmFtZSkKICAgICAgY29udGludWUKICAgIH0KCiAgICBjb25zdCB2YWx1ZVJlcXVpcmVkID0gcC5zdGFydHNXaXRoKCc8JykKICAgIGNvbnN0IHN0cmluZ0ZsYWcgPSBwLnN0YXJ0c1dpdGgoJ1snKSB8fCB2YWx1ZVJlcXVpcmVkCiAgICBpZiAoc3RyaW5nRmxhZykgewogICAgICByZXN1bHQuYm9vbGVhbiA9IGZhbHNlCiAgICAgIHJlc3VsdC52YWx1ZSA9IHVuZGVmaW5lZAogICAgICByZXN1bHQudmFsdWVSZXF1aXJlZCA9IHZhbHVlUmVxdWlyZWQKICAgIH0KICB9CgogIHJldHVybiByZXN1bHQKfQoKZnVuY3Rpb24gdHJpbUZsYWcgKHMpIHsKICByZXR1cm4gcy5yZXBsYWNlKC8oXlteMC05XHddKyl8KFteMC05XHddKyQpL2csICcnKQp9CgpmdW5jdGlvbiBjcmVhdGVCYWlsIChjb21tYW5kLCByZWFzb24sIGZsYWcsIGFyZywgZXJyKSB7CiAgcmV0dXJuIHsgY29tbWFuZCwgcmVhc29uLCBmbGFnLCBhcmcsIGVyciB9Cn0KCmZ1bmN0aW9uIGRlZmF1bHRGbGFnIChuYW1lKSB7CiAgcmV0dXJuIHsKICAgIG5hbWUsCiAgICBhbGlhc2VzOiBbbmFtZV0sCiAgICBib29sZWFuOiBmYWxzZSwKICAgIGhlbHA6ICcnLAogICAgZGVzY3JpcHRpb246ICcnLAogICAgdmFsdWU6ICcnCiAgfQp9CgpmdW5jdGlvbiBkZWRlbnQgKHN0cmluZ3MsIHZhbHVlcykgewogIGNvbnN0IHJhdyA9IFN0cmluZy5yYXcoc3RyaW5ncywgLi4udmFsdWVzKQogIGNvbnN0IGxpbmVzID0gcmF3LnNwbGl0KCdcbicpCgogIGxldCBtaW5JbmRlbnQgPSBJbmZpbml0eQogIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykgewogICAgbGV0IGkgPSAwCiAgICB3aGlsZSAoaSA8IGxpbmUubGVuZ3RoICYmIGxpbmVbaV0gPT09ICcgJykgaSsrCiAgICBpZiAoaSA8IGxpbmUubGVuZ3RoKSBtaW5JbmRlbnQgPSBNYXRoLm1pbihtaW5JbmRlbnQsIGkpCiAgfQoKICBpZiAobWluSW5kZW50ID09PSBJbmZpbml0eSkgcmV0dXJuIHJhdy50cmltKCkKCiAgbGV0IHJlc3VsdCA9ICcnCiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7CiAgICByZXN1bHQgKz0gbGluZS5sZW5ndGggPj0gbWluSW5kZW50ID8gbGluZS5zbGljZShtaW5JbmRlbnQpICsgJ1xuJyA6ICdcbicKICB9CgogIHJldHVybiByZXN1bHQudHJpbSgpCn0KCmZ1bmN0aW9uIHJ1blZhbGlkYXRpb24gKHYsIGMpIHsKICB0cnkgewogICAgY29uc3QgaXNWYWxpZCA9IHYudmFsaWRhdG9yKHsgYXJnczogYy5hcmdzLCBmbGFnczogYy5mbGFncywgcG9zaXRpb25hbHM6IGMucG9zaXRpb25hbHMsIHJlc3Q6IGMucmVzdCwgaW5kaWNlczogYy5pbmRpY2VzLCBjb21tYW5kOiBjIH0pCiAgICBpZiAoIWlzVmFsaWQpIHsKICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKHYuZGVzY3JpcHRpb24pCiAgICAgIGVyci5jb2RlID0gJ0VSUl9JTlZBTElEJwogICAgICBlcnIuYmFpbCA9IHsgcmVhc29uOiB2LmRlc2NyaXB0aW9uIH0KICAgICAgdGhyb3cgZXJyCiAgICB9CiAgICByZXR1cm4gbnVsbAogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIGNyZWF0ZUJhaWwoYywgZXJyLmJhaWw/LnJlYXNvbiA/PyBlcnIuc3RhY2ssIGVyci5iYWlsPy5mbGFnLCBlcnIuYmFpbD8uYXJnLCBlcnIpCiAgfQp9CgpmdW5jdGlvbiBydW5TeW5jIChjKSB7CiAgdHJ5IHsKICAgIGMuX3J1bm5lcih7IGFyZ3M6IGMuYXJncywgZmxhZ3M6IGMuZmxhZ3MsIHBvc2l0aW9uYWxzOiBjLnBvc2l0aW9uYWxzLCByZXN0OiBjLnJlc3QsIGluZGljZXM6IGMuaW5kaWNlcywgY29tbWFuZDogYyB9KQogIH0gY2F0Y2ggKGVycikgewogICAgYy5iYWlsKGNyZWF0ZUJhaWwoYywgZXJyLnN0YWNrLCBudWxsLCBudWxsLCBlcnIpKQogIH0KfQoKYXN5bmMgZnVuY3Rpb24gcnVuQXN5bmMgKGMpIHsKICB0cnkgewogICAgYXdhaXQgYy5fcnVubmVyKHsgYXJnczogYy5hcmdzLCBmbGFnczogYy5mbGFncywgcG9zaXRpb25hbHM6IGMucG9zaXRpb25hbHMsIHJlc3Q6IGMucmVzdCwgaW5kaWNlczogYy5pbmRpY2VzLCBjb21tYW5kOiBjIH0pCiAgfSBjYXRjaCAoZXJyKSB7CiAgICBjLmJhaWwoY3JlYXRlQmFpbChjLCBlcnIuc3RhY2ssIG51bGwsIG51bGwsIGVycikpCiAgfQp9CgpjbGFzcyBCYWlsIGV4dGVuZHMgRXJyb3IgeyBuYW1lID0gJ0JhaWwnIH0KewogICJuYW1lIjogInBhcGFyYW0iLAogICJ2ZXJzaW9uIjogIjEuOC41IiwKICAiZGVzY3JpcHRpb24iOiAiU3RyaWN0IGFuZCBmYWlyIHBhcmFtZXRlciBwYXBhIiwKICAibWFpbiI6ICJpbmRleC5qcyIsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJicml0dGxlIHRlc3QuanMiLAogICAgImxpbnQiOiAic3RhbmRhcmQiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuNS4wIiwKICAgICJzdGFuZGFyZCI6ICJeMTcuMS4wIgogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIgogIF0sCiAgInN0YW5kYXJkIjogewogICAgImdsb2JhbHMiOiBbCiAgICAgICJCYXJlIgogICAgXQogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcGFwYXJhbS5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCBJbmMuIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3BhcGFyYW0vaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9wYXBhcmFtIgp9Cid1c2Ugc3RyaWN0Jwpjb25zdCB7IGNvbW1hbmQsIGFyZywgcmVzdCB9ID0gcmVxdWlyZSgncGFwYXJhbScpCmNvbnN0IHBlYXIgPSByZXF1aXJlKCcuL3BlYXInKQptb2R1bGUuZXhwb3J0cyA9IChhcmd2KSA9PiBjb21tYW5kKCdwZWFyJywgLi4ucGVhciwgYXJnKCdbY21kXScpLCByZXN0KCdyZXN0JykpLnBhcnNlKGFyZ3YsIHsgc2lsZW50OiB0cnVlIH0pCid1c2Ugc3RyaWN0Jwpjb25zdCB7IGZsYWcgfSA9IHJlcXVpcmUoJ3BhcGFyYW0nKQoKbW9kdWxlLmV4cG9ydHMgPSBbCiAgZmxhZygnLXYnLCAnUHJpbnQgdmVyc2lvbicpLAogIGZsYWcoJy0tbG9nLWxhYmVsc3wtbCA8bGlzdD4nLCAnTGFiZWxzIHRvIGxvZy4gSWYgc2V0LCBpbXBsaWVzIC0tbG9nJyksCiAgZmxhZygnLS1sb2ctbGV2ZWx8LUwgPGxldmVsPicsICdMZXZlbCB0byBsb2cgYXQuIDAsMSwyLDMgKE9GRixFUlIsSU5GLFRSQyknKSwKICBmbGFnKCctLWxvZy1maWVsZHN8LUYgPGxpc3Q+JywgJ1Nob3cvaGlkZTogZGF0ZSx0aW1lLGg6bGV2ZWwsaDpsYWJlbCxoOmRlbHRhJyksCiAgZmxhZygnLS1sb2ctdmVyYm9zZXwtVicsICdMb2cgd2l0aCBhbGwgZmllbGRzIGVuYWJsZWQnKSwKICBmbGFnKCctLWxvZy1zdGFja3N8LVMnLCAnQWRkIGEgc3RhY2sgdHJhY2UgdG8gZWFjaCBsb2cgbWVzc2FnZScpLAogIGZsYWcoJy0tbG9nLW1heHwtTScsICdMb2cgd2l0aCBhbGwgbGV2ZWxzLCBsb2dzIGFuZCBmaWVsZHMnKSwKICBmbGFnKCctLWxvZycsICdEZWZhdWx0IGxvZ3M6IC1sIHNpZGVjYXIgLUwgMiAtRiBoOmxldmVsLGg6bGFiZWwnKSwKICBmbGFnKCctLXNpZGVjYXInLCAnUmF3IGJvb3QgU2lkZWNhcicpLAogIGZsYWcoJy0tcnVuJykuaGlkZSgpLCAvLyBhcHBsaW5nIGxlZ2FjeQogIGZsYWcoJy0tc2FuZGJveCcpLmhpZGUoKSwgLy8gYXBwbGluZyBsZWdhY3kKICBmbGFnKCctLWFwcGxpbmcnKS5oaWRlKCksIC8vIGFwcGxpbmcgbGVnYWN5CiAgZmxhZygnLS1ydGkgPGluZm8+JykuaGlkZSgpLAogIGZsYWcoJy0ta2V5IDxrZXk+JywgJ0FkdmFuY2VkLiBTd2l0Y2ggcmVsZWFzZSBsaW5lcycpLmhpZGUoKSwKICBmbGFnKCctLW1lbScsICdNZW1vcnkgbW9kZTogUkFNIGNvcmVzdG9yZScpLmhpZGUoKSwKICBmbGFnKCctLWRodC1ib290c3RyYXAgPG5vZGVzPicpLmhpZGUoKQpdCid1c2Ugc3RyaWN0Jwpjb25zdCB7IGZsYWcsIGFyZywgcmVzdCB9ID0gcmVxdWlyZSgncGFwYXJhbScpCgptb2R1bGUuZXhwb3J0cyA9IFsKICBhcmcoJzxsaW5rfGRpcj4nLCAnUGVhciBsaW5rLCBhbGlhcyBvciBkaXJlY3RvcnkgdG8gcnVuIGFwcCBmcm9tJyksCiAgcmVzdCgnWy4uLmFwcC1hcmdzXScsICdBcHBsaWNhdGlvbiBhcmd1bWVudHMnKSwKICBmbGFnKCctLWRldnwtZCcsICdFbmFibGUgLS1kZXZ0b29scyAmIC0tdXBkYXRlcy1kaWZmJyksCiAgZmxhZygnLS1kZXZ0b29scycsICdPcGVuIGRldnRvb2xzIHdpdGggYXBwbGljYXRpb24gW0Rlc2t0b3BdJyksCiAgZmxhZygnLS11cGRhdGVzLWRpZmYnLCAnRW5hYmxlIGRpZmYgY29tcHV0YXRpb24gZm9yIFBlYXIudXBkYXRlcycpLAogIGZsYWcoJy0tbm8tdXBkYXRlcycsICdEaXNhYmxlIHVwZGF0ZXMgZmlyaW5nIHZpYSBQZWFyLnVwZGF0ZXMnKSwKICBmbGFnKCctLWxpbmsgPHVybD4nLCAnU2ltdWxhdGUgZGVlcC1saW5rIGNsaWNrIG9wZW4nKSwKICBmbGFnKCctLXN0b3JlfC1zIDxwYXRoPicsICdTZXQgdGhlIEFwcGxpY2F0aW9uIFN0b3JhZ2UgcGF0aCcpLAogIGZsYWcoJy0tdG1wLXN0b3JlfC10JywgJ0F1dG9tYXRpYyBuZXcgdG1wIGZvbGRlciBhcyBzdG9yZSBwYXRoJyksCiAgZmxhZygnLS1saW5rcyA8a3ZzPicsICdPdmVycmlkZSBjb25maWd1cmVkIGxpbmtzIHdpdGggY29tbWEtc2VwYXJhdGVkIGtleS12YWx1ZXMnKSwKICBmbGFnKCctLXVuc2FmZS1jbGVhci1hcHAtc3RvcmFnZScsICdDbGVhciBhcHAgc3RvcmFnZScpLAogIGZsYWcoJy0tdW5zYWZlLWNsZWFyLXByZWZlcmVuY2VzJywgJ0NsZWFyIHByZWZlcmVuY2VzIChzdWNoIGFzIHRydXN0bGlzdCknKSwKICBmbGFnKCctLWFwcGxpbmcgPHBhdGg+JywgJ1NldCBhcHBsaWNhdGlvbiBzaGVsbCBwYXRoJyksCiAgZmxhZygnLS1jaGVja291dCA8bnxyZWxlYXNlfHN0YWdlZD4nLCAnUnVuIGEgY2hlY2tvdXQgZnJvbSB2ZXJzaW9uIGxlbmd0aCcpLAogIGZsYWcoJy0tZGV0YWNoZWQnLCAnV2FrZXVwIGV4aXN0aW5nIGFwcCBvciBydW4gZGV0YWNoZWQnKSwKICBmbGFnKCctLW5vLXByZScsICdTa2lwIHByZSBzY3JpcHRzJyksCiAgZmxhZygnLS1wcmUtaW8nLCAnU2hvdyBzdGRvdXQgJiBzdGRlcnIgb2YgcHJlIHNjcmlwdHMnKSwKICBmbGFnKCctLXByZS1xJywgJ1N1cHByZXNzIHBpcGVkIG91dHB1dCBvZiBwcmUgc2NyaXB0cycpLAogIGZsYWcoJy0tcHJlZmxpZ2h0JywgJ0FkdmFuY2VkLiBObyBydW4sIGp1c3Qgc3luYycpLAogIGZsYWcoJy0tYmFzZSA8cGF0aD4nLCAnU2V0IHByb2plY3QgYmFzZSBmb3IgcGF0aC9maWxlOiBydW4gbGlua3MnKSwKICBmbGFnKCctLWZvbGxvdy1zeW1saW5rc3wtZicsICdGb2xsb3cgaW4tcHJvamVjdCBzeW1saW5rcycpLAogIGZsYWcoJy0tanNvbicsICdOZXdsaW5lLWRlbGltaXRlZC1KU09OIG9wZXJhdGlvbmFsIHN0YXR1cycpLAogIGZsYWcoJy0tbm8tYXNrJywgJ1N1cHByZXNzIHBlcm1pc3Npb24gcHJvbXB0JyksCiAgZmxhZygnLS1ydGkgPGluZm8+JykuaGlkZSgpLAogIGZsYWcoJy0tcHJlcnVubmluZycpLmhpZGUoKSwKICBmbGFnKCctLWRodC1ib290c3RyYXAgPG5vZGVzPicpLmhpZGUoKSwKICBmbGFnKCctLWVuY3J5cHRpb24ta2V5IDxuYW1lPicpLmhpZGUoKSwKICBmbGFnKCctLXBhcmVudCA8aWQ+JykuaGlkZSgpLAogIGZsYWcoJy0tdHJ1c3RlZCcpLmhpZGUoKSwKICBmbGFnKCctLWRldGFjaCcpLmhpZGUoKSwKICBmbGFnKCctLXNhbmRib3gnKS5oaWRlKCkgLy8gZWxlY3Ryb24gcGFzc3Rocm91Z2gKXQondXNlIHN0cmljdCcKY29uc3QgaHlwZXJjb3JlaWQgPSByZXF1aXJlKCdoeXBlcmNvcmUtaWQtZW5jb2RpbmcnKQpjb25zdCB7IHBsYXRmb3JtLCBhcmNoLCBpc1dpbmRvd3MsIGlzTGludXggfSA9IHJlcXVpcmUoJ3doaWNoLXJ1bnRpbWUnKQpjb25zdCB7IGZpbGVVUkxUb1BhdGggfSA9IHJlcXVpcmUoJ3VybC1maWxlLXVybCcpCmNvbnN0IHNvZGl1bSA9IHJlcXVpcmUoJ3NvZGl1bS1uYXRpdmUnKQpjb25zdCBiNGEgPSByZXF1aXJlKCdiNGEnKQpjb25zdCBDSEVDS09VVCA9IGdsb2JhbC5QZWFyPy5jb25zdHJ1Y3Rvci5SVEkuY2hlY2tvdXQKY29uc3QgTU9VTlQgPSBnbG9iYWwuUGVhcj8uY29uc3RydWN0b3IuUlRJLm1vdW50CmNvbnN0IEJJTiA9ICdieS1hcmNoLycgKyBwbGF0Zm9ybSArICctJyArIGFyY2ggKyAnL2Jpbi8nCgpsZXQgbW91bnQgPSBNT1VOVCA/IHRvVVJMKE1PVU5UICsgJy8nLCAnZmlsZTonKSA6IG51bGwKaWYgKCFtb3VudCkgewogIGxldCB1cmwgPSByZXF1aXJlLm1haW4/LnVybAogIGlmICh1cmw/LmhyZWYuZW5kc1dpdGgoJy9ib290LmJ1bmRsZScpKSB1cmwuaHJlZiArPSAnLycKICBlbHNlIHVybCA9IG5ldyBVUkwoJy4nLCB1cmwpCiAgaWYgKHVybCAmJiB1cmwucHJvdG9jb2wgPT09ICdwZWFyOicpIHVybCA9IHRvVVJMKGdsb2JhbC5QZWFyLmNvbmZpZy5zd2FwRGlyICsgJy8nLCAnZmlsZTonKQogIG1vdW50ID0gdXJsCn0KCmNvbnN0IExPQ0FMREVWID0gQ0hFQ0tPVVQubGVuZ3RoID09PSBudWxsCmNvbnN0IHN3YXBVUkwgPSBtb3VudC5wYXRobmFtZS5lbmRzV2l0aCgnLmJ1bmRsZS8nKSA/IG5ldyBVUkwoJy4uJywgbW91bnQpIDogbW91bnQKY29uc3Qgc3dhcFBhdGggPSB0b1BhdGgoc3dhcFVSTCkKY29uc3QgSVBDX0lEID0gJ3BlYXInCmNvbnN0IFBMQVRGT1JNX1VSTCA9IExPQ0FMREVWID8gbmV3IFVSTCgncGVhci8nLCBzd2FwVVJMKSA6IG5ldyBVUkwoJy4uLy4uLy4uLycsIHN3YXBVUkwpCgpjb25zdCBQTEFURk9STV9ESVIgPSB0b1BhdGgoUExBVEZPUk1fVVJMKQpjb25zdCBQTEFURk9STV9MT0NLID0gdG9QYXRoKG5ldyBVUkwoJ2NvcmVzdG9yZXMvcGxhdGZvcm0vZGIvTE9DSycsIFBMQVRGT1JNX1VSTCkpCgpjb25zdCBSVU5USU1FX0VYRUMgPSBpc1dpbmRvd3MKICA/ICdwZWFyLXJ1bnRpbWUuZXhlJwogIDogJ3BlYXItcnVudGltZScKCmNvbnN0IFdBS0VVUF9FWEVDID0gaXNXaW5kb3dzCiAgPyAncGVhci5leGUnCiAgOiBpc0xpbnV4CiAgICA/ICdwZWFyJwogICAgOiAnUGVhci5hcHAvQ29udGVudHMvTWFjT1MvUGVhcicKCmNvbnN0IEFMSUFTRVMgPSB7CiAgcGVhcjogaHlwZXJjb3JlaWQuZGVjb2RlKExPQ0FMREVWID8gJ2RocGM1bnBtcWthbnN4Mzh1aDE4aDN1d3BkcDZnOXVrb3pycXljNGlyYmh3cmllZHllaG8nIDogQ0hFQ0tPVVQua2V5KSwKICBrZWV0OiBoeXBlcmNvcmVpZC5kZWNvZGUoJ21hOXpvOHptZmF0M2loMzE0bW5lMXE0N3NocmZobzFvZHlmbTltZXRoZ25uN2I4NjZ3NnknKSwKICBydW50aW1lOiBoeXBlcmNvcmVpZC5kZWNvZGUoJ3JidzZmYnhvcnFnamd5aXR3b3JoM2Y3M3V0YzVjdTdzY3pocHRuNjRvb25iem51b2ppYW8nKSwKICBkb2N0b3I6IGh5cGVyY29yZWlkLmRlY29kZSgnb3VlbnlteTg4OW40cmk5Zzc0am01YmNyNDZ3YzZocW54YWRxaGZtYmM0eGJza2VyZWhieScpLAogIGVsZWN0cm9uOiBoeXBlcmNvcmVpZC5kZWNvZGUoJ2dvb3dlc2c1ZGdhOWoxcnl4NDdyc2s5bzR6bXM0NTQxbWU0emVyeHNuYnU4dTk5ZHVoNG8nKQp9Cgpjb25zdCBFT0xTID0gewogIGtlZXQ6IFtoeXBlcmNvcmVpZC5kZWNvZGUoJ2pjMzh0OW5yN2Zhc2F5NG5xZnh3ZmFhd3l3ZmQzeTE0a3Juc2l0ajY3eW1vdWJpZXpxZHknKSwgaHlwZXJjb3JlaWQuZGVjb2RlKCdvZWVvejN3NmZqanQ3YnltM25kcGE2aGhpY204ZjhuYXh5azExejRpeXBlb3VwbjZqenBvJyldCn0KCmV4cG9ydHMuTE9DQUxERVYgPSBMT0NBTERFVgpleHBvcnRzLkNIRUNLT1VUID0gQ0hFQ0tPVVQKZXhwb3J0cy5BTElBU0VTID0gQUxJQVNFUwpleHBvcnRzLkVPTFMgPSBFT0xTCgpleHBvcnRzLlNXQVAgPSBzd2FwUGF0aApleHBvcnRzLlBMQVRGT1JNX0RJUiA9IFBMQVRGT1JNX0RJUgpleHBvcnRzLlBMQVRGT1JNX0xPQ0sgPSBQTEFURk9STV9MT0NLCmV4cG9ydHMuUExBVEZPUk1fSFlQRVJEQiA9IHRvUGF0aChuZXcgVVJMKCdkYicsIFBMQVRGT1JNX1VSTCkpCmV4cG9ydHMuR0MgPSB0b1BhdGgobmV3IFVSTCgnZ2MnLCBQTEFURk9STV9VUkwpKQpleHBvcnRzLlBMQVRGT1JNX0NPUkVTVE9SRSA9IHRvUGF0aChuZXcgVVJMKCdjb3Jlc3RvcmVzL3BsYXRmb3JtJywgUExBVEZPUk1fVVJMKSkKZXhwb3J0cy5VUEdSQURFX0xPQ0sgPSB0b1BhdGgobmV3IFVSTCgnbG9jaycsIFBMQVRGT1JNX1VSTCkpCmV4cG9ydHMuQVBQTElOR1NfUEFUSCA9IHRvUGF0aChuZXcgVVJMKCdhcHBsaW5ncycsIFBMQVRGT1JNX1VSTCkpCmV4cG9ydHMuTU9VTlQgPSBtb3VudC5ocmVmLnNsaWNlKDAsIC0xKQpleHBvcnRzLlNPQ0tFVF9QQVRIID0gaXNXaW5kb3dzID8gYFxcXFwuXFxwaXBlXFwke0lQQ19JRH0tJHtwaXBlSWQoUExBVEZPUk1fRElSKX1gIDogYCR7UExBVEZPUk1fRElSfS8ke0lQQ19JRH0uc29ja2AKZXhwb3J0cy5CT09UID0gcmVxdWlyZS5tYWluPy5maWxlbmFtZQoKZXhwb3J0cy5DT05ORUNUX1RJTUVPVVQgPSAyMF8wMDAKZXhwb3J0cy5JRExFX1RJTUVPVVQgPSAzMF8wMDAKZXhwb3J0cy5TUElORE9XTl9USU1FT1VUID0gNjBfMDAwCgpleHBvcnRzLldBS0VVUCA9IHRvUGF0aChuZXcgVVJMKEJJTiArIFdBS0VVUF9FWEVDLCBzd2FwVVJMKSkKZXhwb3J0cy5SVU5USU1FID0gdG9QYXRoKG5ldyBVUkwoQklOICsgUlVOVElNRV9FWEVDLCBzd2FwVVJMKSkKCmV4cG9ydHMuU0FMVCA9IGI0YS5mcm9tKCdkMTM0YWE4YjA2MzFmMTE5M2I1MDMxYjM1NmQ4MmRiZWEyMTQzODkyMDhmYTRhMGJjZGY1YzJlMDYyZDhjZWQyJywgJ2hleCcpCgpleHBvcnRzLktOT1dOX05PREVTX0xJTUlUID0gMTAwCgpmdW5jdGlvbiB0b1BhdGggKHUpIHsKICByZXR1cm4gZmlsZVVSTFRvUGF0aCh1KS5yZXBsYWNlKC9bL1xcXSQvLCAnJykgfHwgJy8nCn0KCmZ1bmN0aW9uIHRvVVJMIChzKSB7CiAgaWYgKHNbMV0gPT09ICc6JyAmJiBzWzBdICE9PSAnLycpIHJldHVybiBuZXcgVVJMKCdmaWxlOicgKyBzKQogIGlmIChzLnN0YXJ0c1dpdGgoJ2ZpbGU6JykpIHJldHVybiBuZXcgVVJMKHMpCiAgcmV0dXJuIG5ldyBVUkwocywgJ2ZpbGU6JykKfQoKZnVuY3Rpb24gcGlwZUlkIChzKSB7CiAgY29uc3QgYnVmID0gYjRhLmFsbG9jVW5zYWZlKDMyKQogIHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2goYnVmLCBiNGEuZnJvbShzKSkKICByZXR1cm4gYjRhLnRvU3RyaW5nKGJ1ZiwgJ2hleCcpCn0KJ3VzZSBzdHJpY3QnCmNvbnN0IHsgaXNCYXJlLCBwbGF0Zm9ybSwgYXJjaCB9ID0gcmVxdWlyZSgnd2hpY2gtcnVudGltZScpCmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKQpjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpCmNvbnN0IHsgQ0hFQ0tPVVQgfSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJykKY29uc3QgcGlkID0gaXNCYXJlID8gZ2xvYmFsLkJhcmUucGlkIDogcHJvY2Vzcy5waWQKCmxldCBoYXNMb2dnZWRVbmhhbmRsZWRSZWplY3Rpb24gPSBmYWxzZQpsZXQgaGFzTG9nZ2VkVW5jYXVnaHRFeGNlcHRpb24gPSBmYWxzZQoKY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpCmZ1bmN0aW9uIGxvZ0NyYXNoIChsb2dQYXRoLCBlcnJvckluZm8sIHN0YWNrVHJhY2UsIGVycikgewogIGNvbnN0IHRpbWVTdGFtcCA9IChuZXcgRGF0ZSgpKS50b0lTT1N0cmluZygpCiAgY29uc3QgdXB0aW1lID0gKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwCiAgY29uc3QgZHJpdmVJbmZvID0gYGtleT0ke0NIRUNLT1VULmtleX1cbmxlbmd0aD0ke0NIRUNLT1VULmxlbmd0aH1cbmZvcms9JHtDSEVDS09VVC5mb3JrfWAKICBjb25zdCBwcm9jZXNzSW5mbyA9IGBwbGF0Zm9ybT0ke3BsYXRmb3JtfVxuYXJjaD0ke2FyY2h9XG5waWQ9JHtwaWR9XG51cHRpbWU9JHt1cHRpbWV9c2AKICBjb25zdCBlcnJJbmZvID0gZXJyICE9PSBudWxsICYmIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkoZXJyLCAwLCA0KS5zbGljZSgxLCAtMikgOiAnJwogIGNvbnN0IGVycm9yTXNnID0gYCR7dGltZVN0YW1wfSAke2Vycm9ySW5mb31cbiR7ZHJpdmVJbmZvfVxuJHtwcm9jZXNzSW5mb31cbnN0YWNrPSR7c3RhY2tUcmFjZSArIGVyckluZm99XG5cbmAKCiAgY29uc29sZS5lcnJvcihlcnJvck1zZykKICBmcy53cml0ZUZpbGVTeW5jKGxvZ1BhdGgsIGVycm9yTXNnLCB7IGZsYWc6ICdhJywgZW5jb2Rpbmc6ICd1dGY4JyB9KQoKICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2dnZWQgYXQgJHtsb2dQYXRofWApCn0KCmZ1bmN0aW9uIHByaW50Q3Jhc2ggKGVycm9ySW5mbywgc3RhY2tUcmFjZSwgZXJyKSB7CiAgY29uc3QgZXJySW5mbyA9IGVyciAhPT0gbnVsbCAmJiB0eXBlb2YgZXJyID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KGVyciwgMCwgNCkuc2xpY2UoMSwgLTIpIDogJycKICBjb25zdCBlcnJvck1zZyA9IGAke3N0YWNrVHJhY2UgKyBlcnJJbmZvfVxuXG4ke2Vycm9ySW5mb31gCgogIGNvbnNvbGUuZXJyb3IoZXJyb3JNc2cpCn0KCmZ1bmN0aW9uIGxvZ0FuZEV4aXQgKGVuYWJsZUxvZywgbG9nUGF0aCwgZXJyb3JJbmZvLCBzdGFjaywgZXJyKSB7CiAgaWYgKGVuYWJsZUxvZykgewogICAgbG9nQ3Jhc2gobG9nUGF0aCwgZXJyb3JJbmZvLCBzdGFjaywgZXJyKQogIH0gZWxzZSB7CiAgICBwcmludENyYXNoKGVycm9ySW5mbywgc3RhY2ssIGVycikKICB9CgogIGNvbnN0IHByb2dyYW0gPSBpc0JhcmUgPyBnbG9iYWwuQmFyZSA6IChnbG9iYWwucHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiA/IHJlcXVpcmUoJ2VsZWN0cm9uJykuYXBwIDogZ2xvYmFsLnByb2Nlc3MpCiAgcHJvZ3JhbS5leGl0KDEpCn0KCmZ1bmN0aW9uIHNldHVwQ3Jhc2hIYW5kbGVycyAocHJvY2Vzc05hbWUsIHN3YXAsIGVuYWJsZUxvZykgewogIGNvbnN0IGNyYXNobG9nUGF0aCA9IHBhdGguam9pbihzd2FwLCBgJHtwcm9jZXNzTmFtZX0uY3Jhc2gubG9nYCkKICBjb25zdCBydW5Db250ZXh0ID0gaXNCYXJlID8gZ2xvYmFsLkJhcmUgOiBnbG9iYWwucHJvY2VzcwoKICBydW5Db250ZXh0Lm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAocmVhc29uKSA9PiB7CiAgICBpZiAoaGFzTG9nZ2VkVW5oYW5kbGVkUmVqZWN0aW9uKSByZXR1cm4KICAgIGhhc0xvZ2dlZFVuaGFuZGxlZFJlamVjdGlvbiA9IHRydWUKCiAgICBjb25zdCBzdGFjayA9IHJlYXNvbj8uc3RhY2sgfHwgcmVhc29uIHx8ICcnCiAgICBjb25zdCBlcnJvckluZm8gPSBgJHtwcm9jZXNzTmFtZX0gZXhpdGluZyBkdWUgdG8gdW5oYW5kbGVkIHJlamVjdGlvbmAKICAgIGxvZ0FuZEV4aXQoZW5hYmxlTG9nLCBjcmFzaGxvZ1BhdGgsIGVycm9ySW5mbywgc3RhY2ssIHJlYXNvbikKICB9KQoKICBydW5Db250ZXh0Lm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgIGlmIChoYXNMb2dnZWRVbmNhdWdodEV4Y2VwdGlvbikgcmV0dXJuCiAgICBoYXNMb2dnZWRVbmNhdWdodEV4Y2VwdGlvbiA9IHRydWUKCiAgICBjb25zdCBlcnJvckluZm8gPSBgJHtwcm9jZXNzTmFtZX0gZXhpdGluZyBkdWUgdG8gdW5jYXVnaHQgZXhjZXB0aW9uYAogICAgbG9nQW5kRXhpdChlbmFibGVMb2csIGNyYXNobG9nUGF0aCwgZXJyb3JJbmZvLCBlcnIuc3RhY2ssIGVycikKICB9KQp9Cgptb2R1bGUuZXhwb3J0cyA9IHNldHVwQ3Jhc2hIYW5kbGVycwondXNlIHN0cmljdCcKY2xhc3MgUGVhckVycm9yIGV4dGVuZHMgRXJyb3IgewogIHN0YXRpYyBFUlJfSU5WQUxJRF9JTlBVVCA9IEVSUl9JTlZBTElEX0lOUFVUCiAgc3RhdGljIEVSUl9JTlZBTElEX0xJTksgPSBFUlJfSU5WQUxJRF9MSU5LCiAgc3RhdGljIEVSUl9JTlZBTElEX0FQUExJTkcgPSBFUlJfSU5WQUxJRF9BUFBMSU5HCiAgc3RhdGljIEVSUl9JTlZBTElEX0FQUF9OQU1FID0gRVJSX0lOVkFMSURfQVBQX05BTUUKICBzdGF0aWMgRVJSX0lOVkFMSURfQVBQX1NUT1JBR0UgPSBFUlJfSU5WQUxJRF9BUFBfU1RPUkFHRQogIHN0YXRpYyBFUlJfSU5WQUxJRF9QUk9KRUNUX0RJUiA9IEVSUl9JTlZBTElEX1BST0pFQ1RfRElSCiAgc3RhdGljIEVSUl9JTlZBTElEX0dDX1JFU09VUkNFID0gRVJSX0lOVkFMSURfR0NfUkVTT1VSQ0UKICBzdGF0aWMgRVJSX0lOVkFMSURfQ09ORklHID0gRVJSX0lOVkFMSURfQ09ORklHCiAgc3RhdGljIEVSUl9JTlZBTElEX1RFTVBMQVRFID0gRVJSX0lOVkFMSURfVEVNUExBVEUKICBzdGF0aWMgRVJSX1BFUk1JU1NJT05fUkVRVUlSRUQgPSBFUlJfUEVSTUlTU0lPTl9SRVFVSVJFRAogIHN0YXRpYyBFUlJfSU5URVJOQUxfRVJST1IgPSBFUlJfSU5URVJOQUxfRVJST1IKICBzdGF0aWMgRVJSX1VOU1RBR0VEID0gRVJSX1VOU1RBR0VECiAgc3RhdGljIEVSUl9ESVJfTk9ORU1QVFkgPSBFUlJfRElSX05PTkVNUFRZCiAgc3RhdGljIEVSUl9PUEVSQVRJT05fRkFJTEVEID0gRVJSX09QRVJBVElPTl9GQUlMRUQKICBzdGF0aWMgRVJSX1NFQ1JFVF9OT1RfRk9VTkQgPSBFUlJfU0VDUkVUX05PVF9GT1VORAogIHN0YXRpYyBFUlJfQ09OTkVDVElPTiA9IEVSUl9DT05ORUNUSU9OCiAgc3RhdGljIEVSUl9JTlZBTElEX01BTklGRVNUID0gRVJSX0lOVkFMSURfTUFOSUZFU1QKICBzdGF0aWMgRVJSX0FTU0VSVElPTiA9IEVSUl9BU1NFUlRJT04KICBzdGF0aWMgRVJSX1VOS05PV04gPSBFUlJfVU5LTk9XTgogIHN0YXRpYyBFUlJfTEVHQUNZID0gRVJSX0xFR0FDWQogIHN0YXRpYyBrbm93biA9IGtub3duCiAgY29uc3RydWN0b3IgKG1zZywgZm4gPSBQZWFyRXJyb3IsIGluZm8gPSBudWxsLCBzdGFja2xlc3MgPSBmYWxzZSkgewogICAgc3VwZXIobXNnKQogICAgdGhpcy5jb2RlID0gZm4ubmFtZQogICAgdGhpcy5uYW1lID0gZm4ubmFtZQogICAgaWYgKHRoaXMuaW5mbyAhPT0gbnVsbCkgdGhpcy5pbmZvID0gaW5mbwogICAgaWYgKHN0YWNrbGVzcykgdGhpcy5zdGFjayA9IHRoaXMubWVzc2FnZQogICAgZWxzZSBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIGZuKQogIH0KfQoKZnVuY3Rpb24ga25vd24gKHByZWZpeCA9ICdFUlJfJywgLi4ucHJlZml4ZXMpIHsKICByZXR1cm4gWy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFBlYXJFcnJvcikuZmlsdGVyKChuYW1lKSA9PiBuYW1lLnN0YXJ0c1dpdGgocHJlZml4KSksIC4uLnByZWZpeGVzLmZsYXRNYXAoKHByZWZpeCkgPT4ga25vd24ocHJlZml4KSldCn0KCmZ1bmN0aW9uIEVSUl9JTlZBTElEX0lOUFVUIChtc2csIGluZm8gPSBudWxsKSB7CiAgcmV0dXJuIG5ldyBQZWFyRXJyb3IobXNnLCBFUlJfSU5WQUxJRF9JTlBVVCwgaW5mbykKfQoKZnVuY3Rpb24gRVJSX0lOVkFMSURfTElOSyAobXNnLCBpbmZvID0gbnVsbCkgewogIHJldHVybiBuZXcgUGVhckVycm9yKG1zZywgRVJSX0lOVkFMSURfTElOSywgaW5mbykKfQoKZnVuY3Rpb24gRVJSX0lOVkFMSURfQVBQTElORyAobXNnLCBpbmZvID0gbnVsbCkgewogIHJldHVybiBuZXcgUGVhckVycm9yKG1zZywgRVJSX0lOVkFMSURfQVBQTElORywgaW5mbykKfQoKZnVuY3Rpb24gRVJSX0lOVkFMSURfQVBQX05BTUUgKG1zZywgaW5mbyA9IG51bGwpIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9JTlZBTElEX0FQUF9OQU1FLCBpbmZvKQp9CgpmdW5jdGlvbiBFUlJfSU5WQUxJRF9BUFBfU1RPUkFHRSAobXNnLCBpbmZvID0gbnVsbCkgewogIHJldHVybiBuZXcgUGVhckVycm9yKG1zZywgRVJSX0lOVkFMSURfQVBQX1NUT1JBR0UsIGluZm8pCn0KCmZ1bmN0aW9uIEVSUl9JTlZBTElEX1BST0pFQ1RfRElSIChtc2csIGluZm8gPSBudWxsKSB7CiAgcmV0dXJuIG5ldyBQZWFyRXJyb3IobXNnLCBFUlJfSU5WQUxJRF9QUk9KRUNUX0RJUiwgaW5mbykKfQoKZnVuY3Rpb24gRVJSX0lOVkFMSURfR0NfUkVTT1VSQ0UgKG1zZywgaW5mbyA9IG51bGwpIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9JTlZBTElEX0dDX1JFU09VUkNFLCBpbmZvKQp9CgpmdW5jdGlvbiBFUlJfSU5WQUxJRF9DT05GSUcgKG1zZywgaW5mbyA9IG51bGwpIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9JTlZBTElEX0NPTkZJRywgaW5mbykKfQoKZnVuY3Rpb24gRVJSX0lOVkFMSURfVEVNUExBVEUgKG1zZywgaW5mbyA9IG51bGwpIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9JTlZBTElEX1RFTVBMQVRFLCBpbmZvKQp9CgpmdW5jdGlvbiBFUlJfUEVSTUlTU0lPTl9SRVFVSVJFRCAobXNnLCBpbmZvID0ge30pIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9QRVJNSVNTSU9OX1JFUVVJUkVELCBpbmZvKQp9CgpmdW5jdGlvbiBFUlJfU0VDUkVUX05PVF9GT1VORCAobXNnLCBpbmZvID0gbnVsbCkgewogIHJldHVybiBuZXcgUGVhckVycm9yKG1zZywgRVJSX1NFQ1JFVF9OT1RfRk9VTkQsIGluZm8pCn0KCmZ1bmN0aW9uIEVSUl9DT05ORUNUSU9OIChtc2csIGluZm8gPSBudWxsKSB7CiAgcmV0dXJuIG5ldyBQZWFyRXJyb3IobXNnLCBFUlJfQ09OTkVDVElPTiwgaW5mbykKfQoKZnVuY3Rpb24gRVJSX0lOVkFMSURfTUFOSUZFU1QgKG1zZywgaW5mbyA9IG51bGwpIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9JTlZBTElEX01BTklGRVNULCBpbmZvKQp9CgpmdW5jdGlvbiBFUlJfSU5URVJOQUxfRVJST1IgKG1zZywgaW5mbyA9IG51bGwpIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9JTlRFUk5BTF9FUlJPUiwgaW5mbykKfQoKZnVuY3Rpb24gRVJSX1VOU1RBR0VEIChtc2csIGluZm8gPSBudWxsKSB7CiAgcmV0dXJuIG5ldyBQZWFyRXJyb3IobXNnLCBFUlJfVU5TVEFHRUQsIGluZm8pCn0KCmZ1bmN0aW9uIEVSUl9ESVJfTk9ORU1QVFkgKG1zZywgaW5mbyA9IG51bGwpIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9ESVJfTk9ORU1QVFksIGluZm8pCn0KCmZ1bmN0aW9uIEVSUl9PUEVSQVRJT05fRkFJTEVEIChtc2csIGluZm8gPSB7fSkgewogIHJldHVybiBuZXcgUGVhckVycm9yKG1zZywgRVJSX09QRVJBVElPTl9GQUlMRUQsIGluZm8pCn0KCmZ1bmN0aW9uIEVSUl9BU1NFUlRJT04gKG1zZywgaW5mbyA9IG51bGwpIHsKICByZXR1cm4gbmV3IFBlYXJFcnJvcihtc2csIEVSUl9BU1NFUlRJT04sIGluZm8pCn0KCmZ1bmN0aW9uIEVSUl9VTktOT1dOIChtc2csIGluZm8gPSBudWxsKSB7CiAgcmV0dXJuIG5ldyBQZWFyRXJyb3IobXNnLCBFUlJfVU5LTk9XTiwgaW5mbykKfQoKZnVuY3Rpb24gRVJSX0xFR0FDWSAobXNnLCBpbmZvID0gbnVsbCkgewogIHJldHVybiBuZXcgUGVhckVycm9yKG1zZywgRVJSX0xFR0FDWSwgaW5mbywgdHJ1ZSkKfQoKbW9kdWxlLmV4cG9ydHMgPSBQZWFyRXJyb3IKJ3VzZSBzdHJpY3QnCmNvbnN0IHsgaXNCYXJlIH0gPSByZXF1aXJlKCd3aGljaC1ydW50aW1lJykKY29uc3QgZGVmYXVsdHMgPSByZXF1aXJlKCdzY3JpcHQtbGlua2VyL2RlZmF1bHRzJykKCmNvbnN0IGJtYXAgPSBpc0JhcmUKICA/IHsKICAgICAgZnM6ICdiYXJlLWZzJywKICAgICAgJ2ZzL3Byb21pc2VzJzogJ2JhcmUtZnMvcHJvbWlzZXMnLAogICAgICBwYXRoOiAnYmFyZS1wYXRoJywKICAgICAgb3M6ICdiYXJlLW9zJywKICAgICAgZXZlbnRzOiAnYmFyZS1ldmVudHMnLAogICAgICBodHRwOiAnYmFyZS1odHRwMScsCiAgICAgIGh0dHBzOiAnYmFyZS1odHRwMScsCiAgICAgIG1vZHVsZTogJ2JhcmUtbW9kdWxlJywKICAgICAgY2hpbGRfcHJvY2VzczogJ2JhcmUtc3VicHJvY2VzcycKICAgIH0KICA6IHt9Cgpjb25zdCBvdmVycmlkZXMgPSBbCiAgJ3BlYXInLCAnZWxlY3Ryb24nLAogICdjcmMtdW5pdmVyc2FsJywgJ3F1aWNrYml0LXVuaXZlcnNhbCcsICdzb2RpdW0tbmF0aXZlJywgJ3VkeC1uYXRpdmUnLCAncm9ja3NkYi1uYXRpdmUnLAogICdmcy1uYXRpdmUtZXh0ZW5zaW9ucycsICdhc3NlcnQnLCAnY29uc29sZScsICdldmVudHMnLCAnZnMnLCAnZnMvcHJvbWlzZXMnLCAnaHR0cCcsICdvcycsCiAgJ3BhdGgnLCAnY2hpbGRfcHJvY2VzcycsICdyZXBsJywgJ3VybCcsICd0dHknLCAnbW9kdWxlJywgJ3Byb2Nlc3MnLCAndGltZXJzJywgJ2luc3BlY3RvcicsCiAgJ2NyeXB0bycKXQoKY29uc3QgYnVpbHRpbnMgPSB7CiAgaGFzIChucykgewogICAgcmV0dXJuIG92ZXJyaWRlcy5pbmNsdWRlcyhucykgfHwgZGVmYXVsdHMuYnVpbHRpbnMuaGFzKG5zKQogIH0sCiAgZ2V0IChucykgewogICAgc3dpdGNoIChucykgewogICAgICBjYXNlICdjcmMtdW5pdmVyc2FsJzogcmV0dXJuIHJlcXVpcmUoJ2NyYy11bml2ZXJzYWwnKQogICAgICBjYXNlICdxdWlja2JpdC11bml2ZXJzYWwnOiByZXR1cm4gcmVxdWlyZSgncXVpY2tiaXQtdW5pdmVyc2FsJykKICAgICAgY2FzZSAnc29kaXVtLW5hdGl2ZSc6IHJldHVybiByZXF1aXJlKCdzb2RpdW0tbmF0aXZlJykKICAgICAgY2FzZSAndWR4LW5hdGl2ZSc6IHJldHVybiByZXF1aXJlKCd1ZHgtbmF0aXZlJykKICAgICAgY2FzZSAnZnMtbmF0aXZlLWV4dGVuc2lvbnMnOiByZXR1cm4gcmVxdWlyZSgnZnMtbmF0aXZlLWV4dGVuc2lvbnMnKQogICAgICBjYXNlICdyb2Nrc2RiLW5hdGl2ZSc6IHJldHVybiByZXF1aXJlKCdyb2Nrc2RiLW5hdGl2ZScpCiAgICAgIGRlZmF1bHQ6IHJldHVybiBPYmplY3QuaGFzT3duKGJtYXAsIG5zKSA/IHJlcXVpcmUoYm1hcFtuc10pIDogZGVmYXVsdHMuYnVpbHRpbnMuZ2V0KG5zKQogICAgfQogIH0sCiAga2V5cyAoKSB7IHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLmRlZmF1bHRzLmJ1aWx0aW5zLmtleXMoKSwgLi4ub3ZlcnJpZGVzXSkpIH0KfQoKY29uc3QgYmFyZUJ1aWx0aW5zID0gewogIGhhcyAobnMpIHsgcmV0dXJuIG5zID09PSAnZWxlY3Ryb24nIHx8IGRlZmF1bHRzLmJ1aWx0aW5zLmhhcyhucykgfSwKICBnZXQgKG5zKSB7IHJldHVybiBucyA9PT0gJ2VsZWN0cm9uJyA/IGJ1aWx0aW5zLmdldChucykgOiBkZWZhdWx0cy5idWlsdGlucy5nZXQobnMpIH0sCiAga2V5cyAoKSB7IHJldHVybiBbLi4uZGVmYXVsdHMuYnVpbHRpbnMua2V5cygpLCAnZWxlY3Ryb24nXSB9Cn0KCmNvbnN0IG1hcEltcG9ydCA9IGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gaWQgfQoKY29uc3QgcGxhdGZvcm0gPSB7CiAgc3ltYm9sOiBgcGxhdGZvcm0tJHtkZWZhdWx0cy5zeW1ib2x9YCwKICBwcm90b2NvbDogJ2hvbGVwdW5jaCcsCiAgbWFwIChpZCwgeyBwcm90b2NvbCwgaXNJbXBvcnQsIGlzQnVpbHRpbiwgaXNTb3VyY2VNYXAsIGlzQ29uc29sZSB9KSB7CiAgICBjb25zdCB0eXBlID0gaXNDb25zb2xlID8gcHJvdG9jb2wgOiAoaXNTb3VyY2VNYXAgPyAnbWFwJyA6IGlzSW1wb3J0ID8gJ2VzbScgOiAnY2pzJykKICAgIHJldHVybiBgJHtpc0J1aWx0aW4gPyAnL34nIDogJyd9JHtlbmNvZGVVUkkoaWQpfSske3Byb3RvY29sfSske3R5cGV9YAogIH0sCiAgbWFwSW1wb3J0LAogIHJ1bnRpbWVzOiBbJ25vZGUnLCAnaG9sZXB1bmNoJ10KfQoKY29uc3QgYXBwID0gewogIHN5bWJvbDogZGVmYXVsdHMuc3ltYm9sLAogIHByb3RvY29sOiBkZWZhdWx0cy5wcm90b2NvbCwKICBtYXAgKGlkLCB7IHByb3RvY29sLCBpc0ltcG9ydCwgaXNCdWlsdGluLCBpc1NvdXJjZU1hcCwgaXNDb25zb2xlIH0pIHsKICAgIGNvbnN0IHR5cGUgPSBpc0NvbnNvbGUgPyBwcm90b2NvbCA6IChpc1NvdXJjZU1hcCA/ICdtYXAnIDogaXNJbXBvcnQgPyAnZXNtJyA6ICdjanMnKQogICAgcmV0dXJuIGAke2lzQnVpbHRpbiA/ICcvficgOiAnJ30ke2VuY29kZVVSSShpZCl9KyR7cHJvdG9jb2x9KyR7dHlwZX1gCiAgfSwKICBtYXBJbXBvcnQsCiAgcnVudGltZXM6IFsnbm9kZScsICdob2xlcHVuY2gnXQp9Cgptb2R1bGUuZXhwb3J0cyA9IHsKICBvdmVycmlkZXMsCiAgYnVpbHRpbnMsCiAgYmFyZUJ1aWx0aW5zLAogIHBsYXRmb3JtLAogIGFwcAp9Cid1c2Ugc3RyaWN0Jwpjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJykKY29uc3QgeyBzcGF3biB9ID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpCmNvbnN0IHsgaXNXaW5kb3dzLCBpc0JhcmUgfSA9IHJlcXVpcmUoJ3doaWNoLXJ1bnRpbWUnKQpjb25zdCB7IGNvbW1hbmQgfSA9IHJlcXVpcmUoJ3BhcGFyYW0nKQpjb25zdCBiNGEgPSByZXF1aXJlKCdiNGEnKQpjb25zdCBQaXBlID0gaXNCYXJlCiAgPyByZXF1aXJlKCdiYXJlLXBpcGUnKQogIDogY2xhc3MgUGlwZSBleHRlbmRzIHJlcXVpcmUoJ25ldCcpLlNvY2tldCB7IGNvbnN0cnVjdG9yIChmZCkgeyBzdXBlcih7IGZkIH0pIH0gfQpjb25zdCBoeXBlcmNvcmVpZCA9IHJlcXVpcmUoJ2h5cGVyY29yZS1pZC1lbmNvZGluZycpCmNvbnN0IHsgUlVOVElNRSB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKQpjb25zdCBydW5kZWYgPSByZXF1aXJlKCcuL2NtZC9ydW4nKQpjb25zdCBwZWFyID0gcmVxdWlyZSgnLi9jbWQnKQpjb25zdCBvbnRlYXJkb3duID0gZ2xvYmFsLkJhcmUgPyByZXF1aXJlKCcuL3RlYXJkb3duJykgOiBub29wCmNvbnN0IHBsaW5rID0gcmVxdWlyZSgnLi9saW5rJykKY29uc3QgcHJvZ3JhbSA9IGdsb2JhbC5CYXJlIHx8IGdsb2JhbC5wcm9jZXNzCmNvbnN0IGtJUEMgPSBTeW1ib2woJ2lwYycpCmNvbnN0IHsgRVJSX0lOVkFMSURfSU5QVVQgfSA9IHJlcXVpcmUoJy4vZXJyb3JzJykKCmxldCBDT01QQVQgPSBmYWxzZQoKY2xhc3MgQVBJIHsKICAjaXBjID0gbnVsbAogICNzdGF0ZSA9IG51bGwKICAjdW5sb2FkaW5nID0gbnVsbAogICN0ZWFyZG93biA9IG51bGwKICAjdGVhcmRvd25zID0gW10KICAjb250ZWFyZG93biA9IG51bGwKICAjcmVmcyA9IDAKICAjcGlwZSA9IG51bGwKICBhcHAgPSBudWxsCiAgYXJndiA9IHByb2dyYW0uYXJndgogIHBpZCA9IHByb2dyYW0ucGlkCiAgc3RhdGljIFJUSSA9IGdsb2JhbC5QZWFyPy5jb25zdHJ1Y3Rvci5SVEkgPz8gbnVsbAogIHN0YXRpYyBJUEMgPSBrSVBDCiAgc3RhdGljIFJVTlRJTUUgPSBSVU5USU1FCiAgc3RhdGljIFJVTlRJTUVfQVJHViA9IFtdCiAgc3RhdGljIHNldCBDT01QQVQgKGNvbXBhdCkgewogICAgaWYgKGNvbXBhdCkgUGVhci5hcHAudGllciA9IFBlYXIuYXBwLmtleSA/ICdwcm9kdWN0aW9uJyA6ICdkZXYnCiAgICByZXR1cm4gKENPTVBBVCA9IGNvbXBhdCkKICB9CgogIHN0YXRpYyBnZXQgQ09NUEFUICgpIHsgcmV0dXJuIENPTVBBVCB9CiAgc3RhdGljIENVVE9WRVIgPSB0cnVlCiAgY29uc3RydWN0b3IgKGlwYywgc3RhdGUsIHsgdGVhcmRvd24gPSBvbnRlYXJkb3duIH0gPSB7fSkgewogICAgdGhpcy4jaXBjID0gaXBjCiAgICB0aGlzLiNzdGF0ZSA9IHN0YXRlCiAgICB0aGlzLiNyZWZzID0gMAogICAgdGhpcy4jdGVhcmRvd24gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyB0aGlzLiN1bmxvYWRpbmcgPSByZXNvbHZlIH0pCiAgICB0aGlzLiNvbnRlYXJkb3duID0gdGVhcmRvd24KICAgIHRoaXMua2V5ID0gdGhpcy4jc3RhdGUua2V5ID8gKHRoaXMuI3N0YXRlLmtleS50eXBlID09PSAnQnVmZmVyJyA/IEJ1ZmZlci5mcm9tKHRoaXMuI3N0YXRlLmtleS5kYXRhKSA6IHRoaXMuI3N0YXRlLmtleSkgOiBudWxsCiAgICB0aGlzLmFwcCA9IHN0YXRlLmNvbmZpZwogICAgdGhpcy4jb250ZWFyZG93bigoKSA9PiB0aGlzLiN1bmxvYWQoKSkKICAgIHRoaXMuI2lwYy51bnJlZigpCiAgfQoKICBnZXQgY29uZmlnICgpIHsKICAgIHJldHVybiB0aGlzLmFwcAogIH0KCiAgc2V0IGNvbmZpZyAodikgewogICAgcmV0dXJuICh0aGlzLmFwcCA9IHYpCiAgfQoKICBnZXQgW2tJUENdICgpIHsgcmV0dXJuIHRoaXMuI2lwYyB9CgogIGdldCB3b3JrZXIgKCkgewogICAgaWYgKCF0aGlzLmNvbnN0cnVjdG9yLkNPTVBBVCkgY29uc29sZS5lcnJvcignWyBERVBSRUNBVEVEIF0gUGVhci53b3JrZXIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkICh1c2UgcGVhci1ydW4gJiBwZWFyLXBpcGUpJykKICAgIGNvbnN0IHN0YXRlID0gdGhpcy4jc3RhdGUKICAgIGNvbnN0IHJlZiA9IHRoaXMuI3JlZi5iaW5kKHRoaXMpCiAgICBjb25zdCB1bnJlZiA9IHRoaXMuI3VucmVmLmJpbmQodGhpcykKICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5jb25zdHJ1Y3RvcgogICAgcmV0dXJuIG5ldyBjbGFzcyBEZXByZWNhdGVkV29ya2VyIHsKICAgICAgI3BpcGUgPSBudWxsCiAgICAgIHBpcGUgKCkgewogICAgICAgIGlmICghdGhpcy5jb25zdHJ1Y3Rvci5DT01QQVQpIGNvbnNvbGUuZXJyb3IoJ1sgREVQUkVDQVRFRCBdIFBlYXIud29ya2VyLnBpcGUoKSBpcyBub3cgcGVhci1waXBlJykKICAgICAgICBpZiAodGhpcy4jcGlwZSAhPT0gbnVsbCkgcmV0dXJuIHRoaXMuI3BpcGUKICAgICAgICBjb25zdCBmZCA9IDMKICAgICAgICB0cnkgewogICAgICAgICAgY29uc3QgaGFzUGlwZSA9IGlzV2luZG93cyA/IGZzLmZzdGF0U3luYyhmZCkuaXNGSUZPKCkgOiBmcy5mc3RhdFN5bmMoZmQpLmlzU29ja2V0KCkKICAgICAgICAgIGlmIChoYXNQaXBlID09PSBmYWxzZSkgcmV0dXJuIG51bGwKICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfQogICAgICAgIGNvbnN0IHBpcGUgPSBuZXcgUGlwZShmZCkKICAgICAgICBwaXBlLm9uKCdlbmQnLCAoKSA9PiB7IFBlYXIuZXhpdCgpIH0pCiAgICAgICAgcGlwZS5vbmNlKCdjbG9zZScsICgpID0+IHsgUGVhci5leGl0KCkgfSkKICAgICAgICB0aGlzLiNwaXBlID0gcGlwZQogICAgICAgIHJldHVybiBwaXBlCiAgICAgIH0KCiAgICAgIHJ1biAobGluaywgYXJncyA9IFtdKSB7CiAgICAgICAgaWYgKGxpbmsuc3RhcnRzV2l0aCgncGVhcjovL2RldicpKSBsaW5rID0gbGluay5zbGljZSgwLCAxMCkKICAgICAgICBlbHNlIGlmIChsaW5rLnN0YXJ0c1dpdGgoJ3BlYXI6ZGV2JykpIGxpbmsgPSBsaW5rLnNsaWNlKDAsIDgpCiAgICAgICAgY29uc3QgeyBSVU5USU1FLCBSVU5USU1FX0FSR1YsIFJUSSB9ID0gc2V0dGluZ3MKICAgICAgICBjb25zdCBwYXJzZWQgPSBwbGluay5wYXJzZShsaW5rKQogICAgICAgIGNvbnN0IHsga2V5LCBmb3JrLCBsZW5ndGggfSA9IHBhcnNlZC5kcml2ZQogICAgICAgIGNvbnN0IHsga2V5OiBhcHBLZXkgfSA9IHN0YXRlLmFwcGxpbmsgPyAocGxpbmsucGFyc2Uoc3RhdGUuYXBwbGluaykpLmRyaXZlIDoge30KICAgICAgICBpZiAoYXBwS2V5ICYmIGtleSAmJiBiNGEuZXF1YWxzKGtleSwgYXBwS2V5KSAmJiBmb3JrID09PSBudWxsICYmIGxlbmd0aCA9PT0gbnVsbCkgewogICAgICAgICAgbGluayA9IGBwZWFyOi8vJHtzdGF0ZS52ZXJzaW9uPy5mb3JrfS4ke3N0YXRlLnZlcnNpb24/Lmxlbmd0aH0uJHtoeXBlcmNvcmVpZC5lbmNvZGUoa2V5KX0ke3BhcnNlZC5wYXRobmFtZSB8fCAnJ31gCiAgICAgICAgfQogICAgICAgIGNvbnN0IGFyZ3YgPSBwZWFyKHByb2dyYW0uYXJndi5zbGljZSgxKSkucmVzdAogICAgICAgIGNvbnN0IHBhcnNlciA9IGNvbW1hbmQoJ3J1bicsIC4uLnJ1bmRlZikKICAgICAgICBjb25zdCBjbWQgPSBwYXJzZXIucGFyc2UoYXJndiwgeyBzeW5jOiB0cnVlIH0pCiAgICAgICAgY29uc3QgaW5qZWN0ID0gW2xpbmtdCiAgICAgICAgaWYgKCFjbWQuZmxhZ3MudHJ1c3RlZCkgaW5qZWN0LnVuc2hpZnQoJy0tdHJ1c3RlZCcpCiAgICAgICAgaWYgKFJUSS5zdGFydElkKSBpbmplY3QudW5zaGlmdCgnLS1wYXJlbnQnLCBSVEkuc3RhcnRJZCkKICAgICAgICBhcmd2Lmxlbmd0aCA9IGNtZC5pbmRpY2VzLmFyZ3MubGluawogICAgICAgIGFyZ3YucHVzaCguLi5pbmplY3QpCiAgICAgICAgYXJndi51bnNoaWZ0KCdydW4nKQogICAgICAgIGxldCBsaW5rc0luZGV4ID0gY21kLmluZGljZXMuZmxhZ3MubGlua3MKICAgICAgICBjb25zdCBsaW5rc0VsZW1lbnRzID0gbGlua3NJbmRleCA+IDAgPyAoY21kLmZsYWdzLmxpbmtzID09PSBhcmd2W2xpbmtzSW5kZXhdKSA/IDIgOiAxIDogMAogICAgICAgIGlmIChjbWQuaW5kaWNlcy5mbGFncy5zdGFydElkID4gMCkgewogICAgICAgICAgYXJndi5zcGxpY2UoY21kLmluZGljZXMuZmxhZ3Muc3RhcnRJZCwgMSkKICAgICAgICAgIGlmIChsaW5rc0luZGV4ID4gY21kLmluZGljZXMuZmxhZ3Muc3RhcnRJZCkgbGlua3NJbmRleCAtPSBsaW5rc0VsZW1lbnRzCiAgICAgICAgfQogICAgICAgIGlmIChsaW5rc0luZGV4ID4gMCkgYXJndi5zcGxpY2UobGlua3NJbmRleCwgbGlua3NFbGVtZW50cykKICAgICAgICBjb25zdCBzcCA9IHNwYXduKFJVTlRJTUUsIFsuLi5SVU5USU1FX0FSR1YsIC4uLmFyZ3YsIC4uLmFyZ3NdLCB7CiAgICAgICAgICBzdGRpbzogWydpbmhlcml0JywgJ2luaGVyaXQnLCAnaW5oZXJpdCcsICdvdmVybGFwcGVkJ10sCiAgICAgICAgICB3aW5kb3dzSGlkZTogdHJ1ZQogICAgICAgIH0pCiAgICAgICAgcmVmKCkKICAgICAgICBzcC5vbmNlKCdleGl0JywgKGV4aXRDb2RlKSA9PiB7CiAgICAgICAgICBpZiAoZXhpdENvZGUgIT09IDApIHBpcGUuZW1pdCgnY3Jhc2gnLCB7IGV4aXRDb2RlIH0pCiAgICAgICAgICB1bnJlZigpCiAgICAgICAgfSkKICAgICAgICBjb25zdCBwaXBlID0gc3Auc3RkaW9bM10KICAgICAgICBwaXBlLm9uKCdlbmQnLCAoKSA9PiB7IHBpcGUuZW5kKCkgfSkKICAgICAgICByZXR1cm4gcGlwZQogICAgICB9CiAgICB9KCkKICB9CgogICNyZWYgKCkgewogICAgdGhpcy4jcmVmcysrCiAgICBpZiAodGhpcy4jcmVmcyA9PT0gMSkgewogICAgICB0aGlzLiNpcGMucmVmKCkKICAgIH0KICB9CgogICN1bnJlZiAoKSB7CiAgICB0aGlzLiNyZWZzLS0KICAgIGlmICh0aGlzLiNyZWZzID09PSAwKSB7CiAgICAgIHRoaXMuI2lwYy51bnJlZigpCiAgICB9CiAgfQoKICBhc3luYyAjdW5sb2FkICgpIHsKICAgIHRoaXMuI3VubG9hZGluZygpCgogICAgdGhpcy4jdGVhcmRvd25zLnNvcnQoKGEsIGIpID0+IGEucG9zaXRpb24gLSBiLnBvc2l0aW9uKQogICAgZm9yIChjb25zdCB0ZWFyZG93biBvZiB0aGlzLiN0ZWFyZG93bnMpIHRoaXMuI3RlYXJkb3duID0gdGhpcy4jdGVhcmRvd24udGhlbih0ZWFyZG93bi5mbikKCiAgICBjb25zdCBNQVhfVEVBUkRPV05fV0FJVCA9IDE1MDAwCiAgICBsZXQgdGltZW91dCA9IG51bGwKICAgIGxldCB0aW1lZG91dCA9IGZhbHNlCiAgICBsZXQgcmVqZWN0ZWQgPSBudWxsCiAgICBjb25zdCBjb3VudGRvd24gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgdGltZWRvdXQgPSB0cnVlCiAgICAgICAgcmVzb2x2ZSgpCiAgICAgIH0sIE1BWF9URUFSRE9XTl9XQUlUKQogICAgfSkKICAgIHRoaXMuI3RlYXJkb3duLmZpbmFsbHkoKCkgPT4geyBjbGVhclRpbWVvdXQodGltZW91dCkgfSkKICAgIGF3YWl0IFByb21pc2UucmFjZShbdGhpcy4jdGVhcmRvd24sIGNvdW50ZG93bl0pLmNhdGNoKChlcnIpID0+IHsKICAgICAgcmVqZWN0ZWQgPSBlcnIKICAgIH0pCiAgICBpZiAodGltZWRvdXQgfHwgcmVqZWN0ZWQpIHsKICAgICAgaWYgKHRpbWVkb3V0KSBjb25zb2xlLmVycm9yKGBNYXggdGVhcmRvd24gd2FpdCByZWFjaGVkIGFmdGVyICR7TUFYX1RFQVJET1dOX1dBSVR9IG1zLiBFeGl0aW5nLi4uYCkKICAgICAgaWYgKHJlamVjdGVkKSBjb25zb2xlLmVycm9yKGAke3JlamVjdGVkfS4gVXNlciB0ZWFyZG93biB0aHJldy4gRXhpdGluZy4uLmApCiAgICAgIGlmIChnbG9iYWwuQmFyZSkgewogICAgICAgIGdsb2JhbC5CYXJlLmV4aXQoKQogICAgICB9IGVsc2UgewogICAgICAgIGNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZSgnZWxlY3Ryb24nKQogICAgICAgIGVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmQoJ2FwcC1leGl0JykgLy8gZ3JhY2VmdWwgZWxlY3Ryb24gc2h1dGRvd24KICAgICAgfQogICAgfQogIH0KCiAgYXN5bmMgI3JlZnRyYWNrIChwcm9taXNlKSB7CiAgICB0aGlzLiNyZWYoKQogICAgdHJ5IHsKICAgICAgcmV0dXJuIGF3YWl0IHByb21pc2UKICAgIH0gZmluYWxseSB7CiAgICAgIHRoaXMuI3VucmVmKCkKICAgIH0KICB9CgogIGdldCBwaXBlICgpIHsKICAgIGlmICh0aGlzLiNwaXBlICE9PSBudWxsKSByZXR1cm4gdGhpcy4jcGlwZQogICAgY29uc3QgZmQgPSAzCiAgICB0cnkgewogICAgICBjb25zdCBoYXNQaXBlID0gaXNXaW5kb3dzID8gZnMuZnN0YXRTeW5jKGZkKS5pc0ZJRk8oKSA6IGZzLmZzdGF0U3luYyhmZCkuaXNTb2NrZXQoKQogICAgICBpZiAoaGFzUGlwZSA9PT0gZmFsc2UpIHJldHVybiBudWxsCiAgICB9IGNhdGNoIHsKICAgICAgcmV0dXJuIG51bGwKICAgIH0KICAgIGNvbnN0IHBpcGUgPSBuZXcgUGlwZShmZCkKICAgIHBpcGUub24oJ2VuZCcsICgpID0+IHsgUGVhci5leGl0KCkgfSkKICAgIHBpcGUub25jZSgnY2xvc2UnLCAoKSA9PiB7IFBlYXIuZXhpdCgpIH0pCiAgICB0aGlzLiNwaXBlID0gcGlwZQogICAgcmV0dXJuIHBpcGUKICB9CgogIHJ1biAobGluaywgYXJncyA9IFtdKSB7CiAgICBpZiAobGluay5zdGFydHNXaXRoKCdwZWFyOi8vZGV2JykpIGxpbmsgPSBsaW5rLnNsaWNlKDAsIDEwKQogICAgZWxzZSBpZiAobGluay5zdGFydHNXaXRoKCdwZWFyOmRldicpKSBsaW5rID0gbGluay5zbGljZSgwLCA4KQogICAgY29uc3QgeyBSVU5USU1FLCBSVU5USU1FX0FSR1YsIFJUSSB9ID0gdGhpcy5jb25zdHJ1Y3RvcgogICAgY29uc3QgcGFyc2VkID0gcGxpbmsucGFyc2UobGluaykKICAgIGNvbnN0IHsga2V5LCBmb3JrLCBsZW5ndGggfSA9IHBhcnNlZC5kcml2ZQogICAgY29uc3QgeyBrZXk6IGFwcEtleSB9ID0gdGhpcy4jc3RhdGUuYXBwbGluayA/IChwbGluay5wYXJzZSh0aGlzLiNzdGF0ZS5hcHBsaW5rKSkuZHJpdmUgOiB7fQogICAgaWYgKGFwcEtleSAmJiBrZXkgJiYgYjRhLmVxdWFscyhrZXksIGFwcEtleSkgJiYgZm9yayA9PT0gbnVsbCAmJiBsZW5ndGggPT09IG51bGwpIHsKICAgICAgbGluayA9IGBwZWFyOi8vJHt0aGlzLiNzdGF0ZS52ZXJzaW9uPy5mb3JrfS4ke3RoaXMuI3N0YXRlLnZlcnNpb24/Lmxlbmd0aH0uJHtoeXBlcmNvcmVpZC5lbmNvZGUoa2V5KX0ke3BhcnNlZC5wYXRobmFtZSB8fCAnJ31gCiAgICB9CiAgICBjb25zdCBhcmd2ID0gcGVhcihwcm9ncmFtLmFyZ3Yuc2xpY2UoMSkpLnJlc3QKICAgIGNvbnN0IHBhcnNlciA9IGNvbW1hbmQoJ3J1bicsIC4uLnJ1bmRlZikKICAgIGNvbnN0IGNtZCA9IHBhcnNlci5wYXJzZShhcmd2LCB7IHN5bmM6IHRydWUgfSkKICAgIGNvbnN0IGluamVjdCA9IFtsaW5rXQogICAgaWYgKCFjbWQuZmxhZ3MudHJ1c3RlZCkgaW5qZWN0LnVuc2hpZnQoJy0tdHJ1c3RlZCcpCiAgICBpZiAoUlRJLnN0YXJ0SWQpIGluamVjdC51bnNoaWZ0KCctLXBhcmVudCcsIFJUSS5zdGFydElkKQogICAgYXJndi5sZW5ndGggPSBjbWQuaW5kaWNlcy5hcmdzLmxpbmsKICAgIGFyZ3YucHVzaCguLi5pbmplY3QpCiAgICBhcmd2LnVuc2hpZnQoJ3J1bicpCiAgICBsZXQgbGlua3NJbmRleCA9IGNtZC5pbmRpY2VzLmZsYWdzLmxpbmtzCiAgICBjb25zdCBsaW5rc0VsZW1lbnRzID0gbGlua3NJbmRleCA+IDAgPyAoY21kLmZsYWdzLmxpbmtzID09PSBhcmd2W2xpbmtzSW5kZXhdKSA/IDIgOiAxIDogMAogICAgaWYgKGNtZC5pbmRpY2VzLmZsYWdzLnN0YXJ0SWQgPiAwKSB7CiAgICAgIGFyZ3Yuc3BsaWNlKGNtZC5pbmRpY2VzLmZsYWdzLnN0YXJ0SWQsIDEpCiAgICAgIGlmIChsaW5rc0luZGV4ID4gY21kLmluZGljZXMuZmxhZ3Muc3RhcnRJZCkgbGlua3NJbmRleCAtPSBsaW5rc0VsZW1lbnRzCiAgICB9CiAgICBpZiAobGlua3NJbmRleCA+IDApIGFyZ3Yuc3BsaWNlKGxpbmtzSW5kZXgsIGxpbmtzRWxlbWVudHMpCiAgICBjb25zdCBzcCA9IHNwYXduKFJVTlRJTUUsIFsuLi5SVU5USU1FX0FSR1YsIC4uLmFyZ3YsIC4uLmFyZ3NdLCB7CiAgICAgIHN0ZGlvOiBbJ2luaGVyaXQnLCAnaW5oZXJpdCcsICdpbmhlcml0JywgJ292ZXJsYXBwZWQnXSwKICAgICAgd2luZG93c0hpZGU6IHRydWUKICAgIH0pCiAgICB0aGlzLiNyZWYoKQogICAgc3Aub25jZSgnZXhpdCcsIChleGl0Q29kZSkgPT4gewogICAgICBpZiAoZXhpdENvZGUgIT09IDApIHBpcGUuZW1pdCgnY3Jhc2gnLCB7IGV4aXRDb2RlIH0pCiAgICAgIHRoaXMuI3VucmVmKCkKICAgIH0pCiAgICBjb25zdCBwaXBlID0gc3Auc3RkaW9bM10KICAgIHBpcGUub24oJ2VuZCcsICgpID0+IHBpcGUuZW5kKCkpCiAgICByZXR1cm4gcGlwZQogIH0KCiAgbWVzc2FnZSA9IChtc2cpID0+IHRoaXMuI3JlZnRyYWNrKHRoaXMuI2lwYy5tZXNzYWdlKG1zZykpCgogIG1lc3NhZ2VzID0gKHBhdHRlcm4sIGxpc3RlbmVyKSA9PiB7CiAgICBpZiAodHlwZW9mIHBhdHRlcm4gPT09ICdmdW5jdGlvbicpIHsKICAgICAgbGlzdGVuZXIgPSBwYXR0ZXJuCiAgICAgIHBhdHRlcm4gPSB7fQogICAgfQogICAgdGhpcy4jcmVmKCkKICAgIGNvbnN0IHN1YnNjcmliZXIgPSB0aGlzLiNpcGMubWVzc2FnZXMocGF0dGVybikKICAgIHN1YnNjcmliZXIub24oJ2Nsb3NlJywgKCkgPT4gdGhpcy4jdW5yZWYoKSkKICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHN1YnNjcmliZXIub24oJ2RhdGEnLCBsaXN0ZW5lcikKICAgIHJldHVybiBzdWJzY3JpYmVyCiAgfQoKICBjaGVja3BvaW50ID0gKHN0YXRlKSA9PiB7CiAgICB0aGlzLmFwcC5jaGVja3BvaW50ID0gc3RhdGUKICAgIHJldHVybiB0aGlzLiNyZWZ0cmFjayh0aGlzLiNpcGMuY2hlY2twb2ludChzdGF0ZSkpCiAgfQoKICB2ZXJzaW9ucyA9ICgpID0+IHRoaXMuI3JlZnRyYWNrKHRoaXMuI2lwYy52ZXJzaW9ucygpKQoKICB1cGRhdGVkID0gKCkgPT4gewogICAgaWYgKHR5cGVvZiB0aGlzLiNpcGMudXBkYXRlZCA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHRoaXMuI3JlZnRyYWNrKHRoaXMuI2lwYy51cGRhdGVkKCkpCiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkKICB9CgogIGdldCA9IChrZXksIG9wdHMgPSB7fSkgPT4gdGhpcy4jcmVmdHJhY2sodGhpcy4jaXBjLmdldCh7IGtleSwgLi4ub3B0cyB9KSkKCiAgZXhpc3RzID0gKGtleSkgPT4gdGhpcy4jcmVmdHJhY2sodGhpcy4jaXBjLmV4aXN0cyh7IGtleSB9KSkKCiAgY29tcGFyZSA9IChrZXlBLCBrZXlCKSA9PiB0aGlzLiNyZWZ0cmFjayh0aGlzLiNpcGMuY29tcGFyZSh7IGtleUEsIGtleUIgfSkpCgogIHJlc3RhcnQgPSBhc3luYyAob3B0cyA9IHt9KSA9PiB7CiAgICBpZiAodGhpcy4jc3RhdGUudWkgPT09IG51bGwpIHRocm93IG5ldyBFcnJvcignUGVhci5yZXN0YXJ0IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRlcm1pbmFsIGFwcHMnKQogICAgcmV0dXJuIHRoaXMuI3JlZnRyYWNrKHRoaXMuI2lwYy5yZXN0YXJ0KG9wdHMpKQogIH0KCiAgcmVsb2FkID0gYXN5bmMgKG9wdHMgPSB7fSkgPT4gewogICAgaWYgKHRoaXMuI3N0YXRlLnVpID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ1BlYXIucmVsb2FkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRlcm1pbmFsIGFwcHMnKQogICAgaWYgKG9wdHMucGxhdGZvcm0pIHRocm93IG5ldyBFcnJvcignUGxhdGZvcm0gUGVhci5yZWxvYWQgaXMgbm90IHN1cHBvcnRlZCBmb3IgZGVza3RvcCBhcHBzJykKCiAgICBnbG9iYWwubG9jYXRpb24ucmVsb2FkKCkKICB9CgogIHVwZGF0ZXMgPSAobGlzdGVuZXIpID0+IHRoaXMubWVzc2FnZXMoeyB0eXBlOiAncGVhci91cGRhdGVzJyB9LCBsaXN0ZW5lcikKCiAgd2FrZXVwcyA9IChsaXN0ZW5lcikgPT4gdGhpcy5tZXNzYWdlcyh7IHR5cGU6ICdwZWFyL3dha2V1cCcgfSwgbGlzdGVuZXIpCgogIHRlYXJkb3duID0gKGZuID0gKCkgPT4ge30sIHBvc2l0aW9uID0gMCkgPT4gewogICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgRVJSX0lOVkFMSURfSU5QVVQoJ3RlYXJkb3duIGV4cGVjdHMgZnVuY3Rpb24nKQoKICAgIGNvbnN0IGlzVmFsaWRQb3NpdGlvbiA9IE51bWJlci5pc0ludGVnZXIocG9zaXRpb24pIHx8IHBvc2l0aW9uID09PSBJbmZpbml0eSB8fCBwb3NpdGlvbiA9PT0gLUluZmluaXR5CiAgICBpZiAoIWlzVmFsaWRQb3NpdGlvbikgdGhyb3cgRVJSX0lOVkFMSURfSU5QVVQoJ3RlYXJkb3duIHBvc2l0aW9uIG11c3QgYmUgaW50ZWdlcicpCgogICAgdGhpcy4jdGVhcmRvd25zLnB1c2goeyBmbiwgcG9zaXRpb24gfSkKICB9CgogIGV4aXQgPSAoY29kZSkgPT4gewogICAgcHJvZ3JhbS5leGl0Q29kZSA9IGNvZGUKICAgIHRoaXMuI3VubG9hZCgpLmZpbmFsbHkoKCkgPT4gewogICAgICByZXR1cm4gcHJvZ3JhbS5leGl0KGNvZGUpCiAgICB9KQogIH0KCiAgc2V0IGV4aXRDb2RlIChjb2RlKSB7IHByb2dyYW0uZXhpdENvZGUgPSBjb2RlIH0KICBnZXQgZXhpdENvZGUgKCkgeyByZXR1cm4gcHJvZ3JhbS5leGl0Q29kZSB9CgogIGR1bXAgPSAobGluaywgb3B0cyA9IHt9KSA9PiB7CiAgICB0aGlzLiNyZWYoKQogICAgY29uc3Qgc3RyZWFtID0gdGhpcy4jaXBjLmR1bXAoeyAuLi5vcHRzLCBsaW5rIH0pCiAgICBzdHJlYW0ub24oJ2Nsb3NlJywgKCkgPT4gdGhpcy4jdW5yZWYoKSkKICAgIHJldHVybiBzdHJlYW0KICB9CgogIHN0YWdlID0gKGxpbmssIG9wdHMgPSB7fSkgPT4gewogICAgdGhpcy4jcmVmKCkKICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuI2lwYy5zdGFnZSh7IC4uLm9wdHMsIGxpbmsgfSkKICAgIHN0cmVhbS5vbignY2xvc2UnLCAoKSA9PiB0aGlzLiN1bnJlZigpKQogICAgcmV0dXJuIHN0cmVhbQogIH0KCiAgcmVsZWFzZSA9IChsaW5rLCBvcHRzID0ge30pID0+IHsKICAgIHRoaXMuI3JlZigpCiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLiNpcGMucmVsZWFzZSh7IC4uLm9wdHMsIGxpbmsgfSkKICAgIHN0cmVhbS5vbignY2xvc2UnLCAoKSA9PiB0aGlzLiN1bnJlZigpKQogICAgcmV0dXJuIHN0cmVhbQogIH0KCiAgaW5mbyA9IChsaW5rLCBvcHRzID0ge30pID0+IHsKICAgIHRoaXMuI3JlZigpCiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLiNpcGMuaW5mbyh7IC4uLm9wdHMsIGxpbmsgfSkKICAgIHN0cmVhbS5vbignY2xvc2UnLCAoKSA9PiB0aGlzLiN1bnJlZigpKQogICAgcmV0dXJuIHN0cmVhbQogIH0KCiAgc2VlZCA9IChsaW5rLCBvcHRzID0ge30pID0+IHsKICAgIHRoaXMuI3JlZigpCiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLiNpcGMuc2VlZCh7IC4uLm9wdHMsIGxpbmsgfSkKICAgIHN0cmVhbS5vbignY2xvc2UnLCAoKSA9PiB7IHRoaXMuI3VucmVmKCkgfSkKICAgIHJldHVybiBzdHJlYW0KICB9Cn0KCmZ1bmN0aW9uIG5vb3AgKCkge30KCm1vZHVsZS5leHBvcnRzID0gQVBJCid1c2Ugc3RyaWN0Jwpjb25zdCBjb25zdGFudHMgPSByZXF1aXJlKCcuL2NvbnN0YW50cycpCmNvbnN0IHsgRVJSX0lOVkFMSURfTElOSyB9ID0gcmVxdWlyZSgnLi9lcnJvcnMnKQpjb25zdCBQZWFyTGluayA9IHJlcXVpcmUoJ3BlYXItbGluaycpCm1vZHVsZS5leHBvcnRzID0gbmV3IFBlYXJMaW5rKGNvbnN0YW50cy5BTElBU0VTLCBFUlJfSU5WQUxJRF9MSU5LKQp7CiAgIm5hbWUiOiAicGVhci1hcGkiLAogICJ2ZXJzaW9uIjogIjEuMjguNiIsCiAgImRlc2NyaXB0aW9uIjogIlBlYXIgQVBJIEJhc2UgJiBJbnRlZ3JhdGlvbiBNb2R1bGUiLAogICJtYWluIjogImluZGV4LmpzIiwKICAic2NyaXB0cyI6IHsKICAgICJsaW50IjogInN0YW5kYXJkIiwKICAgICJsaW50OmZpeCI6ICJzdGFuZGFyZCAtLWZpeCIsCiAgICAidGVzdDpnZW4iOiAiYnJpdHRsZSAtciB0ZXN0L2FsbC5qcyB0ZXN0LyoudGVzdC5qcyIsCiAgICAidGVzdCI6ICJicml0dGxlLWJhcmUgdGVzdC9hbGwuanMiLAogICAgInRlc3Q6bm9kZSI6ICJicml0dGxlLW5vZGUgdGVzdC9hbGwuanMiCiAgfSwKICAiZmlsZXMiOiBbCiAgICAiQ0hBTkdFTE9HLm1kIiwKICAgICJjbWQvIiwKICAgICJjb25zdGFudHMuanMiLAogICAgImNyYXNoZXIuanMiLAogICAgImVycm9ycy5qcyIsCiAgICAiZ3Vuay5qcyIsCiAgICAiaW5kZXguanMiLAogICAgImxvZ2dlci5qcyIsCiAgICAib3B3YWl0LmpzIiwKICAgICJsaW5rLmpzIiwKICAgICJzaGVsbC5qcyIsCiAgICAic3RhdGUuanMiLAogICAgInRlYXJkb3duLmpzIiwKICAgICJ0ZXJtaW5hbC5qcyIsCiAgICAidHJhbnNmb3JtLmpzIiwKICAgICJ0cnlib290LmpzIgogIF0sCiAgImtleXdvcmRzIjogWwogICAgInBlYXIiLAogICAgInBlYXIgcnVudGltZSIsCiAgICAicGVlci10by1wZWVyIiwKICAgICJwMnAiLAogICAgImFwaSIsCiAgICAiaW50ZWdyYXRpb24iLAogICAgImV4dGVuc2lvbiIKICBdLAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAic3RhbmRhcmQiOiB7CiAgICAiZ2xvYmFscyI6IFsKICAgICAgIlBlYXIiLAogICAgICAiQmFyZSIKICAgIF0KICB9LAogICJpbXBvcnRzIjogewogICAgImNoaWxkX3Byb2Nlc3MiOiB7CiAgICAgICJiYXJlIjogImJhcmUtc3VicHJvY2VzcyIKICAgIH0sCiAgICAicHJvY2VzcyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1wcm9jZXNzIgogICAgfSwKICAgICJmcyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1mcyIKICAgIH0sCiAgICAicGF0aCI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1wYXRoIgogICAgfSwKICAgICJvcyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1vcyIKICAgIH0sCiAgICAicmVhZGxpbmUiOiB7CiAgICAgICJiYXJlIjogImJhcmUtcmVhZGxpbmUiCiAgICB9LAogICAgImV2ZW50cyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1ldmVudHMiCiAgICB9LAogICAgInR0eSI6IHsKICAgICAgImJhcmUiOiAiYmFyZS10dHkiCiAgICB9LAogICAgIm1vZHVsZSI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1tb2R1bGUiCiAgICB9CiAgfSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImI0YSI6ICJeMS42LjciLAogICAgImJhcmUtZGFlbW9uIjogIl4xLjIuMCIsCiAgICAiYmFyZS1lbnYiOiAiXjMuMC4wIiwKICAgICJiYXJlLWZvcm1hdCI6ICJeMS4wLjEiLAogICAgImJhcmUtaHJ0aW1lIjogIl4yLjAuMTAiLAogICAgImJhcmUtb3MiOiAiXjMuNC4wIiwKICAgICJiYXJlLXBhdGgiOiAiXjMuMC4wIiwKICAgICJiYXJlLXBpcGUiOiAiXjQuMC4zIiwKICAgICJiYXJlLXJlYWRsaW5lIjogIl4xLjAuNyIsCiAgICAiYmFyZS1zaWduYWxzIjogIl40LjAuMiIsCiAgICAiYmFyZS1zdHJlYW0iOiAiXjIuNi41IiwKICAgICJiYXJlLXN1YnByb2Nlc3MiOiAiXjUuMC4yIiwKICAgICJiYXJlLXR0eSI6ICJeNS4wLjEiLAogICAgImNoaWxkX3Byb2Nlc3MiOiAibnBtOmJhcmUtbm9kZS1jaGlsZC1wcm9jZXNzIiwKICAgICJmcyI6ICJucG06YmFyZS1ub2RlLWZzIiwKICAgICJoeXBlcmNvcmUtaWQtZW5jb2RpbmciOiAiXjEuMy4wIiwKICAgICJwYXBhcmFtIjogIl4xLjguNSIsCiAgICAicGF0aCI6ICJucG06YmFyZS1ub2RlLXBhdGgiLAogICAgInBlYXItbGluayI6ICJeMy4xLjAiLAogICAgInNhZmV0eS1jYXRjaCI6ICJeMS4wLjIiLAogICAgInNvZGl1bS1uYXRpdmUiOiAiXjUuMC42IiwKICAgICJzdHJlYW14IjogIl4yLjIyLjAiLAogICAgInRpbnktYnl0ZS1zaXplIjogIl4xLjEuMCIsCiAgICAidXJsLWZpbGUtdXJsIjogIl4xLjAuNCIsCiAgICAid2hpY2gtcnVudGltZSI6ICJeMS4yLjEiLAogICAgInozMiI6ICJeMS4xLjAiCiAgfSwKICAicGVlckRlcGVuZGVuY2llcyI6IHsKICAgICJoeXBlcmNvcmUtY3J5cHRvIjogIl4zLjUuMCIsCiAgICAic2NyaXB0LWxpbmtlciI6ICJeMi41LjQiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtbW9kdWxlIjogIl40LjguNSIsCiAgICAiYmFyZS1wcm9jZXNzIjogIl40LjIuMSIsCiAgICAiYnJpdHRsZSI6ICJeMy4xNi4yIiwKICAgICJoeXBlcmNvcmUtY3J5cHRvIjogIl4zLjUuMCIsCiAgICAiaWFtYnVzIjogIl4xLjAuMyIsCiAgICAicGVhci1pcGMiOiAiXjYuNS4wIiwKICAgICJzY3JpcHQtbGlua2VyIjogIl4yLjUuNCIsCiAgICAic3RhbmRhcmQiOiAiXjE3LjEuMiIKICB9Cn0KJ3VzZSBzdHJpY3QnCmNvbnN0IHsgaXNXaW5kb3dzLCBpc0JhcmUgfSA9IHJlcXVpcmUoJ3doaWNoLXJ1bnRpbWUnKQpjb25zdCBvcyA9IHJlcXVpcmUoJ29zJykKY29uc3QgZnNwID0gcmVxdWlyZSgnZnMvcHJvbWlzZXMnKQpjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpCmNvbnN0IGh5cGVyY29yZWlkID0gcmVxdWlyZSgnaHlwZXJjb3JlLWlkLWVuY29kaW5nJykKY29uc3QgY3J5cHRvID0gcmVxdWlyZSgnaHlwZXJjb3JlLWNyeXB0bycpCmNvbnN0IHsgUExBVEZPUk1fRElSLCBTV0FQLCBSVU5USU1FIH0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpCmNvbnN0IENXRCA9IGlzQmFyZSA/IG9zLmN3ZCgpIDogcHJvY2Vzcy5jd2QoKQpjb25zdCBFTlYgPSBpc0JhcmUgPyByZXF1aXJlKCdiYXJlLWVudicpIDogcHJvY2Vzcy5lbnYKY29uc3QgcGxpbmsgPSByZXF1aXJlKCcuL2xpbmsnKQpjb25zdCB7IEVSUl9JTlZBTElEX1BST0pFQ1RfRElSLCBFUlJfSU5WQUxJRF9BUFBfU1RPUkFHRSwgRVJSX0lOVkFMSURfQVBQX05BTUUgfSA9IHJlcXVpcmUoJ3BlYXItYXBpL2Vycm9ycycpCgptb2R1bGUuZXhwb3J0cyA9IGNsYXNzIFN0YXRlIHsKICBlbnYgPSBudWxsCiAgY2hhbm5lbCA9IG51bGwKICBhcmdzID0gbnVsbAogIGNoZWNrcG9pbnQgPSBudWxsCiAgI29udXBkYXRlID0gbnVsbAogIHJ1bnRpbWUgPSBSVU5USU1FCiAgcmVsb2FkaW5nU2luY2UgPSAwCiAgdHlwZSA9IG51bGwKICBlbnRyeXBvaW50cyA9IG51bGwKICBlbnRyeXBvaW50ID0gbnVsbAogIGFwcGxpbmsgPSBudWxsCiAgZGh0ID0gbnVsbAogIHJvdXRlID0gbnVsbAogIHJvdXRlcyA9IG51bGwKICB1bnJvdXRlZCA9IG51bGwKICBhc3NldHMgPSB7fQogIHZlcnNpb24gPSB7IGtleTogbnVsbCwgbGVuZ3RoOiAwLCBmb3JrOiAwIH0KICBvcHRpb25zID0gbnVsbAogIG1hbmlmZXN0ID0gbnVsbAogIHN0YXRpYyBhc3luYyBsb2NhbFBrZyAoc3RhdGUpIHsKICAgIGxldCBwa2cKICAgIHRyeSB7CiAgICAgIHBrZyA9IEpTT04ucGFyc2UoYXdhaXQgZnNwLnJlYWRGaWxlKHBhdGguam9pbihzdGF0ZS5kaXIsICdwYWNrYWdlLmpzb24nKSkpCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgaWYgKGVyci5jb2RlICE9PSAnRU5PRU5UJyAmJiBlcnIuY29kZSAhPT0gJ0VJU0RJUicgJiYgZXJyLmNvZGUgIT09ICdFTk9URElSJykgdGhyb3cgZXJyCiAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguZGlybmFtZShzdGF0ZS5kaXIpCiAgICAgIGlmIChwYXJlbnQgPT09IHN0YXRlLmRpciB8fCBwYXRoLnJlc29sdmUoc3RhdGUuZGlyKSA9PT0gcGF0aC5yZXNvbHZlKHBhcmVudCkpIHJldHVybiBudWxsCiAgICAgIHN0YXRlLmRpciA9IHBhcmVudAogICAgICByZXR1cm4gdGhpcy5sb2NhbFBrZyhzdGF0ZSkKICAgIH0KICAgIHJldHVybiBwa2cKICB9CgogIHN0YXRpYyBhcHBuYW1lIChwa2cpIHsKICAgIHJldHVybiBwa2c/LnBlYXI/Lm5hbWUgPz8gcGtnPy5uYW1lID8/IG51bGwKICB9CgogIHN0YXRpYyBhc3luYyBidWlsZCAoc3RhdGUsIHBrZyA9IG51bGwpIHsKICAgIGlmIChzdGF0ZS5tYW5pZmVzdCkgcmV0dXJuIHN0YXRlLm1hbmlmZXN0CiAgICBpZiAocGtnID09PSBudWxsICYmIHN0YXRlLmtleSA9PT0gbnVsbCkgcGtnID0gYXdhaXQgdGhpcy5sb2NhbFBrZyhzdGF0ZSkKICAgIGlmIChwa2cgPT09IG51bGwpIHRocm93IEVSUl9JTlZBTElEX1BST0pFQ1RfRElSKGAiJHtwYXRoLmpvaW4odGhpcy5kaXIsICdwYWNrYWdlLmpzb24nKX0iIG5vdCBmb3VuZC4gUGVhciBwcm9qZWN0IG11c3QgaGF2ZSBhIHBhY2thZ2UuanNvbmApCiAgICBzdGF0ZS5wa2cgPSBwa2cKICAgIHN0YXRlLm9wdGlvbnMgPSBzdGF0ZS5wa2c/LnBlYXIgPz8ge30KCiAgICBzdGF0ZS5uYW1lID0gc3RhdGUubmFtZSA/PyB0aGlzLmFwcG5hbWUoc3RhdGUucGtnKQoKICAgIHN0YXRlLm1haW4gPSBzdGF0ZS5vcHRpb25zLm1haW4gPz8gcGtnPy5tYWluID8/ICdpbmRleC5qcycKCiAgICBjb25zdCBpbnZhbGlkTmFtZSA9IC9eW0AvYS16MC05LV9dKyQvLnRlc3Qoc3RhdGUubmFtZSkgPT09IGZhbHNlCiAgICBpZiAoaW52YWxpZE5hbWUpIHRocm93IEVSUl9JTlZBTElEX0FQUF9OQU1FKCdBcHAgbmFtZSBtdXN0IGJlIGxvd2VyY2FzZSBhbmQgb25lIHdvcmQsIGFuZCBtYXkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zICgtKSwgdW5kZXJzY29yZXMgKF8pLCBmb3J3YXJkIHNsYXNoZXMgKC8pIGFuZCBhc3BlcmFuZHMgKEApLicpCgogICAgc3RhdGUubGlua3MgPSB7CiAgICAgIC4uLk9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcygoc3RhdGUub3B0aW9ucy5saW5rcyA/PyB7fSkpKSwKICAgICAgLi4uKHN0YXRlLmxpbmtzID8/IHt9KQogICAgfQogICAgc3RhdGUuZW50cnlwb2ludHMgPSBBcnJheS5pc0FycmF5KHN0YXRlLm9wdGlvbnMuc3RhZ2U/LmVudHJ5cG9pbnRzKSA/IHN0YXRlLm9wdGlvbnMuc3RhZ2U/LmVudHJ5cG9pbnRzIDogW10KICAgIHN0YXRlLnJvdXRlcyA9IHN0YXRlLm9wdGlvbnMucm91dGVzIHx8IG51bGwKICAgIGNvbnN0IHVucm91dGVkID0gQXJyYXkuaXNBcnJheShzdGF0ZS5vcHRpb25zLnVucm91dGVkKSA/IHN0YXRlLm9wdGlvbnMudW5yb3V0ZWQgOiBbXQogICAgc3RhdGUudW5yb3V0ZWQgPSBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLnVucm91dGVkLCAuLi5zdGF0ZS5lbnRyeXBvaW50c10pKQogICAgY29uc3QgeyBlbnRyeXBvaW50LCByb3V0ZWQgfSA9IHRoaXMucm91dGUoc3RhdGUpCiAgICBzdGF0ZS5lbnRyeXBvaW50ID0gZW50cnlwb2ludAogICAgc3RhdGUucm91dGVkID0gcm91dGVkCiAgICBzdGF0ZS5tYW5pZmVzdCA9IHsgLi4ucGtnLCBwZWFyOiBzdGF0ZS5vcHRpb25zIH0KICAgIHJldHVybiBzdGF0ZS5tYW5pZmVzdAogIH0KCiAgc3RhdGljIHJvdXRlIChzdGF0ZSkgewogICAgbGV0IHJlc3VsdCA9IG51bGwKICAgIGlmIChzdGF0ZS5wcmVydW5uaW5nIHx8ICFzdGF0ZS5yb3V0ZXMpIHsKICAgICAgcmVzdWx0ID0geyBlbnRyeXBvaW50OiBzdGF0ZS5yb3V0ZSwgcm91dGVkOiBmYWxzZSB9CiAgICB9IGVsc2UgaWYgKHN0YXRlLnVucm91dGVkLnNvbWUoKHVucm91dGUpID0+IHN0YXRlLnJvdXRlLnN0YXJ0c1dpdGgodW5yb3V0ZSkpKSB7CiAgICAgIHJlc3VsdCA9IHsgZW50cnlwb2ludDogc3RhdGUucm91dGUsIHJvdXRlZDogZmFsc2UgfQogICAgfSBlbHNlIHsKICAgICAgbGV0IHJvdXRlID0gdHlwZW9mIHN0YXRlLnJvdXRlcyA9PT0gJ3N0cmluZycgPyBzdGF0ZS5yb3V0ZXMgOiAoc3RhdGUucm91dGVzW3N0YXRlLnJvdXRlXSA/PyBzdGF0ZS5yb3V0ZSkKICAgICAgaWYgKHJvdXRlWzBdID09PSAnLicpIHJvdXRlID0gcm91dGUubGVuZ3RoID09PSAxID8gJy8nIDogcm91dGUuc2xpY2UoMSkKICAgICAgcmVzdWx0ID0geyBlbnRyeXBvaW50OiByb3V0ZSwgcm91dGVkOiB0cnVlIH0KICAgIH0KICAgIGlmIChyZXN1bHQuZW50cnlwb2ludC5zdGFydHNXaXRoKCcvJykgPT09IGZhbHNlKSByZXN1bHQuZW50cnlwb2ludCA9ICcvJyArIHJlc3VsdC5lbnRyeXBvaW50CiAgICBlbHNlIGlmIChyZXN1bHQuZW50cnlwb2ludC5zdGFydHNXaXRoKCcuLycpKSByZXN1bHQuZW50cnlwb2ludCA9IHJlc3VsdC5lbnRyeXBvaW50LnNsaWNlKDEpCiAgICByZXR1cm4gcmVzdWx0CiAgfQoKICBzdGF0aWMgc3RvcmFnZUZyb21MaW5rIChsaW5rKSB7CiAgICBjb25zdCBwYXJzZWQgPSB0eXBlb2YgbGluayA9PT0gJ3N0cmluZycgPyBwbGluay5wYXJzZShsaW5rKSA6IGxpbmsKICAgIGNvbnN0IGFwcFN0b3JhZ2UgPSBwYXRoLmpvaW4oUExBVEZPUk1fRElSLCAnYXBwLXN0b3JhZ2UnKQogICAgcmV0dXJuIHBhcnNlZC5wcm90b2NvbCAhPT0gJ3BlYXI6JwogICAgICA/IHBhdGguam9pbihhcHBTdG9yYWdlLCAnYnktcmFuZG9tJywgY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS50b1N0cmluZygnaGV4JykpCiAgICAgIDogcGF0aC5qb2luKGFwcFN0b3JhZ2UsICdieS1ka2V5JywgY3J5cHRvLmRpc2NvdmVyeUtleShoeXBlcmNvcmVpZC5kZWNvZGUocGFyc2VkLmRyaXZlLmtleSkpLnRvU3RyaW5nKCdoZXgnKSkKICB9CgogIHN0YXRpYyBjb25maWdGcm9tIChzdGF0ZSkgewogICAgY29uc3QgeyBpZCwgc3RhcnRJZCwga2V5LCBsaW5rcywgYWxpYXMsIGVudiwgZ3VpLCBhc3NldHMsIG9wdGlvbnMsIGNoZWNrcG9pbnQsIGNoZWNrb3V0LCBmbGFncywgZGV2LCBzdGFnZSwgc3RvcmFnZSwgbmFtZSwgbWFpbiwgYXJncywgY2hhbm5lbCwgcmVsZWFzZSwgYXBwbGluaywgcXVlcnksIGZyYWdtZW50LCBsaW5rLCBsaW5rRGF0YSwgZW50cnlwb2ludCwgcm91dGUsIHJvdXRlcywgZGlyLCBkaHQsIHByZXJ1bm5pbmcsIHZlcnNpb24gfSA9IHN0YXRlCiAgICBjb25zdCBwZWFyRGlyID0gUExBVEZPUk1fRElSCiAgICBjb25zdCBzd2FwRGlyID0gU1dBUAogICAgcmV0dXJuIHsgaWQsIHN0YXJ0SWQsIGtleSwgbGlua3MsIGFsaWFzLCBlbnYsIGd1aSwgYXNzZXRzLCBvcHRpb25zLCBjaGVja3BvaW50LCBjaGVja291dCwgZmxhZ3MsIGRldiwgc3RhZ2UsIHN0b3JhZ2UsIG5hbWUsIG1haW4sIGFyZ3MsIGNoYW5uZWwsIHJlbGVhc2UsIGFwcGxpbmssIHF1ZXJ5LCBmcmFnbWVudCwgbGluaywgbGlua0RhdGEsIGVudHJ5cG9pbnQsIHJvdXRlLCByb3V0ZXMsIGRpciwgZGh0LCBwcmVydW5uaW5nLCBwZWFyRGlyLCBzd2FwRGlyLCBsZW5ndGg6IHZlcnNpb24/Lmxlbmd0aCwgZm9yazogdmVyc2lvbj8uZm9yayB9CiAgfQoKICB1cGRhdGUgKHN0YXRlKSB7CiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHN0YXRlKQogICAgdGhpcy4jb251cGRhdGUoKQogIH0KCiAgY29uc3RydWN0b3IgKHBhcmFtcyA9IHt9KSB7CiAgICBjb25zdCB7IGRodCwgbGluayA9ICcuJywgc3RhcnRJZCA9IG51bGwsIGlkID0gbnVsbCwgYXJncyA9IG51bGwsIGVudiA9IEVOViwgY3dkID0gQ1dELCBkaXIgPSBjd2QsIGNtZEFyZ3MsIG9udXBkYXRlID0gKCkgPT4ge30sIGZsYWdzID0ge30sIHJ1biwgc3RvcmFnZSA9IG51bGwsIHBpZCB9ID0gcGFyYW1zCiAgICBjb25zdCB7CiAgICAgIGFwcGxpbmcsIGNoYW5uZWwsIGRldnRvb2xzLCBjaGVja291dCwgc3RhZ2UsIHVwZGF0ZXMsIHVwZGF0ZXNEaWZmLAogICAgICBsaW5rcyA9ICcnLCBwcmVydW5uaW5nID0gZmFsc2UsIGRldiA9IGZhbHNlLCBwYXJlbnQgPSBudWxsLAogICAgICBmb2xsb3dTeW1saW5rcywgdW5zYWZlQ2xlYXJBcHBTdG9yYWdlLCBjaHJvbWVXZWJydGNJbnRlcm5hbHMKICAgIH0gPSBmbGFncwogICAgY29uc3QgcGFyc2VkTGluayA9IHBsaW5rLnBhcnNlKGxpbmspCiAgICBjb25zdCB7IGRyaXZlOiB7IGFsaWFzID0gbnVsbCwga2V5ID0gbnVsbCB9ID0ge30sIHBhdGhuYW1lOiByb3V0ZSA9ICcnLCBwcm90b2NvbCwgb3JpZ2luLCBoYXNoLCBzZWFyY2ggfSA9IHBhcnNlZExpbmsKICAgIGxldCBwYXRobmFtZSA9IHByb3RvY29sID09PSAnZmlsZTonICYmIGlzV2luZG93cyA/IHJvdXRlLnNsaWNlKDEpIDogcm91dGUKICAgIC8vIGZvciBvbiBkaXNrIHJvdXRlIHN1cHBvcnQsIHRoaXMgcmVsaWVzIG9uIHBhc3NlZCBpbiBkaXIgYmVpbmcgdGhlIGFjdHVhbCBwcm9qZWN0IGRpcjoKICAgIGlmIChwcm90b2NvbCA9PT0gJ2ZpbGU6JykgcGF0aG5hbWUgPSBwYXRobmFtZS5zbGljZShkaXIubGVuZ3RoKQogICAgY29uc3Qgc3RvcmUgPSBmbGFncy50bXBTdG9yZSA/IHBhdGguam9pbihvcy50bXBkaXIoKSwgY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS50b1N0cmluZygnaGV4JykpIDogZmxhZ3Muc3RvcmUKICAgIHRoaXMuI29udXBkYXRlID0gb251cGRhdGUKICAgIHRoaXMuc3RhcnRJZCA9IHN0YXJ0SWQKICAgIHRoaXMuZGh0ID0gZGh0CiAgICB0aGlzLnN0b3JlID0gc3RvcmUKICAgIHRoaXMuYXJncyA9IGFyZ3MKICAgIHRoaXMuYXBwbGluZyA9IGFwcGxpbmcKICAgIHRoaXMuY2hhbm5lbCA9IGNoYW5uZWwgfHwgbnVsbAogICAgdGhpcy5jaGVja291dCA9IGNoZWNrb3V0CiAgICB0aGlzLmN3ZCA9IGN3ZAogICAgdGhpcy5kaXIgPSBkaXIKICAgIHRoaXMucnVuID0gcnVuCiAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlCiAgICB0aGlzLmZsYWdzID0gZmxhZ3MKICAgIHRoaXMuZGV2ID0gZGV2CiAgICB0aGlzLmRldnRvb2xzID0gdGhpcy5kZXYgfHwgZGV2dG9vbHMKICAgIHRoaXMudXBkYXRlc0RpZmYgPSB0aGlzLmRldiB8fCB1cGRhdGVzRGlmZgogICAgdGhpcy51cGRhdGVzID0gdXBkYXRlcwogICAgdGhpcy5zdGFnZSA9IHN0YWdlCiAgICB0aGlzLmZyYWdtZW50ID0gaGFzaCA/IGhhc2guc2xpY2UoMSkgOiAnJwogICAgdGhpcy5xdWVyeSA9IHNlYXJjaCA/IHNlYXJjaC5zbGljZSgxKSA6ICcnCiAgICB0aGlzLnJvdXRlID0gcGF0aG5hbWUKICAgIHRoaXMubGlua0RhdGEgPSB0aGlzLnJvdXRlPy5zdGFydHNXaXRoKCcvJykgPyB0aGlzLnJvdXRlLnNsaWNlKDEpIDogdGhpcy5yb3V0ZQogICAgdGhpcy5rZXkgPSBrZXkKICAgIHRoaXMubGluayA9IGxpbmsgPyAobGluay5zdGFydHNXaXRoKHByb3RvY29sKSA/IGxpbmsgOiBwbGluay5ub3JtYWxpemUocGxpbmsuc2VyaWFsaXplKHBhcnNlZExpbmspKSkgOiBudWxsCiAgICB0aGlzLmFwcGxpbmsgPSBrZXkgPyBvcmlnaW4gOiBwbGluay5ub3JtYWxpemUocGxpbmsuc2VyaWFsaXplKHBsaW5rLnBhcnNlKHRoaXMuZGlyKSkpCiAgICB0aGlzLmFsaWFzID0gYWxpYXMKICAgIHRoaXMuY21kQXJncyA9IGNtZEFyZ3MKICAgIHRoaXMuaWQgPSBpZAogICAgdGhpcy5mb2xsb3dTeW1saW5rcyA9IGZvbGxvd1N5bWxpbmtzCiAgICB0aGlzLnJ0aSA9IGZsYWdzLnJ0aSA/IEpTT04ucGFyc2UoZmxhZ3MucnRpKSA6IG51bGwgLy8gaW1wb3J0YW50IHRvIGtub3cgaWYgdGhpcyB0aHJvd3MsIHNvIG5vIHRyeS9jYXRjaAogICAgdGhpcy5wcmVydW5uaW5nID0gcHJlcnVubmluZwogICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQKICAgIHRoaXMucGlkID0gcGlkCiAgICB0aGlzLmNsZWFyQXBwU3RvcmFnZSA9IHVuc2FmZUNsZWFyQXBwU3RvcmFnZQogICAgdGhpcy5jaHJvbWVXZWJydGNJbnRlcm5hbHMgPSBjaHJvbWVXZWJydGNJbnRlcm5hbHMKICAgIHRoaXMuZW52ID0geyAuLi5lbnYgfQogICAgaWYgKHRoaXMuc3RhZ2UgfHwgKHRoaXMucnVuICYmIHRoaXMuZGV2ID09PSBmYWxzZSkpIHsKICAgICAgdGhpcy5lbnYuTk9ERV9FTlYgPSB0aGlzLmVudi5OT0RFX0VOViB8fCAncHJvZHVjdGlvbicKICAgIH0KICAgIHRoaXMubGlua3MgPSBsaW5rcy5zcGxpdCgnLCcpLnJlZHVjZSgobGlua3MsIGt2KSA9PiB7CiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGt2LnNwbGl0KCc9JykKICAgICAgbGlua3Nba2V5XSA9IHZhbHVlCiAgICAgIHJldHVybiBsaW5rcwogICAgfSwge30pCiAgICB0aGlzLnN0b3JhZ2UgPSB0aGlzLnN0b3JlID8gKHBhdGguaXNBYnNvbHV0ZSh0aGlzLnN0b3JlKSA/IHRoaXMuc3RvcmUgOiBwYXRoLnJlc29sdmUodGhpcy5jd2QsIHRoaXMuc3RvcmUpKSA6IHRoaXMuc3RvcmFnZQogICAgY29uc3QgaW52YWxpZFN0b3JhZ2UgPSB0aGlzLmtleSA9PT0gbnVsbCAmJiB0aGlzLnN0b3JhZ2UgIT09IG51bGwgJiYKICAgICAgdGhpcy5zdG9yYWdlLnN0YXJ0c1dpdGgodGhpcy5kaXIpICYmIHRoaXMuc3RvcmFnZS5pbmNsdWRlcyhwYXRoLnNlcCArICdwZWFyJyArIHBhdGguc2VwICsgJ3BlYXInICsgcGF0aC5zZXApID09PSBmYWxzZQogICAgaWYgKGludmFsaWRTdG9yYWdlKSB0aHJvdyBFUlJfSU5WQUxJRF9BUFBfU1RPUkFHRSgnQXBwbGljYXRpb24gU3RvcmFnZSBtYXkgbm90IGJlIGluc2lkZSB0aGUgcHJvamVjdCBkaXJlY3RvcnkuIC0tc3RvcmUgIicgKyB0aGlzLnN0b3JhZ2UgKyAnIiBpcyBpbnZhbGlkJykKICB9Cn0KLyogZ2xvYmFsIEJhcmUgKi8KY29uc3QgU2lnbmFsID0gcmVxdWlyZSgnYmFyZS1zaWduYWxzJykKY29uc3Qgc2FmZXR5Q2F0Y2ggPSByZXF1aXJlKCdzYWZldHktY2F0Y2gnKQoKY29uc3QgaGFuZGxlcnMgPSBbXQoKbGV0IGV4aXRpbmcgPSBmYWxzZQoKY29uc3Qgc2lnaW50ID0gbmV3IFNpZ25hbCgnU0lHSU5UJykKY29uc3Qgc2lndGVybSA9IG5ldyBTaWduYWwoJ1NJR1RFUk0nKQoKc2lnaW50CiAgLm9uKCdzaWduYWwnLCAoc2lnbnVtKSA9PiB7CiAgICBzaWdpbnQuc3RvcCgpCiAgICBzaWdpbnQudW5yZWYoKQogICAgQmFyZS5leGl0Q29kZSA9IDEzMAogICAgb25leGl0KCgpID0+IHsgU2lnbmFsLnNlbmQoc2lnbnVtLCBCYXJlLnBpZCkgfSkKICB9KQoKc2lndGVybQogIC5vbignc2lnbmFsJywgKHNpZ251bSkgPT4gewogICAgc2lndGVybS5zdG9wKCkKICAgIHNpZ3Rlcm0udW5yZWYoKQogICAgQmFyZS5leGl0Q29kZSA9IDE0MwogICAgb25leGl0KCgpID0+IHsgU2lnbmFsLnNlbmQoc2lnbnVtLCBCYXJlLnBpZCkgfSkKICB9KQoKZnVuY3Rpb24gb25leGl0IChvbmRvbmUpIHsKICBpZiAoZXhpdGluZykgcmV0dXJuCiAgZXhpdGluZyA9IHRydWUKCiAgQmFyZS5yZW1vdmVMaXN0ZW5lcignYmVmb3JlRXhpdCcsIG9uZXhpdCkKCiAgY29uc3Qgb3JkZXIgPSBbXQoKICBmb3IgKGNvbnN0IGggb2YgaGFuZGxlcnMuc29ydCgoYSwgYikgPT4gYi5wb3NpdGlvbiAtIGEucG9zaXRpb24pKSB7CiAgICBpZiAoIW9yZGVyLmxlbmd0aCB8fCBvcmRlcltvcmRlci5sZW5ndGggLSAxXVswXS5wb3NpdGlvbiAhPT0gaC5wb3NpdGlvbikgb3JkZXIucHVzaChbXSkKICAgIG9yZGVyW29yZGVyLmxlbmd0aCAtIDFdLnB1c2goaCkKICB9CgogIGNvbnN0IGxvb3Bkb3duID0gbG9vcCgpCgogIGlmIChvbmRvbmUpIGxvb3Bkb3duLmZpbmFsbHkob25kb25lKQoKICBmdW5jdGlvbiBsb29wICgpIHsKICAgIGlmICghb3JkZXIubGVuZ3RoKSByZXR1cm4KICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQob3JkZXIucG9wKCkubWFwKHJ1bikpLnRoZW4obG9vcCwgbG9vcCkKICB9Cn0KCmFzeW5jIGZ1bmN0aW9uIHJ1biAoaCkgewogIHRyeSB7CiAgICBhd2FpdCBoLmZuKCkKICB9IGNhdGNoIChlKSB7CiAgICBzYWZldHlDYXRjaChlKQogIH0KfQoKZnVuY3Rpb24gc2V0dXAgKCkgewogIEJhcmUucHJlcGVuZExpc3RlbmVyKCdiZWZvcmVFeGl0Jywgb25leGl0KQogIHNpZ2ludC5zdGFydCgpCiAgc2lndGVybS5zdGFydCgpCgogIHNpZ2ludC51bnJlZigpCiAgc2lndGVybS51bnJlZigpCn0KCmZ1bmN0aW9uIGNsZWFudXAgKCkgewogIEJhcmUucmVtb3ZlTGlzdGVuZXIoJ2JlZm9yZUV4aXQnLCBvbmV4aXQpCiAgc2lnaW50LmNsb3NlKCkKICBzaWd0ZXJtLmNsb3NlKCkKfQoKZnVuY3Rpb24gdGVhcmRvd24gKGZuLCBwb3NpdGlvbiA9IDApIHsKICBpZiAoaGFuZGxlcnMubGVuZ3RoID09PSAwKSBzZXR1cCgpCiAgY29uc3QgaGFuZGxlciA9IHsgcG9zaXRpb24sIGZuIH0KICBoYW5kbGVycy5wdXNoKGhhbmRsZXIpCgogIHJldHVybiBmdW5jdGlvbiB1bnJlZ2lzdGVyICh1bmxpc3RlbiA9IHRydWUpIHsKICAgIGNvbnN0IGkgPSBoYW5kbGVycy5pbmRleE9mKGhhbmRsZXIpCiAgICBpZiAoaSA+IC0xKSBoYW5kbGVycy5zcGxpY2UoaSwgMSkKICAgIGlmICh1bmxpc3RlbiAmJiBoYW5kbGVycy5sZW5ndGggPT09IDApIGNsZWFudXAoKQogIH0KfQoKbW9kdWxlLmV4cG9ydHMgPSB0ZWFyZG93bgondXNlIHN0cmljdCcKY29uc3QgZGFlbW9uID0gcmVxdWlyZSgnYmFyZS1kYWVtb24nKQpjb25zdCB7IFJVTlRJTUUsIFBMQVRGT1JNX0RJUiB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKQoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0cnlib290ICgpIHsKICBjb25zdCB7IGFyZ3YgfSA9IGdsb2JhbC5CYXJlIHx8IGdsb2JhbC5wcm9jZXNzCiAgY29uc3QgYXJncyA9IFsnLS1zaWRlY2FyJ10KICBjb25zdCBkaHRCb290c3RyYXAgPSBhcmd2LmluY2x1ZGVzKCctLWRodC1ib290c3RyYXAnKSA/IGFyZ3ZbYXJndi5pbmRleE9mKCctLWRodC1ib290c3RyYXAnKSArIDFdIDogbnVsbAogIGlmIChkaHRCb290c3RyYXApIHsKICAgIGFyZ3MucHVzaCgnLS1kaHQtYm9vdHN0cmFwJykKICAgIGFyZ3MucHVzaChkaHRCb290c3RyYXApCiAgfQoKICBkYWVtb24uc3Bhd24oUlVOVElNRSwgYXJncywgeyBjd2Q6IFBMQVRGT1JNX0RJUiB9KQp9Cid1c2Ugc3RyaWN0Jwpjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJykKY29uc3QgZnNleHQgPSByZXF1aXJlKCdmcy1uYXRpdmUtZXh0ZW5zaW9ucycpCgpjb25zdCBMT0NLX1BPTExfSU5URVJWQUwgPSA1MDAKY29uc3QgUE9MTF9NQVhfVFJJRVMgPSAyMAoKY2xhc3MgSW50ZXJuYWwgewogIF9waW5naW5nID0gdHJ1ZQogIF9waW5nIChtZXRob2QpIHsgcmV0dXJuICgpID0+IHRoaXMuX3BpbmdpbmcgJiYgbWV0aG9kLnJlcXVlc3QoeyBiZWF0OiAncGluZycgfSkgfQp9CgpjbGFzcyBBUEkgZXh0ZW5kcyBJbnRlcm5hbCB7CiAgI2lwYyA9IG51bGwKCiAgY29uc3RydWN0b3IgKGlwYykgewogICAgc3VwZXIoKQogICAgdGhpcy4jaXBjID0gaXBjCiAgfQoKICB3YWtldXAgKG1ldGhvZCkgewogICAgcmV0dXJuIChsaW5rLCBzdG9yYWdlLCBhcHBkZXYsIHNlbGZ3YWtlLCBzdGFydElkKSA9PiBtZXRob2QucmVxdWVzdCh7IGFyZ3M6IFtsaW5rLCBzdG9yYWdlLCBhcHBkZXYsIHNlbGZ3YWtlLCBzdGFydElkXSB9KQogIH0KCiAgc2h1dGRvd24gKG1ldGhvZCkgewogICAgcmV0dXJuIGFzeW5jICgpID0+IHsKICAgICAgaWYgKHRoaXMuI2lwYy5jbG9zZWQgfHwgdGhpcy4jaXBjLmNsb3NpbmcpIHJldHVybgogICAgICB0aGlzLl9waW5naW5nID0gZmFsc2UKICAgICAgbWV0aG9kLnNlbmQoKQogICAgICBjb25zdCBmZCA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICBsZXQgdHJpZXMgPSAwCiAgICAgICAgbGV0IGludGVydmFsID0gbnVsbAogICAgICAgIGNvbnN0IHBvbGwgPSAoKSA9PiB7CiAgICAgICAgICBmcy5vcGVuKHRoaXMuI2lwYy5fbG9jaywgJ3IrJywgKGVyciwgZmQpID0+IHsKICAgICAgICAgICAgaWYgKCFlcnIpIHsKICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKQogICAgICAgICAgICAgIHJlc29sdmUoZmQpCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdHJpZXMrKwogICAgICAgICAgICAgIGlmICh0cmllcyA+IFBPTExfTUFYX1RSSUVTKSB7CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKQogICAgICAgICAgICAgICAgcmVqZWN0KGVycikKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pCiAgICAgICAgfQogICAgICAgIGludGVydmFsID0gc2V0SW50ZXJ2YWwocG9sbCwgTE9DS19QT0xMX0lOVEVSVkFMKQogICAgICAgIHBvbGwoKQogICAgICB9KQoKICAgICAgYXdhaXQgZnNleHQud2FpdEZvckxvY2soZmQpCiAgICAgIGZzZXh0LnVubG9jayhmZCkKICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gZnMuY2xvc2UoZmQsIChlcnIpID0+IHsKICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICByZWplY3QoZXJyKQogICAgICAgICAgcmV0dXJuCiAgICAgICAgfQogICAgICAgIHJlc29sdmUoKQogICAgICB9KSkKICAgICAgYXdhaXQgdGhpcy4jaXBjLmNsb3NlKCkKICAgIH0KICB9Cn0KCm1vZHVsZS5leHBvcnRzID0gQVBJCid1c2Ugc3RyaWN0Jwpjb25zdCB7IGlzQmFyZSB9ID0gcmVxdWlyZSgnd2hpY2gtcnVudGltZScpCmNvbnN0IFBpcGUgPSByZXF1aXJlKCduZXQnKSAvLyBpbXBvcnQgbWFwcGVkIHRvIGJhcmUtcGlwZSwgbGVzcyByZXNvbHZlcwpjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpCmNvbnN0IFJQQyA9IHJlcXVpcmUoJ3RpbnktYnVmZmVyLXJwYycpCmNvbnN0IGFueSA9IHJlcXVpcmUoJ3RpbnktYnVmZmVyLXJwYy9hbnknKQpjb25zdCBSZWFkeVJlc291cmNlID0gcmVxdWlyZSgncmVhZHktcmVzb3VyY2UnKQpjb25zdCBGcmFtZWRTdHJlYW0gPSByZXF1aXJlKCdmcmFtZWQtc3RyZWFtJykKCmNvbnN0IEFQSSA9IHJlcXVpcmUoJy4vYXBpJykKY29uc3QgbWV0aG9kcyA9IHJlcXVpcmUoJy4vbWV0aG9kcycpCmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJykKCmNsYXNzIFBlYXJJUENDbGllbnQgZXh0ZW5kcyBSZWFkeVJlc291cmNlIHsKICAjY29ubmVjdCA9IG51bGwKICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7CiAgICBzdXBlcigpCiAgICB0aGlzLl9vcHRzID0gb3B0cwogICAgdGhpcy5fc29ja2V0UGF0aCA9IG9wdHMuc29ja2V0UGF0aAogICAgdGhpcy5fbWV0aG9kcyA9IG9wdHMubWV0aG9kcyA/IFsuLi5tZXRob2RzLCAuLi5vcHRzLm1ldGhvZHNdIDogbWV0aG9kcwogICAgdGhpcy5fbG9jayA9IG9wdHMubG9jayB8fCBwYXRoLmpvaW4oY29uc3RhbnRzLlBFQVJfRElSLCAnY29yZXN0b3JlcycsICdwbGF0Zm9ybScsICdkYicsICdMT0NLJykKICAgIGNvbnN0IGFwaSA9IG5ldyBBUEkodGhpcykKICAgIGlmIChvcHRzLmFwaSkgT2JqZWN0LmFzc2lnbihhcGksIG9wdHMuYXBpKQogICAgdGhpcy5fYXBpID0gYXBpCiAgICB0aGlzLl9jb25uZWN0VGltZW91dCA9IG9wdHMuY29ubmVjdFRpbWVvdXQgfHwgY29uc3RhbnRzLkNPTk5FQ1RfVElNRU9VVAogICAgdGhpcy4jY29ubmVjdCA9IG9wdHMuY29ubmVjdCB8fCBudWxsCiAgICB0aGlzLl9ycGMgPSBudWxsCiAgICB0aGlzLl9pbnRlcm5hbEhhbmRsZXJzID0gbnVsbAoKICAgIHRoaXMuX3Jhd1N0cmVhbSA9IG9wdHMuc3RyZWFtIHx8IG51bGwKICAgIHRoaXMuX3N0cmVhbSA9IG51bGwKCiAgICB0aGlzLnVzZXJEYXRhID0gb3B0cy51c2VyRGF0YSB8fCBudWxsCgogICAgdGhpcy5fb25jbG9zZSA9IHRoaXMuY2xvc2UuYmluZCh0aGlzKQogIH0KCiAgcmVmICgpIHsKICAgIHRoaXMuX2hlYXJ0YmVhdD8ucmVmKCkKICAgIHRoaXMuX3RpbWVvdXQ/LnJlZigpCiAgICBpZiAodGhpcy5fcmF3U3RyZWFtPy5yZWYpIHRoaXMuX3Jhd1N0cmVhbS5yZWYoKQogIH0KCiAgdW5yZWYgKCkgewogICAgdGhpcy5faGVhcnRiZWF0Py51bnJlZigpCiAgICB0aGlzLl90aW1lb3V0Py51bnJlZigpCiAgICBpZiAodGhpcy5fcmF3U3RyZWFtPy51bnJlZikgdGhpcy5fcmF3U3RyZWFtLnVucmVmKCkKICB9CgogIGFzeW5jIF9vcGVuICgpIHsKICAgIGlmICh0aGlzLl9yYXdTdHJlYW0gPT09IG51bGwpIHsKICAgICAgYXdhaXQgdGhpcy5fY29ubmVjdCgpCiAgICB9CiAgfQoKICBfc2V0dXAgKCkgewogICAgdGhpcy5fc3RyZWFtID0gbmV3IEZyYW1lZFN0cmVhbSh0aGlzLl9yYXdTdHJlYW0pCgogICAgdGhpcy5fcnBjID0gbmV3IFJQQygoZGF0YSkgPT4geyB0aGlzLl9zdHJlYW0ud3JpdGUoZGF0YSkgfSkKICAgIHRoaXMuX3N0cmVhbS5vbignZGF0YScsIChkYXRhKSA9PiB7IHRoaXMuX3JwYy5yZWN2KGRhdGEpIH0pCiAgICB0aGlzLl9zdHJlYW0ub24oJ2VuZCcsICgpID0+IHsgdGhpcy5fc3RyZWFtLmVuZCgpIH0pCiAgICB0aGlzLl9zdHJlYW0ub24oJ2Vycm9yJywgdGhpcy5fb25jbG9zZSkKICAgIHRoaXMuX3N0cmVhbS5vbignY2xvc2UnLCB0aGlzLl9vbmNsb3NlKQoKICAgIHRoaXMuX3JlZ2lzdGVyKCkKCiAgICB0aGlzLl9oZWFydGJlYXQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICAgIHRoaXMuX2JlYXQoKQogICAgfSwgY29uc3RhbnRzLkhFQVJUQkVBVF9JTlRFUlZBTCkKICAgIHRoaXMuX2JlYXQoKQogIH0KCiAgYXN5bmMgX2JlYXQgKCkgewogICAgdHJ5IHsgYXdhaXQgdGhpcy5fcGluZygpIH0gY2F0Y2ggeyAvKiBpZ25vcmUgKi8gfQogIH0KCiAgX2NyZWF0ZVNlbmRNZXRob2QgKG1ldGhvZCkgewogICAgcmV0dXJuIChwYXJhbXMgPSB7fSkgPT4gbWV0aG9kLnNlbmQocGFyYW1zKQogIH0KCiAgX2NyZWF0ZVJlcXVlc3RNZXRob2QgKG1ldGhvZCkgewogICAgcmV0dXJuIChwYXJhbXMgPSB7fSkgPT4gbWV0aG9kLnJlcXVlc3QocGFyYW1zKQogIH0KCiAgX2NyZWF0ZVN0cmVhbU1ldGhvZCAobWV0aG9kKSB7CiAgICByZXR1cm4gKHBhcmFtcyA9IHt9KSA9PiB7CiAgICAgIGNvbnN0IHN0cmVhbSA9IG1ldGhvZC5jcmVhdGVSZXF1ZXN0U3RyZWFtKCkKICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiB7IHN0cmVhbS5lbmQoKSB9KQogICAgICBzdHJlYW0ud3JpdGUocGFyYW1zKQogICAgICByZXR1cm4gc3RyZWFtCiAgICB9CiAgfQoKICBfY3JlYXRlTWV0aG9kIChkZWZpbml0aW9uKSB7CiAgICBpZiAoZGVmaW5pdGlvbi5zZW5kKSB7CiAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVTZW5kTWV0aG9kCiAgICB9CgogICAgaWYgKCFkZWZpbml0aW9uLnN0cmVhbSkgewogICAgICByZXR1cm4gdGhpcy5fY3JlYXRlUmVxdWVzdE1ldGhvZAogICAgfQoKICAgIHJldHVybiB0aGlzLl9jcmVhdGVTdHJlYW1NZXRob2QKICB9CgogIF9yZWdpc3RlciAoKSB7CiAgICBmb3IgKGNvbnN0IHsgaWQsIC4uLmRlZiB9IG9mIHRoaXMuX21ldGhvZHMpIHsKICAgICAgaWYgKGNvbnN0YW50cy5JTExFR0FMX01FVEhPRFMuaGFzKGRlZi5uYW1lKSkgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIE1ldGhvZDogJyArIGRlZi5uYW1lKQogICAgICBjb25zdCBhcGkgPSB0aGlzLl9hcGlbZGVmLm5hbWVdPy5iaW5kKHRoaXMuX2FwaSkgfHwgdGhpcy5fY3JlYXRlTWV0aG9kKGRlZikKCiAgICAgIHRoaXNbZGVmLm5hbWVdID0gYXBpKHRoaXMuX3JwYy5yZWdpc3RlcigraWQsIHsKICAgICAgICByZXF1ZXN0OiBhbnksCiAgICAgICAgcmVzcG9uc2U6IGFueQogICAgICB9KSwgdGhpcykKICAgIH0KICB9CgogIF9waXBlICgpIHsKICAgIGlmIChpc0JhcmUpIHJldHVybiBuZXcgUGlwZSh0aGlzLl9zb2NrZXRQYXRoKQogICAgY29uc3Qgc29jayA9IG5ldyBQaXBlLlNvY2tldCgpCiAgICBzb2NrLnNldE5vRGVsYXkodHJ1ZSkKICAgIHNvY2suY29ubmVjdCh0aGlzLl9zb2NrZXRQYXRoKQogICAgcmV0dXJuIHNvY2sKICB9CgogIGFzeW5jIF9jb25uZWN0ICgpIHsKICAgIGxldCB0cnljb3VudCA9IDAKICAgIGxldCB0aW1lZG91dCA9IGZhbHNlCiAgICBsZXQgbmV4dCA9IG51bGwKCiAgICB0aGlzLl90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgIHRpbWVkb3V0ID0gdHJ1ZQogICAgICB0aGlzLmNsb3NlKCkKICAgIH0sIHRoaXMuX2Nvbm5lY3RUaW1lb3V0KQoKICAgIGNvbnN0IG9uZXJyb3IgPSAoKSA9PiB7CiAgICAgIHRoaXMuX3Jhd1N0cmVhbS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKQogICAgICB0aGlzLl9yYXdTdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nvbm5lY3QnLCBvbmNvbm5lY3QpCiAgICAgIG5leHQoZmFsc2UpCiAgICB9CgogICAgY29uc3Qgb25jb25uZWN0ID0gKCkgPT4gewogICAgICB0aGlzLl9yYXdTdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcikKICAgICAgdGhpcy5fcmF3U3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjb25uZWN0Jywgb25jb25uZWN0KQogICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCkKICAgICAgbmV4dCh0cnVlKQogICAgfQoKICAgIHdoaWxlICghdGhpcy5jbG9zaW5nKSB7CiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyBuZXh0ID0gcmVzb2x2ZSB9KQogICAgICB0aGlzLl9yYXdTdHJlYW0gPSB0aGlzLl9waXBlKHRoaXMuX3NvY2tldFBhdGgpCiAgICAgIHRoaXMuX3Jhd1N0cmVhbS5vbignY29ubmVjdCcsIG9uY29ubmVjdCkKICAgICAgdGhpcy5fcmF3U3RyZWFtLm9uKCdlcnJvcicsIG9uZXJyb3IpCgogICAgICBpZiAoYXdhaXQgcHJvbWlzZSkgYnJlYWsKICAgICAgaWYgKHRpbWVkb3V0KSB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb25uZWN0IGluIHRpbWUnKQogICAgICBpZiAodHJ5Y291bnQrKyA9PT0gMCAmJiB0eXBlb2YgdGhpcy4jY29ubmVjdCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy4jY29ubmVjdCgpCgogICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0cnljb3VudCA8IDIgPyA1IDogdHJ5Y291bnQgPCAxMCA/IDEwIDogMTAwKSkKICAgIH0KCiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCkKCiAgICB0aGlzLl9zZXR1cCgpCgogICAgaWYgKHRoaXMuY2xvc2luZykgewogICAgICBpZiAodGhpcy5fcmF3U3RyZWFtKSB0aGlzLl9yYXdTdHJlYW0uZGVzdHJveSgpCiAgICB9CiAgfQoKICBfd2FpdEZvckNsb3NlICgpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICBpZiAodGhpcy5fc3RyZWFtLmRlc3Ryb3llZCkgewogICAgICAgIHJlc29sdmUoKQogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuX3N0cmVhbS5vbmNlKCdjbG9zZScsIHJlc29sdmUpCiAgICAgICAgdGhpcy5fc3RyZWFtLmVuZCgpCiAgICAgIH0KICAgIH0pCiAgfQoKICBhc3luYyBfY2xvc2UgKCkgeyAvLyBuZXZlciB0aHJvd3MsIG11c3QgbmV2ZXIgdGhyb3cKICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGVhcnRiZWF0KQogICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpCgogICAgaWYgKHRoaXMuX3N0cmVhbSkgewogICAgICBhd2FpdCB0aGlzLl93YWl0Rm9yQ2xvc2UoKQogICAgICB0aGlzLl9yYXdTdHJlYW0gPSBudWxsCiAgICAgIHRoaXMuX3N0cmVhbSA9IG51bGwKICAgIH0KICAgIHRoaXMuX3JwYy5kZXN0cm95KCkKICB9Cn0KCm1vZHVsZS5leHBvcnRzID0gUGVhcklQQ0NsaWVudApjb25zdCB7IGlzV2luZG93cywgaXNNYWMgfSA9IHJlcXVpcmUoJ3doaWNoLXJ1bnRpbWUnKQpjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpCmNvbnN0IG9zID0gcmVxdWlyZSgnb3MnKQoKY29uc3QgUEVBUl9ESVIgPSBnbG9iYWwuUGVhcj8uY29uZmlnLnBlYXJEaXIgfHwgKGlzTWFjCiAgPyBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnTGlicmFyeScsICdBcHBsaWNhdGlvbiBTdXBwb3J0JywgJ3BlYXInKQogIDogaXNXaW5kb3dzCiAgICA/IHBhdGguam9pbihvcy5ob21lZGlyKCksICdBcHBEYXRhJywgJ1JvYW1pbmcnLCAncGVhcicpCiAgICA6IHBhdGguam9pbihvcy5ob21lZGlyKCksICcuY29uZmlnJywgJ3BlYXInKSkKCmNvbnN0IENPTk5FQ1RfVElNRU9VVCA9IDIwXzAwMApjb25zdCBIRUFSVEJFQVRfSU5URVJWQUwgPSAxNTAwCmNvbnN0IEhFQVJCRUFUX0NMT0NLID0gNQpjb25zdCBJTExFR0FMX01FVEhPRFMgPSBuZXcgU2V0KFsnaWQnLCAndXNlckRhdGEnLCAnY2xpZW50cycsICdoYXNDbGllbnRzJywgJ2NsaWVudCcsICdyZWYnLCAndW5yZWYnLCAncmVhZHknLCAnb3BlbmluZycsICdvcGVuZWQnLCAnY2xvc2UnLCAnY2xvc2luZycsICdjbG9zZWQnXSkKCm1vZHVsZS5leHBvcnRzID0gewogIFBFQVJfRElSLAogIENPTk5FQ1RfVElNRU9VVCwKICBIRUFSVEJFQVRfSU5URVJWQUwsCiAgSEVBUkJFQVRfQ0xPQ0ssCiAgSUxMRUdBTF9NRVRIT0RTCn0KJ3VzZSBzdHJpY3QnCmNvbnN0IFBlYXJJUENTZXJ2ZXIgPSByZXF1aXJlKCcuL3NlcnZlcicpCmNvbnN0IFBlYXJJUENDbGllbnQgPSByZXF1aXJlKCcuL2NsaWVudCcpCgptb2R1bGUuZXhwb3J0cyA9IHsgU2VydmVyOiBQZWFySVBDU2VydmVyLCBDbGllbnQ6IFBlYXJJUENDbGllbnQgfQondXNlIHN0cmljdCcKY29uc3QgbWV0aG9kcyA9IFsKICB7IGlkOiAwLCBuYW1lOiAnaW5mbycsIHN0cmVhbTogdHJ1ZSB9LAogIHsgaWQ6IDEsIG5hbWU6ICdkdW1wJywgc3RyZWFtOiB0cnVlIH0sCiAgeyBpZDogMiwgbmFtZTogJ3NlZWQnLCBzdHJlYW06IHRydWUgfSwKICB7IGlkOiAzLCBuYW1lOiAnc3RhZ2UnLCBzdHJlYW06IHRydWUgfSwKICB7IGlkOiA0LCBuYW1lOiAncmVsZWFzZScsIHN0cmVhbTogdHJ1ZSB9LAogIHsgaWQ6IDUsIG5hbWU6ICdtZXNzYWdlcycsIHN0cmVhbTogdHJ1ZSB9LAogIHsgaWQ6IDYsIG5hbWU6ICdtZXNzYWdlJyB9LAogIHsgaWQ6IDcsIG5hbWU6ICdjb25maWcnIH0sCiAgeyBpZDogOCwgbmFtZTogJ2NoZWNrcG9pbnQnIH0sCiAgeyBpZDogOSwgbmFtZTogJ3ZlcnNpb25zJyB9LAogIHsgaWQ6IDEwLCBuYW1lOiAnYWRkcmVzcycgfSwKICB7IGlkOiAxMSwgbmFtZTogJ2RldGFjaGVkJyB9LAogIHsgaWQ6IDEyLCBuYW1lOiAncGVybWl0JyB9LAogIHsgaWQ6IDEzLCBuYW1lOiAnaWRlbnRpZnknIH0sCiAgeyBpZDogMTQsIG5hbWU6ICd3YWtldXAnIH0sCiAgeyBpZDogMTUsIG5hbWU6ICd3YXJtaW5nJywgc3RyZWFtOiB0cnVlIH0sCiAgeyBpZDogMTYsIG5hbWU6ICd3YXJtdXAnIH0sCiAgeyBpZDogMTcsIG5hbWU6ICdydW4nLCBzdHJlYW06IHRydWUgfSwKICB7IGlkOiAxOCwgbmFtZTogJ3Jlc3RhcnQnIH0sCiAgeyBpZDogMTksIG5hbWU6ICd1bmxvYWRpbmcnIH0sCiAgeyBpZDogMjAsIG5hbWU6ICdjbG9zZUNsaWVudHMnIH0sCiAgeyBpZDogMjEsIG5hbWU6ICdjcmVhdGVSZXBvcnQnIH0sCiAgeyBpZDogMjIsIG5hbWU6ICdyZXBvcnRzJywgc3RyZWFtOiB0cnVlIH0sCiAgeyBpZDogMjMsIG5hbWU6ICdzaHV0ZG93bicsIHNlbmQ6IHRydWUgfSwKICB7IGlkOiAyNCwgbmFtZTogJ3NoaWZ0Jywgc3RyZWFtOiB0cnVlIH0sCiAgeyBpZDogMjUsIG5hbWU6ICdidWlsZCcsIHN0cmVhbTogdHJ1ZSB9LAogIHsgaWQ6IDI2LCBuYW1lOiAnZ2MnLCBzdHJlYW06IHRydWUgfSwKICB7IGlkOiAyNywgbmFtZTogJ2NsZWFySWRlbnRpdHknIH0sCiAgeyBpZDogMjgsIG5hbWU6ICdzaGFyZUlkZW50aXR5JyB9LAogIHsgaWQ6IDI5LCBuYW1lOiAncmVxdWVzdElkZW50aXR5JyB9LAogIHsgaWQ6IDMwLCBuYW1lOiAndHJ1c3RJZGVudGl0eScgfSwKICB7IGlkOiAzMSwgbmFtZTogJ2VuY3J5cHRpb25LZXknLCBzdHJlYW06IHRydWUgfSwKICB7IGlkOiAzMiwgbmFtZTogJ3RydXN0ZWQnIH0sCiAgeyBpZDogMzMsIG5hbWU6ICd0b3VjaCcsIHN0cmVhbTogdHJ1ZSB9LAogIHsgaWQ6IDM0LCBuYW1lOiAnX3BpbmcnIH0sCiAgeyBpZDogMzUsIG5hbWU6ICdkcm9wJywgc3RyZWFtOiB0cnVlIH0sCiAgeyBpZDogMzYsIG5hbWU6ICdkYXRhJywgc3RyZWFtOiB0cnVlIH0sCiAgeyBpZDogMzcsIG5hbWU6ICdnZXQnIH0sCiAgeyBpZDogMzgsIG5hbWU6ICdlbnRyeScgfSwKICB7IGlkOiAzOSwgbmFtZTogJ2V4aXN0cycgfSwKICB7IGlkOiA0MCwgbmFtZTogJ2NvbXBhcmUnIH0sCiAgeyBpZDogNDEsIG5hbWU6ICdyZXBvcnRlZCcgfSwKICB7IGlkOiA0MiwgbmFtZTogJ2N1dG92ZXInIH0KXQoKbW9kdWxlLmV4cG9ydHMgPSBtZXRob2RzCnsKICAibmFtZSI6ICJwZWFyLWlwYyIsCiAgInZlcnNpb24iOiAiNi40LjAiLAogICJkZXNjcmlwdGlvbiI6ICJJUEMgZm9yIFBlYXIiLAogICJtYWluIjogImluZGV4LmpzIiwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogImJyaXR0bGUgdGVzdC5qcyIsCiAgICAibGludCI6ICJzdGFuZGFyZCIKICB9LAogICJmaWxlcyI6IFsKICAgICJhcGkuanMiLAogICAgImluZGV4LmpzIiwKICAgICJtZXRob2RzLmpzIiwKICAgICJzZXJ2ZXIuanMiLAogICAgImNsaWVudC5qcyIsCiAgICAiY29uc3RhbnRzLmpzIgogIF0sCiAgImtleXdvcmRzIjogW10sCiAgImF1dGhvciI6ICJIb2xlcHVuY2giLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1mcyI6ICJeNC4wLjEiLAogICAgImJhcmUtb3MiOiAiXjMuMi4wIiwKICAgICJiYXJlLXBhdGgiOiAiXjMuMC4wIiwKICAgICJiYXJlLXBpcGUiOiAiXjQuMC41IiwKICAgICJmcmFtZWQtc3RyZWFtIjogIl4xLjAuMSIsCiAgICAiZnMtbmF0aXZlLWV4dGVuc2lvbnMiOiAiXjEuMi43IiwKICAgICJyZWFkeS1yZXNvdXJjZSI6ICJeMS4wLjMiLAogICAgInN0cmVhbXgiOiAiXjIuMTYuMSIsCiAgICAidGlueS1idWZmZXItcnBjIjogIl4yLjIuMCIsCiAgICAid2hpY2gtcnVudGltZSI6ICJeMS4yLjAiCiAgfSwKICAiaW1wb3J0cyI6IHsKICAgICJmcyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1mcyIsCiAgICAgICJkZWZhdWx0IjogImZzIgogICAgfSwKICAgICJvcyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1vcyIsCiAgICAgICJkZWZhdWx0IjogIm9zIgogICAgfSwKICAgICJwYXRoIjogewogICAgICAiYmFyZSI6ICJiYXJlLXBhdGgiLAogICAgICAiZGVmYXVsdCI6ICJwYXRoIgogICAgfSwKICAgICJuZXQiOiB7CiAgICAgICJiYXJlIjogImJhcmUtcGlwZSIsCiAgICAgICJkZWZhdWx0IjogIm5ldCIKICAgIH0KICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy40LjAiLAogICAgInN0YW5kYXJkIjogIl4xNy4xLjAiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcGVhci1pcGMuZ2l0IgogIH0sCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9wZWFyLWlwYy9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3BlYXItaXBjI3JlYWRtZSIKfQondXNlIHN0cmljdCcKY29uc3QgeyBpc0JhcmUsIGlzV2luZG93cyB9ID0gcmVxdWlyZSgnd2hpY2gtcnVudGltZScpCmNvbnN0IFBpcGUgPSByZXF1aXJlKCduZXQnKSAvLyBpbXBvcnQgbWFwcGVkIHRvIGJhcmUtcGlwZSwgbGVzcyByZXNvbHZlcwpjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpCmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKQpjb25zdCBzdHJlYW14ID0gcmVxdWlyZSgnc3RyZWFteCcpCmNvbnN0IFJQQyA9IHJlcXVpcmUoJ3RpbnktYnVmZmVyLXJwYycpCmNvbnN0IGFueSA9IHJlcXVpcmUoJ3RpbnktYnVmZmVyLXJwYy9hbnknKQpjb25zdCBSZWFkeVJlc291cmNlID0gcmVxdWlyZSgncmVhZHktcmVzb3VyY2UnKQpjb25zdCBGcmFtZWRTdHJlYW0gPSByZXF1aXJlKCdmcmFtZWQtc3RyZWFtJykKCmNvbnN0IEFQSSA9IHJlcXVpcmUoJy4vYXBpJykKY29uc3QgbWV0aG9kcyA9IHJlcXVpcmUoJy4vbWV0aG9kcycpCmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJykKCmNvbnN0IG5vb3AgPSBGdW5jdGlvbi5wcm90b3R5cGUKCmNsYXNzIFBlYXJJUENTZXJ2ZXIgZXh0ZW5kcyBSZWFkeVJlc291cmNlIHsKICAjY29ubmVjdCA9IG51bGwKICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7CiAgICBzdXBlcigpCiAgICB0aGlzLl9vcHRzID0gb3B0cwogICAgdGhpcy5fc29ja2V0UGF0aCA9IG9wdHMuc29ja2V0UGF0aAogICAgdGhpcy5faGFuZGxlcnMgPSBvcHRzLmhhbmRsZXJzIHx8IHt9CiAgICB0aGlzLl9tZXRob2RzID0gb3B0cy5tZXRob2RzID8gWy4uLm1ldGhvZHMsIC4uLm9wdHMubWV0aG9kc10gOiBtZXRob2RzCiAgICB0aGlzLl9sb2NrID0gb3B0cy5sb2NrIHx8IHBhdGguam9pbihjb25zdGFudHMuUEVBUl9ESVIsICdjb3Jlc3RvcmVzJywgJ3BsYXRmb3JtJywgJ2RiJywgJ0xPQ0snKQogICAgY29uc3QgYXBpID0gbmV3IEFQSSh0aGlzKQogICAgaWYgKG9wdHMuYXBpKSBPYmplY3QuYXNzaWduKGFwaSwgb3B0cy5hcGkpCiAgICB0aGlzLl9hcGkgPSBhcGkKICAgIHRoaXMuX2Nvbm5lY3RUaW1lb3V0ID0gb3B0cy5jb25uZWN0VGltZW91dCB8fCBjb25zdGFudHMuQ09OTkVDVF9USU1FT1VUCiAgICB0aGlzLiNjb25uZWN0ID0gb3B0cy5jb25uZWN0IHx8IG51bGwKICAgIHRoaXMuX3JwYyA9IG51bGwKICAgIHRoaXMuX2NsaWVudHMgPSBuZXcgRnJlZWxpc3QoKQogICAgdGhpcy5jbG9jayA9IGNvbnN0YW50cy5IRUFSQkVBVF9DTE9DSwogICAgdGhpcy5faW50ZXJuYWxIYW5kbGVycyA9IG51bGwKCiAgICB0aGlzLl9zZXJ2ZXIgPSBudWxsCiAgICB0aGlzLl9yYXdTdHJlYW0gPSBvcHRzLnN0cmVhbSB8fCBudWxsCiAgICB0aGlzLl9zdHJlYW0gPSBudWxsCiAgICB0aGlzLl91bmhhbmRsZWQgPSBvcHRzLnVuaGFuZGxlZCB8fCAoKGRlZikgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgZm91bmQ6JyArIGRlZi5uYW1lKSB9KQoKICAgIHRoaXMuaWQgPSBudWxsCiAgICB0aGlzLnVzZXJEYXRhID0gb3B0cy51c2VyRGF0YSB8fCBudWxsCgogICAgdGhpcy5fb25jbG9zZSA9IHRoaXMuY2xvc2UuYmluZCh0aGlzKQogICAgdGhpcy5fb25waXBlbGluZSA9IG9wdHMub25waXBlbGluZSB8fCBudWxsCiAgfQoKICBnZXQgY2xpZW50cyAoKSB7IHJldHVybiB0aGlzLl9jbGllbnRzLmFsbG9jZWQuZmlsdGVyKEJvb2xlYW4pIH0KCiAgZ2V0IGhhc0NsaWVudHMgKCkgeyByZXR1cm4gIXRoaXMuX2NsaWVudHMuZW1wdGllZCgpIH0KCiAgY2xpZW50IChpZCkgeyByZXR1cm4gdGhpcy5fY2xpZW50cy5mcm9tKGlkKSB8fCBudWxsIH0KCiAgcmVmICgpIHsKICAgIHRoaXMuX2hlYXJ0YmVhdD8ucmVmKCkKICAgIGlmICh0aGlzLl9yYXdTdHJlYW0/LnJlZikgdGhpcy5fcmF3U3RyZWFtLnJlZigpCiAgICB0aGlzLl9zZXJ2ZXI/LnJlZigpCiAgfQoKICB1bnJlZiAoKSB7CiAgICB0aGlzLl9oZWFydGJlYXQ/LnVucmVmKCkKICAgIGlmICh0aGlzLl9yYXdTdHJlYW0/LnVucmVmKSB0aGlzLl9yYXdTdHJlYW0udW5yZWYoKQogICAgdGhpcy5fc2VydmVyPy51bnJlZigpCiAgfQoKICBhc3luYyBfb3BlbiAoKSB7CiAgICBpZiAodGhpcy5fcmF3U3RyZWFtID09PSBudWxsKSB7CiAgICAgIHRoaXMuX3NlcnZlKCkKICAgIH0KCiAgICBpZiAodGhpcy5jbG9zaW5nKSByZXR1cm4KCiAgICBpZiAodGhpcy5fc2VydmVyKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKCFpc1dpbmRvd3MpIGF3YWl0IGZzLnByb21pc2VzLnVubGluayh0aGlzLl9zb2NrZXRQYXRoKQogICAgICB9IGNhdGNoIHt9CiAgICAgIGlmICh0aGlzLmNsb3NpbmcpIHJldHVybgogICAgICB0aGlzLl9zZXJ2ZXIubGlzdGVuKHRoaXMuX3NvY2tldFBhdGgpCiAgICB9CiAgfQoKICBfc2V0dXAgKGlkKSB7CiAgICB0aGlzLmlkID0gaWQKICAgIHRoaXMuX3N0cmVhbSA9IG5ldyBGcmFtZWRTdHJlYW0odGhpcy5fcmF3U3RyZWFtKQoKICAgIHRoaXMuX3JwYyA9IG5ldyBSUEMoKGRhdGEpID0+IHsgaWYgKCF0aGlzLmNsb3NpbmcpIHRoaXMuX3N0cmVhbS53cml0ZShkYXRhKSB9KQogICAgdGhpcy5fc3RyZWFtLm9uKCdkYXRhJywgKGRhdGEpID0+IHsgdGhpcy5fcnBjLnJlY3YoZGF0YSkgfSkKICAgIHRoaXMuX3N0cmVhbS5vbignZW5kJywgKCkgPT4geyB0aGlzLl9zdHJlYW0uZW5kKCkgfSkKICAgIHRoaXMuX3N0cmVhbS5vbignZXJyb3InLCB0aGlzLl9vbmNsb3NlKQogICAgdGhpcy5fc3RyZWFtLm9uKCdjbG9zZScsIHRoaXMuX29uY2xvc2UpCgogICAgdGhpcy5faW50ZXJuYWxIYW5kbGVycyA9IHsKICAgICAgX3Bpbmc6IChfLCBjbGllbnQpID0+IHsKICAgICAgICBjbGllbnQuY2xvY2sgPSBjb25zdGFudHMuSEVBUkJFQVRfQ0xPQ0sKICAgICAgICByZXR1cm4geyBiZWF0OiAncG9uZycgfQogICAgICB9CiAgICB9CgogICAgdGhpcy5fcmVnaXN0ZXIoKQogIH0KCiAgX2NyZWF0ZVNlbmRNZXRob2QgKG1ldGhvZCkgewogICAgcmV0dXJuIChwYXJhbXMgPSB7fSkgPT4gbWV0aG9kLnNlbmQocGFyYW1zKQogIH0KCiAgX2NyZWF0ZVJlcXVlc3RNZXRob2QgKG1ldGhvZCkgewogICAgcmV0dXJuIChwYXJhbXMgPSB7fSkgPT4gbWV0aG9kLnJlcXVlc3QocGFyYW1zKQogIH0KCiAgX2NyZWF0ZVN0cmVhbU1ldGhvZCAobWV0aG9kKSB7CiAgICByZXR1cm4gKHBhcmFtcyA9IHt9KSA9PiB7CiAgICAgIGNvbnN0IHN0cmVhbSA9IG1ldGhvZC5jcmVhdGVSZXF1ZXN0U3RyZWFtKCkKICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiB7IHN0cmVhbS5lbmQoKSB9KQogICAgICBzdHJlYW0ud3JpdGUocGFyYW1zKQogICAgICByZXR1cm4gc3RyZWFtCiAgICB9CiAgfQoKICBfY3JlYXRlTWV0aG9kIChkZWZpbml0aW9uKSB7CiAgICBpZiAoZGVmaW5pdGlvbi5zZW5kKSB7CiAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVTZW5kTWV0aG9kCiAgICB9CgogICAgaWYgKCFkZWZpbml0aW9uLnN0cmVhbSkgewogICAgICByZXR1cm4gdGhpcy5fY3JlYXRlUmVxdWVzdE1ldGhvZAogICAgfQoKICAgIHJldHVybiB0aGlzLl9jcmVhdGVTdHJlYW1NZXRob2QKICB9CgogIF9yZWdpc3RlciAoKSB7CiAgICBmb3IgKGNvbnN0IHsgaWQsIC4uLmRlZiB9IG9mIHRoaXMuX21ldGhvZHMpIHsKICAgICAgaWYgKGNvbnN0YW50cy5JTExFR0FMX01FVEhPRFMuaGFzKGRlZi5uYW1lKSkgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIE1ldGhvZDogJyArIGRlZi5uYW1lKQogICAgICBjb25zdCBmbiA9IHRoaXMuX2hhbmRsZXJzW2RlZi5uYW1lXSB8fCB0aGlzLl9pbnRlcm5hbEhhbmRsZXJzPy5bZGVmLm5hbWVdIHx8IG51bGwKICAgICAgY29uc3QgY2FsbEhhbmRsZXIgPSAocGFyYW1zID0ge30pID0+IGZuLmNhbGwodGhpcy5faGFuZGxlcnMsIHBhcmFtcywgdGhpcykKICAgICAgY29uc3QgYXBpID0gdGhpcy5fYXBpW2RlZi5uYW1lXT8uYmluZCh0aGlzLl9hcGkpIHx8IGZuID8gKCkgPT4gY2FsbEhhbmRsZXIgOiB0aGlzLl9jcmVhdGVNZXRob2QoZGVmKQoKICAgICAgdGhpc1tkZWYubmFtZV0gPSBhcGkodGhpcy5fcnBjLnJlZ2lzdGVyKCtpZCwgewogICAgICAgIHJlcXVlc3Q6IGFueSwKICAgICAgICByZXNwb25zZTogYW55LAogICAgICAgIG9ucmVxdWVzdDogZGVmLnN0cmVhbQogICAgICAgICAgPyBudWxsCiAgICAgICAgICA6IChwYXJhbXMpID0+IHsKICAgICAgICAgICAgICByZXR1cm4gZm4gPyBmbi5jYWxsKHRoaXMuX2hhbmRsZXJzLCBwYXJhbXMsIHRoaXMpIDogdGhpcy5fdW5oYW5kbGVkKGRlZiwgcGFyYW1zKQogICAgICAgICAgICB9LAogICAgICAgIG9uc3RyZWFtOiBkZWYuc3RyZWFtID8gdGhpcy5fY3JlYXRlT25TdHJlYW0oZm4sIChwYXJhbXMpID0+IHRoaXMuX3VuaGFuZGxlZChkZWYsIHBhcmFtcykpIDogbnVsbAogICAgICB9KSwgdGhpcykKICAgIH0KICB9CgogIF9jcmVhdGVPblN0cmVhbSAoZm4sIHVuaGFuZGxlZCkgewogICAgaWYgKGZuID09PSBudWxsKSBmbiA9IHVuaGFuZGxlZAogICAgcmV0dXJuIGFzeW5jIChzdHJlYW0pID0+IHsKICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiBzdHJlYW0uZW5kKCkpCiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyKSA9PiBjb25zb2xlLmxvZyhlcnIpKQogICAgICB0cnkgewogICAgICAgIGZvciBhd2FpdCAoY29uc3QgcGFyYW1zIG9mIHN0cmVhbSkgewogICAgICAgICAgY29uc3Qgc3JjID0gZm4uY2FsbCh0aGlzLl9oYW5kbGVycywgcGFyYW1zLCB0aGlzKQogICAgICAgICAgY29uc3QgaXNTdHJlYW0gPSBzdHJlYW14LmlzU3RyZWFtKHNyYykKICAgICAgICAgIGlmIChpc1N0cmVhbSkgewogICAgICAgICAgICBzdHJlYW14LnBpcGVsaW5lKHNyYywgc3RyZWFtKQogICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuX29ucGlwZWxpbmUgPT09ICdmdW5jdGlvbicpIHRoaXMuX29ucGlwZWxpbmUoc3JjLCBzdHJlYW0pCiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuX29ucGlwZWxpbmUgPT09ICdmdW5jdGlvbicpIHRoaXMuX29ucGlwZWxpbmUoc3JjLCBzdHJlYW0pCiAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgZGF0YSBvZiBzcmMpIHN0cmVhbS53cml0ZShkYXRhKQogICAgICAgICAgICBzdHJlYW0uZW5kKCkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgIHN0cmVhbS5kZXN0cm95KGVycikKICAgICAgfQogICAgfQogIH0KCiAgX3NlcnZlICgpIHsKICAgIHRoaXMuX3NlcnZlciA9IFBpcGUuY3JlYXRlU2VydmVyKCkKICAgIHRoaXMuX3NlcnZlci5vbignY29ubmVjdGlvbicsIChyYXdTdHJlYW0pID0+IHsKICAgICAgY29uc3QgY2xpZW50ID0gbmV3IHRoaXMuY29uc3RydWN0b3IoeyAuLi50aGlzLl9vcHRzLCBzdHJlYW06IHJhd1N0cmVhbSB9KQogICAgICBjb25zdCBpZCA9IHRoaXMuX2NsaWVudHMuYWxsb2MoY2xpZW50KQogICAgICBjbGllbnQuX3NldHVwKGlkKQogICAgICBjbGllbnQub25jZSgnY2xvc2UnLCAoKSA9PiB7IHRoaXMuX2NsaWVudHMuZnJlZShjbGllbnQuaWQpIH0pCiAgICAgIHRoaXMuZW1pdCgnY2xpZW50JywgY2xpZW50KQogICAgfSkKICAgIHRoaXMuX2hlYXJ0YmVhdCA9IHNldEludGVydmFsKCgpID0+IHsKICAgICAgZm9yIChjb25zdCBjbGllbnQgb2YgdGhpcy5jbGllbnRzKSB7CiAgICAgICAgY2xpZW50LmNsb2NrLS0KICAgICAgICBpZiAoY2xpZW50LmNsb2NrIDw9IDApIHsKICAgICAgICAgIGNsaWVudC5jbG9zZSgpCiAgICAgICAgfQogICAgICB9CiAgICB9LCBjb25zdGFudHMuSEVBUlRCRUFUX0lOVEVSVkFMKQogICAgdGhpcy5fcnBjID0gbmV3IFJQQyhub29wKQogICAgdGhpcy5fcmVnaXN0ZXIoKQogIH0KCiAgX3BpcGUgKCkgewogICAgaWYgKGlzQmFyZSkgcmV0dXJuIG5ldyBQaXBlKHRoaXMuX3NvY2tldFBhdGgpCiAgICBjb25zdCBzb2NrID0gbmV3IFBpcGUuU29ja2V0KCkKICAgIHNvY2suc2V0Tm9EZWxheSh0cnVlKQogICAgc29jay5jb25uZWN0KHRoaXMuX3NvY2tldFBhdGgpCiAgICByZXR1cm4gc29jawogIH0KCiAgX3dhaXRGb3JDbG9zZSAoKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgaWYgKHRoaXMuX3N0cmVhbS5kZXN0cm95ZWQpIHsKICAgICAgICByZXNvbHZlKCkKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9zdHJlYW0ub25jZSgnY2xvc2UnLCByZXNvbHZlKQogICAgICAgIGlmICh0aGlzLmNsb2NrID4gMCkgewogICAgICAgICAgdGhpcy5fc3RyZWFtLmVuZCgpCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuX3N0cmVhbS5kZXN0cm95KCkKICAgICAgICB9CiAgICAgIH0KICAgIH0pCiAgfQoKICBhc3luYyBfY2xvc2UgKCkgeyAvLyBuZXZlciB0aHJvd3MsIG11c3QgbmV2ZXIgdGhyb3cKICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faGVhcnRiZWF0KQoKICAgIGlmICh0aGlzLl9zdHJlYW0pIHsKICAgICAgYXdhaXQgdGhpcy5fd2FpdEZvckNsb3NlKCkKICAgICAgdGhpcy5fcmF3U3RyZWFtID0gbnVsbAogICAgICB0aGlzLl9zdHJlYW0gPSBudWxsCiAgICB9CiAgICBpZiAodGhpcy5fc2VydmVyKSB7CiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgICAgY29uc3QgY2xvc2luZ0NsaWVudHMgPSBbXQogICAgICAgIGZvciAoY29uc3QgY2xpZW50IG9mIHRoaXMuX2NsaWVudHMpIGNsb3NpbmdDbGllbnRzLnB1c2goY2xpZW50LmNsb3NlKCkpCiAgICAgICAgY29uc3QgY2xpZW50c0Nsb3NpbmcgPSBQcm9taXNlLmFsbFNldHRsZWQoY2xvc2luZ0NsaWVudHMpCiAgICAgICAgdGhpcy5fc2VydmVyLmNsb3NlKGFzeW5jICgpID0+IHsKICAgICAgICAgIGF3YWl0IGNsaWVudHNDbG9zaW5nCiAgICAgICAgICByZXNvbHZlKCkKICAgICAgICB9KQogICAgICB9KQogICAgfQogIH0KfQoKY2xhc3MgRnJlZWxpc3QgewogIGFsbG9jZWQgPSBbXQogIGZyZWVkID0gW10KCiAgbmV4dElkICgpIHsKICAgIHJldHVybiB0aGlzLmZyZWVkLmxlbmd0aCA9PT0gMCA/IHRoaXMuYWxsb2NlZC5sZW5ndGggOiB0aGlzLmZyZWVkW3RoaXMuZnJlZWQubGVuZ3RoIC0gMV0KICB9CgogIGFsbG9jIChpdGVtKSB7CiAgICBjb25zdCBpZCA9IHRoaXMuZnJlZWQubGVuZ3RoID09PSAwID8gdGhpcy5hbGxvY2VkLnB1c2gobnVsbCkgLSAxIDogdGhpcy5mcmVlZC5wb3AoKQogICAgdGhpcy5hbGxvY2VkW2lkXSA9IGl0ZW0KICAgIHJldHVybiBpZAogIH0KCiAgZnJlZSAoaWQpIHsKICAgIHRoaXMuZnJlZWQucHVzaChpZCkKICAgIHRoaXMuYWxsb2NlZFtpZF0gPSBudWxsCiAgfQoKICBmcm9tIChpZCkgewogICAgcmV0dXJuIGlkIDwgdGhpcy5hbGxvY2VkLmxlbmd0aCA/IHRoaXMuYWxsb2NlZFtpZF0gOiBudWxsCiAgfQoKICBlbXB0aWVkICgpIHsKICAgIHJldHVybiB0aGlzLmZyZWVkLmxlbmd0aCA9PT0gdGhpcy5hbGxvY2VkLmxlbmd0aAogIH0KCiAgKiBbU3ltYm9sLml0ZXJhdG9yXSAoKSB7CiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5hbGxvY2VkKSB7CiAgICAgIGlmIChpdGVtID09PSBudWxsKSBjb250aW51ZQogICAgICB5aWVsZCBpdGVtCiAgICB9CiAgfQp9Cgptb2R1bGUuZXhwb3J0cyA9IFBlYXJJUENTZXJ2ZXIKJ3VzZSBzdHJpY3QnCmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJykKY29uc3QgeyBlbmNvZGUsIGRlY29kZSB9ID0gcmVxdWlyZSgnaHlwZXJjb3JlLWlkLWVuY29kaW5nJykKY29uc3QgRklMRSA9ICdmaWxlOicKY29uc3QgUEVBUiA9ICdwZWFyOicKY29uc3QgRE9VQiA9ICcvLycKCm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUGVhckxpbmsgewogIGNvbnN0cnVjdG9yIChhbGlhc2VzID0ge30sIEUgPSBFcnJvcikgewogICAgdGhpcy5hbGlhc2VzID0gYWxpYXNlcwogICAgdGhpcy5FcnJvciA9IEUKICB9CgogIG5vcm1hbGl6ZSAobGluaykgewogICAgLy8gaWYgbGluayBoYXMgdXJsIGZvcm1hdCwgc2VwYXJhdG9yIGlzIGFsd2F5cyAnLycgZXZlbiBpbiBXaW5kb3dzCiAgICBpZiAobGluay5zdGFydHNXaXRoKEZJTEUgKyBET1VCKSkgcmV0dXJuIGxpbmsuZW5kc1dpdGgoJy8nKSA/IGxpbmsuc2xpY2UoMCwgLTEpIDogbGluawogICAgZWxzZSByZXR1cm4gbGluay5lbmRzV2l0aChwYXRoLnNlcCkgPyBsaW5rLnNsaWNlKDAsIC0xKSA6IGxpbmsKICB9CgogIHNlcmlhbGl6ZSAoeyBwcm90b2NvbCwgcGF0aG5hbWUsIHNlYXJjaCA9ICcnLCBoYXNoID0gJycsIGRyaXZlIH0pIHsKICAgIGlmIChwcm90b2NvbCA9PT0gRklMRSkgcmV0dXJuIGAke3Byb3RvY29sfS8vJHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9YAoKICAgIGlmIChwcm90b2NvbCA9PT0gUEVBUikgewogICAgICBjb25zdCBrZXkgPSBkcml2ZS5hbGlhcyB8fCBlbmNvZGUoZHJpdmUua2V5KQogICAgICBjb25zdCBiYXNlID0gW2RyaXZlLmZvcmssIGRyaXZlLmxlbmd0aCwga2V5LCBkcml2ZS5oYXNoICYmIGVuY29kZShkcml2ZS5oYXNoKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKQogICAgICByZXR1cm4gYCR7cHJvdG9jb2x9Ly8ke2Jhc2V9JHtwYXRobmFtZX0ke3NlYXJjaH0ke2hhc2h9YAogICAgfQoKICAgIHRocm93IG5ldyB0aGlzLkVycm9yKCdVbnN1cHBvcnRlZCBwcm90b2NvbCcpCiAgfQoKICBwYXJzZSAodXJsKSB7CiAgICBjb25zdCB7IGFsaWFzZXMsIEVycm9yIH0gPSB0aGlzCiAgICBpZiAoIXVybCkgdGhyb3cgbmV3IEVycm9yKCdObyBsaW5rIHNwZWNpZmllZCcpCiAgICBjb25zdCBpc1BhdGggPSB1cmwuc3RhcnRzV2l0aChQRUFSICsgRE9VQikgPT09IGZhbHNlICYmIHVybC5zdGFydHNXaXRoKEZJTEUgKyBET1VCKSA9PT0gZmFsc2UKICAgIGNvbnN0IGlzUmVsYXRpdmVQYXRoID0gaXNQYXRoICYmIHVybFswXSAhPT0gJy8nICYmIHVybFsxXSAhPT0gJzonCiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGFsaWFzZXMpLm1hcCgoW2ssIHZdKSA9PiBbZW5jb2RlKHYpLCBrXSkpCiAgICBjb25zdCB7CiAgICAgIHByb3RvY29sLAogICAgICBwYXRobmFtZSwKICAgICAgaG9zdG5hbWUsCiAgICAgIHNlYXJjaCwKICAgICAgaGFzaAogICAgfSA9IGlzUmVsYXRpdmVQYXRoID8gbmV3IFVSTCh1cmwsIEZJTEUgKyBET1VCICsgcGF0aC5yZXNvbHZlKCcuJykgKyAnLycpIDogbmV3IFVSTChpc1BhdGggPyBGSUxFICsgRE9VQiArIHVybCA6IHVybCkKICAgIGlmIChwcm90b2NvbCA9PT0gRklMRSkgewogICAgICAvLyBmaWxlOi8vL3NvbWUvcGF0aC90by9hL2ZpbGUuanMKICAgICAgY29uc3Qgc3RhcnRzV2l0aFJvb3QgPSBob3N0bmFtZSA9PT0gJycKICAgICAgaWYgKCFwYXRobmFtZSkgdGhyb3cgbmV3IEVycm9yKCdQYXRoIGlzIG1pc3NpbmcnKQogICAgICBpZiAoIXN0YXJ0c1dpdGhSb290KSB0aHJvdyBuZXcgRXJyb3IoJ1BhdGggbmVlZHMgdG8gc3RhcnQgZnJvbSB0aGUgcm9vdCwgIi8iJykKICAgICAgcmV0dXJuIHsKICAgICAgICBwcm90b2NvbCwKICAgICAgICBwYXRobmFtZSwKICAgICAgICBzZWFyY2gsCiAgICAgICAgaGFzaCwKICAgICAgICBvcmlnaW46IHRoaXMubm9ybWFsaXplKGAke3Byb3RvY29sfS8vJHtob3N0bmFtZX0ke3BhdGhuYW1lfWApLAogICAgICAgIGRyaXZlOiB7CiAgICAgICAgICBrZXk6IG51bGwsCiAgICAgICAgICBsZW5ndGg6IG51bGwsCiAgICAgICAgICBmb3JrOiBudWxsLAogICAgICAgICAgaGFzaDogbnVsbAogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIGlmIChwcm90b2NvbCA9PT0gUEVBUikgewogICAgICBjb25zdCBbZm9yaywgbGVuZ3RoLCBrZXlPckFsaWFzLCBhcHBoYXNoXSA9IGhvc3RuYW1lLnNwbGl0KCcuJykKICAgICAgY29uc3QgcGFydHMgPSBob3N0bmFtZS5zcGxpdCgnLicpLmxlbmd0aAoKICAgICAgaWYgKHBhcnRzID09PSAxKSB7IC8vIHBlYXI6Ly9rZXlPckFsaWFzWy9zb21lL3BhdGhdCiAgICAgICAgY29uc3Qga2V5ID0gYWxpYXNlc1tob3N0bmFtZV0gfHwgZGVjb2RlKGhvc3RuYW1lKQogICAgICAgIGNvbnN0IG9yaWdpbiA9IGtleXNbZW5jb2RlKGtleSldID8gYCR7cHJvdG9jb2x9Ly8ke2tleXNbZW5jb2RlKGtleSldfWAgOiBgJHtwcm90b2NvbH0vLyR7aG9zdG5hbWV9YAogICAgICAgIGNvbnN0IGFsaWFzID0gYWxpYXNlc1tob3N0bmFtZV0gPyBob3N0bmFtZSA6IG51bGwKICAgICAgICByZXR1cm4gewogICAgICAgICAgcHJvdG9jb2wsCiAgICAgICAgICBwYXRobmFtZSwKICAgICAgICAgIHNlYXJjaCwKICAgICAgICAgIGhhc2gsCiAgICAgICAgICBvcmlnaW4sCiAgICAgICAgICBkcml2ZTogewogICAgICAgICAgICBrZXksCiAgICAgICAgICAgIGxlbmd0aDogbnVsbCwKICAgICAgICAgICAgZm9yazogbnVsbCwKICAgICAgICAgICAgaGFzaDogbnVsbCwKICAgICAgICAgICAgYWxpYXMKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChwYXJ0cyA9PT0gMikgeyAvLyBwZWFyOi8vZm9yay5sZW5ndGhbL3NvbWUvcGF0aF0KICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdCBob3N0bmFtZScpCiAgICAgIH0KCiAgICAgIGNvbnN0IGFsaWFzID0gYWxpYXNlc1trZXlPckFsaWFzXSA/IGtleU9yQWxpYXMgOiBudWxsCiAgICAgIGNvbnN0IGtleSA9IGFsaWFzZXNba2V5T3JBbGlhc10gfHwgZGVjb2RlKGtleU9yQWxpYXMpCiAgICAgIGNvbnN0IG9yaWdpbiA9IGtleXNbZW5jb2RlKGtleSldID8gYCR7cHJvdG9jb2x9Ly8ke2tleXNbZW5jb2RlKGtleSldfWAgOiBgJHtwcm90b2NvbH0vLyR7a2V5T3JBbGlhc31gCgogICAgICBpZiAocGFydHMgPT09IDMpIHsgLy8gcGVhcjovL2ZvcmsubGVuZ3RoLmtleU9yQWxpYXNbL3NvbWUvcGF0aF0KICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoK2ZvcmspIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKCtsZW5ndGgpKSB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdCBob3N0bmFtZScpCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHByb3RvY29sLAogICAgICAgICAgcGF0aG5hbWUsCiAgICAgICAgICBzZWFyY2gsCiAgICAgICAgICBoYXNoLAogICAgICAgICAgb3JpZ2luLAogICAgICAgICAgZHJpdmU6IHsKICAgICAgICAgICAga2V5LAogICAgICAgICAgICBsZW5ndGg6IE51bWJlcihsZW5ndGgpLAogICAgICAgICAgICBmb3JrOiBOdW1iZXIoZm9yayksCiAgICAgICAgICAgIGhhc2g6IG51bGwsCiAgICAgICAgICAgIGFsaWFzCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAocGFydHMgPT09IDQpIHsgLy8gcGVhcjovL2ZvcmsubGVuZ3RoLmtleU9yQWxpYXMuZGhhc2hbL3NvbWUvcGF0aF0KICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoK2ZvcmspIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKCtsZW5ndGgpKSB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdCBob3N0bmFtZScpCgogICAgICAgIHJldHVybiB7CiAgICAgICAgICBwcm90b2NvbCwKICAgICAgICAgIHBhdGhuYW1lLAogICAgICAgICAgc2VhcmNoLAogICAgICAgICAgaGFzaCwKICAgICAgICAgIG9yaWdpbiwKICAgICAgICAgIGRyaXZlOiB7CiAgICAgICAgICAgIGtleSwKICAgICAgICAgICAgbGVuZ3RoOiBOdW1iZXIobGVuZ3RoKSwKICAgICAgICAgICAgZm9yazogTnVtYmVyKGZvcmspLAogICAgICAgICAgICBoYXNoOiBkZWNvZGUoYXBwaGFzaCksCiAgICAgICAgICAgIGFsaWFzCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdCBob3N0bmFtZScpCiAgICB9CgogICAgdGhyb3cgbmV3IEVycm9yKCdQcm90b2NvbCBpcyBub3Qgc3VwcG9ydGVkJykKICB9Cn0KewogICJuYW1lIjogInBlYXItbGluayIsCiAgInZlcnNpb24iOiAiMy4xLjAiLAogICJkZXNjcmlwdGlvbiI6ICJQYXJzZSBQZWFyIExpbmtzIiwKICAibWFpbiI6ICJpbmRleC5qcyIsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJicml0dGxlIHRlc3QvaW5kZXgudGVzdC5qcyAmJiBzdGFuZGFyZCIsCiAgICAidGVzdDpiYXJlIjogImJhcmUgdGVzdC9pbmRleC50ZXN0LmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3BlYXItbGluay5naXQiCiAgfSwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiCiAgXSwKICAiaW1wb3J0cyI6IHsKICAgICJwYXRoIjogewogICAgICAiYmFyZSI6ICJiYXJlLXBhdGgiLAogICAgICAiZGVmYXVsdCI6ICJwYXRoIgogICAgfQogIH0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2giLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcGVhci1saW5rL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcGVhci1saW5rI3JlYWRtZSIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJoeXBlcmNvcmUtaWQtZW5jb2RpbmciOiAiXjEuMi4wIiwKICAgICJ3aGljaC1ydW50aW1lIjogIl4xLjIuMSIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1wYXRoIjogIl4zLjAuMCIsCiAgICAiYnJpdHRsZSI6ICJeMy40LjEiLAogICAgInN0YW5kYXJkIjogIl4xNy4xLjAiCiAgfQp9CnJlcXVpcmUuYWRkb24gPSByZXF1aXJlKCdyZXF1aXJlLWFkZG9uJykKCm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZS5hZGRvbignLicsIF9fZmlsZW5hbWUpCmNvbnN0IGI0YSA9IHJlcXVpcmUoJ2I0YScpCmNvbnN0IGJpbmRpbmcgPSByZXF1aXJlKCcuL2JpbmRpbmcnKQoKZXhwb3J0cy5nZXQgPSBmdW5jdGlvbiBnZXQgKGZpZWxkLCBiaXQpIHsKICBjb25zdCBuID0gZmllbGQuYnl0ZUxlbmd0aCAqIDgKCiAgaWYgKGJpdCA8IDApIGJpdCArPSBuCiAgaWYgKGJpdCA8IDAgfHwgYml0ID49IG4pIHJldHVybiBmYWxzZQoKICByZXR1cm4gYmluZGluZy5xdWlja2JpdF9uYXBpX2dldChmaWVsZCwgYml0KSAhPT0gMAp9CgpleHBvcnRzLnNldCA9IGZ1bmN0aW9uIHNldCAoZmllbGQsIGJpdCwgdmFsdWUgPSB0cnVlKSB7CiAgY29uc3QgbiA9IGZpZWxkLmJ5dGVMZW5ndGggKiA4CgogIGlmIChiaXQgPCAwKSBiaXQgKz0gbgogIGlmIChiaXQgPCAwIHx8IGJpdCA+PSBuKSByZXR1cm4gZmFsc2UKCiAgcmV0dXJuIGJpbmRpbmcucXVpY2tiaXRfbmFwaV9zZXQoZmllbGQsIGJpdCwgdmFsdWUgPyAxIDogMCkgIT09IDAKfQoKZXhwb3J0cy5maWxsID0gZnVuY3Rpb24gZmlsbCAoZmllbGQsIHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IGZpZWxkLmJ5dGVMZW5ndGggKiA4KSB7CiAgY29uc3QgbiA9IGZpZWxkLmJ5dGVMZW5ndGggKiA4CgogIGlmIChzdGFydCA8IDApIHN0YXJ0ICs9IG4KICBpZiAoZW5kIDwgMCkgZW5kICs9IG4KICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IGZpZWxkLmJ5dGVMZW5ndGggKiA4IHx8IHN0YXJ0ID49IGVuZCkgcmV0dXJuIGZpZWxkCgogIGJpbmRpbmcucXVpY2tiaXRfbmFwaV9maWxsKGZpZWxkLCB2YWx1ZSA/IDEgOiAwLCBzdGFydCwgZW5kKQogIHJldHVybiBmaWVsZAp9CgpleHBvcnRzLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIgKGZpZWxkLCAuLi5jaHVua3MpIHsKICBiaW5kaW5nLnF1aWNrYml0X25hcGlfY2xlYXIoZmllbGQsIGNodW5rcykKfQoKZXhwb3J0cy5maW5kRmlyc3QgPSBmdW5jdGlvbiBmaW5kRmlyc3QgKGZpZWxkLCB2YWx1ZSwgcG9zaXRpb24gPSAwKSB7CiAgY29uc3QgbiA9IGZpZWxkLmJ5dGVMZW5ndGggKiA4CgogIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IG4KICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiA9IDAKICBpZiAocG9zaXRpb24gPj0gbikgcmV0dXJuIC0xCgogIHJldHVybiBiaW5kaW5nLnF1aWNrYml0X25hcGlfZmluZF9maXJzdChmaWVsZCwgdmFsdWUgPyAxIDogMCwgcG9zaXRpb24pCn0KCmV4cG9ydHMuZmluZExhc3QgPSBmdW5jdGlvbiBmaW5kTGFzdCAoZmllbGQsIHZhbHVlLCBwb3NpdGlvbiA9IGZpZWxkLmJ5dGVMZW5ndGggKiA4IC0gMSkgewogIGNvbnN0IG4gPSBmaWVsZC5ieXRlTGVuZ3RoICogOAoKICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSBuCiAgaWYgKHBvc2l0aW9uIDwgMCkgcmV0dXJuIC0xCiAgaWYgKHBvc2l0aW9uID49IG4pIHBvc2l0aW9uID0gbiAtIDEKCiAgcmV0dXJuIGJpbmRpbmcucXVpY2tiaXRfbmFwaV9maW5kX2xhc3QoZmllbGQsIHZhbHVlID8gMSA6IDAsIHBvc2l0aW9uKQp9Cgpjb25zdCBJbmRleCA9IGV4cG9ydHMuSW5kZXggPSBjbGFzcyBJbmRleCB7CiAgc3RhdGljIGZyb20gKGZpZWxkT3JDaHVua3MsIGJ5dGVMZW5ndGggPSAtMSkgewogICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRPckNodW5rcykpIHsKICAgICAgcmV0dXJuIG5ldyBTcGFyc2VJbmRleChmaWVsZE9yQ2h1bmtzLCBieXRlTGVuZ3RoKQogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG5ldyBEZW5zZUluZGV4KGZpZWxkT3JDaHVua3MsIGJ5dGVMZW5ndGgpCiAgICB9CiAgfQoKICBjb25zdHJ1Y3RvciAoYnl0ZUxlbmd0aCkgewogICAgdGhpcy5fYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGgKICAgIHRoaXMuaGFuZGxlID0gYjRhLmFsbG9jVW5zYWZlKGJpbmRpbmcuc2l6ZW9mX3F1aWNrYml0X2luZGV4X3QpCiAgfQoKICBnZXQgYnl0ZUxlbmd0aCAoKSB7CiAgICByZXR1cm4gdGhpcy5fYnl0ZUxlbmd0aAogIH0KCiAgc2tpcEZpcnN0ICh2YWx1ZSwgcG9zaXRpb24gPSAwKSB7CiAgICBjb25zdCBuID0gdGhpcy5ieXRlTGVuZ3RoICogOAoKICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IG4KICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uID0gMAogICAgaWYgKHBvc2l0aW9uID49IG4pIHJldHVybiBuIC0gMQoKICAgIHJldHVybiBiaW5kaW5nLnF1aWNrYml0X25hcGlfc2tpcF9maXJzdCh0aGlzLmhhbmRsZSwgdGhpcy5ieXRlTGVuZ3RoLCB2YWx1ZSA/IDEgOiAwLCBwb3NpdGlvbikKICB9CgogIHNraXBMYXN0ICh2YWx1ZSwgcG9zaXRpb24gPSB0aGlzLmJ5dGVMZW5ndGggKiA4IC0gMSkgewogICAgY29uc3QgbiA9IHRoaXMuYnl0ZUxlbmd0aCAqIDgKCiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSBuCiAgICBpZiAocG9zaXRpb24gPCAwKSByZXR1cm4gMAogICAgaWYgKHBvc2l0aW9uID49IG4pIHBvc2l0aW9uID0gbiAtIDEKCiAgICByZXR1cm4gYmluZGluZy5xdWlja2JpdF9uYXBpX3NraXBfbGFzdCh0aGlzLmhhbmRsZSwgdGhpcy5ieXRlTGVuZ3RoLCB2YWx1ZSA/IDEgOiAwLCBwb3NpdGlvbikKICB9Cn0KCmNsYXNzIERlbnNlSW5kZXggZXh0ZW5kcyBJbmRleCB7CiAgY29uc3RydWN0b3IgKGZpZWxkLCBieXRlTGVuZ3RoKSB7CiAgICBzdXBlcihieXRlTGVuZ3RoKQogICAgdGhpcy5maWVsZCA9IGZpZWxkCgogICAgYmluZGluZy5xdWlja2JpdF9uYXBpX2luZGV4X2luaXQodGhpcy5oYW5kbGUsIHRoaXMuZmllbGQpCiAgfQoKICBnZXQgYnl0ZUxlbmd0aCAoKSB7CiAgICBpZiAodGhpcy5fYnl0ZUxlbmd0aCAhPT0gLTEpIHJldHVybiB0aGlzLl9ieXRlTGVuZ3RoCiAgICByZXR1cm4gdGhpcy5maWVsZC5ieXRlTGVuZ3RoCiAgfQoKICB1cGRhdGUgKGJpdCkgewogICAgY29uc3QgbiA9IHRoaXMuYnl0ZUxlbmd0aCAqIDgKCiAgICBpZiAoYml0IDwgMCkgYml0ICs9IG4KICAgIGlmIChiaXQgPCAwIHx8IGJpdCA+PSBuKSByZXR1cm4gZmFsc2UKCiAgICByZXR1cm4gYmluZGluZy5xdWlja2JpdF9uYXBpX2luZGV4X3VwZGF0ZSh0aGlzLmhhbmRsZSwgdGhpcy5maWVsZCwgYml0KSAhPT0gMAogIH0KfQoKZnVuY3Rpb24gc2VsZWN0Q2h1bmsgKGNodW5rcywgb2Zmc2V0KSB7CiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKICAgIGNvbnN0IG5leHQgPSBjaHVua3NbaV0KCiAgICBjb25zdCBzdGFydCA9IG5leHQub2Zmc2V0CiAgICBjb25zdCBlbmQgPSBuZXh0Lm9mZnNldCArIG5leHQuZmllbGQuYnl0ZUxlbmd0aAoKICAgIGlmIChvZmZzZXQgPj0gc3RhcnQgJiYgb2Zmc2V0ICsgMTYgPD0gZW5kKSB7CiAgICAgIHJldHVybiBuZXh0CiAgICB9CiAgfQoKICByZXR1cm4gbnVsbAp9CgpjbGFzcyBTcGFyc2VJbmRleCBleHRlbmRzIEluZGV4IHsKICBjb25zdHJ1Y3RvciAoY2h1bmtzLCBieXRlTGVuZ3RoKSB7CiAgICBzdXBlcihieXRlTGVuZ3RoKQogICAgdGhpcy5jaHVua3MgPSBjaHVua3MKCiAgICBiaW5kaW5nLnF1aWNrYml0X25hcGlfaW5kZXhfaW5pdF9zcGFyc2UodGhpcy5oYW5kbGUsIHRoaXMuY2h1bmtzKQogIH0KCiAgZ2V0IGJ5dGVMZW5ndGggKCkgewogICAgaWYgKHRoaXMuX2J5dGVMZW5ndGggIT09IC0xKSByZXR1cm4gdGhpcy5fYnl0ZUxlbmd0aAogICAgY29uc3QgbGFzdCA9IHRoaXMuY2h1bmtzW3RoaXMuY2h1bmtzLmxlbmd0aCAtIDFdCiAgICByZXR1cm4gbGFzdCA/IGxhc3Qub2Zmc2V0ICsgbGFzdC5maWVsZC5ieXRlTGVuZ3RoIDogMAogIH0KCiAgdXBkYXRlIChiaXQpIHsKICAgIGNvbnN0IG4gPSB0aGlzLmJ5dGVMZW5ndGggKiA4CgogICAgaWYgKGJpdCA8IDApIGJpdCArPSBuCiAgICBpZiAoYml0IDwgMCB8fCBiaXQgPj0gbikgcmV0dXJuIGZhbHNlCgogICAgY29uc3QgaiA9IE1hdGguZmxvb3IoYml0IC8gMTI4KQoKICAgIGNvbnN0IG9mZnNldCA9IGogKiAxNgoKICAgIGNvbnN0IGNodW5rID0gc2VsZWN0Q2h1bmsodGhpcy5jaHVua3MsIG9mZnNldCkKCiAgICBpZiAoY2h1bmsgPT09IG51bGwpIHJldHVybiBmYWxzZQoKICAgIHJldHVybiBiaW5kaW5nLnF1aWNrYml0X25hcGlfaW5kZXhfdXBkYXRlX3NwYXJzZSh0aGlzLmhhbmRsZSwgY2h1bmsuZmllbGQsIGNodW5rLm9mZnNldCwgYml0KSAhPT0gMAogIH0KfQp7CiAgIm5hbWUiOiAicXVpY2tiaXQtbmF0aXZlIiwKICAidmVyc2lvbiI6ICIyLjMuNiIsCiAgImRlc2NyaXB0aW9uIjogImxpYnF1aWNrYml0IEphdmFTY3JpcHQgYmluZGluZ3MgZm9yIE5vZGUuanMiLAogICJtYWluIjogImluZGV4LmpzIiwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgIm1hY3Jvcy5oIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IiwKICAgICJwcmVidWlsZHMiCiAgXSwKICAiYWRkb24iOiB0cnVlLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAibnBtIHJ1biBsaW50ICYmIG5wbSBydW4gdGVzdDpiYXJlICYmIG5wbSBydW4gdGVzdDpub2RlIiwKICAgICJ0ZXN0OmJhcmUiOiAiYmFyZSB0ZXN0Lm1qcyIsCiAgICAidGVzdDpub2RlIjogIm5vZGUgdGVzdC5tanMiLAogICAgImxpbnQiOiAic3RhbmRhcmQiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcXVpY2tiaXQtbmF0aXZlLmdpdCIKICB9LAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3F1aWNrYml0LW5hdGl2ZS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3F1aWNrYml0LW5hdGl2ZSNyZWFkbWUiLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYjRhIjogIl4xLjYuMCIsCiAgICAicmVxdWlyZS1hZGRvbiI6ICJeMS4xLjAiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuMS4wIiwKICAgICJjbWFrZS1iYXJlIjogIl4xLjEuNyIsCiAgICAiY21ha2UtZmV0Y2giOiAiXjEuMS4wIiwKICAgICJjbWFrZS1uYXBpIjogIl4xLjAuMiIsCiAgICAic3RhbmRhcmQiOiAiXjE3LjAuMCIKICB9Cn0KY29uc3Qgc2ltZGxlID0gcmVxdWlyZSgnc2ltZGxlLXVuaXZlcnNhbCcpCgpjb25zdCBJTkRFWF9MRU4gPSAoMTYgLyogcm9vdCAqLyArIDEyOCAqIDE2IC8qIGNoaWxkcmVuICovKSAqIDIKCmNvbnN0IGdldCA9IGV4cG9ydHMuZ2V0ID0gZnVuY3Rpb24gZ2V0IChmaWVsZCwgYml0KSB7CiAgY29uc3QgbiA9IGZpZWxkLmJ5dGVMZW5ndGggKiA4CgogIGlmIChiaXQgPCAwKSBiaXQgKz0gbgogIGlmIChiaXQgPCAwIHx8IGJpdCA+PSBuKSByZXR1cm4gZmFsc2UKCiAgY29uc3QgbSA9IGZpZWxkLkJZVEVTX1BFUl9FTEVNRU5UICogOAoKICBjb25zdCBvZmZzZXQgPSBiaXQgJiAobSAtIDEpCiAgY29uc3QgaSA9IChiaXQgLSBvZmZzZXQpIC8gbQoKICByZXR1cm4gKGZpZWxkW2ldICYgKDEgPDwgb2Zmc2V0KSkgIT09IDAKfQoKY29uc3Qgc2V0ID0gZXhwb3J0cy5zZXQgPSBmdW5jdGlvbiBzZXQgKGZpZWxkLCBiaXQsIHZhbHVlID0gdHJ1ZSkgewogIGNvbnN0IG4gPSBmaWVsZC5ieXRlTGVuZ3RoICogOAoKICBpZiAoYml0IDwgMCkgYml0ICs9IG4KICBpZiAoYml0IDwgMCB8fCBiaXQgPj0gbikgcmV0dXJuIGZhbHNlCgogIGNvbnN0IG0gPSBmaWVsZC5CWVRFU19QRVJfRUxFTUVOVCAqIDgKCiAgY29uc3Qgb2Zmc2V0ID0gYml0ICYgKG0gLSAxKQogIGNvbnN0IGkgPSAoYml0IC0gb2Zmc2V0KSAvIG0KICBjb25zdCBtYXNrID0gMSA8PCBvZmZzZXQKCiAgaWYgKHZhbHVlKSB7CiAgICBpZiAoKGZpZWxkW2ldICYgbWFzaykgIT09IDApIHJldHVybiBmYWxzZQogIH0gZWxzZSB7CiAgICBpZiAoKGZpZWxkW2ldICYgbWFzaykgPT09IDApIHJldHVybiBmYWxzZQogIH0KCiAgZmllbGRbaV0gXj0gbWFzawoKICByZXR1cm4gdHJ1ZQp9CgpleHBvcnRzLmZpbGwgPSBmdW5jdGlvbiBmaWxsIChmaWVsZCwgdmFsdWUsIHN0YXJ0ID0gMCwgZW5kID0gZmllbGQuYnl0ZUxlbmd0aCAqIDgpIHsKICBjb25zdCBuID0gZmllbGQuYnl0ZUxlbmd0aCAqIDgKCiAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgKz0gbgogIGlmIChlbmQgPCAwKSBlbmQgKz0gbgogIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gZmllbGQuYnl0ZUxlbmd0aCAqIDggfHwgc3RhcnQgPj0gZW5kKSByZXR1cm4gZmllbGQKCiAgY29uc3QgbSA9IGZpZWxkLkJZVEVTX1BFUl9FTEVNRU5UICogOAoKICBsZXQgaSwgagoKICB7CiAgICBjb25zdCBvZmZzZXQgPSBzdGFydCAmIChtIC0gMSkKICAgIGkgPSAoc3RhcnQgLSBvZmZzZXQpIC8gbQoKICAgIGlmIChvZmZzZXQgIT09IDApIHsKICAgICAgbGV0IHNoaWZ0ID0gbSAtIG9mZnNldAogICAgICBpZiAoZW5kIC0gc3RhcnQgPCBzaGlmdCkgc2hpZnQgPSBlbmQgLSBzdGFydAoKICAgICAgY29uc3QgbWFzayA9ICgoMSA8PCBzaGlmdCkgLSAxKSA8PCBvZmZzZXQKCiAgICAgIGlmICh2YWx1ZSkgZmllbGRbaV0gfD0gbWFzawogICAgICBlbHNlIGZpZWxkW2ldICY9IH5tYXNrCgogICAgICBpKysKICAgIH0KICB9CgogIHsKICAgIGNvbnN0IG9mZnNldCA9IGVuZCAmIChtIC0gMSkKICAgIGogPSAoZW5kIC0gb2Zmc2V0KSAvIG0KCiAgICBpZiAob2Zmc2V0ICE9PSAwICYmIGogPj0gaSkgewogICAgICBjb25zdCBtYXNrID0gKDEgPDwgb2Zmc2V0KSAtIDEKCiAgICAgIGlmICh2YWx1ZSkgZmllbGRbal0gfD0gbWFzawogICAgICBlbHNlIGZpZWxkW2pdICY9IH5tYXNrCiAgICB9CiAgfQoKICBpZiAoaSA8IGopIGZpZWxkLmZpbGwodmFsdWUgPyAoMiAqKiBtKSAtIDEgOiAwLCBpLCBqKQoKICByZXR1cm4gZmllbGQKfQoKZXhwb3J0cy5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyIChmaWVsZCwgLi4uY2h1bmtzKSB7CiAgY29uc3QgbiA9IGZpZWxkLmJ5dGVMZW5ndGgKCiAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MpIHsKICAgIGlmIChjaHVuay5vZmZzZXQgPj0gbikgY29udGludWUKCiAgICBjb25zdCBtID0gY2h1bmsuZmllbGQuYnl0ZUxlbmd0aAoKICAgIGxldCBpID0gY2h1bmsub2Zmc2V0CiAgICBsZXQgaiA9IDAKCiAgICB3aGlsZSAoKChpICYgMTUpICE9PSAwIHx8IChqICYgMTUpICE9PSAwKSAmJiBpIDwgbiAmJiBqIDwgbSkgewogICAgICBmaWVsZFtpXSA9IGZpZWxkW2ldICYgfmNodW5rLmZpZWxkW2pdCiAgICAgIGkrKwogICAgICBqKysKICAgIH0KCiAgICBpZiAoaSArIDE1IDwgbiAmJiBqICsgMTUgPCBtKSB7CiAgICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKG4gLSAobiAmIDE1KSAtIGksIG0gLSAobSAmIDE1KSAtIGopCgogICAgICBzaW1kbGUuY2xlYXIoZmllbGQuc3ViYXJyYXkoaSwgaSArIGxlbiksIGNodW5rLmZpZWxkLnN1YmFycmF5KGosIGogKyBsZW4pLCBmaWVsZC5zdWJhcnJheShpLCBpICsgbGVuKSkKICAgIH0KCiAgICB3aGlsZSAoaSA8IG4gJiYgaiA8IG0pIHsKICAgICAgZmllbGRbaV0gPSBmaWVsZFtpXSAmIH5jaHVuay5maWVsZFtqXQogICAgICBpKysKICAgICAgaisrCiAgICB9CiAgfQp9CgpmdW5jdGlvbiBiaXRPZmZzZXQgKGJpdCwgb2Zmc2V0KSB7CiAgcmV0dXJuICFiaXQgPyBvZmZzZXQgOiAoSU5ERVhfTEVOICogOCAvIDIpICsgb2Zmc2V0Cn0KCmZ1bmN0aW9uIGJ5dGVPZmZzZXQgKGJpdCwgb2Zmc2V0KSB7CiAgcmV0dXJuICFiaXQgPyBvZmZzZXQgOiAoSU5ERVhfTEVOIC8gMikgKyBvZmZzZXQKfQoKZXhwb3J0cy5maW5kRmlyc3QgPSBmdW5jdGlvbiBmaW5kRmlyc3QgKGZpZWxkLCB2YWx1ZSwgcG9zaXRpb24gPSAwKSB7CiAgY29uc3QgbiA9IGZpZWxkLmJ5dGVMZW5ndGggKiA4CgogIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IG4KICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiA9IDAKICBpZiAocG9zaXRpb24gPj0gbikgcmV0dXJuIC0xCgogIHZhbHVlID0gISF2YWx1ZQoKICBmb3IgKGxldCBpID0gcG9zaXRpb247IGkgPCBuOyBpKyspIHsKICAgIGlmIChnZXQoZmllbGQsIGkpID09PSB2YWx1ZSkgcmV0dXJuIGkKICB9CgogIHJldHVybiAtMQp9CgpleHBvcnRzLmZpbmRMYXN0ID0gZnVuY3Rpb24gZmluZExhc3QgKGZpZWxkLCB2YWx1ZSwgcG9zaXRpb24gPSBmaWVsZC5ieXRlTGVuZ3RoICogOCAtIDEpIHsKICBjb25zdCBuID0gZmllbGQuYnl0ZUxlbmd0aCAqIDgKCiAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gKz0gbgogIGlmIChwb3NpdGlvbiA8IDApIHJldHVybiAtMQogIGlmIChwb3NpdGlvbiA+PSBuKSBwb3NpdGlvbiA9IG4gLSAxCgogIHZhbHVlID0gISF2YWx1ZQoKICBmb3IgKGxldCBpID0gcG9zaXRpb247IGkgPj0gMDsgaS0tKSB7CiAgICBpZiAoZ2V0KGZpZWxkLCBpKSA9PT0gdmFsdWUpIHJldHVybiBpCiAgfQoKICByZXR1cm4gLTEKfQoKY29uc3QgSW5kZXggPSBleHBvcnRzLkluZGV4ID0gY2xhc3MgSW5kZXggewogIHN0YXRpYyBmcm9tIChmaWVsZE9yQ2h1bmtzLCBieXRlTGVuZ3RoID0gLTEpIHsKICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkT3JDaHVua3MpKSB7CiAgICAgIHJldHVybiBuZXcgU3BhcnNlSW5kZXgoZmllbGRPckNodW5rcywgYnl0ZUxlbmd0aCkKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBuZXcgRGVuc2VJbmRleChmaWVsZE9yQ2h1bmtzLCBieXRlTGVuZ3RoKQogICAgfQogIH0KCiAgY29uc3RydWN0b3IgKGJ5dGVMZW5ndGgpIHsKICAgIHRoaXMuX2J5dGVMZW5ndGggPSBieXRlTGVuZ3RoCiAgICB0aGlzLmhhbmRsZSA9IG5ldyBVaW50MzJBcnJheShJTkRFWF9MRU4gLyA0KQogIH0KCiAgZ2V0IGJ5dGVMZW5ndGggKCkgewogICAgcmV0dXJuIHRoaXMuX2J5dGVMZW5ndGgKICB9CgogIHNraXBGaXJzdCAodmFsdWUsIHBvc2l0aW9uID0gMCkgewogICAgY29uc3QgbiA9IHRoaXMuYnl0ZUxlbmd0aCAqIDgKCiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSBuCiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiA9IDAKICAgIGlmIChwb3NpdGlvbiA+PSBuKSByZXR1cm4gbiAtIDEKCiAgICBsZXQgaSA9IE1hdGguZmxvb3IocG9zaXRpb24gLyAxNjM4NCkKCiAgICBpZiAoaSA+IDEyNykgcmV0dXJuIHBvc2l0aW9uCgogICAgd2hpbGUgKGkgPD0gMTI3ICYmIGdldCh0aGlzLmhhbmRsZSwgYml0T2Zmc2V0KHZhbHVlLCBpKSkpIHsKICAgICAgaSsrCiAgICB9CgogICAgaWYgKGkgPT09IDEyOCkgcmV0dXJuIG4gLSAxCgogICAgbGV0IGsgPSBpICogMTYzODQKICAgIGxldCBqID0gMAoKICAgIGlmIChwb3NpdGlvbiA+IGspIGogPSBNYXRoLmZsb29yKChwb3NpdGlvbiAtIGspIC8gMTI4KQoKICAgIHdoaWxlIChqIDw9IDEyNyAmJiBnZXQodGhpcy5oYW5kbGUsIGJpdE9mZnNldCh2YWx1ZSwgaSAqIDEyOCArIGogKyAxMjgpKSkgewogICAgICBqKysKICAgICAgayArPSAxMjgKICAgIH0KCiAgICBpZiAoaiA9PT0gMTI4ICYmIGkgIT09IDEyNykgcmV0dXJuIHRoaXMuc2tpcEZpcnN0KHZhbHVlLCAoaSArIDEpICogMTYzODQpCgogICAgaWYgKGsgPiBwb3NpdGlvbikgcG9zaXRpb24gPSBrCgogICAgcmV0dXJuIHBvc2l0aW9uIDwgbiA/IHBvc2l0aW9uIDogbiAtIDEKICB9CgogIHNraXBMYXN0ICh2YWx1ZSwgcG9zaXRpb24gPSB0aGlzLmJ5dGVMZW5ndGggKiA4IC0gMSkgewogICAgY29uc3QgbiA9IHRoaXMuYnl0ZUxlbmd0aCAqIDgKCiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSBuCiAgICBpZiAocG9zaXRpb24gPCAwKSByZXR1cm4gMAogICAgaWYgKHBvc2l0aW9uID49IG4pIHBvc2l0aW9uID0gbiAtIDEKCiAgICBsZXQgaSA9IE1hdGguZmxvb3IocG9zaXRpb24gLyAxNjM4NCkKCiAgICBpZiAoaSA+IDEyNykgcmV0dXJuIHBvc2l0aW9uCgogICAgd2hpbGUgKGkgPj0gMCAmJiBnZXQodGhpcy5oYW5kbGUsIGJpdE9mZnNldCh2YWx1ZSwgaSkpKSB7CiAgICAgIGktLQogICAgfQoKICAgIGlmIChpID09PSAtMSkgcmV0dXJuIDAKCiAgICBsZXQgayA9ICgoaSArIDEpICogMTYzODQpIC0gMQogICAgbGV0IGogPSAxMjcKCiAgICBpZiAocG9zaXRpb24gPCBrKSBqID0gMTI4IC0gTWF0aC5jZWlsKChrIC0gcG9zaXRpb24pIC8gMTI4KQoKICAgIHdoaWxlIChqID49IDAgJiYgZ2V0KHRoaXMuaGFuZGxlLCBiaXRPZmZzZXQodmFsdWUsIGkgKiAxMjggKyBqICsgMTI4KSkpIHsKICAgICAgai0tCiAgICAgIGsgLT0gMTI4CiAgICB9CgogICAgaWYgKGogPT09IC0xICYmIGkgIT09IDApIHJldHVybiB0aGlzLnNraXBMYXN0KHZhbHVlLCBpICogMTYzODQgLSAxKQoKICAgIGlmIChrIDwgcG9zaXRpb24pIHBvc2l0aW9uID0gawoKICAgIHJldHVybiBwb3NpdGlvbgogIH0KfQoKY2xhc3MgRGVuc2VJbmRleCBleHRlbmRzIEluZGV4IHsKICBjb25zdHJ1Y3RvciAoZmllbGQsIGJ5dGVMZW5ndGgpIHsKICAgIHN1cGVyKGJ5dGVMZW5ndGgpCiAgICB0aGlzLmZpZWxkID0gZmllbGQKCiAgICBjb25zdCBtID0gZmllbGQuQllURVNfUEVSX0VMRU1FTlQKCiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKSB7CiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgMTI4OyBqKyspIHsKICAgICAgICBjb25zdCBvZmZzZXQgPSAoaSAqIDEyOCArIGopICogMTYKICAgICAgICBsZXQgYWxseiA9IHRydWUKICAgICAgICBsZXQgYWxsbyA9IGZhbHNlCgogICAgICAgIGlmIChvZmZzZXQgKyAxNiA8PSB0aGlzLmZpZWxkLmJ5dGVMZW5ndGgpIHsKICAgICAgICAgIGNvbnN0IHZlYyA9IHRoaXMuZmllbGQuc3ViYXJyYXkob2Zmc2V0IC8gbSwgKG9mZnNldCArIDE2KSAvIG0pCgogICAgICAgICAgYWxseiA9IHNpbWRsZS5hbGx6KHZlYykKICAgICAgICAgIGFsbG8gPSBzaW1kbGUuYWxsbyh2ZWMpCiAgICAgICAgfQoKICAgICAgICBjb25zdCBrID0gaSAqIDEyOCArIDEyOCArIGoKCiAgICAgICAgc2V0KHRoaXMuaGFuZGxlLCBiaXRPZmZzZXQoZmFsc2UsIGspLCBhbGx6KQogICAgICAgIHNldCh0aGlzLmhhbmRsZSwgYml0T2Zmc2V0KHRydWUsIGspLCBhbGxvKQogICAgICB9CgogICAgICB7CiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYnl0ZU9mZnNldChmYWxzZSwgaSAqIDE2ICsgMTYpIC8gNAogICAgICAgIGNvbnN0IGFsbG8gPSBzaW1kbGUuYWxsbyh0aGlzLmhhbmRsZS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIDQpKQoKICAgICAgICBzZXQodGhpcy5oYW5kbGUsIGJpdE9mZnNldChmYWxzZSwgaSksIGFsbG8pCiAgICAgIH0KCiAgICAgIHsKICAgICAgICBjb25zdCBvZmZzZXQgPSBieXRlT2Zmc2V0KHRydWUsIGkgKiAxNiArIDE2KSAvIDQKICAgICAgICBjb25zdCBhbGxvID0gc2ltZGxlLmFsbG8odGhpcy5oYW5kbGUuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyA0KSkKCiAgICAgICAgc2V0KHRoaXMuaGFuZGxlLCBiaXRPZmZzZXQodHJ1ZSwgaSksIGFsbG8pCiAgICAgIH0KICAgIH0KICB9CgogIGdldCBieXRlTGVuZ3RoICgpIHsKICAgIGlmICh0aGlzLl9ieXRlTGVuZ3RoICE9PSAtMSkgcmV0dXJuIHRoaXMuX2J5dGVMZW5ndGgKICAgIHJldHVybiB0aGlzLmZpZWxkLmJ5dGVMZW5ndGgKICB9CgogIHVwZGF0ZSAoYml0KSB7CiAgICBjb25zdCBuID0gdGhpcy5ieXRlTGVuZ3RoICogOAoKICAgIGlmIChiaXQgPCAwKSBiaXQgKz0gbgogICAgaWYgKGJpdCA8IDAgfHwgYml0ID49IG4pIHJldHVybiBmYWxzZQoKICAgIGNvbnN0IG0gPSB0aGlzLmZpZWxkLkJZVEVTX1BFUl9FTEVNRU5UCgogICAgY29uc3QgaSA9IE1hdGguZmxvb3IoYml0IC8gMTYzODQpCiAgICBjb25zdCBqID0gTWF0aC5mbG9vcihiaXQgLyAxMjgpCgogICAgY29uc3Qgb2Zmc2V0ID0gKGogKiAxNikgLyBtCiAgICBjb25zdCB2ZWMgPSB0aGlzLmZpZWxkLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgKDE2IC8gbSkpCgogICAgY29uc3QgYWxseiA9IHNpbWRsZS5hbGx6KHZlYykKICAgIGNvbnN0IGFsbG8gPSBzaW1kbGUuYWxsbyh2ZWMpCgogICAgbGV0IGNoYW5nZWQgPSBmYWxzZQoKICAgIGlmIChzZXQodGhpcy5oYW5kbGUsIGJpdE9mZnNldChmYWxzZSwgMTI4ICsgaiksIGFsbHopKSB7CiAgICAgIGNoYW5nZWQgPSB0cnVlCgogICAgICBjb25zdCBvZmZzZXQgPSBieXRlT2Zmc2V0KGZhbHNlLCBpICogMTYgKyAxNikgLyA0CiAgICAgIGNvbnN0IGFsbG8gPSBzaW1kbGUuYWxsbyh0aGlzLmhhbmRsZS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIDQpKQoKICAgICAgc2V0KHRoaXMuaGFuZGxlLCBiaXRPZmZzZXQoZmFsc2UsIGkpLCBhbGxvKQogICAgfQoKICAgIGlmIChzZXQodGhpcy5oYW5kbGUsIGJpdE9mZnNldCh0cnVlLCAxMjggKyBqKSwgYWxsbykpIHsKICAgICAgY2hhbmdlZCA9IHRydWUKCiAgICAgIGNvbnN0IG9mZnNldCA9IGJ5dGVPZmZzZXQodHJ1ZSwgaSAqIDE2ICsgMTYpIC8gNAogICAgICBjb25zdCBhbGxvID0gc2ltZGxlLmFsbG8odGhpcy5oYW5kbGUuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyA0KSkKCiAgICAgIHNldCh0aGlzLmhhbmRsZSwgYml0T2Zmc2V0KHRydWUsIGkpLCBhbGxvKQogICAgfQoKICAgIHJldHVybiBjaGFuZ2VkCiAgfQp9CgpmdW5jdGlvbiBzZWxlY3RDaHVuayAoY2h1bmtzLCBvZmZzZXQpIHsKICBmb3IgKGxldCBpID0gMDsgaSA8IGNodW5rcy5sZW5ndGg7IGkrKykgewogICAgY29uc3QgbmV4dCA9IGNodW5rc1tpXQoKICAgIGNvbnN0IHN0YXJ0ID0gbmV4dC5vZmZzZXQKICAgIGNvbnN0IGVuZCA9IG5leHQub2Zmc2V0ICsgbmV4dC5maWVsZC5ieXRlTGVuZ3RoCgogICAgaWYgKG9mZnNldCA+PSBzdGFydCAmJiBvZmZzZXQgKyAxNiA8PSBlbmQpIHsKICAgICAgcmV0dXJuIG5leHQKICAgIH0KICB9CgogIHJldHVybiBudWxsCn0KCmNsYXNzIFNwYXJzZUluZGV4IGV4dGVuZHMgSW5kZXggewogIGNvbnN0cnVjdG9yIChjaHVua3MsIGJ5dGVMZW5ndGgpIHsKICAgIHN1cGVyKGJ5dGVMZW5ndGgpCiAgICB0aGlzLmNodW5rcyA9IGNodW5rcwoKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTI4OyBpKyspIHsKICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAxMjg7IGorKykgewogICAgICAgIGNvbnN0IG9mZnNldCA9IChpICogMTI4ICsgaikgKiAxNgogICAgICAgIGxldCBhbGx6ID0gdHJ1ZQogICAgICAgIGxldCBhbGxvID0gZmFsc2UKCiAgICAgICAgY29uc3QgY2h1bmsgPSBzZWxlY3RDaHVuayh0aGlzLmNodW5rcywgb2Zmc2V0KQoKICAgICAgICBpZiAoY2h1bmsgIT09IG51bGwpIHsKICAgICAgICAgIGNvbnN0IG0gPSBjaHVuay5maWVsZC5CWVRFU19QRVJfRUxFTUVOVAoKICAgICAgICAgIGNvbnN0IHZlYyA9IGNodW5rLmZpZWxkLnN1YmFycmF5KChvZmZzZXQgLSBjaHVuay5vZmZzZXQpIC8gbSwgKG9mZnNldCAtIGNodW5rLm9mZnNldCArIDE2KSAvIG0pCgogICAgICAgICAgYWxseiA9IHNpbWRsZS5hbGx6KHZlYykKICAgICAgICAgIGFsbG8gPSBzaW1kbGUuYWxsbyh2ZWMpCiAgICAgICAgfQoKICAgICAgICBjb25zdCBrID0gaSAqIDEyOCArIDEyOCArIGoKCiAgICAgICAgc2V0KHRoaXMuaGFuZGxlLCBiaXRPZmZzZXQoZmFsc2UsIGspLCBhbGx6KQogICAgICAgIHNldCh0aGlzLmhhbmRsZSwgYml0T2Zmc2V0KHRydWUsIGspLCBhbGxvKQogICAgICB9CgogICAgICB7CiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYnl0ZU9mZnNldChmYWxzZSwgaSAqIDE2ICsgMTYpIC8gNAogICAgICAgIGNvbnN0IGFsbG8gPSBzaW1kbGUuYWxsbyh0aGlzLmhhbmRsZS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIDQpKQoKICAgICAgICBzZXQodGhpcy5oYW5kbGUsIGJpdE9mZnNldChmYWxzZSwgaSksIGFsbG8pCiAgICAgIH0KCiAgICAgIHsKICAgICAgICBjb25zdCBvZmZzZXQgPSBieXRlT2Zmc2V0KHRydWUsIGkgKiAxNiArIDE2KSAvIDQKICAgICAgICBjb25zdCBhbGxvID0gc2ltZGxlLmFsbG8odGhpcy5oYW5kbGUuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyA0KSkKCiAgICAgICAgc2V0KHRoaXMuaGFuZGxlLCBiaXRPZmZzZXQodHJ1ZSwgaSksIGFsbG8pCiAgICAgIH0KICAgIH0KICB9CgogIGdldCBieXRlTGVuZ3RoICgpIHsKICAgIGlmICh0aGlzLl9ieXRlTGVuZ3RoICE9PSAtMSkgcmV0dXJuIHRoaXMuX2J5dGVMZW5ndGgKICAgIGNvbnN0IGxhc3QgPSB0aGlzLmNodW5rc1t0aGlzLmNodW5rcy5sZW5ndGggLSAxXQogICAgcmV0dXJuIGxhc3QgPyBsYXN0Lm9mZnNldCArIGxhc3QuZmllbGQuYnl0ZUxlbmd0aCA6IDAKICB9CgogIHVwZGF0ZSAoYml0KSB7CiAgICBjb25zdCBuID0gdGhpcy5ieXRlTGVuZ3RoICogOAoKICAgIGlmIChiaXQgPCAwKSBiaXQgKz0gbgogICAgaWYgKGJpdCA8IDAgfHwgYml0ID49IG4pIHJldHVybiBmYWxzZQoKICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKGJpdCAvIDE2Mzg0KQogICAgY29uc3QgaiA9IE1hdGguZmxvb3IoYml0IC8gMTI4KQoKICAgIGNvbnN0IG9mZnNldCA9IGogKiAxNgoKICAgIGNvbnN0IGNodW5rID0gc2VsZWN0Q2h1bmsodGhpcy5jaHVua3MsIG9mZnNldCkKCiAgICBpZiAoY2h1bmsgPT09IG51bGwpIHJldHVybiBmYWxzZQoKICAgIGNvbnN0IG0gPSBjaHVuay5maWVsZC5CWVRFU19QRVJfRUxFTUVOVAoKICAgIGNvbnN0IHZlYyA9IGNodW5rLmZpZWxkLnN1YmFycmF5KChvZmZzZXQgLSBjaHVuay5vZmZzZXQpIC8gbSwgKG9mZnNldCAtIGNodW5rLm9mZnNldCArIDE2KSAvIG0pCgogICAgY29uc3QgYWxseiA9IHNpbWRsZS5hbGx6KHZlYykKICAgIGNvbnN0IGFsbG8gPSBzaW1kbGUuYWxsbyh2ZWMpCgogICAgbGV0IGNoYW5nZWQgPSBmYWxzZQoKICAgIGlmIChzZXQodGhpcy5oYW5kbGUsIGJpdE9mZnNldChmYWxzZSwgMTI4ICsgaiksIGFsbHopKSB7CiAgICAgIGNoYW5nZWQgPSB0cnVlCgogICAgICBjb25zdCBvZmZzZXQgPSBieXRlT2Zmc2V0KGZhbHNlLCBpICogMTYgKyAxNikgLyA0CiAgICAgIGNvbnN0IGFsbG8gPSBzaW1kbGUuYWxsbyh0aGlzLmhhbmRsZS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIDQpKQoKICAgICAgc2V0KHRoaXMuaGFuZGxlLCBiaXRPZmZzZXQoZmFsc2UsIGkpLCBhbGxvKQogICAgfQoKICAgIGlmIChzZXQodGhpcy5oYW5kbGUsIGJpdE9mZnNldCh0cnVlLCAxMjggKyBqKSwgYWxsbykpIHsKICAgICAgY2hhbmdlZCA9IHRydWUKCiAgICAgIGNvbnN0IG9mZnNldCA9IGJ5dGVPZmZzZXQodHJ1ZSwgaSAqIDE2ICsgMTYpIC8gNAogICAgICBjb25zdCBhbGxvID0gc2ltZGxlLmFsbG8odGhpcy5oYW5kbGUuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyA0KSkKCiAgICAgIHNldCh0aGlzLmhhbmRsZSwgYml0T2Zmc2V0KHRydWUsIGkpLCBhbGxvKQogICAgfQoKICAgIHJldHVybiBjaGFuZ2VkCiAgfQp9CmNvbnN0IGZhbGxiYWNrID0gcmVxdWlyZSgnLi9mYWxsYmFjaycpCgp0cnkgewogIGNvbnN0IG5hdGl2ZSA9IHJlcXVpcmUoJ3F1aWNrYml0LW5hdGl2ZScpCgogIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZmFzdGVyIGluIEphdmFTY3JpcHQKICBleHBvcnRzLmdldCA9IGZhbGxiYWNrLmdldAogIGV4cG9ydHMuc2V0ID0gZmFsbGJhY2suc2V0CiAgZXhwb3J0cy5maWxsID0gZmFsbGJhY2suZmlsbAoKICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGZhc3RlciBpbiBDCiAgZXhwb3J0cy5jbGVhciA9IG5hdGl2ZS5jbGVhcgogIGV4cG9ydHMuZmluZEZpcnN0ID0gbmF0aXZlLmZpbmRGaXJzdAogIGV4cG9ydHMuZmluZExhc3QgPSBuYXRpdmUuZmluZExhc3QKICBleHBvcnRzLkluZGV4ID0gbmF0aXZlLkluZGV4Cn0gY2F0Y2ggewogIG1vZHVsZS5leHBvcnRzID0gZmFsbGJhY2sKfQp7CiAgIm5hbWUiOiAicXVpY2tiaXQtdW5pdmVyc2FsIiwKICAidmVyc2lvbiI6ICIyLjIuMCIsCiAgImRlc2NyaXB0aW9uIjogIlVuaXZlcnNhbCB3cmFwcGVyIGZvciBsaWJxdWlja2JpdCB3aXRoIGEgSmF2YVNjcmlwdCBmYWxsYmFjayIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJmaWxlcyI6IFsKICAgICJmYWxsYmFjay5qcyIsCiAgICAiaW5kZXguanMiCiAgXSwKICAiYnJvd3NlciI6IHsKICAgICIuL2luZGV4LmpzIjogIi4vZmFsbGJhY2suanMiCiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC5tanMiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcXVpY2tiaXQtdW5pdmVyc2FsLmdpdCIKICB9LAogICJhdXRob3IiOiAiS2FzcGVyIElzYWdlciBEYWxzZ2Fyw7AgPGthc3BlckBmdW5rdGlvbmVsLmNvPiIsCiAgImxpY2Vuc2UiOiAiSVNDIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3F1aWNrYml0LXVuaXZlcnNhbC9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3F1aWNrYml0LXVuaXZlcnNhbCNyZWFkbWUiLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYjRhIjogIl4xLjYuMCIsCiAgICAic2ltZGxlLXVuaXZlcnNhbCI6ICJeMS4xLjAiCiAgfSwKICAib3B0aW9uYWxEZXBlbmRlbmNpZXMiOiB7CiAgICAicXVpY2tiaXQtbmF0aXZlIjogIl4yLjIuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy4xLjAiLAogICAgInN0YW5kYXJkIjogIl4xNy4wLjAiCiAgfQp9CmNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpCgptb2R1bGUuZXhwb3J0cyA9IGNsYXNzIFJlYWR5UmVzb3VyY2UgZXh0ZW5kcyBFdmVudEVtaXR0ZXIgewogIGNvbnN0cnVjdG9yICgpIHsKICAgIHN1cGVyKCkKCiAgICB0aGlzLm9wZW5pbmcgPSBudWxsCiAgICB0aGlzLmNsb3NpbmcgPSBudWxsCgogICAgdGhpcy5vcGVuZWQgPSBmYWxzZQogICAgdGhpcy5jbG9zZWQgPSBmYWxzZQogIH0KCiAgcmVhZHkgKCkgewogICAgaWYgKHRoaXMub3BlbmluZyAhPT0gbnVsbCkgcmV0dXJuIHRoaXMub3BlbmluZwogICAgdGhpcy5vcGVuaW5nID0gb3Blbih0aGlzKQogICAgcmV0dXJuIHRoaXMub3BlbmluZwogIH0KCiAgY2xvc2UgKCkgewogICAgaWYgKHRoaXMuY2xvc2luZyAhPT0gbnVsbCkgcmV0dXJuIHRoaXMuY2xvc2luZwogICAgdGhpcy5jbG9zaW5nID0gY2xvc2UodGhpcykKICAgIHJldHVybiB0aGlzLmNsb3NpbmcKICB9CgogIGFzeW5jIF9vcGVuICgpIHsKICAgIC8vIGFkZCBpbXBsIGhlcmUKICB9CgogIGFzeW5jIF9jbG9zZSAoKSB7CiAgICAvLyBhZGQgaW1wbCBoZXJlCiAgfQp9Cgphc3luYyBmdW5jdGlvbiBvcGVuIChzZWxmKSB7CiAgLy8gb3BlbiBhZnRlciBjbG9zZQogIGlmIChzZWxmLmNsb3NpbmcgIT09IG51bGwpIHJldHVybgoKICB0cnkgewogICAgYXdhaXQgc2VsZi5fb3BlbigpCiAgfSBjYXRjaCAoZXJyKSB7CiAgICBzZWxmLmNsb3NlKCkgLy8gc2FmZSB0byBydW4gaW4gYmcKICAgIHRocm93IGVycgogIH0KCiAgc2VsZi5vcGVuZWQgPSB0cnVlCiAgc2VsZi5lbWl0KCdyZWFkeScpCn0KCmFzeW5jIGZ1bmN0aW9uIGNsb3NlIChzZWxmKSB7CiAgdHJ5IHsKICAgIGlmIChzZWxmLm9wZW5lZCA9PT0gZmFsc2UgJiYgc2VsZi5vcGVuaW5nICE9PSBudWxsKSBhd2FpdCBzZWxmLm9wZW5pbmcKICB9IGNhdGNoIHsKICAgIC8vIGlnbm9yZSBlcnJvcnMgb24gY2xvc2luZwogIH0KICBpZiAoc2VsZi5vcGVuZWQgPT09IHRydWUgfHwgc2VsZi5vcGVuaW5nID09PSBudWxsKSBhd2FpdCBzZWxmLl9jbG9zZSgpCiAgc2VsZi5jbG9zZWQgPSB0cnVlCiAgc2VsZi5lbWl0KCdjbG9zZScpCn0KewogICJuYW1lIjogInJlYWR5LXJlc291cmNlIiwKICAidmVyc2lvbiI6ICIxLjEuMiIsCiAgImRlc2NyaXB0aW9uIjogIk1vZGVybiBzaW5nbGUgcmVzb3VyY2UgbWFuYWdlbWVudCIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJpbXBvcnRzIjogewogICAgImV2ZW50cyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1ldmVudHMiLAogICAgICAiZGVmYXVsdCI6ICJldmVudHMiCiAgICB9CiAgfSwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiCiAgXSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC5qcyIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy4xLjAiLAogICAgInN0YW5kYXJkIjogIl4xNy4wLjAiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcmVhZHktcmVzb3VyY2UuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpIiwKICAibGljZW5zZSI6ICJNSVQiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcmVhZHktcmVzb3VyY2UvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9yZWFkeS1yZXNvdXJjZSIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJiYXJlLWV2ZW50cyI6ICJeMi4yLjAiCiAgfQp9Cm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUmVmQ291bnRlciB7CiAgY29uc3RydWN0b3IoKSB7CiAgICB0aGlzLmNvdW50ID0gMAoKICAgIHRoaXMuX29uaWRsZSA9IG51bGwKICAgIHRoaXMuX2lkbGUgPSBudWxsCiAgfQoKICBpc0lkbGUoKSB7CiAgICByZXR1cm4gdGhpcy5jb3VudCA9PT0gMAogIH0KCiAgaWRsZSgpIHsKICAgIGlmICh0aGlzLmNvdW50ID09PSAwKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkKICAgIGlmICh0aGlzLl9pZGxlICE9PSBudWxsKSByZXR1cm4gdGhpcy5faWRsZQoKICAgIHRoaXMuX2lkbGUgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICB0aGlzLl9vbmlkbGUgPSByZXNvbHZlCiAgICB9KQoKICAgIHJldHVybiB0aGlzLl9pZGxlCiAgfQoKICBpbmMoKSB7CiAgICB0aGlzLmNvdW50KysKICB9CgogIGRlYygpIHsKICAgIGlmICgtLXRoaXMuY291bnQgPiAwKSByZXR1cm4KCiAgICBpZiAodGhpcy5fb25pZGxlICE9PSBudWxsKSB7CiAgICAgIGNvbnN0IHJlc29sdmUgPSB0aGlzLl9vbmlkbGUKICAgICAgdGhpcy5faWRsZSA9IG51bGwKICAgICAgdGhpcy5fb25pZGxlID0gbnVsbAogICAgICByZXNvbHZlKCkKICAgIH0KICB9Cn0KewogICJuYW1lIjogInJlZmNvdW50ZXIiLAogICJ2ZXJzaW9uIjogIjEuMC4wIiwKICAiZGVzY3JpcHRpb24iOiAiU2ltcGxlIHJlZmNvdW50ZXIiLAogICJtYWluIjogImluZGV4LmpzIiwKICAiZGVwZW5kZW5jaWVzIjoge30sCiAgImRldkRlcGVuZGVuY2llcyI6IHt9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3JlZmNvdW50ZXIuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2ggSW5jIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3JlZmNvdW50ZXIvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9yZWZjb3VudGVyIgp9CmNvbnN0IHJ1bnRpbWUgPSByZXF1aXJlKCcuL2xpYi9ydW50aW1lJykKCmlmIChydW50aW1lID09PSAnYmFyZScpIHsKICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL3J1bnRpbWUvYmFyZScpCn0gZWxzZSBpZiAocnVudGltZSA9PT0gJ25vZGUnKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9ydW50aW1lL25vZGUnKQp9IGVsc2UgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvcnVudGltZS9kZWZhdWx0JykKfQptb2R1bGUuZXhwb3J0cyA9CiAgdHlwZW9mIEJhcmUgIT09ICd1bmRlZmluZWQnCiAgICA/ICdiYXJlJwogICAgOiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcKICAgICAgPyAnbm9kZScKICAgICAgOiAndW5rbm93bicKbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlLmFkZG9uLmJpbmQocmVxdWlyZSkKaWYgKHR5cGVvZiByZXF1aXJlLmFkZG9uID09PSAnZnVuY3Rpb24nKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlLmFkZG9uLmJpbmQocmVxdWlyZSkKfSBlbHNlIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGFkZG9uKHNwZWNpZmllciwgcGFyZW50VVJMKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgIGBDYW5ub3QgZmluZCBhZGRvbiAnJHtzcGVjaWZpZXJ9JyBpbXBvcnRlZCBmcm9tICcke3BhcmVudFVSTH0nYAogICAgKQogIH0KfQppZiAodHlwZW9mIHJlcXVpcmUuYWRkb24gPT09ICdmdW5jdGlvbicpIHsKICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24uYmluZChyZXF1aXJlKQp9IGVsc2UgewogIGNvbnN0IHVybCA9IHJlcXVpcmUoJ3VybCcpCiAgY29uc3QgcmVzb2x2ZSA9IHJlcXVpcmUoJ2JhcmUtYWRkb24tcmVzb2x2ZScpCgogIGNvbnN0IGhvc3QgPSBwcm9jZXNzLnBsYXRmb3JtICsgJy0nICsgcHJvY2Vzcy5hcmNoCiAgY29uc3QgY29uZGl0aW9ucyA9IFsnbm9kZScsIHByb2Nlc3MucGxhdGZvcm0sIHByb2Nlc3MuYXJjaF0KICBjb25zdCBleHRlbnNpb25zID0gWycubm9kZSddCgogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYWRkb24oc3BlY2lmaWVyLCBwYXJlbnRVUkwpIHsKICAgIGlmICh0eXBlb2YgcGFyZW50VVJMID09PSAnc3RyaW5nJykgcGFyZW50VVJMID0gdXJsLnBhdGhUb0ZpbGVVUkwocGFyZW50VVJMKQoKICAgIGZvciAoY29uc3QgcmVzb2x1dGlvbiBvZiByZXNvbHZlKAogICAgICBzcGVjaWZpZXIsCiAgICAgIHBhcmVudFVSTCwKICAgICAgeyBob3N0LCBjb25kaXRpb25zLCBleHRlbnNpb25zIH0sCiAgICAgIHJlYWRQYWNrYWdlCiAgICApKSB7CiAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi5wcm90b2NvbCkgewogICAgICAgIGNhc2UgJ2ZpbGU6JzoKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiByZXF1aXJlKHVybC5maWxlVVJMVG9QYXRoKHJlc29sdXRpb24pKQogICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgIGBDYW5ub3QgZmluZCBhZGRvbiAnJHtzcGVjaWZpZXJ9JyBpbXBvcnRlZCBmcm9tICcke3BhcmVudFVSTC5ocmVmfSdgCiAgICApCgogICAgZnVuY3Rpb24gcmVhZFBhY2thZ2UocGFja2FnZVVSTCkgewogICAgICB0cnkgewogICAgICAgIHJldHVybiByZXF1aXJlKHVybC5maWxlVVJMVG9QYXRoKHBhY2thZ2VVUkwpKQogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICByZXR1cm4gbnVsbAogICAgICB9CiAgICB9CiAgfQp9CnsKICAibmFtZSI6ICJyZXF1aXJlLWFkZG9uIiwKICAidmVyc2lvbiI6ICIxLjEuMCIsCiAgImRlc2NyaXB0aW9uIjogIkltcG9ydCBuYXRpdmUgYWRkb25zIGFjcm9zcyBKYXZhU2NyaXB0IHJ1bnRpbWVzIiwKICAiZXhwb3J0cyI6IHsKICAgICIuIjogIi4vaW5kZXguanMiLAogICAgIi4vcGFja2FnZSI6ICIuL3BhY2thZ2UuanNvbiIKICB9LAogICJpbXBvcnRzIjogewogICAgImZzIjogewogICAgICAiYmFyZSI6ICJiYXJlLWZzIiwKICAgICAgImRlZmF1bHQiOiAiZnMiCiAgICB9LAogICAgInBhdGgiOiB7CiAgICAgICJiYXJlIjogImJhcmUtcGF0aCIsCiAgICAgICJkZWZhdWx0IjogInBhdGgiCiAgICB9LAogICAgInVybCI6IHsKICAgICAgImJhcmUiOiAiYmFyZS11cmwiLAogICAgICAiZGVmYXVsdCI6ICJ1cmwiCiAgICB9CiAgfSwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgImxpYiIKICBdLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAibnBtIHJ1biBsaW50ICYmIG5wbSBydW4gdGVzdDpiYXJlICYmIG5wbSBydW4gdGVzdDpub2RlIiwKICAgICJ0ZXN0OmJhcmUiOiAiYmFyZSB0ZXN0LmpzIiwKICAgICJ0ZXN0Om5vZGUiOiAibm9kZSB0ZXN0LmpzIiwKICAgICJsaW50IjogInByZXR0aWVyIC4gLS1jaGVjayIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9yZXF1aXJlLWFkZG9uLmdpdCIKICB9LAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3JlcXVpcmUtYWRkb24vaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9yZXF1aXJlLWFkZG9uI3JlYWRtZSIsCiAgImVuZ2luZXMiOiB7CiAgICAiYmFyZSI6ICI+PTEuMTAuMCIKICB9LAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1hZGRvbi1yZXNvbHZlIjogIl4xLjMuMCIsCiAgICAiYmFyZS11cmwiOiAiXjIuMS4wIgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJiYXJlLWJ1bmRsZSI6ICJeMS44LjEiLAogICAgImJhcmUtYnVuZGxlLWV2YWx1YXRlIjogIl4xLjEuMCIsCiAgICAiYmFyZS1mcyI6ICJeNC4wLjAiLAogICAgImJhcmUtcGF0aCI6ICJeMy4wLjAiLAogICAgImJyaXR0bGUiOiAiXjMuNy4wIiwKICAgICJwcmV0dGllciI6ICJeMy40LjEiLAogICAgInByZXR0aWVyLWNvbmZpZy1zdGFuZGFyZCI6ICJeNy4wLjAiCiAgfQp9CmxldCB0bXBSZXNvbHZlID0gbnVsbApsZXQgdG1wUmVqZWN0ID0gbnVsbAoKaWYgKFByb21pc2Uud2l0aFJlc29sdmVycykgewogIG1vZHVsZS5leHBvcnRzID0gUHJvbWlzZS53aXRoUmVzb2x2ZXJzLmJpbmQoUHJvbWlzZSkKfSBlbHNlIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJlc29sdmVSZWplY3RQcm9taXNlICgpIHsKICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShzZXRUbXApCiAgICBjb25zdCByZXN1bHQgPSB7IHByb21pc2UsIHJlc29sdmU6IHRtcFJlc29sdmUsIHJlamVjdDogdG1wUmVqZWN0IH0KICAgIHRtcFJlc29sdmUgPSB0bXBSZWplY3QgPSBudWxsCiAgICByZXR1cm4gcmVzdWx0CiAgfQp9CgpmdW5jdGlvbiBzZXRUbXAgKHJlc29sdmUsIHJlamVjdCkgewogIHRtcFJlc29sdmUgPSByZXNvbHZlCiAgdG1wUmVqZWN0ID0gcmVqZWN0Cn0KewogICJuYW1lIjogInJlc29sdmUtcmVqZWN0LXByb21pc2UiLAogICJ2ZXJzaW9uIjogIjEuMS4wIiwKICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlIGFuIGludmVydGVkIHByb21pc2Ugd2l0aCBubyBmdW5jdGlvbiBhbGxvY3MiLAogICJtYWluIjogImluZGV4LmpzIiwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkIgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJzdGFuZGFyZCI6ICJeMTcuMS4yIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3Jlc29sdmUtcmVqZWN0LXByb21pc2UuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpIiwKICAibGljZW5zZSI6ICJNSVQiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3Jlc29sdmUtcmVqZWN0LXByb21pc2UvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvcmVzb2x2ZS1yZWplY3QtcHJvbWlzZSIKfQpyZXF1aXJlLmFkZG9uID0gcmVxdWlyZSgncmVxdWlyZS1hZGRvbicpCgptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oJy4nLCBfX2ZpbGVuYW1lKQpjb25zdCBDb2x1bW5GYW1pbHkgPSByZXF1aXJlKCcuL2xpYi9jb2x1bW4tZmFtaWx5JykKY29uc3QgSXRlcmF0b3IgPSByZXF1aXJlKCcuL2xpYi9pdGVyYXRvcicpCmNvbnN0IFNuYXBzaG90ID0gcmVxdWlyZSgnLi9saWIvc25hcHNob3QnKQpjb25zdCBTdGF0ZSA9IHJlcXVpcmUoJy4vbGliL3N0YXRlJykKY29uc3QgeyBCbG9vbUZpbHRlclBvbGljeSwgUmliYm9uRmlsdGVyUG9saWN5IH0gPSByZXF1aXJlKCcuL2xpYi9maWx0ZXItcG9saWN5JykKCmNsYXNzIFJvY2tzREIgewogIGNvbnN0cnVjdG9yKHBhdGgsIG9wdHMgPSB7fSkgewogICAgY29uc3QgewogICAgICBjb2x1bW5GYW1pbHksCiAgICAgIHN0YXRlID0gbmV3IFN0YXRlKHRoaXMsIHBhdGgsIG9wdHMpLAogICAgICBzbmFwc2hvdCA9IG51bGwsCiAgICAgIGtleUVuY29kaW5nID0gbnVsbCwKICAgICAgdmFsdWVFbmNvZGluZyA9IG51bGwKICAgIH0gPSBvcHRzCgogICAgdGhpcy5fc3RhdGUgPSBzdGF0ZQogICAgdGhpcy5fc25hcHNob3QgPSBzbmFwc2hvdAogICAgdGhpcy5fY29sdW1uRmFtaWx5ID0gc3RhdGUuZ2V0Q29sdW1uRmFtaWx5KGNvbHVtbkZhbWlseSkKICAgIHRoaXMuX2tleUVuY29kaW5nID0ga2V5RW5jb2RpbmcKICAgIHRoaXMuX3ZhbHVlRW5jb2RpbmcgPSB2YWx1ZUVuY29kaW5nCiAgICB0aGlzLl9pbmRleCA9IC0xCgogICAgdGhpcy5fc3RhdGUuYWRkU2Vzc2lvbih0aGlzKQogIH0KCiAgZ2V0IG9wZW5lZCgpIHsKICAgIHJldHVybiB0aGlzLl9zdGF0ZS5vcGVuZWQKICB9CgogIGdldCBjbG9zZWQoKSB7CiAgICByZXR1cm4gdGhpcy5pc1Jvb3QoKSA/IHRoaXMuX3N0YXRlLmNsb3NlZCA6IHRoaXMuX2luZGV4ID09PSAtMQogIH0KCiAgZ2V0IHBhdGgoKSB7CiAgICByZXR1cm4gdGhpcy5fc3RhdGUucGF0aAogIH0KCiAgZ2V0IHNuYXBzaG90dGVkKCkgewogICAgcmV0dXJuIHRoaXMuX3NuYXBzaG90ICE9PSBudWxsCiAgfQoKICBnZXQgZGVmYXVsdENvbHVtbkZhbWlseSgpIHsKICAgIHJldHVybiB0aGlzLl9jb2x1bW5GYW1pbHkKICB9CgogIHNlc3Npb24oewogICAgY29sdW1uRmFtaWx5ID0gdGhpcy5fY29sdW1uRmFtaWx5LAogICAgc25hcHNob3QgPSB0aGlzLl9zbmFwc2hvdCAhPT0gbnVsbCwKICAgIGtleUVuY29kaW5nID0gdGhpcy5fa2V5RW5jb2RpbmcsCiAgICB2YWx1ZUVuY29kaW5nID0gdGhpcy5fdmFsdWVFbmNvZGluZwogIH0gPSB7fSkgewogICAgbWF5YmVDbG9zZWQodGhpcykKCiAgICByZXR1cm4gbmV3IFJvY2tzREIobnVsbCwgewogICAgICBzdGF0ZTogdGhpcy5fc3RhdGUsCiAgICAgIGNvbHVtbkZhbWlseSwKICAgICAgc25hcHNob3Q6IHNuYXBzaG90ID8gdGhpcy5fc25hcHNob3QgfHwgbmV3IFNuYXBzaG90KHRoaXMuX3N0YXRlKSA6IG51bGwsCiAgICAgIGtleUVuY29kaW5nLAogICAgICB2YWx1ZUVuY29kaW5nCiAgICB9KQogIH0KCiAgY29sdW1uRmFtaWx5KG5hbWUsIG9wdHMpIHsKICAgIHJldHVybiB0aGlzLnNlc3Npb24oeyAuLi5vcHRzLCBjb2x1bW5GYW1pbHk6IG5hbWUgfSkKICB9CgogIHNuYXBzaG90KCkgewogICAgcmV0dXJuIHRoaXMuc2Vzc2lvbih7IHNuYXBzaG90OiB0cnVlIH0pCiAgfQoKICBpc1Jvb3QoKSB7CiAgICByZXR1cm4gdGhpcyA9PT0gdGhpcy5fc3RhdGUuZGIKICB9CgogIHJlYWR5KCkgewogICAgcmV0dXJuIHRoaXMuX3N0YXRlLnJlYWR5KCkKICB9CgogIGFzeW5jIGNsb3NlKHsgZm9yY2UgfSA9IHt9KSB7CiAgICBpZiAodGhpcy5faW5kZXggIT09IC0xKSB0aGlzLl9zdGF0ZS5yZW1vdmVTZXNzaW9uKHRoaXMpCgogICAgaWYgKGZvcmNlKSB7CiAgICAgIHdoaWxlICh0aGlzLl9zdGF0ZS5zZXNzaW9ucy5sZW5ndGggPiAwKSB7CiAgICAgICAgYXdhaXQgdGhpcy5fc3RhdGUuc2Vzc2lvbnNbdGhpcy5fc3RhdGUuc2Vzc2lvbnMubGVuZ3RoIC0gMV0uY2xvc2UoKQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXMuaXNSb290KCkgPyB0aGlzLl9zdGF0ZS5jbG9zZSgpIDogUHJvbWlzZS5yZXNvbHZlKCkKICB9CgogIHN1c3BlbmQoKSB7CiAgICBtYXliZUNsb3NlZCh0aGlzKQoKICAgIHJldHVybiB0aGlzLl9zdGF0ZS5zdXNwZW5kKCkKICB9CgogIHJlc3VtZSgpIHsKICAgIG1heWJlQ2xvc2VkKHRoaXMpCgogICAgcmV0dXJuIHRoaXMuX3N0YXRlLnJlc3VtZSgpCiAgfQoKICBpc0lkbGUoKSB7CiAgICByZXR1cm4gdGhpcy5fc3RhdGUuaGFuZGxlcy5pc0lkbGUoKQogIH0KCiAgaWRsZSgpIHsKICAgIHJldHVybiB0aGlzLl9zdGF0ZS5oYW5kbGVzLmlkbGUoKQogIH0KCiAgaXRlcmF0b3IocmFuZ2UsIG9wdHMpIHsKICAgIG1heWJlQ2xvc2VkKHRoaXMpCgogICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCB7IC4uLnJhbmdlLCAuLi5vcHRzIH0pCiAgfQoKICBhc3luYyBwZWVrKHJhbmdlLCBvcHRzKSB7CiAgICBmb3IgYXdhaXQgKGNvbnN0IHZhbHVlIG9mIHRoaXMuaXRlcmF0b3IoeyAuLi5yYW5nZSwgLi4ub3B0cywgbGltaXQ6IDEgfSkpIHsKICAgICAgcmV0dXJuIHZhbHVlCiAgICB9CgogICAgcmV0dXJuIG51bGwKICB9CgogIHJlYWQob3B0cykgewogICAgbWF5YmVDbG9zZWQodGhpcykKCiAgICByZXR1cm4gdGhpcy5fc3RhdGUuY3JlYXRlUmVhZEJhdGNoKHRoaXMsIG9wdHMpCiAgfQoKICB3cml0ZShvcHRzKSB7CiAgICBtYXliZUNsb3NlZCh0aGlzKQoKICAgIHJldHVybiB0aGlzLl9zdGF0ZS5jcmVhdGVXcml0ZUJhdGNoKHRoaXMsIG9wdHMpCiAgfQoKICBmbHVzaChvcHRzKSB7CiAgICBtYXliZUNsb3NlZCh0aGlzKQoKICAgIHJldHVybiB0aGlzLl9zdGF0ZS5mbHVzaCh0aGlzLCBvcHRzKQogIH0KCiAgYXN5bmMgZ2V0KGtleSwgb3B0cykgewogICAgY29uc3QgYmF0Y2ggPSB0aGlzLnJlYWQoeyAuLi5vcHRzLCBjYXBhY2l0eTogMSwgYXV0b0Rlc3Ryb3k6IHRydWUgfSkKICAgIGNvbnN0IHZhbHVlID0gYmF0Y2guZ2V0KGtleSkKICAgIGJhdGNoLnRyeUZsdXNoKCkKICAgIHJldHVybiB2YWx1ZQogIH0KCiAgYXN5bmMgcHV0KGtleSwgdmFsdWUsIG9wdHMpIHsKICAgIGNvbnN0IGJhdGNoID0gdGhpcy53cml0ZSh7IC4uLm9wdHMsIGNhcGFjaXR5OiAxLCBhdXRvRGVzdHJveTogdHJ1ZSB9KQogICAgYmF0Y2gudHJ5UHV0KGtleSwgdmFsdWUpCiAgICBhd2FpdCBiYXRjaC5mbHVzaCgpCiAgfQoKICBhc3luYyBkZWxldGUoa2V5LCBvcHRzKSB7CiAgICBjb25zdCBiYXRjaCA9IHRoaXMud3JpdGUoeyAuLi5vcHRzLCBjYXBhY2l0eTogMSwgYXV0b0Rlc3Ryb3k6IHRydWUgfSkKICAgIGJhdGNoLnRyeURlbGV0ZShrZXkpCiAgICBhd2FpdCBiYXRjaC5mbHVzaCgpCiAgfQoKICBhc3luYyBkZWxldGVSYW5nZShzdGFydCwgZW5kLCBvcHRzKSB7CiAgICBjb25zdCBiYXRjaCA9IHRoaXMud3JpdGUoeyAuLi5vcHRzLCBjYXBhY2l0eTogMSwgYXV0b0Rlc3Ryb3k6IHRydWUgfSkKICAgIGJhdGNoLnRyeURlbGV0ZVJhbmdlKHN0YXJ0LCBlbmQpCiAgICBhd2FpdCBiYXRjaC5mbHVzaCgpCiAgfQoKICBfcmVmKCkgewogICAgaWYgKHRoaXMuX3NuYXBzaG90KSB0aGlzLl9zbmFwc2hvdC5yZWYoKQogICAgdGhpcy5fc3RhdGUuaGFuZGxlcy5pbmMoKQogIH0KCiAgX3VucmVmKCkgewogICAgaWYgKHRoaXMuX3NuYXBzaG90KSB0aGlzLl9zbmFwc2hvdC51bnJlZigpCiAgICB0aGlzLl9zdGF0ZS5oYW5kbGVzLmRlYygpCiAgfQp9Cgptb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBSb2Nrc0RCCgpleHBvcnRzLkNvbHVtbkZhbWlseSA9IENvbHVtbkZhbWlseQpleHBvcnRzLkJsb29tRmlsdGVyUG9saWN5ID0gQmxvb21GaWx0ZXJQb2xpY3kKZXhwb3J0cy5SaWJib25GaWx0ZXJQb2xpY3kgPSBSaWJib25GaWx0ZXJQb2xpY3kKCmZ1bmN0aW9uIG1heWJlQ2xvc2VkKGRiKSB7CiAgaWYgKGRiLl9zdGF0ZS5jbG9zaW5nIHx8IGRiLl9pbmRleCA9PT0gLTEpCiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvY2tzREIgc2Vzc2lvbiBpcyBjbG9zZWQnKQp9CmNvbnN0IGMgPSByZXF1aXJlKCdjb21wYWN0LWVuY29kaW5nJykKY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4uL2JpbmRpbmcnKQoKY29uc3QgZW1wdHkgPSBCdWZmZXIuYWxsb2MoMCkKY29uc3QgcmVzb2x2ZWQgPSBQcm9taXNlLnJlc29sdmUoKQoKY2xhc3MgUm9ja3NEQkJhdGNoIHsKICBjb25zdHJ1Y3RvcihkYiwgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGNhcGFjaXR5ID0gOCwgYXV0b0Rlc3Ryb3kgPSBmYWxzZSB9ID0gb3B0cwoKICAgIGRiLl9yZWYoKQoKICAgIHRoaXMuX2RiID0gZGIKICAgIHRoaXMuX2Rlc3Ryb3llZCA9IGZhbHNlCiAgICB0aGlzLl9jYXBhY2l0eSA9IGNhcGFjaXR5CiAgICB0aGlzLl9vcGVyYXRpb25zID0gW10KICAgIHRoaXMuX3Byb21pc2VzID0gW10KCiAgICB0aGlzLl9lbnF1ZXVlUHJvbWlzZSA9IHRoaXMuX2VucXVldWVQcm9taXNlLmJpbmQodGhpcykKCiAgICB0aGlzLl9yZXF1ZXN0ID0gbnVsbAogICAgdGhpcy5fcmVzb2x2ZSA9IG51bGwKICAgIHRoaXMuX3JlamVjdCA9IG51bGwKCiAgICB0aGlzLl9oYW5kbGUgPSBudWxsCiAgICB0aGlzLl9idWZmZXIgPSBudWxsCiAgICB0aGlzLl9hdXRvRGVzdHJveSA9IGF1dG9EZXN0cm95CgogICAgaWYgKGRiLl9zdGF0ZS5vcGVuZWQgPT09IHRydWUpIHRoaXMucmVhZHkoKQogIH0KCiAgX3JldXNlKGRiLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IHsgYXV0b0Rlc3Ryb3kgPSBmYWxzZSB9ID0gb3B0cwoKICAgIGRiLl9yZWYoKQoKICAgIHRoaXMuX2RiID0gZGIKICAgIHRoaXMuX2Rlc3Ryb3llZCA9IGZhbHNlCiAgICB0aGlzLl9hdXRvRGVzdHJveSA9IGF1dG9EZXN0cm95CiAgfQoKICBfb25maW5pc2hlZChlcnIpIHsKICAgIGNvbnN0IHJlc29sdmUgPSB0aGlzLl9yZXNvbHZlCiAgICBjb25zdCByZWplY3QgPSB0aGlzLl9yZWplY3QKCiAgICB0aGlzLl9vcGVyYXRpb25zID0gW10KICAgIHRoaXMuX3Byb21pc2VzID0gW10KICAgIHRoaXMuX3JlcXVlc3QgPSBudWxsCiAgICB0aGlzLl9yZXNvbHZlID0gbnVsbAogICAgdGhpcy5fcmVqZWN0ID0gbnVsbAogICAgdGhpcy5fZGIuX3N0YXRlLmlvLmRlYygpCgogICAgaWYgKHRoaXMuX2F1dG9EZXN0cm95ID09PSB0cnVlKSB0aGlzLmRlc3Ryb3koKQoKICAgIGlmIChyZWplY3QgIT09IG51bGwgJiYgZXJyKSByZWplY3QoZXJyKQogICAgZWxzZSBpZiAocmVzb2x2ZSAhPT0gbnVsbCkgcmVzb2x2ZSgpCiAgfQoKICBfcmVzaXplKCkgewogICAgaWYgKHRoaXMuX29wZXJhdGlvbnMubGVuZ3RoIDw9IHRoaXMuX2NhcGFjaXR5KSByZXR1cm4gZmFsc2UKCiAgICB3aGlsZSAodGhpcy5fb3BlcmF0aW9ucy5sZW5ndGggPiB0aGlzLl9jYXBhY2l0eSkgewogICAgICB0aGlzLl9jYXBhY2l0eSAqPSAyCiAgICB9CgogICAgcmV0dXJuIHRydWUKICB9CgogIGFzeW5jIHJlYWR5KCkgewogICAgaWYgKHRoaXMuX2hhbmRsZSAhPT0gbnVsbCkgcmV0dXJuCgogICAgaWYgKHRoaXMuX2RiLl9zdGF0ZS5vcGVuZWQgPT09IGZhbHNlKSBhd2FpdCB0aGlzLl9kYi5fc3RhdGUucmVhZHkoKQoKICAgIHRoaXMuX2luaXQoKQogIH0KCiAgZGVzdHJveSgpIHsKICAgIGlmICh0aGlzLl9yZXF1ZXN0KSB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVlc3QgaW4gcHJvZ3Jlc3MnKQogICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkgcmV0dXJuCgogICAgdGhpcy5fZGVzdHJveWVkID0gdHJ1ZQoKICAgIGlmICh0aGlzLl9wcm9taXNlcy5sZW5ndGgpIHRoaXMuX2Fib3J0KCkKCiAgICB0aGlzLl9kYi5fdW5yZWYoKQogICAgdGhpcy5fb25mcmVlKCkKICB9CgogIF9vbmZyZWUoKSB7CiAgICB0aGlzLl9kYi5fc3RhdGUuZnJlZUJhdGNoKHRoaXMsIGZhbHNlKQogICAgdGhpcy5fZGIgPSBudWxsCiAgfQoKICBfYWJvcnQoKSB7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3Byb21pc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9wcm9taXNlc1tpXQogICAgICBpZiAocHJvbWlzZSAhPT0gbnVsbCkgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdCYXRjaCBpcyBkZXN0cm95ZWQnKSkKICAgIH0KCiAgICB0aGlzLl9vbmZpbmlzaGVkKG5ldyBFcnJvcignQmF0Y2ggaXMgZGVzdHJveWVkJykpCiAgfQoKICBhc3luYyBmbHVzaCgpIHsKICAgIGlmICh0aGlzLl9yZXF1ZXN0KSB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVlc3QgaW4gcHJvZ3Jlc3MnKQogICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkgdGhyb3cgbmV3IEVycm9yKCdCYXRjaCBpcyBkZXN0cm95ZWQnKQoKICAgIHRoaXMuX3JlcXVlc3QgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlCiAgICAgIHRoaXMuX3JlamVjdCA9IHJlamVjdAogICAgfSkKCiAgICB0aGlzLl9mbHVzaCgpCgogICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QKICB9CgogIHRyeUZsdXNoKCkgewogICAgaWYgKHRoaXMuX3JlcXVlc3QpIHRocm93IG5ldyBFcnJvcignUmVxdWVzdCBpbiBwcm9ncmVzcycpCiAgICBpZiAodGhpcy5fZGVzdHJveWVkKSB0aHJvdyBuZXcgRXJyb3IoJ0JhdGNoIGlzIGRlc3Ryb3llZCcpCgogICAgdGhpcy5fcmVxdWVzdCA9IHJlc29sdmVkCgogICAgdGhpcy5fZmx1c2goKQogIH0KCiAgYXN5bmMgX2ZsdXNoKCkgewogICAgaWYgKHRoaXMuX2hhbmRsZSA9PT0gbnVsbCkgYXdhaXQgdGhpcy5yZWFkeSgpCgogICAgdGhpcy5fZGIuX3N0YXRlLmlvLmluYygpCgogICAgaWYgKHRoaXMuX2RiLl9zdGF0ZS5yZXN1bWVkICE9PSBudWxsKSB7CiAgICAgIGNvbnN0IHJlc3VtZWQgPSBhd2FpdCB0aGlzLl9kYi5fc3RhdGUucmVzdW1lZC5wcm9taXNlCgogICAgICBpZiAoIXJlc3VtZWQpIHsKICAgICAgICBpZiAodGhpcy5fZGVzdHJveWVkKSB7CiAgICAgICAgICB0aGlzLl9kYi5fc3RhdGUuaW8uZGVjKCkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5fZGVzdHJveWVkID0gdHJ1ZQogICAgICAgICAgdGhpcy5fYWJvcnQoKQogICAgICAgICAgdGhpcy5fZGIuX3VucmVmKCkKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CgogIF9lbnF1ZXVlUHJvbWlzZShyZXNvbHZlLCByZWplY3QpIHsKICAgIHRoaXMuX3Byb21pc2VzLnB1c2goeyByZXNvbHZlLCByZWplY3QgfSkKICB9CgogIF9lbmNvZGVLZXkoaykgewogICAgaWYgKHRoaXMuX2RiLl9rZXlFbmNvZGluZykgcmV0dXJuIGMuZW5jb2RlKHRoaXMuX2RiLl9rZXlFbmNvZGluZywgaykKICAgIGlmICh0eXBlb2YgayA9PT0gJ3N0cmluZycpIHJldHVybiBCdWZmZXIuZnJvbShrKQogICAgcmV0dXJuIGsKICB9CgogIF9lbmNvZGVWYWx1ZSh2KSB7CiAgICBpZiAodGhpcy5fZGIuX3ZhbHVlRW5jb2RpbmcpIHJldHVybiBjLmVuY29kZSh0aGlzLl9kYi5fdmFsdWVFbmNvZGluZywgdikKICAgIGlmICh2ID09PSBudWxsKSByZXR1cm4gZW1wdHkKICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHJldHVybiBCdWZmZXIuZnJvbSh2KQogICAgcmV0dXJuIHYKICB9CgogIF9kZWNvZGVWYWx1ZShiKSB7CiAgICBpZiAodGhpcy5fZGIuX3ZhbHVlRW5jb2RpbmcpIHJldHVybiBjLmRlY29kZSh0aGlzLl9kYi5fdmFsdWVFbmNvZGluZywgYikKICAgIHJldHVybiBiCiAgfQp9CgpleHBvcnRzLlJlYWRCYXRjaCA9IGNsYXNzIFJvY2tzREJSZWFkQmF0Y2ggZXh0ZW5kcyBSb2Nrc0RCQmF0Y2ggewogIF9pbml0KCkgewogICAgdGhpcy5faGFuZGxlID0gYmluZGluZy5yZWFkSW5pdCgpCiAgICB0aGlzLl9idWZmZXIgPSBiaW5kaW5nLnJlYWRCdWZmZXIodGhpcy5faGFuZGxlLCB0aGlzLl9jYXBhY2l0eSkKICB9CgogIF9yZXNpemUoKSB7CiAgICBpZiAoc3VwZXIuX3Jlc2l6ZSgpICYmIHRoaXMuX2hhbmRsZSAhPT0gbnVsbCkgewogICAgICB0aGlzLl9idWZmZXIgPSBiaW5kaW5nLnJlYWRCdWZmZXIodGhpcy5faGFuZGxlLCB0aGlzLl9jYXBhY2l0eSkKICAgIH0KICB9CgogIGFzeW5jIF9mbHVzaCgpIHsKICAgIGF3YWl0IHN1cGVyLl9mbHVzaCgpCgogICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkgcmV0dXJuCgogICAgdHJ5IHsKICAgICAgYmluZGluZy5yZWFkKAogICAgICAgIHRoaXMuX2RiLl9zdGF0ZS5faGFuZGxlLAogICAgICAgIHRoaXMuX2hhbmRsZSwKICAgICAgICB0aGlzLl9vcGVyYXRpb25zLAogICAgICAgIHRoaXMuX2RiLl9zbmFwc2hvdCA/IHRoaXMuX2RiLl9zbmFwc2hvdC5faGFuZGxlIDogbnVsbCwKICAgICAgICB0aGlzLAogICAgICAgIHRoaXMuX29ucmVhZAogICAgICApCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgdGhpcy5fZGIuX3N0YXRlLmlvLmRlYygpCiAgICAgIHRocm93IGVycgogICAgfQogIH0KCiAgX29ucmVhZChlcnJzLCB2YWx1ZXMpIHsKICAgIGxldCBhcHBsaWVkID0gdHJ1ZQoKICAgIGZvciAobGV0IGkgPSAwLCBuID0gdGhpcy5fcHJvbWlzZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9wcm9taXNlc1tpXQogICAgICBpZiAocHJvbWlzZSA9PT0gbnVsbCkgY29udGludWUKCiAgICAgIGNvbnN0IGVyciA9IGVycnNbaV0KCiAgICAgIGlmIChlcnIpIHsKICAgICAgICBhcHBsaWVkID0gZmFsc2UKCiAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGVycikpCiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHJvbWlzZS5yZXNvbHZlKAogICAgICAgICAgdmFsdWVzW2ldID8gdGhpcy5fZGVjb2RlVmFsdWUoQnVmZmVyLmZyb20odmFsdWVzW2ldKSkgOiBudWxsCiAgICAgICAgKQogICAgICB9CiAgICB9CgogICAgdGhpcy5fb25maW5pc2hlZChhcHBsaWVkID8gbnVsbCA6IG5ldyBFcnJvcignQmF0Y2ggd2FzIG5vdCBhcHBsaWVkJykpCiAgfQoKICBnZXQoa2V5KSB7CiAgICBpZiAodGhpcy5fcmVxdWVzdCkgdGhyb3cgbmV3IEVycm9yKCdSZXF1ZXN0IGFscmVhZHkgaW4gcHJvZ3Jlc3MnKQoKICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSh0aGlzLl9lbnF1ZXVlUHJvbWlzZSkKCiAgICB0aGlzLl9vcGVyYXRpb25zLnB1c2goCiAgICAgIG5ldyBSb2Nrc0RCR2V0KHRoaXMuX2VuY29kZUtleShrZXkpLCB0aGlzLl9kYi5fY29sdW1uRmFtaWx5KQogICAgKQoKICAgIHRoaXMuX3Jlc2l6ZSgpCgogICAgcmV0dXJuIHByb21pc2UKICB9Cn0KCmV4cG9ydHMuV3JpdGVCYXRjaCA9IGNsYXNzIFJvY2tzREJXcml0ZUJhdGNoIGV4dGVuZHMgUm9ja3NEQkJhdGNoIHsKICBfaW5pdCgpIHsKICAgIHRoaXMuX2hhbmRsZSA9IGJpbmRpbmcud3JpdGVJbml0KCkKICAgIHRoaXMuX2J1ZmZlciA9IGJpbmRpbmcud3JpdGVCdWZmZXIodGhpcy5faGFuZGxlLCB0aGlzLl9jYXBhY2l0eSkKICB9CgogIF9yZXNpemUoKSB7CiAgICBpZiAoc3VwZXIuX3Jlc2l6ZSgpICYmIHRoaXMuX2hhbmRsZSAhPT0gbnVsbCkgewogICAgICB0aGlzLl9idWZmZXIgPSBiaW5kaW5nLndyaXRlQnVmZmVyKHRoaXMuX2hhbmRsZSwgdGhpcy5fY2FwYWNpdHkpCiAgICB9CiAgfQoKICBfb25mcmVlKCkgewogICAgdGhpcy5fZGIuX3N0YXRlLmZyZWVCYXRjaCh0aGlzLCB0cnVlKQogIH0KCiAgYXN5bmMgX2ZsdXNoKCkgewogICAgYXdhaXQgc3VwZXIuX2ZsdXNoKCkKCiAgICBpZiAodGhpcy5fZGVzdHJveWVkKSByZXR1cm4KCiAgICB0cnkgewogICAgICBiaW5kaW5nLndyaXRlKAogICAgICAgIHRoaXMuX2RiLl9zdGF0ZS5faGFuZGxlLAogICAgICAgIHRoaXMuX2hhbmRsZSwKICAgICAgICB0aGlzLl9vcGVyYXRpb25zLAogICAgICAgIHRoaXMsCiAgICAgICAgdGhpcy5fb253cml0ZQogICAgICApCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgdGhpcy5fZGIuX3N0YXRlLmlvLmRlYygpCiAgICAgIHRocm93IGVycgogICAgfQogIH0KCiAgX29ud3JpdGUoZXJyKSB7CiAgICBsZXQgYXBwbGllZCA9IHRydWUKCiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMuX3Byb21pc2VzLmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fcHJvbWlzZXNbaV0KICAgICAgaWYgKHByb21pc2UgPT09IG51bGwpIGNvbnRpbnVlCgogICAgICBpZiAoZXJyKSB7CiAgICAgICAgYXBwbGllZCA9IGZhbHNlCgogICAgICAgIHByb21pc2UucmVqZWN0KG5ldyBFcnJvcihlcnIpKQogICAgICB9IGVsc2UgewogICAgICAgIHByb21pc2UucmVzb2x2ZSgpCiAgICAgIH0KICAgIH0KCiAgICB0aGlzLl9vbmZpbmlzaGVkKGFwcGxpZWQgPyBudWxsIDogbmV3IEVycm9yKCdCYXRjaCB3YXMgbm90IGFwcGxpZWQnKSkKICB9CgogIHB1dChrZXksIHZhbHVlKSB7CiAgICBpZiAodGhpcy5fcmVxdWVzdCkgdGhyb3cgbmV3IEVycm9yKCdSZXF1ZXN0IGFscmVhZHkgaW4gcHJvZ3Jlc3MnKQoKICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSh0aGlzLl9lbnF1ZXVlUHJvbWlzZSkKCiAgICB0aGlzLl9vcGVyYXRpb25zLnB1c2goCiAgICAgIG5ldyBSb2Nrc0RCUHV0KAogICAgICAgIHRoaXMuX2VuY29kZUtleShrZXkpLAogICAgICAgIHRoaXMuX2VuY29kZVZhbHVlKHZhbHVlKSwKICAgICAgICB0aGlzLl9kYi5fY29sdW1uRmFtaWx5CiAgICAgICkKICAgICkKCiAgICB0aGlzLl9yZXNpemUoKQoKICAgIHJldHVybiBwcm9taXNlCiAgfQoKICB0cnlQdXQoa2V5LCB2YWx1ZSkgewogICAgaWYgKHRoaXMuX3JlcXVlc3QpIHRocm93IG5ldyBFcnJvcignUmVxdWVzdCBhbHJlYWR5IGluIHByb2dyZXNzJykKCiAgICB0aGlzLl9vcGVyYXRpb25zLnB1c2goCiAgICAgIG5ldyBSb2Nrc0RCUHV0KAogICAgICAgIHRoaXMuX2VuY29kZUtleShrZXkpLAogICAgICAgIHRoaXMuX2VuY29kZVZhbHVlKHZhbHVlKSwKICAgICAgICB0aGlzLl9kYi5fY29sdW1uRmFtaWx5CiAgICAgICkKICAgICkKCiAgICB0aGlzLl9wcm9taXNlcy5wdXNoKG51bGwpCgogICAgdGhpcy5fcmVzaXplKCkKICB9CgogIGRlbGV0ZShrZXkpIHsKICAgIGlmICh0aGlzLl9yZXF1ZXN0KSB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVlc3QgYWxyZWFkeSBpbiBwcm9ncmVzcycpCgogICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHRoaXMuX2VucXVldWVQcm9taXNlKQoKICAgIHRoaXMuX29wZXJhdGlvbnMucHVzaCgKICAgICAgbmV3IFJvY2tzREJEZWxldGUodGhpcy5fZW5jb2RlS2V5KGtleSksIHRoaXMuX2RiLl9jb2x1bW5GYW1pbHkpCiAgICApCgogICAgdGhpcy5fcmVzaXplKCkKCiAgICByZXR1cm4gcHJvbWlzZQogIH0KCiAgdHJ5RGVsZXRlKGtleSkgewogICAgaWYgKHRoaXMuX3JlcXVlc3QpIHRocm93IG5ldyBFcnJvcignUmVxdWVzdCBhbHJlYWR5IGluIHByb2dyZXNzJykKCiAgICB0aGlzLl9vcGVyYXRpb25zLnB1c2goCiAgICAgIG5ldyBSb2Nrc0RCRGVsZXRlKHRoaXMuX2VuY29kZUtleShrZXkpLCB0aGlzLl9kYi5fY29sdW1uRmFtaWx5KQogICAgKQoKICAgIHRoaXMuX3Byb21pc2VzLnB1c2gobnVsbCkKCiAgICB0aGlzLl9yZXNpemUoKQogIH0KCiAgZGVsZXRlUmFuZ2Uoc3RhcnQsIGVuZCkgewogICAgaWYgKHRoaXMuX3JlcXVlc3QpIHRocm93IG5ldyBFcnJvcignUmVxdWVzdCBhbHJlYWR5IGluIHByb2dyZXNzJykKCiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UodGhpcy5fZW5xdWV1ZVByb21pc2UpCgogICAgdGhpcy5fb3BlcmF0aW9ucy5wdXNoKAogICAgICBuZXcgUm9ja3NEQkRlbGV0ZVJhbmdlKAogICAgICAgIHRoaXMuX2VuY29kZUtleShzdGFydCksCiAgICAgICAgdGhpcy5fZW5jb2RlS2V5KGVuZCksCiAgICAgICAgdGhpcy5fZGIuX2NvbHVtbkZhbWlseQogICAgICApCiAgICApCgogICAgdGhpcy5fcmVzaXplKCkKCiAgICByZXR1cm4gcHJvbWlzZQogIH0KCiAgdHJ5RGVsZXRlUmFuZ2Uoc3RhcnQsIGVuZCkgewogICAgaWYgKHRoaXMuX3JlcXVlc3QpIHRocm93IG5ldyBFcnJvcignUmVxdWVzdCBhbHJlYWR5IGluIHByb2dyZXNzJykKCiAgICB0aGlzLl9vcGVyYXRpb25zLnB1c2goCiAgICAgIG5ldyBSb2Nrc0RCRGVsZXRlUmFuZ2UoCiAgICAgICAgdGhpcy5fZW5jb2RlS2V5KHN0YXJ0KSwKICAgICAgICB0aGlzLl9lbmNvZGVLZXkoZW5kKSwKICAgICAgICB0aGlzLl9kYi5fY29sdW1uRmFtaWx5CiAgICAgICkKICAgICkKCiAgICB0aGlzLl9wcm9taXNlcy5wdXNoKG51bGwpCgogICAgdGhpcy5fcmVzaXplKCkKICB9Cn0KCmNsYXNzIFJvY2tzREJHZXQgewogIGNvbnN0cnVjdG9yKGtleSwgY29sdW1uRmFtaWx5KSB7CiAgICB0aGlzLmtleSA9IGtleQogICAgdGhpcy5jb2x1bW5GYW1pbHkgPSBjb2x1bW5GYW1pbHkuX2hhbmRsZQogIH0KCiAgZ2V0IHR5cGUoKSB7CiAgICByZXR1cm4gYmluZGluZy5HRVQKICB9Cn0KCmNsYXNzIFJvY2tzREJQdXQgewogIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUsIGNvbHVtbkZhbWlseSkgewogICAgdGhpcy5rZXkgPSBrZXkKICAgIHRoaXMudmFsdWUgPSB2YWx1ZQogICAgdGhpcy5jb2x1bW5GYW1pbHkgPSBjb2x1bW5GYW1pbHkuX2hhbmRsZQogIH0KCiAgZ2V0IHR5cGUoKSB7CiAgICByZXR1cm4gYmluZGluZy5QVVQKICB9Cn0KCmNsYXNzIFJvY2tzREJEZWxldGUgewogIGNvbnN0cnVjdG9yKGtleSwgY29sdW1uRmFtaWx5KSB7CiAgICB0aGlzLmtleSA9IGtleQogICAgdGhpcy5jb2x1bW5GYW1pbHkgPSBjb2x1bW5GYW1pbHkuX2hhbmRsZQogIH0KCiAgZ2V0IHR5cGUoKSB7CiAgICByZXR1cm4gYmluZGluZy5ERUxFVEUKICB9Cn0KCmNsYXNzIFJvY2tzREJEZWxldGVSYW5nZSB7CiAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCwgY29sdW1uRmFtaWx5KSB7CiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQKICAgIHRoaXMuZW5kID0gZW5kCiAgICB0aGlzLmNvbHVtbkZhbWlseSA9IGNvbHVtbkZhbWlseS5faGFuZGxlCiAgfQoKICBnZXQgdHlwZSgpIHsKICAgIHJldHVybiBiaW5kaW5nLkRFTEVURV9SQU5HRQogIH0KfQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi4vYmluZGluZycpCmNvbnN0IHsgQmxvb21GaWx0ZXJQb2xpY3kgfSA9IHJlcXVpcmUoJy4vZmlsdGVyLXBvbGljeScpCgpjbGFzcyBSb2Nrc0RCQ29sdW1uRmFtaWx5IHsKICBjb25zdHJ1Y3RvcihuYW1lLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IHsKICAgICAgLy8gQmxvYiBvcHRpb25zCiAgICAgIGVuYWJsZUJsb2JGaWxlcyA9IGZhbHNlLAogICAgICBtaW5CbG9iU2l6ZSA9IDAsCiAgICAgIGJsb2JGaWxlU2l6ZSA9IDAsCiAgICAgIGVuYWJsZUJsb2JHYXJiYWdlQ29sbGVjdGlvbiA9IHRydWUsCiAgICAgIC8vIEJsb2NrIHRhYmxlIG9wdGlvbnMKICAgICAgdGFibGVCbG9ja1NpemUgPSA4MTkyLAogICAgICB0YWJsZUNhY2hlSW5kZXhBbmRGaWx0ZXJCbG9ja3MgPSB0cnVlLAogICAgICB0YWJsZUZvcm1hdFZlcnNpb24gPSA2LAogICAgICBvcHRpbWl6ZUZpbHRlcnNGb3JNZW1vcnkgPSBmYWxzZSwKICAgICAgYmxvY2tDYWNoZSA9IHRydWUsCiAgICAgIGZpbHRlclBvbGljeSA9IG5ldyBCbG9vbUZpbHRlclBvbGljeSgxMCkKICAgIH0gPSBvcHRzCgogICAgdGhpcy5fbmFtZSA9IG5hbWUKICAgIHRoaXMuX2ZsdXNoaW5nID0gbnVsbAogICAgdGhpcy5fb3B0aW9ucyA9IHsKICAgICAgZW5hYmxlQmxvYkZpbGVzLAogICAgICBtaW5CbG9iU2l6ZSwKICAgICAgYmxvYkZpbGVTaXplLAogICAgICBlbmFibGVCbG9iR2FyYmFnZUNvbGxlY3Rpb24sCiAgICAgIHRhYmxlQmxvY2tTaXplLAogICAgICB0YWJsZUNhY2hlSW5kZXhBbmRGaWx0ZXJCbG9ja3MsCiAgICAgIHRhYmxlRm9ybWF0VmVyc2lvbiwKICAgICAgb3B0aW1pemVGaWx0ZXJzRm9yTWVtb3J5LAogICAgICBibG9ja0NhY2hlLAogICAgICBmaWx0ZXJQb2xpY3kKICAgIH0KCiAgICBjb25zdCBmaWx0ZXJQb2xpY3lBcmd1bWVudHMgPSBbXQoKICAgIGlmIChmaWx0ZXJQb2xpY3kgPT09IG51bGwpIGZpbHRlclBvbGljeUFyZ3VtZW50cy5wdXNoKDApCiAgICBlbHNlIHsKICAgICAgZmlsdGVyUG9saWN5QXJndW1lbnRzLnB1c2goZmlsdGVyUG9saWN5LnR5cGUpCgogICAgICBzd2l0Y2ggKGZpbHRlclBvbGljeS50eXBlKSB7CiAgICAgICAgY2FzZSAxOiAvLyBCbG9vbSBmaWx0ZXIgcG9saWN5CiAgICAgICAgICBmaWx0ZXJQb2xpY3lBcmd1bWVudHMucHVzaChmaWx0ZXJQb2xpY3kuYml0c1BlcktleSkKICAgICAgICAgIGJyZWFrCiAgICAgICAgY2FzZSAyOiAvLyBSaWJib24gZmlsdGVyIHBvbGljeQogICAgICAgICAgZmlsdGVyUG9saWN5QXJndW1lbnRzLnB1c2goCiAgICAgICAgICAgIGZpbHRlclBvbGljeS5ibG9vbUVxdWl2YWxlbnRCaXRzUGVyS2V5LAogICAgICAgICAgICBmaWx0ZXJQb2xpY3kuYmxvb21CZWZvcmVMZXZlbAogICAgICAgICAgKQogICAgICAgICAgYnJlYWsKICAgICAgfQogICAgfQoKICAgIHRoaXMuX2hhbmRsZSA9IGJpbmRpbmcuY29sdW1uRmFtaWx5SW5pdCgKICAgICAgbmFtZSwKICAgICAgZW5hYmxlQmxvYkZpbGVzLAogICAgICBtaW5CbG9iU2l6ZSwKICAgICAgYmxvYkZpbGVTaXplLAogICAgICBlbmFibGVCbG9iR2FyYmFnZUNvbGxlY3Rpb24sCiAgICAgIHRhYmxlQmxvY2tTaXplLAogICAgICB0YWJsZUNhY2hlSW5kZXhBbmRGaWx0ZXJCbG9ja3MsCiAgICAgIHRhYmxlRm9ybWF0VmVyc2lvbiwKICAgICAgb3B0aW1pemVGaWx0ZXJzRm9yTWVtb3J5LAogICAgICBibG9ja0NhY2hlID09PSBmYWxzZSwKICAgICAgLi4uZmlsdGVyUG9saWN5QXJndW1lbnRzCiAgICApCiAgfQoKICBjbG9uZVNldHRpbmdzKG5hbWUpIHsKICAgIHJldHVybiBuZXcgUm9ja3NEQkNvbHVtbkZhbWlseShuYW1lLCB0aGlzLl9vcHRpb25zKQogIH0KCiAgZ2V0IG5hbWUoKSB7CiAgICByZXR1cm4gdGhpcy5fbmFtZQogIH0KCiAgZGVzdHJveSgpIHsKICAgIGlmICh0aGlzLl9oYW5kbGUgPT09IG51bGwpIHJldHVybgoKICAgIGJpbmRpbmcuY29sdW1uRmFtaWx5RGVzdHJveSh0aGlzLl9oYW5kbGUpCgogICAgdGhpcy5faGFuZGxlID0gbnVsbAogIH0KfQoKbW9kdWxlLmV4cG9ydHMgPSBSb2Nrc0RCQ29sdW1uRmFtaWx5CmV4cG9ydHMuQmxvb21GaWx0ZXJQb2xpY3kgPSBjbGFzcyBSb2Nrc0RCQmxvb21GaWx0ZXJQb2xpY3kgewogIGdldCB0eXBlKCkgewogICAgcmV0dXJuIDEKICB9CgogIGNvbnN0cnVjdG9yKGJpdHNQZXJLZXkpIHsKICAgIHRoaXMuYml0c1BlcktleSA9IGJpdHNQZXJLZXkKICB9Cn0KCmV4cG9ydHMuUmliYm9uRmlsdGVyUG9saWN5ID0gY2xhc3MgUm9ja3NEQlJpYmJvbkZpbHRlclBvbGljeSB7CiAgZ2V0IHR5cGUoKSB7CiAgICByZXR1cm4gMgogIH0KCiAgY29uc3RydWN0b3IoYmxvb21FcXVpdmFsZW50Qml0c1BlcktleSwgYmxvb21CZWZvcmVMZXZlbCA9IDApIHsKICAgIHRoaXMuYmxvb21FcXVpdmFsZW50Qml0c1BlcktleSA9IGJsb29tRXF1aXZhbGVudEJpdHNQZXJLZXkKICAgIHRoaXMuYmxvb21CZWZvcmVMZXZlbCA9IGJsb29tQmVmb3JlTGV2ZWwKICB9Cn0KY29uc3QgeyBSZWFkYWJsZSB9ID0gcmVxdWlyZSgnc3RyZWFteCcpCmNvbnN0IGMgPSByZXF1aXJlKCdjb21wYWN0LWVuY29kaW5nJykKY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4uL2JpbmRpbmcnKQoKY29uc3QgZW1wdHkgPSBCdWZmZXIuYWxsb2MoMCkKCm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUm9ja3NEQkl0ZXJhdG9yIGV4dGVuZHMgUmVhZGFibGUgewogIGNvbnN0cnVjdG9yKGRiLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IHsKICAgICAgZ3QgPSBudWxsLAogICAgICBndGUgPSBudWxsLAogICAgICBsdCA9IG51bGwsCiAgICAgIGx0ZSA9IG51bGwsCiAgICAgIHJldmVyc2UgPSBmYWxzZSwKICAgICAgbGltaXQgPSBJbmZpbml0eSwKICAgICAgY2FwYWNpdHkgPSA4CiAgICB9ID0gb3B0cwoKICAgIHN1cGVyKCkKCiAgICBkYi5fcmVmKCkKCiAgICB0aGlzLl9kYiA9IGRiCgogICAgdGhpcy5fZ3QgPSBndCA/IHRoaXMuX2VuY29kZUtleShndCkgOiBlbXB0eQogICAgdGhpcy5fZ3RlID0gZ3RlID8gdGhpcy5fZW5jb2RlS2V5KGd0ZSkgOiBlbXB0eQogICAgdGhpcy5fbHQgPSBsdCA/IHRoaXMuX2VuY29kZUtleShsdCkgOiBlbXB0eQogICAgdGhpcy5fbHRlID0gbHRlID8gdGhpcy5fZW5jb2RlS2V5KGx0ZSkgOiBlbXB0eQoKICAgIHRoaXMuX3JldmVyc2UgPSByZXZlcnNlCiAgICB0aGlzLl9saW1pdCA9IGxpbWl0IDwgMCA/IEluZmluaXR5IDogbGltaXQKICAgIHRoaXMuX2NhcGFjaXR5ID0gY2FwYWNpdHkKICAgIHRoaXMuX29wZW5lZCA9IGZhbHNlCgogICAgdGhpcy5fcGVuZGluZ09wZW4gPSBudWxsCiAgICB0aGlzLl9wZW5kaW5nUmVhZCA9IG51bGwKICAgIHRoaXMuX3BlbmRpbmdEZXN0cm95ID0gbnVsbAoKICAgIHRoaXMuX2J1ZmZlciA9IG51bGwKICAgIHRoaXMuX2hhbmRsZSA9IG51bGwKCiAgICBpZiAodGhpcy5fZGIuX3N0YXRlLm9wZW5lZCA9PT0gdHJ1ZSkgdGhpcy5yZWFkeSgpCiAgfQoKICBfb25vcGVuKGVycikgewogICAgY29uc3QgY2IgPSB0aGlzLl9wZW5kaW5nT3BlbgogICAgdGhpcy5fcGVuZGluZ09wZW4gPSBudWxsCiAgICB0aGlzLl9vcGVuZWQgPSB0cnVlCiAgICB0aGlzLl9kYi5fc3RhdGUuaW8uZGVjKCkKICAgIGNiKGVycikKICB9CgogIF9vbnJlYWQoZXJyLCBrZXlzLCB2YWx1ZXMpIHsKICAgIGNvbnN0IGNiID0gdGhpcy5fcGVuZGluZ1JlYWQKICAgIHRoaXMuX3BlbmRpbmdSZWFkID0gbnVsbAogICAgdGhpcy5fZGIuX3N0YXRlLmlvLmRlYygpCiAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJyKQoKICAgIGNvbnN0IG4gPSBrZXlzLmxlbmd0aAoKICAgIHRoaXMuX2xpbWl0IC09IG4KCiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICB0aGlzLnB1c2goewogICAgICAgIGtleTogdGhpcy5fZGVjb2RlS2V5KEJ1ZmZlci5mcm9tKGtleXNbaV0pKSwKICAgICAgICB2YWx1ZTogdGhpcy5fZGVjb2RlVmFsdWUoQnVmZmVyLmZyb20odmFsdWVzW2ldKSkKICAgICAgfSkKICAgIH0KCiAgICBpZiAobiA8IHRoaXMuX2NhcGFjaXR5KSB0aGlzLnB1c2gobnVsbCkKCiAgICBjYihudWxsKQogIH0KCiAgX29uY2xvc2UoZXJyKSB7CiAgICBjb25zdCBjYiA9IHRoaXMuX3BlbmRpbmdEZXN0cm95CiAgICB0aGlzLl9wZW5kaW5nRGVzdHJveSA9IG51bGwKICAgIHRoaXMuX2RiLl9zdGF0ZS5pby5kZWMoKQogICAgdGhpcy5fZGIuX3VucmVmKCkKICAgIGNiKGVycikKICB9CgogIF9yZXNpemUoKSB7CiAgICBpZiAodGhpcy5faGFuZGxlICE9PSBudWxsKSB7CiAgICAgIHRoaXMuX2J1ZmZlciA9IGJpbmRpbmcuaXRlcmF0b3JCdWZmZXIodGhpcy5faGFuZGxlLCB0aGlzLl9jYXBhY2l0eSkKICAgIH0KICB9CgogIGFzeW5jIHJlYWR5KCkgewogICAgaWYgKHRoaXMuX2hhbmRsZSAhPT0gbnVsbCkgcmV0dXJuCgogICAgaWYgKHRoaXMuX2RiLl9zdGF0ZS5vcGVuZWQgPT09IGZhbHNlKSBhd2FpdCB0aGlzLl9kYi5fc3RhdGUucmVhZHkoKQoKICAgIHRoaXMuX2luaXQoKQogIH0KCiAgX2luaXQoKSB7CiAgICB0aGlzLl9oYW5kbGUgPSBiaW5kaW5nLml0ZXJhdG9ySW5pdCgpCiAgICB0aGlzLl9idWZmZXIgPSBiaW5kaW5nLml0ZXJhdG9yQnVmZmVyKHRoaXMuX2hhbmRsZSwgdGhpcy5fY2FwYWNpdHkpCiAgfQoKICBhc3luYyBfb3BlbihjYikgewogICAgYXdhaXQgdGhpcy5yZWFkeSgpCgogICAgdGhpcy5fZGIuX3N0YXRlLmlvLmluYygpCgogICAgaWYgKHRoaXMuX2RiLl9zdGF0ZS5yZXN1bWVkICE9PSBudWxsKSB7CiAgICAgIGNvbnN0IHJlc3VtZWQgPSBhd2FpdCB0aGlzLl9kYi5fc3RhdGUucmVzdW1lZC5wcm9taXNlCgogICAgICBpZiAoIXJlc3VtZWQpIHsKICAgICAgICB0aGlzLl9kYi5fc3RhdGUuaW8uZGVjKCkKCiAgICAgICAgcmV0dXJuIGNiKG5ldyBFcnJvcignUm9ja3NEQiBzZXNzaW9uIGlzIGNsb3NlZCcpKQogICAgICB9CiAgICB9CgogICAgdGhpcy5fcGVuZGluZ09wZW4gPSBjYgoKICAgIHRyeSB7CiAgICAgIGJpbmRpbmcuaXRlcmF0b3JPcGVuKAogICAgICAgIHRoaXMuX2RiLl9zdGF0ZS5faGFuZGxlLAogICAgICAgIHRoaXMuX2hhbmRsZSwKICAgICAgICB0aGlzLl9kYi5fY29sdW1uRmFtaWx5Ll9oYW5kbGUsCiAgICAgICAgdGhpcy5fZ3QsCiAgICAgICAgdGhpcy5fZ3RlLAogICAgICAgIHRoaXMuX2x0LAogICAgICAgIHRoaXMuX2x0ZSwKICAgICAgICB0aGlzLl9yZXZlcnNlLAogICAgICAgIHRoaXMuX2RiLl9zbmFwc2hvdCA/IHRoaXMuX2RiLl9zbmFwc2hvdC5faGFuZGxlIDogbnVsbCwKICAgICAgICB0aGlzLAogICAgICAgIHRoaXMuX29ub3BlbiwKICAgICAgICB0aGlzLl9vbmNsb3NlLAogICAgICAgIHRoaXMuX29ucmVhZAogICAgICApCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgdGhpcy5fZGIuX3N0YXRlLmlvLmRlYygpCiAgICAgIHRocm93IGVycgogICAgfQogIH0KCiAgYXN5bmMgX3JlYWQoY2IpIHsKICAgIHRoaXMuX2RiLl9zdGF0ZS5pby5pbmMoKQoKICAgIGlmICh0aGlzLl9kYi5fc3RhdGUucmVzdW1lZCAhPT0gbnVsbCkgewogICAgICBjb25zdCByZXN1bWVkID0gYXdhaXQgdGhpcy5fZGIuX3N0YXRlLnJlc3VtZWQucHJvbWlzZQoKICAgICAgaWYgKCFyZXN1bWVkKSB7CiAgICAgICAgdGhpcy5fZGIuX3N0YXRlLmlvLmRlYygpCgogICAgICAgIHJldHVybiBjYihuZXcgRXJyb3IoJ1JvY2tzREIgc2Vzc2lvbiBpcyBjbG9zZWQnKSkKICAgICAgfQogICAgfQoKICAgIHRoaXMuX3BlbmRpbmdSZWFkID0gY2IKCiAgICB0cnkgewogICAgICBiaW5kaW5nLml0ZXJhdG9yUmVhZCh0aGlzLl9oYW5kbGUsIE1hdGgubWluKHRoaXMuX2NhcGFjaXR5LCB0aGlzLl9saW1pdCkpCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgdGhpcy5fZGIuX3N0YXRlLmlvLmRlYygpCiAgICAgIHRocm93IGVycgogICAgfQogIH0KCiAgYXN5bmMgX2Rlc3Ryb3koY2IpIHsKICAgIGF3YWl0IHRoaXMucmVhZHkoKQoKICAgIHRoaXMuX2RiLl9zdGF0ZS5pby5pbmMoKQoKICAgIHRoaXMuX3BlbmRpbmdEZXN0cm95ID0gY2IKCiAgICBpZiAodGhpcy5fb3BlbmVkID09PSBmYWxzZSkgewogICAgICB0aGlzLl9kYi5fc3RhdGUuaW8uZGVjKCkKCiAgICAgIHJldHVybiB0aGlzLl9vbmNsb3NlKG51bGwpCiAgICB9CgogICAgdHJ5IHsKICAgICAgYmluZGluZy5pdGVyYXRvckNsb3NlKHRoaXMuX2hhbmRsZSkKICAgIH0gY2F0Y2ggKGVycikgewogICAgICB0aGlzLl9kYi5fc3RhdGUuaW8uZGVjKCkKICAgICAgdGhyb3cgZXJyCiAgICB9CiAgfQoKICBfZW5jb2RlS2V5KGspIHsKICAgIGlmICh0aGlzLl9kYi5fa2V5RW5jb2RpbmcgIT09IG51bGwpCiAgICAgIHJldHVybiBjLmVuY29kZSh0aGlzLl9kYi5fa2V5RW5jb2RpbmcsIGspCiAgICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSByZXR1cm4gQnVmZmVyLmZyb20oaykKICAgIHJldHVybiBrCiAgfQoKICBfZGVjb2RlS2V5KGIpIHsKICAgIGlmICh0aGlzLl9kYi5fa2V5RW5jb2RpbmcgIT09IG51bGwpCiAgICAgIHJldHVybiBjLmRlY29kZSh0aGlzLl9kYi5fa2V5RW5jb2RpbmcsIGIpCiAgICByZXR1cm4gYgogIH0KCiAgX2RlY29kZVZhbHVlKGIpIHsKICAgIGlmICh0aGlzLl9kYi5fdmFsdWVFbmNvZGluZyAhPT0gbnVsbCkKICAgICAgcmV0dXJuIGMuZGVjb2RlKHRoaXMuX2RiLl92YWx1ZUVuY29kaW5nLCBiKQogICAgcmV0dXJuIGIKICB9Cn0KY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4uL2JpbmRpbmcnKQoKbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBSb2Nrc0RCU25hcHNob3QgewogIGNvbnN0cnVjdG9yKHN0YXRlKSB7CiAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlCgogICAgdGhpcy5faGFuZGxlID0gbnVsbAogICAgdGhpcy5fcmVmcyA9IDAKCiAgICBpZiAoc3RhdGUuZGVmZXJTbmFwc2hvdEluaXQgPT09IGZhbHNlKSB0aGlzLl9pbml0KCkKICB9CgogIF9pbml0KCkgewogICAgdGhpcy5faGFuZGxlID0gYmluZGluZy5zbmFwc2hvdENyZWF0ZSh0aGlzLl9zdGF0ZS5faGFuZGxlKQogIH0KCiAgcmVmKCkgewogICAgdGhpcy5fcmVmcysrCiAgfQoKICB1bnJlZigpIHsKICAgIGlmICgtLXRoaXMuX3JlZnMgPiAwKSByZXR1cm4KCiAgICBpZiAodGhpcy5faGFuZGxlID09PSBudWxsKSByZXR1cm4KCiAgICBiaW5kaW5nLnNuYXBzaG90RGVzdHJveSh0aGlzLl9oYW5kbGUpCgogICAgdGhpcy5faGFuZGxlID0gbnVsbAogIH0KfQpjb25zdCBSZWFkeVJlc291cmNlID0gcmVxdWlyZSgncmVhZHktcmVzb3VyY2UnKQpjb25zdCBSZWZDb3VudGVyID0gcmVxdWlyZSgncmVmY291bnRlcicpCmNvbnN0IHJycCA9IHJlcXVpcmUoJ3Jlc29sdmUtcmVqZWN0LXByb21pc2UnKQpjb25zdCB7IFJlYWRCYXRjaCwgV3JpdGVCYXRjaCB9ID0gcmVxdWlyZSgnLi9iYXRjaCcpCmNvbnN0IENvbHVtbkZhbWlseSA9IHJlcXVpcmUoJy4vY29sdW1uLWZhbWlseScpCmNvbnN0IGJpbmRpbmcgPSByZXF1aXJlKCcuLi9iaW5kaW5nJykKCmNvbnN0IE1BWF9CQVRDSF9SRVVTRSA9IDY0Cgptb2R1bGUuZXhwb3J0cyA9IGNsYXNzIFJvY2tzREJTdGF0ZSBleHRlbmRzIFJlYWR5UmVzb3VyY2UgewogIGNvbnN0cnVjdG9yKGRiLCBwYXRoLCBvcHRzKSB7CiAgICBzdXBlcigpCgogICAgY29uc3QgewogICAgICBjb2x1bW5GYW1pbHkgPSBuZXcgQ29sdW1uRmFtaWx5KCdkZWZhdWx0Jywgb3B0cyksCiAgICAgIGNvbHVtbkZhbWlsaWVzID0gW10sCiAgICAgIHJlYWRPbmx5ID0gZmFsc2UsCiAgICAgIGNyZWF0ZUlmTWlzc2luZyA9IHRydWUsCiAgICAgIGNyZWF0ZU1pc3NpbmdDb2x1bW5GYW1pbGllcyA9IHRydWUsCiAgICAgIG1heEJhY2tncm91bmRKb2JzID0gNiwKICAgICAgYnl0ZXNQZXJTeW5jID0gMTA0ODU3NiwKICAgICAgbWF4T3BlbkZpbGVzID0gLTEsCiAgICAgIHVzZURpcmVjdFJlYWRzID0gZmFsc2UKICAgIH0gPSBvcHRzCgogICAgdGhpcy5wYXRoID0gcGF0aAogICAgdGhpcy5kYiA9IGRiCiAgICB0aGlzLmhhbmRsZXMgPSBuZXcgUmVmQ291bnRlcigpCiAgICB0aGlzLmlvID0gbmV3IFJlZkNvdW50ZXIoKQogICAgdGhpcy5zZXNzaW9ucyA9IFtdCiAgICB0aGlzLmNvbHVtbkZhbWlsaWVzID0gW2NvbHVtbkZhbWlseV0KICAgIHRoaXMuZGVmZXJTbmFwc2hvdEluaXQgPSB0cnVlCiAgICB0aGlzLnJlc3VtZWQgPSBudWxsCgogICAgdGhpcy5fc3VzcGVuZGVkID0gZmFsc2UKICAgIHRoaXMuX3N1c3BlbmRpbmcgPSBudWxsCiAgICB0aGlzLl9yZXN1bWluZyA9IG51bGwKICAgIHRoaXMuX2NvbHVtbnNGbHVzaGVkID0gZmFsc2UKICAgIHRoaXMuX3JlYWRCYXRjaGVzID0gW10KICAgIHRoaXMuX3dyaXRlQmF0Y2hlcyA9IFtdCgogICAgZm9yIChjb25zdCBjb2x1bW5GYW1pbHkgb2YgY29sdW1uRmFtaWxpZXMpIHsKICAgICAgdGhpcy5jb2x1bW5GYW1pbGllcy5wdXNoKAogICAgICAgIHR5cGVvZiBjb2x1bW5GYW1pbHkgPT09ICdzdHJpbmcnCiAgICAgICAgICA/IG5ldyBDb2x1bW5GYW1pbHkoY29sdW1uRmFtaWx5LCBvcHRzKQogICAgICAgICAgOiBjb2x1bW5GYW1pbHkKICAgICAgKQogICAgfQoKICAgIHRoaXMuX2hhbmRsZSA9IGJpbmRpbmcuaW5pdCgKICAgICAgcmVhZE9ubHksCiAgICAgIGNyZWF0ZUlmTWlzc2luZywKICAgICAgY3JlYXRlTWlzc2luZ0NvbHVtbkZhbWlsaWVzLAogICAgICBtYXhCYWNrZ3JvdW5kSm9icywKICAgICAgYnl0ZXNQZXJTeW5jLAogICAgICBtYXhPcGVuRmlsZXMsCiAgICAgIHVzZURpcmVjdFJlYWRzCiAgICApCiAgfQoKICBjcmVhdGVSZWFkQmF0Y2goZGIsIG9wdHMpIHsKICAgIGlmICh0aGlzLl9yZWFkQmF0Y2hlcy5sZW5ndGggPT09IDApIHJldHVybiBuZXcgUmVhZEJhdGNoKGRiLCBvcHRzKQogICAgY29uc3QgYmF0Y2ggPSB0aGlzLl9yZWFkQmF0Y2hlcy5wb3AoKQogICAgYmF0Y2guX3JldXNlKGRiLCBvcHRzKQogICAgcmV0dXJuIGJhdGNoCiAgfQoKICBjcmVhdGVXcml0ZUJhdGNoKGRiLCBvcHRzKSB7CiAgICBpZiAodGhpcy5fd3JpdGVCYXRjaGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBXcml0ZUJhdGNoKGRiLCBvcHRzKQogICAgY29uc3QgYmF0Y2ggPSB0aGlzLl93cml0ZUJhdGNoZXMucG9wKCkKICAgIGJhdGNoLl9yZXVzZShkYiwgb3B0cykKICAgIHJldHVybiBiYXRjaAogIH0KCiAgZnJlZUJhdGNoKGJhdGNoLCB3cml0YWJsZSkgewogICAgY29uc3QgcXVldWUgPSB3cml0YWJsZSA/IHRoaXMuX3dyaXRlQmF0Y2hlcyA6IHRoaXMuX3JlYWRCYXRjaGVzCiAgICBpZiAocXVldWUubGVuZ3RoID49IE1BWF9CQVRDSF9SRVVTRSkgcmV0dXJuCiAgICBxdWV1ZS5wdXNoKGJhdGNoKQogIH0KCiAgYWRkU2Vzc2lvbihkYikgewogICAgZGIuX2luZGV4ID0gdGhpcy5zZXNzaW9ucy5wdXNoKGRiKSAtIDEKICAgIGlmIChkYi5fc25hcHNob3QpIGRiLl9zbmFwc2hvdC5yZWYoKQogIH0KCiAgcmVtb3ZlU2Vzc2lvbihkYikgewogICAgY29uc3QgaGVhZCA9IHRoaXMuc2Vzc2lvbnMucG9wKCkKICAgIGlmIChoZWFkICE9PSBkYikgdGhpcy5zZXNzaW9uc1soaGVhZC5faW5kZXggPSBkYi5faW5kZXgpXSA9IGhlYWQKICAgIGRiLl9pbmRleCA9IC0xCiAgICBpZiAoZGIuX3NuYXBzaG90KSBkYi5fc25hcHNob3QudW5yZWYoKQogIH0KCiAgdXBzZXJ0Q29sdW1uRmFtaWx5KGMpIHsKICAgIGlmICh0eXBlb2YgYyA9PT0gJ3N0cmluZycpIHsKICAgICAgbGV0IGNvbCA9IHRoaXMuZ2V0Q29sdW1uRmFtaWx5QnlOYW1lKGMpCiAgICAgIGlmIChjb2wpIHJldHVybiBjb2wKICAgICAgY29sID0gdGhpcy5jb2x1bW5GYW1pbGllc1swXS5jbG9uZVNldHRpbmdzKGMpCiAgICAgIHRoaXMuY29sdW1uRmFtaWxpZXMucHVzaChjb2wpCiAgICAgIHJldHVybiBjb2wKICAgIH0KCiAgICBpZiAodGhpcy5jb2x1bW5GYW1pbGllcy5pbmNsdWRlcyhjKSkgcmV0dXJuIGMKICAgIHRoaXMuY29sdW1uRmFtaWxpZXMucHVzaChjKQogICAgcmV0dXJuIGMKICB9CgogIGdldENvbHVtbkZhbWlseShjKSB7CiAgICBpZiAoIWMpIHJldHVybiB0aGlzLmNvbHVtbkZhbWlsaWVzWzBdCiAgICBpZiAoIXRoaXMuX2NvbHVtbnNGbHVzaGVkKSByZXR1cm4gdGhpcy51cHNlcnRDb2x1bW5GYW1pbHkoYykKCiAgICBpZiAodHlwZW9mIGMgIT09ICdzdHJpbmcnKSByZXR1cm4gYwoKICAgIGNvbnN0IGNvbCA9IHRoaXMuZ2V0Q29sdW1uRmFtaWx5QnlOYW1lKGMpCiAgICBpZiAoY29sID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY29sdW1uIGZhbWlseScpCiAgICByZXR1cm4gY29sCiAgfQoKICBnZXRDb2x1bW5GYW1pbHlCeU5hbWUobmFtZSkgewogICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5GYW1pbGllcykgewogICAgICBpZiAoY29sLm5hbWUgPT09IG5hbWUpIHJldHVybiBjb2wKICAgIH0KICAgIHJldHVybiBudWxsCiAgfQoKICBhc3luYyBfb3BlbigpIHsKICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpIC8vIGFsbG93IGNvbHVtbiBmYW1pbGllcyB0byBwb3B1bGF0ZSBpZiBvbmRlbWFuZAoKICAgIGNvbnN0IHJlcSA9IHsgcmVzb2x2ZTogbnVsbCwgcmVqZWN0OiBudWxsLCBoYW5kbGU6IG51bGwgfQoKICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIHJlcS5yZXNvbHZlID0gcmVzb2x2ZQogICAgICByZXEucmVqZWN0ID0gcmVqZWN0CiAgICB9KQoKICAgIHRoaXMuX2NvbHVtbnNGbHVzaGVkID0gdHJ1ZQoKICAgIHJlcS5oYW5kbGUgPSBiaW5kaW5nLm9wZW4oCiAgICAgIHRoaXMuX2hhbmRsZSwKICAgICAgdGhpcywKICAgICAgdGhpcy5wYXRoLAogICAgICB0aGlzLmNvbHVtbkZhbWlsaWVzLm1hcCgoYykgPT4gYy5faGFuZGxlKSwKICAgICAgcmVxLAogICAgICBvbm9wZW4KICAgICkKCiAgICBhd2FpdCBwcm9taXNlCgogICAgdGhpcy5kZWZlclNuYXBzaG90SW5pdCA9IGZhbHNlCgogICAgZm9yIChjb25zdCBzZXNzaW9uIG9mIHRoaXMuc2Vzc2lvbnMpIHsKICAgICAgaWYgKHNlc3Npb24uX3NuYXBzaG90KSBzZXNzaW9uLl9zbmFwc2hvdC5faW5pdCgpCiAgICB9CgogICAgZnVuY3Rpb24gb25vcGVuKGVycikgewogICAgICBpZiAoZXJyKSByZXEucmVqZWN0KG5ldyBFcnJvcihlcnIpKQogICAgICBlbHNlIHJlcS5yZXNvbHZlKCkKICAgIH0KICB9CgogIGFzeW5jIF9jbG9zZSgpIHsKICAgIGlmICh0aGlzLnJlc3VtZWQpIHRoaXMucmVzdW1lZC5yZXNvbHZlKGZhbHNlKQoKICAgIHdoaWxlICghdGhpcy5pby5pc0lkbGUoKSkgYXdhaXQgdGhpcy5pby5pZGxlKCkKICAgIHdoaWxlICghdGhpcy5oYW5kbGVzLmlzSWRsZSgpKSBhd2FpdCB0aGlzLmhhbmRsZXMuaWRsZSgpCgogICAgd2hpbGUgKHRoaXMuc2Vzc2lvbnMubGVuZ3RoID4gMCkgewogICAgICBhd2FpdCB0aGlzLnNlc3Npb25zW3RoaXMuc2Vzc2lvbnMubGVuZ3RoIC0gMV0uY2xvc2UoKQogICAgfQoKICAgIGZvciAoY29uc3QgY29sdW1uRmFtaWx5IG9mIHRoaXMuY29sdW1uRmFtaWxpZXMpIGNvbHVtbkZhbWlseS5kZXN0cm95KCkKCiAgICBjb25zdCByZXEgPSB7IHJlc29sdmU6IG51bGwsIHJlamVjdDogbnVsbCwgaGFuZGxlOiBudWxsIH0KCiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICByZXEucmVzb2x2ZSA9IHJlc29sdmUKICAgICAgcmVxLnJlamVjdCA9IHJlamVjdAogICAgfSkKCiAgICByZXEuaGFuZGxlID0gYmluZGluZy5jbG9zZSh0aGlzLl9oYW5kbGUsIHJlcSwgb25jbG9zZSkKCiAgICBhd2FpdCBwcm9taXNlCgogICAgZnVuY3Rpb24gb25jbG9zZShlcnIpIHsKICAgICAgaWYgKGVycikgcmVxLnJlamVjdChuZXcgRXJyb3IoZXJyKSkKICAgICAgZWxzZSByZXEucmVzb2x2ZSgpCiAgICB9CiAgfQoKICBhc3luYyBmbHVzaChkYiwgb3B0cykgewogICAgaWYgKHRoaXMub3BlbmVkID09PSBmYWxzZSkgYXdhaXQgdGhpcy5yZWFkeSgpCgogICAgdGhpcy5pby5pbmMoKQoKICAgIGlmICh0aGlzLnJlc3VtZWQgIT09IG51bGwpIHsKICAgICAgY29uc3QgcmVzdW1lZCA9IGF3YWl0IHRoaXMucmVzdW1lZC5wcm9taXNlCgogICAgICBpZiAoIXJlc3VtZWQpIHsKICAgICAgICB0aGlzLmlvLmRlYygpCgogICAgICAgIHRocm93IG5ldyBFcnJvcignUm9ja3NEQiBzZXNzaW9uIGlzIGNsb3NlZCcpCiAgICAgIH0KICAgIH0KCiAgICBjb25zdCByZXEgPSB7IHJlc29sdmU6IG51bGwsIHJlamVjdDogbnVsbCwgaGFuZGxlOiBudWxsIH0KCiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICByZXEucmVzb2x2ZSA9IHJlc29sdmUKICAgICAgcmVxLnJlamVjdCA9IHJlamVjdAogICAgfSkKCiAgICB0cnkgewogICAgICByZXEuaGFuZGxlID0gYmluZGluZy5mbHVzaCgKICAgICAgICB0aGlzLl9oYW5kbGUsCiAgICAgICAgZGIuX2NvbHVtbkZhbWlseS5faGFuZGxlLAogICAgICAgIHJlcSwKICAgICAgICBvbmZsdXNoCiAgICAgICkKCiAgICAgIGF3YWl0IHByb21pc2UKICAgIH0gZmluYWxseSB7CiAgICAgIHRoaXMuaW8uZGVjKCkKICAgIH0KCiAgICBmdW5jdGlvbiBvbmZsdXNoKGVycikgewogICAgICBpZiAoZXJyKSByZXEucmVqZWN0KG5ldyBFcnJvcihlcnIpKQogICAgICBlbHNlIHJlcS5yZXNvbHZlKCkKICAgIH0KICB9CgogIGFzeW5jIHN1c3BlbmQoKSB7CiAgICBpZiAodGhpcy5fc3VzcGVuZGluZyA9PT0gbnVsbCkgdGhpcy5fc3VzcGVuZGluZyA9IHRoaXMuX3N1c3BlbmQoKQogICAgcmV0dXJuIHRoaXMuX3N1c3BlbmRpbmcKICB9CgogIGFzeW5jIF9zdXNwZW5kKCkgewogICAgaWYgKHRoaXMub3BlbmVkID09PSBmYWxzZSkgYXdhaXQgdGhpcy5yZWFkeSgpCgogICAgdGhpcy5pby5pbmMoKQoKICAgIGlmICh0aGlzLl9yZXN1bWluZyAhPT0gbnVsbCkgYXdhaXQgdGhpcy5fcmVzdW1pbmcKCiAgICB0aGlzLmlvLmRlYygpCgogICAgaWYgKHRoaXMuX3N1c3BlbmRlZCA9PT0gdHJ1ZSkgcmV0dXJuCgogICAgd2hpbGUgKCF0aGlzLmlvLmlzSWRsZSgpKSBhd2FpdCB0aGlzLmlvLmlkbGUoKQoKICAgIHRoaXMuaW8uaW5jKCkKICAgIHRoaXMucmVzdW1lZCA9IHJycCgpCgogICAgY29uc3QgcmVxID0geyByZXNvbHZlOiBudWxsLCByZWplY3Q6IG51bGwsIGhhbmRsZTogbnVsbCB9CgogICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgcmVxLnJlc29sdmUgPSByZXNvbHZlCiAgICAgIHJlcS5yZWplY3QgPSByZWplY3QKICAgIH0pCgogICAgdHJ5IHsKICAgICAgcmVxLmhhbmRsZSA9IGJpbmRpbmcuc3VzcGVuZCh0aGlzLl9oYW5kbGUsIHJlcSwgb25zdXNwZW5kKQoKICAgICAgYXdhaXQgcHJvbWlzZQoKICAgICAgdGhpcy5fc3VzcGVuZGVkID0gdHJ1ZQogICAgfSBmaW5hbGx5IHsKICAgICAgdGhpcy5pby5kZWMoKQoKICAgICAgdGhpcy5fc3VzcGVuZGluZyA9IG51bGwKICAgIH0KCiAgICBmdW5jdGlvbiBvbnN1c3BlbmQoZXJyKSB7CiAgICAgIGlmIChlcnIpIHJlcS5yZWplY3QobmV3IEVycm9yKGVycikpCiAgICAgIGVsc2UgcmVxLnJlc29sdmUoKQogICAgfQogIH0KCiAgcmVzdW1lKCkgewogICAgaWYgKHRoaXMuX3Jlc3VtaW5nID09PSBudWxsKSB0aGlzLl9yZXN1bWluZyA9IHRoaXMuX3Jlc3VtZSgpCiAgICByZXR1cm4gdGhpcy5fcmVzdW1pbmcKICB9CgogIGFzeW5jIF9yZXN1bWUoKSB7CiAgICBpZiAodGhpcy5vcGVuZWQgPT09IGZhbHNlKSBhd2FpdCB0aGlzLnJlYWR5KCkKCiAgICB0aGlzLmlvLmluYygpCgogICAgaWYgKHRoaXMuX3N1c3BlbmRpbmcgIT09IG51bGwpIGF3YWl0IHRoaXMuX3N1c3BlbmRpbmcKCiAgICBpZiAodGhpcy5fc3VzcGVuZGVkID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuaW8uZGVjKCkKCiAgICBjb25zdCByZXEgPSB7IHJlc29sdmU6IG51bGwsIHJlamVjdDogbnVsbCwgaGFuZGxlOiBudWxsIH0KCiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICByZXEucmVzb2x2ZSA9IHJlc29sdmUKICAgICAgcmVxLnJlamVjdCA9IHJlamVjdAogICAgfSkKCiAgICB0cnkgewogICAgICByZXEuaGFuZGxlID0gYmluZGluZy5yZXN1bWUodGhpcy5faGFuZGxlLCByZXEsIG9ucmVzdW1lKQoKICAgICAgYXdhaXQgcHJvbWlzZQoKICAgICAgdGhpcy5fc3VzcGVuZGVkID0gZmFsc2UKICAgIH0gZmluYWxseSB7CiAgICAgIHRoaXMuaW8uZGVjKCkKCiAgICAgIHRoaXMuX3Jlc3VtaW5nID0gbnVsbAogICAgfQoKICAgIGNvbnN0IHJlc3VtZWQgPSB0aGlzLnJlc3VtZWQKICAgIHRoaXMucmVzdW1lZCA9IG51bGwKICAgIHJlc3VtZWQucmVzb2x2ZSh0cnVlKQoKICAgIGZ1bmN0aW9uIG9ucmVzdW1lKGVycikgewogICAgICBpZiAoZXJyKSByZXEucmVqZWN0KG5ldyBFcnJvcihlcnIpKQogICAgICBlbHNlIHJlcS5yZXNvbHZlKCkKICAgIH0KICB9Cn0KewogICJuYW1lIjogInJvY2tzZGItbmF0aXZlIiwKICAidmVyc2lvbiI6ICIzLjUuNyIsCiAgImRlc2NyaXB0aW9uIjogImxpYnJvY2tzZGIgYmluZGluZ3MgZm9yIEphdmFTY3JpcHQiLAogICJleHBvcnRzIjogewogICAgIi4iOiAiLi9pbmRleC5qcyIsCiAgICAiLi9wYWNrYWdlIjogIi4vcGFja2FnZS5qc29uIgogIH0sCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IiwKICAgICJsaWIiLAogICAgInByZWJ1aWxkcyIsCiAgICAiIXByZWJ1aWxkcy9hbmRyb2lkLSovKiovKi5ub2RlIgogIF0sCiAgImFkZG9uIjogdHJ1ZSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogIm5wbSBydW4gbGludCAmJiBucG0gcnVuIHRlc3Q6YmFyZSAmJiBucG0gcnVuIHRlc3Q6bm9kZSIsCiAgICAidGVzdDpiYXJlIjogImJhcmUgdGVzdC5qcyIsCiAgICAidGVzdDpub2RlIjogIm5vZGUgdGVzdC5qcyIsCiAgICAibGludCI6ICJwcmV0dGllciAuIC0tY2hlY2siCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcm9ja3NkYi1uYXRpdmUuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2ggSW5jIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3JvY2tzZGItbmF0aXZlL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vcm9ja3NkYi1uYXRpdmUiLAogICJlbmdpbmVzIjogewogICAgImJhcmUiOiAiPj0xLjE2LjAiCiAgfSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImNvbXBhY3QtZW5jb2RpbmciOiAiXjIuMTUuMCIsCiAgICAicmVhZHktcmVzb3VyY2UiOiAiXjEuMC4wIiwKICAgICJyZWZjb3VudGVyIjogIl4xLjAuMCIsCiAgICAicmVxdWlyZS1hZGRvbiI6ICJeMS4wLjIiLAogICAgInJlc29sdmUtcmVqZWN0LXByb21pc2UiOiAiXjEuMS4wIiwKICAgICJzdHJlYW14IjogIl4yLjE2LjEiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtY29tcGF0LW5hcGkiOiAiXjEuMy4wIiwKICAgICJicml0dGxlIjogIl4zLjUuMCIsCiAgICAiY21ha2UtYmFyZSI6ICJeMS4xLjE0IiwKICAgICJjbWFrZS1mZXRjaCI6ICJeMS4wLjEiLAogICAgImNtYWtlLW5hcGkiOiAiXjEuMC42IiwKICAgICJwcmV0dGllciI6ICJeMy40LjEiLAogICAgInByZXR0aWVyLWNvbmZpZy1zdGFuZGFyZCI6ICJeNy4wLjAiCiAgfQp9Cm1vZHVsZS5leHBvcnRzID0gc2FmZXR5Q2F0Y2gKCmZ1bmN0aW9uIGlzQWN0dWFsbHlVbmNhdWdodCAoZXJyKSB7CiAgaWYgKCFlcnIpIHJldHVybiBmYWxzZQogIHJldHVybiBlcnIgaW5zdGFuY2VvZiBUeXBlRXJyb3IgfHwKICAgIGVyciBpbnN0YW5jZW9mIFN5bnRheEVycm9yIHx8CiAgICBlcnIgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvciB8fAogICAgZXJyIGluc3RhbmNlb2YgRXZhbEVycm9yIHx8CiAgICBlcnIgaW5zdGFuY2VvZiBSYW5nZUVycm9yIHx8CiAgICBlcnIgaW5zdGFuY2VvZiBVUklFcnJvciB8fAogICAgZXJyLmNvZGUgPT09ICdFUlJfQVNTRVJUSU9OJwp9CgpmdW5jdGlvbiB0aHJvd0Vycm9yTlQgKGVycikgewogIHF1ZXVlTWljcm90YXNrKCgpID0+IHsgdGhyb3cgZXJyIH0pCn0KCmZ1bmN0aW9uIHNhZmV0eUNhdGNoIChlcnIpIHsKICBpZiAoaXNBY3R1YWxseVVuY2F1Z2h0KGVycikpIHsKICAgIHRocm93RXJyb3JOVChlcnIpCiAgICB0aHJvdyBlcnIKICB9Cn0KewogICJuYW1lIjogInNhZmV0eS1jYXRjaCIsCiAgInZlcnNpb24iOiAiMS4wLjIiLAogICJkZXNjcmlwdGlvbiI6ICJTbWFsbCBtb2R1bGUgdGhhdCBtYWtlcyBzdXJlIHlvdXIgY2F0Y2gsIGNhdWdodCBhbiBhY3R1YWwgZXJyb3IgYW5kIG5vdCBhIHByb2dyYW1taW5nIG1pc3Rha2Ugb3IgYXNzZXJ0aW9uIiwKICAibWFpbiI6ICJpbmRleC5qcyIsCiAgImRlcGVuZGVuY2llcyI6IHt9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7fSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvc2FmZXR5LWNhdGNoLmdpdCIKICB9LAogICJhdXRob3IiOiAiTWF0aGlhcyBCdXVzIChAbWFmaW50b3NoKSIsCiAgImxpY2Vuc2UiOiAiTUlUIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9zYWZldHktY2F0Y2gvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvc2FmZXR5LWNhdGNoIgp9CmxldCBidWlsdGluTW9kdWxlcyA9IG51bGwKCmV4cG9ydHMuY29tcGlsZSA9IHJlcXVpcmUoJy4vbGliL2NvbXBpbGUnKQoKZXhwb3J0cy5tYXAgPSBkZWZhdWx0TWFwCgpleHBvcnRzLm1hcEltcG9ydCA9IGRlZmF1bHRNYXBJbXBvcnQKCmV4cG9ydHMubWFwUGF0aCA9IGRlZmF1bHRNYXBQYXRoCgpleHBvcnRzLnR5cGUgPSAnY29tbW9uanMnCgpleHBvcnRzLnN5bWJvbCA9ICdzY3JpcHRsaW5rZXInCgpleHBvcnRzLnByb3RvY29sID0gJ2FwcCcKCmV4cG9ydHMubGlua1NvdXJjZU1hcHMgPSB0cnVlCgpleHBvcnRzLmNhY2hlU2l6ZSA9IDUxMgoKZXhwb3J0cy5idWlsdGlucyA9IHsKICBoYXMgKHJlcSkgewogICAgdHJ5IHsKICAgICAgaWYgKGJ1aWx0aW5Nb2R1bGVzID09PSBudWxsKSBidWlsdGluTW9kdWxlcyA9IHJlcXVpcmUoJ21vZHVsZScpLmJ1aWx0aW5Nb2R1bGVzIHx8IFtdCiAgICB9IGNhdGNoIHsKICAgICAgYnVpbHRpbk1vZHVsZXMgPSBbXQogICAgfQogICAgcmV0dXJuIGJ1aWx0aW5Nb2R1bGVzLmluY2x1ZGVzKHJlcSkKICB9LAogIGdldCAocmVxKSB7CiAgICAvLyBpbiBjYXNlIHNvbWVvbmUgaW5qZWN0cyBhIGRpZmZlcmVudCBidWlsdGluIHJlcXVpcmUgKGllIGJvb3QtZHJpdmUpLCBzdXBwb3J0IHRoYXQKICAgIHJldHVybiAocmVxdWlyZS5idWlsdGluUmVxdWlyZSB8fCByZXF1aXJlKShyZXEpCiAgfSwKICBrZXlzICgpIHsKICAgIHRyeSB7CiAgICAgIGlmIChidWlsdGluTW9kdWxlcyA9PT0gbnVsbCkgYnVpbHRpbk1vZHVsZXMgPSByZXF1aXJlKCdtb2R1bGUnKS5idWlsdGluTW9kdWxlcyB8fCBbXQogICAgfSBjYXRjaCB7CiAgICAgIGJ1aWx0aW5Nb2R1bGVzID0gW10KICAgIH0KICAgIHJldHVybiBidWlsdGluTW9kdWxlcwogIH0KfQoKZnVuY3Rpb24gZGVmYXVsdE1hcCAoaWQsIHsgcHJvdG9jb2wsIGlzSW1wb3J0LCBpc0J1aWx0aW4sIGlzU291cmNlTWFwLCBpc0NvbnNvbGUgfSkgewogIGNvbnN0IHR5cGUgPSBpc0NvbnNvbGUgPyBwcm90b2NvbCA6IChpc1NvdXJjZU1hcCA/ICdtYXAnIDogaXNJbXBvcnQgPyAnZXNtJyA6ICdjanMnKQogIHJldHVybiBwcm90b2NvbCArICc6Ly8nICsgdHlwZSArIChpc0J1aWx0aW4gPyAnL34nIDogJycpICsgZW5jb2RlVVJJKGlkKQp9CgpmdW5jdGlvbiBkZWZhdWx0TWFwSW1wb3J0IChsaW5rLCBkaXJuYW1lKSB7CiAgcmV0dXJuIGxpbmsKfQoKZnVuY3Rpb24gZGVmYXVsdE1hcFBhdGggKHBhdGgpIHsKICByZXR1cm4gcGF0aAp9Cm1vZHVsZS5leHBvcnRzID0gbmV3IEZ1bmN0aW9uKCdtb2R1bGUnLCAnZXhwb3J0cycsICdfX2Rpcm5hbWUnLCAnX19maWxlbmFtZScsICdyZXF1aXJlJywgJ19fc3JjJywgJ2V2YWwoX19zcmMpJykgLy8gZXNsaW50LWRpc2FibGUtbGluZQp7CiAgIm5hbWUiOiAic2NyaXB0LWxpbmtlciIsCiAgInZlcnNpb24iOiAiMi41LjQiLAogICJkZXNjcmlwdGlvbiI6ICJDSlMvTUpTIHNvdXJjZSBsb2FkZXIgdGhhdCBjYW4gcHJlcmVzb2x2ZSBpbXBvcnRzL3JlcXVpcmVzIHNvIGxpbmtpbmcgdGhlbSBvbiBydW50aW1lIHJ1bnMgbXVjaCBmYXN0ZXIuIiwKICAibWFpbiI6ICJpbmRleC5qcyIsCiAgImF1dGhvciI6ICJIb2xlcHVuY2giLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAic3RhbmRhcmQgJiYgYnJpdHRsZSB0ZXN0LyoudGVzdC4qanMiLAogICAgImxpbnQiOiAic3RhbmRhcmQiCiAgfSwKICAiZmlsZXMiOiBbCiAgICAiKi5qcyIsCiAgICAibGliLyoqLmpzIgogIF0sCiAgInN0YW5kYXJkIjogewogICAgImlnbm9yZSI6IFsKICAgICAgInRlc3QvZml4dHVyZXMvKioiCiAgICBdCiAgfSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImFjb3JuIjogIl44LjYuMCIsCiAgICAiYjRhIjogIl4xLjMuMSIsCiAgICAiY2pzLW1vZHVsZS1sZXhlciI6ICJeMS4yLjIiLAogICAgImRyaXZlLXJlc29sdmUiOiAiXjEuMC4xIiwKICAgICJlcy1tb2R1bGUtbGV4ZXIiOiAiXjEuNi4wIiwKICAgICJpcy12YWxpZC12YXJpYWJsZSI6ICJeMS4wLjAiLAogICAgInJlYWQtd3JpdGUtbXV0ZXhpZnkiOiAiXjIuMC4wIiwKICAgICJzb3VyY2UtbWFwLWJhcmUiOiAiXjEuMC4wIiwKICAgICJ1bml4LXBhdGgtcmVzb2x2ZSI6ICJeMS4wLjIiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjMuMS4wIiwKICAgICJqcXVlcnkiOiAiXjMuNi4wIiwKICAgICJqc2RvbSI6ICJeMTkuMC4wIiwKICAgICJsb2NhbGRyaXZlIjogIl4yLjAuMCIsCiAgICAic3RhbmRhcmQiOiAiXjE3LjAuMCIKICB9Cn0KY29uc3QgZCA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKQpjb25zdCB1bml4cmVzb2x2ZSA9IHJlcXVpcmUoJ3VuaXgtcGF0aC1yZXNvbHZlJykKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcnVudGltZSAoewogIG1hcCA9IGQubWFwLAogIG1hcEltcG9ydCA9IGQubWFwSW1wb3J0LAogIGJ1aWx0aW5zID0gZC5idWlsdGlucywKICBjb21waWxlID0gZC5jb21waWxlLAogIHN5bWJvbCA9IGQuc3ltYm9sLAogIHByb3RvY29sID0gZC5wcm90b2NvbCwKICBnZXRTeW5jLAogIHJlc29sdmVTeW5jCn0pIHsKICBjb25zdCBTTE1vZHVsZSA9IGRlZmluZU1vZHVsZSgpCgogIGNvbnN0IHNsID0gZ2xvYmFsW1N5bWJvbC5mb3Ioc3ltYm9sKV0gPSB7CiAgICBNb2R1bGU6IFNMTW9kdWxlLAogICAgc291cmNlczogbmV3IE1hcCgpLAogICAgcmVxdWlyZTogbnVsbCwKICAgIGNyZWF0ZUltcG9ydCAoZmlsZW5hbWUsIGRvSW1wb3J0KSB7CiAgICAgIGNvbnN0IGRpcm5hbWUgPSBmaWxlbmFtZSA9PT0gJy8nID8gJy8nIDogdW5peHJlc29sdmUoZmlsZW5hbWUsICcuLicpCiAgICAgIHJldHVybiAocmVxKSA9PiB7CiAgICAgICAgcmVxID0gbWFwSW1wb3J0KHJlcSwgZGlybmFtZSkKICAgICAgICB0cnkgewogICAgICAgICAgaWYgKGlzQ3VzdG9tU2NoZW1lKHJlcSkpIHJldHVybiBkb0ltcG9ydChyZXEpCiAgICAgICAgICBjb25zdCByID0gcmVzb2x2ZUltcG9ydChkaXJuYW1lLCByZXEpCiAgICAgICAgICByZXR1cm4gZG9JbXBvcnQocikKICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHBhY2thZ2UgJyR7cmVxfScgaW1wb3J0ZWQgZnJvbSAke2ZpbGVuYW1lfWApKQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNyZWF0ZVJlcXVpcmUgKGZpbGVuYW1lLCBwYXJlbnQgPSBudWxsLCBtYXAgPSB1bmRlZmluZWQpIHsKICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICBwYXJlbnQgPSBuZXcgU0xNb2R1bGUoZmlsZW5hbWUsIG51bGwpCiAgICAgICAgcGFyZW50LmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgfQoKICAgICAgcmVxdWlyZS5yZXNvbHZlID0gcmVzb2x2ZQogICAgICByZXF1aXJlLmNhY2hlID0gU0xNb2R1bGUuX2NhY2hlCiAgICAgIHJlcXVpcmUuZXh0ZW5zaW9ucyA9IFNMTW9kdWxlLl9leHRlbnNpb25zCiAgICAgIHJlcXVpcmUubWFpbiA9IHVuZGVmaW5lZAoKICAgICAgcmV0dXJuIHJlcXVpcmUKCiAgICAgIGZ1bmN0aW9uIHJlc29sdmUgKHJlcXVlc3QpIHsKICAgICAgICByZXR1cm4gU0xNb2R1bGUuX3Jlc29sdmVGaWxlbmFtZShyZXF1ZXN0LCBwYXJlbnQsIGZhbHNlLCB7IG1hcCB9KQogICAgICB9CgogICAgICBmdW5jdGlvbiByZXF1aXJlIChyZXF1ZXN0LCBvcHRzKSB7CiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSAhIShvcHRzICYmIG9wdHMucmVzb2x2ZWQpCiAgICAgICAgcmV0dXJuIHBhcmVudC5yZXF1aXJlKHJlcXVlc3QsIHsgcmVzb2x2ZWQsIG1hcCB9KQogICAgICB9CiAgICB9LAogICAgcmVxdWlyZUZyb21Tb3VyY2UgKGZpbGVuYW1lLCBzb3VyY2UpIHsKICAgICAgY29uc3QgcGFyZW50ID0gbmV3IFNMTW9kdWxlKGZpbGVuYW1lLCBudWxsKQogICAgICByZXR1cm4gcGFyZW50LnJlcXVpcmUoZmlsZW5hbWUsIHsgc291cmNlLCByZXNvbHZlZDogdHJ1ZSB9KQogICAgfSwKICAgIGJvb3RzdHJhcCAoZW50cnlwb2ludCwgeyB0eXBlIH0gPSB7fSkgewogICAgICBpZiAoIWVudHJ5cG9pbnQpIHRocm93IG5ldyBFcnJvcignTXVzdCBwYXNzIGVudHJ5cG9pbnQnKQogICAgICBpZiAoIXR5cGUpIHRocm93IG5ldyBFcnJvcignTXVzdCBwYXNzIHR5cGUnKQogICAgICBjb25zdCBsb2FkZXIgPSAodHlwZSA9PT0gJ2NvbW1vbmpzJykKICAgICAgICA/IHNsLmNyZWF0ZVJlcXVpcmUoZW50cnlwb2ludCkKICAgICAgICA6IHNsLmNyZWF0ZUltcG9ydChlbnRyeXBvaW50LCAocCkgPT4gaW1wb3J0KHApKQogICAgICByZXR1cm4gbG9hZGVyKGVudHJ5cG9pbnQpCiAgICB9CiAgfQoKICBzbC5yZXF1aXJlID0gc2wuY3JlYXRlUmVxdWlyZSgnLycpCgogIHJldHVybiBzbAoKICBmdW5jdGlvbiByZXNvbHZlSW1wb3J0IChkaXJuYW1lLCByZXEpIHsKICAgIGNvbnN0IGlzQnVpbHRpbiA9IGJ1aWx0aW5zLmhhcyhyZXEpCiAgICByZXR1cm4gbWFwKGlzQnVpbHRpbiA/IHJlcSA6IHJlc29sdmVTeW5jKHJlcSwgZGlybmFtZSwgeyBpc0ltcG9ydDogdHJ1ZSB9KSwgewogICAgICBwcm90b2NvbCwKICAgICAgaXNJbXBvcnQ6IHRydWUsCiAgICAgIGlzQnVpbHRpbiwKICAgICAgaXNTb3VyY2VNYXA6IGZhbHNlLAogICAgICBpc0NvbnNvbGU6IGZhbHNlCiAgICB9KQogIH0KCiAgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uIChmaWxlbmFtZSkgewogICAgY29uc3QgaSA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykKICAgIHJldHVybiBpID4gLTEgPyBmaWxlbmFtZS5zbGljZShpKSA6IGZpbGVuYW1lCiAgfQoKICBmdW5jdGlvbiBkZWZpbmVNb2R1bGUgKCkgewogICAgZnVuY3Rpb24gTW9kdWxlIChpZCA9ICcnLCBwYXJlbnQpIHsKICAgICAgdGhpcy5pZCA9IGlkCiAgICAgIHRoaXMucGF0aCA9IGlkID09PSAnLycgPyBpZCA6IHVuaXhyZXNvbHZlKGlkLCAnLi4nKQogICAgICB0aGlzLmV4cG9ydHMgPSB7fQogICAgICB0aGlzLmZpbGVuYW1lID0gbnVsbAogICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlCiAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXSAvLyBUT0RPOiBub3QgdXBkYXRlZCBhdG0KICAgICAgdGhpcy5wYXRocyA9IFtdCiAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50CiAgICB9CgogICAgTW9kdWxlLl9jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCkKICAgIE1vZHVsZS5fcGF0aENhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKSAvLyBvbmx5IHRoZXJlIGluIGNhc2Ugc29tZW9uZSBpbnNwZWN0cyBpdAogICAgTW9kdWxlLk1vZHVsZSA9IE1vZHVsZQogICAgTW9kdWxlLnN5bmNCdWlsdGluRVNNRXhwb3J0cyA9ICgpID0+IHt9IC8vIG5vb3AgZm9yIG5vdwogICAgTW9kdWxlLmdsb2JhbFBhdGhzID0gW10KICAgIE1vZHVsZS5idWlsdGluTW9kdWxlcyA9IFsuLi5idWlsdGlucy5rZXlzKCldCgogICAgTW9kdWxlLmNyZWF0ZVJlcXVpcmUgPSBmdW5jdGlvbiAoZmlsZW5hbWUpIHsKICAgICAgcmV0dXJuIHNsLmNyZWF0ZVJlcXVpcmUodW5peHJlc29sdmUocGF0aG5hbWUoZmlsZW5hbWUpKSwgbnVsbCkKICAgIH0KCiAgICBNb2R1bGUuX3Jlc29sdmVGaWxlbmFtZSA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBwYXJlbnQsIGlzTWFpbiwgb3B0cykgewogICAgICBpZiAocmVxdWVzdCA9PT0gJ21vZHVsZScpIHJldHVybiByZXF1ZXN0IC8vIHNwZWNpYWwgY2FzZSBmb3IgdGhpcyBtb2R1bGUKICAgICAgaWYgKG9wdHMgJiYgb3B0cy5yZXNvbHZlZCkgcmV0dXJuIHJlcXVlc3QKCiAgICAgIHRyeSB7CiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5tYXAgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdHMubWFwLCByZXF1ZXN0KSkgewogICAgICAgICAgY29uc3QgciA9IG9wdHMubWFwW3JlcXVlc3RdCiAgICAgICAgICBpZiAocikgcmV0dXJuIHIKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGJ1aWx0aW5zLmhhcyhyZXF1ZXN0KSA/IHJlcXVlc3QgOiByZXNvbHZlU3luYyhyZXF1ZXN0LCBwYXJlbnQucGF0aCwgeyBpc0ltcG9ydDogZmFsc2UgfSkKICAgICAgICB9CiAgICAgIH0gY2F0Y2gge30KCiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgbW9kdWxlICcke3JlcXVlc3R9JyByZXF1aXJlZCBmcm9tICR7cGFyZW50LmlkfWApCiAgICB9CgogICAgTW9kdWxlLl9sb2FkID0gZnVuY3Rpb24gKHJlcXVlc3QsIHBhcmVudCwgaXNNYWluLCBvcHRzKSB7CiAgICAgIGNvbnN0IGZpbGVuYW1lID0gTW9kdWxlLl9yZXNvbHZlRmlsZW5hbWUocmVxdWVzdCwgcGFyZW50LCBpc01haW4sIG9wdHMpCiAgICAgIGNvbnN0IGNhY2hlZCA9IE1vZHVsZS5fY2FjaGVbZmlsZW5hbWVdCiAgICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQuZXhwb3J0cwogICAgICBpZiAoZmlsZW5hbWUgPT09ICdtb2R1bGUnKSByZXR1cm4gTW9kdWxlCiAgICAgIGlmIChidWlsdGlucy5oYXMoZmlsZW5hbWUpKSByZXR1cm4gYnVpbHRpbnMuZ2V0KGZpbGVuYW1lKQogICAgICBjb25zdCBtb2QgPSBuZXcgTW9kdWxlKGZpbGVuYW1lLCBwYXJlbnQpCiAgICAgIE1vZHVsZS5fY2FjaGVbZmlsZW5hbWVdID0gbW9kCiAgICAgIGxldCB0aHJldyA9IHRydWUKICAgICAgdHJ5IHsKICAgICAgICBtb2QubG9hZChmaWxlbmFtZSwgb3B0cykKICAgICAgICB0aHJldyA9IGZhbHNlCiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgaWYgKHRocmV3KSB7CiAgICAgICAgICBkZWxldGUgTW9kdWxlLl9jYWNoZVtmaWxlbmFtZV0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG1vZC5leHBvcnRzCiAgICB9CgogICAgTW9kdWxlLl9leHRlbnNpb25zID0gewogICAgICAnLmpzJzogZnVuY3Rpb24gKG1vZCwgZmlsZW5hbWUsIG9wdHMpIHsKICAgICAgICBtb2QuX2NvbXBpbGUoTW9kdWxlLl9nZXRTb3VyY2UoZmlsZW5hbWUsIG9wdHMpLCBmaWxlbmFtZSkKICAgICAgfSwKICAgICAgJy5qc29uJzogZnVuY3Rpb24gKG1vZCwgZmlsZW5hbWUsIG9wdHMpIHsKICAgICAgICBtb2QuZXhwb3J0cyA9IEpTT04ucGFyc2UoTW9kdWxlLl9nZXRTb3VyY2UoZmlsZW5hbWUsIG9wdHMpKQogICAgICB9CiAgICB9CgogICAgTW9kdWxlLl9nZXRTb3VyY2UgPSBmdW5jdGlvbiAoZmlsZW5hbWUsIG9wdHMpIHsKICAgICAgaWYgKHR5cGVvZiAob3B0cyAmJiBvcHRzLnNvdXJjZSkgPT09ICdzdHJpbmcnKSByZXR1cm4gb3B0cy5zb3VyY2UKICAgICAgaWYgKHNsLnNvdXJjZXMuaGFzKGZpbGVuYW1lKSkgcmV0dXJuIHNsLnNvdXJjZXMuZ2V0KGZpbGVuYW1lKQoKICAgICAgcmV0dXJuIGdldFN5bmMobWFwKGZpbGVuYW1lLCB7CiAgICAgICAgcHJvdG9jb2wsCiAgICAgICAgaXNJbXBvcnQ6IGZhbHNlLAogICAgICAgIGlzQnVpbHRpbjogZmFsc2UsCiAgICAgICAgaXNTb3VyY2VNYXA6IGZhbHNlLAogICAgICAgIGlzQ29uc29sZTogZmFsc2UKICAgICAgfSkpCiAgICB9CgogICAgTW9kdWxlLnByb3RvdHlwZS5fY29tcGlsZSA9IGZ1bmN0aW9uIChzb3VyY2UsIGZpbGVuYW1lKSB7CiAgICAgIGxldCBtYXAgPSBudWxsCgogICAgICBpZiAoc291cmNlLnN0YXJ0c1dpdGgoJy8qIEBzY3JpcHRsaW5rZXItcmVzb2x1dGlvbnMgJykpIHsKICAgICAgICBjb25zdCBlID0gc291cmNlLmluZGV4T2YoJyovXG4nKQogICAgICAgIGlmIChlID4gLTEpIHsKICAgICAgICAgIG1hcCA9IEpTT04ucGFyc2Uoc291cmNlLnNsaWNlKCcvKiBAc2NyaXB0bGlua2VyLXJlc29sdXRpb25zICcubGVuZ3RoLCBlKSkKICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zbGljZShlICsgMykKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbXBpbGUodGhpcywgdGhpcy5leHBvcnRzLCB0aGlzLnBhdGgsIGZpbGVuYW1lLCBzbC5jcmVhdGVSZXF1aXJlKHRoaXMucGF0aCwgdGhpcywgbWFwKSwgc291cmNlKQogICAgfQoKICAgIE1vZHVsZS5wcm90b3R5cGUucmVxdWlyZSA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBvcHRzKSB7CiAgICAgIHJldHVybiBNb2R1bGUuX2xvYWQocmVxdWVzdCwgdGhpcywgZmFsc2UsIG9wdHMpCiAgICB9CgogICAgTW9kdWxlLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24gKGZpbGVuYW1lLCBvcHRzKSB7CiAgICAgIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICBjb25zdCBleHQgPSBNb2R1bGUuX2V4dGVuc2lvbnNbZ2V0RXh0ZW5zaW9uKGZpbGVuYW1lKV0gfHwgTW9kdWxlLl9leHRlbnNpb25zWycuanMnXQogICAgICBleHQodGhpcywgZmlsZW5hbWUsIG9wdHMpCiAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZQogICAgfQoKICAgIHJldHVybiBNb2R1bGUKICB9Cn0KCmZ1bmN0aW9uIGlzQ3VzdG9tU2NoZW1lIChzdHIpIHsKICByZXR1cm4gL15bYS16XVthLXowLTldKzovaS50ZXN0KHN0cikKfQoKZnVuY3Rpb24gcGF0aG5hbWUgKHUpIHsKICBjb25zdCBtID0gdS5tYXRjaCgvXlx3KzpcL1wvW14vXSooXC9bXj9dKikvKQogIGlmIChtKSByZXR1cm4gZGVjb2RlVVJJKG1bMV0pCiAgcmV0dXJuIHUKfQpyZXF1aXJlLmFkZG9uID0gcmVxdWlyZSgncmVxdWlyZS1hZGRvbicpCgptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oJy4nLCBfX2ZpbGVuYW1lKQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi9iaW5kaW5nJykKY29uc3QgYjRhID0gcmVxdWlyZSgnYjRhJykKCmZ1bmN0aW9uIHVuYXJ5ICh1OCwgdTE2LCB1MzIpIHsKICByZXR1cm4gZnVuY3Rpb24gdW5hcnkgKGJ1ZiwgcmVzdWx0ID0gYjRhLmFsbG9jVW5zYWZlKGJ1Zi5ieXRlTGVuZ3RoKSkgewogICAgaWYgKGJ1Zi5ieXRlTGVuZ3RoICUgMTYgIT09IDApIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWZmZXIgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNicpCiAgICB9CgogICAgaWYgKGJ1Zi5ieXRlTGVuZ3RoICE9PSByZXN1bHQuYnl0ZUxlbmd0aCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xlbmd0aCBvZiByZXN1bHQgYnVmZmVyIGlzIGluc3VmZmljaWVudCcpCiAgICB9CgogICAgY29uc3QgbiA9IGJ1Zi5CWVRFU19QRVJfRUxFTUVOVAoKICAgIGlmIChuID09PSAxKSB1OChidWYsIHJlc3VsdCkKICAgIGVsc2UgaWYgKG4gPT09IDIpIHUxNihidWYsIHJlc3VsdCkKICAgIGVsc2UgdTMyKGJ1ZiwgcmVzdWx0KQoKICAgIHJldHVybiByZXN1bHQKICB9Cn0KCmZ1bmN0aW9uIGJpbmFyeSAodTgsIHUxNiwgdTMyKSB7CiAgcmV0dXJuIGZ1bmN0aW9uIGJpbmFyeSAoYSwgYiwgcmVzdWx0ID0gYjRhLmFsbG9jVW5zYWZlKGEuYnl0ZUxlbmd0aCkpIHsKICAgIGlmIChhLmJ5dGVMZW5ndGggJSAxNiAhPT0gMCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1ZmZlciBsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2JykKICAgIH0KCiAgICBpZiAoYS5ieXRlTGVuZ3RoICE9PSBiLmJ5dGVMZW5ndGggfHwgYS5ieXRlTGVuZ3RoICE9PSByZXN1bHQuYnl0ZUxlbmd0aCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1ZmZlcnMgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGgnKQogICAgfQoKICAgIGNvbnN0IG4gPSBhLkJZVEVTX1BFUl9FTEVNRU5UCgogICAgaWYgKG4gPT09IDEpIHU4KGEsIGIsIHJlc3VsdCkKICAgIGVsc2UgaWYgKG4gPT09IDIpIHUxNihhLCBiLCByZXN1bHQpCiAgICBlbHNlIHUzMihhLCBiLCByZXN1bHQpCgogICAgcmV0dXJuIHJlc3VsdAogIH0KfQoKZnVuY3Rpb24gcmVkdWNlICh1OCwgdTE2LCB1MzIpIHsKICByZXR1cm4gZnVuY3Rpb24gcmVkdWNlIChidWYpIHsKICAgIGlmIChidWYuYnl0ZUxlbmd0aCAlIDE2ICE9PSAwKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYnKQogICAgfQoKICAgIGNvbnN0IG4gPSBidWYuQllURVNfUEVSX0VMRU1FTlQKCiAgICBpZiAobiA9PT0gMSkgcmV0dXJuIHU4KGJ1ZikKICAgIGlmIChuID09PSAyKSByZXR1cm4gdTE2KGJ1ZikKICAgIHJldHVybiB1MzIoYnVmKQogIH0KfQoKZXhwb3J0cy5hbGxvID0gZnVuY3Rpb24gYWxsbyAoYnVmKSB7CiAgaWYgKGJ1Zi5ieXRlTGVuZ3RoICUgMTYgIT09IDApIHsKICAgIHRocm93IG5ldyBFcnJvcignQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYnKQogIH0KCiAgcmV0dXJuIGJpbmRpbmcuc2ltZGxlX25hcGlfYWxsb192MTI4KGJ1ZikgIT09IDAKfQoKZXhwb3J0cy5hbGx6ID0gZnVuY3Rpb24gYWxseiAoYnVmKSB7CiAgaWYgKGJ1Zi5ieXRlTGVuZ3RoICUgMTYgIT09IDApIHsKICAgIHRocm93IG5ldyBFcnJvcignQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYnKQogIH0KCiAgcmV0dXJuIGJpbmRpbmcuc2ltZGxlX25hcGlfYWxsel92MTI4KGJ1ZikgIT09IDAKfQoKZXhwb3J0cy5hbmQgPSBiaW5hcnkoCiAgYmluZGluZy5zaW1kbGVfbmFwaV9hbmRfdjEyOF91OCwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2FuZF92MTI4X3UxNiwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2FuZF92MTI4X3UzMgopCgpleHBvcnRzLmNsZWFyID0gYmluYXJ5KAogIGJpbmRpbmcuc2ltZGxlX25hcGlfY2xlYXJfdjEyOF91OCwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2NsZWFyX3YxMjhfdTE2LAogIGJpbmRpbmcuc2ltZGxlX25hcGlfY2xlYXJfdjEyOF91MzIKKQoKZXhwb3J0cy5jbG8gPSB1bmFyeSgKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2Nsb192MTI4X3U4LAogIGJpbmRpbmcuc2ltZGxlX25hcGlfY2xvX3YxMjhfdTE2LAogIGJpbmRpbmcuc2ltZGxlX25hcGlfY2xvX3YxMjhfdTMyCikKCmV4cG9ydHMuY2x6ID0gdW5hcnkoCiAgYmluZGluZy5zaW1kbGVfbmFwaV9jbHpfdjEyOF91OCwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2Nsel92MTI4X3UxNiwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2Nsel92MTI4X3UzMgopCgpleHBvcnRzLmNudCA9IHVuYXJ5KAogIGJpbmRpbmcuc2ltZGxlX25hcGlfY250X3YxMjhfdTgsCiAgYmluZGluZy5zaW1kbGVfbmFwaV9jbnRfdjEyOF91MTYsCiAgYmluZGluZy5zaW1kbGVfbmFwaV9jbnRfdjEyOF91MzIKKQoKZXhwb3J0cy5jdG8gPSB1bmFyeSgKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2N0b192MTI4X3U4LAogIGJpbmRpbmcuc2ltZGxlX25hcGlfY3RvX3YxMjhfdTE2LAogIGJpbmRpbmcuc2ltZGxlX25hcGlfY3RvX3YxMjhfdTMyCikKCmV4cG9ydHMuY3R6ID0gdW5hcnkoCiAgYmluZGluZy5zaW1kbGVfbmFwaV9jdHpfdjEyOF91OCwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2N0el92MTI4X3UxNiwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX2N0el92MTI4X3UzMgopCgpleHBvcnRzLm5vdCA9IHVuYXJ5KAogIGJpbmRpbmcuc2ltZGxlX25hcGlfbm90X3YxMjhfdTgsCiAgYmluZGluZy5zaW1kbGVfbmFwaV9ub3RfdjEyOF91MTYsCiAgYmluZGluZy5zaW1kbGVfbmFwaV9ub3RfdjEyOF91MzIKKQoKZXhwb3J0cy5vciA9IGJpbmFyeSgKICBiaW5kaW5nLnNpbWRsZV9uYXBpX29yX3YxMjhfdTgsCiAgYmluZGluZy5zaW1kbGVfbmFwaV9vcl92MTI4X3UxNiwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX29yX3YxMjhfdTMyCikKCmV4cG9ydHMuc3VtID0gcmVkdWNlKAogIGJpbmRpbmcuc2ltZGxlX25hcGlfc3VtX3YxMjhfdTgsCiAgYmluZGluZy5zaW1kbGVfbmFwaV9zdW1fdjEyOF91MTYsCiAgYmluZGluZy5zaW1kbGVfbmFwaV9zdW1fdjEyOF91MzIKKQoKZXhwb3J0cy54b3IgPSBiaW5hcnkoCiAgYmluZGluZy5zaW1kbGVfbmFwaV94b3JfdjEyOF91OCwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX3hvcl92MTI4X3UxNiwKICBiaW5kaW5nLnNpbWRsZV9uYXBpX3hvcl92MTI4X3UzMgopCnsKICAibmFtZSI6ICJzaW1kbGUtbmF0aXZlIiwKICAidmVyc2lvbiI6ICIxLjMuNiIsCiAgImRlc2NyaXB0aW9uIjogImxpYnNpbWRsZSBKYXZhU2NyaXB0IGJpbmRpbmdzIGZvciBOb2RlLmpzIiwKICAibWFpbiI6ICJpbmRleC5qcyIsCiAgImZpbGVzIjogWwogICAgImluZGV4LmpzIiwKICAgICJtYWNyb3MuaCIsCiAgICAiYmluZGluZy5jIiwKICAgICJiaW5kaW5nLmpzIiwKICAgICJDTWFrZUxpc3RzLnR4dCIsCiAgICAicHJlYnVpbGRzIgogIF0sCiAgImFkZG9uIjogdHJ1ZSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogIm5wbSBydW4gbGludCAmJiBucG0gcnVuIHRlc3Q6YmFyZSAmJiBucG0gcnVuIHRlc3Q6bm9kZSIsCiAgICAidGVzdDpiYXJlIjogImJhcmUgdGVzdC5tanMiLAogICAgInRlc3Q6bm9kZSI6ICJub2RlIHRlc3QubWpzIiwKICAgICJsaW50IjogInN0YW5kYXJkIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3NpbWRsZS1uYXRpdmUuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2giLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vc2ltZGxlLW5hdGl2ZS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3NpbWRsZS1uYXRpdmUjcmVhZG1lIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImI0YSI6ICJeMS42LjAiLAogICAgInJlcXVpcmUtYWRkb24iOiAiXjEuMS4wIgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJicml0dGxlIjogIl4zLjEuMCIsCiAgICAiY21ha2UtYmFyZSI6ICJeMS4xLjciLAogICAgImNtYWtlLWZldGNoIjogIl4xLjEuMCIsCiAgICAiY21ha2UtbmFwaSI6ICJeMS4wLjIiLAogICAgInN0YW5kYXJkIjogIl4xNy4wLjAiCiAgfQp9CmNvbnN0IGI0YSA9IHJlcXVpcmUoJ2I0YScpCmNvbnN0IHNjYWxhciA9IHJlcXVpcmUoJy4vc2NhbGFyJykKCmZ1bmN0aW9uIHZpZXcgKGJ1ZiwgbikgewogIGlmIChuID09PSBidWYuQllURVNfUEVSX0VMRU1FTlQpIHJldHVybiBidWYKCiAgbGV0IFR5cGVkQXJyYXkKCiAgaWYgKG4gPT09IDEpIFR5cGVkQXJyYXkgPSBVaW50OEFycmF5CiAgZWxzZSBpZiAobiA9PT0gMikgVHlwZWRBcnJheSA9IFVpbnQxNkFycmF5CiAgZWxzZSBUeXBlZEFycmF5ID0gVWludDMyQXJyYXkKCiAgcmV0dXJuIG5ldyBUeXBlZEFycmF5KGJ1Zi5idWZmZXIsIGJ1Zi5ieXRlT2Zmc2V0LCBidWYuYnl0ZUxlbmd0aCAvIG4pCn0KCmZ1bmN0aW9uIHVuYXJ5ICh1OCwgdTE2ID0gdTgsIHUzMiA9IHUxNikgewogIHJldHVybiBmdW5jdGlvbiB1bmFyeSAoYnVmLCByZXN1bHQgPSBiNGEuYWxsb2NVbnNhZmUoYnVmLmJ5dGVMZW5ndGgpKSB7CiAgICBpZiAoYnVmLmJ5dGVMZW5ndGggJSAxNiAhPT0gMCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1ZmZlciBsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2JykKICAgIH0KCiAgICBpZiAoYnVmLmJ5dGVMZW5ndGggIT09IHJlc3VsdC5ieXRlTGVuZ3RoKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTGVuZ3RoIG9mIHJlc3VsdCBidWZmZXIgaXMgaW5zdWZmaWNpZW50JykKICAgIH0KCiAgICBjb25zdCBuID0gYnVmLkJZVEVTX1BFUl9FTEVNRU5UCgogICAgaWYgKG4gPT09IDEpIHU4KGJ1ZiwgdmlldyhyZXN1bHQsIG4pKQogICAgZWxzZSBpZiAobiA9PT0gMikgdTE2KGJ1ZiwgdmlldyhyZXN1bHQsIG4pKQogICAgZWxzZSB1MzIoYnVmLCB2aWV3KHJlc3VsdCwgbikpCgogICAgcmV0dXJuIHJlc3VsdAogIH0KfQoKZnVuY3Rpb24gYmluYXJ5ICh1OCwgdTE2ID0gdTgsIHUzMiA9IHUxNikgewogIHJldHVybiBmdW5jdGlvbiBiaW5hcnkgKGEsIGIsIHJlc3VsdCA9IGI0YS5hbGxvY1Vuc2FmZShhLmJ5dGVMZW5ndGgpKSB7CiAgICBpZiAoYS5ieXRlTGVuZ3RoICUgMTYgIT09IDApIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWZmZXIgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNicpCiAgICB9CgogICAgaWYgKGEuYnl0ZUxlbmd0aCAhPT0gYi5ieXRlTGVuZ3RoIHx8IGEuYnl0ZUxlbmd0aCAhPT0gcmVzdWx0LmJ5dGVMZW5ndGgpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWZmZXJzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoJykKICAgIH0KCiAgICBjb25zdCBuID0gYS5CWVRFU19QRVJfRUxFTUVOVAoKICAgIGlmIChuID09PSAxKSB1OChhLCBiLCB2aWV3KHJlc3VsdCwgbikpCiAgICBlbHNlIGlmIChuID09PSAyKSB1MTYoYSwgYiwgdmlldyhyZXN1bHQsIG4pKQogICAgZWxzZSB1MzIoYSwgYiwgdmlldyhyZXN1bHQsIG4pKQoKICAgIHJldHVybiByZXN1bHQKICB9Cn0KCmZ1bmN0aW9uIHJlZHVjZSAodTgsIHUxNiA9IHU4LCB1MzIgPSB1MTYpIHsKICByZXR1cm4gZnVuY3Rpb24gcmVkdWNlIChidWYpIHsKICAgIGlmIChidWYuYnl0ZUxlbmd0aCAlIDE2ICE9PSAwKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYnKQogICAgfQoKICAgIGNvbnN0IG4gPSBidWYuQllURVNfUEVSX0VMRU1FTlQKCiAgICBpZiAobiA9PT0gMSkgcmV0dXJuIHU4KGJ1ZikKICAgIGlmIChuID09PSAyKSByZXR1cm4gdTE2KGJ1ZikKICAgIHJldHVybiB1MzIoYnVmKQogIH0KfQoKZXhwb3J0cy5hbGxvID0gZnVuY3Rpb24gYWxsbyAoYnVmKSB7CiAgaWYgKGJ1Zi5ieXRlTGVuZ3RoICUgMTYgIT09IDApIHsKICAgIHRocm93IG5ldyBFcnJvcignQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYnKQogIH0KCiAgY29uc3QgbSA9IDIgKiogKGJ1Zi5CWVRFU19QRVJfRUxFTUVOVCAqIDgpIC0gMQoKICBmb3IgKGxldCBpID0gMCwgbiA9IGJ1Zi5sZW5ndGg7IGkgPCBuOyBpKyspIHsKICAgIGlmIChidWZbaV0gIT09IG0pIHJldHVybiBmYWxzZQogIH0KCiAgcmV0dXJuIHRydWUKfQoKZXhwb3J0cy5hbGx6ID0gZnVuY3Rpb24gYWxseiAoYnVmKSB7CiAgaWYgKGJ1Zi5ieXRlTGVuZ3RoICUgMTYgIT09IDApIHsKICAgIHRocm93IG5ldyBFcnJvcignQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYnKQogIH0KCiAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICBpZiAoYnVmW2ldICE9PSAwKSByZXR1cm4gZmFsc2UKICB9CgogIHJldHVybiB0cnVlCn0KCmV4cG9ydHMuYW5kID0gYmluYXJ5KAogIChhLCBiLCByZXN1bHQpID0+IHsKICAgIGZvciAobGV0IGkgPSAwLCBuID0gcmVzdWx0Lmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICByZXN1bHRbaV0gPSBhW2ldICYgYltpXQogICAgfQogIH0KKQoKZXhwb3J0cy5jbGVhciA9IGJpbmFyeSgKICAoYSwgYiwgcmVzdWx0KSA9PiB7CiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHJlc3VsdC5sZW5ndGg7IGkgPCBuOyBpKyspIHsKICAgICAgcmVzdWx0W2ldID0gYVtpXSAmIH5iW2ldCiAgICB9CiAgfQopCgpleHBvcnRzLmNsbyA9IHVuYXJ5KAogIChidWYsIHJlc3VsdCkgPT4gewogICAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIHJlc3VsdFtpXSA9IDI0IC0gc2NhbGFyLmNsbyhidWZbaV0pCiAgICB9CiAgfSwKICAoYnVmLCByZXN1bHQpID0+IHsKICAgIGZvciAobGV0IGkgPSAwLCBuID0gYnVmLmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICByZXN1bHRbaV0gPSAxNiAtIHNjYWxhci5jbG8oYnVmW2ldKQogICAgfQogIH0sCiAgKGJ1ZiwgcmVzdWx0KSA9PiB7CiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGJ1Zi5sZW5ndGg7IGkgPCBuOyBpKyspIHsKICAgICAgcmVzdWx0W2ldID0gc2NhbGFyLmNsbyhidWZbaV0pCiAgICB9CiAgfQopCgpleHBvcnRzLmNseiA9IHVuYXJ5KAogIChidWYsIHJlc3VsdCkgPT4gewogICAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIHJlc3VsdFtpXSA9IDI0IC0gc2NhbGFyLmNseihidWZbaV0pCiAgICB9CiAgfSwKICAoYnVmLCByZXN1bHQpID0+IHsKICAgIGZvciAobGV0IGkgPSAwLCBuID0gYnVmLmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICByZXN1bHRbaV0gPSAxNiAtIHNjYWxhci5jbHooYnVmW2ldKQogICAgfQogIH0sCiAgKGJ1ZiwgcmVzdWx0KSA9PiB7CiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGJ1Zi5sZW5ndGg7IGkgPCBuOyBpKyspIHsKICAgICAgcmVzdWx0W2ldID0gc2NhbGFyLmNseihidWZbaV0pCiAgICB9CiAgfQopCgpleHBvcnRzLmNudCA9IHVuYXJ5KAogIChidWYsIHJlc3VsdCkgPT4gewogICAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIHJlc3VsdFtpXSA9IHNjYWxhci5jbnQoYnVmW2ldKSAmIDB4ZmYKICAgIH0KICB9LAogIChidWYsIHJlc3VsdCkgPT4gewogICAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIHJlc3VsdFtpXSA9IHNjYWxhci5jbnQoYnVmW2ldKSAmIDB4ZmZmZgogICAgfQogIH0sCiAgKGJ1ZiwgcmVzdWx0KSA9PiB7CiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGJ1Zi5sZW5ndGg7IGkgPCBuOyBpKyspIHsKICAgICAgcmVzdWx0W2ldID0gc2NhbGFyLmNudChidWZbaV0pCiAgICB9CiAgfQopCgpleHBvcnRzLmN0byA9IHVuYXJ5KAogIChidWYsIHJlc3VsdCkgPT4gewogICAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIHJlc3VsdFtpXSA9IE1hdGgubWluKHNjYWxhci5jdG8oYnVmW2ldKSwgOCkKICAgIH0KICB9LAogIChidWYsIHJlc3VsdCkgPT4gewogICAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIHJlc3VsdFtpXSA9IE1hdGgubWluKHNjYWxhci5jdG8oYnVmW2ldKSwgMTYpCiAgICB9CiAgfSwKICAoYnVmLCByZXN1bHQpID0+IHsKICAgIGZvciAobGV0IGkgPSAwLCBuID0gYnVmLmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICByZXN1bHRbaV0gPSBzY2FsYXIuY3RvKGJ1ZltpXSkKICAgIH0KICB9CikKCmV4cG9ydHMuY3R6ID0gdW5hcnkoCiAgKGJ1ZiwgcmVzdWx0KSA9PiB7CiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGJ1Zi5sZW5ndGg7IGkgPCBuOyBpKyspIHsKICAgICAgcmVzdWx0W2ldID0gTWF0aC5taW4oc2NhbGFyLmN0eihidWZbaV0pLCA4KQogICAgfQogIH0sCiAgKGJ1ZiwgcmVzdWx0KSA9PiB7CiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGJ1Zi5sZW5ndGg7IGkgPCBuOyBpKyspIHsKICAgICAgcmVzdWx0W2ldID0gTWF0aC5taW4oc2NhbGFyLmN0eihidWZbaV0pLCAxNikKICAgIH0KICB9LAogIChidWYsIHJlc3VsdCkgPT4gewogICAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIHJlc3VsdFtpXSA9IHNjYWxhci5jdHooYnVmW2ldKQogICAgfQogIH0KKQoKZXhwb3J0cy5ub3QgPSB1bmFyeSgKICAoYnVmLCByZXN1bHQpID0+IHsKICAgIGZvciAobGV0IGkgPSAwLCBuID0gYnVmLmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICByZXN1bHRbaV0gPSB+YnVmW2ldCiAgICB9CiAgfQopCgpleHBvcnRzLm9yID0gYmluYXJ5KAogIChhLCBiLCByZXN1bHQpID0+IHsKICAgIGZvciAobGV0IGkgPSAwLCBuID0gcmVzdWx0Lmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICByZXN1bHRbaV0gPSBhW2ldIHwgYltpXQogICAgfQogIH0KKQoKZXhwb3J0cy5zdW0gPSByZWR1Y2UoCiAgKGJ1ZikgPT4gewogICAgbGV0IHJlc3VsdCA9IDBuCgogICAgZm9yIChsZXQgaSA9IDAsIG4gPSBidWYubGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIHJlc3VsdCArPSBCaWdJbnQoYnVmW2ldKQogICAgfQoKICAgIHJldHVybiByZXN1bHQKICB9CikKCmV4cG9ydHMueG9yID0gYmluYXJ5KAogIChhLCBiLCByZXN1bHQpID0+IHsKICAgIGZvciAobGV0IGkgPSAwLCBuID0gcmVzdWx0Lmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICByZXN1bHRbaV0gPSBhW2ldIF4gYltpXQogICAgfQogIH0KKQp0cnkgewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnc2ltZGxlLW5hdGl2ZScpCn0gY2F0Y2ggewogIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWxsYmFjaycpCn0KewogICJuYW1lIjogInNpbWRsZS11bml2ZXJzYWwiLAogICJ2ZXJzaW9uIjogIjEuMS4yIiwKICAiZGVzY3JpcHRpb24iOiAiVW5pdmVyc2FsIHdyYXBwZXIgZm9yIGxpYnNpbWRsZSB3aXRoIGEgSmF2YVNjcmlwdCBmYWxsYmFjayIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJmaWxlcyI6IFsKICAgICJmYWxsYmFjay5qcyIsCiAgICAiaW5kZXguanMiLAogICAgInNjYWxhci5qcyIKICBdLAogICJicm93c2VyIjogewogICAgIi4vaW5kZXguanMiOiAiLi9mYWxsYmFjay5qcyIKICB9LAogICJzY3JpcHRzIjogewogICAgInRlc3QiOiAic3RhbmRhcmQgJiYgYnJpdHRsZSB0ZXN0Lm1qcyIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9zaW1kbGUtdW5pdmVyc2FsLmdpdCIKICB9LAogICJhdXRob3IiOiAiS2FzcGVyIElzYWdlciBEYWxzZ2Fyw7AgPGthc3BlckBmdW5rdGlvbmVsLmNvPiIsCiAgImxpY2Vuc2UiOiAiSVNDIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3NpbWRsZS11bml2ZXJzYWwvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9zaW1kbGUtdW5pdmVyc2FsI3JlYWRtZSIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJiNGEiOiAiXjEuNi4wIgogIH0sCiAgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogewogICAgInNpbWRsZS1uYXRpdmUiOiAiXjEuMS4xIgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJicml0dGxlIjogIl4zLjEuMCIsCiAgICAic3RhbmRhcmQiOiAiXjE3LjAuMCIKICB9Cn0KY29uc3QgY2x6ID0gZXhwb3J0cy5jbHogPSBmdW5jdGlvbiBjbHogKG4pIHsKICByZXR1cm4gTWF0aC5jbHozMihuKQp9CgpleHBvcnRzLmNsbyA9IGZ1bmN0aW9uIGNsbyAobikgewogIHJldHVybiBjbHoofm4pCn0KCmNvbnN0IGN0eiA9IGV4cG9ydHMuY3R6ID0gZnVuY3Rpb24gY3R6IChuKSB7CiAgcmV0dXJuIDMyIC0gKG4gPT09IDAgPyAwIDogKGNseihuICYgLW4pICsgMSkpCn0KCmV4cG9ydHMuY3RvID0gZnVuY3Rpb24gY3RvIChuKSB7CiAgcmV0dXJuIGN0eih+bikKfQoKZXhwb3J0cy5jbnQgPSBmdW5jdGlvbiBjbnQgKG4pIHsKICBuID0gbiAtICgobiA+Pj4gMSkgJiAweDU1NTU1NTU1KQogIG4gPSAobiAmIDB4MzMzMzMzMzMpICsgKChuID4+PiAyKSAmIDB4MzMzMzMzMzMpCiAgbiA9IChuICsgKG4gPj4+IDQpKSAmIDB4MGYwZjBmMGYKICBuID0gKG4gKiAweDAxMDEwMTAxKSA+Pj4gMjQKICByZXR1cm4gbgp9CnJlcXVpcmUuYWRkb24gPSByZXF1aXJlKCdyZXF1aXJlLWFkZG9uJykKbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlLmFkZG9uKCcuJywgX19maWxlbmFtZSkKY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4vYmluZGluZycpCmNvbnN0IHsgaXNOb2RlIH0gPSByZXF1aXJlKCd3aGljaC1ydW50aW1lJykKCmNvbnN0IE9QVElPTkFMID0gQnVmZmVyLmZyb20obmV3IEFycmF5QnVmZmVyKDApKQoKbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0geyAuLi5iaW5kaW5nIH0KCi8vIG1lbW9yeQoKZXhwb3J0cy5zb2RpdW1fbWVtemVybyA9IGZ1bmN0aW9uIChidWYpIHsKICBiaW5kaW5nLnNvZGl1bV9tZW16ZXJvKGJ1ZikKfQoKZXhwb3J0cy5zb2RpdW1fbWxvY2sgPSBmdW5jdGlvbiAoYnVmKSB7CiAgY29uc3QgcmVzID0gYmluZGluZy5zb2RpdW1fbWxvY2soYnVmKQogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignbWVtb3J5IGxvY2sgZmFpbGVkJykKfQoKZXhwb3J0cy5zb2RpdW1fbXVubG9jayA9IGZ1bmN0aW9uIChidWYpIHsKICBjb25zdCByZXMgPSBiaW5kaW5nLnNvZGl1bV9tdW5sb2NrKGJ1ZikKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ21lbW9yeSB1bmxvY2sgZmFpbGVkJykKfQoKZXhwb3J0cy5zb2RpdW1fbWFsbG9jID0gZnVuY3Rpb24gKHNpemUpIHsKICBpZiAoc2l6ZSA8IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzaXplJykKICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShiaW5kaW5nLnNvZGl1bV9tYWxsb2Moc2l6ZSkpCiAgYnVmLnNlY3VyZSA9IHRydWUKCiAgcmV0dXJuIGJ1Zgp9CgpleHBvcnRzLnNvZGl1bV9mcmVlID0gZnVuY3Rpb24gKGJ1ZikgewogIGlmICghYnVmPy5zZWN1cmUpIHJldHVybgoKICBiaW5kaW5nLnNvZGl1bV9mcmVlKGJ1Zi5idWZmZXIpCn0KCmV4cG9ydHMuc29kaXVtX21wcm90ZWN0X25vYWNjZXNzID0gZnVuY3Rpb24gKGJ1ZikgewogIGNvbnN0IHJlcyA9IGJpbmRpbmcuc29kaXVtX21wcm90ZWN0X25vYWNjZXNzKGJ1Zi5idWZmZXIpCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGxvY2sgYnVmZmVyJykKfQoKZXhwb3J0cy5zb2RpdW1fbXByb3RlY3RfcmVhZG9ubHkgPSBmdW5jdGlvbiAoYnVmKSB7CiAgY29uc3QgcmVzID0gYmluZGluZy5zb2RpdW1fbXByb3RlY3RfcmVhZG9ubHkoYnVmLmJ1ZmZlcikKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gdW5sb2NrIGJ1ZmZlcicpCn0KCmV4cG9ydHMuc29kaXVtX21wcm90ZWN0X3JlYWR3cml0ZSA9IGZ1bmN0aW9uIChidWYpIHsKICBjb25zdCByZXMgPSBiaW5kaW5nLnNvZGl1bV9tcHJvdGVjdF9yZWFkd3JpdGUoYnVmLmJ1ZmZlcikKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gdW5sb2NrIGJ1ZmZlcicpCn0KCi8vIGNyeXB0b19yYW5kb21ieXRlcwoKZXhwb3J0cy5yYW5kb21ieXRlc19idWYgPSBmdW5jdGlvbiAoYnVmZmVyKSB7CiAgYmluZGluZy5yYW5kb21ieXRlc19idWYoCiAgICBidWZmZXIuYnVmZmVyLAogICAgYnVmZmVyLmJ5dGVPZmZzZXQsCiAgICBidWZmZXIuYnl0ZUxlbmd0aAogICkKfQoKZXhwb3J0cy5yYW5kb21ieXRlc19idWZfZGV0ZXJtaW5pc3RpYyA9IGZ1bmN0aW9uIChidWZmZXIsIHNlZWQpIHsKICBiaW5kaW5nLnJhbmRvbWJ5dGVzX2J1Zl9kZXRlcm1pbmlzdGljKAogICAgYnVmZmVyLmJ1ZmZlciwKICAgIGJ1ZmZlci5ieXRlT2Zmc2V0LAogICAgYnVmZmVyLmJ5dGVMZW5ndGgsCgogICAgc2VlZC5idWZmZXIsCiAgICBzZWVkLmJ5dGVPZmZzZXQsCiAgICBzZWVkLmJ5dGVMZW5ndGgKICApCn0KCi8vIHNvZGl1bV9oZWxwZXJzCgpleHBvcnRzLnNvZGl1bV9tZW1jbXAgPSBmdW5jdGlvbiAoYSwgYikgewogIGlmIChhPy5ieXRlTGVuZ3RoICE9PSBiPy5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ2J1ZmZlcnMgbXVzdCBiZSBvZiBzYW1lIGxlbmd0aCInKQogIHJldHVybiBiaW5kaW5nLnNvZGl1bV9tZW1jbXAoYSwgYikKfQoKZXhwb3J0cy5zb2RpdW1fYWRkID0gZnVuY3Rpb24gKGEsIGIpIHsKICBpZiAoYT8uYnl0ZUxlbmd0aCAhPT0gYj8uYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdidWZmZXJzIG11c3QgYmUgb2Ygc2FtZSBsZW5ndGgiJykKICBiaW5kaW5nLnNvZGl1bV9hZGQoYSwgYikKfQoKZXhwb3J0cy5zb2RpdW1fc3ViID0gZnVuY3Rpb24gKGEsIGIpIHsKICBpZiAoYT8uYnl0ZUxlbmd0aCAhPT0gYj8uYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdidWZmZXJzIG11c3QgYmUgb2Ygc2FtZSBsZW5ndGgiJykKICBiaW5kaW5nLnNvZGl1bV9zdWIoYSwgYikKfQoKLyoqIEByZXR1cm5zIHtudW1iZXJ9ICovCmV4cG9ydHMuc29kaXVtX2NvbXBhcmUgPSBmdW5jdGlvbiAoYSwgYikgewogIGlmIChhPy5ieXRlTGVuZ3RoICE9PSBiPy5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ2J1ZmZlcnMgbXVzdCBiZSBvZiBzYW1lIGxlbmd0aCInKQogIHJldHVybiBiaW5kaW5nLnNvZGl1bV9jb21wYXJlKGEsIGIpCn0KCi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi8KZXhwb3J0cy5zb2RpdW1faXNfemVybyA9IGZ1bmN0aW9uIChidWZmZXIsIGxlbmd0aCkgewogIGlmICghYnVmZmVyKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYnVmZmVyJykKICBsZW5ndGggPz89IGJ1ZmZlci5ieXRlTGVuZ3RoCiAgaWYgKGxlbmd0aCA+IGJ1ZmZlci5ieXRlTGVuZ3RoIHx8IGxlbmd0aCA8IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBsZW5ndGgnKQoKICByZXR1cm4gYmluZGluZy5zb2RpdW1faXNfemVybyhidWZmZXIsIGxlbmd0aCkKfQoKLyoqIEByZXR1cm5zIHtudW1iZXJ9IHBhZGRlZCBidWZmZXIgbGVuZ3RoICovCmV4cG9ydHMuc29kaXVtX3BhZCA9IGZ1bmN0aW9uIChidWZmZXIsIHVucGFkZGVkQnVmbGVuLCBibG9ja1NpemUpIHsKICBpZiAodW5wYWRkZWRCdWZsZW4gPiBidWZmZXIuYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCd1bnBhZGRlZCBsZW5ndGggY2Fubm90IGV4Y2VlZCBidWZmZXIgbGVuZ3RoJykKICBpZiAoYmxvY2tTaXplID4gYnVmZmVyLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignYmxvY2sgc2l6ZSBjYW5ub3QgZXhjZWVkIGJ1ZmZlciBsZW5ndGgnKQogIGlmIChibG9ja1NpemUgPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ2Jsb2NrIHNpemVtdXN0IGJlIGF0IGxlYXN0IDEgYnl0ZScpCiAgaWYgKGJ1ZmZlcj8uYnl0ZUxlbmd0aCA8IHVucGFkZGVkQnVmbGVuICsgKGJsb2NrU2l6ZSAtICh1bnBhZGRlZEJ1ZmxlbiAlIGJsb2NrU2l6ZSkpKSB0aHJvdyBuZXcgRXJyb3IoJ2J1ZiBub3QgbG9uZyBlbm91Z2gnKQoKICByZXR1cm4gYmluZGluZy5zb2RpdW1fcGFkKGJ1ZmZlciwgdW5wYWRkZWRCdWZsZW4sIGJsb2NrU2l6ZSkKfQoKLyoqIEByZXR1cm5zIHtudW1iZXJ9IHVucGFkZGVkIGJ1ZmZlciBsZW5ndGggKi8KZXhwb3J0cy5zb2RpdW1fdW5wYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBwYWRkZWRCdWZsZW4sIGJsb2NrU2l6ZSkgewogIGlmIChwYWRkZWRCdWZsZW4gPiBidWZmZXIuYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCd1bnBhZGRlZCBsZW5ndGggY2Fubm90IGV4Y2VlZCBidWZmZXIgbGVuZ3RoJykKICBpZiAoYmxvY2tTaXplID4gYnVmZmVyLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignYmxvY2sgc2l6ZSBjYW5ub3QgZXhjZWVkIGJ1ZmZlciBsZW5ndGgnKQogIGlmIChibG9ja1NpemUgPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ2Jsb2NrIHNpemUgbXVzdCBiZSBhdCBsZWFzdCAxIGJ5dGUnKQoKICByZXR1cm4gYmluZGluZy5zb2RpdW1fdW5wYWQoYnVmZmVyLCBwYWRkZWRCdWZsZW4sIGJsb2NrU2l6ZSkKfQoKLy8gY3J5cHRvX3NpZ24KCmV4cG9ydHMuY3J5cHRvX3NpZ25fa2V5cGFpciA9IGZ1bmN0aW9uIChwaywgc2spIHsKICBpZiAocGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigncGsnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zaWduX2tleXBhaXIocGssIHNrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc2lnbl9zZWVkX2tleXBhaXIgPSBmdW5jdGlvbiAocGssIHNrLCBzZWVkKSB7CiAgaWYgKHBrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zaWduX1BVQkxJQ0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3BrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc2lnbl9zZWVkX2tleXBhaXIocGssIHNrLCBzZWVkKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc2lnbiA9IGZ1bmN0aW9uIChzbSwgbSwgc2spIHsKICBpZiAoc20/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fQllURVMgKyBtLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignc20gbXVzdCBiZSAibS5ieXRlTGVuZ3RoICsgY3J5cHRvX3NpZ25fQllURVMiIGJ5dGVzJykKICBpZiAoc2s/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignc2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zaWduKHNtLCBtLCBzaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX3NpZ25fb3BlbiA9IGZ1bmN0aW9uIChtLCBzbSwgcGspIHsKICBpZiAoc20/LmJ5dGVMZW5ndGggPCBiaW5kaW5nLmNyeXB0b19zaWduX0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3NtJykKICBpZiAobT8uYnl0ZUxlbmd0aCAhPT0gc20uYnl0ZUxlbmd0aCAtIGJpbmRpbmcuY3J5cHRvX3NpZ25fQllURVMpIHRocm93IG5ldyBFcnJvcignbSBtdXN0IGJlICJzbS5ieXRlTGVuZ3RoIC0gY3J5cHRvX3NpZ25fQllURVMiIGJ5dGVzJykKICBpZiAocGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigncGsnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zaWduX29wZW4obSwgc20sIHBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLyoqIEByZXR1cm5zIHtib29sZWFufSAqLwpleHBvcnRzLmNyeXB0b19zaWduX29wZW4gPSBmdW5jdGlvbiAobSwgc20sIHBrKSB7CiAgaWYgKHNtPy5ieXRlTGVuZ3RoIDwgYmluZGluZy5jcnlwdG9fc2lnbl9CWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzbScpCiAgaWYgKG0/LmJ5dGVMZW5ndGggIT09IHNtLmJ5dGVMZW5ndGggLSBiaW5kaW5nLmNyeXB0b19zaWduX0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ20gbXVzdCBiZSAic20uYnl0ZUxlbmd0aCAtIGNyeXB0b19zaWduX0JZVEVTIiBieXRlcycpCiAgaWYgKHBrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zaWduX1BVQkxJQ0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3BrJykKCiAgcmV0dXJuIGJpbmRpbmcuY3J5cHRvX3NpZ25fb3BlbihtLCBzbSwgcGspCn0KCmV4cG9ydHMuY3J5cHRvX3NpZ25fZGV0YWNoZWQgPSBmdW5jdGlvbiAoc2lnLCBtLCBzaykgewogIGlmIChzaWc/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fQllURVMpIHRocm93IG5ldyBFcnJvcignc2lnJykKICBpZiAoc2s/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignc2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zaWduX2RldGFjaGVkKHNpZywgbSwgc2spCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgovKiogQHJldHVybnMge2Jvb2xlYW59ICovCmV4cG9ydHMuY3J5cHRvX3NpZ25fdmVyaWZ5X2RldGFjaGVkID0gZnVuY3Rpb24gKHNpZywgbSwgcGspIHsKICByZXR1cm4gYmluZGluZy5jcnlwdG9fc2lnbl92ZXJpZnlfZGV0YWNoZWQoCiAgICBzaWcuYnVmZmVyLAogICAgc2lnLmJ5dGVPZmZzZXQsCiAgICBzaWcuYnl0ZUxlbmd0aCwKCiAgICBtLmJ1ZmZlciwKICAgIG0uYnl0ZU9mZnNldCwKICAgIG0uYnl0ZUxlbmd0aCwKCiAgICBway5idWZmZXIsCiAgICBway5ieXRlT2Zmc2V0LAogICAgcGsuYnl0ZUxlbmd0aAogICkKfQoKZXhwb3J0cy5jcnlwdG9fc2lnbl9lZDI1NTE5X3NrX3RvX3BrID0gZnVuY3Rpb24gKHBrLCBzaykgewogIGlmIChwaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2lnbl9QVUJMSUNLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdwaycpCiAgaWYgKHNrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zaWduX1NFQ1JFVEtFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3NrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc2lnbl9lZDI1NTE5X3NrX3RvX3BrKHBrLCBzaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX3NpZ25fZWQyNTUxOV9wa190b19jdXJ2ZTI1NTE5ID0gZnVuY3Rpb24gKHgyNTUxOXBrLCBlZDI1NTE5cGspIHsKICBpZiAoeDI1NTE5cGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2JveF9QVUJMSUNLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCd4MjU1MTlfcGsnKQogIGlmIChlZDI1NTE5cGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignZWQyNTUxOV9waycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3NpZ25fZWQyNTUxOV9wa190b19jdXJ2ZTI1NTE5KHgyNTUxOXBrLCBlZDI1NTE5cGspCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19zaWduX2VkMjU1MTlfc2tfdG9fY3VydmUyNTUxOSA9IGZ1bmN0aW9uICh4MjU1MTlzaywgZWQyNTUxOXNrKSB7CiAgaWYgKHgyNTUxOXNrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19ib3hfU0VDUkVUS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigneDI1NTE5X3NrJykKCiAgY29uc3QgZWRMZW4gPSBlZDI1NTE5c2suYnl0ZUxlbmd0aAoKICBpZiAoZWRMZW4gIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMgJiYgZWRMZW4gIT09IGJpbmRpbmcuY3J5cHRvX2JveF9TRUNSRVRLRVlCWVRFUykgewogICAgdGhyb3cgbmV3IEVycm9yKCdlZDI1NTE5X3NrIHNob3VsZCBlaXRoZXIgYmUgXCdjcnlwdG9fc2lnbl9TRUNSRVRLRVlCWVRFU1wnIGJ5dGVzIG9yIFwnY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMgLSBjcnlwdG9fc2lnbl9QVUJMSUNLRVlCWVRFU1wnIGJ5dGVzJykKICB9CgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3NpZ25fZWQyNTUxOV9za190b19jdXJ2ZTI1NTE5KHgyNTUxOXNrLCBlZDI1NTE5c2spCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgovLyBjcnlwdG9fYm94CgpleHBvcnRzLmNyeXB0b19ib3hfa2V5cGFpciA9IGZ1bmN0aW9uIChwaywgc2spIHsKICBpZiAocGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2JveF9QVUJMSUNLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdwaycpCiAgaWYgKHNrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19ib3hfU0VDUkVUS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignc2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19ib3hfa2V5cGFpcihwaywgc2spCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19ib3hfc2VlZF9rZXlwYWlyID0gZnVuY3Rpb24gKHBrLCBzaywgc2VlZCkgewogIGlmIChwaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fYm94X1BVQkxJQ0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3BrJykKICBpZiAoc2s/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2JveF9TRUNSRVRLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2JveF9zZWVkX2tleXBhaXIocGssIHNrLCBzZWVkKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fYm94X2Vhc3kgPSBmdW5jdGlvbiAoYywgbSwgbiwgcGssIHNrKSB7CiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fYm94X2Vhc3koYywgbSwgbiwgcGssIHNrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fYm94X2RldGFjaGVkID0gZnVuY3Rpb24gKGMsIG1hYywgbSwgbiwgcGssIHNrKSB7CiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fYm94X2RldGFjaGVkKGMsIG1hYywgbSwgbiwgcGssIHNrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fYm94X3NlYWwgPSBmdW5jdGlvbiAoYywgbSwgcGspIHsKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19ib3hfc2VhbChjLCBtLCBwaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi8KZXhwb3J0cy5jcnlwdG9fYm94X3NlYWxfb3BlbiA9IGZ1bmN0aW9uIChtLCBjLCBwaywgc2spIHsKICByZXR1cm4gYmluZGluZy5jcnlwdG9fYm94X3NlYWxfb3BlbigKICAgIG0uYnVmZmVyLAogICAgbS5ieXRlT2Zmc2V0LAogICAgbS5ieXRlTGVuZ3RoLAoKICAgIGMuYnVmZmVyLAogICAgYy5ieXRlT2Zmc2V0LAogICAgYy5ieXRlTGVuZ3RoLAoKICAgIHBrLmJ1ZmZlciwKICAgIHBrLmJ5dGVPZmZzZXQsCiAgICBway5ieXRlTGVuZ3RoLAoKICAgIHNrLmJ1ZmZlciwKICAgIHNrLmJ5dGVPZmZzZXQsCiAgICBzay5ieXRlTGVuZ3RoCiAgKQp9CgovLyBjcnlwdG9fc2VjcmV0Ym94CgpleHBvcnRzLmNyeXB0b19zZWNyZXRib3hfZWFzeSA9IGZ1bmN0aW9uIChjLCBtLCBuLCBrKSB7CiAgaWYgKGM/LmJ5dGVMZW5ndGggIT09IG0uYnl0ZUxlbmd0aCArIGJpbmRpbmcuY3J5cHRvX3NlY3JldGJveF9NQUNCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdjIG11c3QgYmUgIm0uYnl0ZUxlbmd0aCArIGNyeXB0b19zZWNyZXRib3hfTUFDQllURVMiIGJ5dGVzJykKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NlY3JldGJveF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc2VjcmV0Ym94X2Vhc3koYywgbSwgbiwgaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi8KZXhwb3J0cy5jcnlwdG9fc2VjcmV0Ym94X29wZW5fZWFzeSA9IGZ1bmN0aW9uIChtLCBjLCBuLCBrKSB7CiAgaWYgKG0/LmJ5dGVMZW5ndGggIT09IGMuYnl0ZUxlbmd0aCAtIGJpbmRpbmcuY3J5cHRvX3NlY3JldGJveF9NQUNCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdtIG11c3QgYmUgImMgLSBjcnlwdG9fc2VjcmV0Ym94X01BQ0JZVEVTIiBieXRlcycpCiAgaWYgKGM/LmJ5dGVMZW5ndGggPCBiaW5kaW5nLmNyeXB0b19zZWNyZXRib3hfTUFDQllURVMpIHRocm93IG5ldyBFcnJvcignYycpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ24nKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zZWNyZXRib3hfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIHJldHVybiBiaW5kaW5nLmNyeXB0b19zZWNyZXRib3hfb3Blbl9lYXN5KG0sIGMsIG4sIGspCn0KCmV4cG9ydHMuY3J5cHRvX3NlY3JldGJveF9kZXRhY2hlZCA9IGZ1bmN0aW9uIChjLCBtYWMsIG0sIG4sIGspIHsKICBpZiAoYz8uYnl0ZUxlbmd0aCAhPT0gbS5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ2MgbXVzdCAibS5ieXRlTGVuZ3RoIiBieXRlcycpCiAgaWYgKG1hYz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2VjcmV0Ym94X01BQ0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ21hYycpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ24nKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zZWNyZXRib3hfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3NlY3JldGJveF9kZXRhY2hlZChjLCBtYWMsIG0sIG4sIGspCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgovKiogQHJldHVybnMge2Jvb2xlYW59ICovCmV4cG9ydHMuY3J5cHRvX3NlY3JldGJveF9vcGVuX2RldGFjaGVkID0gZnVuY3Rpb24gKG0sIGMsIG1hYywgbiwgaykgewogIGlmIChtPy5ieXRlTGVuZ3RoICE9PSBjLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignbSBtdXN0IGJlICJjLmJ5dGVMZW5ndGgiIGJ5dGVzJykKICBpZiAobWFjPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zZWNyZXRib3hfTUFDQllURVMpIHRocm93IG5ldyBFcnJvcignbWFjJykKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NlY3JldGJveF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgcmV0dXJuIGJpbmRpbmcuY3J5cHRvX3NlY3JldGJveF9vcGVuX2RldGFjaGVkKG0sIGMsIG1hYywgbiwgaykKfQoKLy8gY3J5cHRvX2dlbmVyaWNoYXNoCgpleHBvcnRzLmNyeXB0b19nZW5lcmljaGFzaCA9IGZ1bmN0aW9uIChvdXRwdXQsIGlucHV0LCBrZXkgPSBPUFRJT05BTCkgewogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2dlbmVyaWNoYXNoKAogICAgb3V0cHV0LmJ1ZmZlciwKICAgIG91dHB1dC5ieXRlT2Zmc2V0LAogICAgb3V0cHV0LmJ5dGVMZW5ndGgsCgogICAgaW5wdXQuYnVmZmVyLAogICAgaW5wdXQuYnl0ZU9mZnNldCwKICAgIGlucHV0LmJ5dGVMZW5ndGgsCgogICAga2V5LmJ1ZmZlciwKICAgIGtleS5ieXRlT2Zmc2V0LAogICAga2V5LmJ5dGVMZW5ndGgKICApCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19nZW5lcmljaGFzaF9iYXRjaCA9IGZ1bmN0aW9uIChvdXRwdXQsIGJhdGNoLCBrZXkpIHsKICBpZiAoaXNOb2RlIHx8IGJhdGNoLmxlbmd0aCA8IDQpIHsKICAgIC8vIGl0ZXJhdGUgYmF0Y2ggZnJvbSBuYXRpdmUKICAgIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2dlbmVyaWNoYXNoX2JhdGNoKG91dHB1dCwgYmF0Y2gsICEha2V5LCBrZXkgfHwgT1BUSU9OQUwpCiAgICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKICB9IGVsc2UgewogICAgLy8gaXRlcmF0ZSBiYXRjaCB0aHJvdWdoIGZhc3RjYWxscwogICAgY29uc3Qgc3RhdGUgPSBCdWZmZXIuYWxsb2MoYmluZGluZy5jcnlwdG9fZ2VuZXJpY2hhc2hfU1RBVEVCWVRFUykKCiAgICBleHBvcnRzLmNyeXB0b19nZW5lcmljaGFzaF9pbml0KHN0YXRlLCBrZXksIG91dHB1dC5ieXRlTGVuZ3RoKQoKICAgIGZvciAoY29uc3QgYnVmIG9mIGJhdGNoKSB7CiAgICAgIGV4cG9ydHMuY3J5cHRvX2dlbmVyaWNoYXNoX3VwZGF0ZShzdGF0ZSwgYnVmKQogICAgfQoKICAgIGV4cG9ydHMuY3J5cHRvX2dlbmVyaWNoYXNoX2ZpbmFsKHN0YXRlLCBvdXRwdXQpCiAgfQp9CgpleHBvcnRzLmNyeXB0b19nZW5lcmljaGFzaF9rZXlnZW4gPSBmdW5jdGlvbiAoa2V5KSB7CiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fZ2VuZXJpY2hhc2hfa2V5Z2VuKAogICAga2V5LmJ1ZmZlciwga2V5LmJ5dGVPZmZzZXQsIGtleS5ieXRlTGVuZ3RoCiAgKQogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19nZW5lcmljaGFzaF9pbml0ID0gZnVuY3Rpb24gKHN0YXRlLCBrZXksIG91dHB1dExlbmd0aCkgewogIGtleSB8fD0gT1BUSU9OQUwKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fZ2VuZXJpY2hhc2hfaW5pdCgKICAgIHN0YXRlLmJ1ZmZlciwKICAgIHN0YXRlLmJ5dGVPZmZzZXQsCiAgICBzdGF0ZS5ieXRlTGVuZ3RoLAoKICAgIGtleS5idWZmZXIsCiAgICBrZXkuYnl0ZU9mZnNldCwKICAgIGtleS5ieXRlTGVuZ3RoLAoKICAgIG91dHB1dExlbmd0aAogICkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX2dlbmVyaWNoYXNoX3VwZGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgaW5wdXQpIHsKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19nZW5lcmljaGFzaF91cGRhdGUoCiAgICBzdGF0ZS5idWZmZXIsCiAgICBzdGF0ZS5ieXRlT2Zmc2V0LAogICAgc3RhdGUuYnl0ZUxlbmd0aCwKCiAgICBpbnB1dC5idWZmZXIsCiAgICBpbnB1dC5ieXRlT2Zmc2V0LAogICAgaW5wdXQuYnl0ZUxlbmd0aAogICkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX2dlbmVyaWNoYXNoX2ZpbmFsID0gZnVuY3Rpb24gKHN0YXRlLCBvdXRwdXQpIHsKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19nZW5lcmljaGFzaF9maW5hbCgKICAgIHN0YXRlLmJ1ZmZlciwKICAgIHN0YXRlLmJ5dGVPZmZzZXQsCiAgICBzdGF0ZS5ieXRlTGVuZ3RoLAoKICAgIG91dHB1dC5idWZmZXIsCiAgICBvdXRwdXQuYnl0ZU9mZnNldCwKICAgIG91dHB1dC5ieXRlTGVuZ3RoCiAgKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLy8gc2VjcmV0c3RyZWFtCgpleHBvcnRzLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfa2V5Z2VuID0gZnVuY3Rpb24gKGspIHsKICBiaW5kaW5nLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfa2V5Z2VuKGsuYnVmZmVyLCBrLmJ5dGVPZmZzZXQsIGsuYnl0ZUxlbmd0aCkKfQoKZXhwb3J0cy5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2luaXRfcHVzaCA9IGZ1bmN0aW9uIChzdGF0ZSwgaGVhZGVyLCBrKSB7CiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2luaXRfcHVzaCgKICAgIHN0YXRlLmJ1ZmZlciwKICAgIHN0YXRlLmJ5dGVPZmZzZXQsCiAgICBzdGF0ZS5ieXRlTGVuZ3RoLAoKICAgIGhlYWRlci5idWZmZXIsCiAgICBoZWFkZXIuYnl0ZU9mZnNldCwKICAgIGhlYWRlci5ieXRlTGVuZ3RoLAoKICAgIGsuYnVmZmVyLAogICAgay5ieXRlT2Zmc2V0LAogICAgay5ieXRlTGVuZ3RoCiAgKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2luaXRfcHVsbCA9IGZ1bmN0aW9uIChzdGF0ZSwgaGVhZGVyLCBrKSB7CiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2luaXRfcHVsbCgKICAgIHN0YXRlLmJ1ZmZlciwKICAgIHN0YXRlLmJ5dGVPZmZzZXQsCiAgICBzdGF0ZS5ieXRlTGVuZ3RoLAoKICAgIGhlYWRlci5idWZmZXIsCiAgICBoZWFkZXIuYnl0ZU9mZnNldCwKICAgIGhlYWRlci5ieXRlTGVuZ3RoLAoKICAgIGsuYnVmZmVyLAogICAgay5ieXRlT2Zmc2V0LAogICAgay5ieXRlTGVuZ3RoCiAgKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLyoqIEByZXR1cm5zIHtudW1iZXJ9ICovCmV4cG9ydHMuY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9wdXNoID0gZnVuY3Rpb24gKHN0YXRlLCBjLCBtLCBhZCwgdGFnKSB7CiAgYWQgfHw9IE9QVElPTkFMCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9wdXNoKAogICAgc3RhdGUuYnVmZmVyLAogICAgc3RhdGUuYnl0ZU9mZnNldCwKICAgIHN0YXRlLmJ5dGVMZW5ndGgsCgogICAgYy5idWZmZXIsCiAgICBjLmJ5dGVPZmZzZXQsCiAgICBjLmJ5dGVMZW5ndGgsCgogICAgbS5idWZmZXIsCiAgICBtLmJ5dGVPZmZzZXQsCiAgICBtLmJ5dGVMZW5ndGgsCgogICAgYWQuYnVmZmVyLAogICAgYWQuYnl0ZU9mZnNldCwKICAgIGFkLmJ5dGVMZW5ndGgsCgogICAgdGFnCiAgKQoKICBpZiAocmVzIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdwdXNoIGZhaWxlZCcpCgogIHJldHVybiByZXMKfQoKLyoqIEByZXR1cm5zIHtudW1iZXJ9ICovCmV4cG9ydHMuY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9wdWxsID0gZnVuY3Rpb24gKHN0YXRlLCBtLCB0YWcsIGMsIGFkKSB7CiAgYWQgfHw9IE9QVElPTkFMCgogIGlmIChjPy5ieXRlTGVuZ3RoIDwgYmluZGluZy5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0FCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGNpcGhlciBsZW5ndGgnKQogIGlmIChtPy5ieXRlTGVuZ3RoICE9PSBjLmJ5dGVMZW5ndGggLSBiaW5kaW5nLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbWVzc2FnZSBsZW5ndGgnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVsbCgKICAgIHN0YXRlLmJ1ZmZlciwKICAgIHN0YXRlLmJ5dGVPZmZzZXQsCiAgICBzdGF0ZS5ieXRlTGVuZ3RoLAoKICAgIG0uYnVmZmVyLAogICAgbS5ieXRlT2Zmc2V0LAogICAgbS5ieXRlTGVuZ3RoLAoKICAgIHRhZy5idWZmZXIsCiAgICB0YWcuYnl0ZU9mZnNldCwKICAgIHRhZy5ieXRlTGVuZ3RoLAoKICAgIGMuYnVmZmVyLAogICAgYy5ieXRlT2Zmc2V0LAogICAgYy5ieXRlTGVuZ3RoLAoKICAgIGFkLmJ1ZmZlciwKICAgIGFkLmJ5dGVPZmZzZXQsCiAgICBhZC5ieXRlTGVuZ3RoCiAgKQoKICBpZiAocmVzIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdwdWxsIGZhaWxlZCcpCgogIHJldHVybiByZXMKfQoKZXhwb3J0cy5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3Jla2V5ID0gZnVuY3Rpb24gKHN0YXRlKSB7CiAgYmluZGluZy5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3Jla2V5KHN0YXRlLmJ1ZmZlciwgc3RhdGUuYnl0ZU9mZnNldCwgc3RhdGUuYnl0ZUxlbmd0aCkKfQoKLy8gY3J5cHRvX3N0cmVhbQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtID0gZnVuY3Rpb24gKGMsIG4sIGspIHsKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc3RyZWFtKGMsIG4sIGspCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1feG9yID0gZnVuY3Rpb24gKGMsIG0sIG4sIGspIHsKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zdHJlYW1feG9yKAogICAgYy5idWZmZXIsCiAgICBjLmJ5dGVPZmZzZXQsCiAgICBjLmJ5dGVMZW5ndGgsCgogICAgbS5idWZmZXIsCiAgICBtLmJ5dGVPZmZzZXQsCiAgICBtLmJ5dGVMZW5ndGgsCgogICAgbi5idWZmZXIsCiAgICBuLmJ5dGVPZmZzZXQsCiAgICBuLmJ5dGVMZW5ndGgsCgogICAgay5idWZmZXIsCiAgICBrLmJ5dGVPZmZzZXQsCiAgICBrLmJ5dGVMZW5ndGgKICApCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1fY2hhY2hhMjAgPSBmdW5jdGlvbiAoYywgbiwgaykgewogIGlmIChuPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfTk9OQ0VCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjAoYywgbiwgaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF94b3IgPSBmdW5jdGlvbiAoYywgbSwgbiwgaykgewogIGlmIChjPy5ieXRlTGVuZ3RoICE9PSBtLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignbSBtdXN0IGJlICJjLmJ5dGVMZW5ndGgiIGJ5dGVzJykKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX3hvcihjLCBtLCBuLCBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX3hvcl9pYyA9IGZ1bmN0aW9uIChjLCBtLCBuLCBpYywgaykgewogIGlmIChjPy5ieXRlTGVuZ3RoICE9PSBtLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignbSBtdXN0IGJlICJjLmJ5dGVMZW5ndGgiIGJ5dGVzJykKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX3hvcl9pYyhjLCBtLCBuLCBpYywgaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9pZXRmID0gZnVuY3Rpb24gKGMsIG4sIGspIHsKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfTk9OQ0VCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9pZXRmKGMsIG4sIGspCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfaWV0Zl94b3IgPSBmdW5jdGlvbiAoYywgbSwgbiwgaykgewogIGlmIChjPy5ieXRlTGVuZ3RoICE9PSBtLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignbSBtdXN0IGJlICJjLmJ5dGVMZW5ndGgiIGJ5dGVzJykKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfTk9OQ0VCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9pZXRmX3hvcihjLCBtLCBuLCBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfeG9yX2ljID0gZnVuY3Rpb24gKGMsIG0sIG4sIGljLCBrKSB7CiAgaWYgKGM/LmJ5dGVMZW5ndGggIT09IG0uYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdtIG11c3QgYmUgImMuYnl0ZUxlbmd0aCIgYnl0ZXMnKQogIGlmIChuPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfaWV0Zl9OT05DRUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ24nKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfaWV0Zl9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfeG9yX2ljKGMsIG0sIG4sIGljLCBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMCA9IGZ1bmN0aW9uIChjLCBuLCBrKSB7CiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV94Y2hhY2hhMjBfTk9OQ0VCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMChjLCBuLCBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF94b3IgPSBmdW5jdGlvbiAoYywgbSwgbiwgaykgewogIGlmIChjPy5ieXRlTGVuZ3RoICE9PSBtLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignbSBtdXN0IGJlICJjLmJ5dGVMZW5ndGgiIGJ5dGVzJykKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF9OT05DRUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ24nKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1feGNoYWNoYTIwX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zdHJlYW1feGNoYWNoYTIwX3hvcihjLCBtLCBuLCBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF94b3JfaWMgPSBmdW5jdGlvbiAoYywgbSwgbiwgaWMsIGspIHsKICBpZiAoYz8uYnl0ZUxlbmd0aCAhPT0gbS5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ20gbXVzdCBiZSAiYy5ieXRlTGVuZ3RoIiBieXRlcycpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV94Y2hhY2hhMjBfTk9OQ0VCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF94b3JfaWMoYywgbSwgbiwgaWMsIGspCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1fc2Fsc2EyMCA9IGZ1bmN0aW9uIChjLCBuLCBrKSB7CiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fc2Fsc2EyMChjLCBuLCBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX3NhbHNhMjBfeG9yID0gZnVuY3Rpb24gKGMsIG0sIG4sIGspIHsKICBpZiAoYz8uYnl0ZUxlbmd0aCAhPT0gbS5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ20gbXVzdCBiZSAiYy5ieXRlTGVuZ3RoIiBieXRlcycpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3IoYywgbSwgbiwgaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX3hvcl9pYyA9IGZ1bmN0aW9uIChjLCBtLCBuLCBpYywgaykgewogIGlmIChjPy5ieXRlTGVuZ3RoICE9PSBtLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignbSBtdXN0IGJlICJjLmJ5dGVMZW5ndGgiIGJ5dGVzJykKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3NhbHNhMjBfTk9OQ0VCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3NhbHNhMjBfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX3hvcl9pYyhjLCBtLCBuLCBpYywgaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCi8vIGNyeXB0b19hdXRoCgpleHBvcnRzLmNyeXB0b19hdXRoID0gZnVuY3Rpb24gKG91dCwgaW5wdXQsIGspIHsKICBpZiAob3V0Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hdXRoX0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2F1dGhfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2F1dGgob3V0LCBpbnB1dCwgaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi8KZXhwb3J0cy5jcnlwdG9fYXV0aF92ZXJpZnkgPSBmdW5jdGlvbiAoaCwgaW5wdXQsIGspIHsKICBpZiAoaD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fYXV0aF9CWVRFUykgdGhyb3cgbmV3IEVycm9yKCdoJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fYXV0aF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgcmV0dXJuIGJpbmRpbmcuY3J5cHRvX2F1dGhfdmVyaWZ5KGgsIGlucHV0LCBrKQp9CgovLyBjcnlwdG9fb25ldGltZWF1dGgKCmV4cG9ydHMuY3J5cHRvX29uZXRpbWVhdXRoID0gZnVuY3Rpb24gKG91dCwgaW5wdXQsIGspIHsKICBpZiAob3V0Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19vbmV0aW1lYXV0aF9CWVRFUykgdGhyb3cgbmV3IEVycm9yKCdvdXQnKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19vbmV0aW1lYXV0aF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fb25ldGltZWF1dGgob3V0LCBpbnB1dCwgaykKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX29uZXRpbWVhdXRoX2luaXQgPSBmdW5jdGlvbiAoc3RhdGUsIGspIHsKICBpZiAoc3RhdGU/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX29uZXRpbWVhdXRoX1NUQVRFQllURVMpIHRocm93IG5ldyBFcnJvcigic3RhdGUgbXVzdCBiZSAnY3J5cHRvX29uZXRpbWVhdXRoX1NUQVRFQllURVMnIGJ5dGVzIikKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fb25ldGltZWF1dGhfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX29uZXRpbWVhdXRoX2luaXQoc3RhdGUsIGspCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19vbmV0aW1lYXV0aF91cGRhdGUgPSBmdW5jdGlvbiAoc3RhdGUsIGlucHV0KSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19vbmV0aW1lYXV0aF9TVEFURUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19vbmV0aW1lYXV0aF9TVEFURUJZVEVTJyBieXRlcyIpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX29uZXRpbWVhdXRoX3VwZGF0ZShzdGF0ZSwgaW5wdXQpCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19vbmV0aW1lYXV0aF9maW5hbCA9IGZ1bmN0aW9uIChzdGF0ZSwgb3V0KSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19vbmV0aW1lYXV0aF9TVEFURUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19vbmV0aW1lYXV0aF9TVEFURUJZVEVTJyBieXRlcyIpCiAgaWYgKG91dD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fb25ldGltZWF1dGhfQllURVMpIHRocm93IG5ldyBFcnJvcignb3V0JykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fb25ldGltZWF1dGhfZmluYWwoc3RhdGUsIG91dCkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi8KZXhwb3J0cy5jcnlwdG9fb25ldGltZWF1dGhfdmVyaWZ5ID0gZnVuY3Rpb24gKGgsIGlucHV0LCBrKSB7CiAgaWYgKGg/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX29uZXRpbWVhdXRoX0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2gnKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19vbmV0aW1lYXV0aF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgcmV0dXJuIGJpbmRpbmcuY3J5cHRvX29uZXRpbWVhdXRoX3ZlcmlmeShoLCBpbnB1dCwgaykKfQoKLy8gY3J5cHRvX3B3aGFzaAoKZXhwb3J0cy5jcnlwdG9fcHdoYXNoID0gZnVuY3Rpb24gKG91dCwgcGFzc3dkLCBzYWx0LCBvcHNsaW1pdCwgbWVtbGltaXQsIGFsZykgewogIGlmIChvdXQ/LmJ5dGVMZW5ndGggPCBiaW5kaW5nLmNyeXB0b19wd2hhc2hfQllURVNfTUlOKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCiAgaWYgKG91dD8uYnl0ZUxlbmd0aCA+IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9CWVRFU19NQVgpIHRocm93IG5ldyBFcnJvcignb3V0JykKICBpZiAoc2FsdD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fcHdoYXNoX1NBTFRCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzYWx0JykKICBpZiAob3BzbGltaXQgPCBiaW5kaW5nLmNyeXB0b19wd2hhc2hfT1BTTElNSVRfTUlOKSB0aHJvdyBuZXcgRXJyb3IoJ29wc2xpbWl0JykKICBpZiAob3BzbGltaXQgPiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfT1BTTElNSVRfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ29wc2xpbWl0JykKICBpZiAobWVtbGltaXQgPCBiaW5kaW5nLmNyeXB0b19wd2hhc2hfTUVNTElNSVRfTUlOKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKICBpZiAobWVtbGltaXQgPiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfTUVNTElNSVRfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKICBpZiAoYWxnIDwgMSB8fCBhbGcgPiAyKSB0aHJvdyBuZXcgRXJyb3IoJ2FsZyBtdXN0IGJlIGVpdGhlciBBcmdvbjJpIDEuMyBvciBBcmdvbjJpZCAxLjMnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19wd2hhc2gob3V0LCBwYXNzd2QsIHNhbHQsIG9wc2xpbWl0LCBtZW1saW1pdCwgYWxnKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZH0gKi8KZXhwb3J0cy5jcnlwdG9fcHdoYXNoX2FzeW5jID0gZnVuY3Rpb24gKG91dCwgcGFzc3dkLCBzYWx0LCBvcHNsaW1pdCwgbWVtbGltaXQsIGFsZywgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsKICBpZiAob3V0Py5ieXRlTGVuZ3RoIDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX0JZVEVTX01JTikgdGhyb3cgbmV3IEVycm9yKCdvdXQnKQogIGlmIChvdXQ/LmJ5dGVMZW5ndGggPiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfQllURVNfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCiAgaWYgKHNhbHQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9TQUxUQllURVMpIHRocm93IG5ldyBFcnJvcignc2FsdCcpCiAgaWYgKG9wc2xpbWl0IDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX09QU0xJTUlUX01JTikgdGhyb3cgbmV3IEVycm9yKCdvcHNsaW1pdCcpCiAgaWYgKG9wc2xpbWl0ID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX09QU0xJTUlUX01BWCkgdGhyb3cgbmV3IEVycm9yKCdvcHNsaW1pdCcpCiAgaWYgKG1lbWxpbWl0IDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX01FTUxJTUlUX01JTikgdGhyb3cgbmV3IEVycm9yKCdtZW1saW1pdCcpCiAgaWYgKG1lbWxpbWl0ID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX01FTUxJTUlUX01BWCkgdGhyb3cgbmV3IEVycm9yKCdtZW1saW1pdCcpCiAgaWYgKGFsZyA8IDEgfHwgYWxnID4gMikgdGhyb3cgbmV3IEVycm9yKCdhbGcgbXVzdCBiZSBlaXRoZXIgQXJnb24yaSAxLjMgb3IgQXJnb24yaWQgMS4zJykKCiAgY29uc3QgW2RvbmUsIHByb21pc2VdID0gY2hlY2tTdGF0dXMoY2FsbGJhY2spCgogIGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9hc3luYygKICAgIG91dC5idWZmZXIsCiAgICBvdXQuYnl0ZU9mZnNldCwKICAgIG91dC5ieXRlTGVuZ3RoLAoKICAgIHBhc3N3ZC5idWZmZXIsCiAgICBwYXNzd2QuYnl0ZU9mZnNldCwKICAgIHBhc3N3ZC5ieXRlTGVuZ3RoLAoKICAgIHNhbHQuYnVmZmVyLAogICAgc2FsdC5ieXRlT2Zmc2V0LAogICAgc2FsdC5ieXRlTGVuZ3RoLAoKICAgIG9wc2xpbWl0LAogICAgbWVtbGltaXQsCiAgICBhbGcsCgogICAgZG9uZQogICkKCiAgcmV0dXJuIHByb21pc2UKfQoKZXhwb3J0cy5jcnlwdG9fcHdoYXNoX3N0ciA9IGZ1bmN0aW9uIChvdXQsIHBhc3N3ZCwgb3BzbGltaXQsIG1lbWxpbWl0KSB7CiAgaWYgKG91dD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fcHdoYXNoX1NUUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCiAgaWYgKHR5cGVvZiBvcHNsaW1pdCAhPT0gJ251bWJlcicpIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmIChvcHNsaW1pdCA8IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9PUFNMSU1JVF9NSU4pIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmIChvcHNsaW1pdCA+IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9PUFNMSU1JVF9NQVgpIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmICh0eXBlb2YgbWVtbGltaXQgIT09ICdudW1iZXInKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKICBpZiAobWVtbGltaXQgPCBiaW5kaW5nLmNyeXB0b19wd2hhc2hfTUVNTElNSVRfTUlOKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKICBpZiAobWVtbGltaXQgPiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfTUVNTElNSVRfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fcHdoYXNoX3N0cihvdXQsIHBhc3N3ZCwgb3BzbGltaXQsIG1lbWxpbWl0KQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZH0gKi8KZXhwb3J0cy5jcnlwdG9fcHdoYXNoX3N0cl9hc3luYyA9IGZ1bmN0aW9uIChvdXQsIHBhc3N3ZCwgb3BzbGltaXQsIG1lbWxpbWl0LCBjYWxsYmFjayA9IHVuZGVmaW5lZCkgewogIGlmIChvdXQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9TVFJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdvdXQnKQogIGlmICghcGFzc3dkPy5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ3Bhc3N3ZCcpCiAgaWYgKHR5cGVvZiBvcHNsaW1pdCAhPT0gJ251bWJlcicpIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmIChvcHNsaW1pdCA8IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9PUFNMSU1JVF9NSU4pIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmIChvcHNsaW1pdCA+IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9PUFNMSU1JVF9NQVgpIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmICh0eXBlb2YgbWVtbGltaXQgIT09ICdudW1iZXInKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKICBpZiAobWVtbGltaXQgPCBiaW5kaW5nLmNyeXB0b19wd2hhc2hfTUVNTElNSVRfTUlOKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKICBpZiAobWVtbGltaXQgPiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfTUVNTElNSVRfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKCiAgY29uc3QgW2RvbmUsIHByb21pc2VdID0gY2hlY2tTdGF0dXMoY2FsbGJhY2spCgogIGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zdHJfYXN5bmMoCiAgICBvdXQuYnVmZmVyLAogICAgb3V0LmJ5dGVPZmZzZXQsCiAgICBvdXQuYnl0ZUxlbmd0aCwKCiAgICBwYXNzd2QuYnVmZmVyLAogICAgcGFzc3dkLmJ5dGVPZmZzZXQsCiAgICBwYXNzd2QuYnl0ZUxlbmd0aCwKCiAgICBvcHNsaW1pdCwKICAgIG1lbWxpbWl0LAoKICAgIGRvbmUKICApCgogIHJldHVybiBwcm9taXNlCn0KCi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi8KZXhwb3J0cy5jcnlwdG9fcHdoYXNoX3N0cl92ZXJpZnkgPSBmdW5jdGlvbiAoc3RyLCBwYXNzd2QpIHsKICBpZiAoc3RyPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19wd2hhc2hfU1RSQllURVMpIHRocm93IG5ldyBFcnJvcignc3RyJykKCiAgcmV0dXJuIGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zdHJfdmVyaWZ5KHN0ciwgcGFzc3dkKQp9CgovKiogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj58dW5kZWZpbmVkfSAqLwpleHBvcnRzLmNyeXB0b19wd2hhc2hfc3RyX3ZlcmlmeV9hc3luYyA9IGZ1bmN0aW9uIChzdHIsIHBhc3N3ZCwgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsKICBpZiAoc3RyPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19wd2hhc2hfU1RSQllURVMpIHRocm93IG5ldyBFcnJvcignc3RyJykKICBpZiAoIXBhc3N3ZD8uYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdwYXNzd2QnKQoKICBjb25zdCBbZG9uZSwgcHJvbWlzZV0gPSBjaGVja1N0YXR1cyhjYWxsYmFjaywgdHJ1ZSkKCiAgYmluZGluZy5jcnlwdG9fcHdoYXNoX3N0cl92ZXJpZnlfYXN5bmMoCiAgICBzdHIuYnVmZmVyLAogICAgc3RyLmJ5dGVPZmZzZXQsCiAgICBzdHIuYnl0ZUxlbmd0aCwKCiAgICBwYXNzd2QuYnVmZmVyLAogICAgcGFzc3dkLmJ5dGVPZmZzZXQsCiAgICBwYXNzd2QuYnl0ZUxlbmd0aCwKCiAgICBkb25lCiAgKQoKICByZXR1cm4gcHJvbWlzZQp9CgovKiogQHJldHVybnMge2Jvb2xlYW59ICovCmV4cG9ydHMuY3J5cHRvX3B3aGFzaF9zdHJfbmVlZHNfcmVoYXNoID0gZnVuY3Rpb24gKHN0ciwgb3BzbGltaXQsIG1lbWxpbWl0KSB7CiAgaWYgKHN0cj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fcHdoYXNoX1NUUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3N0cicpCiAgaWYgKG9wc2xpbWl0IDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX09QU0xJTUlUX01JTikgdGhyb3cgbmV3IEVycm9yKCdvcHNsaW1pdCcpCiAgaWYgKG9wc2xpbWl0ID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX09QU0xJTUlUX01BWCkgdGhyb3cgbmV3IEVycm9yKCdvcHNsaW1pdCcpCiAgaWYgKG1lbWxpbWl0IDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX01FTUxJTUlUX01JTikgdGhyb3cgbmV3IEVycm9yKCdtZW1saW1pdCcpCiAgaWYgKG1lbWxpbWl0ID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX01FTUxJTUlUX01BWCkgdGhyb3cgbmV3IEVycm9yKCdtZW1saW1pdCcpCgogIHJldHVybiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc3RyX25lZWRzX3JlaGFzaChzdHIsIG9wc2xpbWl0LCBtZW1saW1pdCkKfQoKZXhwb3J0cy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2ID0gZnVuY3Rpb24gKG91dCwgcGFzc3dkLCBzYWx0LCBvcHNsaW1pdCwgbWVtbGltaXQpIHsKICBpZiAob3V0Py5ieXRlTGVuZ3RoIDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X0JZVEVTX01JTikgdGhyb3cgbmV3IEVycm9yKCdvdXQnKQogIGlmIChvdXQ/LmJ5dGVMZW5ndGggPiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfQllURVNfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCiAgaWYgKHNhbHQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9TQUxUQllURVMpIHRocm93IG5ldyBFcnJvcignc2FsdCcpCiAgaWYgKG9wc2xpbWl0IDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X09QU0xJTUlUX01JTikgdGhyb3cgbmV3IEVycm9yKCdvcHNsaW1pdCcpCiAgaWYgKG9wc2xpbWl0ID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X09QU0xJTUlUX01BWCkgdGhyb3cgbmV3IEVycm9yKCdvcHNsaW1pdCcpCiAgaWYgKG1lbWxpbWl0IDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X01FTUxJTUlUX01JTikgdGhyb3cgbmV3IEVycm9yKCdtZW1saW1pdCcpCiAgaWYgKG1lbWxpbWl0ID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X01FTUxJTUlUX01BWCkgdGhyb3cgbmV3IEVycm9yKCdtZW1saW1pdCcpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1NihvdXQsIHBhc3N3ZCwgc2FsdCwgb3BzbGltaXQsIG1lbWxpbWl0KQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZH0gKi8KZXhwb3J0cy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X2FzeW5jID0gZnVuY3Rpb24gKG91dCwgcGFzc3dkLCBzYWx0LCBvcHNsaW1pdCwgbWVtbGltaXQsIGNhbGxiYWNrID0gdW5kZWZpbmVkKSB7CiAgaWYgKG91dD8uYnl0ZUxlbmd0aCA8IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9CWVRFU19NSU4pIHRocm93IG5ldyBFcnJvcignb3V0JykKICBpZiAob3V0Py5ieXRlTGVuZ3RoID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X0JZVEVTX01BWCkgdGhyb3cgbmV3IEVycm9yKCdvdXQnKQogIGlmICghcGFzc3dkPy5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ3Bhc3N3ZCcpCiAgaWYgKHNhbHQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9TQUxUQllURVMpIHRocm93IG5ldyBFcnJvcignc2FsdCcpCiAgaWYgKG9wc2xpbWl0IDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X09QU0xJTUlUX01JTikgdGhyb3cgbmV3IEVycm9yKCdvcHNsaW1pdCcpCiAgaWYgKG9wc2xpbWl0ID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X09QU0xJTUlUX01BWCkgdGhyb3cgbmV3IEVycm9yKCdvcHNsaW1pdCcpCiAgaWYgKG1lbWxpbWl0IDwgYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X01FTUxJTUlUX01JTikgdGhyb3cgbmV3IEVycm9yKCdtZW1saW1pdCcpCiAgaWYgKG1lbWxpbWl0ID4gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X01FTUxJTUlUX01BWCkgdGhyb3cgbmV3IEVycm9yKCdtZW1saW1pdCcpCgogIGNvbnN0IFtkb25lLCBwcm9taXNlXSA9IGNoZWNrU3RhdHVzKGNhbGxiYWNrKQoKICBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfYXN5bmMoCiAgICBvdXQuYnVmZmVyLAogICAgb3V0LmJ5dGVPZmZzZXQsCiAgICBvdXQuYnl0ZUxlbmd0aCwKCiAgICBwYXNzd2QuYnVmZmVyLAogICAgcGFzc3dkLmJ5dGVPZmZzZXQsCiAgICBwYXNzd2QuYnl0ZUxlbmd0aCwKCiAgICBzYWx0LmJ1ZmZlciwKICAgIHNhbHQuYnl0ZU9mZnNldCwKICAgIHNhbHQuYnl0ZUxlbmd0aCwKCiAgICBvcHNsaW1pdCwKICAgIG1lbWxpbWl0LAoKICAgIGRvbmUKICApCgogIHJldHVybiBwcm9taXNlCn0KCi8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPnx1bmRlZmluZWR9ICovCmV4cG9ydHMuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9zdHJfYXN5bmMgPSBmdW5jdGlvbiAob3V0LCBwYXNzd2QsIG9wc2xpbWl0LCBtZW1saW1pdCwgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsKICBpZiAob3V0Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfU1RSQllURVMpIHRocm93IG5ldyBFcnJvcignb3V0JykKICBpZiAoIXBhc3N3ZD8uYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdwYXNzd2QnKQogIGlmIChvcHNsaW1pdCA8IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9PUFNMSU1JVF9NSU4pIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmIChvcHNsaW1pdCA+IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9PUFNMSU1JVF9NQVgpIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmIChtZW1saW1pdCA8IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9NRU1MSU1JVF9NSU4pIHRocm93IG5ldyBFcnJvcignbWVtbGltaXQnKQogIGlmIChtZW1saW1pdCA+IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9NRU1MSU1JVF9NQVgpIHRocm93IG5ldyBFcnJvcignbWVtbGltaXQnKQoKICBjb25zdCBbZG9uZSwgcHJvbWlzZV0gPSBjaGVja1N0YXR1cyhjYWxsYmFjaykKCiAgYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X3N0cl9hc3luYygKICAgIG91dC5idWZmZXIsCiAgICBvdXQuYnl0ZU9mZnNldCwKICAgIG91dC5ieXRlTGVuZ3RoLAoKICAgIHBhc3N3ZC5idWZmZXIsCiAgICBwYXNzd2QuYnl0ZU9mZnNldCwKICAgIHBhc3N3ZC5ieXRlTGVuZ3RoLAoKICAgIG9wc2xpbWl0LAogICAgbWVtbGltaXQsCgogICAgZG9uZQogICkKCiAgcmV0dXJuIHByb21pc2UKfQoKZXhwb3J0cy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X3N0ciA9IGZ1bmN0aW9uIChvdXQsIHBhc3N3ZCwgb3BzbGltaXQsIG1lbWxpbWl0KSB7CiAgaWYgKG91dD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X1NUUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCiAgaWYgKCFwYXNzd2Q/LmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcigncGFzc3dkJykKICBpZiAob3BzbGltaXQgPCBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfT1BTTElNSVRfTUlOKSB0aHJvdyBuZXcgRXJyb3IoJ29wc2xpbWl0JykKICBpZiAob3BzbGltaXQgPiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfT1BTTElNSVRfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ29wc2xpbWl0JykKICBpZiAobWVtbGltaXQgPCBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfTUVNTElNSVRfTUlOKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKICBpZiAobWVtbGltaXQgPiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfTUVNTElNSVRfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ21lbWxpbWl0JykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X3N0cihvdXQsIHBhc3N3ZCwgb3BzbGltaXQsIG1lbWxpbWl0KQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLyoqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fHVuZGVmaW5lZH0gKi8KZXhwb3J0cy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X3N0cl92ZXJpZnlfYXN5bmMgPSBmdW5jdGlvbiAoc3RyLCBwYXNzd2QsIGNhbGxiYWNrID0gdW5kZWZpbmVkKSB7CiAgaWYgKHN0cj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X1NUUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3N0cicpCiAgaWYgKCFwYXNzd2Q/LmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcigncGFzc3dkJykKCiAgY29uc3QgW2RvbmUsIHByb21pc2VdID0gY2hlY2tTdGF0dXMoY2FsbGJhY2ssIHRydWUpCgogIGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9zdHJfdmVyaWZ5X2FzeW5jKAogICAgc3RyLmJ1ZmZlciwKICAgIHN0ci5ieXRlT2Zmc2V0LAogICAgc3RyLmJ5dGVMZW5ndGgsCgogICAgcGFzc3dkLmJ1ZmZlciwKICAgIHBhc3N3ZC5ieXRlT2Zmc2V0LAogICAgcGFzc3dkLmJ5dGVMZW5ndGgsCgogICAgZG9uZQogICkKCiAgcmV0dXJuIHByb21pc2UKfQoKLyoqIEByZXR1cm5zIHtib29sZWFufSAqLwpleHBvcnRzLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfc3RyX3ZlcmlmeSA9IGZ1bmN0aW9uIChzdHIsIHBhc3N3ZCkgewogIGlmIChzdHI/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9TVFJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzdHInKQogIGlmICghcGFzc3dkPy5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ3Bhc3N3ZCcpCgogIHJldHVybiBiaW5kaW5nLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfc3RyX3ZlcmlmeShzdHIsIHBhc3N3ZCkKfQoKLyoqIEByZXR1cm5zIHtib29sZWFufSAqLwpleHBvcnRzLmNyeXB0b19wd2hhc2hfc2NyeXB0c2Fsc2EyMDhzaGEyNTZfc3RyX25lZWRzX3JlaGFzaCA9IGZ1bmN0aW9uIChzdHIsIG9wc2xpbWl0LCBtZW1saW1pdCkgewogIGlmIChzdHI/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9zY3J5cHRzYWxzYTIwOHNoYTI1Nl9TVFJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzdHInKQogIGlmIChvcHNsaW1pdCA8IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9PUFNMSU1JVF9NSU4pIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmIChvcHNsaW1pdCA+IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9PUFNMSU1JVF9NQVgpIHRocm93IG5ldyBFcnJvcignb3BzbGltaXQnKQogIGlmIChtZW1saW1pdCA8IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9NRU1MSU1JVF9NSU4pIHRocm93IG5ldyBFcnJvcignbWVtbGltaXQnKQogIGlmIChtZW1saW1pdCA+IGJpbmRpbmcuY3J5cHRvX3B3aGFzaF9NRU1MSU1JVF9NQVgpIHRocm93IG5ldyBFcnJvcignbWVtbGltaXQnKQoKICByZXR1cm4gYmluZGluZy5jcnlwdG9fcHdoYXNoX3NjcnlwdHNhbHNhMjA4c2hhMjU2X3N0cl9uZWVkc19yZWhhc2goc3RyLCBvcHNsaW1pdCwgbWVtbGltaXQpCn0KCi8vIGNyeXB0b19reAoKZXhwb3J0cy5jcnlwdG9fa3hfa2V5cGFpciA9IGZ1bmN0aW9uIChwaywgc2spIHsKICBpZiAocGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2t4X1BVQkxJQ0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3BrJykKICBpZiAoc2s/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2t4X1NFQ1JFVEtFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3NrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fa3hfa2V5cGFpcihwaywgc2spCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19reF9zZWVkX2tleXBhaXIgPSBmdW5jdGlvbiAocGssIHNrLCBzZWVkKSB7CiAgaWYgKHBrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19reF9QVUJMSUNLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdwaycpCiAgaWYgKHNrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19reF9TRUNSRVRLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzaycpCiAgaWYgKHNlZWQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2t4X1NFRURCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzZWVkJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fa3hfc2VlZF9rZXlwYWlyKHBrLCBzaywgc2VlZCkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX2t4X2NsaWVudF9zZXNzaW9uX2tleXMgPSBmdW5jdGlvbiAocngsIHR4LCBjbGllbnRQaywgY2xpZW50U2ssIHNlcnZlclBrKSB7CiAgLy8gbWF0Y2ggYHN0ZDo6b3B0aW9uYWxgIGJ5IGNvZXJjaW5nIG51bGwgdG8gdW5kZWZpbmVkCiAgcnggPz89IHVuZGVmaW5lZAogIHR4ID8/PSB1bmRlZmluZWQKCiAgaWYgKCFyeCAmJiAhdHgpIHRocm93IG5ldyBFcnJvcignYXQgbGVhc3Qgb25lIHNlc3Npb24ga2V5IG11c3QgYmUgc3BlY2lmaWVkJykKCiAgaWYgKHJ4KSB7CiAgICBpZiAocng/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2t4X1NFU1NJT05LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdyZWNlaXZpbmcga2V5IGJ1ZmZlciBtdXN0IGJlICJjcnlwdG9fa3hfU0VTU0lPTktFWUJZVEVTIiBieXRlcyBvciBudWxsJykKICB9IGVsc2UgewogICAgaWYgKHR4Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19reF9TRVNTSU9OS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigndHJhbnNtaXR0aW5nIGtleSBidWZmZXIgbXVzdCBiZSAiY3J5cHRvX2t4X1NFU1NJT05LRVlCWVRFUyIgYnl0ZXMgb3IgbnVsbCcpCiAgfQoKICBpZiAoY2xpZW50UGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2t4X1BVQkxJQ0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2NsaWVudF9waycpCiAgaWYgKGNsaWVudFNrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19reF9TRUNSRVRLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdjbGllbnRfc2snKQogIGlmIChzZXJ2ZXJQaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fa3hfUFVCTElDS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignc2VydmVyX3BrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fa3hfY2xpZW50X3Nlc3Npb25fa2V5cyhyeCwgdHgsIGNsaWVudFBrLCBjbGllbnRTaywgc2VydmVyUGspCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19reF9zZXJ2ZXJfc2Vzc2lvbl9rZXlzID0gZnVuY3Rpb24gKHJ4LCB0eCwgc2VydmVyUGssIHNlcnZlclNrLCBjbGllbnRQaykgewogIC8vIG1hdGNoIGBzdGQ6Om9wdGlvbmFsYCBieSBjb2VyY2luZyBudWxsIHRvIHVuZGVmaW5lZAogIHJ4ID8/PSB1bmRlZmluZWQKICB0eCA/Pz0gdW5kZWZpbmVkCgogIGlmICghcnggJiYgIXR4KSB0aHJvdyBuZXcgRXJyb3IoJ2F0IGxlYXN0IG9uZSBzZXNzaW9uIGtleSBtdXN0IGJlIHNwZWNpZmllZCcpCgogIGlmIChyeCkgewogICAgaWYgKHJ4Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19reF9TRVNTSU9OS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigncmVjZWl2aW5nIGtleSBidWZmZXIgbXVzdCBiZSAiY3J5cHRvX2t4X1NFU1NJT05LRVlCWVRFUyIgYnl0ZXMgb3IgbnVsbCcpCiAgfSBlbHNlIHsKICAgIGlmICh0eD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fa3hfU0VTU0lPTktFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zbWl0dGluZyBrZXkgYnVmZmVyIG11c3QgYmUgImNyeXB0b19reF9TRVNTSU9OS0VZQllURVMiIGJ5dGVzIG9yIG51bGwnKQogIH0KCiAgaWYgKHNlcnZlclBrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19reF9QVUJMSUNLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzZXJ2ZXJfcGsnKQogIGlmIChzZXJ2ZXJTaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fa3hfU0VDUkVUS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignc2VydmVyX3NrJykKICBpZiAoY2xpZW50UGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2t4X1BVQkxJQ0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2NsaWVudF9waycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2t4X3NlcnZlcl9zZXNzaW9uX2tleXMocngsIHR4LCBzZXJ2ZXJQaywgc2VydmVyU2ssIGNsaWVudFBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLy8gY3J5cHRvX3NjYWxhcm11bHQKCmV4cG9ydHMuY3J5cHRvX3NjYWxhcm11bHRfYmFzZSA9IGZ1bmN0aW9uIChxLCBuKSB7CiAgaWYgKHE/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfQllURVMpIHRocm93IG5ldyBFcnJvcigncScpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfYmFzZShxLCBuKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc2NhbGFybXVsdCA9IGZ1bmN0aW9uIChxLCBuLCBwKSB7CiAgaWYgKHE/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfQllURVMpIHRocm93IG5ldyBFcnJvcigncScpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKHA/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfQllURVMpIHRocm93IG5ldyBFcnJvcigncCcpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHQocSwgbiwgcCkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlID0gZnVuY3Rpb24gKHEsIG4pIHsKICBpZiAocT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2NhbGFybXVsdF9lZDI1NTE5X0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3EnKQogIGlmIChuPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlKHEsIG4pCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTkgPSBmdW5jdGlvbiAocSwgbiwgcCkgewogIGlmIChxPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfQllURVMpIHRocm93IG5ldyBFcnJvcigncScpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAocD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2NhbGFybXVsdF9lZDI1NTE5X0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3AnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTkocSwgbiwgcCkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi8KZXhwb3J0cy5jcnlwdG9fY29yZV9lZDI1NTE5X2lzX3ZhbGlkX3BvaW50ID0gZnVuY3Rpb24gKHApIHsKICBpZiAocD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3AnKQoKICByZXR1cm4gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X2lzX3ZhbGlkX3BvaW50KHApCn0KCmV4cG9ydHMuY3J5cHRvX2NvcmVfZWQyNTUxOV9mcm9tX3VuaWZvcm0gPSBmdW5jdGlvbiAocCwgcikgewogIGlmIChwPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfQllURVMpIHRocm93IG5ldyBFcnJvcigncCcpCiAgaWYgKHI/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9VTklGT1JNQllURVMpIHRocm93IG5ldyBFcnJvcigncicpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9mcm9tX3VuaWZvcm0ocCwgcikKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlX25vY2xhbXAgPSBmdW5jdGlvbiAocSwgbikgewogIGlmIChxPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfQllURVMpIHRocm93IG5ldyBFcnJvcigncScpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fc2NhbGFybXVsdF9lZDI1NTE5X2Jhc2Vfbm9jbGFtcChxLCBuKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fc2NhbGFybXVsdF9lZDI1NTE5X25vY2xhbXAgPSBmdW5jdGlvbiAocSwgbiwgcCkgewogIGlmIChxPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfQllURVMpIHRocm93IG5ldyBFcnJvcigncScpCiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAocD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2NhbGFybXVsdF9lZDI1NTE5X0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3AnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfbm9jbGFtcChxLCBuLCBwKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLy8gY3J5cHRvX2NvcmUKCmV4cG9ydHMuY3J5cHRvX2NvcmVfZWQyNTUxOV9hZGQgPSBmdW5jdGlvbiAociwgcCwgcSkgewogIGlmIChyPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfQllURVMpIHRocm93IG5ldyBFcnJvcigncicpCiAgaWYgKHA/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9CWVRFUykgdGhyb3cgbmV3IEVycm9yKCdwJykKICBpZiAocT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3EnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfYWRkKHIsIHAsIHEpCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19jb3JlX2VkMjU1MTlfc3ViID0gZnVuY3Rpb24gKHIsIHAsIHEpIHsKICBpZiAocj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3InKQogIGlmIChwPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfQllURVMpIHRocm93IG5ldyBFcnJvcigncCcpCiAgaWYgKHE/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9CWVRFUykgdGhyb3cgbmV3IEVycm9yKCdxJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X3N1YihyLCBwLCBxKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9fY29yZV9lZDI1NTE5X3NjYWxhcl9yYW5kb20gPSBmdW5jdGlvbiAocikgewogIGlmIChyPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcigncicpCgogIGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9zY2FsYXJfcmFuZG9tKHIpCn0KCmV4cG9ydHMuY3J5cHRvX2NvcmVfZWQyNTUxOV9zY2FsYXJfcmVkdWNlID0gZnVuY3Rpb24gKHIsIHMpIHsKICBpZiAocj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3InKQogIGlmIChzPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfTk9OUkVEVUNFRFNDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3MnKQoKICBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX3JlZHVjZShyLCBzKQp9CgpleHBvcnRzLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX2ludmVydCA9IGZ1bmN0aW9uIChyZWNpcCwgcykgewogIGlmIChyZWNpcD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3JlY2lwJykKICBpZiAocz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3MnKQoKICBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX2ludmVydChyZWNpcCwgcykKfQoKZXhwb3J0cy5jcnlwdG9fY29yZV9lZDI1NTE5X3NjYWxhcl9uZWdhdGUgPSBmdW5jdGlvbiAobmVnLCBzKSB7CiAgaWYgKG5lZz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ25lZycpCiAgaWYgKHM/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzJykKCiAgYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X3NjYWxhcl9uZWdhdGUobmVnLCBzKQp9CgpleHBvcnRzLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX2NvbXBsZW1lbnQgPSBmdW5jdGlvbiAoY29tcCwgcykgewogIGlmIChjb21wPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcignY29tcCcpCiAgaWYgKHM/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzJykKCiAgYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X3NjYWxhcl9jb21wbGVtZW50KGNvbXAsIHMpCn0KCmV4cG9ydHMuY3J5cHRvX2NvcmVfZWQyNTUxOV9zY2FsYXJfYWRkID0gZnVuY3Rpb24gKHosIHgsIHkpIHsKICBpZiAoej8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3onKQogIGlmICh4Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcigneCcpCiAgaWYgKHk/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCd5JykKCiAgYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X3NjYWxhcl9hZGQoeiwgeCwgeSkKfQoKZXhwb3J0cy5jcnlwdG9fY29yZV9lZDI1NTE5X3NjYWxhcl9zdWIgPSBmdW5jdGlvbiAoeiwgeCwgeSkgewogIGlmICh6Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcigneicpCiAgaWYgKHg/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2NvcmVfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCd4JykKICBpZiAoeT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fY29yZV9lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3knKQoKICBiaW5kaW5nLmNyeXB0b19jb3JlX2VkMjU1MTlfc2NhbGFyX3N1Yih6LCB4LCB5KQp9CgovLyBjcnlwdG9fc2hvcnRoYXNoCgpleHBvcnRzLmNyeXB0b19zaG9ydGhhc2ggPSBmdW5jdGlvbiAob3V0LCBpbnB1dCwgaykgewogIGlmIChvdXQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3Nob3J0aGFzaF9CWVRFUykgdGhyb3cgbmV3IEVycm9yKCdvdXQnKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zaG9ydGhhc2hfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX3Nob3J0aGFzaChvdXQsIGlucHV0LCBrKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLy8gY3J5cHRvX2tkZgoKZXhwb3J0cy5jcnlwdG9fa2RmX2tleWdlbiA9IGZ1bmN0aW9uIChrZXkpIHsKICBpZiAoa2V5Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19rZGZfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigna2V5JykKCiAgYmluZGluZy5jcnlwdG9fa2RmX2tleWdlbihrZXkpCn0KCmV4cG9ydHMuY3J5cHRvX2tkZl9kZXJpdmVfZnJvbV9rZXkgPSBmdW5jdGlvbiAoc3Via2V5LCBzdWJrZXlJZCwgY3R4LCBrZXkpIHsKICBpZiAoc3Via2V5Py5ieXRlTGVuZ3RoIDwgYmluZGluZy5jcnlwdG9fa2RmX0JZVEVTX01JTikgdGhyb3cgbmV3IEVycm9yKCdzdWJrZXknKQogIGlmIChzdWJrZXk/LmJ5dGVMZW5ndGggPiBiaW5kaW5nLmNyeXB0b19rZGZfQllURVNfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ3N1YmtleScpCiAgaWYgKGN0eD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fa2RmX0NPTlRFWFRCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdjdHgnKQogIGlmIChrZXk/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2tkZl9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrZXknKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19rZGZfZGVyaXZlX2Zyb21fa2V5KHN1YmtleSwgc3Via2V5SWQsIGN0eCwga2V5KQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKLy8gY3J5cHRvX2hhc2gKCmV4cG9ydHMuY3J5cHRvX2hhc2ggPSBmdW5jdGlvbiAob3V0LCBpbnB1dCkgewogIGlmIChvdXQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2hhc2hfQllURVMpIHRocm93IG5ldyBFcnJvcignb3V0JykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9faGFzaChvdXQsIGlucHV0KQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9faGFzaF9zaGEyNTYgPSBmdW5jdGlvbiAob3V0LCBpbnB1dCkgewogIGlmIChvdXQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2hhc2hfc2hhMjU2X0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2hhc2hfc2hhMjU2KG91dCwgaW5wdXQpCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19oYXNoX3NoYTI1Nl9pbml0ID0gZnVuY3Rpb24gKHN0YXRlKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19oYXNoX3NoYTI1Nl9TVEFURUJZVEVTKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19oYXNoX3NoYTI1Nl9TVEFURUJZVEVTJyBieXRlcyIpCiAgfQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19oYXNoX3NoYTI1Nl9pbml0KHN0YXRlKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9faGFzaF9zaGEyNTZfdXBkYXRlID0gZnVuY3Rpb24gKHN0YXRlLCBpbnB1dCkgewogIGlmIChzdGF0ZT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9faGFzaF9zaGEyNTZfU1RBVEVCWVRFUykgewogICAgdGhyb3cgbmV3IEVycm9yKCJzdGF0ZSBtdXN0IGJlICdjcnlwdG9faGFzaF9zaGEyNTZfU1RBVEVCWVRFUycgYnl0ZXMiKQogIH0KCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9faGFzaF9zaGEyNTZfdXBkYXRlKHN0YXRlLCBpbnB1dCkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX2hhc2hfc2hhMjU2X2ZpbmFsID0gZnVuY3Rpb24gKHN0YXRlLCBvdXQpIHsKICBpZiAoc3RhdGU/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2hhc2hfc2hhMjU2X1NUQVRFQllURVMpIHsKICAgIHRocm93IG5ldyBFcnJvcigic3RhdGUgbXVzdCBiZSAnY3J5cHRvX2hhc2hfc2hhMjU2X1NUQVRFQllURVMnIGJ5dGVzIikKICB9CiAgaWYgKG91dD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9faGFzaF9zaGEyNTZfQllURVMpIHRocm93IG5ldyBFcnJvcignc3RhdGUnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19oYXNoX3NoYTI1Nl9maW5hbChzdGF0ZSwgb3V0KQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9faGFzaF9zaGE1MTIgPSBmdW5jdGlvbiAob3V0LCBpbnB1dCkgewogIGlmIChvdXQ/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2hhc2hfc2hhNTEyX0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2hhc2hfc2hhNTEyKG91dCwgaW5wdXQpCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignc3RhdHVzOiAnICsgcmVzKQp9CgpleHBvcnRzLmNyeXB0b19oYXNoX3NoYTUxMl9pbml0ID0gZnVuY3Rpb24gKHN0YXRlKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19oYXNoX3NoYTUxMl9TVEFURUJZVEVTKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19oYXNoX3NoYTUxMl9TVEFURUJZVEVTJyBieXRlcyIpCiAgfQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19oYXNoX3NoYTUxMl9pbml0KHN0YXRlKQoKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ3N0YXR1czogJyArIHJlcykKfQoKZXhwb3J0cy5jcnlwdG9faGFzaF9zaGE1MTJfdXBkYXRlID0gZnVuY3Rpb24gKHN0YXRlLCBpbnB1dCkgewogIGlmIChzdGF0ZT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9faGFzaF9zaGE1MTJfU1RBVEVCWVRFUykgewogICAgdGhyb3cgbmV3IEVycm9yKCJzdGF0ZSBtdXN0IGJlICdjcnlwdG9faGFzaF9zaGE1MTJfU1RBVEVCWVRFUycgYnl0ZXMiKQogIH0KCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9faGFzaF9zaGE1MTJfdXBkYXRlKHN0YXRlLCBpbnB1dCkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCmV4cG9ydHMuY3J5cHRvX2hhc2hfc2hhNTEyX2ZpbmFsID0gZnVuY3Rpb24gKHN0YXRlLCBvdXQpIHsKICBpZiAoc3RhdGU/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2hhc2hfc2hhNTEyX1NUQVRFQllURVMpIHsKICAgIHRocm93IG5ldyBFcnJvcigic3RhdGUgbXVzdCBiZSAnY3J5cHRvX2hhc2hfc2hhNTEyX1NUQVRFQllURVMnIGJ5dGVzIikKICB9CiAgaWYgKG91dD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9faGFzaF9zaGE1MTJfQllURVMpIHRocm93IG5ldyBFcnJvcignb3V0JykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9faGFzaF9zaGE1MTJfZmluYWwoc3RhdGUsIG91dCkKCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdzdGF0dXM6ICcgKyByZXMpCn0KCi8vIGNyeXB0b19hZWFkCgpleHBvcnRzLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfa2V5Z2VuID0gZnVuY3Rpb24gKGspIHsKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fYWVhZF94Y2hhY2hhMjBwb2x5MTMwNV9pZXRmX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBiaW5kaW5nLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfa2V5Z2VuKGspCn0KCi8qKiBAcmV0dXJucyB7bnVtYmVyfSAqLwpleHBvcnRzLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfZW5jcnlwdCA9IGZ1bmN0aW9uIChjLCBtLCBhZCwgbnNlYyA9IG51bGwsIG5wdWIsIGspIHsKICBhZCA/Pz0gdW5kZWZpbmVkCiAgaWYgKG5zZWMgIT09IG51bGwpIHRocm93IG5ldyBFcnJvcignbnNlYyBtdXN0IGFsd2F5cyBiZSBzZXQgdG8gbnVsbCcpCiAgaWYgKGM/LmJ5dGVMZW5ndGggIT09IG0uYnl0ZUxlbmd0aCArIGJpbmRpbmcuY3J5cHRvX2FlYWRfeGNoYWNoYTIwcG9seTEzMDVfaWV0Zl9BQllURVMpIHRocm93IG5ldyBFcnJvcignYyBtdXN0ICJtLmJ5dGVMZW5ndGggKyBjcnlwdG9fYWVhZF94Y2hhY2hhMjBwb2x5MTMwNV9pZXRmX0FCWVRFUyIgYnl0ZXMnKQogIGlmIChjPy5ieXRlTGVuZ3RoID4gMHhmZmZmZmZmZikgdGhyb3cgbmV3IEVycm9yKCdjLmJ5dGVMZW5ndGggbXVzdCBiZSBhIDMyYml0IGludGVnZXInKQogIGlmIChucHViPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfTlBVQkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ25wdWInKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2FlYWRfeGNoYWNoYTIwcG9seTEzMDVfaWV0Zl9lbmNyeXB0KGMsIG0sIGFkLCBucHViLCBrKQogIGlmIChyZXMgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBlbmNyeXB0IGRhdGEnKQoKICByZXR1cm4gcmVzCn0KCi8qKiBAcmV0dXJucyB7bnVtYmVyfSAqLwpleHBvcnRzLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfZGVjcnlwdCA9IGZ1bmN0aW9uIChtLCBuc2VjID0gbnVsbCwgYywgYWQsIG5wdWIsIGspIHsKICBhZCA/Pz0gdW5kZWZpbmVkCiAgaWYgKG5zZWMgIT09IG51bGwpIHRocm93IG5ldyBFcnJvcignbnNlYyBtdXN0IGFsd2F5cyBiZSBzZXQgdG8gbnVsbCcpCiAgaWYgKG0/LmJ5dGVMZW5ndGggIT09IGMuYnl0ZUxlbmd0aCAtIGJpbmRpbmcuY3J5cHRvX2FlYWRfeGNoYWNoYTIwcG9seTEzMDVfaWV0Zl9BQllURVMpIHRocm93IG5ldyBFcnJvcignbSBtdXN0ICJjLmJ5dGVMZW5ndGggLSBjcnlwdG9fYWVhZF94Y2hhY2hhMjBwb2x5MTMwNV9pZXRmX0FCWVRFUyIgYnl0ZXMnKQogIGlmIChtPy5ieXRlTGVuZ3RoID4gMHhmZmZmZmZmZikgdGhyb3cgbmV3IEVycm9yKCdtLmJ5dGVMZW5ndGggbXVzdCBiZSBhIDMyYml0IGludGVnZXInKQogIGlmIChucHViPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfTlBVQkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ25wdWInKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2FlYWRfeGNoYWNoYTIwcG9seTEzMDVfaWV0Zl9kZWNyeXB0KG0sIGMsIGFkLCBucHViLCBrKQogIGlmIChyZXMgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCB2ZXJpZnkgZGF0YScpCgogIHJldHVybiByZXMKfQoKLyoqIEByZXR1cm5zIHtudW1iZXJ9ICovCmV4cG9ydHMuY3J5cHRvX2FlYWRfeGNoYWNoYTIwcG9seTEzMDVfaWV0Zl9lbmNyeXB0X2RldGFjaGVkID0gZnVuY3Rpb24gKGMsIG1hYywgbSwgYWQsIG5zZWMgPSBudWxsLCBucHViLCBrKSB7CiAgYWQgPz89IHVuZGVmaW5lZAogIGlmIChuc2VjICE9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ25zZWMgbXVzdCBhbHdheXMgYmUgc2V0IHRvIG51bGwnKQogIGlmIChjPy5ieXRlTGVuZ3RoICE9PSBtLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignYyBtdXN0IGJlICJtLmJ5dGVMZW5ndGgiIGJ5dGVzJykKICBpZiAobWFjPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfQUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ21hYycpCiAgaWYgKG5wdWI/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2FlYWRfeGNoYWNoYTIwcG9seTEzMDVfaWV0Zl9OUFVCQllURVMpIHRocm93IG5ldyBFcnJvcignbnB1YicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2FlYWRfeGNoYWNoYTIwcG9seTEzMDVfaWV0Zl9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgY29uc3QgcmVzID0gYmluZGluZy5jcnlwdG9fYWVhZF94Y2hhY2hhMjBwb2x5MTMwNV9pZXRmX2VuY3J5cHRfZGV0YWNoZWQoYywgbWFjLCBtLCBhZCwgbnB1YiwgaykKICBpZiAocmVzIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZW5jcnlwdCBkYXRhJykKCiAgcmV0dXJuIHJlcwp9CgpleHBvcnRzLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfZGVjcnlwdF9kZXRhY2hlZCA9IGZ1bmN0aW9uIChtLCBuc2VjID0gbnVsbCwgYywgbWFjLCBhZCwgbnB1YiwgaykgewogIGFkID8/PSB1bmRlZmluZWQKICBpZiAobnNlYyAhPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCduc2VjIG11c3QgYWx3YXlzIGJlIHNldCB0byBudWxsJykKICBpZiAobT8uYnl0ZUxlbmd0aCAhPT0gYy5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ20gbXVzdCBiZSAiYy5ieXRlTGVuZ3RoIiBieXRlcycpCiAgaWYgKG1hYz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fYWVhZF94Y2hhY2hhMjBwb2x5MTMwNV9pZXRmX0FCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdtYWMnKQogIGlmIChucHViPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfTlBVQkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ25wdWInKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX3hjaGFjaGEyMHBvbHkxMzA1X2lldGZfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2FlYWRfeGNoYWNoYTIwcG9seTEzMDVfaWV0Zl9kZWNyeXB0X2RldGFjaGVkKG0sIGMsIG1hYywgYWQsIG5wdWIsIGspCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgdmVyaWZ5IGRhdGEnKQp9CgpleHBvcnRzLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9rZXlnZW4gPSBmdW5jdGlvbiAoaykgewogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgYmluZGluZy5jcnlwdG9fYWVhZF9jaGFjaGEyMHBvbHkxMzA1X2lldGZfa2V5Z2VuKGspCn0KCi8qKiBAcmV0dXJucyB7bnVtYmVyfSAqLwpleHBvcnRzLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9lbmNyeXB0ID0gZnVuY3Rpb24gKGMsIG0sIGFkLCBuc2VjID0gbnVsbCwgbnB1YiwgaykgewogIGFkID8/PSB1bmRlZmluZWQKICBpZiAobnNlYyAhPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCduc2VjIG11c3QgYWx3YXlzIGJlIHNldCB0byBudWxsJykKICBpZiAoYz8uYnl0ZUxlbmd0aCAhPT0gbS5ieXRlTGVuZ3RoICsgYmluZGluZy5jcnlwdG9fYWVhZF9jaGFjaGEyMHBvbHkxMzA1X2lldGZfQUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2MgbXVzdCAibS5ieXRlTGVuZ3RoICsgY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX0FCWVRFUyIgYnl0ZXMnKQogIGlmIChjPy5ieXRlTGVuZ3RoID4gMHhmZmZmZmZmZikgdGhyb3cgbmV3IEVycm9yKCdjLmJ5dGVMZW5ndGggbXVzdCBiZSBhIDMyYml0IGludGVnZXInKQogIGlmIChucHViPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9OUFVCQllURVMpIHRocm93IG5ldyBFcnJvcignbnB1YicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9lbmNyeXB0KGMsIG0sIGFkLCBucHViLCBrKQogIGlmIChyZXMgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBlbmNyeXB0IGRhdGEnKQoKICByZXR1cm4gcmVzCn0KCi8qKiBAcmV0dXJucyB7bnVtYmVyfSAqLwpleHBvcnRzLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9kZWNyeXB0ID0gZnVuY3Rpb24gKG0sIG5zZWMgPSBudWxsLCBjLCBhZCwgbnB1YiwgaykgewogIGFkID8/PSB1bmRlZmluZWQKICBpZiAobnNlYyAhPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCduc2VjIG11c3QgYWx3YXlzIGJlIHNldCB0byBudWxsJykKICBpZiAobT8uYnl0ZUxlbmd0aCAhPT0gYy5ieXRlTGVuZ3RoIC0gYmluZGluZy5jcnlwdG9fYWVhZF9jaGFjaGEyMHBvbHkxMzA1X2lldGZfQUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ20gbXVzdCAiYy5ieXRlTGVuZ3RoIC0gY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX0FCWVRFUyIgYnl0ZXMnKQogIGlmIChtPy5ieXRlTGVuZ3RoID4gMHhmZmZmZmZmZikgdGhyb3cgbmV3IEVycm9yKCdtLmJ5dGVMZW5ndGggbXVzdCBiZSBhIDMyYml0IGludGVnZXInKQogIGlmIChucHViPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9OUFVCQllURVMpIHRocm93IG5ldyBFcnJvcignbnB1YicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9kZWNyeXB0KG0sIGMsIGFkLCBucHViLCBrKQogIGlmIChyZXMgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCB2ZXJpZnkgZGF0YScpCgogIHJldHVybiByZXMKfQoKLyoqIEByZXR1cm5zIHtudW1iZXJ9ICovCmV4cG9ydHMuY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX2VuY3J5cHRfZGV0YWNoZWQgPSBmdW5jdGlvbiAoYywgbWFjLCBtLCBhZCwgbnNlYyA9IG51bGwsIG5wdWIsIGspIHsKICBhZCA/Pz0gdW5kZWZpbmVkCiAgaWYgKG5zZWMgIT09IG51bGwpIHRocm93IG5ldyBFcnJvcignbnNlYyBtdXN0IGFsd2F5cyBiZSBzZXQgdG8gbnVsbCcpCiAgaWYgKGM/LmJ5dGVMZW5ndGggIT09IG0uYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdjIG11c3QgYmUgIm0uYnl0ZUxlbmd0aCIgYnl0ZXMnKQogIGlmIChtYWM/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX0FCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdtYWMnKQogIGlmIChucHViPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9OUFVCQllURVMpIHRocm93IG5ldyBFcnJvcignbnB1YicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmNyeXB0b19hZWFkX2NoYWNoYTIwcG9seTEzMDVfaWV0Zl9lbmNyeXB0X2RldGFjaGVkKGMsIG1hYywgbSwgYWQsIG5wdWIsIGspCiAgaWYgKHJlcyA8IDApIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGVuY3J5cHQgZGF0YScpCgogIHJldHVybiByZXMKfQoKZXhwb3J0cy5jcnlwdG9fYWVhZF9jaGFjaGEyMHBvbHkxMzA1X2lldGZfZGVjcnlwdF9kZXRhY2hlZCA9IGZ1bmN0aW9uIChtLCBuc2VjID0gbnVsbCwgYywgbWFjLCBhZCwgbnB1YiwgaykgewogIGFkID8/PSB1bmRlZmluZWQKICBpZiAobnNlYyAhPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCduc2VjIG11c3QgYWx3YXlzIGJlIHNldCB0byBudWxsJykKICBpZiAobT8uYnl0ZUxlbmd0aCAhPT0gYy5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ20gbXVzdCBiZSAiYy5ieXRlTGVuZ3RoIiBieXRlcycpCiAgaWYgKG1hYz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fYWVhZF9jaGFjaGEyMHBvbHkxMzA1X2lldGZfQUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ21hYycpCiAgaWYgKG5wdWI/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX05QVUJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCducHViJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fYWVhZF9jaGFjaGEyMHBvbHkxMzA1X2lldGZfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuY3J5cHRvX2FlYWRfY2hhY2hhMjBwb2x5MTMwNV9pZXRmX2RlY3J5cHRfZGV0YWNoZWQobSwgYywgbWFjLCBhZCwgbnB1YiwgaykKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCB2ZXJpZnkgZGF0YScpCn0KCi8vIGNyeXB0b19zdHJlYW0KCmV4cG9ydHMuY3J5cHRvX3N0cmVhbV94b3Jfd3JhcF9pbml0ID0gZnVuY3Rpb24gKHN0YXRlLCBuLCBrKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLnNuX2NyeXB0b19zdHJlYW1feG9yX1NUQVRFQllURVMpIHsKICAgIHRocm93IG5ldyBFcnJvcigic3RhdGUgbXVzdCBiZSAnc25fY3J5cHRvX3N0cmVhbV94b3JfU1RBVEVCWVRFUycgYnl0ZXMiKQogIH0KICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgYmluZGluZy5jcnlwdG9fc3RyZWFtX3hvcl93cmFwX2luaXQoc3RhdGUsIG4sIGspCn0KCmV4cG9ydHMuY3J5cHRvX3N0cmVhbV94b3Jfd3JhcF91cGRhdGUgPSBmdW5jdGlvbiAoc3RhdGUsIGMsIG0pIHsKICBpZiAoc3RhdGU/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuc25fY3J5cHRvX3N0cmVhbV94b3JfU1RBVEVCWVRFUykgewogICAgdGhyb3cgbmV3IEVycm9yKCJzdGF0ZSBtdXN0IGJlICdzbl9jcnlwdG9fc3RyZWFtX3hvcl9TVEFURUJZVEVTJyBieXRlcyIpCiAgfQogIGlmIChjPy5ieXRlTGVuZ3RoICE9PSBtLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignYyBtdXN0IGJlICJtLmJ5dGVMZW5ndGgiIGJ5dGVzJykKCiAgYmluZGluZy5jcnlwdG9fc3RyZWFtX3hvcl93cmFwX3VwZGF0ZShzdGF0ZSwgYywgbSkKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX3hvcl93cmFwX2ZpbmFsID0gZnVuY3Rpb24gKHN0YXRlKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLnNuX2NyeXB0b19zdHJlYW1feG9yX1NUQVRFQllURVMpIHsKICAgIHRocm93IG5ldyBFcnJvcigic3RhdGUgbXVzdCBiZSAnc25fY3J5cHRvX3N0cmVhbV94b3JfU1RBVEVCWVRFUycgYnl0ZXMiKQogIH0KCiAgYmluZGluZy5jcnlwdG9fc3RyZWFtX3hvcl93cmFwX2ZpbmFsKHN0YXRlKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfeG9yX3dyYXBfaW5pdCA9IGZ1bmN0aW9uIChzdGF0ZSwgbiwgaykgewogIGlmIChzdGF0ZT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX3hvcl9TVEFURUJZVEVTKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19zdHJlYW1fY2hhY2hhMjBfeG9yX1NUQVRFQllURVMnIGJ5dGVzIikKICB9CiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9OT05DRUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ24nKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignaycpCgogIGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF94b3Jfd3JhcF9pbml0KHN0YXRlLCBuLCBrKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfeG9yX3dyYXBfdXBkYXRlID0gZnVuY3Rpb24gKHN0YXRlLCBjLCBtKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfeG9yX1NUQVRFQllURVMpIHsKICAgIHRocm93IG5ldyBFcnJvcigic3RhdGUgbXVzdCBiZSAnY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF94b3JfU1RBVEVCWVRFUycgYnl0ZXMiKQogIH0KICBpZiAoYz8uYnl0ZUxlbmd0aCAhPT0gbS5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ2MgbXVzdCBiZSAibS5ieXRlTGVuZ3RoIiBieXRlcycpCgogIGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF94b3Jfd3JhcF91cGRhdGUoc3RhdGUsIGMsIG0pCn0KCmV4cG9ydHMuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF94b3Jfd3JhcF9maW5hbCA9IGZ1bmN0aW9uIChzdGF0ZSkgewogIGlmIChzdGF0ZT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX3hvcl9TVEFURUJZVEVTKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19zdHJlYW1fY2hhY2hhMjBfeG9yX1NUQVRFQllURVMnIGJ5dGVzIikKICB9CgogIGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF94b3Jfd3JhcF9maW5hbChzdGF0ZSkKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfeG9yX3dyYXBfaW5pdCA9IGZ1bmN0aW9uIChzdGF0ZSwgbiwgaykgewogIGlmIChzdGF0ZT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfeG9yX1NUQVRFQllURVMpIHsKICAgIHRocm93IG5ldyBFcnJvcigic3RhdGUgbXVzdCBiZSAnY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9pZXRmX3hvcl9TVEFURUJZVEVTJyBieXRlcyIpCiAgfQogIGlmIChuPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfaWV0Zl9OT05DRUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ24nKQogIGlmIChrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfaWV0Zl9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgYmluZGluZy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfeG9yX3dyYXBfaW5pdChzdGF0ZSwgbiwgaykKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfeG9yX3dyYXBfdXBkYXRlID0gZnVuY3Rpb24gKHN0YXRlLCBjLCBtKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfaWV0Zl94b3JfU1RBVEVCWVRFUykgewogICAgdGhyb3cgbmV3IEVycm9yKCJzdGF0ZSBtdXN0IGJlICdjcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfeG9yX1NUQVRFQllURVMnIGJ5dGVzIikKICB9CiAgaWYgKGM/LmJ5dGVMZW5ndGggIT09IG0uYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdjIG11c3QgYmUgIm0uYnl0ZUxlbmd0aCIgYnl0ZXMnKQoKICBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfaWV0Zl94b3Jfd3JhcF91cGRhdGUoc3RhdGUsIGMsIG0pCn0KCmV4cG9ydHMuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9pZXRmX3hvcl93cmFwX2ZpbmFsID0gZnVuY3Rpb24gKHN0YXRlKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fY2hhY2hhMjBfaWV0Zl94b3JfU1RBVEVCWVRFUykgewogICAgdGhyb3cgbmV3IEVycm9yKCJzdGF0ZSBtdXN0IGJlICdjcnlwdG9fc3RyZWFtX2NoYWNoYTIwX2lldGZfeG9yX1NUQVRFQllURVMnIGJ5dGVzIikKICB9CgogIGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9jaGFjaGEyMF9pZXRmX3hvcl93cmFwX2ZpbmFsKHN0YXRlKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1feGNoYWNoYTIwX3hvcl93cmFwX2luaXQgPSBmdW5jdGlvbiAoc3RhdGUsIG4sIGspIHsKICBpZiAoc3RhdGU/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV94Y2hhY2hhMjBfeG9yX1NUQVRFQllURVMpIHsKICAgIHRocm93IG5ldyBFcnJvcigic3RhdGUgbXVzdCBiZSAnY3J5cHRvX3N0cmVhbV94Y2hhY2hhMjBfeG9yX1NUQVRFQllURVMnIGJ5dGVzIikKICB9CiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV94Y2hhY2hhMjBfTk9OQ0VCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAoaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdrJykKCiAgYmluZGluZy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF94b3Jfd3JhcF9pbml0KHN0YXRlLCBuLCBrKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1feGNoYWNoYTIwX3hvcl93cmFwX3VwZGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgYywgbSkgewogIGlmIChzdGF0ZT8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF94b3JfU1RBVEVCWVRFUykgewogICAgdGhyb3cgbmV3IEVycm9yKCJzdGF0ZSBtdXN0IGJlICdjcnlwdG9fc3RyZWFtX3hjaGFjaGEyMF94b3JfU1RBVEVCWVRFUycgYnl0ZXMiKQogIH0KICBpZiAoYz8uYnl0ZUxlbmd0aCAhPT0gbS5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ2MgbXVzdCBiZSAibS5ieXRlTGVuZ3RoIiBieXRlcycpCgogIGJpbmRpbmcuY3J5cHRvX3N0cmVhbV94Y2hhY2hhMjBfeG9yX3dyYXBfdXBkYXRlKHN0YXRlLCBjLCBtKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1feGNoYWNoYTIwX3hvcl93cmFwX2ZpbmFsID0gZnVuY3Rpb24gKHN0YXRlKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1feGNoYWNoYTIwX3hvcl9TVEFURUJZVEVTKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19zdHJlYW1feGNoYWNoYTIwX3hvcl9TVEFURUJZVEVTJyBieXRlcyIpCiAgfQoKICBiaW5kaW5nLmNyeXB0b19zdHJlYW1feGNoYWNoYTIwX3hvcl93cmFwX2ZpbmFsKHN0YXRlKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3Jfd3JhcF9pbml0ID0gZnVuY3Rpb24gKHN0YXRlLCBuLCBrKSB7CiAgaWYgKHN0YXRlPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmNyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3JfU1RBVEVCWVRFUykgewogICAgdGhyb3cgbmV3IEVycm9yKCJzdGF0ZSBtdXN0IGJlICdjcnlwdG9fc3RyZWFtX3NhbHNhMjBfeG9yX1NUQVRFQllURVMnIGJ5dGVzIikKICB9CiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2snKQoKICBiaW5kaW5nLmNyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3Jfd3JhcF9pbml0KHN0YXRlLCBuLCBrKQp9CgpleHBvcnRzLmNyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3Jfd3JhcF91cGRhdGUgPSBmdW5jdGlvbiAoc3RhdGUsIGMsIG0pIHsKICBpZiAoc3RhdGU/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX3hvcl9TVEFURUJZVEVTKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3JfU1RBVEVCWVRFUycgYnl0ZXMiKQogIH0KICBpZiAoYz8uYnl0ZUxlbmd0aCAhPT0gbS5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ2MgbXVzdCBiZSAibS5ieXRlTGVuZ3RoIiBieXRlcycpCgogIGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX3hvcl93cmFwX3VwZGF0ZShzdGF0ZSwgYywgbSkKfQoKZXhwb3J0cy5jcnlwdG9fc3RyZWFtX3NhbHNhMjBfeG9yX3dyYXBfZmluYWwgPSBmdW5jdGlvbiAoc3RhdGUpIHsKICBpZiAoc3RhdGU/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3N0cmVhbV9zYWxzYTIwX3hvcl9TVEFURUJZVEVTKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoInN0YXRlIG11c3QgYmUgJ2NyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3JfU1RBVEVCWVRFUycgYnl0ZXMiKQogIH0KCiAgYmluZGluZy5jcnlwdG9fc3RyZWFtX3NhbHNhMjBfeG9yX3dyYXBfZmluYWwoc3RhdGUpCn0KCi8vIGV4cGVyaW1lbnRhbAoKZXhwb3J0cy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9iYXNlID0gZnVuY3Rpb24gKG4sIHAsIG5zKSB7CiAgaWYgKG4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuZXh0ZW5zaW9uX3R3ZWFrX2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcignbicpCiAgaWYgKHA/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuZXh0ZW5zaW9uX3R3ZWFrX2VkMjU1MTlfQllURVMpIHRocm93IG5ldyBFcnJvcigncCcpCgogIGJpbmRpbmcuZXh0ZW5zaW9uX3R3ZWFrX2VkMjU1MTlfYmFzZShuLCBwLCBucykKfQoKZXhwb3J0cy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9zaWduX2RldGFjaGVkID0gZnVuY3Rpb24gKHNpZywgbSwgc2NhbGFyLCBwaykgewogIGlmIChzaWc/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fQllURVMpIHRocm93IG5ldyBFcnJvcignc2lnJykKICBpZiAoc2NhbGFyPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3NjYWxhcicpCiAgaWYgKHBrICYmIHBrLmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigncGsnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X3NpZ25fZGV0YWNoZWQoc2lnLCBtLCBzY2FsYXIsIHBrKQogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGNvbXB1dGUgc2lnbmF0dXJlJykKfQoKZXhwb3J0cy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9za190b19zY2FsYXIgPSBmdW5jdGlvbiAobiwgc2spIHsKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKICBpZiAoc2s/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMpIHRocm93IG5ldyBFcnJvcignc2snKQoKICBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X3NrX3RvX3NjYWxhcihuLCBzaykKfQoKZXhwb3J0cy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9zY2FsYXIgPSBmdW5jdGlvbiAoc2NhbGFyT3V0LCBzY2FsYXIsIG5zKSB7CiAgaWYgKHNjYWxhck91dD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzY2FsYXJfb3V0JykKICBpZiAoc2NhbGFyPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3NjYWxhcicpCgogIGJpbmRpbmcuZXh0ZW5zaW9uX3R3ZWFrX2VkMjU1MTlfc2NhbGFyKHNjYWxhck91dCwgc2NhbGFyLCBucykKfQoKZXhwb3J0cy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9wayA9IGZ1bmN0aW9uICh0cGssIHBrLCBucykgewogIGlmICh0cGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigndHBrJykKICBpZiAocGs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigncGsnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X3BrKHRwaywgcGssIG5zKQogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIHR3ZWFrIHB1YmxpYyBrZXknKQp9CgpleHBvcnRzLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X2tleXBhaXIgPSBmdW5jdGlvbiAocGssIHNjYWxhck91dCwgc2NhbGFySW4sIG5zKSB7CiAgaWYgKHBrPy5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X0JZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3BrJykKICBpZiAoc2NhbGFyT3V0Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3NjYWxhcl9vdXQnKQogIGlmIChzY2FsYXJJbj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzY2FsYXJfaW4nKQoKICBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X2tleXBhaXIocGssIHNjYWxhck91dCwgc2NhbGFySW4sIG5zKQp9CgpleHBvcnRzLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X3NjYWxhcl9hZGQgPSBmdW5jdGlvbiAoc2NhbGFyT3V0LCBzY2FsYXIsIG4pIHsKICBpZiAoc2NhbGFyT3V0Py5ieXRlTGVuZ3RoICE9PSBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X1NDQUxBUkJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ3NjYWxhcl9vdXQnKQogIGlmIChzY2FsYXI/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuZXh0ZW5zaW9uX3R3ZWFrX2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcignc2NhbGFyJykKICBpZiAobj8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCduJykKCiAgYmluZGluZy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9zY2FsYXJfYWRkKHNjYWxhck91dCwgc2NhbGFyLCBuKQp9CgpleHBvcnRzLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X3BrX2FkZCA9IGZ1bmN0aW9uICh0cGssIHBrLCBwKSB7CiAgaWYgKHRwaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2lnbl9QVUJMSUNLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCd0cGsnKQogIGlmIChwaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5jcnlwdG9fc2lnbl9QVUJMSUNLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdwaycpCiAgaWYgKHA/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpIHRocm93IG5ldyBFcnJvcigncCcpCgogIGNvbnN0IHJlcyA9IGJpbmRpbmcuZXh0ZW5zaW9uX3R3ZWFrX2VkMjU1MTlfcGtfYWRkKHRwaywgcGssIHApCiAgaWYgKHJlcyAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gYWRkIHR3ZWFrIHRvIHB1YmxpYyBrZXknKQp9CgpleHBvcnRzLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X2tleXBhaXJfYWRkID0gZnVuY3Rpb24gKHBrLCBzY2FsYXJPdXQsIHNjYWxhckluLCB0d2VhaykgewogIGlmIChwaz8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9CWVRFUykgdGhyb3cgbmV3IEVycm9yKCdwaycpCiAgaWYgKHNjYWxhck91dD8uYnl0ZUxlbmd0aCAhPT0gYmluZGluZy5leHRlbnNpb25fdHdlYWtfZWQyNTUxOV9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdzY2FsYXJfb3V0JykKICBpZiAoc2NhbGFySW4/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuZXh0ZW5zaW9uX3R3ZWFrX2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcignc2NhbGFyX2luJykKICBpZiAodHdlYWs/LmJ5dGVMZW5ndGggIT09IGJpbmRpbmcuZXh0ZW5zaW9uX3R3ZWFrX2VkMjU1MTlfU0NBTEFSQllURVMpIHRocm93IG5ldyBFcnJvcigndHdlYWsnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmV4dGVuc2lvbl90d2Vha19lZDI1NTE5X2tleXBhaXJfYWRkKHBrLCBzY2FsYXJPdXQsIHNjYWxhckluLCB0d2VhaykKICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBhZGQgdHdlYWsgdG8ga2V5cGFpcicpCn0KCi8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPnx1bmRlZmluZWR9ICovCmV4cG9ydHMuZXh0ZW5zaW9uX3Bia2RmMl9zaGE1MTJfYXN5bmMgPSBmdW5jdGlvbiAob3V0LCBwYXNzd2QsIHNhbHQsIGl0ZXIsIG91dGxlbiwgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsKICBpZiAoaXRlciA8IGJpbmRpbmcuZXh0ZW5zaW9uX3Bia2RmMl9zaGE1MTJfSVRFUkFUSU9OU19NSU4pIHRocm93IG5ldyBFcnJvcignaXRlcmF0aW9ucycpCiAgaWYgKG91dGxlbiA+IGJpbmRpbmcuZXh0ZW5zaW9uX3Bia2RmMl9zaGE1MTJfQllURVNfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ291dGxlbicpCiAgaWYgKG91dD8uYnl0ZUxlbmd0aCA8IG91dGxlbikgdGhyb3cgbmV3IEVycm9yKCdvdXQnKQogIGlmICghb3V0Py5ieXRlTGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ291dCcpCiAgaWYgKCFwYXNzd2Q/LmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcigncGFzc3dkJykKICBpZiAoIXNhbHQ/LmJ5dGVMZW5ndGgpIHRocm93IG5ldyBFcnJvcignc2FsdCcpCgogIGNvbnN0IFtkb25lLCBwcm9taXNlXSA9IGNoZWNrU3RhdHVzKGNhbGxiYWNrKQoKICBiaW5kaW5nLmV4dGVuc2lvbl9wYmtkZjJfc2hhNTEyX2FzeW5jKAogICAgb3V0LmJ1ZmZlciwKICAgIG91dC5ieXRlT2Zmc2V0LAogICAgb3V0LmJ5dGVMZW5ndGgsCgogICAgcGFzc3dkLmJ1ZmZlciwKICAgIHBhc3N3ZC5ieXRlT2Zmc2V0LAogICAgcGFzc3dkLmJ5dGVMZW5ndGgsCgogICAgc2FsdC5idWZmZXIsCiAgICBzYWx0LmJ5dGVPZmZzZXQsCiAgICBzYWx0LmJ5dGVMZW5ndGgsCgogICAgaXRlciwKICAgIG91dGxlbiwKCiAgICBkb25lCiAgKQoKICByZXR1cm4gcHJvbWlzZQp9CgpleHBvcnRzLmV4dGVuc2lvbl9wYmtkZjJfc2hhNTEyID0gZnVuY3Rpb24gKG91dCwgcGFzc3dkLCBzYWx0LCBpdGVyLCBvdXRsZW4pIHsKICBpZiAoaXRlciA8IGJpbmRpbmcuZXh0ZW5zaW9uX3Bia2RmMl9zaGE1MTJfSVRFUkFUSU9OU19NSU4pIHRocm93IG5ldyBFcnJvcignaXRlcmF0aW9ucycpCiAgaWYgKG91dGxlbiA+IGJpbmRpbmcuZXh0ZW5zaW9uX3Bia2RmMl9zaGE1MTJfQllURVNfTUFYKSB0aHJvdyBuZXcgRXJyb3IoJ291dGxlbicpCiAgaWYgKG91dD8uYnl0ZUxlbmd0aCA8IG91dGxlbikgdGhyb3cgbmV3IEVycm9yKCdvdXQnKQoKICBjb25zdCByZXMgPSBiaW5kaW5nLmV4dGVuc2lvbl9wYmtkZjJfc2hhNTEyKG91dCwgcGFzc3dkLCBzYWx0LCBpdGVyLCBvdXRsZW4pCgogIGlmIChyZXMgIT09IDApIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGFkZCB0d2VhayB0byBwdWJsaWMga2V5JykKfQoKLy8gbWltaWMgNC54IHB1YmxpYyBhcGkKZnVuY3Rpb24gY2hlY2tTdGF0dXMgKGNhbGxiYWNrLCBib29sZWFuUmVzdWx0ID0gZmFsc2UpIHsKICBsZXQgZG9uZSwgcHJvbWlzZQoKICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7CiAgICBkb25lID0gZnVuY3Rpb24gKHN0YXR1cykgewogICAgICBpZiAoYm9vbGVhblJlc3VsdCkgY2FsbGJhY2sobnVsbCwgc3RhdHVzID09PSAwKQogICAgICBlbHNlIGlmIChzdGF0dXMgPT09IDApIGNhbGxiYWNrKG51bGwpCiAgICAgIGVsc2UgY2FsbGJhY2sobmV3IEVycm9yKCdzdGF0dXM6ICcgKyBzdGF0dXMpKQogICAgfQogIH0gZWxzZSB7CiAgICBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBkb25lID0gZnVuY3Rpb24gKHN0YXR1cykgewogICAgICAgIGlmIChib29sZWFuUmVzdWx0KSByZXNvbHZlKHN0YXR1cyA9PT0gMCkKICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT09IDApIHJlc29sdmUoKQogICAgICAgIGVsc2UgcmVqZWN0KG5ldyBFcnJvcignc3RhdHVzOiAnICsgc3RhdHVzKSkKICAgICAgfQogICAgfSkKICB9CgogIHJldHVybiBbZG9uZSwgcHJvbWlzZV0KfQp7CiAgIm5hbWUiOiAic29kaXVtLW5hdGl2ZSIsCiAgInZlcnNpb24iOiAiNS4wLjYiLAogICJkZXNjcmlwdGlvbiI6ICJMb3cgbGV2ZWwgYmluZGluZ3MgZm9yIGxpYnNvZGl1bSIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIsCiAgICAiYmluZGluZy5jYyIsCiAgICAiYmluZGluZy5qcyIsCiAgICAiZXh0ZW5zaW9ucyIsCiAgICAicHJlYnVpbGRzIiwKICAgICJDTWFrZUxpc3RzLnR4dCIKICBdLAogICJhZGRvbiI6IHRydWUsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJyZXF1aXJlLWFkZG9uIjogIl4xLjEuMCIsCiAgICAid2hpY2gtcnVudGltZSI6ICJeMS4yLjEiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtY29tcGF0LW5hcGkiOiAiXjEuMy41IiwKICAgICJicml0dGxlIjogIl4zLjE2LjIiLAogICAgImNtYWtlLWJhcmUiOiAiXjEuNi4xIiwKICAgICJjbWFrZS1mZXRjaCI6ICJeMS40LjMiLAogICAgImNtYWtlLW5hcGkiOiAiXjEuMi4xIiwKICAgICJzdGFuZGFyZCI6ICJeMTcuMS4yIgogIH0sCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJzdGFuZGFyZCAmJiBucG0gcnVuIHRlc3Q6bm9kZSAmJiBucG0gcnVuIHRlc3Q6YmFyZSIsCiAgICAidGVzdDpub2RlIjogIm5vZGUgdGVzdC9hbGwuanMiLAogICAgInRlc3Q6YmFyZSI6ICJiYXJlIHRlc3QvYWxsLmpzIgogIH0sCiAgInN0YW5kYXJkIjogewogICAgImlnbm9yZSI6IFsKICAgICAgIi90ZXN0L2ZpeHR1cmVzLyouanMiCiAgICBdCiAgfSwKICAiZW5naW5lcyI6IHsKICAgICJiYXJlIjogIj49MS4xNi4wIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3NvZGl1bS1uYXRpdmUuZ2l0IgogIH0sCiAgImNvbnRyaWJ1dG9ycyI6IFsKICAgICJFbWlsIEJheSA8Z2l0aHViQHRpeHouZGs+IChodHRwOi8vYmF5ZXMuZGspIiwKICAgICJNYXRoaWFzIEJ1dXMgPG1hdGhpYXNidXVzQGdtYWlsLmNvbT4gKGh0dHBzOi8vbWFmaW50by5zaCkiLAogICAgIkNocmlzdG9waGUgRGllZGVyaWNocyA8Y2htLWRpZWRlcmljaHNAaHlwZXJkaXZpc2lvbi5kaz4iCiAgXSwKICAibGljZW5zZSI6ICJNSVQiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vc29kaXVtLW5hdGl2ZS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3NvZGl1bS1uYXRpdmUiCn0KbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCdzb2RpdW0tbmF0aXZlJykKewogICJuYW1lIjogInNvZGl1bS11bml2ZXJzYWwiLAogICJ2ZXJzaW9uIjogIjUuMC4xIiwKICAiZGVzY3JpcHRpb24iOiAiVW5pdmVyc2FsIHdyYXBwZXIgZm9yIHNvZGl1bS1qYXZhc2NyaXB0IGFuZCBzb2RpdW0tbmF0aXZlIHdvcmtpbmcgaW4gTm9kZS5qcyBhbmQgdGhlIEJyb3dzZXIiLAogICJtYWluIjogImluZGV4LmpzIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgInNvZGl1bS1uYXRpdmUiOiAiXjUuMC4xIgogIH0sCiAgInBlZXJEZXBlbmRlbmNpZXMiOiB7CiAgICAic29kaXVtLWphdmFzY3JpcHQiOiAifjAuOC4wIgogIH0sCiAgInBlZXJEZXBlbmRlbmNpZXNNZXRhIjogewogICAgInNvZGl1bS1qYXZhc2NyaXB0IjogewogICAgICAib3B0aW9uYWwiOiB0cnVlCiAgICB9CiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJwcmVwdWJsaXNoIjogIi4vYnVpbGQtc2NyaXB0cy9nZW5lcmF0ZS5qcyIKICB9LAogICJicm93c2VyIjogewogICAgInNvZGl1bS1uYXRpdmUiOiAic29kaXVtLWphdmFzY3JpcHQiCiAgfSwKICAiYnJvd3NlcmlmeSI6IHsKICAgICJ0cmFuc2Zvcm0iOiBbCiAgICAgICIuL2J1aWxkLXNjcmlwdHMvdHJhbnNmb3JtLmpzIgogICAgXQogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3NvZGl1bS11bml2ZXJzYWwuZ2l0IgogIH0sCiAgImtleXdvcmRzIjogWwogICAgImxpYnNvZGl1bSIsCiAgICAic29kaXVtIiwKICAgICJzb2RpdW0tbmF0aXZlIiwKICAgICJzb2RpdW0tamF2YXNjcmlwdCIsCiAgICAiYnJvd3NlcmlmeSIKICBdLAogICJjb250cmlidXRvcnMiOiBbCiAgICAiRW1pbCBCYXkgPGdpdGh1YkB0aXh6LmRrPiAoaHR0cDovL2JheWVzLmRrKSIsCiAgICAiTWF0aGlhcyBCdXVzIDxtYXRoaWFzYnV1c0BnbWFpbC5jb20+IChodHRwczovL21hZmludG8uc2gpIiwKICAgICJDaHJpc3RvcGhlIERpZWRlcmljaHMgPGNobS1kaWVkZXJpY2hzQGh5cGVyZGl2aXNpb24uZGs+IgogIF0sCiAgImxpY2Vuc2UiOiAiTUlUIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3NvZGl1bS11bml2ZXJzYWwvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by9zb2RpdW0tdW5pdmVyc2FsI3JlYWRtZSIKfQpjb25zdCB7IEV2ZW50RW1pdHRlciB9ID0gcmVxdWlyZSgnZXZlbnRzJykKY29uc3QgU1RSRUFNX0RFU1RST1lFRCA9IG5ldyBFcnJvcignU3RyZWFtIHdhcyBkZXN0cm95ZWQnKQpjb25zdCBQUkVNQVRVUkVfQ0xPU0UgPSBuZXcgRXJyb3IoJ1ByZW1hdHVyZSBjbG9zZScpCgpjb25zdCBGSUZPID0gcmVxdWlyZSgnZmFzdC1maWZvJykKY29uc3QgVGV4dERlY29kZXIgPSByZXF1aXJlKCd0ZXh0LWRlY29kZXInKQoKLyogZXNsaW50LWRpc2FibGUgbm8tbXVsdGktc3BhY2VzICovCgovLyAyOSBiaXRzIHVzZWQgdG90YWwgKDQgZnJvbSBzaGFyZWQsIDE0IGZyb20gcmVhZCwgYW5kIDExIGZyb20gd3JpdGUpCmNvbnN0IE1BWCA9ICgoMSA8PCAyOSkgLSAxKQoKLy8gU2hhcmVkIHN0YXRlCmNvbnN0IE9QRU5JTkcgICAgICAgPSAwYjAwMDEKY29uc3QgUFJFREVTVFJPWUlORyA9IDBiMDAxMApjb25zdCBERVNUUk9ZSU5HICAgID0gMGIwMTAwCmNvbnN0IERFU1RST1lFRCAgICAgPSAwYjEwMDAKCmNvbnN0IE5PVF9PUEVOSU5HID0gTUFYIF4gT1BFTklORwpjb25zdCBOT1RfUFJFREVTVFJPWUlORyA9IE1BWCBeIFBSRURFU1RST1lJTkcKCi8vIFJlYWQgc3RhdGUgKDQgYml0IG9mZnNldCBmcm9tIHNoYXJlZCBzdGF0ZSkKY29uc3QgUkVBRF9BQ1RJVkUgICAgICAgICAgID0gMGIwMDAwMDAwMDAwMDAwMSA8PCA0CmNvbnN0IFJFQURfVVBEQVRJTkcgICAgICAgICA9IDBiMDAwMDAwMDAwMDAwMTAgPDwgNApjb25zdCBSRUFEX1BSSU1BUlkgICAgICAgICAgPSAwYjAwMDAwMDAwMDAwMTAwIDw8IDQKY29uc3QgUkVBRF9RVUVVRUQgICAgICAgICAgID0gMGIwMDAwMDAwMDAwMTAwMCA8PCA0CmNvbnN0IFJFQURfUkVTVU1FRCAgICAgICAgICA9IDBiMDAwMDAwMDAwMTAwMDAgPDwgNApjb25zdCBSRUFEX1BJUEVfRFJBSU5FRCAgICAgPSAwYjAwMDAwMDAwMTAwMDAwIDw8IDQKY29uc3QgUkVBRF9FTkRJTkcgICAgICAgICAgID0gMGIwMDAwMDAwMTAwMDAwMCA8PCA0CmNvbnN0IFJFQURfRU1JVF9EQVRBICAgICAgICA9IDBiMDAwMDAwMTAwMDAwMDAgPDwgNApjb25zdCBSRUFEX0VNSVRfUkVBREFCTEUgICAgPSAwYjAwMDAwMTAwMDAwMDAwIDw8IDQKY29uc3QgUkVBRF9FTUlUVEVEX1JFQURBQkxFID0gMGIwMDAwMTAwMDAwMDAwMCA8PCA0CmNvbnN0IFJFQURfRE9ORSAgICAgICAgICAgICA9IDBiMDAwMTAwMDAwMDAwMDAgPDwgNApjb25zdCBSRUFEX05FWFRfVElDSyAgICAgICAgPSAwYjAwMTAwMDAwMDAwMDAwIDw8IDQKY29uc3QgUkVBRF9ORUVEU19QVVNIICAgICAgID0gMGIwMTAwMDAwMDAwMDAwMCA8PCA0CmNvbnN0IFJFQURfUkVBRF9BSEVBRCAgICAgICA9IDBiMTAwMDAwMDAwMDAwMDAgPDwgNAoKLy8gQ29tYmluZWQgcmVhZCBzdGF0ZQpjb25zdCBSRUFEX0ZMT1dJTkcgPSBSRUFEX1JFU1VNRUQgfCBSRUFEX1BJUEVfRFJBSU5FRApjb25zdCBSRUFEX0FDVElWRV9BTkRfTkVFRFNfUFVTSCA9IFJFQURfQUNUSVZFIHwgUkVBRF9ORUVEU19QVVNICmNvbnN0IFJFQURfUFJJTUFSWV9BTkRfQUNUSVZFID0gUkVBRF9QUklNQVJZIHwgUkVBRF9BQ1RJVkUKY29uc3QgUkVBRF9FTUlUX1JFQURBQkxFX0FORF9RVUVVRUQgPSBSRUFEX0VNSVRfUkVBREFCTEUgfCBSRUFEX1FVRVVFRApjb25zdCBSRUFEX1JFU1VNRURfUkVBRF9BSEVBRCA9IFJFQURfUkVTVU1FRCB8IFJFQURfUkVBRF9BSEVBRAoKY29uc3QgUkVBRF9OT1RfQUNUSVZFICAgICAgICAgICAgID0gTUFYIF4gUkVBRF9BQ1RJVkUKY29uc3QgUkVBRF9OT05fUFJJTUFSWSAgICAgICAgICAgID0gTUFYIF4gUkVBRF9QUklNQVJZCmNvbnN0IFJFQURfTk9OX1BSSU1BUllfQU5EX1BVU0hFRCA9IE1BWCBeIChSRUFEX1BSSU1BUlkgfCBSRUFEX05FRURTX1BVU0gpCmNvbnN0IFJFQURfUFVTSEVEICAgICAgICAgICAgICAgICA9IE1BWCBeIFJFQURfTkVFRFNfUFVTSApjb25zdCBSRUFEX1BBVVNFRCAgICAgICAgICAgICAgICAgPSBNQVggXiBSRUFEX1JFU1VNRUQKY29uc3QgUkVBRF9OT1RfUVVFVUVEICAgICAgICAgICAgID0gTUFYIF4gKFJFQURfUVVFVUVEIHwgUkVBRF9FTUlUVEVEX1JFQURBQkxFKQpjb25zdCBSRUFEX05PVF9FTkRJTkcgICAgICAgICAgICAgPSBNQVggXiBSRUFEX0VORElORwpjb25zdCBSRUFEX1BJUEVfTk9UX0RSQUlORUQgICAgICAgPSBNQVggXiBSRUFEX0ZMT1dJTkcKY29uc3QgUkVBRF9OT1RfTkVYVF9USUNLICAgICAgICAgID0gTUFYIF4gUkVBRF9ORVhUX1RJQ0sKY29uc3QgUkVBRF9OT1RfVVBEQVRJTkcgICAgICAgICAgID0gTUFYIF4gUkVBRF9VUERBVElORwpjb25zdCBSRUFEX05PX1JFQURfQUhFQUQgICAgICAgICAgPSBNQVggXiBSRUFEX1JFQURfQUhFQUQKY29uc3QgUkVBRF9QQVVTRURfTk9fUkVBRF9BSEVBRCAgID0gTUFYIF4gUkVBRF9SRVNVTUVEX1JFQURfQUhFQUQKCi8vIFdyaXRlIHN0YXRlICgxOCBiaXQgb2Zmc2V0LCA0IGJpdCBvZmZzZXQgZnJvbSBzaGFyZWQgc3RhdGUgYW5kIDE0IGZyb20gcmVhZCBzdGF0ZSkKY29uc3QgV1JJVEVfQUNUSVZFICAgICA9IDBiMDAwMDAwMDAwMDEgPDwgMTgKY29uc3QgV1JJVEVfVVBEQVRJTkcgICA9IDBiMDAwMDAwMDAwMTAgPDwgMTgKY29uc3QgV1JJVEVfUFJJTUFSWSAgICA9IDBiMDAwMDAwMDAxMDAgPDwgMTgKY29uc3QgV1JJVEVfUVVFVUVEICAgICA9IDBiMDAwMDAwMDEwMDAgPDwgMTgKY29uc3QgV1JJVEVfVU5EUkFJTkVEICA9IDBiMDAwMDAwMTAwMDAgPDwgMTgKY29uc3QgV1JJVEVfRE9ORSAgICAgICA9IDBiMDAwMDAxMDAwMDAgPDwgMTgKY29uc3QgV1JJVEVfRU1JVF9EUkFJTiA9IDBiMDAwMDEwMDAwMDAgPDwgMTgKY29uc3QgV1JJVEVfTkVYVF9USUNLICA9IDBiMDAwMTAwMDAwMDAgPDwgMTgKY29uc3QgV1JJVEVfV1JJVElORyAgICA9IDBiMDAxMDAwMDAwMDAgPDwgMTgKY29uc3QgV1JJVEVfRklOSVNISU5HICA9IDBiMDEwMDAwMDAwMDAgPDwgMTgKY29uc3QgV1JJVEVfQ09SS0VEICAgICA9IDBiMTAwMDAwMDAwMDAgPDwgMTgKCmNvbnN0IFdSSVRFX05PVF9BQ1RJVkUgICAgPSBNQVggXiAoV1JJVEVfQUNUSVZFIHwgV1JJVEVfV1JJVElORykKY29uc3QgV1JJVEVfTk9OX1BSSU1BUlkgICA9IE1BWCBeIFdSSVRFX1BSSU1BUlkKY29uc3QgV1JJVEVfTk9UX0ZJTklTSElORyA9IE1BWCBeIChXUklURV9BQ1RJVkUgfCBXUklURV9GSU5JU0hJTkcpCmNvbnN0IFdSSVRFX0RSQUlORUQgICAgICAgPSBNQVggXiBXUklURV9VTkRSQUlORUQKY29uc3QgV1JJVEVfTk9UX1FVRVVFRCAgICA9IE1BWCBeIFdSSVRFX1FVRVVFRApjb25zdCBXUklURV9OT1RfTkVYVF9USUNLID0gTUFYIF4gV1JJVEVfTkVYVF9USUNLCmNvbnN0IFdSSVRFX05PVF9VUERBVElORyAgPSBNQVggXiBXUklURV9VUERBVElORwpjb25zdCBXUklURV9OT1RfQ09SS0VEICAgID0gTUFYIF4gV1JJVEVfQ09SS0VECgovLyBDb21iaW5lZCBzaGFyZWQgc3RhdGUKY29uc3QgQUNUSVZFID0gUkVBRF9BQ1RJVkUgfCBXUklURV9BQ1RJVkUKY29uc3QgTk9UX0FDVElWRSA9IE1BWCBeIEFDVElWRQpjb25zdCBET05FID0gUkVBRF9ET05FIHwgV1JJVEVfRE9ORQpjb25zdCBERVNUUk9ZX1NUQVRVUyA9IERFU1RST1lJTkcgfCBERVNUUk9ZRUQgfCBQUkVERVNUUk9ZSU5HCmNvbnN0IE9QRU5fU1RBVFVTID0gREVTVFJPWV9TVEFUVVMgfCBPUEVOSU5HCmNvbnN0IEFVVE9fREVTVFJPWSA9IERFU1RST1lfU1RBVFVTIHwgRE9ORQpjb25zdCBOT05fUFJJTUFSWSA9IFdSSVRFX05PTl9QUklNQVJZICYgUkVBRF9OT05fUFJJTUFSWQpjb25zdCBBQ1RJVkVfT1JfVElDS0lORyA9IFdSSVRFX05FWFRfVElDSyB8IFJFQURfTkVYVF9USUNLCmNvbnN0IFRJQ0tJTkcgPSBBQ1RJVkVfT1JfVElDS0lORyAmIE5PVF9BQ1RJVkUKY29uc3QgSVNfT1BFTklORyA9IE9QRU5fU1RBVFVTIHwgVElDS0lORwoKLy8gQ29tYmluZWQgc2hhcmVkIHN0YXRlIGFuZCByZWFkIHN0YXRlCmNvbnN0IFJFQURfUFJJTUFSWV9TVEFUVVMgPSBPUEVOX1NUQVRVUyB8IFJFQURfRU5ESU5HIHwgUkVBRF9ET05FCmNvbnN0IFJFQURfU1RBVFVTID0gT1BFTl9TVEFUVVMgfCBSRUFEX0RPTkUgfCBSRUFEX1FVRVVFRApjb25zdCBSRUFEX0VORElOR19TVEFUVVMgPSBPUEVOX1NUQVRVUyB8IFJFQURfRU5ESU5HIHwgUkVBRF9RVUVVRUQKY29uc3QgUkVBRF9SRUFEQUJMRV9TVEFUVVMgPSBPUEVOX1NUQVRVUyB8IFJFQURfRU1JVF9SRUFEQUJMRSB8IFJFQURfUVVFVUVEIHwgUkVBRF9FTUlUVEVEX1JFQURBQkxFCmNvbnN0IFNIT1VMRF9OT1RfUkVBRCA9IE9QRU5fU1RBVFVTIHwgUkVBRF9BQ1RJVkUgfCBSRUFEX0VORElORyB8IFJFQURfRE9ORSB8IFJFQURfTkVFRFNfUFVTSCB8IFJFQURfUkVBRF9BSEVBRApjb25zdCBSRUFEX0JBQ0tQUkVTU1VSRV9TVEFUVVMgPSBERVNUUk9ZX1NUQVRVUyB8IFJFQURfRU5ESU5HIHwgUkVBRF9ET05FCmNvbnN0IFJFQURfVVBEQVRFX1NZTkNfU1RBVFVTID0gUkVBRF9VUERBVElORyB8IE9QRU5fU1RBVFVTIHwgUkVBRF9ORVhUX1RJQ0sgfCBSRUFEX1BSSU1BUlkKY29uc3QgUkVBRF9ORVhUX1RJQ0tfT1JfT1BFTklORyA9IFJFQURfTkVYVF9USUNLIHwgT1BFTklORwoKLy8gQ29tYmluZWQgd3JpdGUgc3RhdGUKY29uc3QgV1JJVEVfUFJJTUFSWV9TVEFUVVMgPSBPUEVOX1NUQVRVUyB8IFdSSVRFX0ZJTklTSElORyB8IFdSSVRFX0RPTkUKY29uc3QgV1JJVEVfUVVFVUVEX0FORF9VTkRSQUlORUQgPSBXUklURV9RVUVVRUQgfCBXUklURV9VTkRSQUlORUQKY29uc3QgV1JJVEVfUVVFVUVEX0FORF9BQ1RJVkUgPSBXUklURV9RVUVVRUQgfCBXUklURV9BQ1RJVkUKY29uc3QgV1JJVEVfRFJBSU5fU1RBVFVTID0gV1JJVEVfUVVFVUVEIHwgV1JJVEVfVU5EUkFJTkVEIHwgT1BFTl9TVEFUVVMgfCBXUklURV9BQ1RJVkUKY29uc3QgV1JJVEVfU1RBVFVTID0gT1BFTl9TVEFUVVMgfCBXUklURV9BQ1RJVkUgfCBXUklURV9RVUVVRUQgfCBXUklURV9DT1JLRUQKY29uc3QgV1JJVEVfUFJJTUFSWV9BTkRfQUNUSVZFID0gV1JJVEVfUFJJTUFSWSB8IFdSSVRFX0FDVElWRQpjb25zdCBXUklURV9BQ1RJVkVfQU5EX1dSSVRJTkcgPSBXUklURV9BQ1RJVkUgfCBXUklURV9XUklUSU5HCmNvbnN0IFdSSVRFX0ZJTklTSElOR19TVEFUVVMgPSBPUEVOX1NUQVRVUyB8IFdSSVRFX0ZJTklTSElORyB8IFdSSVRFX1FVRVVFRF9BTkRfQUNUSVZFIHwgV1JJVEVfRE9ORQpjb25zdCBXUklURV9CQUNLUFJFU1NVUkVfU1RBVFVTID0gV1JJVEVfVU5EUkFJTkVEIHwgREVTVFJPWV9TVEFUVVMgfCBXUklURV9GSU5JU0hJTkcgfCBXUklURV9ET05FCmNvbnN0IFdSSVRFX1VQREFURV9TWU5DX1NUQVRVUyA9IFdSSVRFX1VQREFUSU5HIHwgT1BFTl9TVEFUVVMgfCBXUklURV9ORVhUX1RJQ0sgfCBXUklURV9QUklNQVJZCmNvbnN0IFdSSVRFX0RST1BfREFUQSA9IFdSSVRFX0ZJTklTSElORyB8IFdSSVRFX0RPTkUgfCBERVNUUk9ZX1NUQVRVUwoKY29uc3QgYXN5bmNJdGVyYXRvciA9IFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFN5bWJvbCgnYXN5bmNJdGVyYXRvcicpCgpjbGFzcyBXcml0YWJsZVN0YXRlIHsKICBjb25zdHJ1Y3RvciAoc3RyZWFtLCB7IGhpZ2hXYXRlck1hcmsgPSAxNjM4NCwgbWFwID0gbnVsbCwgbWFwV3JpdGFibGUsIGJ5dGVMZW5ndGgsIGJ5dGVMZW5ndGhXcml0YWJsZSB9ID0ge30pIHsKICAgIHRoaXMuc3RyZWFtID0gc3RyZWFtCiAgICB0aGlzLnF1ZXVlID0gbmV3IEZJRk8oKQogICAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaGlnaFdhdGVyTWFyawogICAgdGhpcy5idWZmZXJlZCA9IDAKICAgIHRoaXMuZXJyb3IgPSBudWxsCiAgICB0aGlzLnBpcGVsaW5lID0gbnVsbAogICAgdGhpcy5kcmFpbnMgPSBudWxsIC8vIGlmIHdlIGFkZCBtb3JlIHNlbGRvbWx5IHVzZWQgaGVscGVycyB3ZSBtaWdodCB0aGVtIGludG8gYSBzdWJvYmplY3Qgc28gaXRzIGEgc2luZ2xlIHB0cgogICAgdGhpcy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFdyaXRhYmxlIHx8IGJ5dGVMZW5ndGggfHwgZGVmYXVsdEJ5dGVMZW5ndGgKICAgIHRoaXMubWFwID0gbWFwV3JpdGFibGUgfHwgbWFwCiAgICB0aGlzLmFmdGVyV3JpdGUgPSBhZnRlcldyaXRlLmJpbmQodGhpcykKICAgIHRoaXMuYWZ0ZXJVcGRhdGVOZXh0VGljayA9IHVwZGF0ZVdyaXRlTlQuYmluZCh0aGlzKQogIH0KCiAgZ2V0IGVuZGVkICgpIHsKICAgIHJldHVybiAodGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlICYgV1JJVEVfRE9ORSkgIT09IDAKICB9CgogIHB1c2ggKGRhdGEpIHsKICAgIGlmICgodGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlICYgV1JJVEVfRFJPUF9EQVRBKSAhPT0gMCkgcmV0dXJuIGZhbHNlCiAgICBpZiAodGhpcy5tYXAgIT09IG51bGwpIGRhdGEgPSB0aGlzLm1hcChkYXRhKQoKICAgIHRoaXMuYnVmZmVyZWQgKz0gdGhpcy5ieXRlTGVuZ3RoKGRhdGEpCiAgICB0aGlzLnF1ZXVlLnB1c2goZGF0YSkKCiAgICBpZiAodGhpcy5idWZmZXJlZCA8IHRoaXMuaGlnaFdhdGVyTWFyaykgewogICAgICB0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgfD0gV1JJVEVfUVVFVUVECiAgICAgIHJldHVybiB0cnVlCiAgICB9CgogICAgdGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlIHw9IFdSSVRFX1FVRVVFRF9BTkRfVU5EUkFJTkVECiAgICByZXR1cm4gZmFsc2UKICB9CgogIHNoaWZ0ICgpIHsKICAgIGNvbnN0IGRhdGEgPSB0aGlzLnF1ZXVlLnNoaWZ0KCkKCiAgICB0aGlzLmJ1ZmZlcmVkIC09IHRoaXMuYnl0ZUxlbmd0aChkYXRhKQogICAgaWYgKHRoaXMuYnVmZmVyZWQgPT09IDApIHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSAmPSBXUklURV9OT1RfUVVFVUVECgogICAgcmV0dXJuIGRhdGEKICB9CgogIGVuZCAoZGF0YSkgewogICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB0aGlzLnN0cmVhbS5vbmNlKCdmaW5pc2gnLCBkYXRhKQogICAgZWxzZSBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkICYmIGRhdGEgIT09IG51bGwpIHRoaXMucHVzaChkYXRhKQogICAgdGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlID0gKHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSB8IFdSSVRFX0ZJTklTSElORykgJiBXUklURV9OT05fUFJJTUFSWQogIH0KCiAgYXV0b0JhdGNoIChkYXRhLCBjYikgewogICAgY29uc3QgYnVmZmVyID0gW10KICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtCgogICAgYnVmZmVyLnB1c2goZGF0YSkKICAgIHdoaWxlICgoc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIFdSSVRFX1NUQVRVUykgPT09IFdSSVRFX1FVRVVFRF9BTkRfQUNUSVZFKSB7CiAgICAgIGJ1ZmZlci5wdXNoKHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5zaGlmdCgpKQogICAgfQoKICAgIGlmICgoc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIE9QRU5fU1RBVFVTKSAhPT0gMCkgcmV0dXJuIGNiKG51bGwpCiAgICBzdHJlYW0uX3dyaXRldihidWZmZXIsIGNiKQogIH0KCiAgdXBkYXRlICgpIHsKICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtCgogICAgc3RyZWFtLl9kdXBsZXhTdGF0ZSB8PSBXUklURV9VUERBVElORwoKICAgIGRvIHsKICAgICAgd2hpbGUgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgV1JJVEVfU1RBVFVTKSA9PT0gV1JJVEVfUVVFVUVEKSB7CiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc2hpZnQoKQogICAgICAgIHN0cmVhbS5fZHVwbGV4U3RhdGUgfD0gV1JJVEVfQUNUSVZFX0FORF9XUklUSU5HCiAgICAgICAgc3RyZWFtLl93cml0ZShkYXRhLCB0aGlzLmFmdGVyV3JpdGUpCiAgICAgIH0KCiAgICAgIGlmICgoc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIFdSSVRFX1BSSU1BUllfQU5EX0FDVElWRSkgPT09IDApIHRoaXMudXBkYXRlTm9uUHJpbWFyeSgpCiAgICB9IHdoaWxlICh0aGlzLmNvbnRpbnVlVXBkYXRlKCkgPT09IHRydWUpCgogICAgc3RyZWFtLl9kdXBsZXhTdGF0ZSAmPSBXUklURV9OT1RfVVBEQVRJTkcKICB9CgogIHVwZGF0ZU5vblByaW1hcnkgKCkgewogICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0KCiAgICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBXUklURV9GSU5JU0hJTkdfU1RBVFVTKSA9PT0gV1JJVEVfRklOSVNISU5HKSB7CiAgICAgIHN0cmVhbS5fZHVwbGV4U3RhdGUgPSBzdHJlYW0uX2R1cGxleFN0YXRlIHwgV1JJVEVfQUNUSVZFCiAgICAgIHN0cmVhbS5fZmluYWwoYWZ0ZXJGaW5hbC5iaW5kKHRoaXMpKQogICAgICByZXR1cm4KICAgIH0KCiAgICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBERVNUUk9ZX1NUQVRVUykgPT09IERFU1RST1lJTkcpIHsKICAgICAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgQUNUSVZFX09SX1RJQ0tJTkcpID09PSAwKSB7CiAgICAgICAgc3RyZWFtLl9kdXBsZXhTdGF0ZSB8PSBBQ1RJVkUKICAgICAgICBzdHJlYW0uX2Rlc3Ryb3koYWZ0ZXJEZXN0cm95LmJpbmQodGhpcykpCiAgICAgIH0KICAgICAgcmV0dXJuCiAgICB9CgogICAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgSVNfT1BFTklORykgPT09IE9QRU5JTkcpIHsKICAgICAgc3RyZWFtLl9kdXBsZXhTdGF0ZSA9IChzdHJlYW0uX2R1cGxleFN0YXRlIHwgQUNUSVZFKSAmIE5PVF9PUEVOSU5HCiAgICAgIHN0cmVhbS5fb3BlbihhZnRlck9wZW4uYmluZCh0aGlzKSkKICAgIH0KICB9CgogIGNvbnRpbnVlVXBkYXRlICgpIHsKICAgIGlmICgodGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlICYgV1JJVEVfTkVYVF9USUNLKSA9PT0gMCkgcmV0dXJuIGZhbHNlCiAgICB0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJj0gV1JJVEVfTk9UX05FWFRfVElDSwogICAgcmV0dXJuIHRydWUKICB9CgogIHVwZGF0ZUNhbGxiYWNrICgpIHsKICAgIGlmICgodGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlICYgV1JJVEVfVVBEQVRFX1NZTkNfU1RBVFVTKSA9PT0gV1JJVEVfUFJJTUFSWSkgdGhpcy51cGRhdGUoKQogICAgZWxzZSB0aGlzLnVwZGF0ZU5leHRUaWNrKCkKICB9CgogIHVwZGF0ZU5leHRUaWNrICgpIHsKICAgIGlmICgodGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlICYgV1JJVEVfTkVYVF9USUNLKSAhPT0gMCkgcmV0dXJuCiAgICB0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgfD0gV1JJVEVfTkVYVF9USUNLCiAgICBpZiAoKHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIFdSSVRFX1VQREFUSU5HKSA9PT0gMCkgcXVldWVNaWNyb3Rhc2sodGhpcy5hZnRlclVwZGF0ZU5leHRUaWNrKQogIH0KfQoKY2xhc3MgUmVhZGFibGVTdGF0ZSB7CiAgY29uc3RydWN0b3IgKHN0cmVhbSwgeyBoaWdoV2F0ZXJNYXJrID0gMTYzODQsIG1hcCA9IG51bGwsIG1hcFJlYWRhYmxlLCBieXRlTGVuZ3RoLCBieXRlTGVuZ3RoUmVhZGFibGUgfSA9IHt9KSB7CiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbQogICAgdGhpcy5xdWV1ZSA9IG5ldyBGSUZPKCkKICAgIHRoaXMuaGlnaFdhdGVyTWFyayA9IGhpZ2hXYXRlck1hcmsgPT09IDAgPyAxIDogaGlnaFdhdGVyTWFyawogICAgdGhpcy5idWZmZXJlZCA9IDAKICAgIHRoaXMucmVhZEFoZWFkID0gaGlnaFdhdGVyTWFyayA+IDAKICAgIHRoaXMuZXJyb3IgPSBudWxsCiAgICB0aGlzLnBpcGVsaW5lID0gbnVsbAogICAgdGhpcy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFJlYWRhYmxlIHx8IGJ5dGVMZW5ndGggfHwgZGVmYXVsdEJ5dGVMZW5ndGgKICAgIHRoaXMubWFwID0gbWFwUmVhZGFibGUgfHwgbWFwCiAgICB0aGlzLnBpcGVUbyA9IG51bGwKICAgIHRoaXMuYWZ0ZXJSZWFkID0gYWZ0ZXJSZWFkLmJpbmQodGhpcykKICAgIHRoaXMuYWZ0ZXJVcGRhdGVOZXh0VGljayA9IHVwZGF0ZVJlYWROVC5iaW5kKHRoaXMpCiAgfQoKICBnZXQgZW5kZWQgKCkgewogICAgcmV0dXJuICh0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX0RPTkUpICE9PSAwCiAgfQoKICBwaXBlIChwaXBlVG8sIGNiKSB7CiAgICBpZiAodGhpcy5waXBlVG8gIT09IG51bGwpIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgcGlwZSB0byBvbmUgZGVzdGluYXRpb24nKQogICAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBudWxsCgogICAgdGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlIHw9IFJFQURfUElQRV9EUkFJTkVECiAgICB0aGlzLnBpcGVUbyA9IHBpcGVUbwogICAgdGhpcy5waXBlbGluZSA9IG5ldyBQaXBlbGluZSh0aGlzLnN0cmVhbSwgcGlwZVRvLCBjYikKCiAgICBpZiAoY2IpIHRoaXMuc3RyZWFtLm9uKCdlcnJvcicsIG5vb3ApIC8vIFdlIGFscmVhZHkgZXJyb3IgaGFuZGxlIHRoaXMgc28gc3VwcmVzcyBjcmFzaGVzCgogICAgaWYgKGlzU3RyZWFteChwaXBlVG8pKSB7CiAgICAgIHBpcGVUby5fd3JpdGFibGVTdGF0ZS5waXBlbGluZSA9IHRoaXMucGlwZWxpbmUKICAgICAgaWYgKGNiKSBwaXBlVG8ub24oJ2Vycm9yJywgbm9vcCkgLy8gV2UgYWxyZWFkeSBlcnJvciBoYW5kbGUgdGhpcyBzbyBzdXByZXNzIGNyYXNoZXMKICAgICAgcGlwZVRvLm9uKCdmaW5pc2gnLCB0aGlzLnBpcGVsaW5lLmZpbmlzaGVkLmJpbmQodGhpcy5waXBlbGluZSkpIC8vIFRPRE86IGp1c3QgY2FsbCBmaW5pc2hlZCBmcm9tIHBpcGVUbyBpdHNlbGYKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IG9uZXJyb3IgPSB0aGlzLnBpcGVsaW5lLmRvbmUuYmluZCh0aGlzLnBpcGVsaW5lLCBwaXBlVG8pCiAgICAgIGNvbnN0IG9uY2xvc2UgPSB0aGlzLnBpcGVsaW5lLmRvbmUuYmluZCh0aGlzLnBpcGVsaW5lLCBwaXBlVG8sIG51bGwpIC8vIG9uY2xvc2UgaGFzIGEgd2VpcmQgYm9vbCBhcmcKICAgICAgcGlwZVRvLm9uKCdlcnJvcicsIG9uZXJyb3IpCiAgICAgIHBpcGVUby5vbignY2xvc2UnLCBvbmNsb3NlKQogICAgICBwaXBlVG8ub24oJ2ZpbmlzaCcsIHRoaXMucGlwZWxpbmUuZmluaXNoZWQuYmluZCh0aGlzLnBpcGVsaW5lKSkKICAgIH0KCiAgICBwaXBlVG8ub24oJ2RyYWluJywgYWZ0ZXJEcmFpbi5iaW5kKHRoaXMpKQogICAgdGhpcy5zdHJlYW0uZW1pdCgncGlwaW5nJywgcGlwZVRvKQogICAgcGlwZVRvLmVtaXQoJ3BpcGUnLCB0aGlzLnN0cmVhbSkKICB9CgogIHB1c2ggKGRhdGEpIHsKICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtCgogICAgaWYgKGRhdGEgPT09IG51bGwpIHsKICAgICAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gMAogICAgICBzdHJlYW0uX2R1cGxleFN0YXRlID0gKHN0cmVhbS5fZHVwbGV4U3RhdGUgfCBSRUFEX0VORElORykgJiBSRUFEX05PTl9QUklNQVJZX0FORF9QVVNIRUQKICAgICAgcmV0dXJuIGZhbHNlCiAgICB9CgogICAgaWYgKHRoaXMubWFwICE9PSBudWxsKSB7CiAgICAgIGRhdGEgPSB0aGlzLm1hcChkYXRhKQogICAgICBpZiAoZGF0YSA9PT0gbnVsbCkgewogICAgICAgIHN0cmVhbS5fZHVwbGV4U3RhdGUgJj0gUkVBRF9QVVNIRUQKICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJlZCA8IHRoaXMuaGlnaFdhdGVyTWFyawogICAgICB9CiAgICB9CgogICAgdGhpcy5idWZmZXJlZCArPSB0aGlzLmJ5dGVMZW5ndGgoZGF0YSkKICAgIHRoaXMucXVldWUucHVzaChkYXRhKQoKICAgIHN0cmVhbS5fZHVwbGV4U3RhdGUgPSAoc3RyZWFtLl9kdXBsZXhTdGF0ZSB8IFJFQURfUVVFVUVEKSAmIFJFQURfUFVTSEVECgogICAgcmV0dXJuIHRoaXMuYnVmZmVyZWQgPCB0aGlzLmhpZ2hXYXRlck1hcmsKICB9CgogIHNoaWZ0ICgpIHsKICAgIGNvbnN0IGRhdGEgPSB0aGlzLnF1ZXVlLnNoaWZ0KCkKCiAgICB0aGlzLmJ1ZmZlcmVkIC09IHRoaXMuYnl0ZUxlbmd0aChkYXRhKQogICAgaWYgKHRoaXMuYnVmZmVyZWQgPT09IDApIHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSAmPSBSRUFEX05PVF9RVUVVRUQKICAgIHJldHVybiBkYXRhCiAgfQoKICB1bnNoaWZ0IChkYXRhKSB7CiAgICBjb25zdCBwZW5kaW5nID0gW3RoaXMubWFwICE9PSBudWxsID8gdGhpcy5tYXAoZGF0YSkgOiBkYXRhXQogICAgd2hpbGUgKHRoaXMuYnVmZmVyZWQgPiAwKSBwZW5kaW5nLnB1c2godGhpcy5zaGlmdCgpKQoKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGVuZGluZy5sZW5ndGggLSAxOyBpKyspIHsKICAgICAgY29uc3QgZGF0YSA9IHBlbmRpbmdbaV0KICAgICAgdGhpcy5idWZmZXJlZCArPSB0aGlzLmJ5dGVMZW5ndGgoZGF0YSkKICAgICAgdGhpcy5xdWV1ZS5wdXNoKGRhdGEpCiAgICB9CgogICAgdGhpcy5wdXNoKHBlbmRpbmdbcGVuZGluZy5sZW5ndGggLSAxXSkKICB9CgogIHJlYWQgKCkgewogICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0KCiAgICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX1NUQVRVUykgPT09IFJFQURfUVVFVUVEKSB7CiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNoaWZ0KCkKICAgICAgaWYgKHRoaXMucGlwZVRvICE9PSBudWxsICYmIHRoaXMucGlwZVRvLndyaXRlKGRhdGEpID09PSBmYWxzZSkgc3RyZWFtLl9kdXBsZXhTdGF0ZSAmPSBSRUFEX1BJUEVfTk9UX0RSQUlORUQKICAgICAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgUkVBRF9FTUlUX0RBVEEpICE9PSAwKSBzdHJlYW0uZW1pdCgnZGF0YScsIGRhdGEpCiAgICAgIHJldHVybiBkYXRhCiAgICB9CgogICAgaWYgKHRoaXMucmVhZEFoZWFkID09PSBmYWxzZSkgewogICAgICBzdHJlYW0uX2R1cGxleFN0YXRlIHw9IFJFQURfUkVBRF9BSEVBRAogICAgICB0aGlzLnVwZGF0ZU5leHRUaWNrKCkKICAgIH0KCiAgICByZXR1cm4gbnVsbAogIH0KCiAgZHJhaW4gKCkgewogICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0KCiAgICB3aGlsZSAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX1NUQVRVUykgPT09IFJFQURfUVVFVUVEICYmIChzdHJlYW0uX2R1cGxleFN0YXRlICYgUkVBRF9GTE9XSU5HKSAhPT0gMCkgewogICAgICBjb25zdCBkYXRhID0gdGhpcy5zaGlmdCgpCiAgICAgIGlmICh0aGlzLnBpcGVUbyAhPT0gbnVsbCAmJiB0aGlzLnBpcGVUby53cml0ZShkYXRhKSA9PT0gZmFsc2UpIHN0cmVhbS5fZHVwbGV4U3RhdGUgJj0gUkVBRF9QSVBFX05PVF9EUkFJTkVECiAgICAgIGlmICgoc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIFJFQURfRU1JVF9EQVRBKSAhPT0gMCkgc3RyZWFtLmVtaXQoJ2RhdGEnLCBkYXRhKQogICAgfQogIH0KCiAgdXBkYXRlICgpIHsKICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtCgogICAgc3RyZWFtLl9kdXBsZXhTdGF0ZSB8PSBSRUFEX1VQREFUSU5HCgogICAgZG8gewogICAgICB0aGlzLmRyYWluKCkKCiAgICAgIHdoaWxlICh0aGlzLmJ1ZmZlcmVkIDwgdGhpcy5oaWdoV2F0ZXJNYXJrICYmIChzdHJlYW0uX2R1cGxleFN0YXRlICYgU0hPVUxEX05PVF9SRUFEKSA9PT0gUkVBRF9SRUFEX0FIRUFEKSB7CiAgICAgICAgc3RyZWFtLl9kdXBsZXhTdGF0ZSB8PSBSRUFEX0FDVElWRV9BTkRfTkVFRFNfUFVTSAogICAgICAgIHN0cmVhbS5fcmVhZCh0aGlzLmFmdGVyUmVhZCkKICAgICAgICB0aGlzLmRyYWluKCkKICAgICAgfQoKICAgICAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgUkVBRF9SRUFEQUJMRV9TVEFUVVMpID09PSBSRUFEX0VNSVRfUkVBREFCTEVfQU5EX1FVRVVFRCkgewogICAgICAgIHN0cmVhbS5fZHVwbGV4U3RhdGUgfD0gUkVBRF9FTUlUVEVEX1JFQURBQkxFCiAgICAgICAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJykKICAgICAgfQoKICAgICAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgUkVBRF9QUklNQVJZX0FORF9BQ1RJVkUpID09PSAwKSB0aGlzLnVwZGF0ZU5vblByaW1hcnkoKQogICAgfSB3aGlsZSAodGhpcy5jb250aW51ZVVwZGF0ZSgpID09PSB0cnVlKQoKICAgIHN0cmVhbS5fZHVwbGV4U3RhdGUgJj0gUkVBRF9OT1RfVVBEQVRJTkcKICB9CgogIHVwZGF0ZU5vblByaW1hcnkgKCkgewogICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0KCiAgICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX0VORElOR19TVEFUVVMpID09PSBSRUFEX0VORElORykgewogICAgICBzdHJlYW0uX2R1cGxleFN0YXRlID0gKHN0cmVhbS5fZHVwbGV4U3RhdGUgfCBSRUFEX0RPTkUpICYgUkVBRF9OT1RfRU5ESU5HCiAgICAgIHN0cmVhbS5lbWl0KCdlbmQnKQogICAgICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBBVVRPX0RFU1RST1kpID09PSBET05FKSBzdHJlYW0uX2R1cGxleFN0YXRlIHw9IERFU1RST1lJTkcKICAgICAgaWYgKHRoaXMucGlwZVRvICE9PSBudWxsKSB0aGlzLnBpcGVUby5lbmQoKQogICAgfQoKICAgIGlmICgoc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIERFU1RST1lfU1RBVFVTKSA9PT0gREVTVFJPWUlORykgewogICAgICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBBQ1RJVkVfT1JfVElDS0lORykgPT09IDApIHsKICAgICAgICBzdHJlYW0uX2R1cGxleFN0YXRlIHw9IEFDVElWRQogICAgICAgIHN0cmVhbS5fZGVzdHJveShhZnRlckRlc3Ryb3kuYmluZCh0aGlzKSkKICAgICAgfQogICAgICByZXR1cm4KICAgIH0KCiAgICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBJU19PUEVOSU5HKSA9PT0gT1BFTklORykgewogICAgICBzdHJlYW0uX2R1cGxleFN0YXRlID0gKHN0cmVhbS5fZHVwbGV4U3RhdGUgfCBBQ1RJVkUpICYgTk9UX09QRU5JTkcKICAgICAgc3RyZWFtLl9vcGVuKGFmdGVyT3Blbi5iaW5kKHRoaXMpKQogICAgfQogIH0KCiAgY29udGludWVVcGRhdGUgKCkgewogICAgaWYgKCh0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX05FWFRfVElDSykgPT09IDApIHJldHVybiBmYWxzZQogICAgdGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlICY9IFJFQURfTk9UX05FWFRfVElDSwogICAgcmV0dXJuIHRydWUKICB9CgogIHVwZGF0ZUNhbGxiYWNrICgpIHsKICAgIGlmICgodGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlICYgUkVBRF9VUERBVEVfU1lOQ19TVEFUVVMpID09PSBSRUFEX1BSSU1BUlkpIHRoaXMudXBkYXRlKCkKICAgIGVsc2UgdGhpcy51cGRhdGVOZXh0VGljaygpCiAgfQoKICB1cGRhdGVOZXh0VGlja0lmT3BlbiAoKSB7CiAgICBpZiAoKHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIFJFQURfTkVYVF9USUNLX09SX09QRU5JTkcpICE9PSAwKSByZXR1cm4KICAgIHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSB8PSBSRUFEX05FWFRfVElDSwogICAgaWYgKCh0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX1VQREFUSU5HKSA9PT0gMCkgcXVldWVNaWNyb3Rhc2sodGhpcy5hZnRlclVwZGF0ZU5leHRUaWNrKQogIH0KCiAgdXBkYXRlTmV4dFRpY2sgKCkgewogICAgaWYgKCh0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX05FWFRfVElDSykgIT09IDApIHJldHVybgogICAgdGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlIHw9IFJFQURfTkVYVF9USUNLCiAgICBpZiAoKHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIFJFQURfVVBEQVRJTkcpID09PSAwKSBxdWV1ZU1pY3JvdGFzayh0aGlzLmFmdGVyVXBkYXRlTmV4dFRpY2spCiAgfQp9CgpjbGFzcyBUcmFuc2Zvcm1TdGF0ZSB7CiAgY29uc3RydWN0b3IgKHN0cmVhbSkgewogICAgdGhpcy5kYXRhID0gbnVsbAogICAgdGhpcy5hZnRlclRyYW5zZm9ybSA9IGFmdGVyVHJhbnNmb3JtLmJpbmQoc3RyZWFtKQogICAgdGhpcy5hZnRlckZpbmFsID0gbnVsbAogIH0KfQoKY2xhc3MgUGlwZWxpbmUgewogIGNvbnN0cnVjdG9yIChzcmMsIGRzdCwgY2IpIHsKICAgIHRoaXMuZnJvbSA9IHNyYwogICAgdGhpcy50byA9IGRzdAogICAgdGhpcy5hZnRlclBpcGUgPSBjYgogICAgdGhpcy5lcnJvciA9IG51bGwKICAgIHRoaXMucGlwZVRvRmluaXNoZWQgPSBmYWxzZQogIH0KCiAgZmluaXNoZWQgKCkgewogICAgdGhpcy5waXBlVG9GaW5pc2hlZCA9IHRydWUKICB9CgogIGRvbmUgKHN0cmVhbSwgZXJyKSB7CiAgICBpZiAoZXJyKSB0aGlzLmVycm9yID0gZXJyCgogICAgaWYgKHN0cmVhbSA9PT0gdGhpcy50bykgewogICAgICB0aGlzLnRvID0gbnVsbAoKICAgICAgaWYgKHRoaXMuZnJvbSAhPT0gbnVsbCkgewogICAgICAgIGlmICgodGhpcy5mcm9tLl9kdXBsZXhTdGF0ZSAmIFJFQURfRE9ORSkgPT09IDAgfHwgIXRoaXMucGlwZVRvRmluaXNoZWQpIHsKICAgICAgICAgIHRoaXMuZnJvbS5kZXN0cm95KHRoaXMuZXJyb3IgfHwgbmV3IEVycm9yKCdXcml0YWJsZSBzdHJlYW0gY2xvc2VkIHByZW1hdHVyZWx5JykpCiAgICAgICAgfQogICAgICAgIHJldHVybgogICAgICB9CiAgICB9CgogICAgaWYgKHN0cmVhbSA9PT0gdGhpcy5mcm9tKSB7CiAgICAgIHRoaXMuZnJvbSA9IG51bGwKCiAgICAgIGlmICh0aGlzLnRvICE9PSBudWxsKSB7CiAgICAgICAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgUkVBRF9ET05FKSA9PT0gMCkgewogICAgICAgICAgdGhpcy50by5kZXN0cm95KHRoaXMuZXJyb3IgfHwgbmV3IEVycm9yKCdSZWFkYWJsZSBzdHJlYW0gY2xvc2VkIGJlZm9yZSBlbmRpbmcnKSkKICAgICAgICB9CiAgICAgICAgcmV0dXJuCiAgICAgIH0KICAgIH0KCiAgICBpZiAodGhpcy5hZnRlclBpcGUgIT09IG51bGwpIHRoaXMuYWZ0ZXJQaXBlKHRoaXMuZXJyb3IpCiAgICB0aGlzLnRvID0gdGhpcy5mcm9tID0gdGhpcy5hZnRlclBpcGUgPSBudWxsCiAgfQp9CgpmdW5jdGlvbiBhZnRlckRyYWluICgpIHsKICB0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgfD0gUkVBRF9QSVBFX0RSQUlORUQKICB0aGlzLnVwZGF0ZUNhbGxiYWNrKCkKfQoKZnVuY3Rpb24gYWZ0ZXJGaW5hbCAoZXJyKSB7CiAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0KICBpZiAoZXJyKSBzdHJlYW0uZGVzdHJveShlcnIpCiAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgREVTVFJPWV9TVEFUVVMpID09PSAwKSB7CiAgICBzdHJlYW0uX2R1cGxleFN0YXRlIHw9IFdSSVRFX0RPTkUKICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKQogIH0KICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBBVVRPX0RFU1RST1kpID09PSBET05FKSB7CiAgICBzdHJlYW0uX2R1cGxleFN0YXRlIHw9IERFU1RST1lJTkcKICB9CgogIHN0cmVhbS5fZHVwbGV4U3RhdGUgJj0gV1JJVEVfTk9UX0ZJTklTSElORwoKICAvLyBubyBuZWVkIHRvIHdhaXQgdGhlIGV4dHJhIHRpY2sgaGVyZSwgc28gd2Ugc2hvcnQgY2lyY3VpdCB0aGF0CiAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgV1JJVEVfVVBEQVRJTkcpID09PSAwKSB0aGlzLnVwZGF0ZSgpCiAgZWxzZSB0aGlzLnVwZGF0ZU5leHRUaWNrKCkKfQoKZnVuY3Rpb24gYWZ0ZXJEZXN0cm95IChlcnIpIHsKICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbQoKICBpZiAoIWVyciAmJiB0aGlzLmVycm9yICE9PSBTVFJFQU1fREVTVFJPWUVEKSBlcnIgPSB0aGlzLmVycm9yCiAgaWYgKGVycikgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKQogIHN0cmVhbS5fZHVwbGV4U3RhdGUgfD0gREVTVFJPWUVECiAgc3RyZWFtLmVtaXQoJ2Nsb3NlJykKCiAgY29uc3QgcnMgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGUKICBjb25zdCB3cyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZQoKICBpZiAocnMgIT09IG51bGwgJiYgcnMucGlwZWxpbmUgIT09IG51bGwpIHJzLnBpcGVsaW5lLmRvbmUoc3RyZWFtLCBlcnIpCgogIGlmICh3cyAhPT0gbnVsbCkgewogICAgd2hpbGUgKHdzLmRyYWlucyAhPT0gbnVsbCAmJiB3cy5kcmFpbnMubGVuZ3RoID4gMCkgd3MuZHJhaW5zLnNoaWZ0KCkucmVzb2x2ZShmYWxzZSkKICAgIGlmICh3cy5waXBlbGluZSAhPT0gbnVsbCkgd3MucGlwZWxpbmUuZG9uZShzdHJlYW0sIGVycikKICB9Cn0KCmZ1bmN0aW9uIGFmdGVyV3JpdGUgKGVycikgewogIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtCgogIGlmIChlcnIpIHN0cmVhbS5kZXN0cm95KGVycikKICBzdHJlYW0uX2R1cGxleFN0YXRlICY9IFdSSVRFX05PVF9BQ1RJVkUKCiAgaWYgKHRoaXMuZHJhaW5zICE9PSBudWxsKSB0aWNrRHJhaW5zKHRoaXMuZHJhaW5zKQoKICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBXUklURV9EUkFJTl9TVEFUVVMpID09PSBXUklURV9VTkRSQUlORUQpIHsKICAgIHN0cmVhbS5fZHVwbGV4U3RhdGUgJj0gV1JJVEVfRFJBSU5FRAogICAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgV1JJVEVfRU1JVF9EUkFJTikgPT09IFdSSVRFX0VNSVRfRFJBSU4pIHsKICAgICAgc3RyZWFtLmVtaXQoJ2RyYWluJykKICAgIH0KICB9CgogIHRoaXMudXBkYXRlQ2FsbGJhY2soKQp9CgpmdW5jdGlvbiBhZnRlclJlYWQgKGVycikgewogIGlmIChlcnIpIHRoaXMuc3RyZWFtLmRlc3Ryb3koZXJyKQogIHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSAmPSBSRUFEX05PVF9BQ1RJVkUKICBpZiAodGhpcy5yZWFkQWhlYWQgPT09IGZhbHNlICYmICh0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX1JFU1VNRUQpID09PSAwKSB0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJj0gUkVBRF9OT19SRUFEX0FIRUFECiAgdGhpcy51cGRhdGVDYWxsYmFjaygpCn0KCmZ1bmN0aW9uIHVwZGF0ZVJlYWROVCAoKSB7CiAgaWYgKCh0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX1VQREFUSU5HKSA9PT0gMCkgewogICAgdGhpcy5zdHJlYW0uX2R1cGxleFN0YXRlICY9IFJFQURfTk9UX05FWFRfVElDSwogICAgdGhpcy51cGRhdGUoKQogIH0KfQoKZnVuY3Rpb24gdXBkYXRlV3JpdGVOVCAoKSB7CiAgaWYgKCh0aGlzLnN0cmVhbS5fZHVwbGV4U3RhdGUgJiBXUklURV9VUERBVElORykgPT09IDApIHsKICAgIHRoaXMuc3RyZWFtLl9kdXBsZXhTdGF0ZSAmPSBXUklURV9OT1RfTkVYVF9USUNLCiAgICB0aGlzLnVwZGF0ZSgpCiAgfQp9CgpmdW5jdGlvbiB0aWNrRHJhaW5zIChkcmFpbnMpIHsKICBmb3IgKGxldCBpID0gMDsgaSA8IGRyYWlucy5sZW5ndGg7IGkrKykgewogICAgLy8gZHJhaW5zLndyaXRlcyBhcmUgbW9ub3RvbmljLCBzbyBpZiBvbmUgaXMgMCBpdHMgYWx3YXlzIHRoZSBmaXJzdCBvbmUKICAgIGlmICgtLWRyYWluc1tpXS53cml0ZXMgPT09IDApIHsKICAgICAgZHJhaW5zLnNoaWZ0KCkucmVzb2x2ZSh0cnVlKQogICAgICBpLS0KICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGFmdGVyT3BlbiAoZXJyKSB7CiAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0KCiAgaWYgKGVycikgc3RyZWFtLmRlc3Ryb3koZXJyKQoKICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBERVNUUk9ZSU5HKSA9PT0gMCkgewogICAgaWYgKChzdHJlYW0uX2R1cGxleFN0YXRlICYgUkVBRF9QUklNQVJZX1NUQVRVUykgPT09IDApIHN0cmVhbS5fZHVwbGV4U3RhdGUgfD0gUkVBRF9QUklNQVJZCiAgICBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBXUklURV9QUklNQVJZX1NUQVRVUykgPT09IDApIHN0cmVhbS5fZHVwbGV4U3RhdGUgfD0gV1JJVEVfUFJJTUFSWQogICAgc3RyZWFtLmVtaXQoJ29wZW4nKQogIH0KCiAgc3RyZWFtLl9kdXBsZXhTdGF0ZSAmPSBOT1RfQUNUSVZFCgogIGlmIChzdHJlYW0uX3dyaXRhYmxlU3RhdGUgIT09IG51bGwpIHsKICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS51cGRhdGVDYWxsYmFjaygpCiAgfQoKICBpZiAoc3RyZWFtLl9yZWFkYWJsZVN0YXRlICE9PSBudWxsKSB7CiAgICBzdHJlYW0uX3JlYWRhYmxlU3RhdGUudXBkYXRlQ2FsbGJhY2soKQogIH0KfQoKZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0gKGVyciwgZGF0YSkgewogIGlmIChkYXRhICE9PSB1bmRlZmluZWQgJiYgZGF0YSAhPT0gbnVsbCkgdGhpcy5wdXNoKGRhdGEpCiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5hZnRlcldyaXRlKGVycikKfQoKZnVuY3Rpb24gbmV3TGlzdGVuZXIgKG5hbWUpIHsKICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSAhPT0gbnVsbCkgewogICAgaWYgKG5hbWUgPT09ICdkYXRhJykgewogICAgICB0aGlzLl9kdXBsZXhTdGF0ZSB8PSAoUkVBRF9FTUlUX0RBVEEgfCBSRUFEX1JFU1VNRURfUkVBRF9BSEVBRCkKICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS51cGRhdGVOZXh0VGljaygpCiAgICB9CiAgICBpZiAobmFtZSA9PT0gJ3JlYWRhYmxlJykgewogICAgICB0aGlzLl9kdXBsZXhTdGF0ZSB8PSBSRUFEX0VNSVRfUkVBREFCTEUKICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS51cGRhdGVOZXh0VGljaygpCiAgICB9CiAgfQoKICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSAhPT0gbnVsbCkgewogICAgaWYgKG5hbWUgPT09ICdkcmFpbicpIHsKICAgICAgdGhpcy5fZHVwbGV4U3RhdGUgfD0gV1JJVEVfRU1JVF9EUkFJTgogICAgICB0aGlzLl93cml0YWJsZVN0YXRlLnVwZGF0ZU5leHRUaWNrKCkKICAgIH0KICB9Cn0KCmNsYXNzIFN0cmVhbSBleHRlbmRzIEV2ZW50RW1pdHRlciB7CiAgY29uc3RydWN0b3IgKG9wdHMpIHsKICAgIHN1cGVyKCkKCiAgICB0aGlzLl9kdXBsZXhTdGF0ZSA9IDAKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBudWxsCiAgICB0aGlzLl93cml0YWJsZVN0YXRlID0gbnVsbAoKICAgIGlmIChvcHRzKSB7CiAgICAgIGlmIChvcHRzLm9wZW4pIHRoaXMuX29wZW4gPSBvcHRzLm9wZW4KICAgICAgaWYgKG9wdHMuZGVzdHJveSkgdGhpcy5fZGVzdHJveSA9IG9wdHMuZGVzdHJveQogICAgICBpZiAob3B0cy5wcmVkZXN0cm95KSB0aGlzLl9wcmVkZXN0cm95ID0gb3B0cy5wcmVkZXN0cm95CiAgICAgIGlmIChvcHRzLnNpZ25hbCkgewogICAgICAgIG9wdHMuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnQuYmluZCh0aGlzKSkKICAgICAgfQogICAgfQoKICAgIHRoaXMub24oJ25ld0xpc3RlbmVyJywgbmV3TGlzdGVuZXIpCiAgfQoKICBfb3BlbiAoY2IpIHsKICAgIGNiKG51bGwpCiAgfQoKICBfZGVzdHJveSAoY2IpIHsKICAgIGNiKG51bGwpCiAgfQoKICBfcHJlZGVzdHJveSAoKSB7CiAgICAvLyBkb2VzIG5vdGhpbmcKICB9CgogIGdldCByZWFkYWJsZSAoKSB7CiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSAhPT0gbnVsbCA/IHRydWUgOiB1bmRlZmluZWQKICB9CgogIGdldCB3cml0YWJsZSAoKSB7CiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSAhPT0gbnVsbCA/IHRydWUgOiB1bmRlZmluZWQKICB9CgogIGdldCBkZXN0cm95ZWQgKCkgewogICAgcmV0dXJuICh0aGlzLl9kdXBsZXhTdGF0ZSAmIERFU1RST1lFRCkgIT09IDAKICB9CgogIGdldCBkZXN0cm95aW5nICgpIHsKICAgIHJldHVybiAodGhpcy5fZHVwbGV4U3RhdGUgJiBERVNUUk9ZX1NUQVRVUykgIT09IDAKICB9CgogIGRlc3Ryb3kgKGVycikgewogICAgaWYgKCh0aGlzLl9kdXBsZXhTdGF0ZSAmIERFU1RST1lfU1RBVFVTKSA9PT0gMCkgewogICAgICBpZiAoIWVycikgZXJyID0gU1RSRUFNX0RFU1RST1lFRAogICAgICB0aGlzLl9kdXBsZXhTdGF0ZSA9ICh0aGlzLl9kdXBsZXhTdGF0ZSB8IERFU1RST1lJTkcpICYgTk9OX1BSSU1BUlkKCiAgICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlICE9PSBudWxsKSB7CiAgICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrID0gMAogICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZXJyb3IgPSBlcnIKICAgICAgfQogICAgICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSAhPT0gbnVsbCkgewogICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyayA9IDAKICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yID0gZXJyCiAgICAgIH0KCiAgICAgIHRoaXMuX2R1cGxleFN0YXRlIHw9IFBSRURFU1RST1lJTkcKICAgICAgdGhpcy5fcHJlZGVzdHJveSgpCiAgICAgIHRoaXMuX2R1cGxleFN0YXRlICY9IE5PVF9QUkVERVNUUk9ZSU5HCgogICAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSAhPT0gbnVsbCkgdGhpcy5fcmVhZGFibGVTdGF0ZS51cGRhdGVOZXh0VGljaygpCiAgICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlICE9PSBudWxsKSB0aGlzLl93cml0YWJsZVN0YXRlLnVwZGF0ZU5leHRUaWNrKCkKICAgIH0KICB9Cn0KCmNsYXNzIFJlYWRhYmxlIGV4dGVuZHMgU3RyZWFtIHsKICBjb25zdHJ1Y3RvciAob3B0cykgewogICAgc3VwZXIob3B0cykKCiAgICB0aGlzLl9kdXBsZXhTdGF0ZSB8PSBPUEVOSU5HIHwgV1JJVEVfRE9ORSB8IFJFQURfUkVBRF9BSEVBRAogICAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKHRoaXMsIG9wdHMpCgogICAgaWYgKG9wdHMpIHsKICAgICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZEFoZWFkID09PSBmYWxzZSkgdGhpcy5fZHVwbGV4U3RhdGUgJj0gUkVBRF9OT19SRUFEX0FIRUFECiAgICAgIGlmIChvcHRzLnJlYWQpIHRoaXMuX3JlYWQgPSBvcHRzLnJlYWQKICAgICAgaWYgKG9wdHMuZWFnZXJPcGVuKSB0aGlzLl9yZWFkYWJsZVN0YXRlLnVwZGF0ZU5leHRUaWNrKCkKICAgICAgaWYgKG9wdHMuZW5jb2RpbmcpIHRoaXMuc2V0RW5jb2Rpbmcob3B0cy5lbmNvZGluZykKICAgIH0KICB9CgogIHNldEVuY29kaW5nIChlbmNvZGluZykgewogICAgY29uc3QgZGVjID0gbmV3IFRleHREZWNvZGVyKGVuY29kaW5nKQogICAgY29uc3QgbWFwID0gdGhpcy5fcmVhZGFibGVTdGF0ZS5tYXAgfHwgZWNobwogICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5tYXAgPSBtYXBPclNraXAKICAgIHJldHVybiB0aGlzCgogICAgZnVuY3Rpb24gbWFwT3JTa2lwIChkYXRhKSB7CiAgICAgIGNvbnN0IG5leHQgPSBkZWMucHVzaChkYXRhKQogICAgICByZXR1cm4gbmV4dCA9PT0gJycgJiYgKGRhdGEuYnl0ZUxlbmd0aCAhPT0gMCB8fCBkZWMucmVtYWluaW5nID4gMCkgPyBudWxsIDogbWFwKG5leHQpCiAgICB9CiAgfQoKICBfcmVhZCAoY2IpIHsKICAgIGNiKG51bGwpCiAgfQoKICBwaXBlIChkZXN0LCBjYikgewogICAgdGhpcy5fcmVhZGFibGVTdGF0ZS51cGRhdGVOZXh0VGljaygpCiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnBpcGUoZGVzdCwgY2IpCiAgICByZXR1cm4gZGVzdAogIH0KCiAgcmVhZCAoKSB7CiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnVwZGF0ZU5leHRUaWNrKCkKICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWQoKQogIH0KCiAgcHVzaCAoZGF0YSkgewogICAgdGhpcy5fcmVhZGFibGVTdGF0ZS51cGRhdGVOZXh0VGlja0lmT3BlbigpCiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5wdXNoKGRhdGEpCiAgfQoKICB1bnNoaWZ0IChkYXRhKSB7CiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnVwZGF0ZU5leHRUaWNrSWZPcGVuKCkKICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLnVuc2hpZnQoZGF0YSkKICB9CgogIHJlc3VtZSAoKSB7CiAgICB0aGlzLl9kdXBsZXhTdGF0ZSB8PSBSRUFEX1JFU1VNRURfUkVBRF9BSEVBRAogICAgdGhpcy5fcmVhZGFibGVTdGF0ZS51cGRhdGVOZXh0VGljaygpCiAgICByZXR1cm4gdGhpcwogIH0KCiAgcGF1c2UgKCkgewogICAgdGhpcy5fZHVwbGV4U3RhdGUgJj0gKHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZEFoZWFkID09PSBmYWxzZSA/IFJFQURfUEFVU0VEX05PX1JFQURfQUhFQUQgOiBSRUFEX1BBVVNFRCkKICAgIHJldHVybiB0aGlzCiAgfQoKICBzdGF0aWMgX2Zyb21Bc3luY0l0ZXJhdG9yIChpdGUsIG9wdHMpIHsKICAgIGxldCBkZXN0cm95CgogICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGUoewogICAgICAuLi5vcHRzLAogICAgICByZWFkIChjYikgewogICAgICAgIGl0ZS5uZXh0KCkudGhlbihwdXNoKS50aGVuKGNiLmJpbmQobnVsbCwgbnVsbCkpLmNhdGNoKGNiKQogICAgICB9LAogICAgICBwcmVkZXN0cm95ICgpIHsKICAgICAgICBkZXN0cm95ID0gaXRlLnJldHVybigpCiAgICAgIH0sCiAgICAgIGRlc3Ryb3kgKGNiKSB7CiAgICAgICAgaWYgKCFkZXN0cm95KSByZXR1cm4gY2IobnVsbCkKICAgICAgICBkZXN0cm95LnRoZW4oY2IuYmluZChudWxsLCBudWxsKSkuY2F0Y2goY2IpCiAgICAgIH0KICAgIH0pCgogICAgcmV0dXJuIHJzCgogICAgZnVuY3Rpb24gcHVzaCAoZGF0YSkgewogICAgICBpZiAoZGF0YS5kb25lKSBycy5wdXNoKG51bGwpCiAgICAgIGVsc2UgcnMucHVzaChkYXRhLnZhbHVlKQogICAgfQogIH0KCiAgc3RhdGljIGZyb20gKGRhdGEsIG9wdHMpIHsKICAgIGlmIChpc1JlYWRTdHJlYW14KGRhdGEpKSByZXR1cm4gZGF0YQogICAgaWYgKGRhdGFbYXN5bmNJdGVyYXRvcl0pIHJldHVybiB0aGlzLl9mcm9tQXN5bmNJdGVyYXRvcihkYXRhW2FzeW5jSXRlcmF0b3JdKCksIG9wdHMpCiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIGRhdGEgPSBkYXRhID09PSB1bmRlZmluZWQgPyBbXSA6IFtkYXRhXQoKICAgIGxldCBpID0gMAogICAgcmV0dXJuIG5ldyBSZWFkYWJsZSh7CiAgICAgIC4uLm9wdHMsCiAgICAgIHJlYWQgKGNiKSB7CiAgICAgICAgdGhpcy5wdXNoKGkgPT09IGRhdGEubGVuZ3RoID8gbnVsbCA6IGRhdGFbaSsrXSkKICAgICAgICBjYihudWxsKQogICAgICB9CiAgICB9KQogIH0KCiAgc3RhdGljIGlzQmFja3ByZXNzdXJlZCAocnMpIHsKICAgIHJldHVybiAocnMuX2R1cGxleFN0YXRlICYgUkVBRF9CQUNLUFJFU1NVUkVfU1RBVFVTKSAhPT0gMCB8fCBycy5fcmVhZGFibGVTdGF0ZS5idWZmZXJlZCA+PSBycy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrCiAgfQoKICBzdGF0aWMgaXNQYXVzZWQgKHJzKSB7CiAgICByZXR1cm4gKHJzLl9kdXBsZXhTdGF0ZSAmIFJFQURfUkVTVU1FRCkgPT09IDAKICB9CgogIFthc3luY0l0ZXJhdG9yXSAoKSB7CiAgICBjb25zdCBzdHJlYW0gPSB0aGlzCgogICAgbGV0IGVycm9yID0gbnVsbAogICAgbGV0IHByb21pc2VSZXNvbHZlID0gbnVsbAogICAgbGV0IHByb21pc2VSZWplY3QgPSBudWxsCgogICAgdGhpcy5vbignZXJyb3InLCAoZXJyKSA9PiB7IGVycm9yID0gZXJyIH0pCiAgICB0aGlzLm9uKCdyZWFkYWJsZScsIG9ucmVhZGFibGUpCiAgICB0aGlzLm9uKCdjbG9zZScsIG9uY2xvc2UpCgogICAgcmV0dXJuIHsKICAgICAgW2FzeW5jSXRlcmF0b3JdICgpIHsKICAgICAgICByZXR1cm4gdGhpcwogICAgICB9LAogICAgICBuZXh0ICgpIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgcHJvbWlzZVJlc29sdmUgPSByZXNvbHZlCiAgICAgICAgICBwcm9taXNlUmVqZWN0ID0gcmVqZWN0CiAgICAgICAgICBjb25zdCBkYXRhID0gc3RyZWFtLnJlYWQoKQogICAgICAgICAgaWYgKGRhdGEgIT09IG51bGwpIG9uZGF0YShkYXRhKQogICAgICAgICAgZWxzZSBpZiAoKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBERVNUUk9ZRUQpICE9PSAwKSBvbmRhdGEobnVsbCkKICAgICAgICB9KQogICAgICB9LAogICAgICByZXR1cm4gKCkgewogICAgICAgIHJldHVybiBkZXN0cm95KG51bGwpCiAgICAgIH0sCiAgICAgIHRocm93IChlcnIpIHsKICAgICAgICByZXR1cm4gZGVzdHJveShlcnIpCiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBvbnJlYWRhYmxlICgpIHsKICAgICAgaWYgKHByb21pc2VSZXNvbHZlICE9PSBudWxsKSBvbmRhdGEoc3RyZWFtLnJlYWQoKSkKICAgIH0KCiAgICBmdW5jdGlvbiBvbmNsb3NlICgpIHsKICAgICAgaWYgKHByb21pc2VSZXNvbHZlICE9PSBudWxsKSBvbmRhdGEobnVsbCkKICAgIH0KCiAgICBmdW5jdGlvbiBvbmRhdGEgKGRhdGEpIHsKICAgICAgaWYgKHByb21pc2VSZWplY3QgPT09IG51bGwpIHJldHVybgogICAgICBpZiAoZXJyb3IpIHByb21pc2VSZWplY3QoZXJyb3IpCiAgICAgIGVsc2UgaWYgKGRhdGEgPT09IG51bGwgJiYgKHN0cmVhbS5fZHVwbGV4U3RhdGUgJiBSRUFEX0RPTkUpID09PSAwKSBwcm9taXNlUmVqZWN0KFNUUkVBTV9ERVNUUk9ZRUQpCiAgICAgIGVsc2UgcHJvbWlzZVJlc29sdmUoeyB2YWx1ZTogZGF0YSwgZG9uZTogZGF0YSA9PT0gbnVsbCB9KQogICAgICBwcm9taXNlUmVqZWN0ID0gcHJvbWlzZVJlc29sdmUgPSBudWxsCiAgICB9CgogICAgZnVuY3Rpb24gZGVzdHJveSAoZXJyKSB7CiAgICAgIHN0cmVhbS5kZXN0cm95KGVycikKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICBpZiAoc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIERFU1RST1lFRCkgcmV0dXJuIHJlc29sdmUoeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0pCiAgICAgICAgc3RyZWFtLm9uY2UoJ2Nsb3NlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgaWYgKGVycikgcmVqZWN0KGVycikKICAgICAgICAgIGVsc2UgcmVzb2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSkKICAgICAgICB9KQogICAgICB9KQogICAgfQogIH0KfQoKY2xhc3MgV3JpdGFibGUgZXh0ZW5kcyBTdHJlYW0gewogIGNvbnN0cnVjdG9yIChvcHRzKSB7CiAgICBzdXBlcihvcHRzKQoKICAgIHRoaXMuX2R1cGxleFN0YXRlIHw9IE9QRU5JTkcgfCBSRUFEX0RPTkUKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZSh0aGlzLCBvcHRzKQoKICAgIGlmIChvcHRzKSB7CiAgICAgIGlmIChvcHRzLndyaXRldikgdGhpcy5fd3JpdGV2ID0gb3B0cy53cml0ZXYKICAgICAgaWYgKG9wdHMud3JpdGUpIHRoaXMuX3dyaXRlID0gb3B0cy53cml0ZQogICAgICBpZiAob3B0cy5maW5hbCkgdGhpcy5fZmluYWwgPSBvcHRzLmZpbmFsCiAgICAgIGlmIChvcHRzLmVhZ2VyT3BlbikgdGhpcy5fd3JpdGFibGVTdGF0ZS51cGRhdGVOZXh0VGljaygpCiAgICB9CiAgfQoKICBjb3JrICgpIHsKICAgIHRoaXMuX2R1cGxleFN0YXRlIHw9IFdSSVRFX0NPUktFRAogIH0KCiAgdW5jb3JrICgpIHsKICAgIHRoaXMuX2R1cGxleFN0YXRlICY9IFdSSVRFX05PVF9DT1JLRUQKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUudXBkYXRlTmV4dFRpY2soKQogIH0KCiAgX3dyaXRldiAoYmF0Y2gsIGNiKSB7CiAgICBjYihudWxsKQogIH0KCiAgX3dyaXRlIChkYXRhLCBjYikgewogICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5hdXRvQmF0Y2goZGF0YSwgY2IpCiAgfQoKICBfZmluYWwgKGNiKSB7CiAgICBjYihudWxsKQogIH0KCiAgc3RhdGljIGlzQmFja3ByZXNzdXJlZCAod3MpIHsKICAgIHJldHVybiAod3MuX2R1cGxleFN0YXRlICYgV1JJVEVfQkFDS1BSRVNTVVJFX1NUQVRVUykgIT09IDAKICB9CgogIHN0YXRpYyBkcmFpbmVkICh3cykgewogICAgaWYgKHdzLmRlc3Ryb3llZCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSkKICAgIGNvbnN0IHN0YXRlID0gd3MuX3dyaXRhYmxlU3RhdGUKICAgIGNvbnN0IHBlbmRpbmcgPSAoaXNXcml0ZXYod3MpID8gTWF0aC5taW4oMSwgc3RhdGUucXVldWUubGVuZ3RoKSA6IHN0YXRlLnF1ZXVlLmxlbmd0aCkKICAgIGNvbnN0IHdyaXRlcyA9IHBlbmRpbmcgKyAoKHdzLl9kdXBsZXhTdGF0ZSAmIFdSSVRFX1dSSVRJTkcpID8gMSA6IDApCiAgICBpZiAod3JpdGVzID09PSAwKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpCiAgICBpZiAoc3RhdGUuZHJhaW5zID09PSBudWxsKSBzdGF0ZS5kcmFpbnMgPSBbXQogICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIHN0YXRlLmRyYWlucy5wdXNoKHsgd3JpdGVzLCByZXNvbHZlIH0pCiAgICB9KQogIH0KCiAgd3JpdGUgKGRhdGEpIHsKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUudXBkYXRlTmV4dFRpY2soKQogICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUucHVzaChkYXRhKQogIH0KCiAgZW5kIChkYXRhKSB7CiAgICB0aGlzLl93cml0YWJsZVN0YXRlLnVwZGF0ZU5leHRUaWNrKCkKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kKGRhdGEpCiAgICByZXR1cm4gdGhpcwogIH0KfQoKY2xhc3MgRHVwbGV4IGV4dGVuZHMgUmVhZGFibGUgeyAvLyBhbmQgV3JpdGFibGUKICBjb25zdHJ1Y3RvciAob3B0cykgewogICAgc3VwZXIob3B0cykKCiAgICB0aGlzLl9kdXBsZXhTdGF0ZSA9IE9QRU5JTkcgfCAodGhpcy5fZHVwbGV4U3RhdGUgJiBSRUFEX1JFQURfQUhFQUQpCiAgICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUodGhpcywgb3B0cykKCiAgICBpZiAob3B0cykgewogICAgICBpZiAob3B0cy53cml0ZXYpIHRoaXMuX3dyaXRldiA9IG9wdHMud3JpdGV2CiAgICAgIGlmIChvcHRzLndyaXRlKSB0aGlzLl93cml0ZSA9IG9wdHMud3JpdGUKICAgICAgaWYgKG9wdHMuZmluYWwpIHRoaXMuX2ZpbmFsID0gb3B0cy5maW5hbAogICAgfQogIH0KCiAgY29yayAoKSB7CiAgICB0aGlzLl9kdXBsZXhTdGF0ZSB8PSBXUklURV9DT1JLRUQKICB9CgogIHVuY29yayAoKSB7CiAgICB0aGlzLl9kdXBsZXhTdGF0ZSAmPSBXUklURV9OT1RfQ09SS0VECiAgICB0aGlzLl93cml0YWJsZVN0YXRlLnVwZGF0ZU5leHRUaWNrKCkKICB9CgogIF93cml0ZXYgKGJhdGNoLCBjYikgewogICAgY2IobnVsbCkKICB9CgogIF93cml0ZSAoZGF0YSwgY2IpIHsKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuYXV0b0JhdGNoKGRhdGEsIGNiKQogIH0KCiAgX2ZpbmFsIChjYikgewogICAgY2IobnVsbCkKICB9CgogIHdyaXRlIChkYXRhKSB7CiAgICB0aGlzLl93cml0YWJsZVN0YXRlLnVwZGF0ZU5leHRUaWNrKCkKICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLnB1c2goZGF0YSkKICB9CgogIGVuZCAoZGF0YSkgewogICAgdGhpcy5fd3JpdGFibGVTdGF0ZS51cGRhdGVOZXh0VGljaygpCiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZChkYXRhKQogICAgcmV0dXJuIHRoaXMKICB9Cn0KCmNsYXNzIFRyYW5zZm9ybSBleHRlbmRzIER1cGxleCB7CiAgY29uc3RydWN0b3IgKG9wdHMpIHsKICAgIHN1cGVyKG9wdHMpCiAgICB0aGlzLl90cmFuc2Zvcm1TdGF0ZSA9IG5ldyBUcmFuc2Zvcm1TdGF0ZSh0aGlzKQoKICAgIGlmIChvcHRzKSB7CiAgICAgIGlmIChvcHRzLnRyYW5zZm9ybSkgdGhpcy5fdHJhbnNmb3JtID0gb3B0cy50cmFuc2Zvcm0KICAgICAgaWYgKG9wdHMuZmx1c2gpIHRoaXMuX2ZsdXNoID0gb3B0cy5mbHVzaAogICAgfQogIH0KCiAgX3dyaXRlIChkYXRhLCBjYikgewogICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyZWQgPj0gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7CiAgICAgIHRoaXMuX3RyYW5zZm9ybVN0YXRlLmRhdGEgPSBkYXRhCiAgICB9IGVsc2UgewogICAgICB0aGlzLl90cmFuc2Zvcm0oZGF0YSwgdGhpcy5fdHJhbnNmb3JtU3RhdGUuYWZ0ZXJUcmFuc2Zvcm0pCiAgICB9CiAgfQoKICBfcmVhZCAoY2IpIHsKICAgIGlmICh0aGlzLl90cmFuc2Zvcm1TdGF0ZS5kYXRhICE9PSBudWxsKSB7CiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5kYXRhCiAgICAgIHRoaXMuX3RyYW5zZm9ybVN0YXRlLmRhdGEgPSBudWxsCiAgICAgIGNiKG51bGwpCiAgICAgIHRoaXMuX3RyYW5zZm9ybShkYXRhLCB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5hZnRlclRyYW5zZm9ybSkKICAgIH0gZWxzZSB7CiAgICAgIGNiKG51bGwpCiAgICB9CiAgfQoKICBkZXN0cm95IChlcnIpIHsKICAgIHN1cGVyLmRlc3Ryb3koZXJyKQogICAgaWYgKHRoaXMuX3RyYW5zZm9ybVN0YXRlLmRhdGEgIT09IG51bGwpIHsKICAgICAgdGhpcy5fdHJhbnNmb3JtU3RhdGUuZGF0YSA9IG51bGwKICAgICAgdGhpcy5fdHJhbnNmb3JtU3RhdGUuYWZ0ZXJUcmFuc2Zvcm0oKQogICAgfQogIH0KCiAgX3RyYW5zZm9ybSAoZGF0YSwgY2IpIHsKICAgIGNiKG51bGwsIGRhdGEpCiAgfQoKICBfZmx1c2ggKGNiKSB7CiAgICBjYihudWxsKQogIH0KCiAgX2ZpbmFsIChjYikgewogICAgdGhpcy5fdHJhbnNmb3JtU3RhdGUuYWZ0ZXJGaW5hbCA9IGNiCiAgICB0aGlzLl9mbHVzaCh0cmFuc2Zvcm1BZnRlckZsdXNoLmJpbmQodGhpcykpCiAgfQp9CgpjbGFzcyBQYXNzVGhyb3VnaCBleHRlbmRzIFRyYW5zZm9ybSB7fQoKZnVuY3Rpb24gdHJhbnNmb3JtQWZ0ZXJGbHVzaCAoZXJyLCBkYXRhKSB7CiAgY29uc3QgY2IgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5hZnRlckZpbmFsCiAgaWYgKGVycikgcmV0dXJuIGNiKGVycikKICBpZiAoZGF0YSAhPT0gbnVsbCAmJiBkYXRhICE9PSB1bmRlZmluZWQpIHRoaXMucHVzaChkYXRhKQogIHRoaXMucHVzaChudWxsKQogIGNiKG51bGwpCn0KCmZ1bmN0aW9uIHBpcGVsaW5lUHJvbWlzZSAoLi4uc3RyZWFtcykgewogIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICByZXR1cm4gcGlwZWxpbmUoLi4uc3RyZWFtcywgKGVycikgPT4gewogICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycikKICAgICAgcmVzb2x2ZSgpCiAgICB9KQogIH0pCn0KCmZ1bmN0aW9uIHBpcGVsaW5lIChzdHJlYW0sIC4uLnN0cmVhbXMpIHsKICBjb25zdCBhbGwgPSBBcnJheS5pc0FycmF5KHN0cmVhbSkgPyBbLi4uc3RyZWFtLCAuLi5zdHJlYW1zXSA6IFtzdHJlYW0sIC4uLnN0cmVhbXNdCiAgY29uc3QgZG9uZSA9IChhbGwubGVuZ3RoICYmIHR5cGVvZiBhbGxbYWxsLmxlbmd0aCAtIDFdID09PSAnZnVuY3Rpb24nKSA/IGFsbC5wb3AoKSA6IG51bGwKCiAgaWYgKGFsbC5sZW5ndGggPCAyKSB0aHJvdyBuZXcgRXJyb3IoJ1BpcGVsaW5lIHJlcXVpcmVzIGF0IGxlYXN0IDIgc3RyZWFtcycpCgogIGxldCBzcmMgPSBhbGxbMF0KICBsZXQgZGVzdCA9IG51bGwKICBsZXQgZXJyb3IgPSBudWxsCgogIGZvciAobGV0IGkgPSAxOyBpIDwgYWxsLmxlbmd0aDsgaSsrKSB7CiAgICBkZXN0ID0gYWxsW2ldCgogICAgaWYgKGlzU3RyZWFteChzcmMpKSB7CiAgICAgIHNyYy5waXBlKGRlc3QsIG9uZXJyb3IpCiAgICB9IGVsc2UgewogICAgICBlcnJvckhhbmRsZShzcmMsIHRydWUsIGkgPiAxLCBvbmVycm9yKQogICAgICBzcmMucGlwZShkZXN0KQogICAgfQoKICAgIHNyYyA9IGRlc3QKICB9CgogIGlmIChkb25lKSB7CiAgICBsZXQgZmluID0gZmFsc2UKCiAgICBjb25zdCBhdXRvRGVzdHJveSA9IGlzU3RyZWFteChkZXN0KSB8fCAhIShkZXN0Ll93cml0YWJsZVN0YXRlICYmIGRlc3QuX3dyaXRhYmxlU3RhdGUuYXV0b0Rlc3Ryb3kpCgogICAgZGVzdC5vbignZXJyb3InLCAoZXJyKSA9PiB7CiAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkgZXJyb3IgPSBlcnIKICAgIH0pCgogICAgZGVzdC5vbignZmluaXNoJywgKCkgPT4gewogICAgICBmaW4gPSB0cnVlCiAgICAgIGlmICghYXV0b0Rlc3Ryb3kpIGRvbmUoZXJyb3IpCiAgICB9KQoKICAgIGlmIChhdXRvRGVzdHJveSkgewogICAgICBkZXN0Lm9uKCdjbG9zZScsICgpID0+IGRvbmUoZXJyb3IgfHwgKGZpbiA/IG51bGwgOiBQUkVNQVRVUkVfQ0xPU0UpKSkKICAgIH0KICB9CgogIHJldHVybiBkZXN0CgogIGZ1bmN0aW9uIGVycm9ySGFuZGxlIChzLCByZCwgd3IsIG9uZXJyb3IpIHsKICAgIHMub24oJ2Vycm9yJywgb25lcnJvcikKICAgIHMub24oJ2Nsb3NlJywgb25jbG9zZSkKCiAgICBmdW5jdGlvbiBvbmNsb3NlICgpIHsKICAgICAgaWYgKHJkICYmIHMuX3JlYWRhYmxlU3RhdGUgJiYgIXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQpIHJldHVybiBvbmVycm9yKFBSRU1BVFVSRV9DTE9TRSkKICAgICAgaWYgKHdyICYmIHMuX3dyaXRhYmxlU3RhdGUgJiYgIXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQpIHJldHVybiBvbmVycm9yKFBSRU1BVFVSRV9DTE9TRSkKICAgIH0KICB9CgogIGZ1bmN0aW9uIG9uZXJyb3IgKGVycikgewogICAgaWYgKCFlcnIgfHwgZXJyb3IpIHJldHVybgogICAgZXJyb3IgPSBlcnIKCiAgICBmb3IgKGNvbnN0IHMgb2YgYWxsKSB7CiAgICAgIHMuZGVzdHJveShlcnIpCiAgICB9CiAgfQp9CgpmdW5jdGlvbiBlY2hvIChzKSB7CiAgcmV0dXJuIHMKfQoKZnVuY3Rpb24gaXNTdHJlYW0gKHN0cmVhbSkgewogIHJldHVybiAhIXN0cmVhbS5fcmVhZGFibGVTdGF0ZSB8fCAhIXN0cmVhbS5fd3JpdGFibGVTdGF0ZQp9CgpmdW5jdGlvbiBpc1N0cmVhbXggKHN0cmVhbSkgewogIHJldHVybiB0eXBlb2Ygc3RyZWFtLl9kdXBsZXhTdGF0ZSA9PT0gJ251bWJlcicgJiYgaXNTdHJlYW0oc3RyZWFtKQp9CgpmdW5jdGlvbiBpc0VuZGVkIChzdHJlYW0pIHsKICByZXR1cm4gISFzdHJlYW0uX3JlYWRhYmxlU3RhdGUgJiYgc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZGVkCn0KCmZ1bmN0aW9uIGlzRmluaXNoZWQgKHN0cmVhbSkgewogIHJldHVybiAhIXN0cmVhbS5fd3JpdGFibGVTdGF0ZSAmJiBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZW5kZWQKfQoKZnVuY3Rpb24gZ2V0U3RyZWFtRXJyb3IgKHN0cmVhbSwgb3B0cyA9IHt9KSB7CiAgY29uc3QgZXJyID0gKHN0cmVhbS5fcmVhZGFibGVTdGF0ZSAmJiBzdHJlYW0uX3JlYWRhYmxlU3RhdGUuZXJyb3IpIHx8IChzdHJlYW0uX3dyaXRhYmxlU3RhdGUgJiYgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yKQoKICAvLyBhdm9pZCBpbXBsaWNpdCBlcnJvcnMgYnkgZGVmYXVsdAogIHJldHVybiAoIW9wdHMuYWxsICYmIGVyciA9PT0gU1RSRUFNX0RFU1RST1lFRCkgPyBudWxsIDogZXJyCn0KCmZ1bmN0aW9uIGlzUmVhZFN0cmVhbXggKHN0cmVhbSkgewogIHJldHVybiBpc1N0cmVhbXgoc3RyZWFtKSAmJiBzdHJlYW0ucmVhZGFibGUKfQoKZnVuY3Rpb24gaXNEaXN0dXJiZWQgKHN0cmVhbSkgewogIHJldHVybiAoc3RyZWFtLl9kdXBsZXhTdGF0ZSAmIE9QRU5JTkcpICE9PSBPUEVOSU5HIHx8IChzdHJlYW0uX2R1cGxleFN0YXRlICYgQUNUSVZFX09SX1RJQ0tJTkcpICE9PSAwCn0KCmZ1bmN0aW9uIGlzVHlwZWRBcnJheSAoZGF0YSkgewogIHJldHVybiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgZGF0YSAhPT0gbnVsbCAmJiB0eXBlb2YgZGF0YS5ieXRlTGVuZ3RoID09PSAnbnVtYmVyJwp9CgpmdW5jdGlvbiBkZWZhdWx0Qnl0ZUxlbmd0aCAoZGF0YSkgewogIHJldHVybiBpc1R5cGVkQXJyYXkoZGF0YSkgPyBkYXRhLmJ5dGVMZW5ndGggOiAxMDI0Cn0KCmZ1bmN0aW9uIG5vb3AgKCkge30KCmZ1bmN0aW9uIGFib3J0ICgpIHsKICB0aGlzLmRlc3Ryb3kobmV3IEVycm9yKCdTdHJlYW0gYWJvcnRlZC4nKSkKfQoKZnVuY3Rpb24gaXNXcml0ZXYgKHMpIHsKICByZXR1cm4gcy5fd3JpdGV2ICE9PSBXcml0YWJsZS5wcm90b3R5cGUuX3dyaXRldiAmJiBzLl93cml0ZXYgIT09IER1cGxleC5wcm90b3R5cGUuX3dyaXRldgp9Cgptb2R1bGUuZXhwb3J0cyA9IHsKICBwaXBlbGluZSwKICBwaXBlbGluZVByb21pc2UsCiAgaXNTdHJlYW0sCiAgaXNTdHJlYW14LAogIGlzRW5kZWQsCiAgaXNGaW5pc2hlZCwKICBpc0Rpc3R1cmJlZCwKICBnZXRTdHJlYW1FcnJvciwKICBTdHJlYW0sCiAgV3JpdGFibGUsCiAgUmVhZGFibGUsCiAgRHVwbGV4LAogIFRyYW5zZm9ybSwKICAvLyBFeHBvcnQgUGFzc1Rocm91Z2ggZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBOb2RlLmpzIGNvcmUncyBzdHJlYW0gbW9kdWxlCiAgUGFzc1Rocm91Z2gKfQp7CiAgIm5hbWUiOiAic3RyZWFteCIsCiAgInZlcnNpb24iOiAiMi4yMi4wIiwKICAiZGVzY3JpcHRpb24iOiAiQW4gaXRlcmF0aW9uIG9mIHRoZSBOb2RlLmpzIGNvcmUgc3RyZWFtcyB3aXRoIGEgc2VyaWVzIG9mIGltcHJvdmVtZW50cyIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiZmFzdC1maWZvIjogIl4xLjMuMiIsCiAgICAidGV4dC1kZWNvZGVyIjogIl4xLjEuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYjRhIjogIl4xLjYuNiIsCiAgICAiYnJpdHRsZSI6ICJeMy4xLjEiLAogICAgImVuZC1vZi1zdHJlYW0iOiAiXjEuNC40IiwKICAgICJzdGFuZGFyZCI6ICJeMTcuMC4wIgogIH0sCiAgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIjogewogICAgImJhcmUtZXZlbnRzIjogIl4yLjIuMCIKICB9LAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIKICBdLAogICJpbXBvcnRzIjogewogICAgImV2ZW50cyI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1ldmVudHMiLAogICAgICAiZGVmYXVsdCI6ICJldmVudHMiCiAgICB9CiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC8qLmpzIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3N0cmVhbXguZ2l0IgogIH0sCiAgImF1dGhvciI6ICJNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpIiwKICAibGljZW5zZSI6ICJNSVQiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3N0cmVhbXgvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvc3RyZWFteCIKfQpjb25zdCBQYXNzVGhyb3VnaERlY29kZXIgPSByZXF1aXJlKCcuL2xpYi9wYXNzLXRocm91Z2gtZGVjb2RlcicpCmNvbnN0IFVURjhEZWNvZGVyID0gcmVxdWlyZSgnLi9saWIvdXRmOC1kZWNvZGVyJykKCm1vZHVsZS5leHBvcnRzID0gY2xhc3MgVGV4dERlY29kZXIgewogIGNvbnN0cnVjdG9yIChlbmNvZGluZyA9ICd1dGY4JykgewogICAgdGhpcy5lbmNvZGluZyA9IG5vcm1hbGl6ZUVuY29kaW5nKGVuY29kaW5nKQoKICAgIHN3aXRjaCAodGhpcy5lbmNvZGluZykgewogICAgICBjYXNlICd1dGY4JzoKICAgICAgICB0aGlzLmRlY29kZXIgPSBuZXcgVVRGOERlY29kZXIoKQogICAgICAgIGJyZWFrCiAgICAgIGNhc2UgJ3V0ZjE2bGUnOgogICAgICBjYXNlICdiYXNlNjQnOgogICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZW5jb2Rpbmc6ICcgKyB0aGlzLmVuY29kaW5nKQogICAgICBkZWZhdWx0OgogICAgICAgIHRoaXMuZGVjb2RlciA9IG5ldyBQYXNzVGhyb3VnaERlY29kZXIodGhpcy5lbmNvZGluZykKICAgIH0KICB9CgogIGdldCByZW1haW5pbmcgKCkgewogICAgcmV0dXJuIHRoaXMuZGVjb2Rlci5yZW1haW5pbmcKICB9CgogIHB1c2ggKGRhdGEpIHsKICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHJldHVybiBkYXRhCiAgICByZXR1cm4gdGhpcy5kZWNvZGVyLmRlY29kZShkYXRhKQogIH0KCiAgLy8gRm9yIE5vZGUuanMgY29tcGF0aWJpbGl0eQogIHdyaXRlIChkYXRhKSB7CiAgICByZXR1cm4gdGhpcy5wdXNoKGRhdGEpCiAgfQoKICBlbmQgKGRhdGEpIHsKICAgIGxldCByZXN1bHQgPSAnJwogICAgaWYgKGRhdGEpIHJlc3VsdCA9IHRoaXMucHVzaChkYXRhKQogICAgcmVzdWx0ICs9IHRoaXMuZGVjb2Rlci5mbHVzaCgpCiAgICByZXR1cm4gcmVzdWx0CiAgfQp9CgpmdW5jdGlvbiBub3JtYWxpemVFbmNvZGluZyAoZW5jb2RpbmcpIHsKICBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCkKCiAgc3dpdGNoIChlbmNvZGluZykgewogICAgY2FzZSAndXRmOCc6CiAgICBjYXNlICd1dGYtOCc6CiAgICAgIHJldHVybiAndXRmOCcKICAgIGNhc2UgJ3VjczInOgogICAgY2FzZSAndWNzLTInOgogICAgY2FzZSAndXRmMTZsZSc6CiAgICBjYXNlICd1dGYtMTZsZSc6CiAgICAgIHJldHVybiAndXRmMTZsZScKICAgIGNhc2UgJ2xhdGluMSc6CiAgICBjYXNlICdiaW5hcnknOgogICAgICByZXR1cm4gJ2xhdGluMScKICAgIGNhc2UgJ2Jhc2U2NCc6CiAgICBjYXNlICdhc2NpaSc6CiAgICBjYXNlICdoZXgnOgogICAgICByZXR1cm4gZW5jb2RpbmcKICAgIGRlZmF1bHQ6CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKQogIH0KfTsKY29uc3QgYjRhID0gcmVxdWlyZSgnYjRhJykKCm1vZHVsZS5leHBvcnRzID0gY2xhc3MgUGFzc1Rocm91Z2hEZWNvZGVyIHsKICBjb25zdHJ1Y3RvciAoZW5jb2RpbmcpIHsKICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZwogIH0KCiAgZ2V0IHJlbWFpbmluZyAoKSB7CiAgICByZXR1cm4gMAogIH0KCiAgZGVjb2RlICh0YWlsKSB7CiAgICByZXR1cm4gYjRhLnRvU3RyaW5nKHRhaWwsIHRoaXMuZW5jb2RpbmcpCiAgfQoKICBmbHVzaCAoKSB7CiAgICByZXR1cm4gJycKICB9Cn0KY29uc3QgYjRhID0gcmVxdWlyZSgnYjRhJykKCi8qKgogKiBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy8jdXRmLTgtZGVjb2RlcgogKi8KbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBVVEY4RGVjb2RlciB7CiAgY29uc3RydWN0b3IgKCkgewogICAgdGhpcy5jb2RlUG9pbnQgPSAwCiAgICB0aGlzLmJ5dGVzU2VlbiA9IDAKICAgIHRoaXMuYnl0ZXNOZWVkZWQgPSAwCiAgICB0aGlzLmxvd2VyQm91bmRhcnkgPSAweDgwCiAgICB0aGlzLnVwcGVyQm91bmRhcnkgPSAweGJmCiAgfQoKICBnZXQgcmVtYWluaW5nICgpIHsKICAgIHJldHVybiB0aGlzLmJ5dGVzU2VlbgogIH0KCiAgZGVjb2RlIChkYXRhKSB7CiAgICAvLyBJZiB3ZSBoYXZlIGEgZmFzdCBwYXRoLCBqdXN0IHNuaWZmIGlmIHRoZSBsYXN0IHBhcnQgaXMgYSBib3VuZGFyeQogICAgaWYgKHRoaXMuYnl0ZXNOZWVkZWQgPT09IDApIHsKICAgICAgbGV0IGlzQm91bmRhcnkgPSB0cnVlCgogICAgICBmb3IgKGxldCBpID0gTWF0aC5tYXgoMCwgZGF0YS5ieXRlTGVuZ3RoIC0gNCksIG4gPSBkYXRhLmJ5dGVMZW5ndGg7IGkgPCBuICYmIGlzQm91bmRhcnk7IGkrKykgewogICAgICAgIGlzQm91bmRhcnkgPSBkYXRhW2ldIDw9IDB4N2YKICAgICAgfQoKICAgICAgaWYgKGlzQm91bmRhcnkpIHJldHVybiBiNGEudG9TdHJpbmcoZGF0YSwgJ3V0ZjgnKQogICAgfQoKICAgIGxldCByZXN1bHQgPSAnJwoKICAgIGZvciAobGV0IGkgPSAwLCBuID0gZGF0YS5ieXRlTGVuZ3RoOyBpIDwgbjsgaSsrKSB7CiAgICAgIGNvbnN0IGJ5dGUgPSBkYXRhW2ldCgogICAgICBpZiAodGhpcy5ieXRlc05lZWRlZCA9PT0gMCkgewogICAgICAgIGlmIChieXRlIDw9IDB4N2YpIHsKICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGUpCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuYnl0ZXNTZWVuID0gMQoKICAgICAgICAgIGlmIChieXRlID49IDB4YzIgJiYgYnl0ZSA8PSAweGRmKSB7CiAgICAgICAgICAgIHRoaXMuYnl0ZXNOZWVkZWQgPSAyCiAgICAgICAgICAgIHRoaXMuY29kZVBvaW50ID0gYnl0ZSAmIDB4MWYKICAgICAgICAgIH0gZWxzZSBpZiAoYnl0ZSA+PSAweGUwICYmIGJ5dGUgPD0gMHhlZikgewogICAgICAgICAgICBpZiAoYnl0ZSA9PT0gMHhlMCkgdGhpcy5sb3dlckJvdW5kYXJ5ID0gMHhhMAogICAgICAgICAgICBlbHNlIGlmIChieXRlID09PSAweGVkKSB0aGlzLnVwcGVyQm91bmRhcnkgPSAweDlmCiAgICAgICAgICAgIHRoaXMuYnl0ZXNOZWVkZWQgPSAzCiAgICAgICAgICAgIHRoaXMuY29kZVBvaW50ID0gYnl0ZSAmIDB4ZgogICAgICAgICAgfSBlbHNlIGlmIChieXRlID49IDB4ZjAgJiYgYnl0ZSA8PSAweGY0KSB7CiAgICAgICAgICAgIGlmIChieXRlID09PSAweGYwKSB0aGlzLmxvd2VyQm91bmRhcnkgPSAweDkwCiAgICAgICAgICAgIGlmIChieXRlID09PSAweGY0KSB0aGlzLnVwcGVyQm91bmRhcnkgPSAweDhmCiAgICAgICAgICAgIHRoaXMuYnl0ZXNOZWVkZWQgPSA0CiAgICAgICAgICAgIHRoaXMuY29kZVBvaW50ID0gYnl0ZSAmIDB4NwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzdWx0ICs9ICdcdWZmZmQnCiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb250aW51ZQogICAgICB9CgogICAgICBpZiAoYnl0ZSA8IHRoaXMubG93ZXJCb3VuZGFyeSB8fCBieXRlID4gdGhpcy51cHBlckJvdW5kYXJ5KSB7CiAgICAgICAgdGhpcy5jb2RlUG9pbnQgPSAwCiAgICAgICAgdGhpcy5ieXRlc05lZWRlZCA9IDAKICAgICAgICB0aGlzLmJ5dGVzU2VlbiA9IDAKICAgICAgICB0aGlzLmxvd2VyQm91bmRhcnkgPSAweDgwCiAgICAgICAgdGhpcy51cHBlckJvdW5kYXJ5ID0gMHhiZgoKICAgICAgICByZXN1bHQgKz0gJ1x1ZmZmZCcKCiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgdGhpcy5sb3dlckJvdW5kYXJ5ID0gMHg4MAogICAgICB0aGlzLnVwcGVyQm91bmRhcnkgPSAweGJmCgogICAgICB0aGlzLmNvZGVQb2ludCA9ICh0aGlzLmNvZGVQb2ludCA8PCA2KSB8IChieXRlICYgMHgzZikKICAgICAgdGhpcy5ieXRlc1NlZW4rKwoKICAgICAgaWYgKHRoaXMuYnl0ZXNTZWVuICE9PSB0aGlzLmJ5dGVzTmVlZGVkKSBjb250aW51ZQoKICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KHRoaXMuY29kZVBvaW50KQoKICAgICAgdGhpcy5jb2RlUG9pbnQgPSAwCiAgICAgIHRoaXMuYnl0ZXNOZWVkZWQgPSAwCiAgICAgIHRoaXMuYnl0ZXNTZWVuID0gMAogICAgfQoKICAgIHJldHVybiByZXN1bHQKICB9CgogIGZsdXNoICgpIHsKICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuYnl0ZXNOZWVkZWQgPiAwID8gJ1x1ZmZmZCcgOiAnJwoKICAgIHRoaXMuY29kZVBvaW50ID0gMAogICAgdGhpcy5ieXRlc05lZWRlZCA9IDAKICAgIHRoaXMuYnl0ZXNTZWVuID0gMAogICAgdGhpcy5sb3dlckJvdW5kYXJ5ID0gMHg4MAogICAgdGhpcy51cHBlckJvdW5kYXJ5ID0gMHhiZgoKICAgIHJldHVybiByZXN1bHQKICB9Cn0KewogICJuYW1lIjogInRleHQtZGVjb2RlciIsCiAgInZlcnNpb24iOiAiMS4yLjMiLAogICJkZXNjcmlwdGlvbiI6ICJTdHJlYW1pbmcgdGV4dCBkZWNvZGVyIHRoYXQgcHJlc2VydmVzIG11bHRpYnl0ZSBVbmljb2RlIGNoYXJhY3RlcnMiLAogICJtYWluIjogImluZGV4LmpzIiwKICAiZmlsZXMiOiBbCiAgICAiaW5kZXguanMiLAogICAgImxpYiIKICBdLAogICJicm93c2VyIjogewogICAgIi4vbGliL3Bhc3MtdGhyb3VnaC1kZWNvZGVyLmpzIjogIi4vbGliL2Jyb3dzZXItZGVjb2Rlci5qcyIsCiAgICAiLi9saWIvdXRmOC1kZWNvZGVyLmpzIjogIi4vbGliL2Jyb3dzZXItZGVjb2Rlci5qcyIKICB9LAogICJyZWFjdC1uYXRpdmUiOiB7CiAgICAiLi9saWIvcGFzcy10aHJvdWdoLWRlY29kZXIuanMiOiAiLi9saWIvcGFzcy10aHJvdWdoLWRlY29kZXIuanMiLAogICAgIi4vbGliL3V0ZjgtZGVjb2Rlci5qcyI6ICIuL2xpYi91dGY4LWRlY29kZXIuanMiCiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC5qcyIKICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by90ZXh0LWRlY29kZXIuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2giLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vdGV4dC1kZWNvZGVyL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vdGV4dC1kZWNvZGVyI3JlYWRtZSIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJiNGEiOiAiXjEuNi40IgogIH0sCiAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICJicml0dGxlIjogIl4zLjMuMiIsCiAgICAic3RhbmRhcmQiOiAiXjE3LjAuMCIKICB9Cn0KLy8gVGhpcyBmaWxlIGlzIGEgdG1wIHdvcmthcm91bmQgdW50aWwgdmFyaWFkaWMgYXJncyBsYW5kIGluIHRpbnktYnVmZmVyLXJwYwoKY29uc3QgYjRhID0gcmVxdWlyZSgnYjRhJykKY29uc3QgYyA9IHJlcXVpcmUoJ2NvbXBhY3QtZW5jb2RpbmcnKQpjb25zdCB7IHVpbnQsIHV0ZjggfSA9IGMKCmNvbnN0IGFueVVuZGVmaW5lZCA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICAvLyBkbyBub3RoaW5nCiAgfSwKICBlbmNvZGUgKHN0YXRlLCBuKSB7CiAgICAvLyBkbyBub3RoaW5nCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkCiAgfQp9CgovLyAiYW55IiBlbmNvZGVycyBoZXJlIGZvciBoZWxwaW5nIGp1c3Qgc3RydWN0dXJlIGFueSBvYmplY3Qgd2l0aG91dCBzY2hlbWF0aXNpbmcgaXQKCmNvbnN0IGFueUFycmF5ID0gewogIHByZWVuY29kZSAoc3RhdGUsIGFycikgewogICAgdWludC5wcmVlbmNvZGUoc3RhdGUsIGFyci5sZW5ndGgpCiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgewogICAgICBhbnkucHJlZW5jb2RlKHN0YXRlLCBhcnJbaV0pCiAgICB9CiAgfSwKICBlbmNvZGUgKHN0YXRlLCBhcnIpIHsKICAgIHVpbnQuZW5jb2RlKHN0YXRlLCBhcnIubGVuZ3RoKQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKICAgICAgYW55LmVuY29kZShzdGF0ZSwgYXJyW2ldKQogICAgfQogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgY29uc3QgYXJyID0gW10KICAgIGxldCBsZW4gPSB1aW50LmRlY29kZShzdGF0ZSkKICAgIHdoaWxlIChsZW4tLSA+IDApIHsKICAgICAgYXJyLnB1c2goYW55LmRlY29kZShzdGF0ZSkpCiAgICB9CiAgICByZXR1cm4gYXJyCiAgfQp9Cgpjb25zdCBhbnlPYmplY3QgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgbykgewogICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG8pCiAgICB1aW50LnByZWVuY29kZShzdGF0ZSwga2V5cy5sZW5ndGgpCiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7CiAgICAgIHV0ZjgucHJlZW5jb2RlKHN0YXRlLCBrZXkpCiAgICAgIGFueS5wcmVlbmNvZGUoc3RhdGUsIG9ba2V5XSkKICAgIH0KICB9LAogIGVuY29kZSAoc3RhdGUsIG8pIHsKICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKQogICAgdWludC5lbmNvZGUoc3RhdGUsIGtleXMubGVuZ3RoKQogICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykgewogICAgICB1dGY4LmVuY29kZShzdGF0ZSwga2V5KQogICAgICBhbnkuZW5jb2RlKHN0YXRlLCBvW2tleV0pCiAgICB9CiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICBsZXQgbGVuID0gdWludC5kZWNvZGUoc3RhdGUpCiAgICBjb25zdCBvID0ge30KICAgIHdoaWxlIChsZW4tLSA+IDApIHsKICAgICAgY29uc3Qga2V5ID0gdXRmOC5kZWNvZGUoc3RhdGUpCiAgICAgIG9ba2V5XSA9IGFueS5kZWNvZGUoc3RhdGUpCiAgICB9CiAgICByZXR1cm4gbwogIH0KfQoKY29uc3QgYW55VHlwZXMgPSBbCiAgYy5ub25lLAogIGFueVVuZGVmaW5lZCwKICBjLmJvb2wsCiAgYy5zdHJpbmcsCiAgYy5idWZmZXIsCiAgYy51aW50LAogIGMuaW50LAogIGMuZmxvYXQ2NCwKICBhbnlBcnJheSwKICBhbnlPYmplY3QKXQoKY29uc3QgYW55ID0gbW9kdWxlLmV4cG9ydHMgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgbykgewogICAgY29uc3QgdCA9IGdldFR5cGUobykKICAgIHVpbnQucHJlZW5jb2RlKHN0YXRlLCB0KQogICAgYW55VHlwZXNbdF0ucHJlZW5jb2RlKHN0YXRlLCBvKQogIH0sCiAgZW5jb2RlIChzdGF0ZSwgbykgewogICAgY29uc3QgdCA9IGdldFR5cGUobykKICAgIHVpbnQuZW5jb2RlKHN0YXRlLCB0KQogICAgYW55VHlwZXNbdF0uZW5jb2RlKHN0YXRlLCBvKQogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgY29uc3QgdCA9IHVpbnQuZGVjb2RlKHN0YXRlKQogICAgaWYgKHQgPj0gYW55VHlwZXMubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdHlwZTogJyArIHQpCiAgICByZXR1cm4gYW55VHlwZXNbdF0uZGVjb2RlKHN0YXRlKQogIH0KfQoKZnVuY3Rpb24gZ2V0VHlwZSAobykgewogIGlmIChvID09PSBudWxsKSByZXR1cm4gMAogIGlmIChvID09PSB1bmRlZmluZWQpIHJldHVybiAxCiAgaWYgKHR5cGVvZiBvID09PSAnYm9vbGVhbicpIHJldHVybiAyCiAgaWYgKHR5cGVvZiBvID09PSAnc3RyaW5nJykgcmV0dXJuIDMKICBpZiAoYjRhLmlzQnVmZmVyKG8pKSByZXR1cm4gNAogIGlmICh0eXBlb2YgbyA9PT0gJ251bWJlcicpIHsKICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKG8pKSByZXR1cm4gbyA+PSAwID8gNSA6IDYKICAgIHJldHVybiA3CiAgfQogIGlmIChBcnJheS5pc0FycmF5KG8pKSByZXR1cm4gOAogIGlmICh0eXBlb2YgbyA9PT0gJ29iamVjdCcpIHJldHVybiA5CgogIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdHlwZSBmb3IgJyArIG8pCn0KY29uc3QgeyBnZXRTdHJlYW1FcnJvciwgRHVwbGV4IH0gPSByZXF1aXJlKCdzdHJlYW14JykKY29uc3QgYyA9IHJlcXVpcmUoJ2NvbXBhY3QtZW5jb2RpbmcnKQpjb25zdCBzYWZldHlDYXRjaCA9IHJlcXVpcmUoJ3NhZmV0eS1jYXRjaCcpCmNvbnN0IGI0YSA9IHJlcXVpcmUoJ2I0YScpCgovLyBQcmltYXJ5IG1lc3NhZ2UgZmxhZ3MgKDQgYml0cykKY29uc3QgTUVTU0FHRV9TRU5EID0gMGIwMDAxCmNvbnN0IE1FU1NBR0VfUkVRVUVTVCA9IDBiMDAxMApjb25zdCBNRVNTQUdFX1JFU1BPTlNFID0gMGIwMTAwCmNvbnN0IE1FU1NBR0VfRVJST1IgPSAwYjEwMDAKCi8vIFN0cmVhbSBtZXNzYWdlIGZsYWdzICg2IGJpdHMsIHdpdGggYSA0IGJpdCBvZmZzZXQgZm9yIHByaW1hcnkgbWVzc2FnZSBmbGFncykKY29uc3QgU1RSRUFNSU5HX01BU0sgPSAoKDEgPDwgNikgLSAxKSA8PCA0CmNvbnN0IFNUUkVBTV9PUEVOID0gMGIwMDAwMDEgPDwgNApjb25zdCBTVFJFQU1fQ0xPU0UgPSAwYjAwMDAxMCA8PCA0CmNvbnN0IFNUUkVBTV9QQVVTRSA9IDBiMDAwMTAwIDw8IDQKY29uc3QgU1RSRUFNX1JFU1VNRSA9IDBiMDAxMDAwIDw8IDQKY29uc3QgU1RSRUFNX0RBVEEgPSAwYjAxMDAwMCA8PCA0CmNvbnN0IFNUUkVBTV9FTkQgPSAwYjEwMDAwMCA8PCA0CgovLyBTdHJlYW0gc3RhdHVzIGZsYWdzICgyIGJpdHMsIHdpdGggYSAxMCBiaXQgb2Zmc2V0KQpjb25zdCBTVFJFQU1fSVNfSU5JVElBVE9SID0gMGIwMSA8PCAxMApjb25zdCBTVFJFQU1fSEFTX0VSUk9SID0gMGIxMCA8PCAxMAoKY29uc3QgUkVRVUVTVCA9IE1FU1NBR0VfU0VORCB8IE1FU1NBR0VfUkVRVUVTVAoKY29uc3QgewogIEhlYWRlciwKICBNZXNzYWdlLAogIEVycm9yTWVzc2FnZQp9ID0gcmVxdWlyZSgnLi9tZXNzYWdlcy5qcycpCgpjbGFzcyBSZXF1ZXN0IHsKICBjb25zdHJ1Y3RvciAobWV0aG9kLCBpZCwgdHlwZSwgZGF0YSkgewogICAgdGhpcy50eXBlID0gdHlwZQogICAgdGhpcy5pZCA9IGlkCiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZAogICAgdGhpcy5zZW50ID0gZmFsc2UKICAgIHRoaXMuZGF0YSA9IGRhdGEKICB9CgogIF9yZXNwb25kIChkYXRhKSB7CiAgICBpZiAodGhpcy5fc2VudCkgdGhyb3cgbmV3IEVycm9yKCdSZXNwb25zZSBhbHJlYWR5IHNlbnQnKQogICAgdGhpcy5zZW50ID0gdHJ1ZQogICAgdGhpcy5tZXRob2QuX3JwYy5fc2VuZE1lc3NhZ2UoewogICAgICBiaXRmaWVsZDogTUVTU0FHRV9SRVNQT05TRSwKICAgICAgaWQ6IHRoaXMuaWQsCiAgICAgIG1ldGhvZDogdGhpcy5tZXRob2QuX21ldGhvZCwKICAgICAgZGF0YTogYy5lbmNvZGUodGhpcy5tZXRob2QuX3Jlc3BvbnNlLCBkYXRhKQogICAgfSkKICB9CgogIF9lcnJvciAoZXJyKSB7CiAgICBpZiAodGhpcy5fc2VudCkgdGhyb3cgbmV3IEVycm9yKCdSZXNwb25zZSBhbHJlYWR5IHNlbnQnKQogICAgdGhpcy5zZW50ID0gdHJ1ZQogICAgdGhpcy5tZXRob2QuX3JwYy5fc2VuZE1lc3NhZ2UoewogICAgICBiaXRmaWVsZDogTUVTU0FHRV9FUlJPUiwKICAgICAgaWQ6IHRoaXMuaWQsCiAgICAgIG1ldGhvZDogdGhpcy5tZXRob2QuX21ldGhvZCwKICAgICAgZGF0YTogYy5lbmNvZGUoRXJyb3JNZXNzYWdlLCBlcnIpCiAgICB9KQogIH0KfQoKY2xhc3MgUlBDU3RyZWFtIGV4dGVuZHMgRHVwbGV4IHsKICBjb25zdHJ1Y3RvciAobWV0aG9kLCBpZCwgaW5pdGlhdG9yLCByZW1vdGVJZCkgewogICAgc3VwZXIoeyBlYWdlck9wZW46IHRydWUgfSkKCiAgICB0aGlzLl9tZXRob2QgPSBtZXRob2QKICAgIHRoaXMuX2luaXRpYXRvciA9IGluaXRpYXRvcgoKICAgIHRoaXMuX2xvY2FsSWQgPSBpZAogICAgdGhpcy5fcmVtb3RlSWQgPSByZW1vdGVJZAoKICAgIHRoaXMuX3JlbW90ZVBhdXNlZCA9IHRydWUKICAgIHRoaXMuX3NlbnRQYXVzZSA9IGZhbHNlCiAgICB0aGlzLl9zZW50T3BlbiA9IGZhbHNlCiAgICB0aGlzLl9pbml0aWF0ZWREZXN0cm95ID0gZmFsc2UKCiAgICB0aGlzLl93cml0ZUJhdGNoID0gbnVsbAogICAgdGhpcy5fd3JpdGVDYWxsYmFjayA9IG51bGwKICAgIHRoaXMuX29wZW5DYWxsYmFjayA9IG51bGwKICB9CgogIF9zZW5kQmF0Y2ggKGJhdGNoKSB7CiAgICBjb25zdCBiaXRmaWVsZCA9IE1FU1NBR0VfU0VORCB8IFNUUkVBTV9EQVRBCiAgICBjb25zdCBkYXRhRW5jb2RpbmcgPSB0aGlzLl9pbml0aWF0b3IgPyB0aGlzLl9tZXRob2QuX3Jlc3BvbnNlQXJyYXkgOiB0aGlzLl9tZXRob2QuX3JlcXVlc3RBcnJheQogICAgY29uc3QgZGF0YSA9IGMuZW5jb2RlKGRhdGFFbmNvZGluZywgYmF0Y2gpCiAgICB0aGlzLl9tZXRob2QuX3NlbmRNZXNzYWdlKHRoaXMuX3JlbW90ZUlkLCBiaXRmaWVsZCwgZGF0YSkKICB9CgogIF9yZW1vdGVPcGVuZWQgKHJlbW90ZUlkKSB7CiAgICB0aGlzLl9yZW1vdGVJZCA9IHJlbW90ZUlkCiAgICB0aGlzLl9jb250aW51ZU9wZW4obnVsbCkKICB9CgogIF9yZW1vdGVDbG9zZWQgKGVycikgewogICAgdGhpcy5fcmVtb3RlSWQgPSAtMQogICAgdGhpcy5kZXN0cm95KGVycikKICB9CgogIF9yZW1vdGVQYXVzZSAoKSB7CiAgICB0aGlzLl9yZW1vdGVQYXVzZWQgPSB0cnVlCiAgfQoKICBfcmVtb3RlUmVzdW1lICgpIHsKICAgIHRoaXMuX3JlbW90ZVBhdXNlZCA9IGZhbHNlCiAgICBpZiAoIXRoaXMuX3dyaXRlQmF0Y2gpIHJldHVybgoKICAgIHRoaXMuX3NlbmRCYXRjaCh0aGlzLl93cml0ZUJhdGNoKQogICAgdGhpcy5fd3JpdGVCYXRjaCA9IG51bGwKICAgIHRoaXMuX2NvbnRpbnVlV3JpdGUobnVsbCkKICB9CgogIF9zZW5kT3BlbiAoKSB7CiAgICBpZiAodGhpcy5fc2VudE9wZW4pIHJldHVybgoKICAgIGxldCBiaXRmaWVsZCA9IE1FU1NBR0VfU0VORCB8IFNUUkVBTV9PUEVOCiAgICBpZiAodGhpcy5faW5pdGlhdG9yKSBiaXRmaWVsZCB8PSBTVFJFQU1fSVNfSU5JVElBVE9SCgogICAgY29uc3QgaWQgPSB0aGlzLl9pbml0aWF0b3IgPyB0aGlzLl9sb2NhbElkIDogdGhpcy5fcmVtb3RlSWQKICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9pbml0aWF0b3IgPyBudWxsIDogYy5lbmNvZGUoYy51aW50LCB0aGlzLl9sb2NhbElkKQoKICAgIHRoaXMuX3NlbnRPcGVuID0gdHJ1ZQogICAgdGhpcy5fbWV0aG9kLl9zZW5kTWVzc2FnZShpZCwgYml0ZmllbGQsIGRhdGEpCiAgfQoKICBfb3BlbiAoY2IpIHsKICAgIHRoaXMuX3NlbmRPcGVuKCkKCiAgICBpZiAodGhpcy5faW5pdGlhdG9yKSB7CiAgICAgIHRoaXMuX29wZW5DYWxsYmFjayA9IGNiCiAgICB9IGVsc2UgewogICAgICBjYigpCiAgICB9CiAgfQoKICBfY29udGludWVPcGVuIChlcnIpIHsKICAgIGlmICh0aGlzLl9vcGVuQ2FsbGJhY2sgPT09IG51bGwpIHJldHVybgogICAgY29uc3QgY2IgPSB0aGlzLl9vcGVuQ2FsbGJhY2sKICAgIHRoaXMuX29wZW5DYWxsYmFjayA9IG51bGwKICAgIGNiKGVycikKICB9CgogIF9yZWFkIChjYikgewogICAgdGhpcy5fbWV0aG9kLl9zZW5kTWVzc2FnZSh0aGlzLl9yZW1vdGVJZCwgTUVTU0FHRV9TRU5EIHwgU1RSRUFNX1JFU1VNRSkKICAgIGNiKCkKICB9CgogIF93cml0ZXYgKGJhdGNoLCBjYikgewogICAgaWYgKHRoaXMuX3JlbW90ZVBhdXNlZCkgewogICAgICB0aGlzLl93cml0ZUJhdGNoID0gYmF0Y2gKICAgICAgdGhpcy5fd3JpdGVDYWxsYmFjayA9IGNiCiAgICB9IGVsc2UgewogICAgICB0aGlzLl9zZW5kQmF0Y2goYmF0Y2gpCiAgICAgIGNiKCkKICAgIH0KICB9CgogIF9jb250aW51ZVdyaXRlIChlcnIpIHsKICAgIGlmICh0aGlzLl93cml0ZUNhbGxiYWNrID09PSBudWxsKSByZXR1cm4KICAgIGNvbnN0IGNiID0gdGhpcy5fd3JpdGVDYWxsYmFjawogICAgdGhpcy5fd3JpdGVDYWxsYmFjayA9IG51bGwKICAgIGNiKGVycikKICB9CgogIF9maW5hbCAoY2IpIHsKICAgIHRoaXMuX21ldGhvZC5fc2VuZE1lc3NhZ2UodGhpcy5fcmVtb3RlSWQsIE1FU1NBR0VfU0VORCB8IFNUUkVBTV9FTkQpCiAgICBjYigpCiAgfQoKICBfcHJlZGVzdHJveSAoKSB7CiAgICB0aGlzLl9pbml0aWF0ZWREZXN0cm95ID0gdHJ1ZQogICAgdGhpcy5fY29udGludWVXcml0ZShudWxsKQogIH0KCiAgX2Rlc3Ryb3kgKGNiKSB7CiAgICBpZiAodGhpcy5fcmVtb3RlSWQgPT09IC0xIHx8IHRoaXMuX2luaXRpYXRlZERlc3Ryb3kgPT09IGZhbHNlIHx8IHRoaXMuX21ldGhvZC5kZXN0cm95ZWQpIHsKICAgICAgLy8gaWYgdGhlIHJlbW90ZSBzaWRlIGFscmVhZHkgc2VudCBhIGNsb3NlIG9yIHdlIGFyZSB0aGUgaW5pdGlhdG9yIGFuZCB3ZSBkaWRuJ3Qgb3BlbiwKICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIHNlbmQgYSBjbG9zZSBtZXNzYWdlCiAgICAgIGNiKCkKICAgICAgcmV0dXJuCiAgICB9CgogICAgY29uc3QgZXJyID0gZ2V0U3RyZWFtRXJyb3IodGhpcykKCiAgICBsZXQgYml0ZmllbGQgPSBNRVNTQUdFX1NFTkQgfCBTVFJFQU1fQ0xPU0UKICAgIGlmIChlcnIpIGJpdGZpZWxkIHw9IFNUUkVBTV9IQVNfRVJST1IKICAgIGNvbnN0IGRhdGEgPSBlcnIgPyBjLmVuY29kZShFcnJvck1lc3NhZ2UsIGVycikgOiBudWxsCgogICAgdGhpcy5fbWV0aG9kLl9zZW5kTWVzc2FnZSh0aGlzLl9yZW1vdGVJZCwgYml0ZmllbGQsIGRhdGEpCiAgICBjYigpCiAgfQp9CgpjbGFzcyBNZXRob2QgewogIGNvbnN0cnVjdG9yIChycGMsIG1ldGhvZCwgeyByZXF1ZXN0LCByZXNwb25zZSwgb25yZXF1ZXN0LCBvbnN0cmVhbSB9ID0ge30pIHsKICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2UKCiAgICB0aGlzLl9ycGMgPSBycGMKICAgIHRoaXMuX21ldGhvZCA9IG1ldGhvZAoKICAgIHRoaXMuX3JlcXVlc3QgPSByZXF1ZXN0IHx8IGMuYnVmZmVyCiAgICB0aGlzLl9yZXNwb25zZSA9IHJlc3BvbnNlIHx8IGMuYnVmZmVyCiAgICB0aGlzLl9yZXF1ZXN0QXJyYXkgPSBjLmFycmF5KHRoaXMuX3JlcXVlc3QpCiAgICB0aGlzLl9yZXNwb25zZUFycmF5ID0gYy5hcnJheSh0aGlzLl9yZXNwb25zZSkKCiAgICB0aGlzLl9vbnJlcXVlc3QgPSBvbnJlcXVlc3QKICAgIHRoaXMuX29uc3RyZWFtID0gb25zdHJlYW0KCiAgICB0aGlzLl9zdHJlYW1zID0gW10KICAgIHRoaXMuX2ZyZWUgPSBbXQogIH0KCiAgYXN5bmMgX2NhbGxPblJlcXVlc3QgKHJlcSkgewogICAgdHJ5IHsKICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX29ucmVxdWVzdChyZXEuZGF0YSkKICAgICAgcmVxLl9yZXNwb25kKGRhdGEpCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgcmVxLl9lcnJvcihlcnIpCiAgICB9CiAgfQoKICBhc3luYyBfY2FsbE9uU2VuZCAoZGF0YSkgewogICAgdHJ5IHsKICAgICAgYXdhaXQgdGhpcy5fb25yZXF1ZXN0KGRhdGEpCiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgc2FmZXR5Q2F0Y2goZXJyKQogICAgfQogIH0KCiAgX2NyZWF0ZVN0cmVhbSAoaW5pdGlhdG9yLCByZW1vdGVJZCkgewogICAgY29uc3QgaWQgPSB0aGlzLl9mcmVlLmxlbmd0aCA/IHRoaXMuX2ZyZWUucG9wKCkgOiAodGhpcy5fc3RyZWFtcy5wdXNoKG51bGwpIC0gMSkKICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSUENTdHJlYW0odGhpcywgaWQsIGluaXRpYXRvciwgcmVtb3RlSWQpCiAgICB0aGlzLl9zdHJlYW1zW2lkXSA9IHN0cmVhbQogICAgcmV0dXJuIHN0cmVhbQogIH0KCiAgX2hhbmRsZVN0cmVhbU9wZW4gKGlkLCBiaXRmaWVsZCwgc3RhdGUpIHsKICAgIGlmIChiaXRmaWVsZCAmIFNUUkVBTV9JU19JTklUSUFUT1IpIHsKICAgICAgLy8gQ3JlYXRlIHRoZSByZXNwb25kZXIgc3RyZWFtCiAgICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuX2NyZWF0ZVN0cmVhbShmYWxzZSwgaWQpCiAgICAgIHRoaXMuX29uc3RyZWFtKHN0cmVhbSkKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuX3N0cmVhbXNbaWRdCiAgICAgIHN0cmVhbS5fcmVtb3RlT3BlbmVkKGMudWludC5kZWNvZGUoc3RhdGUpKQogICAgfQogIH0KCiAgX2hhbmRsZVN0cmVhbUNsb3NlIChpZCwgYml0ZmllbGQsIHN0YXRlKSB7CiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLl9zdHJlYW1zW2lkXQogICAgaWYgKGJpdGZpZWxkICYgU1RSRUFNX0hBU19FUlJPUikgewogICAgICBjb25zdCBlcnIgPSBFcnJvck1lc3NhZ2UuZGVjb2RlKHN0YXRlKQogICAgICBzdHJlYW0uX3JlbW90ZUNsb3NlZChlcnIpCiAgICB9IGVsc2UgewogICAgICBzdHJlYW0uX3JlbW90ZUNsb3NlZChudWxsKQogICAgfQogICAgdGhpcy5fc3RyZWFtc1tpZF0gPSBudWxsCiAgICB0aGlzLl9mcmVlLnB1c2goaWQpCiAgfQoKICBfaGFuZGxlU3RyZWFtUGF1c2UgKGlkKSB7CiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLl9zdHJlYW1zW2lkXQogICAgaWYgKHN0cmVhbSkgc3RyZWFtLl9yZW1vdGVQYXVzZSgpCiAgfQoKICBfaGFuZGxlU3RyZWFtUmVzdW1lIChpZCkgewogICAgY29uc3Qgc3RyZWFtID0gdGhpcy5fc3RyZWFtc1tpZF0KICAgIGlmIChzdHJlYW0pIHN0cmVhbS5fcmVtb3RlUmVzdW1lKCkKICB9CgogIF9oYW5kbGVTdHJlYW1FbmQgKGlkKSB7CiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLl9zdHJlYW1zW2lkXQogICAgaWYgKHN0cmVhbSkgc3RyZWFtLnB1c2gobnVsbCkKICB9CgogIF9oYW5kbGVTdHJlYW1EYXRhIChpZCwgc3RhdGUpIHsKICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuX3N0cmVhbXNbaWRdCiAgICBpZiAoIXN0cmVhbSkgcmV0dXJuCgogICAgbGV0IGRhdGEgPSBudWxsCiAgICBpZiAoc3RyZWFtLl9pbml0aWF0b3IpIHsKICAgICAgZGF0YSA9IHRoaXMuX3Jlc3BvbnNlQXJyYXkuZGVjb2RlKHN0YXRlKQogICAgfSBlbHNlIHsKICAgICAgZGF0YSA9IHRoaXMuX3JlcXVlc3RBcnJheS5kZWNvZGUoc3RhdGUpCiAgICB9CgogICAgLy8gVE9ETzogU2hvdWxkIHdlIGJ1ZmZlciB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcnJheT8KICAgIGxldCBzdG9wID0gZmFsc2UKICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhKSB7CiAgICAgIHN0b3AgPSBzdHJlYW0ucHVzaChpdGVtKQogICAgfQoKICAgIGlmIChzdG9wID09PSBmYWxzZSkgewogICAgICBpZiAoIXN0cmVhbS5fc2VudFBhdXNlKSB7CiAgICAgICAgc3RyZWFtLl9zZW50UGF1c2UgPSB0cnVlCiAgICAgICAgdGhpcy5fc2VuZE1lc3NhZ2Uoc3RyZWFtLl9yZW1vdGVJZCwgTUVTU0FHRV9TRU5EIHwgU1RSRUFNX1BBVVNFKQogICAgICB9CiAgICB9CiAgfQoKICBfaGFuZGxlU3RyZWFtU2VuZCAoaWQsIGJpdGZpZWxkLCBzdGF0ZSkgewogICAgaWYgKGJpdGZpZWxkICYgU1RSRUFNX09QRU4pIHsKICAgICAgdGhpcy5faGFuZGxlU3RyZWFtT3BlbihpZCwgYml0ZmllbGQsIHN0YXRlKQogICAgfSBlbHNlIGlmIChiaXRmaWVsZCAmIFNUUkVBTV9DTE9TRSkgewogICAgICB0aGlzLl9oYW5kbGVTdHJlYW1DbG9zZShpZCwgYml0ZmllbGQsIHN0YXRlKQogICAgfSBlbHNlIGlmIChiaXRmaWVsZCAmIFNUUkVBTV9QQVVTRSkgewogICAgICB0aGlzLl9oYW5kbGVTdHJlYW1QYXVzZShpZCkKICAgIH0gZWxzZSBpZiAoYml0ZmllbGQgJiBTVFJFQU1fUkVTVU1FKSB7CiAgICAgIHRoaXMuX2hhbmRsZVN0cmVhbVJlc3VtZShpZCkKICAgIH0gZWxzZSBpZiAoYml0ZmllbGQgJiBTVFJFQU1fREFUQSkgewogICAgICB0aGlzLl9oYW5kbGVTdHJlYW1EYXRhKGlkLCBzdGF0ZSkKICAgIH0gZWxzZSBpZiAoYml0ZmllbGQgJiBTVFJFQU1fRU5EKSB7CiAgICAgIHRoaXMuX2hhbmRsZVN0cmVhbUVuZChpZCkKICAgIH0KICB9CgogIF9oYW5kbGVTZW5kIChpZCwgYml0ZmllbGQsIHN0YXRlKSB7CiAgICBpZiAoYml0ZmllbGQgJiBTVFJFQU1JTkdfTUFTSykgewogICAgICB0aGlzLl9oYW5kbGVTdHJlYW1TZW5kKGlkLCBiaXRmaWVsZCwgc3RhdGUpCiAgICB9IGVsc2UgewogICAgICB0aGlzLl9jYWxsT25TZW5kKHRoaXMuX3JlcXVlc3QuZGVjb2RlKHN0YXRlKSkKICAgIH0KICB9CgogIF9oYW5kbGVSZXF1ZXN0IChpZCwgYml0ZmllbGQsIHN0YXRlKSB7CiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybgogICAgaWYgKGJpdGZpZWxkICYgTUVTU0FHRV9TRU5EKSB7CiAgICAgIHRoaXMuX2hhbmRsZVNlbmQoaWQsIGJpdGZpZWxkLCBzdGF0ZSkKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KHRoaXMsIGlkLCBiaXRmaWVsZCwgdGhpcy5fcmVxdWVzdC5kZWNvZGUoc3RhdGUpKQogICAgICB0aGlzLl9jYWxsT25SZXF1ZXN0KHJlcSkKICAgIH0KICB9CgogIF9oYW5kbGVSZXNwb25zZSAocmVxLCBiaXRmaWVsZCwgc3RhdGUpIHsKICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuCiAgICBpZiAoYml0ZmllbGQgJiBNRVNTQUdFX0VSUk9SKSB7CiAgICAgIGNvbnN0IHsgZXJybm8sIG1lc3NhZ2UsIHN0YWNrLCBjb2RlIH0gPSBFcnJvck1lc3NhZ2UuZGVjb2RlKHN0YXRlKQogICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoKQogICAgICBlcnIuZXJybm8gPSBlcnJubwogICAgICBlcnIubWVzc2FnZSA9IG1lc3NhZ2UKICAgICAgZXJyLnN0YWNrID0gc3RhY2sKICAgICAgZXJyLmNvZGUgPSBjb2RlCiAgICAgIHJlcS5yZWplY3QoZXJyKQogICAgfSBlbHNlIHsKICAgICAgcmVxLnJlc29sdmUodGhpcy5fcmVzcG9uc2UuZGVjb2RlKHN0YXRlKSkKICAgIH0KICAgIHRoaXMuX3JwYy5fcmVxc1tyZXEuaWRdID0gbnVsbAogICAgdGhpcy5fcnBjLl9mcmVlLnB1c2gocmVxLmlkKQogIH0KCiAgX3NlbmRNZXNzYWdlIChpZCwgYml0ZmllbGQsIGRhdGEpIHsKICAgIHRoaXMuX3JwYy5fc2VuZE1lc3NhZ2UoewogICAgICBtZXRob2Q6IHRoaXMuX21ldGhvZCwKICAgICAgYml0ZmllbGQsCiAgICAgIGlkLAogICAgICBkYXRhCiAgICB9KQogIH0KCiAgcmVxdWVzdCAoZGF0YSkgewogICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdSUEMgZGVzdHJveWVkJykpCiAgICBjb25zdCByZXEgPSB0aGlzLl9ycGMuX2NyZWF0ZVJlcXVlc3QoKQogICAgdGhpcy5fc2VuZE1lc3NhZ2UocmVxLmlkLCBNRVNTQUdFX1JFUVVFU1QsIGMuZW5jb2RlKHRoaXMuX3JlcXVlc3QsIGRhdGEpKQogICAgcmV0dXJuIHJlcS5wcm9taXNlCiAgfQoKICBzZW5kIChkYXRhKSB7CiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybgogICAgdGhpcy5fc2VuZE1lc3NhZ2UoMCwgTUVTU0FHRV9TRU5ELCBjLmVuY29kZSh0aGlzLl9yZXF1ZXN0LCBkYXRhKSkKICB9CgogIGNyZWF0ZVJlcXVlc3RTdHJlYW0gKCkgewogICAgaWYgKHRoaXMuZGVzdHJveWVkKSB0aHJvdyBuZXcgRXJyb3IoJ1JQQyBkZXN0cm95ZWQnKQogICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVN0cmVhbSh0cnVlLCAtMSkKICB9CgogIGRlc3Ryb3kgKCkgewogICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlCiAgICBmb3IgKGNvbnN0IHMgb2YgdGhpcy5fc3RyZWFtcykgewogICAgICBpZiAocyA9PT0gbnVsbCkgY29udGludWUKICAgICAgcy5kZXN0cm95KG5ldyBFcnJvcignUlBDIGRlc3Ryb3llZCcpKQogICAgfQogIH0KfQoKbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBUaW55QnVmZmVyUlBDIHsKICBjb25zdHJ1Y3RvciAoc2VuZCkgewogICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZQogICAgdGhpcy5fc2VuZCA9IHNlbmQKICAgIHRoaXMuX2hhbmRsZXJzID0gW10KICAgIHRoaXMuX3BlbmRpbmcgPSBbXQogICAgdGhpcy5fcmVxcyA9IFtdCiAgICB0aGlzLl9mcmVlID0gW10KICAgIHRoaXMuX2NvcmtlZCA9IGZhbHNlCiAgfQoKICBfY3JlYXRlUmVxdWVzdCAoKSB7CiAgICBjb25zdCBpZCA9IHRoaXMuX2ZyZWUubGVuZ3RoID8gdGhpcy5fZnJlZS5wb3AoKSA6ICh0aGlzLl9yZXFzLnB1c2gobnVsbCkgLSAxKQogICAgY29uc3QgcmVxID0geyBpZCwgcHJvbWlzZTogbnVsbCwgcmVzb2x2ZTogbnVsbCwgcmVqZWN0OiBudWxsIH0KICAgIHRoaXMuX3JlcXNbaWRdID0gcmVxCiAgICByZXEucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgcmVxLnJlc29sdmUgPSByZXNvbHZlCiAgICAgIHJlcS5yZWplY3QgPSByZWplY3QKICAgIH0pCiAgICByZXR1cm4gcmVxCiAgfQoKICBfc2VuZE1lc3NhZ2UgKG1zZykgewogICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm4KICAgIGNvbnN0IGRhdGEgPSBjLmVuY29kZShNZXNzYWdlLCBtc2cpCiAgICBpZiAodGhpcy5fY29ya2VkKSB7CiAgICAgIHRoaXMuX3BlbmRpbmcucHVzaChkYXRhKQogICAgICByZXR1cm4KICAgIH0KICAgIHRoaXMuX3NlbmQoZGF0YSkKICB9CgogIHJlZ2lzdGVyIChpZCwgb3B0cyA9IHt9KSB7CiAgICBpZiAodGhpcy5faGFuZGxlcnNbaWRdKSB0aHJvdyBuZXcgRXJyb3IoJ0hhbmRsZXIgZm9yIHRoaXMgSUQgYWxyZWFkeSBleGlzdHMnKQogICAgd2hpbGUgKHRoaXMuX2hhbmRsZXJzLmxlbmd0aCA8PSBpZCkgdGhpcy5faGFuZGxlcnMucHVzaChudWxsKQogICAgY29uc3QgbWV0aG9kID0gbmV3IE1ldGhvZCh0aGlzLCBpZCwgb3B0cykKICAgIHRoaXMuX2hhbmRsZXJzW2lkXSA9IG1ldGhvZAogICAgcmV0dXJuIG1ldGhvZAogIH0KCiAgY29yayAoKSB7CiAgICB0aGlzLl9jb3JrZWQgPSB0cnVlCiAgfQoKICB1bmNvcmsgKCkgewogICAgdGhpcy5fY29ya2VkID0gZmFsc2UKICAgIC8vIFRPRE86IFVzZSBhIHNsYWIgcGF0dGVybiBoZXJlIHRvIGF2b2lkIHRoZSBjb25jYXQKICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHRoaXMuX3NlbmQoYjRhLmNvbmNhdCh0aGlzLl9wZW5kaW5nKSkKICAgIHRoaXMuX3BlbmRpbmcgPSBbXQogIH0KCiAgcmVjdiAoYnVmKSB7CiAgICBjb25zdCBzdGF0ZSA9IHsgc3RhcnQ6IDAsIGVuZDogYnVmLmxlbmd0aCwgYnVmZmVyOiBidWYgfQogICAgd2hpbGUgKHN0YXRlLnN0YXJ0IDwgc3RhdGUuZW5kKSB7CiAgICAgIGNvbnN0IHsgaWQsIGJpdGZpZWxkLCBtZXRob2QgfSA9IEhlYWRlci5kZWNvZGUoc3RhdGUpCiAgICAgIGlmIChiaXRmaWVsZCAmIFJFUVVFU1QpIHsKICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5faGFuZGxlcnNbbWV0aG9kXQogICAgICAgIGlmICghaGFuZGxlcikgdGhyb3cgbmV3IEVycm9yKCdHb3QgYSByZXF1ZXN0IGZvciBhbiB1bnN1cHBvcnRlZCBtZXRob2QnKQogICAgICAgIGVsc2UgaGFuZGxlci5faGFuZGxlUmVxdWVzdChpZCwgYml0ZmllbGQsIHN0YXRlKQogICAgICB9IGVsc2UgewogICAgICAgIGNvbnN0IHJlcSA9IHRoaXMuX3JlcXNbaWRdCiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuX2hhbmRsZXJzW21ldGhvZF0KICAgICAgICBpZiAoIXJlcSkgdGhyb3cgbmV3IEVycm9yKCdHb3QgYSByZXNwb25zZSBmb3IgYW4gaW52YWxpZCByZXF1ZXN0IElEJykKICAgICAgICBpZiAoIWhhbmRsZXIpIHRocm93IG5ldyBFcnJvcignR290IGEgcmVzcG9uc2UgZm9yIGFuIGludmFsaWQgbWV0aG9kIElEJykKICAgICAgICBoYW5kbGVyLl9oYW5kbGVSZXNwb25zZShyZXEsIGJpdGZpZWxkLCBzdGF0ZSkKICAgICAgfQogICAgfQogIH0KCiAgZGVzdHJveSAoKSB7CiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWUKICAgIHdoaWxlICh0aGlzLl9yZXFzLmxlbmd0aCkgewogICAgICBjb25zdCByZXEgPSB0aGlzLl9yZXFzLnBvcCgpCiAgICAgIGlmIChyZXEgPT09IG51bGwpIGNvbnRpbnVlCiAgICAgIHJlcS5yZWplY3QobmV3IEVycm9yKCdSUEMgZGVzdHJveWVkJykpCiAgICB9CiAgICBmb3IgKGNvbnN0IGggb2YgdGhpcy5faGFuZGxlcnMpIHsKICAgICAgaWYgKGggPT09IG51bGwpIGNvbnRpbnVlCiAgICAgIGguZGVzdHJveSgpCiAgICB9CiAgfQp9CmNvbnN0IGMgPSByZXF1aXJlKCdjb21wYWN0LWVuY29kaW5nJykKCmNvbnN0IEtOT1dOX0JZVEUgPSAweDc0IC8vICd0JyBmb3IgdGlueS1idWZmZXItcnBjCgpjb25zdCBIZWFkZXIgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgaCkgewogICAgYy51aW50LnByZWVuY29kZShzdGF0ZSwgS05PV05fQllURSkKICAgIGMudWludC5wcmVlbmNvZGUoc3RhdGUsIGgubWV0aG9kKQogICAgYy51aW50LnByZWVuY29kZShzdGF0ZSwgaC5pZCkKICAgIGMudWludC5wcmVlbmNvZGUoc3RhdGUsIGguYml0ZmllbGQpCiAgfSwKICBlbmNvZGUgKHN0YXRlLCBoKSB7CiAgICBjLnVpbnQuZW5jb2RlKHN0YXRlLCBLTk9XTl9CWVRFKQogICAgYy51aW50LmVuY29kZShzdGF0ZSwgaC5tZXRob2QpCiAgICBjLnVpbnQuZW5jb2RlKHN0YXRlLCBoLmlkKQogICAgYy51aW50LmVuY29kZShzdGF0ZSwgaC5iaXRmaWVsZCkKICB9LAogIGRlY29kZSAoc3RhdGUpIHsKICAgIGNvbnN0IGtub3duID0gYy51aW50LmRlY29kZShzdGF0ZSkKICAgIGlmIChrbm93biAhPT0gS05PV05fQllURSkgdGhyb3cgRXJyb3IoJ01lc3NhZ2UgZG9lcyBub3QgbG9vayBsaWtlIGEgVGlueVJQQyBtZXNzYWdlJykKCiAgICByZXR1cm4gewogICAgICBtZXRob2Q6IGMudWludC5kZWNvZGUoc3RhdGUpLAogICAgICBpZDogYy51aW50LmRlY29kZShzdGF0ZSksCiAgICAgIGJpdGZpZWxkOiBjLnVpbnQuZGVjb2RlKHN0YXRlKQogICAgfQogIH0KfQptb2R1bGUuZXhwb3J0cy5IZWFkZXIgPSBIZWFkZXIKCm1vZHVsZS5leHBvcnRzLk1lc3NhZ2UgPSB7CiAgcHJlZW5jb2RlIChzdGF0ZSwgbSkgewogICAgSGVhZGVyLnByZWVuY29kZShzdGF0ZSwgbSkKICAgIGlmIChtLmRhdGEpIGMucmF3LnByZWVuY29kZShzdGF0ZSwgbS5kYXRhKQogIH0sCiAgZW5jb2RlIChzdGF0ZSwgbSkgewogICAgSGVhZGVyLmVuY29kZShzdGF0ZSwgbSkKICAgIGlmIChtLmRhdGEpIGMucmF3LmVuY29kZShzdGF0ZSwgbS5kYXRhKQogIH0sCiAgZGVjb2RlIChzdGF0ZSkgewogICAgcmV0dXJuIHsKICAgICAgLi4uSGVhZGVyLmRlY29kZShzdGF0ZSksCiAgICAgIGRhdGE6IGMucmF3LmRlY29kZShzdGF0ZSkKICAgIH0KICB9Cn0KCm1vZHVsZS5leHBvcnRzLkVycm9yTWVzc2FnZSA9IHsKICBwcmVlbmNvZGUgKHN0YXRlLCBlKSB7CiAgICBzdGF0ZS5lbmQrKyAvLyBmbGFncwogICAgYy5pbnQucHJlZW5jb2RlKHN0YXRlLCBlLmVycm5vIHx8IDApCiAgICBpZiAoZS5tZXNzYWdlKSBjLnN0cmluZy5wcmVlbmNvZGUoc3RhdGUsIGUubWVzc2FnZSkKICAgIGlmIChlLnN0YWNrKSBjLnN0cmluZy5wcmVlbmNvZGUoc3RhdGUsIGUuc3RhY2spCiAgICBpZiAoZS5jb2RlKSBjLnN0cmluZy5wcmVlbmNvZGUoc3RhdGUsIGUuY29kZSkKICB9LAogIGVuY29kZSAoc3RhdGUsIGUpIHsKICAgIGNvbnN0IHN0YXJ0ID0gc3RhdGUuc3RhcnQrKyAvLyBmbGFncwogICAgYy5pbnQuZW5jb2RlKHN0YXRlLCBlLmVycm5vIHx8IDApCgogICAgbGV0IGZsYWdzID0gMAogICAgaWYgKGUubWVzc2FnZSkgewogICAgICBmbGFncyB8PSAxCiAgICAgIGMuc3RyaW5nLmVuY29kZShzdGF0ZSwgZS5tZXNzYWdlKQogICAgfQogICAgaWYgKGUuc3RhY2spIHsKICAgICAgZmxhZ3MgfD0gMgogICAgICBjLnN0cmluZy5lbmNvZGUoc3RhdGUsIGUuc3RhY2spCiAgICB9CiAgICBpZiAoZS5jb2RlKSB7CiAgICAgIGZsYWdzIHw9IDQKICAgICAgYy5zdHJpbmcuZW5jb2RlKHN0YXRlLCBlLmNvZGUpCiAgICB9CgogICAgc3RhdGUuYnVmZmVyW3N0YXJ0XSA9IGZsYWdzCiAgfSwKICBkZWNvZGUgKHN0YXRlKSB7CiAgICBjb25zdCBmbGFncyA9IGMudWludC5kZWNvZGUoc3RhdGUpCiAgICByZXR1cm4gewogICAgICBlcnJubzogYy5pbnQuZGVjb2RlKHN0YXRlKSwKICAgICAgbWVzc2FnZTogKGZsYWdzICYgMSkgIT09IDAgPyBjLnN0cmluZy5kZWNvZGUoc3RhdGUpIDogbnVsbCwKICAgICAgc3RhY2s6IChmbGFncyAmIDIpICE9PSAwID8gYy5zdHJpbmcuZGVjb2RlKHN0YXRlKSA6IG51bGwsCiAgICAgIGNvZGU6IChmbGFncyAmIDQpICE9PSAwID8gYy5zdHJpbmcuZGVjb2RlKHN0YXRlKSA6IG51bGwKICAgIH0KICB9Cn0KewogICJuYW1lIjogInRpbnktYnVmZmVyLXJwYyIsCiAgInZlcnNpb24iOiAiMi4yLjIiLAogICJkZXNjcmlwdGlvbiI6ICJMaWdodHdlaWdodCBiaW5hcnkgUlBDIiwKICAibWFpbiI6ICJpbmRleC5qcyIsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJzdGFuZGFyZCAmJiBicml0dGxlIHRlc3QuanMiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vdGlueS1idWZmZXItcnBjLmdpdCIKICB9LAogICJhdXRob3IiOiAiSG9sZXB1bmNoIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3RpbnktYnVmZmVyLXJwYy9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3RpbnktYnVmZmVyLXJwYyNyZWFkbWUiLAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy4yLjEiLAogICAgInN0YW5kYXJkIjogIl4xNy4wLjAiCiAgfSwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImI0YSI6ICJeMS42LjMiLAogICAgImNvbXBhY3QtZW5jb2RpbmciOiAiXjIuMTEuMCIsCiAgICAic2FmZXR5LWNhdGNoIjogIl4xLjAuMiIsCiAgICAic3RyZWFteCI6ICJeMi4xMy4yIgogIH0KfQpyZXF1aXJlLmFkZG9uID0gcmVxdWlyZSgncmVxdWlyZS1hZGRvbicpCgptb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUuYWRkb24oJy4nLCBfX2ZpbGVuYW1lKQovLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgpjb25zdCB2NFNlZyA9ICcoPzpbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pJwpjb25zdCB2NFN0ciA9IGAoJHt2NFNlZ31bLl0pezN9JHt2NFNlZ31gCmNvbnN0IElQdjRQYXR0ZXJuID0gbmV3IFJlZ0V4cChgXiR7djRTdHJ9JGApCgpjb25zdCB2NlNlZyA9ICcoPzpbMC05YS1mQS1GXXsxLDR9KScKY29uc3QgSVB2NlBhdHRlcm4gPSBuZXcgUmVnRXhwKCdeKCcgKwogIGAoPzoke3Y2U2VnfTopezd9KD86JHt2NlNlZ318Oil8YCArCiAgYCg/OiR7djZTZWd9Oil7Nn0oPzoke3Y0U3RyfXw6JHt2NlNlZ318Oil8YCArCiAgYCg/OiR7djZTZWd9Oil7NX0oPzo6JHt2NFN0cn18KDoke3Y2U2VnfSl7MSwyfXw6KXxgICsKICBgKD86JHt2NlNlZ306KXs0fSg/Oig6JHt2NlNlZ30pezAsMX06JHt2NFN0cn18KDoke3Y2U2VnfSl7MSwzfXw6KXxgICsKICBgKD86JHt2NlNlZ306KXszfSg/Oig6JHt2NlNlZ30pezAsMn06JHt2NFN0cn18KDoke3Y2U2VnfSl7MSw0fXw6KXxgICsKICBgKD86JHt2NlNlZ306KXsyfSg/Oig6JHt2NlNlZ30pezAsM306JHt2NFN0cn18KDoke3Y2U2VnfSl7MSw1fXw6KXxgICsKICBgKD86JHt2NlNlZ306KXsxfSg/Oig6JHt2NlNlZ30pezAsNH06JHt2NFN0cn18KDoke3Y2U2VnfSl7MSw2fXw6KXxgICsKICBgKD86OigoPzo6JHt2NlNlZ30pezAsNX06JHt2NFN0cn18KD86OiR7djZTZWd9KXsxLDd9fDopKWAgKwonKSglWzAtOWEtekEtWi0uOl17MSx9KT8kJykKCmNvbnN0IGlzSVB2NCA9IGV4cG9ydHMuaXNJUHY0ID0gZnVuY3Rpb24gaXNJUHY0IChob3N0KSB7CiAgcmV0dXJuIElQdjRQYXR0ZXJuLnRlc3QoaG9zdCkKfQoKY29uc3QgaXNJUHY2ID0gZXhwb3J0cy5pc0lQdjYgPSBmdW5jdGlvbiBpc0lQdjYgKGhvc3QpIHsKICByZXR1cm4gSVB2NlBhdHRlcm4udGVzdChob3N0KQp9CgpleHBvcnRzLmlzSVAgPSBmdW5jdGlvbiBpc0lQIChob3N0KSB7CiAgaWYgKGlzSVB2NChob3N0KSkgcmV0dXJuIDQKICBpZiAoaXNJUHY2KGhvc3QpKSByZXR1cm4gNgogIHJldHVybiAwCn0KY29uc3QgZXZlbnRzID0gcmVxdWlyZSgnZXZlbnRzJykKY29uc3QgYjRhID0gcmVxdWlyZSgnYjRhJykKY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4uL2JpbmRpbmcnKQoKbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBOZXR3b3JrSW50ZXJmYWNlcyBleHRlbmRzIGV2ZW50cy5FdmVudEVtaXR0ZXIgewogIGNvbnN0cnVjdG9yICh1ZHgpIHsKICAgIHN1cGVyKCkKCiAgICB0aGlzLl9oYW5kbGUgPSBiNGEuYWxsb2NVbnNhZmUoYmluZGluZy5zaXplb2ZfdWR4X25hcGlfaW50ZXJmYWNlX2V2ZW50X3QpCiAgICB0aGlzLl93YXRjaGluZyA9IGZhbHNlCiAgICB0aGlzLl9kZXN0cm95aW5nID0gbnVsbAoKICAgIGJpbmRpbmcudWR4X25hcGlfaW50ZXJmYWNlX2V2ZW50X2luaXQodWR4Ll9oYW5kbGUsIHRoaXMuX2hhbmRsZSwgdGhpcywKICAgICAgdGhpcy5fb25ldmVudCwKICAgICAgdGhpcy5fb25jbG9zZQogICAgKQoKICAgIHRoaXMuaW50ZXJmYWNlcyA9IGJpbmRpbmcudWR4X25hcGlfaW50ZXJmYWNlX2V2ZW50X2dldF9hZGRycyh0aGlzLl9oYW5kbGUpCiAgfQoKICBfb25jbG9zZSAoKSB7CiAgICB0aGlzLmVtaXQoJ2Nsb3NlJykKICB9CgogIF9vbmV2ZW50ICgpIHsKICAgIHRoaXMuaW50ZXJmYWNlcyA9IGJpbmRpbmcudWR4X25hcGlfaW50ZXJmYWNlX2V2ZW50X2dldF9hZGRycyh0aGlzLl9oYW5kbGUpCgogICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCB0aGlzLmludGVyZmFjZXMpCiAgfQoKICB3YXRjaCAoKSB7CiAgICBpZiAodGhpcy5fd2F0Y2hpbmcpIHJldHVybiB0aGlzCiAgICB0aGlzLl93YXRjaGluZyA9IHRydWUKCiAgICBiaW5kaW5nLnVkeF9uYXBpX2ludGVyZmFjZV9ldmVudF9zdGFydCh0aGlzLl9oYW5kbGUpCgogICAgcmV0dXJuIHRoaXMKICB9CgogIHVud2F0Y2ggKCkgewogICAgaWYgKCF0aGlzLl93YXRjaGluZykgcmV0dXJuIHRoaXMKICAgIHRoaXMuX3dhdGNoaW5nID0gZmFsc2UKCiAgICBiaW5kaW5nLnVkeF9uYXBpX2ludGVyZmFjZV9ldmVudF9zdG9wKHRoaXMuX2hhbmRsZSkKCiAgICByZXR1cm4gdGhpcwogIH0KCiAgYXN5bmMgZGVzdHJveSAoKSB7CiAgICBpZiAodGhpcy5fZGVzdHJveWluZykgcmV0dXJuIHRoaXMuX2Rlc3Ryb3lpbmcKICAgIHRoaXMuX2Rlc3Ryb3lpbmcgPSBldmVudHMub25jZSh0aGlzLCAnY2xvc2UnKQoKICAgIGJpbmRpbmcudWR4X25hcGlfaW50ZXJmYWNlX2V2ZW50X2Nsb3NlKHRoaXMuX2hhbmRsZSkKCiAgICByZXR1cm4gdGhpcy5fZGVzdHJveWluZwogIH0KCiAgW1N5bWJvbC5pdGVyYXRvcl0gKCkgewogICAgcmV0dXJuIHRoaXMuaW50ZXJmYWNlc1tTeW1ib2wuaXRlcmF0b3JdKCkKICB9Cn0KY29uc3QgZXZlbnRzID0gcmVxdWlyZSgnZXZlbnRzJykKY29uc3QgYjRhID0gcmVxdWlyZSgnYjRhJykKY29uc3QgYmluZGluZyA9IHJlcXVpcmUoJy4uL2JpbmRpbmcnKQpjb25zdCBpcCA9IHJlcXVpcmUoJy4vaXAnKQoKbW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBVRFhTb2NrZXQgZXh0ZW5kcyBldmVudHMuRXZlbnRFbWl0dGVyIHsKICBjb25zdHJ1Y3RvciAodWR4LCBvcHRzID0ge30pIHsKICAgIHN1cGVyKCkKCiAgICB0aGlzLnVkeCA9IHVkeAoKICAgIHRoaXMuX2hhbmRsZSA9IGI0YS5hbGxvY1Vuc2FmZShiaW5kaW5nLnNpemVvZl91ZHhfbmFwaV9zb2NrZXRfdCkKICAgIHRoaXMuX2luaXRlZCA9IGZhbHNlCiAgICB0aGlzLl9ob3N0ID0gbnVsbAogICAgdGhpcy5fZmFtaWx5ID0gMAogICAgdGhpcy5faXB2Nk9ubHkgPSBvcHRzLmlwdjZPbmx5ID09PSB0cnVlCiAgICB0aGlzLl9yZXVzZUFkZHJlc3MgPSBvcHRzLnJldXNlQWRkcmVzcyA9PT0gdHJ1ZQogICAgdGhpcy5fcG9ydCA9IDAKICAgIHRoaXMuX3JlcXMgPSBbXQogICAgdGhpcy5fZnJlZSA9IFtdCiAgICB0aGlzLl9jbG9zaW5nID0gbnVsbAogICAgdGhpcy5fY2xvc2VkID0gZmFsc2UKCiAgICB0aGlzLl92aWV3NjQgPSBuZXcgQmlnVWludDY0QXJyYXkodGhpcy5faGFuZGxlLmJ1ZmZlciwgdGhpcy5faGFuZGxlLmJ5dGVPZmZzZXQsIHRoaXMuX2hhbmRsZS5ieXRlTGVuZ3RoID4+IDMpCgogICAgdGhpcy5zdHJlYW1zID0gbmV3IFNldCgpCgogICAgdGhpcy51c2VyRGF0YSA9IG51bGwKICB9CgogIGdldCBib3VuZCAoKSB7CiAgICByZXR1cm4gdGhpcy5fcG9ydCAhPT0gMAogIH0KCiAgZ2V0IGNsb3NpbmcgKCkgewogICAgcmV0dXJuIHRoaXMuX2Nsb3NpbmcgIT09IG51bGwKICB9CgogIGdldCBpZGxlICgpIHsKICAgIHJldHVybiB0aGlzLnN0cmVhbXMuc2l6ZSA9PT0gMAogIH0KCiAgZ2V0IGJ1c3kgKCkgewogICAgcmV0dXJuIHRoaXMuc3RyZWFtcy5zaXplID4gMAogIH0KCiAgZ2V0IGJ5dGVzVHJhbnNtaXR0ZWQgKCkgewogICAgaWYgKHRoaXMuX2luaXRlZCAhPT0gdHJ1ZSkgcmV0dXJuIDAKICAgIHJldHVybiBOdW1iZXIodGhpcy5fdmlldzY0W2JpbmRpbmcub2Zmc2V0b2ZfdWR4X3NvY2tldF90X2J5dGVzX3R4ID4+IDNdKQogIH0KCiAgZ2V0IHBhY2tldHNUcmFuc21pdHRlZCAoKSB7CiAgICBpZiAodGhpcy5faW5pdGVkICE9PSB0cnVlKSByZXR1cm4gMAogICAgcmV0dXJuIE51bWJlcih0aGlzLl92aWV3NjRbYmluZGluZy5vZmZzZXRvZl91ZHhfc29ja2V0X3RfcGFja2V0c190eCA+PiAzXSkKICB9CgogIGdldCBieXRlc1JlY2VpdmVkICgpIHsKICAgIGlmICh0aGlzLl9pbml0ZWQgIT09IHRydWUpIHJldHVybiAwCiAgICByZXR1cm4gTnVtYmVyKHRoaXMuX3ZpZXc2NFtiaW5kaW5nLm9mZnNldG9mX3VkeF9zb2NrZXRfdF9ieXRlc19yeCA+PiAzXSkKICB9CgogIGdldCBwYWNrZXRzUmVjZWl2ZWQgKCkgewogICAgaWYgKHRoaXMuX2luaXRlZCAhPT0gdHJ1ZSkgcmV0dXJuIDAKICAgIHJldHVybiBOdW1iZXIodGhpcy5fdmlldzY0W2JpbmRpbmcub2Zmc2V0b2ZfdWR4X3NvY2tldF90X3BhY2tldHNfcnggPj4gM10pCiAgfQoKICBnZXQgcGFja2V0c0Ryb3BwZWRCeUtlcm5lbCAoKSB7CiAgICBpZiAodGhpcy5faW5pdGVkICE9PSB0cnVlKSByZXR1cm4gMAogICAgcmV0dXJuIE51bWJlcih0aGlzLl92aWV3NjRbYmluZGluZy5vZmZzZXRvZl91ZHhfc29ja2V0X3RfcGFja2V0c19kcm9wcGVkX2J5X2tlcm5lbCA+PiAzXSkKICB9CgogIHRvSlNPTiAoKSB7CiAgICByZXR1cm4gewogICAgICBib3VuZDogdGhpcy5ib3VuZCwKICAgICAgY2xvc2luZzogdGhpcy5jbG9zaW5nLAogICAgICBzdHJlYW1zOiB0aGlzLnN0cmVhbXMuc2l6ZSwKICAgICAgYWRkcmVzczogdGhpcy5hZGRyZXNzKCksCiAgICAgIGlwdjZPbmx5OiB0aGlzLl9pcHY2T25seSwKICAgICAgcmV1c2VBZGRyZXNzOiB0aGlzLl9yZXVzZUFkZHJlc3MsCiAgICAgIGlkbGU6IHRoaXMuaWRsZSwKICAgICAgYnVzeTogdGhpcy5idXN5CiAgICB9CiAgfQoKICBfaW5pdCAoKSB7CiAgICBpZiAodGhpcy5faW5pdGVkKSByZXR1cm4KCiAgICBiaW5kaW5nLnVkeF9uYXBpX3NvY2tldF9pbml0KHRoaXMudWR4Ll9oYW5kbGUsIHRoaXMuX2hhbmRsZSwgdGhpcywKICAgICAgdGhpcy5fb25zZW5kLAogICAgICB0aGlzLl9vbm1lc3NhZ2UsCiAgICAgIHRoaXMuX29uY2xvc2UsCiAgICAgIHRoaXMuX3JlYWxsb2NNZXNzYWdlCiAgICApCgogICAgdGhpcy5faW5pdGVkID0gdHJ1ZQogIH0KCiAgX29uc2VuZCAoaWQsIGVycikgewogICAgY29uc3QgcmVxID0gdGhpcy5fcmVxc1tpZF0KCiAgICBjb25zdCBvbmZsdXNoID0gcmVxLm9uZmx1c2gKCiAgICByZXEuYnVmZmVyID0gbnVsbAogICAgcmVxLm9uZmx1c2ggPSBudWxsCgogICAgdGhpcy5fZnJlZS5wdXNoKGlkKQoKICAgIG9uZmx1c2goZXJyID49IDApCgogICAgLy8gZ2MgdGhlIGZyZWUgbGlzdAogICAgaWYgKHRoaXMuX2ZyZWUubGVuZ3RoID49IDE2ICYmIHRoaXMuX2ZyZWUubGVuZ3RoID09PSB0aGlzLl9yZXFzLmxlbmd0aCkgewogICAgICB0aGlzLl9mcmVlID0gW10KICAgICAgdGhpcy5fcmVxcyA9IFtdCiAgICB9CiAgfQoKICBfb25tZXNzYWdlIChsZW4sIHBvcnQsIGhvc3QsIGZhbWlseSkgewogICAgdGhpcy5lbWl0KCdtZXNzYWdlJywgdGhpcy51ZHguX2NvbnN1bWVNZXNzYWdlKGxlbiksIHsgaG9zdCwgZmFtaWx5LCBwb3J0IH0pCiAgICByZXR1cm4gdGhpcy51ZHguX2J1ZmZlcgogIH0KCiAgX29uY2xvc2UgKCkgewogICAgdGhpcy5lbWl0KCdjbG9zZScpCiAgfQoKICBfcmVhbGxvY01lc3NhZ2UgKCkgewogICAgcmV0dXJuIHRoaXMudWR4Ll9yZWFsbG9jTWVzc2FnZSgpCiAgfQoKICBfb25pZGxlICgpIHsKICAgIHRoaXMuZW1pdCgnaWRsZScpCiAgfQoKICBfb25idXN5ICgpIHsKICAgIHRoaXMuZW1pdCgnYnVzeScpCiAgfQoKICBfYWRkU3RyZWFtIChzdHJlYW0pIHsKICAgIGlmICh0aGlzLnN0cmVhbXMuaGFzKHN0cmVhbSkpIHJldHVybiBmYWxzZQogICAgdGhpcy5zdHJlYW1zLmFkZChzdHJlYW0pCiAgICBpZiAodGhpcy5zdHJlYW1zLnNpemUgPT09IDEpIHRoaXMuX29uYnVzeSgpCiAgICByZXR1cm4gdHJ1ZQogIH0KCiAgX3JlbW92ZVN0cmVhbSAoc3RyZWFtKSB7CiAgICBpZiAoIXRoaXMuc3RyZWFtcy5oYXMoc3RyZWFtKSkgcmV0dXJuIGZhbHNlCiAgICB0aGlzLnN0cmVhbXMuZGVsZXRlKHN0cmVhbSkKICAgIGNvbnN0IGNsb3NlZCA9IHRoaXMuX2Nsb3NlTWF5YmUoKQogICAgaWYgKHRoaXMuaWRsZSAmJiAhY2xvc2VkKSB0aGlzLl9vbmlkbGUoKQogICAgcmV0dXJuIHRydWUKICB9CgogIGFkZHJlc3MgKCkgewogICAgaWYgKCF0aGlzLmJvdW5kKSByZXR1cm4gbnVsbAogICAgcmV0dXJuIHsgaG9zdDogdGhpcy5faG9zdCwgZmFtaWx5OiB0aGlzLl9mYW1pbHksIHBvcnQ6IHRoaXMuX3BvcnQgfQogIH0KCiAgYmluZCAocG9ydCwgaG9zdCkgewogICAgaWYgKHRoaXMuYm91bmQpIHRocm93IG5ldyBFcnJvcignQWxyZWFkeSBib3VuZCcpCiAgICBpZiAodGhpcy5jbG9zaW5nKSB0aHJvdyBuZXcgRXJyb3IoJ1NvY2tldCBpcyBjbG9zZWQnKQoKICAgIGlmICghcG9ydCkgcG9ydCA9IDAKCiAgICBsZXQgZmxhZ3MgPSAwCiAgICBpZiAodGhpcy5faXB2Nk9ubHkpIGZsYWdzIHw9IGJpbmRpbmcuVVZfVURQX0lQVjZPTkxZCiAgICBpZiAodGhpcy5fcmV1c2VBZGRyZXNzKSBmbGFncyB8PSBiaW5kaW5nLlVWX1VEUF9SRVVTRUFERFIKCiAgICBsZXQgZmFtaWx5CgogICAgaWYgKGhvc3QpIHsKICAgICAgZmFtaWx5ID0gaXAuaXNJUChob3N0KQogICAgICBpZiAoIWZhbWlseSkgdGhyb3cgbmV3IEVycm9yKGAke2hvc3R9IGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3NgKQoKICAgICAgaWYgKCF0aGlzLl9pbml0ZWQpIHRoaXMuX2luaXQoKQoKICAgICAgdGhpcy5fcG9ydCA9IGJpbmRpbmcudWR4X25hcGlfc29ja2V0X2JpbmQodGhpcy5faGFuZGxlLCBwb3J0LCBob3N0LCBmYW1pbHksIGZsYWdzKQogICAgfSBlbHNlIHsKICAgICAgaWYgKCF0aGlzLl9pbml0ZWQpIHRoaXMuX2luaXQoKQoKICAgICAgdHJ5IHsKICAgICAgICBob3N0ID0gJzo6JwogICAgICAgIGZhbWlseSA9IDYKICAgICAgICB0aGlzLl9wb3J0ID0gYmluZGluZy51ZHhfbmFwaV9zb2NrZXRfYmluZCh0aGlzLl9oYW5kbGUsIHBvcnQsIGhvc3QsIGZhbWlseSwgZmxhZ3MpCiAgICAgIH0gY2F0Y2ggewogICAgICAgIGhvc3QgPSAnMC4wLjAuMCcKICAgICAgICBmYW1pbHkgPSA0CiAgICAgICAgdGhpcy5fcG9ydCA9IGJpbmRpbmcudWR4X25hcGlfc29ja2V0X2JpbmQodGhpcy5faGFuZGxlLCBwb3J0LCBob3N0LCBmYW1pbHksIGZsYWdzKQogICAgICB9CiAgICB9CgogICAgdGhpcy5faG9zdCA9IGhvc3QKICAgIHRoaXMuX2ZhbWlseSA9IGZhbWlseQoKICAgIHRoaXMuZW1pdCgnbGlzdGVuaW5nJykKICB9CgogIGFzeW5jIGNsb3NlICgpIHsKICAgIGlmICh0aGlzLl9jbG9zaW5nKSByZXR1cm4gdGhpcy5fY2xvc2luZwogICAgdGhpcy5fY2xvc2luZyA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGhpcy5vbmNlKCdjbG9zZScsIHJlc29sdmUpKQogICAgdGhpcy5fY2xvc2VNYXliZSgpCiAgICByZXR1cm4gdGhpcy5fY2xvc2luZwogIH0KCiAgX2Nsb3NlTWF5YmUgKCkgewogICAgaWYgKHRoaXMuX2Nsb3NlZCB8fCB0aGlzLl9jbG9zaW5nID09PSBudWxsKSByZXR1cm4gdGhpcy5fY2xvc2VkCgogICAgaWYgKCF0aGlzLl9pbml0ZWQpIHsKICAgICAgdGhpcy5fY2xvc2VkID0gdHJ1ZQogICAgICB0aGlzLmVtaXQoJ2Nsb3NlJykKICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICBpZiAodGhpcy5pZGxlKSB7CiAgICAgIGJpbmRpbmcudWR4X25hcGlfc29ja2V0X2Nsb3NlKHRoaXMuX2hhbmRsZSkKICAgICAgdGhpcy5fY2xvc2VkID0gdHJ1ZQogICAgfQoKICAgIHJldHVybiB0aGlzLl9jbG9zZWQKICB9CgogIHNldFRUTCAodHRsKSB7CiAgICBpZiAoIXRoaXMuX2luaXRlZCkgdGhyb3cgbmV3IEVycm9yKCdTb2NrZXQgbm90IGFjdGl2ZScpCiAgICBiaW5kaW5nLnVkeF9uYXBpX3NvY2tldF9zZXRfdHRsKHRoaXMuX2hhbmRsZSwgdHRsKQogIH0KCiAgZ2V0UmVjdkJ1ZmZlclNpemUgKCkgewogICAgaWYgKCF0aGlzLl9pbml0ZWQpIHRocm93IG5ldyBFcnJvcignU29ja2V0IG5vdCBhY3RpdmUnKQogICAgcmV0dXJuIGJpbmRpbmcudWR4X25hcGlfc29ja2V0X2dldF9yZWN2X2J1ZmZlcl9zaXplKHRoaXMuX2hhbmRsZSkKICB9CgogIHNldFJlY3ZCdWZmZXJTaXplIChzaXplKSB7CiAgICBpZiAoIXRoaXMuX2luaXRlZCkgdGhyb3cgbmV3IEVycm9yKCdTb2NrZXQgbm90IGFjdGl2ZScpCiAgICByZXR1cm4gYmluZGluZy51ZHhfbmFwaV9zb2NrZXRfc2V0X3JlY3ZfYnVmZmVyX3NpemUodGhpcy5faGFuZGxlLCBzaXplKQogIH0KCiAgZ2V0U2VuZEJ1ZmZlclNpemUgKCkgewogICAgaWYgKCF0aGlzLl9pbml0ZWQpIHRocm93IG5ldyBFcnJvcignU29ja2V0IG5vdCBhY3RpdmUnKQogICAgcmV0dXJuIGJpbmRpbmcudWR4X25hcGlfc29ja2V0X2dldF9zZW5kX2J1ZmZlcl9zaXplKHRoaXMuX2hhbmRsZSkKICB9CgogIHNldFNlbmRCdWZmZXJTaXplIChzaXplKSB7CiAgICBpZiAoIXRoaXMuX2luaXRlZCkgdGhyb3cgbmV3IEVycm9yKCdTb2NrZXQgbm90IGFjdGl2ZScpCiAgICByZXR1cm4gYmluZGluZy51ZHhfbmFwaV9zb2NrZXRfc2V0X3NlbmRfYnVmZmVyX3NpemUodGhpcy5faGFuZGxlLCBzaXplKQogIH0KCiAgYWRkTWVtYmVyc2hpcCAoZ3JvdXAsIGlmYWNlQWRkcmVzcykgewogICAgaWYgKCF0aGlzLl9pbml0ZWQpIHRocm93IG5ldyBFcnJvcignU29ja2V0IG5vdCBhY3RpdmUnKQogICAgcmV0dXJuIGJpbmRpbmcudWR4X25hcGlfc29ja2V0X3NldF9tZW1iZXJzaGlwKHRoaXMuX2hhbmRsZSwgZ3JvdXAsIGlmYWNlQWRkcmVzcyB8fCAnJywgdHJ1ZSkKICB9CgogIGRyb3BNZW1iZXJzaGlwIChncm91cCwgaWZhY2VBZGRyZXNzKSB7CiAgICBpZiAoIXRoaXMuX2luaXRlZCkgdGhyb3cgbmV3IEVycm9yKCdTb2NrZXQgbm90IGFjdGl2ZScpCiAgICByZXR1cm4gYmluZGluZy51ZHhfbmFwaV9zb2NrZXRfc2V0X21lbWJlcnNoaXAodGhpcy5faGFuZGxlLCBncm91cCwgaWZhY2VBZGRyZXNzIHx8ICcnLCBmYWxzZSkKICB9CgogIGFzeW5jIHNlbmQgKGJ1ZmZlciwgcG9ydCwgaG9zdCwgdHRsKSB7CiAgICBpZiAodGhpcy5jbG9zaW5nKSByZXR1cm4gZmFsc2UKCiAgICBpZiAoIWhvc3QpIGhvc3QgPSAnMTI3LjAuMC4xJwoKICAgIGNvbnN0IGZhbWlseSA9IGlwLmlzSVAoaG9zdCkKICAgIGlmICghZmFtaWx5KSB0aHJvdyBuZXcgRXJyb3IoYCR7aG9zdH0gaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzc2ApCgogICAgaWYgKCF0aGlzLmJvdW5kKSB0aGlzLmJpbmQoMCkKCiAgICBjb25zdCBpZCA9IHRoaXMuX2FsbG9jU2VuZCgpCiAgICBjb25zdCByZXEgPSB0aGlzLl9yZXFzW2lkXQoKICAgIHJlcS5idWZmZXIgPSBidWZmZXIKCiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgcmVxLm9uZmx1c2ggPSByZXNvbHZlCiAgICB9KQoKICAgIGJpbmRpbmcudWR4X25hcGlfc29ja2V0X3NlbmRfdHRsKHRoaXMuX2hhbmRsZSwgcmVxLmhhbmRsZSwgaWQsIGJ1ZmZlciwgcG9ydCwgaG9zdCwgZmFtaWx5LCB0dGwgfHwgMCkKCiAgICByZXR1cm4gcHJvbWlzZQogIH0KCiAgdHJ5U2VuZCAoYnVmZmVyLCBwb3J0LCBob3N0LCB0dGwpIHsKICAgIGlmICh0aGlzLmNsb3NpbmcpIHJldHVybgoKICAgIGlmICghaG9zdCkgaG9zdCA9ICcxMjcuMC4wLjEnCgogICAgY29uc3QgZmFtaWx5ID0gaXAuaXNJUChob3N0KQogICAgaWYgKCFmYW1pbHkpIHRocm93IG5ldyBFcnJvcihgJHtob3N0fSBpcyBub3QgYSB2YWxpZCBJUCBhZGRyZXNzYCkKCiAgICBpZiAoIXRoaXMuYm91bmQpIHRoaXMuYmluZCgwKQoKICAgIGNvbnN0IGlkID0gdGhpcy5fYWxsb2NTZW5kKCkKICAgIGNvbnN0IHJlcSA9IHRoaXMuX3JlcXNbaWRdCgogICAgcmVxLmJ1ZmZlciA9IGJ1ZmZlcgogICAgcmVxLm9uZmx1c2ggPSBub29wCgogICAgYmluZGluZy51ZHhfbmFwaV9zb2NrZXRfc2VuZF90dGwodGhpcy5faGFuZGxlLCByZXEuaGFuZGxlLCBpZCwgYnVmZmVyLCBwb3J0LCBob3N0LCBmYW1pbHksIHR0bCB8fCAwKQogIH0KCiAgX2FsbG9jU2VuZCAoKSB7CiAgICBpZiAodGhpcy5fZnJlZS5sZW5ndGggPiAwKSByZXR1cm4gdGhpcy5fZnJlZS5wb3AoKQogICAgY29uc3QgaGFuZGxlID0gYjRhLmFsbG9jVW5zYWZlKGJpbmRpbmcuc2l6ZW9mX3VkeF9zb2NrZXRfc2VuZF90KQogICAgcmV0dXJuIHRoaXMuX3JlcXMucHVzaCh7IGhhbmRsZSwgYnVmZmVyOiBudWxsLCBvbmZsdXNoOiBudWxsIH0pIC0gMQogIH0KfQoKZnVuY3Rpb24gbm9vcCAoKSB7fQpjb25zdCBzdHJlYW14ID0gcmVxdWlyZSgnc3RyZWFteCcpCmNvbnN0IGI0YSA9IHJlcXVpcmUoJ2I0YScpCmNvbnN0IGJpbmRpbmcgPSByZXF1aXJlKCcuLi9iaW5kaW5nJykKY29uc3QgaXAgPSByZXF1aXJlKCcuL2lwJykKCmNvbnN0IE1BWF9QQUNLRVQgPSAyMDQ4CmNvbnN0IEJVRkZFUl9TSVpFID0gNjU1MzYgKyBNQVhfUEFDS0VUCgptb2R1bGUuZXhwb3J0cyA9IGNsYXNzIFVEWFN0cmVhbSBleHRlbmRzIHN0cmVhbXguRHVwbGV4IHsKICBjb25zdHJ1Y3RvciAodWR4LCBpZCwgb3B0cyA9IHt9KSB7CiAgICBzdXBlcih7IG1hcFdyaXRhYmxlOiB0b0J1ZmZlciwgZWFnZXJPcGVuOiB0cnVlIH0pCgogICAgdGhpcy51ZHggPSB1ZHgKICAgIHRoaXMuc29ja2V0ID0gbnVsbAoKICAgIHRoaXMuX2hhbmRsZSA9IGI0YS5hbGxvY1Vuc2FmZShiaW5kaW5nLnNpemVvZl91ZHhfbmFwaV9zdHJlYW1fdCkKICAgIHRoaXMuX3ZpZXcgPSBuZXcgVWludDMyQXJyYXkodGhpcy5faGFuZGxlLmJ1ZmZlciwgdGhpcy5faGFuZGxlLmJ5dGVPZmZzZXQsIHRoaXMuX2hhbmRsZS5ieXRlTGVuZ3RoID4+IDIpCiAgICB0aGlzLl92aWV3MTYgPSBuZXcgVWludDE2QXJyYXkodGhpcy5faGFuZGxlLmJ1ZmZlciwgdGhpcy5faGFuZGxlLmJ5dGVPZmZzZXQsIHRoaXMuX2hhbmRsZS5ieXRlTGVuZ3RoID4+IDEpCiAgICB0aGlzLl92aWV3NjQgPSBuZXcgQmlnVWludDY0QXJyYXkodGhpcy5faGFuZGxlLmJ1ZmZlciwgdGhpcy5faGFuZGxlLmJ5dGVPZmZzZXQsIHRoaXMuX2hhbmRsZS5ieXRlTGVuZ3RoID4+IDMpCgogICAgdGhpcy5fd3JlcXMgPSBbXQogICAgdGhpcy5fd2ZyZWUgPSBbXQoKICAgIHRoaXMuX3NyZXFzID0gW10KICAgIHRoaXMuX3NmcmVlID0gW10KICAgIHRoaXMuX2Nsb3NlZCA9IGZhbHNlCgogICAgdGhpcy5fZmx1c2hpbmcgPSAwCiAgICB0aGlzLl9mbHVzaGVzID0gW10KCiAgICB0aGlzLl9idWZmZXIgPSBudWxsCiAgICB0aGlzLl9yZWFsbG9jRGF0YSgpCgogICAgdGhpcy5fb253cml0ZSA9IG51bGwKICAgIHRoaXMuX29uZGVzdHJveSA9IG51bGwKICAgIHRoaXMuX2ZpcmV3YWxsID0gb3B0cy5maXJld2FsbCB8fCBmaXJld2FsbEFsbAoKICAgIHRoaXMuX3JlbW90ZUNoYW5naW5nID0gbnVsbAogICAgdGhpcy5fcHJldmlvdXNTb2NrZXQgPSBudWxsCgogICAgdGhpcy5pZCA9IGlkCiAgICB0aGlzLnJlbW90ZUlkID0gMAogICAgdGhpcy5yZW1vdGVIb3N0ID0gbnVsbAogICAgdGhpcy5yZW1vdGVGYW1pbHkgPSAwCiAgICB0aGlzLnJlbW90ZVBvcnQgPSAwCgogICAgdGhpcy51c2VyRGF0YSA9IG51bGwKCiAgICBiaW5kaW5nLnVkeF9uYXBpX3N0cmVhbV9pbml0KHRoaXMudWR4Ll9oYW5kbGUsIHRoaXMuX2hhbmRsZSwgaWQsIG9wdHMuZnJhbWVkID8gMSA6IDAsIHRoaXMsCiAgICAgIHRoaXMuX29uZGF0YSwKICAgICAgdGhpcy5fb25lbmQsCiAgICAgIHRoaXMuX29uZHJhaW4sCiAgICAgIHRoaXMuX29uYWNrLAogICAgICB0aGlzLl9vbnNlbmQsCiAgICAgIHRoaXMuX29ubWVzc2FnZSwKICAgICAgdGhpcy5fb25jbG9zZSwKICAgICAgdGhpcy5fb25maXJld2FsbCwKICAgICAgdGhpcy5fb25yZW1vdGVjaGFuZ2VkLAogICAgICB0aGlzLl9yZWFsbG9jRGF0YSwKICAgICAgdGhpcy5fcmVhbGxvY01lc3NhZ2UKICAgICkKCiAgICBpZiAob3B0cy5zZXEpIGJpbmRpbmcudWR4X25hcGlfc3RyZWFtX3NldF9zZXEodGhpcy5faGFuZGxlLCBvcHRzLnNlcSkKCiAgICBiaW5kaW5nLnVkeF9uYXBpX3N0cmVhbV9yZWN2X3N0YXJ0KHRoaXMuX2hhbmRsZSwgdGhpcy5fYnVmZmVyKQogIH0KCiAgZ2V0IGNvbm5lY3RlZCAoKSB7CiAgICByZXR1cm4gdGhpcy5zb2NrZXQgIT09IG51bGwKICB9CgogIGdldCBtdHUgKCkgewogICAgcmV0dXJuIHRoaXMuX3ZpZXcxNltiaW5kaW5nLm9mZnNldG9mX3VkeF9zdHJlYW1fdF9tdHUgPj4gMV0KICB9CgogIGdldCBydHQgKCkgewogICAgcmV0dXJuIHRoaXMuX3ZpZXdbYmluZGluZy5vZmZzZXRvZl91ZHhfc3RyZWFtX3Rfc3J0dCA+PiAyXQogIH0KCiAgZ2V0IGN3bmQgKCkgewogICAgcmV0dXJuIHRoaXMuX3ZpZXdbYmluZGluZy5vZmZzZXRvZl91ZHhfc3RyZWFtX3RfY3duZCA+PiAyXQogIH0KCiAgZ2V0IHJ0b0NvdW50ICgpIHsKICAgIHJldHVybiB0aGlzLl92aWV3MTZbYmluZGluZy5vZmZzZXRvZl91ZHhfc3RyZWFtX3RfcnRvX2NvdW50ID4+IDFdCiAgfQoKICBnZXQgcmV0cmFuc21pdHMgKCkgewogICAgcmV0dXJuIHRoaXMuX3ZpZXcxNltiaW5kaW5nLm9mZnNldG9mX3VkeF9zdHJlYW1fdF9yZXRyYW5zbWl0X2NvdW50ID4+IDFdCiAgfQoKICBnZXQgZmFzdFJlY292ZXJpZXMgKCkgewogICAgcmV0dXJuIHRoaXMuX3ZpZXcxNltiaW5kaW5nLm9mZnNldG9mX3VkeF9zdHJlYW1fdF9mYXN0X3JlY292ZXJ5X2NvdW50ID4+IDFdCiAgfQoKICBnZXQgaW5mbGlnaHQgKCkgewogICAgcmV0dXJuIHRoaXMuX3ZpZXdbYmluZGluZy5vZmZzZXRvZl91ZHhfc3RyZWFtX3RfaW5mbGlnaHQgPj4gMl0KICB9CgogIGdldCBieXRlc1RyYW5zbWl0dGVkICgpIHsKICAgIHJldHVybiBOdW1iZXIodGhpcy5fdmlldzY0W2JpbmRpbmcub2Zmc2V0b2ZfdWR4X3N0cmVhbV90X2J5dGVzX3R4ID4+IDNdKQogIH0KCiAgZ2V0IHBhY2tldHNUcmFuc21pdHRlZCAoKSB7CiAgICByZXR1cm4gTnVtYmVyKHRoaXMuX3ZpZXc2NFtiaW5kaW5nLm9mZnNldG9mX3VkeF9zdHJlYW1fdF9wYWNrZXRzX3R4ID4+IDNdKQogIH0KCiAgZ2V0IGJ5dGVzUmVjZWl2ZWQgKCkgewogICAgcmV0dXJuIE51bWJlcih0aGlzLl92aWV3NjRbYmluZGluZy5vZmZzZXRvZl91ZHhfc3RyZWFtX3RfYnl0ZXNfcnggPj4gM10pCiAgfQoKICBnZXQgcGFja2V0c1JlY2VpdmVkICgpIHsKICAgIHJldHVybiBOdW1iZXIodGhpcy5fdmlldzY0W2JpbmRpbmcub2Zmc2V0b2ZfdWR4X3N0cmVhbV90X3BhY2tldHNfcnggPj4gM10pCiAgfQoKICBnZXQgbG9jYWxIb3N0ICgpIHsKICAgIHJldHVybiB0aGlzLnNvY2tldCA/IHRoaXMuc29ja2V0LmFkZHJlc3MoKS5ob3N0IDogbnVsbAogIH0KCiAgZ2V0IGxvY2FsRmFtaWx5ICgpIHsKICAgIHJldHVybiB0aGlzLnNvY2tldCA/IHRoaXMuc29ja2V0LmFkZHJlc3MoKS5mYW1pbHkgOiAwCiAgfQoKICBnZXQgbG9jYWxQb3J0ICgpIHsKICAgIHJldHVybiB0aGlzLnNvY2tldCA/IHRoaXMuc29ja2V0LmFkZHJlc3MoKS5wb3J0IDogMAogIH0KCiAgc2V0SW50ZXJhY3RpdmUgKGJvb2wpIHsKICAgIGlmICghdGhpcy5fY2xvc2VkKSByZXR1cm4KICAgIGJpbmRpbmcudWR4X25hcGlfc3RyZWFtX3NldF9tb2RlKHRoaXMuX2hhbmRsZSwgYm9vbCA/IDAgOiAxKQogIH0KCiAgY29ubmVjdCAoc29ja2V0LCByZW1vdGVJZCwgcG9ydCwgaG9zdCwgb3B0cyA9IHt9KSB7CiAgICBpZiAodGhpcy5fY2xvc2VkKSByZXR1cm4KCiAgICBpZiAodGhpcy5jb25uZWN0ZWQpIHRocm93IG5ldyBFcnJvcignQWxyZWFkeSBjb25uZWN0ZWQnKQogICAgaWYgKHNvY2tldC5jbG9zaW5nKSB0aHJvdyBuZXcgRXJyb3IoJ1NvY2tldCBpcyBjbG9zZWQnKQoKICAgIGlmICh0eXBlb2YgaG9zdCA9PT0gJ29iamVjdCcpIHsKICAgICAgb3B0cyA9IGhvc3QKICAgICAgaG9zdCA9IG51bGwKICAgIH0KCiAgICBpZiAoIWhvc3QpIGhvc3QgPSAnMTI3LjAuMC4xJwoKICAgIGNvbnN0IGZhbWlseSA9IGlwLmlzSVAoaG9zdCkKICAgIGlmICghZmFtaWx5KSB0aHJvdyBuZXcgRXJyb3IoYCR7aG9zdH0gaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzc2ApCiAgICBpZiAoIShwb3J0ID4gMCAmJiBwb3J0IDwgNjU1MzYpKSB0aHJvdyBuZXcgRXJyb3IoYCR7cG9ydH0gaXMgbm90IGEgdmFsaWQgcG9ydGApCgogICAgaWYgKCFzb2NrZXQuYm91bmQpIHNvY2tldC5iaW5kKDApCgogICAgdGhpcy5yZW1vdGVJZCA9IHJlbW90ZUlkCiAgICB0aGlzLnJlbW90ZVBvcnQgPSBwb3J0CiAgICB0aGlzLnJlbW90ZUhvc3QgPSBob3N0CiAgICB0aGlzLnJlbW90ZUZhbWlseSA9IGZhbWlseQogICAgdGhpcy5zb2NrZXQgPSBzb2NrZXQKCiAgICBpZiAob3B0cy5hY2spIGJpbmRpbmcudWR4X25hcGlfc3RyZWFtX3NldF9hY2sodGhpcy5faGFuZGxlLCBvcHRzLmFjaykKCiAgICBiaW5kaW5nLnVkeF9uYXBpX3N0cmVhbV9jb25uZWN0KHRoaXMuX2hhbmRsZSwgc29ja2V0Ll9oYW5kbGUsIHJlbW90ZUlkLCBwb3J0LCBob3N0LCBmYW1pbHkpCgogICAgdGhpcy5zb2NrZXQuX2FkZFN0cmVhbSh0aGlzKQoKICAgIHRoaXMuZW1pdCgnY29ubmVjdCcpCiAgfQoKICBjaGFuZ2VSZW1vdGUgKHNvY2tldCwgcmVtb3RlSWQsIHBvcnQsIGhvc3QpIHsKICAgIGlmICh0aGlzLl9yZW1vdGVDaGFuZ2luZykgdGhyb3cgbmV3IEVycm9yKCdSZW1vdGUgYWxyZWFkeSBjaGFuZ2luZycpCgogICAgaWYgKCF0aGlzLmNvbm5lY3RlZCkgdGhyb3cgbmV3IEVycm9yKCdOb3QgeWV0IGNvbm5lY3RlZCcpCiAgICBpZiAoc29ja2V0LmNsb3NpbmcpIHRocm93IG5ldyBFcnJvcignU29ja2V0IGlzIGNsb3NlZCcpCgogICAgaWYgKHRoaXMuc29ja2V0LnVkeCAhPT0gc29ja2V0LnVkeCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjaGFuZ2UgdG8gYSBzb2NrZXQgb24gYW5vdGhlciBVRFggaW5zdGFuY2UnKQogICAgfQoKICAgIGlmICghaG9zdCkgaG9zdCA9ICcxMjcuMC4wLjEnCgogICAgY29uc3QgZmFtaWx5ID0gaXAuaXNJUChob3N0KQogICAgaWYgKCFmYW1pbHkpIHRocm93IG5ldyBFcnJvcihgJHtob3N0fSBpcyBub3QgYSB2YWxpZCBJUCBhZGRyZXNzYCkKICAgIGlmICghKHBvcnQgPiAwICYmIHBvcnQgPCA2NTUzNikpIHRocm93IG5ldyBFcnJvcihgJHtwb3J0fSBpcyBub3QgYSB2YWxpZCBwb3J0YCkKCiAgICBpZiAodGhpcy5zb2NrZXQgIT09IHNvY2tldCkgdGhpcy5fcHJldmlvdXNTb2NrZXQgPSB0aGlzLnNvY2tldAoKICAgIHRoaXMucmVtb3RlSWQgPSByZW1vdGVJZAogICAgdGhpcy5yZW1vdGVQb3J0ID0gcG9ydAogICAgdGhpcy5yZW1vdGVIb3N0ID0gaG9zdAogICAgdGhpcy5yZW1vdGVGYW1pbHkgPSBmYW1pbHkKICAgIHRoaXMuc29ja2V0ID0gc29ja2V0CgogICAgdGhpcy5fcmVtb3RlQ2hhbmdpbmcgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIGNvbnN0IG9uY2hhbmdlZCA9ICgpID0+IHsKICAgICAgICB0aGlzLm9mZignY2xvc2UnLCBvbmNsb3NlKQogICAgICAgIHJlc29sdmUoKQogICAgICB9CgogICAgICBjb25zdCBvbmNsb3NlID0gKCkgPT4gewogICAgICAgIHRoaXMub2ZmKCdyZW1vdGUtY2hhbmdlZCcsIG9uY2hhbmdlZCkKICAgICAgICByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gaXMgY2xvc2VkJykpCiAgICAgIH0KCiAgICAgIHRoaXMKICAgICAgICAub25jZSgncmVtb3RlLWNoYW5nZWQnLCBvbmNoYW5nZWQpCiAgICAgICAgLm9uY2UoJ2Nsb3NlJywgb25jbG9zZSkKICAgIH0pCgogICAgYmluZGluZy51ZHhfbmFwaV9zdHJlYW1fY2hhbmdlX3JlbW90ZSh0aGlzLl9oYW5kbGUsIHNvY2tldC5faGFuZGxlLCByZW1vdGVJZCwgcG9ydCwgaG9zdCwgZmFtaWx5KQoKICAgIHRoaXMuc29ja2V0Ll9hZGRTdHJlYW0odGhpcykKCiAgICByZXR1cm4gdGhpcy5fcmVtb3RlQ2hhbmdpbmcKICB9CgogIHJlbGF5VG8gKGRlc3RpbmF0aW9uKSB7CiAgICBpZiAodGhpcy5fY2xvc2VkKSByZXR1cm4KCiAgICBiaW5kaW5nLnVkeF9uYXBpX3N0cmVhbV9yZWxheV90byh0aGlzLl9oYW5kbGUsIGRlc3RpbmF0aW9uLl9oYW5kbGUpCiAgfQoKICBhc3luYyBzZW5kIChidWZmZXIpIHsKICAgIGlmICghdGhpcy5jb25uZWN0ZWQgfHwgdGhpcy5fY2xvc2VkKSByZXR1cm4gZmFsc2UKCiAgICBjb25zdCBpZCA9IHRoaXMuX2FsbG9jU2VuZCgpCiAgICBjb25zdCByZXEgPSB0aGlzLl9zcmVxc1tpZF0KCiAgICByZXEuYnVmZmVyID0gYnVmZmVyCgogICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIHJlcS5vbmZsdXNoID0gcmVzb2x2ZQogICAgfSkKCiAgICBiaW5kaW5nLnVkeF9uYXBpX3N0cmVhbV9zZW5kKHRoaXMuX2hhbmRsZSwgcmVxLmhhbmRsZSwgaWQsIGJ1ZmZlcikKCiAgICByZXR1cm4gcHJvbWlzZQogIH0KCiAgdHJ5U2VuZCAoYnVmZmVyKSB7CiAgICBpZiAoIXRoaXMuY29ubmVjdGVkIHx8IHRoaXMuX2Nsb3NlZCkgcmV0dXJuCgogICAgY29uc3QgaWQgPSB0aGlzLl9hbGxvY1NlbmQoKQogICAgY29uc3QgcmVxID0gdGhpcy5fc3JlcXNbaWRdCgogICAgcmVxLmJ1ZmZlciA9IGJ1ZmZlcgogICAgcmVxLm9uZmx1c2ggPSBub29wCgogICAgYmluZGluZy51ZHhfbmFwaV9zdHJlYW1fc2VuZCh0aGlzLl9oYW5kbGUsIHJlcS5oYW5kbGUsIGlkLCBidWZmZXIpCiAgfQoKICBhc3luYyBmbHVzaCAoKSB7CiAgICBpZiAoKGF3YWl0IHN0cmVhbXguV3JpdGFibGUuZHJhaW5lZCh0aGlzKSkgPT09IGZhbHNlKSByZXR1cm4gZmFsc2UKICAgIGlmICh0aGlzLmRlc3Ryb3lpbmcpIHJldHVybiBmYWxzZQoKICAgIGNvbnN0IG1pc3NpbmcgPSB0aGlzLl93cmVxcy5sZW5ndGggLSB0aGlzLl93ZnJlZS5sZW5ndGgKICAgIGlmIChtaXNzaW5nID09PSAwKSByZXR1cm4gdHJ1ZQoKICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICB0aGlzLl9mbHVzaGVzLnB1c2goeyBmbHVzaDogdGhpcy5fZmx1c2hpbmcrKywgbWlzc2luZywgcmVzb2x2ZSB9KQogICAgfSkKICB9CgogIHRvSlNPTiAoKSB7CiAgICByZXR1cm4gewogICAgICBpZDogdGhpcy5pZCwKICAgICAgY29ubmVjdGVkOiB0aGlzLmNvbm5lY3RlZCwKICAgICAgZGVzdHJveWluZzogdGhpcy5kZXN0cm95aW5nLAogICAgICBkZXN0cm95ZWQ6IHRoaXMuZGVzdHJveWVkLAogICAgICByZW1vdGVJZDogdGhpcy5yZW1vdGVJZCwKICAgICAgcmVtb3RlSG9zdDogdGhpcy5yZW1vdGVIb3N0LAogICAgICByZW1vdGVGYW1pbHk6IHRoaXMucmVtb3RlRmFtaWx5LAogICAgICByZW1vdGVQb3J0OiB0aGlzLnJlbW90ZVBvcnQsCiAgICAgIG10dTogdGhpcy5tdHUsCiAgICAgIHJ0dDogdGhpcy5ydHQsCiAgICAgIGN3bmQ6IHRoaXMuY3duZCwKICAgICAgaW5mbGlnaHQ6IHRoaXMuaW5mbGlnaHQsCiAgICAgIHNvY2tldDogdGhpcy5zb2NrZXQgPyB0aGlzLnNvY2tldC50b0pTT04oKSA6IG51bGwKICAgIH0KICB9CgogIF9yZWFkIChjYikgewogICAgY2IobnVsbCkKICB9CgogIF93cml0ZUNvbnRpbnVlIChlcnIpIHsKICAgIGlmICh0aGlzLl9vbndyaXRlID09PSBudWxsKSByZXR1cm4KICAgIGNvbnN0IGNiID0gdGhpcy5fb253cml0ZQogICAgdGhpcy5fb253cml0ZSA9IG51bGwKICAgIGNiKGVycikKICB9CgogIF9kZXN0cm95Q29udGludWUgKGVycikgewogICAgaWYgKHRoaXMuX29uZGVzdHJveSA9PT0gbnVsbCkgcmV0dXJuCiAgICBjb25zdCBjYiA9IHRoaXMuX29uZGVzdHJveQogICAgdGhpcy5fb25kZXN0cm95ID0gbnVsbAogICAgY2IoZXJyKQogIH0KCiAgX3dyaXRldiAoYnVmZmVycywgY2IpIHsKICAgIGlmICghdGhpcy5jb25uZWN0ZWQpIHRocm93IGN1c3RvbUVycm9yKCdXcml0aW5nIHdoaWxlIG5vdCBjb25uZWN0ZWQgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQnLCAnRVJSX0FTU0VSVElPTicpCgogICAgbGV0IGRyYWluZWQgPSB0cnVlCgogICAgaWYgKGJ1ZmZlcnMubGVuZ3RoID09PSAxKSB7CiAgICAgIGNvbnN0IGlkID0gdGhpcy5fYWxsb2NXcml0ZSgxKQogICAgICBjb25zdCByZXEgPSB0aGlzLl93cmVxc1tpZF0KCiAgICAgIHJlcS5mbHVzaCA9IHRoaXMuX2ZsdXNoaW5nCiAgICAgIHJlcS5idWZmZXIgPSBidWZmZXJzWzBdCgogICAgICBkcmFpbmVkID0gYmluZGluZy51ZHhfbmFwaV9zdHJlYW1fd3JpdGUodGhpcy5faGFuZGxlLCByZXEuaGFuZGxlLCBpZCwgcmVxLmJ1ZmZlcikgIT09IDAKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGlkID0gdGhpcy5fYWxsb2NXcml0ZShuZXh0QmF0Y2hTaXplKGJ1ZmZlcnMubGVuZ3RoKSkKICAgICAgY29uc3QgcmVxID0gdGhpcy5fd3JlcXNbaWRdCgogICAgICByZXEuZmx1c2ggPSB0aGlzLl9mbHVzaGluZwogICAgICByZXEuYnVmZmVycyA9IGJ1ZmZlcnMKCiAgICAgIGRyYWluZWQgPSBiaW5kaW5nLnVkeF9uYXBpX3N0cmVhbV93cml0ZXYodGhpcy5faGFuZGxlLCByZXEuaGFuZGxlLCBpZCwgcmVxLmJ1ZmZlcnMpICE9PSAwCiAgICB9CgogICAgaWYgKGRyYWluZWQpIGNiKG51bGwpCiAgICBlbHNlIHRoaXMuX29ud3JpdGUgPSBjYgogIH0KCiAgX2ZpbmFsIChjYikgewogICAgY29uc3QgaWQgPSB0aGlzLl9hbGxvY1dyaXRlKDEpCiAgICBjb25zdCByZXEgPSB0aGlzLl93cmVxc1tpZF0KCiAgICByZXEuZmx1c2ggPSB0aGlzLl9mbHVzaGVzCiAgICByZXEuYnVmZmVyID0gYjRhLmFsbG9jVW5zYWZlKDApCgogICAgY29uc3QgZHJhaW5lZCA9IGJpbmRpbmcudWR4X25hcGlfc3RyZWFtX3dyaXRlX2VuZCh0aGlzLl9oYW5kbGUsIHJlcS5oYW5kbGUsIGlkLCByZXEuYnVmZmVyKSAhPT0gMAoKICAgIGlmIChkcmFpbmVkKSBjYihudWxsKQogICAgZWxzZSB0aGlzLl9vbndyaXRlID0gY2IKICB9CgogIF9wcmVkZXN0cm95ICgpIHsKICAgIGlmICghdGhpcy5fY2xvc2VkKSBiaW5kaW5nLnVkeF9uYXBpX3N0cmVhbV9kZXN0cm95KHRoaXMuX2hhbmRsZSkKICAgIHRoaXMuX2Nsb3NlZCA9IHRydWUKICAgIHRoaXMuX3dyaXRlQ29udGludWUobnVsbCkKICB9CgogIF9kZXN0cm95IChjYikgewogICAgaWYgKHRoaXMuY29ubmVjdGVkKSB0aGlzLl9vbmRlc3Ryb3kgPSBjYgogICAgZWxzZSBjYihudWxsKQogIH0KCiAgX29uZGF0YSAocmVhZCkgewogICAgdGhpcy5wdXNoKHRoaXMuX2NvbnN1bWVEYXRhKHJlYWQpKQogICAgcmV0dXJuIHRoaXMuX2J1ZmZlcgogIH0KCiAgX29uZW5kIChyZWFkKSB7CiAgICBpZiAocmVhZCA+IDApIHRoaXMucHVzaCh0aGlzLl9jb25zdW1lRGF0YShyZWFkKSkKICAgIHRoaXMucHVzaChudWxsKQogIH0KCiAgX29uZHJhaW4gKCkgewogICAgdGhpcy5fd3JpdGVDb250aW51ZShudWxsKQogIH0KCiAgX2ZsdXNoQWNrIChmbHVzaCkgewogICAgZm9yIChsZXQgaSA9IHRoaXMuX2ZsdXNoZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgY29uc3QgZiA9IHRoaXMuX2ZsdXNoZXNbaV0KICAgICAgaWYgKGYuZmx1c2ggPCBmbHVzaCkgYnJlYWsKICAgICAgZi5taXNzaW5nLS0KICAgIH0KCiAgICB3aGlsZSAodGhpcy5fZmx1c2hlcy5sZW5ndGggPiAwICYmIHRoaXMuX2ZsdXNoZXNbMF0ubWlzc2luZyA9PT0gMCkgewogICAgICB0aGlzLl9mbHVzaGVzLnNoaWZ0KCkucmVzb2x2ZSh0cnVlKQogICAgfQogIH0KCiAgX29uYWNrIChpZCkgewogICAgY29uc3QgcmVxID0gdGhpcy5fd3JlcXNbaWRdCgogICAgcmVxLmJ1ZmZlcnMgPSByZXEuYnVmZmVyID0gbnVsbAogICAgdGhpcy5fd2ZyZWUucHVzaChpZCkKCiAgICBpZiAodGhpcy5fZmx1c2hlcy5sZW5ndGggPiAwKSB0aGlzLl9mbHVzaEFjayhyZXEuZmx1c2gpCgogICAgLy8gZ2MgdGhlIGZyZWUgbGlzdAogICAgaWYgKHRoaXMuX3dmcmVlLmxlbmd0aCA+PSA2NCAmJiB0aGlzLl93ZnJlZS5sZW5ndGggPT09IHRoaXMuX3dyZXFzLmxlbmd0aCkgewogICAgICB0aGlzLl93ZnJlZSA9IFtdCiAgICAgIHRoaXMuX3dyZXFzID0gW10KICAgIH0KICB9CgogIF9vbnNlbmQgKGlkLCBlcnIpIHsKICAgIGNvbnN0IHJlcSA9IHRoaXMuX3NyZXFzW2lkXQoKICAgIGNvbnN0IG9uZmx1c2ggPSByZXEub25mbHVzaAoKICAgIHJlcS5idWZmZXIgPSBudWxsCiAgICByZXEub25mbHVzaCA9IG51bGwKCiAgICB0aGlzLl9zZnJlZS5wdXNoKGlkKQoKICAgIG9uZmx1c2goZXJyID49IDApCgogICAgLy8gZ2MgdGhlIGZyZWUgbGlzdAogICAgaWYgKHRoaXMuX3NmcmVlLmxlbmd0aCA+PSAxNiAmJiB0aGlzLl9zZnJlZS5sZW5ndGggPT09IHRoaXMuX3NyZXFzLmxlbmd0aCkgewogICAgICB0aGlzLl9zZnJlZSA9IFtdCiAgICAgIHRoaXMuX3NyZXFzID0gW10KICAgIH0KICB9CgogIF9vbm1lc3NhZ2UgKGxlbikgewogICAgdGhpcy5lbWl0KCdtZXNzYWdlJywgdGhpcy51ZHguX2NvbnN1bWVNZXNzYWdlKGxlbikpCiAgICByZXR1cm4gdGhpcy51ZHguX2J1ZmZlcgogIH0KCiAgX29uY2xvc2UgKGVycikgewogICAgdGhpcy5fY2xvc2VkID0gdHJ1ZQoKICAgIGlmICh0aGlzLnNvY2tldCkgewogICAgICB0aGlzLnNvY2tldC5fcmVtb3ZlU3RyZWFtKHRoaXMpCiAgICAgIHRoaXMuc29ja2V0ID0gbnVsbAogICAgfQoKICAgIGlmICh0aGlzLl9wcmV2aW91c1NvY2tldCkgewogICAgICB0aGlzLl9wcmV2aW91c1NvY2tldC5fcmVtb3ZlU3RyZWFtKHRoaXMpCiAgICAgIHRoaXMuX3ByZXZpb3VzU29ja2V0ID0gbnVsbAogICAgfQoKICAgIC8vIG5vIGVycm9yLCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nCiAgICBpZiAoIWVycikgcmV0dXJuIHRoaXMuX2Rlc3Ryb3lDb250aW51ZShudWxsKQoKICAgIGlmICh0aGlzLl9vbmRlc3Ryb3kgPT09IG51bGwpIHRoaXMuZGVzdHJveShlcnIpCiAgICBlbHNlIHRoaXMuX2Rlc3Ryb3lDb250aW51ZShlcnIpCiAgfQoKICBfb25maXJld2FsbCAoc29ja2V0LCBwb3J0LCBob3N0LCBmYW1pbHkpIHsKICAgIHJldHVybiB0aGlzLl9maXJld2FsbChzb2NrZXQsIHBvcnQsIGhvc3QsIGZhbWlseSkgPyAxIDogMAogIH0KCiAgX29ucmVtb3RlY2hhbmdlZCAoKSB7CiAgICBpZiAodGhpcy5fcHJldmlvdXNTb2NrZXQpIHsKICAgICAgdGhpcy5fcHJldmlvdXNTb2NrZXQuX3JlbW92ZVN0cmVhbSh0aGlzKQogICAgICB0aGlzLl9wcmV2aW91c1NvY2tldCA9IG51bGwKICAgIH0KCiAgICB0aGlzLl9yZW1vdGVDaGFuZ2luZyA9IG51bGwKICAgIHRoaXMuZW1pdCgncmVtb3RlLWNoYW5nZWQnKQogIH0KCiAgX2NvbnN1bWVEYXRhIChsZW4pIHsKICAgIGNvbnN0IG5leHQgPSB0aGlzLl9idWZmZXIuc3ViYXJyYXkoMCwgbGVuKQogICAgdGhpcy5fYnVmZmVyID0gdGhpcy5fYnVmZmVyLnN1YmFycmF5KGxlbikKICAgIGlmICh0aGlzLl9idWZmZXIuYnl0ZUxlbmd0aCA8IE1BWF9QQUNLRVQpIHRoaXMuX3JlYWxsb2NEYXRhKCkKICAgIHJldHVybiBuZXh0CiAgfQoKICBfcmVhbGxvY0RhdGEgKCkgewogICAgdGhpcy5fYnVmZmVyID0gYjRhLmFsbG9jVW5zYWZlKEJVRkZFUl9TSVpFKQogICAgcmV0dXJuIHRoaXMuX2J1ZmZlcgogIH0KCiAgX3JlYWxsb2NNZXNzYWdlICgpIHsKICAgIHJldHVybiB0aGlzLnVkeC5fcmVhbGxvY01lc3NhZ2UoKQogIH0KCiAgX2FsbG9jV3JpdGUgKHNpemUpIHsKICAgIGlmICh0aGlzLl93ZnJlZS5sZW5ndGggPT09IDApIHsKICAgICAgY29uc3QgaGFuZGxlID0gYjRhLmFsbG9jVW5zYWZlKGJpbmRpbmcudWR4X25hcGlfc3RyZWFtX3dyaXRlX3NpemVvZihzaXplKSkKICAgICAgcmV0dXJuIHRoaXMuX3dyZXFzLnB1c2goeyBoYW5kbGUsIHNpemUsIGJ1ZmZlcnM6IG51bGwsIGJ1ZmZlcjogbnVsbCwgZmx1c2g6IDAgfSkgLSAxCiAgICB9CgogICAgY29uc3QgZnJlZSA9IHRoaXMuX3dmcmVlLnBvcCgpCiAgICBpZiAoc2l6ZSA9PT0gMSkgcmV0dXJuIGZyZWUKCiAgICBjb25zdCBuZXh0ID0gdGhpcy5fd3JlcXNbZnJlZV0KICAgIGlmIChuZXh0LnNpemUgPCBzaXplKSB7CiAgICAgIG5leHQuaGFuZGxlID0gYjRhLmFsbG9jVW5zYWZlKGJpbmRpbmcudWR4X25hcGlfc3RyZWFtX3dyaXRlX3NpemVvZihzaXplKSkKICAgICAgbmV4dC5zaXplID0gc2l6ZQogICAgfQoKICAgIHJldHVybiBmcmVlCiAgfQoKICBfYWxsb2NTZW5kICgpIHsKICAgIGlmICh0aGlzLl9zZnJlZS5sZW5ndGggPiAwKSByZXR1cm4gdGhpcy5fc2ZyZWUucG9wKCkKICAgIGNvbnN0IGhhbmRsZSA9IGI0YS5hbGxvY1Vuc2FmZShiaW5kaW5nLnNpemVvZl91ZHhfc3RyZWFtX3NlbmRfdCkKICAgIHJldHVybiB0aGlzLl9zcmVxcy5wdXNoKHsgaGFuZGxlLCBidWZmZXI6IG51bGwsIHJlc29sdmU6IG51bGwsIHJlamVjdDogbnVsbCB9KSAtIDEKICB9Cn0KCmZ1bmN0aW9uIG5vb3AgKCkge30KCmZ1bmN0aW9uIHRvQnVmZmVyIChkYXRhKSB7CiAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyA/IGI0YS5mcm9tKGRhdGEpIDogZGF0YQp9CgpmdW5jdGlvbiBmaXJld2FsbEFsbCAoc29ja2V0LCBwb3J0LCBob3N0KSB7CiAgcmV0dXJuIHRydWUKfQoKZnVuY3Rpb24gY3VzdG9tRXJyb3IgKG1lc3NhZ2UsIGNvZGUpIHsKICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKQogIGVycm9yLmNvZGUgPSBjb2RlCiAgcmV0dXJuIGVycm9yCn0KCmZ1bmN0aW9uIG5leHRCYXRjaFNpemUgKG4pIHsgLy8gdHJ5IHRvIGNvZXJjZSB0aGUgdGhlIHdyaXRldnMgaW50byBzYW1laXNoIHNpemUKICBpZiAobiA9PT0gMSkgcmV0dXJuIDEKICAvLyBncm91cCBhbGwgPCA4IHRvIHRoZSBzYW1lIHNpemUsIGxvdyBtZW0gb3ZlcmhlYWQgYnV0IHNhdmUgc29tZSBzbWFsbCBhbGxvY3MKICBpZiAobiA8IDgpIHJldHVybiA4CiAgaWYgKG4gPCAxNikgcmV0dXJuIDE2CiAgaWYgKG4gPCAzMikgcmV0dXJuIDMyCiAgaWYgKG4gPCA2NCkgcmV0dXJuIDY0CiAgcmV0dXJuIG4KfQpjb25zdCBiNGEgPSByZXF1aXJlKCdiNGEnKQpjb25zdCBiaW5kaW5nID0gcmVxdWlyZSgnLi4vYmluZGluZycpCmNvbnN0IGlwID0gcmVxdWlyZSgnLi9pcCcpCmNvbnN0IFNvY2tldCA9IHJlcXVpcmUoJy4vc29ja2V0JykKY29uc3QgU3RyZWFtID0gcmVxdWlyZSgnLi9zdHJlYW0nKQpjb25zdCBOZXR3b3JrSW50ZXJmYWNlcyA9IHJlcXVpcmUoJy4vbmV0d29yay1pbnRlcmZhY2VzJykKCmNvbnN0IE1BWF9NRVNTQUdFID0gNDA5Ngpjb25zdCBCVUZGRVJfU0laRSA9IDY1NTM2ICsgTUFYX01FU1NBR0UKCm1vZHVsZS5leHBvcnRzID0gY2xhc3MgVURYIHsKICBjb25zdHJ1Y3RvciAoKSB7CiAgICB0aGlzLl9oYW5kbGUgPSBiNGEuYWxsb2NVbnNhZmUoYmluZGluZy5zaXplb2ZfdWR4X25hcGlfdCkKICAgIHRoaXMuX3dhdGNoZXJzID0gbmV3IFNldCgpCiAgICB0aGlzLl92aWV3NjQgPSBuZXcgQmlnVWludDY0QXJyYXkodGhpcy5faGFuZGxlLmJ1ZmZlciwgdGhpcy5faGFuZGxlLmJ5dGVPZmZzZXQsIHRoaXMuX2hhbmRsZS5ieXRlTGVuZ3RoID4+IDMpCgogICAgdGhpcy5fYnVmZmVyID0gbnVsbAogICAgdGhpcy5fcmVhbGxvY01lc3NhZ2UoKQoKICAgIGJpbmRpbmcudWR4X25hcGlfaW5pdCh0aGlzLl9oYW5kbGUsIHRoaXMuX2J1ZmZlcikKICB9CgogIHN0YXRpYyBpc0lQdjQgKGhvc3QpIHsKICAgIHJldHVybiBpcC5pc0lQdjQoaG9zdCkKICB9CgogIHN0YXRpYyBpc0lQdjYgKGhvc3QpIHsKICAgIHJldHVybiBpcC5pc0lQdjYoaG9zdCkKICB9CgogIHN0YXRpYyBpc0lQIChob3N0KSB7CiAgICByZXR1cm4gaXAuaXNJUChob3N0KQogIH0KCiAgZ2V0IGJ5dGVzVHJhbnNtaXR0ZWQgKCkgewogICAgcmV0dXJuIE51bWJlcih0aGlzLl92aWV3NjRbYmluZGluZy5vZmZzZXRvZl91ZHhfdF9ieXRlc190eCA+PiAzXSkKICB9CgogIGdldCBwYWNrZXRzVHJhbnNtaXR0ZWQgKCkgewogICAgcmV0dXJuIE51bWJlcih0aGlzLl92aWV3NjRbYmluZGluZy5vZmZzZXRvZl91ZHhfdF9wYWNrZXRzX3R4ID4+IDNdKQogIH0KCiAgZ2V0IGJ5dGVzUmVjZWl2ZWQgKCkgewogICAgcmV0dXJuIE51bWJlcih0aGlzLl92aWV3NjRbYmluZGluZy5vZmZzZXRvZl91ZHhfdF9ieXRlc19yeCA+PiAzXSkKICB9CgogIGdldCBwYWNrZXRzUmVjZWl2ZWQgKCkgewogICAgcmV0dXJuIE51bWJlcih0aGlzLl92aWV3NjRbYmluZGluZy5vZmZzZXRvZl91ZHhfdF9wYWNrZXRzX3J4ID4+IDNdKQogIH0KCiAgZ2V0IHBhY2tldHNEcm9wcGVkQnlLZXJuZWwgKCkgewogICAgcmV0dXJuIE51bWJlcih0aGlzLl92aWV3NjRbYmluZGluZy5vZmZzZXRvZl91ZHhfdF9wYWNrZXRzX2Ryb3BwZWRfYnlfa2VybmVsID4+IDNdKQogIH0KCiAgX2NvbnN1bWVNZXNzYWdlIChsZW4pIHsKICAgIGNvbnN0IG5leHQgPSB0aGlzLl9idWZmZXIuc3ViYXJyYXkoMCwgbGVuKQogICAgdGhpcy5fYnVmZmVyID0gdGhpcy5fYnVmZmVyLnN1YmFycmF5KGxlbikKICAgIGlmICh0aGlzLl9idWZmZXIuYnl0ZUxlbmd0aCA8IE1BWF9NRVNTQUdFKSB0aGlzLl9yZWFsbG9jTWVzc2FnZSgpCiAgICByZXR1cm4gbmV4dAogIH0KCiAgX3JlYWxsb2NNZXNzYWdlICgpIHsKICAgIHRoaXMuX2J1ZmZlciA9IGI0YS5hbGxvY1Vuc2FmZShCVUZGRVJfU0laRSkKICAgIHJldHVybiB0aGlzLl9idWZmZXIKICB9CgogIGNyZWF0ZVNvY2tldCAob3B0cykgewogICAgcmV0dXJuIG5ldyBTb2NrZXQodGhpcywgb3B0cykKICB9CgogIGNyZWF0ZVN0cmVhbSAoaWQsIG9wdHMpIHsKICAgIHJldHVybiBuZXcgU3RyZWFtKHRoaXMsIGlkLCBvcHRzKQogIH0KCiAgbmV0d29ya0ludGVyZmFjZXMgKCkgewogICAgbGV0IFt3YXRjaGVyID0gbnVsbF0gPSB0aGlzLl93YXRjaGVycwogICAgaWYgKHdhdGNoZXIpIHJldHVybiB3YXRjaGVyLmludGVyZmFjZXMKCiAgICB3YXRjaGVyID0gbmV3IE5ldHdvcmtJbnRlcmZhY2VzKHRoaXMpCiAgICB3YXRjaGVyLmRlc3Ryb3koKQoKICAgIHJldHVybiB3YXRjaGVyLmludGVyZmFjZXMKICB9CgogIHdhdGNoTmV0d29ya0ludGVyZmFjZXMgKG9uY2hhbmdlKSB7CiAgICBjb25zdCB3YXRjaGVyID0gbmV3IE5ldHdvcmtJbnRlcmZhY2VzKHRoaXMpCgogICAgdGhpcy5fd2F0Y2hlcnMuYWRkKHdhdGNoZXIpCiAgICB3YXRjaGVyLm9uKCdjbG9zZScsICgpID0+IHsKICAgICAgdGhpcy5fd2F0Y2hlcnMuZGVsZXRlKHdhdGNoZXIpCiAgICB9KQoKICAgIGlmIChvbmNoYW5nZSkgd2F0Y2hlci5vbignY2hhbmdlJywgb25jaGFuZ2UpCgogICAgcmV0dXJuIHdhdGNoZXIud2F0Y2goKQogIH0KCiAgYXN5bmMgbG9va3VwIChob3N0LCBvcHRzID0ge30pIHsKICAgIGNvbnN0IHsKICAgICAgZmFtaWx5ID0gMAogICAgfSA9IG9wdHMKCiAgICBjb25zdCByZXEgPSBiNGEuYWxsb2NVbnNhZmUoYmluZGluZy5zaXplb2ZfdWR4X25hcGlfbG9va3VwX3QpCiAgICBjb25zdCBjdHggPSB7CiAgICAgIHJlcSwKICAgICAgcmVzb2x2ZTogbnVsbCwKICAgICAgcmVqZWN0OiBudWxsCiAgICB9CgogICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgY3R4LnJlc29sdmUgPSByZXNvbHZlCiAgICAgIGN0eC5yZWplY3QgPSByZWplY3QKICAgIH0pCgogICAgYmluZGluZy51ZHhfbmFwaV9sb29rdXAodGhpcy5faGFuZGxlLCByZXEsIGhvc3QsIGZhbWlseSwgY3R4LCBvbmxvb2t1cCkKCiAgICByZXR1cm4gcHJvbWlzZQogIH0KfQoKZnVuY3Rpb24gb25sb29rdXAgKGVyciwgaG9zdCwgZmFtaWx5KSB7CiAgaWYgKGVycikgdGhpcy5yZWplY3QoZXJyKQogIGVsc2UgdGhpcy5yZXNvbHZlKHsgaG9zdCwgZmFtaWx5IH0pCn0KewogICJuYW1lIjogInVkeC1uYXRpdmUiLAogICJ2ZXJzaW9uIjogIjEuMTcuNiIsCiAgImRlc2NyaXB0aW9uIjogInVkeCBpcyByZWxpYWJsZSwgbXVsdGlwbGV4ZWQsIGFuZCBjb25nZXN0aW9uLWNvbnRyb2xsZWQgc3RyZWFtcyBvdmVyIHVkcCIsCiAgIm1haW4iOiAibGliL3VkeC5qcyIsCiAgImZpbGVzIjogWwogICAgImxpYiIsCiAgICAicHJlYnVpbGRzIiwKICAgICJiaW5kaW5nLmMiLAogICAgImJpbmRpbmcuanMiLAogICAgIkNNYWtlTGlzdHMudHh0IgogIF0sCiAgImltcG9ydHMiOiB7CiAgICAiZXZlbnRzIjogewogICAgICAiYmFyZSI6ICJiYXJlLWV2ZW50cyIsCiAgICAgICJkZWZhdWx0IjogImV2ZW50cyIKICAgIH0KICB9LAogICJhZGRvbiI6IHRydWUsCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJucG0gcnVuIGxpbnQgJiYgbnBtIHJ1biB0ZXN0OmJhcmUgJiYgbnBtIHJ1biB0ZXN0Om5vZGUiLAogICAgInRlc3Q6bm9kZSI6ICJub2RlIHRlc3QvYWxsLmpzIiwKICAgICJ0ZXN0OmJhcmUiOiAiYmFyZSB0ZXN0L2FsbC5qcyIsCiAgICAidGVzdDphbGwiOiAiYnJpdHRsZSB0ZXN0LyouanMgdGVzdC9zbG93LyouanMiLAogICAgInRlc3Q6Z2VuZXJhdGUiOiAiYnJpdHRsZSAtciB0ZXN0L2FsbC5qcyB0ZXN0LyouanMiLAogICAgImJlbmNoIjogImJyaXR0bGUgdGVzdC9iZW5jaC8qLmpzIiwKICAgICJsaW50IjogInN0YW5kYXJkIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3VkeC1uYXRpdmUuZ2l0IgogIH0sCiAgImtleXdvcmRzIjogWwogICAgInRjcCIsCiAgICAidWRwIiwKICAgICJzdHJlYW0iLAogICAgInJlbGlhYmxlIgogIF0sCiAgImF1dGhvciI6ICJIb2xlcHVuY2ggSW5jLiIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImd5cGZpbGUiOiB0cnVlLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vdWR4LW5hdGl2ZS9pc3N1ZXMiCiAgfSwKICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3VkeC1uYXRpdmUjcmVhZG1lIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImI0YSI6ICJeMS41LjAiLAogICAgImJhcmUtZXZlbnRzIjogIl4yLjIuMCIsCiAgICAicmVxdWlyZS1hZGRvbiI6ICJeMS4xLjAiLAogICAgInN0cmVhbXgiOiAiXjIuMTQuMCIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiYnJpdHRsZSI6ICJeMy4xLjAiLAogICAgImNtYWtlLWJhcmUiOiAiXjEuMS4xMCIsCiAgICAiY21ha2UtZmV0Y2giOiAiXjEuMC4xIiwKICAgICJjbWFrZS1uYXBpIjogIl4xLjAuNSIsCiAgICAiaXMtY2kiOiAiXjMuMC4xIiwKICAgICJzdGFuZGFyZCI6ICJeMTcuMS4wIiwKICAgICJ0aW55LWJ5dGUtc2l6ZSI6ICJeMS4xLjAiCiAgfQp9Cm1vZHVsZS5leHBvcnRzID0gcmVzb2x2ZQoKZnVuY3Rpb24gcGFyc2UgKGFkZHIpIHsKICBjb25zdCBuYW1lcyA9IGFkZHIuc3BsaXQoL1svXFxdLykKCiAgY29uc3QgciA9IHsKICAgIGlzQWJzb2x1dGU6IGZhbHNlLAogICAgbmFtZXMKICB9CgogIC8vIGRvbid0IHRoaW5rIHRoaXMgZXZlciBoYXBwZW5zLCBidXQgd2hhdGV2cwogIGlmIChuYW1lcy5sZW5ndGggPT09IDApIHJldHVybiByCgogIGlmIChuYW1lcy5sZW5ndGggPiAxICYmIG5hbWVzWzBdLmVuZHNXaXRoKCc6JykpIHsKICAgIHIuaXNBYnNvbHV0ZSA9IHRydWUKCiAgICBpZiAobmFtZXNbMF0ubGVuZ3RoID09PSAyKSB7IC8vIHdpbmRvd3MKICAgICAgci5uYW1lcyA9IG5hbWVzLnNsaWNlKDEpCiAgICAgIHJldHVybiByCiAgICB9CgogICAgaWYgKG5hbWVzWzBdID09PSAnZmlsZTonKSB7CiAgICAgIHIubmFtZXMgPSBuYW1lcy5zbGljZSgxKQogICAgICByZXR1cm4gcgogICAgfQoKICAgIHIubmFtZXMgPSBuYW1lcy5zbGljZSgzKQogICAgcmV0dXJuIHIKICB9CgogIHIuaXNBYnNvbHV0ZSA9IGFkZHIuc3RhcnRzV2l0aCgnLycpIHx8IGFkZHIuc3RhcnRzV2l0aCgnXFwnKQoKICByZXR1cm4gcgp9CgpmdW5jdGlvbiByZXNvbHZlIChhLCBiID0gJycpIHsKICBjb25zdCBhcCA9IHBhcnNlKGEpCiAgY29uc3QgYnAgPSBwYXJzZShiKQoKICBpZiAoYnAuaXNBYnNvbHV0ZSkgewogICAgcmV0dXJuIHJlc29sdmVOYW1lcyhbXSwgYnAubmFtZXMpCiAgfQoKICBpZiAoIWFwLmlzQWJzb2x1dGUpIHsKICAgIHRocm93IG5ldyBFcnJvcignT25lIG9mIHRoZSB0d28gcGF0aHMgbXVzdCBiZSBhYnNvbHV0ZScpCiAgfQoKICByZXR1cm4gcmVzb2x2ZU5hbWVzKGFwLm5hbWVzLCBicC5uYW1lcykKfQoKZnVuY3Rpb24gdG9TdHJpbmcgKHAsIG5hbWVzKSB7CiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgewogICAgaWYgKG5hbWVzW2ldID09PSAnJykgY29udGludWUKICAgIGlmIChuYW1lc1tpXSA9PT0gJy4nKSBjb250aW51ZQogICAgaWYgKG5hbWVzW2ldID09PSAnLi4nKSB7CiAgICAgIGlmIChwLmxlbmd0aCA9PT0gMSkgdGhyb3cgbmV3IEVycm9yKCdQYXRoIGNhbm5vdCBiZSByZXNvbHZlZCwgdG9vIG1hbnkgXCcuLlwnJykKICAgICAgcCA9IHAuc2xpY2UoMCwgcC5sYXN0SW5kZXhPZignLycpKSB8fCAnLycKICAgICAgY29udGludWUKICAgIH0KICAgIHAgKz0gKHAubGVuZ3RoID09PSAxID8gbmFtZXNbaV0gOiAnLycgKyBuYW1lc1tpXSkKICB9CgogIHJldHVybiBwCn0KCmZ1bmN0aW9uIHJlc29sdmVOYW1lcyAoYSwgYikgewogIHJldHVybiB0b1N0cmluZyh0b1N0cmluZygnLycsIGEpLCBiKQp9CnsKICAibmFtZSI6ICJ1bml4LXBhdGgtcmVzb2x2ZSIsCiAgInZlcnNpb24iOiAiMS4wLjIiLAogICJkZXNjcmlwdGlvbiI6ICJDcm9zcyBwbGF0Zm9ybSByZXNvbHZlIHRoYXQgYWx3YXlzIHJldHVybnMgYSBVTklYIHN0eWxlIGAvYCBzZXBlcmF0ZWQgcGF0aCIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJkZXBlbmRlbmNpZXMiOiB7fSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJyaXR0bGUiOiAiXjIuMC4xIiwKICAgICJzdGFuZGFyZCI6ICJeMTYuMC40IgogIH0sCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdCI6ICJzdGFuZGFyZCAmJiBicml0dGxlIHRlc3QuanMiCiAgfSwKICAicmVwb3NpdG9yeSI6IHsKICAgICJ0eXBlIjogImdpdCIsCiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvdW5peC1wYXRoLXJlc29sdmUuZ2l0IgogIH0sCiAgImF1dGhvciI6ICJNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpIiwKICAibGljZW5zZSI6ICJNSVQiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3VuaXgtcGF0aC1yZXNvbHZlL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3VuaXgtcGF0aC1yZXNvbHZlIgp9CmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJykKY29uc3QgeyBpc1dpbmRvd3MgfSA9IHJlcXVpcmUoJ3doaWNoLXJ1bnRpbWUnKQoKZXhwb3J0cy5maWxlVVJMVG9QYXRoID0gZnVuY3Rpb24gZmlsZVVSTFRvUGF0aCAodXJsKSB7CiAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSB7CiAgICB1cmwgPSBuZXcgVVJMKHVybCkKICB9CgogIGlmICh1cmwucHJvdG9jb2wgIT09ICdmaWxlOicpIHsKICAgIHRocm93IG5ldyBFcnJvcignVGhlIFVSTCBtdXN0IHVzZSB0aGUgZmlsZTogcHJvdG9jb2wnKQogIH0KCiAgaWYgKGlzV2luZG93cykgewogICAgaWYgKC8lMmZ8JTVjL2kudGVzdCh1cmwucGF0aG5hbWUpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGZpbGU6IFVSTCBwYXRoIG11c3Qgbm90IGluY2x1ZGUgZW5jb2RlZCBcXCBvciAvIGNoYXJhY3RlcnMnKQogICAgfQogIH0gZWxzZSB7CiAgICBpZiAodXJsLmhvc3RuYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGZpbGU6IFVSTCBob3N0IG11c3QgYmUgXCdsb2NhbGhvc3RcJyBvciBlbXB0eScpCiAgICB9CgogICAgaWYgKC8lMmYvaS50ZXN0KHVybC5wYXRobmFtZSkpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZmlsZTogVVJMIHBhdGggbXVzdCBub3QgaW5jbHVkZSBlbmNvZGVkIC8gY2hhcmFjdGVycycpCiAgICB9CiAgfQoKICBjb25zdCBwYXRobmFtZSA9IHBhdGgubm9ybWFsaXplKGRlY29kZVVSSUNvbXBvbmVudCh1cmwucGF0aG5hbWUpKQoKICBpZiAoaXNXaW5kb3dzKSB7CiAgICBpZiAodXJsLmhvc3RuYW1lKSByZXR1cm4gJ1xcXFwnICsgdXJsLmhvc3RuYW1lICsgcGF0aG5hbWUKCiAgICBjb25zdCBsZXR0ZXIgPSBwYXRobmFtZS5jaGFyQ29kZUF0KDEpIHwgMHgyMAoKICAgIGlmIChsZXR0ZXIgPCAweDYxIC8qIGEgKi8gfHwgbGV0dGVyID4gMHg3YSAvKiB6ICovIHx8IHBhdGhuYW1lLmNoYXJDb2RlQXQoMikgIT09IDB4M2EgLyogOiAqLykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBmaWxlOiBVUkwgcGF0aCBtdXN0IGJlIGFic29sdXRlJykKICAgIH0KCiAgICByZXR1cm4gcGF0aG5hbWUuc2xpY2UoMSkKICB9CgogIHJldHVybiBwYXRobmFtZQp9CgpleHBvcnRzLnBhdGhUb0ZpbGVVUkwgPSBmdW5jdGlvbiBwYXRoVG9GaWxlVVJMIChwYXRobmFtZSkgewogIGxldCByZXNvbHZlZCA9IHBhdGgucmVzb2x2ZShwYXRobmFtZSkKCiAgaWYgKHBhdGhuYW1lW3BhdGhuYW1lLmxlbmd0aCAtIDFdID09PSAnLycpIHsKICAgIHJlc29sdmVkICs9ICcvJwogIH0gZWxzZSBpZiAoaXNXaW5kb3dzICYmIHBhdGhuYW1lW3BhdGhuYW1lLmxlbmd0aCAtIDFdID09PSAnXFwnKSB7CiAgICByZXNvbHZlZCArPSAnXFwnCiAgfQoKICByZXNvbHZlZCA9IHJlc29sdmVkCiAgICAucmVwbGFjZUFsbCgnJScsICclMjUnKSAvLyBNdXN0IGJlIGZpcnN0CiAgICAucmVwbGFjZUFsbCgnIycsICclMjMnKQogICAgLnJlcGxhY2VBbGwoJz8nLCAnJTNmJykKICAgIC5yZXBsYWNlQWxsKCdcbicsICclMGEnKQogICAgLnJlcGxhY2VBbGwoJ1xyJywgJyUwZCcpCiAgICAucmVwbGFjZUFsbCgnXHQnLCAnJTA5JykKCiAgaWYgKCFpc1dpbmRvd3MpIHsKICAgIHJlc29sdmVkID0gcmVzb2x2ZWQucmVwbGFjZUFsbCgnXFwnLCAnJTVjJykKICB9CgogIHJldHVybiBuZXcgVVJMKCdmaWxlOicgKyByZXNvbHZlZCkKfQp7CiAgIm5hbWUiOiAidXJsLWZpbGUtdXJsIiwKICAidmVyc2lvbiI6ICIxLjAuNSIsCiAgImRlc2NyaXB0aW9uIjogIlNtYWxsIG1vZHVsZSB0aGF0IGNvbnZlcnRzIGZyb20gVVJMcyB0byBmaWxlbmFtZXMgdG8gVVJMcyIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIKICBdLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAiYmFyZS1wYXRoIjogIl4zLjAuMCIsCiAgICAid2hpY2gtcnVudGltZSI6ICJeMS4yLjAiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgInN0YW5kYXJkIjogIl4xNy4xLjAiCiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkIgogIH0sCiAgImltcG9ydHMiOiB7CiAgICAicGF0aCI6IHsKICAgICAgImJhcmUiOiAiYmFyZS1wYXRoIiwKICAgICAgImRlZmF1bHQiOiAicGF0aCIKICAgIH0KICB9LAogICJyZXBvc2l0b3J5IjogewogICAgInR5cGUiOiAiZ2l0IiwKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3VybC1maWxlLXVybC5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCBJbmMiLAogICJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAogICJidWdzIjogewogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vdXJsLWZpbGUtdXJsL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vdXJsLWZpbGUtdXJsIgp9CmNvbnN0IHsgcnVudGltZSwgcGxhdGZvcm0sIGFyY2ggfSA9IHR5cGVvZiBCYXJlICE9PSAndW5kZWZpbmVkJwogID8geyBydW50aW1lOiAnYmFyZScsIHBsYXRmb3JtOiBnbG9iYWwuQmFyZS5wbGF0Zm9ybSwgYXJjaDogZ2xvYmFsLkJhcmUuYXJjaCB9CiAgOiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcKICAgID8geyBydW50aW1lOiAnbm9kZScsIHBsYXRmb3JtOiBnbG9iYWwucHJvY2Vzcy5wbGF0Zm9ybSwgYXJjaDogZ2xvYmFsLnByb2Nlc3MuYXJjaCB9CiAgICA6IHR5cGVvZiBXaW5kb3cgIT09ICd1bmRlZmluZWQnCiAgICAgID8geyBydW50aW1lOiAnYnJvd3NlcicsIHBsYXRmb3JtOiAndW5rbm93bicsIGFyY2g6ICd1bmtub3duJyB9CiAgICAgIDogeyBydW50aW1lOiAndW5rbm93bicsIHBsYXRmb3JtOiAndW5rbm93bicsIGFyY2g6ICd1bmtub3duJyB9CgpleHBvcnRzLnJ1bnRpbWUgPSBydW50aW1lCmV4cG9ydHMucGxhdGZvcm0gPSBwbGF0Zm9ybQpleHBvcnRzLmFyY2ggPSBhcmNoCmV4cG9ydHMuaXNCYXJlID0gcnVudGltZSA9PT0gJ2JhcmUnCmV4cG9ydHMuaXNOb2RlID0gcnVudGltZSA9PT0gJ25vZGUnCmV4cG9ydHMuaXNCcm93c2VyID0gcnVudGltZSA9PT0gJ2Jyb3dzZXInCmV4cG9ydHMuaXNXaW5kb3dzID0gcGxhdGZvcm0gPT09ICd3aW4zMicKZXhwb3J0cy5pc0xpbnV4ID0gcGxhdGZvcm0gPT09ICdsaW51eCcKZXhwb3J0cy5pc01hYyA9IHBsYXRmb3JtID09PSAnZGFyd2luJwpleHBvcnRzLmlzSU9TID0gcGxhdGZvcm0gPT09ICdpb3MnIHx8IHBsYXRmb3JtID09PSAnaW9zLXNpbXVsYXRvcicKZXhwb3J0cy5pc0FuZHJvaWQgPSBwbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnCmV4cG9ydHMuaXNFbGVjdHJvbiA9ICEhKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwucHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbikKZXhwb3J0cy5pc0VsZWN0cm9uUmVuZGVyZXIgPSAhISh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsLnByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24gJiYgZ2xvYmFsLnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykKZXhwb3J0cy5pc0VsZWN0cm9uV29ya2VyID0gISEodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbC5wcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uICYmIGdsb2JhbC5wcm9jZXNzLnR5cGUgPT09ICd3b3JrZXInKQp7CiAgIm5hbWUiOiAid2hpY2gtcnVudGltZSIsCiAgInZlcnNpb24iOiAiMS4yLjEiLAogICJkZXNjcmlwdGlvbiI6ICJEZXRlY3QgaWYgeW91IGFyZSBpbiBCYXJlIG9yIE5vZGUgYW5kIHdoaWNoIG9zIGV0YyIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJmaWxlcyI6IFsKICAgICJpbmRleC5qcyIKICBdLAogICJkZXBlbmRlbmNpZXMiOiB7fSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgInN0YW5kYXJkIjogIl4xNy4wLjAiCiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9sZXB1bmNodG8vd2hpY2gtcnVudGltZS5naXQiCiAgfSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCBJbmMuIiwKICAibGljZW5zZSI6ICJBcGFjaGUtMi4wIiwKICAiYnVncyI6IHsKICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbGVwdW5jaHRvL3doaWNoLXJ1bnRpbWUvaXNzdWVzIgogIH0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob2xlcHVuY2h0by93aGljaC1ydW50aW1lIgp9CmNvbnN0IGI0YSA9IHJlcXVpcmUoJ2I0YScpCgpjb25zdCBBTFBIQUJFVCA9ICd5Ym5kcmZnOGVqa21jcHF4b3QxdXdpc3phMzQ1aDc2OScKY29uc3QgTUlOID0gMHgzMSAvLyAxCmNvbnN0IE1BWCA9IDB4N2EgLy8gegpjb25zdCBSRVZFUlNFID0gbmV3IEludDhBcnJheSgxICsgTUFYIC0gTUlOKQoKUkVWRVJTRS5maWxsKC0xKQoKZm9yIChsZXQgaSA9IDA7IGkgPCBBTFBIQUJFVC5sZW5ndGg7IGkrKykgewogIGNvbnN0IHYgPSBBTFBIQUJFVC5jaGFyQ29kZUF0KGkpIC0gTUlOCiAgUkVWRVJTRVt2XSA9IGkKfQoKZXhwb3J0cy5lbmNvZGUgPSBlbmNvZGUKZXhwb3J0cy5kZWNvZGUgPSBkZWNvZGUKZXhwb3J0cy5BTFBIQUJFVCA9IEFMUEhBQkVUCgpmdW5jdGlvbiBkZWNvZGUgKHMsIG91dCkgewogIGxldCBwYiA9IDAKICBsZXQgcHMgPSAwCgogIGNvbnN0IHIgPSBzLmxlbmd0aCAmIDcKICBjb25zdCBxID0gKHMubGVuZ3RoIC0gcikgLyA4CgogIGlmICghb3V0KSBvdXQgPSBiNGEuYWxsb2NVbnNhZmUoTWF0aC5jZWlsKHMubGVuZ3RoICogNSAvIDgpKQoKICAvLyAwIDUgMiA3IDQgMSA2IDMgKCs1IG1vZCA4KQogIGZvciAobGV0IGkgPSAwOyBpIDwgcTsgaSsrKSB7CiAgICBjb25zdCBhID0gcXVpbnRldChzLCBwcysrKQogICAgY29uc3QgYiA9IHF1aW50ZXQocywgcHMrKykKICAgIGNvbnN0IGMgPSBxdWludGV0KHMsIHBzKyspCiAgICBjb25zdCBkID0gcXVpbnRldChzLCBwcysrKQogICAgY29uc3QgZSA9IHF1aW50ZXQocywgcHMrKykKICAgIGNvbnN0IGYgPSBxdWludGV0KHMsIHBzKyspCiAgICBjb25zdCBnID0gcXVpbnRldChzLCBwcysrKQogICAgY29uc3QgaCA9IHF1aW50ZXQocywgcHMrKykKCiAgICBvdXRbcGIrK10gPSAoYSA8PCAzKSB8IChiID4+PiAyKQogICAgb3V0W3BiKytdID0gKChiICYgMGIxMSkgPDwgNikgfCAoYyA8PCAxKSB8IChkID4+PiA0KQogICAgb3V0W3BiKytdID0gKChkICYgMGIxMTExKSA8PCA0KSB8IChlID4+PiAxKQogICAgb3V0W3BiKytdID0gKChlICYgMGIxKSA8PCA3KSB8IChmIDw8IDIpIHwgKGcgPj4+IDMpCiAgICBvdXRbcGIrK10gPSAoKGcgJiAwYjExMSkgPDwgNSkgfCBoCiAgfQoKICBpZiAociA9PT0gMCkgcmV0dXJuIG91dC5zdWJhcnJheSgwLCBwYikKCiAgY29uc3QgYSA9IHF1aW50ZXQocywgcHMrKykKICBjb25zdCBiID0gcXVpbnRldChzLCBwcysrKQoKICBvdXRbcGIrK10gPSAoYSA8PCAzKSB8IChiID4+PiAyKQoKICBpZiAociA8PSAyKSByZXR1cm4gb3V0LnN1YmFycmF5KDAsIHBiKQoKICBjb25zdCBjID0gcXVpbnRldChzLCBwcysrKQogIGNvbnN0IGQgPSBxdWludGV0KHMsIHBzKyspCgogIG91dFtwYisrXSA9ICgoYiAmIDBiMTEpIDw8IDYpIHwgKGMgPDwgMSkgfCAoZCA+Pj4gNCkKCiAgaWYgKHIgPD0gNCkgcmV0dXJuIG91dC5zdWJhcnJheSgwLCBwYikKCiAgY29uc3QgZSA9IHF1aW50ZXQocywgcHMrKykKCiAgb3V0W3BiKytdID0gKChkICYgMGIxMTExKSA8PCA0KSB8IChlID4+PiAxKQoKICBpZiAociA8PSA1KSByZXR1cm4gb3V0LnN1YmFycmF5KDAsIHBiKQoKICBjb25zdCBmID0gcXVpbnRldChzLCBwcysrKQogIGNvbnN0IGcgPSBxdWludGV0KHMsIHBzKyspCgogIG91dFtwYisrXSA9ICgoZSAmIDBiMSkgPDwgNykgfCAoZiA8PCAyKSB8IChnID4+PiAzKQoKICBpZiAociA8PSA3KSByZXR1cm4gb3V0LnN1YmFycmF5KDAsIHBiKQoKICBjb25zdCBoID0gcXVpbnRldChzLCBwcysrKQoKICBvdXRbcGIrK10gPSAoKGcgJiAwYjExMSkgPDwgNSkgfCBoCgogIHJldHVybiBvdXQuc3ViYXJyYXkoMCwgcGIpCn0KCmZ1bmN0aW9uIGVuY29kZSAoYnVmKSB7CiAgaWYgKHR5cGVvZiBidWYgPT09ICdzdHJpbmcnKSBidWYgPSBiNGEuZnJvbShidWYpCgogIGNvbnN0IG1heCA9IGJ1Zi5ieXRlTGVuZ3RoICogOAoKICBsZXQgcyA9ICcnCgogIGZvciAobGV0IHAgPSAwOyBwIDwgbWF4OyBwICs9IDUpIHsKICAgIGNvbnN0IGkgPSBwID4+PiAzCiAgICBjb25zdCBqID0gcCAmIDcKCiAgICBpZiAoaiA8PSAzKSB7CiAgICAgIHMgKz0gQUxQSEFCRVRbKGJ1ZltpXSA+Pj4gKDMgLSBqKSkgJiAwYjExMTExXQogICAgICBjb250aW51ZQogICAgfQoKICAgIGNvbnN0IG9mID0gaiAtIDMKICAgIGNvbnN0IGggPSAoYnVmW2ldIDw8IG9mKSAmIDBiMTExMTEKICAgIGNvbnN0IGwgPSAoaSA+PSBidWYuYnl0ZUxlbmd0aCA/IDAgOiBidWZbaSArIDFdKSA+Pj4gKDggLSBvZikKCiAgICBzICs9IEFMUEhBQkVUW2ggfCBsXQogIH0KCiAgcmV0dXJuIHMKfQoKZnVuY3Rpb24gcXVpbnRldCAocywgaSkgewogIGlmIChpID4gcy5sZW5ndGgpIHsKICAgIHJldHVybiAwCiAgfQoKICBjb25zdCB2ID0gcy5jaGFyQ29kZUF0KGkpCgogIGlmICh2IDwgTUlOIHx8IHYgPiBNQVgpIHsKICAgIHRocm93IEVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBiYXNlMzIgaW5wdXQ6ICInICsgc1tpXSArICciIGF0IHBvc2l0aW9uICcgKyBpKQogIH0KCiAgY29uc3QgYml0cyA9IFJFVkVSU0VbdiAtIE1JTl0KCiAgaWYgKGJpdHMgPT09IC0xKSB7CiAgICB0aHJvdyBFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gYmFzZTMyIGlucHV0OiAiJyArIHNbaV0gKyAnIiBhdCBwb3NpdGlvbiAnICsgaSkKICB9CgogIHJldHVybiBiaXRzCn0KewogICJuYW1lIjogInozMiIsCiAgInZlcnNpb24iOiAiMS4xLjAiLAogICJkZXNjcmlwdGlvbiI6ICJFbmNvZGUgJiBkZWNvZGUgei1iYXNlMzIiLAogICJtYWluIjogImluZGV4LmpzIiwKICAiZGVwZW5kZW5jaWVzIjogewogICAgImI0YSI6ICJeMS41LjMiCiAgfSwKICAiZGV2RGVwZW5kZW5jaWVzIjogewogICAgImJhc2UteCI6ICJeNC4wLjAiLAogICAgImJhc2UzMiI6ICIwLjAuNyIsCiAgICAiYnJpdHRsZSI6ICJeMy4xLjMiLAogICAgIm5hbm9iZW5jaCI6ICJeMy4wLjAiLAogICAgInJmYzQ2NDgiOiAiXjEuNS4yIiwKICAgICJzdGFuZGFyZCI6ICJeMTcuMC4wIgogIH0sCiAgInJlcG9zaXRvcnkiOiB7CiAgICAidHlwZSI6ICJnaXQiLAogICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3ozMi5naXQiCiAgfSwKICAic2NyaXB0cyI6IHsKICAgICJ0ZXN0IjogInN0YW5kYXJkICYmIGJyaXR0bGUgdGVzdC5qcyIsCiAgICAiYmVuY2giOiAibm9kZSBiZW5jaG1hcmsuanMiCiAgfSwKICAiYXV0aG9yIjogIk1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkiLAogICJsaWNlbnNlIjogIk1JVCIsCiAgImJ1Z3MiOiB7CiAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvejMyL2lzc3VlcyIKICB9LAogICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3ozMiIKfQp7CiAgIm5hbWUiOiAicGVhci1lbGVjdHJvbiIsCiAgInZlcnNpb24iOiAiMS43LjE2IiwKICAiZGVzY3JpcHRpb24iOiAiUGVhciBVc2VyLUludGVyZmFjZSBMaWJyYXJ5IGZvciBFbGVjdHJvbiIsCiAgIm1haW4iOiAiaW5kZXguanMiLAogICJzY3JpcHRzIjogewogICAgImJvb3RzdHJhcCI6ICJwZWFyIHJ1biBzY3JpcHRzL2Jvb3RzdHJhcC5qcyIsCiAgICAiZGVjYWwiOiAicGVhciBydW4gc2NyaXB0cy9kZWNhbC5qcyIsCiAgICAiYnVuZGxlIjogInBlYXIgcnVuIHNjcmlwdHMvYnVuZGxlLmpzIiwKICAgICJwcmVzdGFnZSI6ICJwZWFyIHJ1biBzY3JpcHRzL3ByZXN0YWdlLm1qcyIsCiAgICAibGludCI6ICJzdGFuZGFyZCIKICB9LAogICJmaWxlcyI6IFsKICAgICJib290c3RyYXAuanMiLAogICAgImluZGV4LmpzIiwKICAgICJydW50aW1lLmpzIiwKICAgICJwcmUuanMiLAogICAgImFwaS5qcyIKICBdLAogICJwZWFyIjogewogICAgImFzc2V0cyI6IHsKICAgICAgInVpIjogewogICAgICAgICJsaW5rIjogInBlYXI6Ly8wLjkzOC5wa3pwYmNjeDhvanA0NTE2cDdhYm9tcHVoeWo1Z2NwcWZ1eDFzOWU3ZTR6emNkaHloZHRvIiwKICAgICAgICAibmFtZSI6ICJQZWFyIFJ1bnRpbWUiLAogICAgICAgICJvbmx5IjogWwogICAgICAgICAgIi9ib290LmJ1bmRsZSIsCiAgICAgICAgICAiL2J5LWFyY2gvJSVIT1NUJSUiLAogICAgICAgICAgIi9wcmVidWlsZHMvJSVIT1NUJSUiCiAgICAgICAgXQogICAgICB9CiAgICB9LAogICAgInN0YWdlIjogewogICAgICAic2tpcFdhcm11cCI6ICJ0cnVlIiwKICAgICAgIm9ubHkiOiBbCiAgICAgICAgImJvb3QuYnVuZGxlIiwKICAgICAgICAiYnktYXJjaCIsCiAgICAgICAgIkNIQU5HRUxPRy5tZCIsCiAgICAgICAgInByZWJ1aWxkcyIsCiAgICAgICAgInRlbXBsYXRlIgogICAgICBdCiAgICB9CiAgfSwKICAic3RhbmRhcmQiOiB7CiAgICAiZ2xvYmFscyI6IFsKICAgICAgIkJhcmUiLAogICAgICAiUGVhciIsCiAgICAgICJMT0ciCiAgICBdLAogICAgImlnbm9yZSI6IFsKICAgICAgInRlbXBsYXRlIgogICAgXQogIH0sCiAgImtleXdvcmRzIjogWwogICAgInBlYXIiLAogICAgInJ1bnRpbWUiLAogICAgImVsZWN0cm9uIiwKICAgICJQZWFyIFJ1bnRpbWUiLAogICAgInBlZXItdG8tcGVlciIsCiAgICAidXNlci1pbnRlcmZhY2UiLAogICAgIlVJIiwKICAgICJpbnRlcmZhY2UiCiAgXSwKICAiYXV0aG9yIjogIkhvbGVwdW5jaCIsCiAgImxpY2Vuc2UiOiAiQXBhY2hlLTIuMCIsCiAgImRlcGVuZGVuY2llcyI6IHsKICAgICJiYXJlLWVudiI6ICJeMy4wLjAiLAogICAgImJhcmUtZnMiOiAiXjQuMC4xIiwKICAgICJiYXJlLW9zIjogIl4zLjQuMCIsCiAgICAiYmFyZS1wYXRoIjogIl4zLjAuMCIsCiAgICAiYmFyZS1zdWJwcm9jZXNzIjogIl41LjAuMiIsCiAgICAiY29tcGFjdC1lbmNvZGluZyI6ICJeMi4xNi4xIiwKICAgICJoeXBlcmNvcmUtY3J5cHRvIjogIl4zLjYuMSIsCiAgICAiaHlwZXJjb3JlLWlkLWVuY29kaW5nIjogIl4xLjMuMCIsCiAgICAiaWFtYnVzIjogIl4xLjAuMyIsCiAgICAibG9jYWxkcml2ZSI6ICJeMS4xMi4xIiwKICAgICJwYXBhcmFtIjogIl4xLjYuMSIsCiAgICAicGVhci1hcGkiOiAiXjEuMjguNiIsCiAgICAicGVhci1pcGMiOiAiXjYuNC4wIiwKICAgICJzY3JpcHQtbGlua2VyIjogIl4yLjUuMyIsCiAgICAic3RyZWFteCI6ICJeMi4yMC4yIiwKICAgICJ1cmwtZmlsZS11cmwiOiAiXjEuMC40IiwKICAgICJ3aGljaC1ydW50aW1lIjogIl4xLjIuMSIKICB9LAogICJkZXZEZXBlbmRlbmNpZXMiOiB7CiAgICAiQGZvbnRzb3VyY2Uvb3Blbi1zYW5zIjogIl41LjEuMCIsCiAgICAiY3JjLXVuaXZlcnNhbCI6ICJeMS4wLjQiLAogICAgImZzLW5hdGl2ZS1leHRlbnNpb25zIjogIl4xLjQuMiIsCiAgICAicGVhci1pbnRlcmZhY2UiOiAiXjEuMC4zIiwKICAgICJwZWFyLXBhY2siOiAiXjEuMC4xIiwKICAgICJxdWlja2JpdC11bml2ZXJzYWwiOiAiXjIuMi4wIiwKICAgICJyZWRoYXQtb3ZlcnBhc3MtZm9udCI6ICJeMS4wLjAiLAogICAgInJvY2tzZGItbmF0aXZlIjogIl4zLjUuNSIsCiAgICAic29kaXVtLW5hdGl2ZSI6ICJeNS4wLjEiLAogICAgInN0YW5kYXJkIjogIl4xNy4xLjIiLAogICAgInVkeC1uYXRpdmUiOiAiXjEuMTcuNiIKICB9Cn0KJ3VzZSBzdHJpY3QnCgovKiBnbG9iYWwgUGVhciAqLwovKiBlc2xpbnQtZW52IG5vZGUsIGJyb3dzZXIgKi8KbW9kdWxlLmV4cG9ydHMgPSAoc3RhdGUpID0+IHsKICBpZiAoIXByb2Nlc3MuaXNNYWluRnJhbWUpIHJldHVybgogIGNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZSgnZWxlY3Ryb24nKQogIGNvbnN0IHRpbWVycyA9IHJlcXVpcmUoJ3RpbWVycycpCiAgY29uc3QgeyBpc01hYywgaXNXaW5kb3dzLCBwbGF0Zm9ybSB9ID0gcmVxdWlyZSgnd2hpY2gtcnVudGltZScpCiAgY29uc3QgQVBJID0gcmVxdWlyZSgncGVhci1hcGknKQogIGNvbnN0IEdVSSA9IHJlcXVpcmUoJy4vZ3VpJykKICBjb25zdCB7IHBhcmVudFdjSWQsIGVudiwgaWQsIHJ0aSwgdHJheSwgLi4uY29uZmlnIH0gPSBzdGF0ZQogIGNvbnN0IGlzRGVjYWwgPSBzdGF0ZS5pc0RlY2FsIHx8IGZhbHNlCiAgaWYgKGNvbmZpZy5rZXk/LnR5cGUgPT09ICdCdWZmZXInKSBjb25maWcua2V5ID0gQnVmZmVyLmZyb20oY29uZmlnLmtleS5kYXRhKQogIGNvbnN0IGRpciA9IGNvbmZpZy5kaXIKICBzdGF0ZS5jb25maWcgPSBjb25maWcKICBwcm9jZXNzLmNoZGlyKGRpcikKICBpZiAoY29uZmlnLmZyYWdtZW50KSBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBudWxsLCAnIycgKyBjb25maWcuZnJhZ21lbnQpCgogIGNvbnN0IGd1aSA9IG5ldyBHVUkoeyBBUEksIHN0YXRlIH0pCiAgd2luZG93LlBlYXIgPSBndWkuYXBpCiAgY29uc3QgUGVhckVsZWN0cm9uID0gUGVhcltQZWFyLmNvbnN0cnVjdG9yLlVJXQoKICBpZiAoaXNEZWNhbCA9PT0gZmFsc2UpIE9iamVjdC5hc3NpZ24ocHJvY2Vzcy5lbnYsIGVudikKCiAgewogICAgY29uc3QgeyBzZXRUaW1lb3V0LCBjbGVhclRpbWVvdXQsIHNldEltbWVkaWF0ZSwgY2xlYXJJbW1lZGlhdGUsIHNldEludGVydmFsLCBjbGVhckludGVydmFsIH0gPSB0aW1lcnMKICAgIGdsb2JhbC5zZXRUaW1lb3V0ID0gc2V0VGltZW91dAogICAgZ2xvYmFsLmNsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dAogICAgZ2xvYmFsLnNldEltbWVkaWF0ZSA9IHNldEltbWVkaWF0ZQogICAgZ2xvYmFsLmNsZWFySW1tZWRpYXRlID0gY2xlYXJJbW1lZGlhdGUKICAgIGdsb2JhbC5zZXRJbnRlcnZhbCA9IHNldEludGVydmFsCiAgICBnbG9iYWwuY2xlYXJJbnRlcnZhbCA9IGNsZWFySW50ZXJ2YWwKICB9CgogIGlmIChpc0RlY2FsKSB7CiAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5vbmNlKCdleGl0JywgKGUsIGNvZGUpID0+IHsgUGVhci5leGl0KGNvZGUpIH0pCiAgfSBlbHNlIHsKICAgIHByb2Nlc3Mub25jZSgnZXhpdCcsIChjb2RlKSA9PiB7CiAgICAgIGNvbnN0IGFjdHVhbGx5QVJlZnJlc2ggPSBjb2RlID09PSB1bmRlZmluZWQKICAgICAgaWYgKGFjdHVhbGx5QVJlZnJlc2gpIHJldHVybgogICAgICBlbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kKCdzZW5kLXRvJywgcGFyZW50V2NJZCwgJ2V4aXQnLCBjb2RlKQogICAgfSkKICB9CgogIGNvbnN0IHsgd2FybiB9ID0gY29uc29sZQogIGNvbnNvbGUud2FybiA9IChtc2csIC4uLmFyZ3MpID0+IHsKICAgIC8vIGlmICgvSW5zZWN1cmUgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kvLnRlc3QobXNnKSkgcmV0dXJuLgogICAgd2Fybi5jYWxsKGNvbnNvbGUsIG1zZywgLi4uYXJncykKICB9CgogIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCcgJiYgbG9jYXRpb24ucG9ydCkgewogICAgY29uc3QgZ3VuayA9IHJlcXVpcmUoJ3BlYXItYXBpL2d1bmsnKQogICAgY29uc3QgcnVudGltZSA9IHJlcXVpcmUoJ3NjcmlwdC1saW5rZXIvcnVudGltZScpCgogICAgLy8gcGxhdGZvcm0gcnVudGltZToKICAgIGNvbnN0IHBsdHNsID0gcnVudGltZSh7CiAgICAgIGJ1aWx0aW5zOiBndW5rLmJ1aWx0aW5zLAogICAgICBtYXA6IGd1bmsucGxhdGZvcm0ubWFwLAogICAgICBtYXBJbXBvcnQ6IGd1bmsucGxhdGZvcm0ubWFwSW1wb3J0LAogICAgICBzeW1ib2w6IGd1bmsucGxhdGZvcm0uc3ltYm9sLAogICAgICBwcm90b2NvbDogZ3Vuay5wbGF0Zm9ybS5wcm90b2NvbCwKICAgICAgZ2V0U3luYyAodXJsKSB7CiAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCkKICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCBmYWxzZSkKICAgICAgICB4aHIuc2VuZChudWxsKQogICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0CiAgICAgIH0sCiAgICAgIHJlc29sdmVTeW5jIChyZXEsIGRpcm5hbWUsIHsgaXNJbXBvcnQgfSkgewogICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpCiAgICAgICAgY29uc3QgdHlwZSA9IGlzSW1wb3J0ID8gJ2VzbScgOiAnY2pzJwogICAgICAgIGNvbnN0IHVybCA9IGAke2Rpcm5hbWV9L34ke3JlcX0rcGxhdGZvcm0tcmVzb2x2ZSske3R5cGV9YAogICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIGZhbHNlKQogICAgICAgIHhoci5zZW5kKG51bGwpCiAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQKICAgICAgfQogICAgfSkKCiAgICAvLyBhcHAgcnVudGltZToKICAgIGNvbnN0IGFwcHNsID0gcnVudGltZSh7CiAgICAgIGJ1aWx0aW5zOiBndW5rLmJ1aWx0aW5zLAogICAgICBtYXA6IGd1bmsuYXBwLm1hcCwKICAgICAgbWFwSW1wb3J0OiBndW5rLmFwcC5tYXBJbXBvcnQsCiAgICAgIHN5bWJvbDogZ3Vuay5hcHAuc3ltYm9sLAogICAgICBwcm90b2NvbDogZ3Vuay5hcHAucHJvdG9jb2wsCiAgICAgIGdldFN5bmMgKHVybCkgewogICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpCiAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgZmFsc2UpCiAgICAgICAgeGhyLnNlbmQobnVsbCkKICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dAogICAgICB9LAogICAgICByZXNvbHZlU3luYyAocmVxLCBkaXJuYW1lLCB7IGlzSW1wb3J0IH0pIHsKICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKQogICAgICAgIGNvbnN0IHR5cGUgPSBpc0ltcG9ydCA/ICdlc20nIDogJ2NqcycKICAgICAgICBjb25zdCB1cmwgPSBgJHtkaXJuYW1lfS9+JHtyZXF9K3Jlc29sdmUrJHt0eXBlfWAKICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCBmYWxzZSkKICAgICAgICB4aHIuc2VuZChudWxsKQogICAgICAgIGlmICh4aHIuc3RhdHVzICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihgJHt4aHIuc3RhdHVzfSAke3hoci5yZXNwb25zZVRleHR9YCkKICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dAogICAgICB9CiAgICB9KQoKICAgIGFzeW5jIGZ1bmN0aW9uIHdhcm0gKCkgewogICAgICBmb3IgYXdhaXQgKGNvbnN0IHsgYmF0Y2gsIHByb3RvY29sIH0gb2YgUGVhcltQZWFyLmNvbnN0cnVjdG9yLlVJXS53YXJtaW5nKCkpIHsKICAgICAgICBsZXQgc2wgPSBudWxsCiAgICAgICAgaWYgKHByb3RvY29sID09PSAncGVhcicgfHwgcHJvdG9jb2wgPT09ICdob2xlcHVuY2gnKSBzbCA9IHBsdHNsCiAgICAgICAgaWYgKHByb3RvY29sID09PSAnYXBwJykgc2wgPSBhcHBzbAogICAgICAgIGlmIChzbCA9PT0gbnVsbCkgY29udGludWUKICAgICAgICBmb3IgKGNvbnN0IHsgZmlsZW5hbWUsIHNvdXJjZSB9IG9mIGJhdGNoKSBzbC5zb3VyY2VzLnNldChmaWxlbmFtZSwgc291cmNlKQogICAgICB9CiAgICB9CgogICAgaWYgKFBlYXIuY29uZmlnLmlzRGVjYWwgPT09IGZhbHNlKSB3YXJtKCkuY2F0Y2goY29uc29sZS5lcnJvcikKICB9CgogIGZ1bmN0aW9uIGRlc2NvcGVHbG9iYWxzICgpIHsKICAgIGRlbGV0ZSBnbG9iYWwucmVxdWlyZQogICAgZGVsZXRlIGdsb2JhbC5tb2R1bGUKICAgIGRlbGV0ZSBnbG9iYWwuX19kaXJuYW1lCiAgICBkZWxldGUgZ2xvYmFsLl9fZmlsZW5hbWUKICB9CgogIGRlc2NvcGVHbG9iYWxzKCkKCiAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdwZWFyLWN0cmwnLCBjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHsKICAgICNvbmZvY3VzID0gbnVsbAogICAgI29uYmx1ciA9IG51bGwKICAgICNkZW1heCA9IG51bGwKICAgICNjbG9zaW5nID0gbnVsbAogICAgZ2V0IGNsb3NpbmcgKCkgewogICAgICByZXR1cm4gdGhpcy4jY2xvc2luZyA9PT0gbnVsbCA/IFByb21pc2UucmVzb2x2ZSgpIDogdGhpcy4jY2xvc2luZwogICAgfQoKICAgIHN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzICgpIHsKICAgICAgcmV0dXJuIFsnZGF0YS1taW5pbWl6YWJsZScsICdkYXRhLW1heGltaXphYmxlJ10KICAgIH0KCiAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgKG5hbWUpIHsKICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnZGF0YS0nKSA9PT0gZmFsc2UpIHJldHVybgogICAgICBpZiAobmFtZSA9PT0gJ2RhdGEtbWluaW1pemFibGUnKSB7CiAgICAgICAgdGhpcy4jc2V0TWluaW1pemFibGUoc3RyVG9Cb29sKHRoaXMuZGF0YXNldC5taW5pbWl6YWJsZSkpCiAgICAgIH0KICAgICAgaWYgKG5hbWUgPT09ICdkYXRhLW1heGltaXphYmxlJykgewogICAgICAgIHRoaXMuI3NldE1heGltaXphYmxlKHN0clRvQm9vbCh0aGlzLmRhdGFzZXQubWF4aW1pemFibGUpKQogICAgICB9CiAgICB9CgogICAgYXN5bmMgI21hY2xpZ2h0cyAodmlzaWJsZSkgewogICAgICBhd2FpdCBndWkuaXBjLnNldFdpbmRvd0J1dHRvblZpc2liaWxpdHkoeyBpZDogZ3VpLmlkLCB2aXNpYmxlIH0pCiAgICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoJyNjdHJsJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKICAgICAgYXdhaXQgZ3VpLmlwYy5zZXRXaW5kb3dCdXR0b25Qb3NpdGlvbih7IGlkOiBndWkuaWQsIHBvaW50OiB7IHgsIHk6IHkgLSA2IH0gfSkKICAgIH0KCiAgICBjb25uZWN0ZWRDYWxsYmFjayAoKSB7CiAgICAgIHRoaXMuZGF0YXNldC5wbGF0Zm9ybSA9IHBsYXRmb3JtCiAgICAgIGlmIChpc01hYykgewogICAgICAgIHRoaXMuI21hY2xpZ2h0cyh0cnVlKS5jYXRjaChjb25zb2xlLmVycm9yKQogICAgICAgIHRoaXMubXV0YXRpb25zID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoYXN5bmMgKCkgPT4gewogICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcignI2N0cmwnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKQogICAgICAgICAgYXdhaXQgZ3VpLmlwYy5zZXRXaW5kb3dCdXR0b25Qb3NpdGlvbih7IGlkOiBndWkuaWQsIHBvaW50OiB7IHgsIHk6IHkgLSA2IH0gfSkKICAgICAgICB9KQogICAgICAgIHRoaXMubXV0YXRpb25zLm9ic2VydmUodGhpcywgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pCgogICAgICAgIHRoaXMuaW50ZXNlY3Rpb25zID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChbZWxlbWVudF0pID0+IHRoaXMuI21hY2xpZ2h0cyhlbGVtZW50LmlzSW50ZXJzZWN0aW5nKSwgeyB0aHJlc2hvbGQ6IDAgfSkKCiAgICAgICAgdGhpcy5pbnRlc2VjdGlvbnMub2JzZXJ2ZSh0aGlzKQogICAgICAgIHRoaXMuI3NldEN0cmwoKQogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIGNvbnN0IG1pbiA9IHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKCcjbWluJykKICAgICAgY29uc3QgbWF4ID0gdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoJyNtYXgnKQogICAgICBjb25zdCByZXN0b3JlID0gdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoJyNyZXN0b3JlJykKICAgICAgY29uc3QgY2xvc2UgPSB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcignI2Nsb3NlJykKCiAgICAgIG1heC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuI21heCkKICAgICAgbWluLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy4jbWluKQoKICAgICAgaWYgKHJlc3RvcmUpIHJlc3RvcmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLiNyZXN0b3JlKQogICAgICBjbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuI2Nsb3NlKQogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLiNvbmZvY3VzKQogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuI29uYmx1cikKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIChlKSA9PiB7CiAgICAgICAgY29uc3QgeCA9IGUuY2xpZW50WAogICAgICAgIGNvbnN0IHkgPSBlLmNsaWVudFkKICAgICAgICBpZiAoZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KSA9PT0gdGhpcykgdGhpcy4jb25mb2N1cygpCiAgICAgIH0pCgogICAgICB0aGlzLiNzZXRDdHJsKCkKICAgIH0KCiAgICBhc3luYyAjc2V0Q3RybCAoKSB7CiAgICAgIGlmICh0aGlzLmRhdGFzZXQubWluaW1pemFibGUgIT09IHVuZGVmaW5lZCkgdGhpcy4jc2V0TWluaW1pemFibGUoc3RyVG9Cb29sKHRoaXMuZGF0YXNldC5taW5pbWl6YWJsZSkpCiAgICAgIGlmICh0aGlzLmRhdGFzZXQubWF4aW1pemFibGUgIT09IHVuZGVmaW5lZCkgdGhpcy4jc2V0TWF4aW1pemFibGUoc3RyVG9Cb29sKHRoaXMuZGF0YXNldC5tYXhpbWl6YWJsZSkpCiAgICB9CgogICAgYXN5bmMgI3NldE1heGltaXphYmxlICh2YWx1ZSkgewogICAgICBpZiAoIWlzTWFjKSB7CiAgICAgICAgdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoJyNtYXgnKS5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyAnaW5saW5lJyA6ICdub25lJwogICAgICB9IGVsc2UgewogICAgICAgIGF3YWl0IGd1aS5pcGMuc2V0TWF4aW1pemFibGUoeyBpZDogZ3VpLmlkLCB2YWx1ZTogISF2YWx1ZSB9KQogICAgICB9CiAgICB9CgogICAgYXN5bmMgI3NldE1pbmltaXphYmxlICh2YWx1ZSkgewogICAgICBpZiAoIWlzTWFjKSB7CiAgICAgICAgdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoJyNtaW4nKS5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyAnaW5saW5lJyA6ICdub25lJwogICAgICB9IGVsc2UgewogICAgICAgIGF3YWl0IGd1aS5pcGMuc2V0TWluaW1pemFibGUoeyBpZDogZ3VpLmlkLCB2YWx1ZTogISF2YWx1ZSB9KQogICAgICB9CiAgICB9CgogICAgZGlzY29ubmVjdGVkQ2FsbGJhY2sgKCkgewogICAgICBpZiAoaXNNYWMpIHsKICAgICAgICB0aGlzLm11dGF0aW9ucy5kaXNjb25uZWN0KCkKICAgICAgICB0aGlzLmludGVzZWN0aW9ucy5kaXNjb25uZWN0KCkKICAgICAgICB0aGlzLiNjbG9zaW5nID0gZ3VpLmlwYy5zZXRXaW5kb3dCdXR0b25WaXNpYmlsaXR5KHsgaWQ6IGd1aS5pZCwgdmlzaWJsZTogZmFsc2UgfSkKICAgICAgICByZXR1cm4KICAgICAgfQoKICAgICAgY29uc3QgbWluID0gdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoJyNtaW4nKQogICAgICBjb25zdCBtYXggPSB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcignI21heCcpCiAgICAgIGNvbnN0IHJlc3RvcmUgPSB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcignI3Jlc3RvcmUnKQogICAgICBjb25zdCBjbG9zZSA9IHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKCcjY2xvc2UnKQogICAgICBtaW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLiNtaW4pCiAgICAgIG1heC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuI21heCkKICAgICAgaWYgKHJlc3RvcmUpIHJlc3RvcmUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLiNyZXN0b3JlKQogICAgICBjbG9zZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuI2Nsb3NlKQogICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLiNvbmZvY3VzKQogICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuI29uYmx1cikKICAgIH0KCiAgICBjb25zdHJ1Y3RvciAoKSB7CiAgICAgIHN1cGVyKCkKICAgICAgdGhpcy50ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJykKICAgICAgdGhpcy50ZW1wbGF0ZS5pbm5lckhUTUwgPSBpc1dpbmRvd3MgPyB0aGlzLiN3aW4oKSA6IChpc01hYyA/IHRoaXMuI21hYygpIDogdGhpcy4jZ2VuKCkpCiAgICAgIHRoaXMucm9vdCA9IHRoaXMuYXR0YWNoU2hhZG93KHsgbW9kZTogJ29wZW4nIH0pCiAgICAgIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLnRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKQogICAgICB0aGlzLiNvbmZvY3VzID0gKCkgPT4gdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoJyNjdHJsJykuY2xhc3NMaXN0LmFkZCgnZm9jdXNlZCcpCiAgICAgIHRoaXMuI29uYmx1ciA9ICgpID0+IHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKCcjY3RybCcpLmNsYXNzTGlzdC5yZW1vdmUoJ2ZvY3VzZWQnKQogICAgICB0aGlzLiNkZW1heCA9ICgpID0+IHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKCcjY3RybCcpLmNsYXNzTGlzdC5yZW1vdmUoJ21heCcpCiAgICB9CgogICAgYXN5bmMgI21pbiAoKSB7IGF3YWl0IFBlYXJFbGVjdHJvbi5hcHAubWluaW1pemUoKSB9CiAgICBhc3luYyAjbWF4IChlKSB7CiAgICAgIGlmIChpc01hYykgYXdhaXQgUGVhckVsZWN0cm9uLmFwcC5mdWxsc2NyZWVuKCkKICAgICAgZWxzZSBhd2FpdCBQZWFyRWxlY3Ryb24uYXBwLm1heGltaXplKCkKICAgICAgZS50YXJnZXQucm9vdC5xdWVyeVNlbGVjdG9yKCcjY3RybCcpLmNsYXNzTGlzdC5hZGQoJ21heCcpCiAgICB9CgogICAgYXN5bmMgI3Jlc3RvcmUgKGUpIHsKICAgICAgYXdhaXQgUGVhckVsZWN0cm9uLmFwcC5yZXN0b3JlKCkKICAgICAgZS50YXJnZXQucm9vdC5xdWVyeVNlbGVjdG9yKCcjY3RybCcpLmNsYXNzTGlzdC5yZW1vdmUoJ21heCcpCiAgICB9CgogICAgYXN5bmMgI2Nsb3NlICgpIHsgYXdhaXQgUGVhckVsZWN0cm9uLmFwcC5jbG9zZSgpIH0KICAgICN3aW4gKCkgewogICAgICByZXR1cm4gYAogICAgPHN0eWxlPgogICAgICAjY3RybCB7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC1hcHAtcmVnaW9uOiBuby1kcmFnOwogICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdzsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC42ZW07CiAgICAgICAgbWFyZ2luLXRvcDogMC4yMmVtOwogICAgICAgIGJvcmRlci1zcGFjaW5nOiAwLjNlbSAwOwogICAgICB9CiAgICAgICNjdHJsID4gLmN0cmwgewogICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKCiAgICAgIH0KICAgICAgI2N0cmwgPiAuY3RybDpob3ZlciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQogICAgICAubWF4ICNtYXggIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgICNyZXN0b3JlLmN0cmwgIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIC5tYXggI3Jlc3RvcmUuY3RybCAgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICAgIH0KICAgICAgI21pbiB7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDRweDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgaWQ9ImN0cmwiPgogICAgICA8ZGl2IGlkPSJtaW4iIGNsYXNzPSJjdHJsIj4KICAgICAgICA8c3ZnIHdpZHRoPSIxMCIgaGVpZ2h0PSIxIiB2aWV3Qm94PSIwIDAgMTAgMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMCIgaGVpZ2h0PSIxIiBmaWxsPSJ3aGl0ZSIvPgogICAgICAgIDwvc3ZnPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0ibWF4IiBjbGFzcz0iY3RybCI+CiAgICAgICAgPHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOSAxSDFWOUg5VjFaTTAgMFYxMEgxMFYwSDBaIiBmaWxsPSJ3aGl0ZSIvPgogICAgICAgIDwvc3ZnPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0icmVzdG9yZSIgY2xhc3M9ImN0cmwiPgogICAgICAgIDxzdmcgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMTAgMTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTMgMUg5VjdIOFY4SDlIMTBWN1YxVjBIOUgzSDJWMVYySDNWMVoiIGZpbGw9IndoaXRlIi8+CiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcgM0gxVjlIN1YzWk0wIDJWMTBIOFYySDBaIiBmaWxsPSJ3aGl0ZSIvPgogICAgICAgIDwvc3ZnPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iY2xvc2UiIGNsYXNzPSJjdHJsIj4KICAgICAgICA8c3ZnIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSIgdmlld0JveD0iMCAwIDExIDExIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjY0NjQ1IDUuMzUzNTVMMCAwLjcwNzEwN0wwLjcwNzEwNyAwTDUuMzUzNTUgNC42NDY0NUwxMCAwTDEwLjcwNzEgMC43MDcxMDdMNi4wNjA2NiA1LjM1MzU1TDEwLjcwNzEgMTBMMTAgMTAuNzA3MUw1LjM1MzU1IDYuMDYwNjZMMC43MDcxMDcgMTAuNzA3MUwwIDEwTDQuNjQ2NDUgNS4zNTM1NVoiIGZpbGw9IndoaXRlIi8+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICBgCiAgICB9CgogICAgI21hYyAoKSB7CiAgICAgIHJldHVybiBgCiAgICAgIDxzdHlsZT46aG9zdCB7ZGlzcGxheTogYmxvY2s7fTwvc3R5bGU+CiAgICAgIDxkaXYgaWQ9Y3RybD48L2Rpdj4KICAgICAgYAogICAgfQoKICAgICNnZW4gKCkgewogICAgICAvLyBsaW51eCB1c2VzIGZyYW1lIGF0bQogICAgICByZXR1cm4gYAogICAgICAgIDxzdHlsZT4KICAgICAgICAgICNjdHJsIHsKICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgICAgIC13ZWJraXQtYXBwLXJlZ2lvbjogbm8tZHJhZzsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogLjZlbTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMC44ZW07CiAgICAgICAgICAgIGJvcmRlci1zcGFjaW5nOiAwLjNlbSAwOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC45ZW07CiAgICAgICAgICB9CiAgICAgICAgICAjY3RybCA+IC5jdHJsIHsKICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgIHdpZHRoOiAyNHB4OwogICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAuOWVtOwogICAgICAgICAgfQogICAgICAgICAgI2N0cmwgPiAuY3RybDpob3ZlciB7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICB9CiAgICAgICAgICAubWF4ICNtYXggIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgIH0KICAgICAgICAgICNyZXN0b3JlLmN0cmwgIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgIH0KICAgICAgICAgIC5tYXggI3Jlc3RvcmUuY3RybCAgewogICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgICAgICAgfQogICAgICAgICAgc3ZnIHsKICAgICAgICAgICAgd2lkdGg6IDFlbTsKICAgICAgICAgICAgaGVpZ2h0OiAxZW07CiAgICAgICAgICB9CiAgICAgICAgICAjdGl0bGViYXJ7CiAgICAgICAgICAgIC13ZWJraXQtYXBwLXJlZ2lvbjogZHJhZzsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogNTBweDsKICAgICAgICAgIH0KICAgICAgICA8L3N0eWxlPgogICAgICAgIDxkaXYgaWQ9InRpdGxlYmFyIj4KICAgICAgICAgIDxkaXYgaWQ9ImN0cmwiPgogICAgICAgICAgICA8ZGl2IGlkPSJtaW4iIGNsYXNzPSJjdHJsIj4KICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5IDEyLjk5OEg1VjEwLjk5OEgxOVYxMi45OThaIiBmaWxsPSJ3aGl0ZSIvPgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibWF4IiBjbGFzcz0iY3RybCI+CiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgICAgICAgICAgICAgIDxyZWN0IHg9IjYiIHk9IjYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJyZXN0b3JlIiBjbGFzcz0iY3RybCI+CiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF85MTA1XzExMjA4NCkiPgogICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTguMTExMDggNkgxNy4yMjIyVjE1LjExMTFIMTkuMjIyMlY1VjRIMTguMjIyMkg4LjExMTA4VjZaTTYgMTAuMzMzM0gxMi44ODg5VjE3LjIyMjJINlYxMC4zMzMzWk00IDguMzMzMzNINkgxMi44ODg5SDE0Ljg4ODlWMTAuMzMzM1YxNy4yMjIyVjE5LjIyMjJIMTIuODg4OUg2SDRWMTcuMjIyMlYxMC4zMzMzVjguMzMzMzNaIiBmaWxsPSJ3aGl0ZSIvPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfOTEwNV8xMTIwODQiPgogICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICAgICAgICAgIDwvZGVmcz4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9ImNsb3NlIiBjbGFzcz0iY3RybCI+CiAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjQgMTlMNSAxNy42TDEwLjYgMTJMNSA2LjRMNi40IDVMMTIgMTAuNkwxNy42IDVMMTkgNi40TDEzLjQgMTJMMTkgMTcuNkwxNy42IDE5TDEyIDEzLjRMNi40IDE5WiIgZmlsbD0id2hpdGUiLz4KICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgYAogICAgfQogIH0pCn0KCmZ1bmN0aW9uIHN0clRvQm9vbCAoc3RyKSB7IHJldHVybiBzdHIgPT09ICd0cnVlJyB9Cg=='