1778692648
441d63ebbc39eba359c9061ece8482bd-phpdoc%3Ab2857e98f3a71cb9d6c7935a2b64811e-acf559e8b3e8994d11018b80452716da
s:20468:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjI5OiJSZXNvbHZlTmFtZWRBcmd1bWVudHNQYXNzLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6NDc6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDc6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoiQ29tcGlsZXIiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MTp7czo3MzoiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcUmVzb2x2ZU5hbWVkQXJndW1lbnRzUGFzcyI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18iOjE1OntzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AaW1wbGVtZW50cyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MTp7czo4NzoiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcUmVzb2x2ZU5hbWVkQXJndW1lbnRzUGFzczo6JHNraXBTY2FsYXJzIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxNDp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZXMiO2E6MDp7fXM6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjk6InByb3RlY3RlZCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mjc7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4NzoiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcUmVzb2x2ZU5hbWVkQXJndW1lbnRzUGFzczo6JHNraXBTY2FsYXJzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6InNraXBTY2FsYXJzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZG9jQmxvY2siO047czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZGVmYXVsdCI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uIjoyOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAGV4cHJlc3Npb24iO3M6NDoidHJ1ZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbgBwYXJ0cyI7YTowOnt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHN0YXRpYyI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xCb29sZWFuIjowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBob29rcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlydHVhbCI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjE6e3M6ODk6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXFJlc29sdmVOYW1lZEFyZ3VtZW50c1Bhc3M6OnByb2Nlc3NWYWx1ZSgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mjp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6InZhbHVlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEJvb2xlYW4iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjY6ImlzUm9vdCI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uIjoyOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAGV4cHJlc3Npb24iO3M6NDQ6Int7IFBIUERPQzY4OTM0YTNlOTQ1NWZhNzI0MjAyMzdlYjA1OTAyMzI3IH19IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjE6e3M6NDQ6Int7IFBIUERPQzY4OTM0YTNlOTQ1NWZhNzI0MjAyMzdlYjA1OTAyMzI3IH19IjtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUHNldWRvVHlwZXNcRmFsc2VfIjowOnt9fX1zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mjk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6ODMxO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEzNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo2MDcxO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjg5OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxSZXNvbHZlTmFtZWRBcmd1bWVudHNQYXNzOjpwcm9jZXNzVmFsdWUoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEyOiJwcm9jZXNzVmFsdWUiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI1O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTM3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjczOiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxSZXNvbHZlTmFtZWRBcmd1bWVudHNQYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjU6IlJlc29sdmVOYW1lZEFyZ3VtZW50c1Bhc3MiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjYyOiJSZXNvbHZlcyBuYW1lZCBhcmd1bWVudHMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBudW1lcmljIGluZGV4LiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7TjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTQ6IkvDqXZpbiBEdW5nbGFzIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjE3OiJkdW5nbGFzQGdtYWlsLmNvbSI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjQ2OiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTo1OntzOjE2OiJBYnN0cmFjdEFyZ3VtZW50IjtzOjYzOiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXEFyZ3VtZW50XEFic3RyYWN0QXJndW1lbnQiO3M6MTA6IkRlZmluaXRpb24iO3M6NDg6IlN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cRGVmaW5pdGlvbiI7czoyNDoiSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIjtzOjcyOiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXEV4Y2VwdGlvblxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24iO3M6OToiUmVmZXJlbmNlIjtzOjQ3OiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXFJlZmVyZW5jZSI7czoxMToiUHJveHlIZWxwZXIiO3M6NDE6IlN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXFByb3h5SGVscGVyIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjY5OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxBYnN0cmFjdFJlY3Vyc2l2ZVBhc3MiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyMToiQWJzdHJhY3RSZWN1cnNpdmVQYXNzIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZpbmFsIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHJlYWRPbmx5IjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6ImFjZjU1OWU4YjNlODk5NGQxMTAxOGI4MDQ1MjcxNmRhIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6NzQ6InZlbmRvci9zeW1mb255L2RlcGVuZGVuY3ktaW5qZWN0aW9uL0NvbXBpbGVyL1Jlc29sdmVOYW1lZEFyZ3VtZW50c1Bhc3MucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czo2MDc1OiI8P3BocAoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFN5bWZvbnkgcGFja2FnZS4KICoKICogKGMpIEZhYmllbiBQb3RlbmNpZXIgPGZhYmllbkBzeW1mb255LmNvbT4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXI7Cgp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxBcmd1bWVudFxBYnN0cmFjdEFyZ3VtZW50Owp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxEZWZpbml0aW9uOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxFeGNlcHRpb25cSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxSZWZlcmVuY2U7CnVzZSBTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlcjsKCi8qKgogKiBSZXNvbHZlcyBuYW1lZCBhcmd1bWVudHMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBudW1lcmljIGluZGV4LgogKgogKiBAYXV0aG9yIEvDqXZpbiBEdW5nbGFzIDxkdW5nbGFzQGdtYWlsLmNvbT4KICovCmNsYXNzIFJlc29sdmVOYW1lZEFyZ3VtZW50c1Bhc3MgZXh0ZW5kcyBBYnN0cmFjdFJlY3Vyc2l2ZVBhc3MKewogICAgcHJvdGVjdGVkIGJvb2wgJHNraXBTY2FsYXJzID0gdHJ1ZTsKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJvY2Vzc1ZhbHVlKG1peGVkICR2YWx1ZSwgYm9vbCAkaXNSb290ID0gZmFsc2UpOiBtaXhlZAogICAgewogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBBYnN0cmFjdEFyZ3VtZW50ICYmICR2YWx1ZS0+Z2V0VGV4dCgpLicuJyA9PT0gJHZhbHVlLT5nZXRUZXh0V2l0aENvbnRleHQoKSkgewogICAgICAgICAgICAkdmFsdWUtPnNldENvbnRleHQoXHNwcmludGYoJ0EgdmFsdWUgZm91bmQgaW4gc2VydmljZSAiJXMiJywgJHRoaXMtPmN1cnJlbnRJZCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkdmFsdWUgaW5zdGFuY2VvZiBEZWZpbml0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6OnByb2Nlc3NWYWx1ZSgkdmFsdWUsICRpc1Jvb3QpOwogICAgICAgIH0KCiAgICAgICAgJGNhbGxzID0gJHZhbHVlLT5nZXRNZXRob2RDYWxscygpOwogICAgICAgICRjYWxsc1tdID0gWydfX2NvbnN0cnVjdCcsICR2YWx1ZS0+Z2V0QXJndW1lbnRzKCldOwoKICAgICAgICBmb3JlYWNoICgkY2FsbHMgYXMgJGkgPT4gJGNhbGwpIHsKICAgICAgICAgICAgWyRtZXRob2QsICRhcmd1bWVudHNdID0gJGNhbGw7CiAgICAgICAgICAgICRwYXJhbWV0ZXJzID0gbnVsbDsKICAgICAgICAgICAgJHJlc29sdmVkS2V5cyA9IFtdOwogICAgICAgICAgICAkcmVzb2x2ZWRBcmd1bWVudHMgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRhcmd1bWVudHMgYXMgJGtleSA9PiAkYXJndW1lbnQpIHsKICAgICAgICAgICAgICAgIGlmICgkYXJndW1lbnQgaW5zdGFuY2VvZiBBYnN0cmFjdEFyZ3VtZW50ICYmICRhcmd1bWVudC0+Z2V0VGV4dCgpLicuJyA9PT0gJGFyZ3VtZW50LT5nZXRUZXh0V2l0aENvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICRhcmd1bWVudC0+c2V0Q29udGV4dChcc3ByaW50ZignQXJndW1lbnQgJy4oXGlzX2ludCgka2V5KSA/IDEgKyAka2V5IDogJyIlMyRzIicpLicgb2YgJy4oJ19fY29uc3RydWN0JyA9PT0gJG1ldGhvZCA/ICdzZXJ2aWNlICIlcyInIDogJ21ldGhvZCBjYWxsICIlczo6JXMoKSInKSwgJHRoaXMtPmN1cnJlbnRJZCwgJG1ldGhvZCwgJGtleSkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChcaXNfaW50KCRrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc29sdmVkS2V5c1ska2V5XSA9ICRrZXk7CiAgICAgICAgICAgICAgICAgICAgJHJlc29sdmVkQXJndW1lbnRzWyRrZXldID0gJGFyZ3VtZW50OwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSAkcGFyYW1ldGVycykgewogICAgICAgICAgICAgICAgICAgICRyID0gJHRoaXMtPmdldFJlZmxlY3Rpb25NZXRob2QoJHZhbHVlLCAkbWV0aG9kKTsKICAgICAgICAgICAgICAgICAgICAkY2xhc3MgPSAkciBpbnN0YW5jZW9mIFxSZWZsZWN0aW9uTWV0aG9kID8gJHItPmNsYXNzIDogJHRoaXMtPmN1cnJlbnRJZDsKICAgICAgICAgICAgICAgICAgICAkbWV0aG9kID0gJHItPmdldE5hbWUoKTsKICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVycyA9ICRyLT5nZXRQYXJhbWV0ZXJzKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRrZXlbMF0pICYmICckJyAhPT0gJGtleVswXSAmJiAhY2xhc3NfZXhpc3RzKCRrZXkpICYmICFpbnRlcmZhY2VfZXhpc3RzKCRrZXksIGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoJ0ludmFsaWQgc2VydmljZSAiJXMiOiBkaWQgeW91IGZvcmdldCB0byBhZGQgdGhlICIkIiBwcmVmaXggdG8gYXJndW1lbnQgIiVzIj8nLCAkdGhpcy0+Y3VycmVudElkLCAka2V5KSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRrZXlbMF0pICYmICckJyA9PT0gJGtleVswXSkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJhbWV0ZXJzIGFzICRqID0+ICRwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgka2V5ID09PSAnJCcuJHAtPm5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcC0+aXNWYXJpYWRpYygpICYmIFxpc19hcnJheSgkYXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ3VtZW50IGFzICR2YXJpYWRpY0FyZ3VtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNvbHZlZEtleXNbJGpdID0gJGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNvbHZlZEFyZ3VtZW50c1skaisrXSA9ICR2YXJpYWRpY0FyZ3VtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc29sdmVkS2V5c1skal0gPSAkcC0+bmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzb2x2ZWRBcmd1bWVudHNbJGpdID0gJGFyZ3VtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoJ0ludmFsaWQgc2VydmljZSAiJXMiOiBtZXRob2QgIiVzKCkiIGhhcyBubyBhcmd1bWVudCBuYW1lZCAiJXMiLiBDaGVjayB5b3VyIHNlcnZpY2UgZGVmaW5pdGlvbi4nLCAkdGhpcy0+Y3VycmVudElkLCAkY2xhc3MgIT09ICR0aGlzLT5jdXJyZW50SWQgPyAkY2xhc3MuJzo6Jy4kbWV0aG9kIDogJG1ldGhvZCwgJGtleSkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAkYXJndW1lbnQgJiYgISRhcmd1bWVudCBpbnN0YW5jZW9mIFJlZmVyZW5jZSAmJiAhJGFyZ3VtZW50IGluc3RhbmNlb2YgRGVmaW5pdGlvbikgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoJ0ludmFsaWQgc2VydmljZSAiJXMiOiB0aGUgdmFsdWUgb2YgYXJndW1lbnQgIiVzIiBvZiBtZXRob2QgIiVzKCkiIG11c3QgYmUgbnVsbCwgYW4gaW5zdGFuY2Ugb2YgIiVzIiBvciBhbiBpbnN0YW5jZSBvZiAiJXMiLCAiJXMiIGdpdmVuLicsICR0aGlzLT5jdXJyZW50SWQsICRrZXksICRjbGFzcyAhPT0gJHRoaXMtPmN1cnJlbnRJZCA/ICRjbGFzcy4nOjonLiRtZXRob2QgOiAkbWV0aG9kLCBSZWZlcmVuY2U6OmNsYXNzLCBEZWZpbml0aW9uOjpjbGFzcywgZ2V0X2RlYnVnX3R5cGUoJGFyZ3VtZW50KSkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0eXBlRm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJhbWV0ZXJzIGFzICRqID0+ICRwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygkaiwgJHJlc29sdmVkQXJndW1lbnRzKSAmJiBQcm94eUhlbHBlcjo6ZXhwb3J0VHlwZSgkcCwgdHJ1ZSkgPT09ICRrZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc29sdmVkS2V5c1skal0gPSAkcC0+bmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc29sdmVkQXJndW1lbnRzWyRqXSA9ICRhcmd1bWVudDsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVGb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghJHR5cGVGb3VuZCkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoJ0ludmFsaWQgc2VydmljZSAiJXMiOiBtZXRob2QgIiVzKCkiIGhhcyBubyBhcmd1bWVudCB0eXBlLWhpbnRlZCBhcyAiJXMiLiBDaGVjayB5b3VyIHNlcnZpY2UgZGVmaW5pdGlvbi4nLCAkdGhpcy0+Y3VycmVudElkLCAkY2xhc3MgIT09ICR0aGlzLT5jdXJyZW50SWQgPyAkY2xhc3MuJzo6Jy4kbWV0aG9kIDogJG1ldGhvZCwgJGtleSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHJlc29sdmVkQXJndW1lbnRzICE9PSAkY2FsbFsxXSkgewogICAgICAgICAgICAgICAga3NvcnQoJHJlc29sdmVkQXJndW1lbnRzKTsKCiAgICAgICAgICAgICAgICBpZiAoISR2YWx1ZS0+aXNBdXRvd2lyZWQoKSAmJiAhYXJyYXlfaXNfbGlzdCgkcmVzb2x2ZWRBcmd1bWVudHMpKSB7CiAgICAgICAgICAgICAgICAgICAga3NvcnQoJHJlc29sdmVkS2V5cyk7CiAgICAgICAgICAgICAgICAgICAgJHJlc29sdmVkQXJndW1lbnRzID0gYXJyYXlfY29tYmluZSgkcmVzb2x2ZWRLZXlzLCAkcmVzb2x2ZWRBcmd1bWVudHMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjYWxsc1skaV1bMV0gPSAkcmVzb2x2ZWRBcmd1bWVudHM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFssICRhcmd1bWVudHNdID0gYXJyYXlfcG9wKCRjYWxscyk7CgogICAgICAgIGlmICgkYXJndW1lbnRzICE9PSAkdmFsdWUtPmdldEFyZ3VtZW50cygpKSB7CiAgICAgICAgICAgICR2YWx1ZS0+c2V0QXJndW1lbnRzKCRhcmd1bWVudHMpOwogICAgICAgIH0KICAgICAgICBpZiAoJGNhbGxzICE9PSAkdmFsdWUtPmdldE1ldGhvZENhbGxzKCkpIHsKICAgICAgICAgICAgJHZhbHVlLT5zZXRNZXRob2RDYWxscygkY2FsbHMpOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHZhbHVlLT5nZXRQcm9wZXJ0aWVzKCkgYXMgJGtleSA9PiAkYXJndW1lbnQpIHsKICAgICAgICAgICAgaWYgKCRhcmd1bWVudCBpbnN0YW5jZW9mIEFic3RyYWN0QXJndW1lbnQgJiYgJGFyZ3VtZW50LT5nZXRUZXh0KCkuJy4nID09PSAkYXJndW1lbnQtPmdldFRleHRXaXRoQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAkYXJndW1lbnQtPnNldENvbnRleHQoXHNwcmludGYoJ1Byb3BlcnR5ICIlcyIgb2Ygc2VydmljZSAiJXMiJywgJGtleSwgJHRoaXMtPmN1cnJlbnRJZCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFyZW50Ojpwcm9jZXNzVmFsdWUoJHZhbHVlLCAkaXNSb290KTsKICAgIH0KfQoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";