1778692588
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A0e53857dc1f0fb3e10f777590ee5e012-5013e453f08a7b0aa96f42d82cb5410f
s:13712:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjIzOiJTbWFydFB1bmN0RXh0ZW5zaW9uLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6Mzk6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cU21hcnRQdW5jdCI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjM5OiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXFNtYXJ0UHVuY3QiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMDoiU21hcnRQdW5jdCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjU5OiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXFNtYXJ0UHVuY3RcU21hcnRQdW5jdEV4dGVuc2lvbiI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18iOjE1OntzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AaW1wbGVtZW50cyI7YToxOntzOjU5OiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXENvbmZpZ3VyYWJsZUV4dGVuc2lvbkludGVyZmFjZSI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU5OiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXENvbmZpZ3VyYWJsZUV4dGVuc2lvbkludGVyZmFjZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjMwOiJDb25maWd1cmFibGVFeHRlbnNpb25JbnRlcmZhY2UiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjI6e3M6Nzg6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cU21hcnRQdW5jdFxTbWFydFB1bmN0RXh0ZW5zaW9uOjpjb25maWd1cmVTY2hlbWEoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDQ6IlxMZWFndWVcQ29uZmlnXENvbmZpZ3VyYXRpb25CdWlsZGVySW50ZXJmYWNlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6Mjk6IkNvbmZpZ3VyYXRpb25CdWlsZGVySW50ZXJmYWNlIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NzoiYnVpbGRlciI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTAyNDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxNTExO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Nzg6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cU21hcnRQdW5jdFxTbWFydFB1bmN0RXh0ZW5zaW9uOjpjb25maWd1cmVTY2hlbWEoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE1OiJjb25maWd1cmVTY2hlbWEiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3MToiXExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxTbWFydFB1bmN0XFNtYXJ0UHVuY3RFeHRlbnNpb246OnJlZ2lzdGVyKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU4OiJcTGVhZ3VlXENvbW1vbk1hcmtcRW52aXJvbm1lbnRcRW52aXJvbm1lbnRCdWlsZGVySW50ZXJmYWNlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6Mjc6IkVudmlyb25tZW50QnVpbGRlckludGVyZmFjZSI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjExOiJlbnZpcm9ubWVudCI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTUxODt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo2MztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToyNjg0O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NzE6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cU21hcnRQdW5jdFxTbWFydFB1bmN0RXh0ZW5zaW9uOjpyZWdpc3RlcigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoicmVnaXN0ZXIiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjMwO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTk6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cU21hcnRQdW5jdFxTbWFydFB1bmN0RXh0ZW5zaW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTk6IlNtYXJ0UHVuY3RFeHRlbnNpb24iO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MTtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcmVhZE9ubHkiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiNTAxM2U0NTNmMDhhN2IwYWE5NmY0MmQ4MmNiNTQxMGYiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czo3MzoidmVuZG9yL2xlYWd1ZS9jb21tb25tYXJrL3NyYy9FeHRlbnNpb24vU21hcnRQdW5jdC9TbWFydFB1bmN0RXh0ZW5zaW9uLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6MjY4ODoiPD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGxlYWd1ZS9jb21tb25tYXJrIHBhY2thZ2UuCiAqCiAqIChjKSBDb2xpbiBPJ0RlbGwgPGNvbGlub2RlbGxAZ21haWwuY29tPgogKgogKiBPcmlnaW5hbCBjb2RlIGJhc2VkIG9uIHRoZSBDb21tb25NYXJrIEpTIHJlZmVyZW5jZSBwYXJzZXIgKGh0dHA6Ly9iaXRseS5jb20vY29tbW9ubWFyay1qcykKICogIC0gKGMpIEpvaG4gTWFjRmFybGFuZQogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXFNtYXJ0UHVuY3Q7Cgp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcRW52aXJvbm1lbnRcRW52aXJvbm1lbnRCdWlsZGVySW50ZXJmYWNlOwp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcRXZlbnRcRG9jdW1lbnRQYXJzZWRFdmVudDsKdXNlIExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxDb25maWd1cmFibGVFeHRlbnNpb25JbnRlcmZhY2U7CnVzZSBMZWFndWVcQ29tbW9uTWFya1xOb2RlXEJsb2NrXERvY3VtZW50Owp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcTm9kZVxCbG9ja1xQYXJhZ3JhcGg7CnVzZSBMZWFndWVcQ29tbW9uTWFya1xOb2RlXElubGluZVxUZXh0Owp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcUmVuZGVyZXJcQmxvY2sgYXMgQ29yZUJsb2NrUmVuZGVyZXI7CnVzZSBMZWFndWVcQ29tbW9uTWFya1xSZW5kZXJlclxJbmxpbmUgYXMgQ29yZUlubGluZVJlbmRlcmVyOwp1c2UgTGVhZ3VlXENvbmZpZ1xDb25maWd1cmF0aW9uQnVpbGRlckludGVyZmFjZTsKdXNlIE5ldHRlXFNjaGVtYVxFeHBlY3Q7CgpmaW5hbCBjbGFzcyBTbWFydFB1bmN0RXh0ZW5zaW9uIGltcGxlbWVudHMgQ29uZmlndXJhYmxlRXh0ZW5zaW9uSW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBjb25maWd1cmVTY2hlbWEoQ29uZmlndXJhdGlvbkJ1aWxkZXJJbnRlcmZhY2UgJGJ1aWxkZXIpOiB2b2lkCiAgICB7CiAgICAgICAgJGJ1aWxkZXItPmFkZFNjaGVtYSgnc21hcnRwdW5jdCcsIEV4cGVjdDo6c3RydWN0dXJlKFsKICAgICAgICAgICAgJ2RvdWJsZV9xdW90ZV9vcGVuZXInID0+IEV4cGVjdDo6c3RyaW5nKFF1b3RlOjpET1VCTEVfUVVPVEVfT1BFTkVSKSwKICAgICAgICAgICAgJ2RvdWJsZV9xdW90ZV9jbG9zZXInID0+IEV4cGVjdDo6c3RyaW5nKFF1b3RlOjpET1VCTEVfUVVPVEVfQ0xPU0VSKSwKICAgICAgICAgICAgJ3NpbmdsZV9xdW90ZV9vcGVuZXInID0+IEV4cGVjdDo6c3RyaW5nKFF1b3RlOjpTSU5HTEVfUVVPVEVfT1BFTkVSKSwKICAgICAgICAgICAgJ3NpbmdsZV9xdW90ZV9jbG9zZXInID0+IEV4cGVjdDo6c3RyaW5nKFF1b3RlOjpTSU5HTEVfUVVPVEVfQ0xPU0VSKSwKICAgICAgICBdKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2lzdGVyKEVudmlyb25tZW50QnVpbGRlckludGVyZmFjZSAkZW52aXJvbm1lbnQpOiB2b2lkCiAgICB7CiAgICAgICAgJGVudmlyb25tZW50CiAgICAgICAgICAgIC0+YWRkSW5saW5lUGFyc2VyKG5ldyBRdW90ZVBhcnNlcigpLCAxMCkKICAgICAgICAgICAgLT5hZGRJbmxpbmVQYXJzZXIobmV3IERhc2hQYXJzZXIoKSwgMCkKICAgICAgICAgICAgLT5hZGRJbmxpbmVQYXJzZXIobmV3IEVsbGlwc2VzUGFyc2VyKCksIDApCgogICAgICAgICAgICAtPmFkZERlbGltaXRlclByb2Nlc3NvcihRdW90ZVByb2Nlc3Nvcjo6Y3JlYXRlRG91YmxlUXVvdGVQcm9jZXNzb3IoCiAgICAgICAgICAgICAgICAkZW52aXJvbm1lbnQtPmdldENvbmZpZ3VyYXRpb24oKS0+Z2V0KCdzbWFydHB1bmN0L2RvdWJsZV9xdW90ZV9vcGVuZXInKSwKICAgICAgICAgICAgICAgICRlbnZpcm9ubWVudC0+Z2V0Q29uZmlndXJhdGlvbigpLT5nZXQoJ3NtYXJ0cHVuY3QvZG91YmxlX3F1b3RlX2Nsb3NlcicpCiAgICAgICAgICAgICkpCiAgICAgICAgICAgIC0+YWRkRGVsaW1pdGVyUHJvY2Vzc29yKFF1b3RlUHJvY2Vzc29yOjpjcmVhdGVTaW5nbGVRdW90ZVByb2Nlc3NvcigKICAgICAgICAgICAgICAgICRlbnZpcm9ubWVudC0+Z2V0Q29uZmlndXJhdGlvbigpLT5nZXQoJ3NtYXJ0cHVuY3Qvc2luZ2xlX3F1b3RlX29wZW5lcicpLAogICAgICAgICAgICAgICAgJGVudmlyb25tZW50LT5nZXRDb25maWd1cmF0aW9uKCktPmdldCgnc21hcnRwdW5jdC9zaW5nbGVfcXVvdGVfY2xvc2VyJykKICAgICAgICAgICAgKSkKCiAgICAgICAgICAgIC0+YWRkRXZlbnRMaXN0ZW5lcihEb2N1bWVudFBhcnNlZEV2ZW50OjpjbGFzcywgbmV3IFJlcGxhY2VVbnBhaXJlZFF1b3Rlc0xpc3RlbmVyKCkpCgogICAgICAgICAgICAtPmFkZFJlbmRlcmVyKERvY3VtZW50OjpjbGFzcywgbmV3IENvcmVCbG9ja1JlbmRlcmVyXERvY3VtZW50UmVuZGVyZXIoKSwgMCkKICAgICAgICAgICAgLT5hZGRSZW5kZXJlcihQYXJhZ3JhcGg6OmNsYXNzLCBuZXcgQ29yZUJsb2NrUmVuZGVyZXJcUGFyYWdyYXBoUmVuZGVyZXIoKSwgMCkKICAgICAgICAgICAgLT5hZGRSZW5kZXJlcihUZXh0OjpjbGFzcywgbmV3IENvcmVJbmxpbmVSZW5kZXJlclxUZXh0UmVuZGVyZXIoKSwgMCk7CiAgICB9Cn0KIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtOO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";