1778692638
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A5fbc4132d943e12e74edae2480a46c9d-493b74748e40f6e08f1f99954a2c6e5e
s:33664:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjE3OiJDYWNoZVBvb2xQYXNzLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6NDQ6IlxTeW1mb255XENvbXBvbmVudFxDYWNoZVxEZXBlbmRlbmN5SW5qZWN0aW9uIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDQ6IlxTeW1mb255XENvbXBvbmVudFxDYWNoZVxEZXBlbmRlbmN5SW5qZWN0aW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTk6IkRlcGVuZGVuY3lJbmplY3Rpb24iO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MTp7czo1ODoiXFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXERlcGVuZGVuY3lJbmplY3Rpb25cQ2FjaGVQb29sUGFzcyI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18iOjE1OntzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AaW1wbGVtZW50cyI7YToxOntzOjY5OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxDb21waWxlclBhc3NJbnRlcmZhY2UiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2OToiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcQ29tcGlsZXJQYXNzSW50ZXJmYWNlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjE6IkNvbXBpbGVyUGFzc0ludGVyZmFjZSI7fX1zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AY29uc3RhbnRzIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcHJvcGVydGllcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGhvZHMiO2E6Mzp7czo2OToiXFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXERlcGVuZGVuY3lJbmplY3Rpb25cQ2FjaGVQb29sUGFzczo6cHJvY2VzcygpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MTp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1NToiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29udGFpbmVyQnVpbGRlciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE2OiJDb250YWluZXJCdWlsZGVyIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6OToiY29udGFpbmVyIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxMjQzO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIyODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo5ODc5O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjY5OiJcU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcRGVwZW5kZW5jeUluamVjdGlvblxDYWNoZVBvb2xQYXNzOjpwcm9jZXNzKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo3OiJwcm9jZXNzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MDoiIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjQzOiJTeW1mb255XENvbXBvbmVudFxDYWNoZVxEZXBlbmRlbmN5SW5qZWN0aW9uIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YToxNDp7czoxNToiQWJzdHJhY3RBZGFwdGVyIjtzOjQ3OiJTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXEFic3RyYWN0QWRhcHRlciI7czoxMjoiQXJyYXlBZGFwdGVyIjtzOjQ0OiJTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXEFycmF5QWRhcHRlciI7czoxMjoiQ2hhaW5BZGFwdGVyIjtzOjQ0OiJTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXENoYWluQWRhcHRlciI7czoxMToiTnVsbEFkYXB0ZXIiO3M6NDM6IlN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcTnVsbEFkYXB0ZXIiO3M6MTk6IlBhcmFtZXRlck5vcm1hbGl6ZXIiO3M6NTE6IlN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcUGFyYW1ldGVyTm9ybWFsaXplciI7czoxNToiVGFnQXdhcmVBZGFwdGVyIjtzOjQ3OiJTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXFRhZ0F3YXJlQWRhcHRlciI7czoyNToiRWFybHlFeHBpcmF0aW9uRGlzcGF0Y2hlciI7czo1OToiU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcTWVzc2VuZ2VyXEVhcmx5RXhwaXJhdGlvbkRpc3BhdGNoZXIiO3M6MTg6IlBydW5lYWJsZUludGVyZmFjZSI7czo0MjoiU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcUHJ1bmVhYmxlSW50ZXJmYWNlIjtzOjE1OiJDaGlsZERlZmluaXRpb24iO3M6NTM6IlN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ2hpbGREZWZpbml0aW9uIjtzOjIxOiJDb21waWxlclBhc3NJbnRlcmZhY2UiO3M6Njg6IlN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcQ29tcGlsZXJQYXNzSW50ZXJmYWNlIjtzOjE2OiJDb250YWluZXJCdWlsZGVyIjtzOjU0OiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbnRhaW5lckJ1aWxkZXIiO3M6MTA6IkRlZmluaXRpb24iO3M6NDg6IlN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cRGVmaW5pdGlvbiI7czoyNDoiSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIjtzOjcyOiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXEV4Y2VwdGlvblxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24iO3M6OToiUmVmZXJlbmNlIjtzOjQ3OiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXFJlZmVyZW5jZSI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3NDoiXFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXERlcGVuZGVuY3lJbmplY3Rpb25cQ2FjaGVQb29sUGFzczo6Z2V0TmFtZXNwYWNlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjQ6InNlZWQiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MjoiaWQiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIzMDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo5ODg2O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIzMztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxMDA2MTt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NzQ6IlxTeW1mb255XENvbXBvbmVudFxDYWNoZVxEZXBlbmRlbmN5SW5qZWN0aW9uXENhY2hlUG9vbFBhc3M6OmdldE5hbWVzcGFjZSgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTI6ImdldE5hbWVzcGFjZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo4MDoiXFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXERlcGVuZGVuY3lJbmplY3Rpb25cQ2FjaGVQb29sUGFzczo6Z2V0U2VydmljZVByb3ZpZGVyKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU1OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb250YWluZXJCdWlsZGVyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTY6IkNvbnRhaW5lckJ1aWxkZXIiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo5OiJjb250YWluZXIiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NDoibmFtZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjM4O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjEwMTAxO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI1NDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxMDgwMjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6ODA6IlxTeW1mb255XENvbXBvbmVudFxDYWNoZVxEZXBlbmRlbmN5SW5qZWN0aW9uXENhY2hlUG9vbFBhc3M6OmdldFNlcnZpY2VQcm92aWRlcigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTg6ImdldFNlcnZpY2VQcm92aWRlciI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjA6IiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjg6ImludGVybmFsIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo1NDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MTtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjMyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjU1O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU4OiJcU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcRGVwZW5kZW5jeUluamVjdGlvblxDYWNoZVBvb2xQYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTM6IkNhY2hlUG9vbFBhc3MiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjA6IiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7TjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTQ6Ik5pY29sYXMgR3Jla2FzIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjEzOiJwQHRjaHdvcmsuY29tIjt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo1NDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwYXJlbnQiO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZpbmFsIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHJlYWRPbmx5IjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6IjQ5M2I3NDc0OGU0MGY2ZTA4ZjFmOTk5NTRhMmM2ZTVlIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6NTg6InZlbmRvci9zeW1mb255L2NhY2hlL0RlcGVuZGVuY3lJbmplY3Rpb24vQ2FjaGVQb29sUGFzcy5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjEwODA2OiI8P3BocAoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFN5bWZvbnkgcGFja2FnZS4KICoKICogKGMpIEZhYmllbiBQb3RlbmNpZXIgPGZhYmllbkBzeW1mb255LmNvbT4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXERlcGVuZGVuY3lJbmplY3Rpb247Cgp1c2UgU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxBYnN0cmFjdEFkYXB0ZXI7CnVzZSBTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXEFycmF5QWRhcHRlcjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcQ2hhaW5BZGFwdGVyOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxOdWxsQWRhcHRlcjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcUGFyYW1ldGVyTm9ybWFsaXplcjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcVGFnQXdhcmVBZGFwdGVyOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcTWVzc2VuZ2VyXEVhcmx5RXhwaXJhdGlvbkRpc3BhdGNoZXI7CnVzZSBTeW1mb255XENvbXBvbmVudFxDYWNoZVxQcnVuZWFibGVJbnRlcmZhY2U7CnVzZSBTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENoaWxkRGVmaW5pdGlvbjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcQ29tcGlsZXJQYXNzSW50ZXJmYWNlOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb250YWluZXJCdWlsZGVyOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxEZWZpbml0aW9uOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxFeGNlcHRpb25cSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxSZWZlcmVuY2U7CgovKioKICogQGF1dGhvciBOaWNvbGFzIEdyZWthcyA8cEB0Y2h3b3JrLmNvbT4KICovCmNsYXNzIENhY2hlUG9vbFBhc3MgaW1wbGVtZW50cyBDb21waWxlclBhc3NJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoQ29udGFpbmVyQnVpbGRlciAkY29udGFpbmVyKQogICAgewogICAgICAgIGlmICgkY29udGFpbmVyLT5oYXNQYXJhbWV0ZXIoJ2NhY2hlLnByZWZpeC5zZWVkJykpIHsKICAgICAgICAgICAgJHNlZWQgPSAkY29udGFpbmVyLT5nZXRQYXJhbWV0ZXJCYWcoKS0+cmVzb2x2ZVZhbHVlKCRjb250YWluZXItPmdldFBhcmFtZXRlcignY2FjaGUucHJlZml4LnNlZWQnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHNlZWQgPSAnXycuJGNvbnRhaW5lci0+Z2V0UGFyYW1ldGVyKCdrZXJuZWwucHJvamVjdF9kaXInKTsKICAgICAgICAgICAgJHNlZWQgLj0gJy4nLiRjb250YWluZXItPmdldFBhcmFtZXRlcigna2VybmVsLmNvbnRhaW5lcl9jbGFzcycpOwogICAgICAgIH0KCiAgICAgICAgJG5lZWRzTWVzc2FnZUhhbmRsZXIgPSBmYWxzZTsKICAgICAgICAkYWxsUG9vbHMgPSBbXTsKICAgICAgICAkY2xlYXJlcnMgPSBbXTsKICAgICAgICAkYXR0cmlidXRlcyA9IFsKICAgICAgICAgICAgJ3Byb3ZpZGVyJywKICAgICAgICAgICAgJ25hbWUnLAogICAgICAgICAgICAnbmFtZXNwYWNlJywKICAgICAgICAgICAgJ2RlZmF1bHRfbGlmZXRpbWUnLAogICAgICAgICAgICAnZWFybHlfZXhwaXJhdGlvbl9tZXNzYWdlX2J1cycsCiAgICAgICAgICAgICdyZXNldCcsCiAgICAgICAgICAgICdwcnVuZWFibGUnLAogICAgICAgIF07CiAgICAgICAgZm9yZWFjaCAoJGNvbnRhaW5lci0+ZmluZFRhZ2dlZFNlcnZpY2VJZHMoJ2NhY2hlLnBvb2wnKSBhcyAkaWQgPT4gJHRhZ3MpIHsKICAgICAgICAgICAgJGFkYXB0ZXIgPSAkcG9vbCA9ICRjb250YWluZXItPmdldERlZmluaXRpb24oJGlkKTsKICAgICAgICAgICAgaWYgKCRwb29sLT5pc0Fic3RyYWN0KCkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjbGFzcyA9ICRhZGFwdGVyLT5nZXRDbGFzcygpOwogICAgICAgICAgICAkcHJvdmlkZXJzID0gJGFkYXB0ZXItPmdldEFyZ3VtZW50cygpOwogICAgICAgICAgICB3aGlsZSAoJGFkYXB0ZXIgaW5zdGFuY2VvZiBDaGlsZERlZmluaXRpb24pIHsKICAgICAgICAgICAgICAgICRhZGFwdGVyID0gJGNvbnRhaW5lci0+ZmluZERlZmluaXRpb24oJGFkYXB0ZXItPmdldFBhcmVudCgpKTsKICAgICAgICAgICAgICAgICRjbGFzcyA9ICRjbGFzcyA/OiAkYWRhcHRlci0+Z2V0Q2xhc3MoKTsKICAgICAgICAgICAgICAgICRwcm92aWRlcnMgKz0gJGFkYXB0ZXItPmdldEFyZ3VtZW50cygpOwogICAgICAgICAgICAgICAgaWYgKCR0ID0gJGFkYXB0ZXItPmdldFRhZygnY2FjaGUucG9vbCcpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRhZ3NbMF0gKz0gJHRbMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG5hbWUgPSAkdGFnc1swXVsnbmFtZSddID8/ICRpZDsKICAgICAgICAgICAgaWYgKCFpc3NldCgkdGFnc1swXVsnbmFtZXNwYWNlJ10pKSB7CiAgICAgICAgICAgICAgICAkbmFtZXNwYWNlU2VlZCA9ICRzZWVkOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09ICRjbGFzcykgewogICAgICAgICAgICAgICAgICAgICRuYW1lc3BhY2VTZWVkIC49ICcuJy4kY2xhc3M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRhZ3NbMF1bJ25hbWVzcGFjZSddID0gJHRoaXMtPmdldE5hbWVzcGFjZSgkbmFtZXNwYWNlU2VlZCwgJG5hbWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc3NldCgkdGFnc1swXVsnY2xlYXJlciddKSkgewogICAgICAgICAgICAgICAgJGNsZWFyZXIgPSAkdGFnc1swXVsnY2xlYXJlciddOwogICAgICAgICAgICAgICAgd2hpbGUgKCRjb250YWluZXItPmhhc0FsaWFzKCRjbGVhcmVyKSkgewogICAgICAgICAgICAgICAgICAgICRjbGVhcmVyID0gKHN0cmluZykgJGNvbnRhaW5lci0+Z2V0QWxpYXMoJGNsZWFyZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNsZWFyZXIgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuc2V0KCR0YWdzWzBdWydjbGVhcmVyJ10sICR0YWdzWzBdWyduYW1lJ10pOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCR0YWdzWzBdWydwcm92aWRlciddKSkgewogICAgICAgICAgICAgICAgJHRhZ3NbMF1bJ3Byb3ZpZGVyJ10gPSBuZXcgUmVmZXJlbmNlKHN0YXRpYzo6Z2V0U2VydmljZVByb3ZpZGVyKCRjb250YWluZXIsICR0YWdzWzBdWydwcm92aWRlciddKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwcnVuZWFibGUgPSAkdGFnc1swXVsncHJ1bmVhYmxlJ10gPz8gJGNvbnRhaW5lci0+Z2V0UmVmbGVjdGlvbkNsYXNzKCRjbGFzcywgZmFsc2UpPy0+aW1wbGVtZW50c0ludGVyZmFjZShQcnVuZWFibGVJbnRlcmZhY2U6OmNsYXNzKSA/PyBmYWxzZTsKCiAgICAgICAgICAgIGlmIChDaGFpbkFkYXB0ZXI6OmNsYXNzID09PSAkY2xhc3MpIHsKICAgICAgICAgICAgICAgICRhZGFwdGVycyA9IFtdOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHByb3ZpZGVyc1snaW5kZXhfMCddID8/ICRwcm92aWRlcnNbMF0gYXMgJHByb3ZpZGVyID0+ICRhZGFwdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRhZGFwdGVyIGluc3RhbmNlb2YgQ2hpbGREZWZpbml0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFpbmVkUG9vbCA9IGNsb25lICRhZGFwdGVyOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFpbmVkUG9vbCA9ICRhZGFwdGVyID0gbmV3IENoaWxkRGVmaW5pdGlvbigkYWRhcHRlcik7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkY2hhaW5lZFRhZ3MgPSBbXGlzX2ludCgkcHJvdmlkZXIpID8gW10gOiBbJ3Byb3ZpZGVyJyA9PiAkcHJvdmlkZXJdXTsKICAgICAgICAgICAgICAgICAgICAkY2hhaW5lZENsYXNzID0gJyc7CgogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkYWRhcHRlciBpbnN0YW5jZW9mIENoaWxkRGVmaW5pdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRhcHRlciA9ICRjb250YWluZXItPmZpbmREZWZpbml0aW9uKCRhZGFwdGVyLT5nZXRQYXJlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFpbmVkQ2xhc3MgPSAkY2hhaW5lZENsYXNzID86ICRhZGFwdGVyLT5nZXRDbGFzcygpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHQgPSAkYWRhcHRlci0+Z2V0VGFnKCdjYWNoZS5wb29sJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGFpbmVkVGFnc1swXSArPSAkdFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKENoYWluQWRhcHRlcjo6Y2xhc3MgPT09ICRjaGFpbmVkQ2xhc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignSW52YWxpZCBzZXJ2aWNlICIlcyI6IGNoYWluIG9mIGFkYXB0ZXJzIGNhbm5vdCByZWZlcmVuY2UgYW5vdGhlciBjaGFpbiwgZm91bmQgIiVzIi4nLCAkaWQsICRjaGFpbmVkUG9vbC0+Z2V0UGFyZW50KCkpKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRpID0gMDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRjaGFpbmVkVGFnc1swXVsncHJvdmlkZXInXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYWluZWRQb29sLT5yZXBsYWNlQXJndW1lbnQoJGkrKywgbmV3IFJlZmVyZW5jZShzdGF0aWM6OmdldFNlcnZpY2VQcm92aWRlcigkY29udGFpbmVyLCAkY2hhaW5lZFRhZ3NbMF1bJ3Byb3ZpZGVyJ10pKSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRhZ3NbMF1bJ25hbWVzcGFjZSddKSAmJiAhXGluX2FycmF5KCRhZGFwdGVyLT5nZXRDbGFzcygpLCBbQXJyYXlBZGFwdGVyOjpjbGFzcywgTnVsbEFkYXB0ZXI6OmNsYXNzXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYWluZWRQb29sLT5yZXBsYWNlQXJndW1lbnQoJGkrKywgJHRhZ3NbMF1bJ25hbWVzcGFjZSddKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGFnc1swXVsnZGVmYXVsdF9saWZldGltZSddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2hhaW5lZFBvb2wtPnJlcGxhY2VBcmd1bWVudCgkaSsrLCAkdGFnc1swXVsnZGVmYXVsdF9saWZldGltZSddKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRhZGFwdGVyc1tdID0gJGNoYWluZWRQb29sOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRwb29sLT5yZXBsYWNlQXJndW1lbnQoMCwgJGFkYXB0ZXJzKTsKICAgICAgICAgICAgICAgIHVuc2V0KCR0YWdzWzBdWydwcm92aWRlciddLCAkdGFnc1swXVsnbmFtZXNwYWNlJ10pOwogICAgICAgICAgICAgICAgJGkgPSAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkYXR0cmlidXRlcyBhcyAkYXR0cikgewogICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkdGFnc1swXVskYXR0cl0pKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgncmVzZXQnID09PSAkYXR0cikgewogICAgICAgICAgICAgICAgICAgIGlmICgkdGFnc1swXVskYXR0cl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBvb2wtPmFkZFRhZygna2VybmVsLnJlc2V0JywgWydtZXRob2QnID0+ICR0YWdzWzBdWyRhdHRyXV0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgnZWFybHlfZXhwaXJhdGlvbl9tZXNzYWdlX2J1cycgPT09ICRhdHRyKSB7CiAgICAgICAgICAgICAgICAgICAgJG5lZWRzTWVzc2FnZUhhbmRsZXIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICRwb29sLT5hZGRNZXRob2RDYWxsKCdzZXRDYWxsYmFja1dyYXBwZXInLCBbKG5ldyBEZWZpbml0aW9uKEVhcmx5RXhwaXJhdGlvbkRpc3BhdGNoZXI6OmNsYXNzKSkKICAgICAgICAgICAgICAgICAgICAgICAgLT5hZGRBcmd1bWVudChuZXcgUmVmZXJlbmNlKCR0YWdzWzBdWydlYXJseV9leHBpcmF0aW9uX21lc3NhZ2VfYnVzJ10pKQogICAgICAgICAgICAgICAgICAgICAgICAtPmFkZEFyZ3VtZW50KG5ldyBSZWZlcmVuY2UoJ3JldmVyc2VfY29udGFpbmVyJykpCiAgICAgICAgICAgICAgICAgICAgICAgIC0+YWRkQXJndW1lbnQoKG5ldyBEZWZpbml0aW9uKCdjYWxsYWJsZScpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5zZXRGYWN0b3J5KFtuZXcgUmVmZXJlbmNlKCRpZCksICdzZXRDYWxsYmFja1dyYXBwZXInXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+YWRkQXJndW1lbnQobnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBdKTsKICAgICAgICAgICAgICAgICAgICAkcG9vbC0+YWRkVGFnKCdjb250YWluZXIucmV2ZXJzaWJsZScpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCdwcnVuZWFibGUnID09PSAkYXR0cikgewogICAgICAgICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJ25hbWVzcGFjZScgIT09ICRhdHRyIHx8ICFcaW5fYXJyYXkoJGNsYXNzLCBbQXJyYXlBZGFwdGVyOjpjbGFzcywgTnVsbEFkYXB0ZXI6OmNsYXNzLCBUYWdBd2FyZUFkYXB0ZXI6OmNsYXNzXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkYXJndW1lbnQgPSAkdGFnc1swXVskYXR0cl07CgogICAgICAgICAgICAgICAgICAgIGlmICgnZGVmYXVsdF9saWZldGltZScgPT09ICRhdHRyICYmICFpc19udW1lcmljKCRhcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50ID0gKG5ldyBEZWZpbml0aW9uKCdpbnQnLCBbJGFyZ3VtZW50XSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnNldEZhY3RvcnkoW1BhcmFtZXRlck5vcm1hbGl6ZXI6OmNsYXNzLCAnbm9ybWFsaXplRHVyYXRpb24nXSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkcG9vbC0+cmVwbGFjZUFyZ3VtZW50KCRpKyssICRhcmd1bWVudCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bnNldCgkdGFnc1swXVskYXR0cl0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZW1wdHkoJHRhZ3NbMF0pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdJbnZhbGlkICJjYWNoZS5wb29sIiB0YWcgZm9yIHNlcnZpY2UgIiVzIjogYWNjZXB0ZWQgYXR0cmlidXRlcyBhcmUgImNsZWFyZXIiLCAicHJvdmlkZXIiLCAibmFtZSIsICJuYW1lc3BhY2UiLCAiZGVmYXVsdF9saWZldGltZSIsICJlYXJseV9leHBpcmF0aW9uX21lc3NhZ2VfYnVzIiwgInJlc2V0IiBhbmQgInBydW5lYWJsZSIsIGZvdW5kICIlcyIuJywgJGlkLCBpbXBsb2RlKCciLCAiJywgYXJyYXlfa2V5cygkdGFnc1swXSkpKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChudWxsICE9PSAkY2xlYXJlcikgewogICAgICAgICAgICAgICAgJGNsZWFyZXJzWyRjbGVhcmVyXVskbmFtZV0gPSBuZXcgUmVmZXJlbmNlKCRpZCwgJGNvbnRhaW5lcjo6SUdOT1JFX09OX1VOSU5JVElBTElaRURfUkVGRVJFTkNFKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBvb2xUYWdzID0gJHBvb2wtPmdldFRhZ3MoKTsKICAgICAgICAgICAgJHBvb2xUYWdzWydjYWNoZS5wb29sJ11bMF1bJ3BydW5lYWJsZSddID8/PSAkcHJ1bmVhYmxlOwogICAgICAgICAgICAkcG9vbC0+c2V0VGFncygkcG9vbFRhZ3MpOwoKICAgICAgICAgICAgJGFsbFBvb2xzWyRuYW1lXSA9IG5ldyBSZWZlcmVuY2UoJGlkLCAkY29udGFpbmVyOjpJR05PUkVfT05fVU5JTklUSUFMSVpFRF9SRUZFUkVOQ0UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkbmVlZHNNZXNzYWdlSGFuZGxlcikgewogICAgICAgICAgICAkY29udGFpbmVyLT5yZW1vdmVEZWZpbml0aW9uKCdjYWNoZS5lYXJseV9leHBpcmF0aW9uX2hhbmRsZXInKTsKICAgICAgICB9CgogICAgICAgICRub3RBbGlhc2VkQ2FjaGVDbGVhcmVySWQgPSAnY2FjaGUuZ2xvYmFsX2NsZWFyZXInOwogICAgICAgIHdoaWxlICgkY29udGFpbmVyLT5oYXNBbGlhcygkbm90QWxpYXNlZENhY2hlQ2xlYXJlcklkKSkgewogICAgICAgICAgICAkbm90QWxpYXNlZENhY2hlQ2xlYXJlcklkID0gKHN0cmluZykgJGNvbnRhaW5lci0+Z2V0QWxpYXMoJG5vdEFsaWFzZWRDYWNoZUNsZWFyZXJJZCk7CiAgICAgICAgfQogICAgICAgIGlmICgkY29udGFpbmVyLT5oYXNEZWZpbml0aW9uKCRub3RBbGlhc2VkQ2FjaGVDbGVhcmVySWQpKSB7CiAgICAgICAgICAgICRjbGVhcmVyc1skbm90QWxpYXNlZENhY2hlQ2xlYXJlcklkXSA9ICRhbGxQb29sczsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRjbGVhcmVycyBhcyAkaWQgPT4gJHBvb2xzKSB7CiAgICAgICAgICAgICRjbGVhcmVyID0gJGNvbnRhaW5lci0+Z2V0RGVmaW5pdGlvbigkaWQpOwogICAgICAgICAgICBpZiAoJGNsZWFyZXIgaW5zdGFuY2VvZiBDaGlsZERlZmluaXRpb24pIHsKICAgICAgICAgICAgICAgICRjbGVhcmVyLT5yZXBsYWNlQXJndW1lbnQoMCwgJHBvb2xzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRjbGVhcmVyLT5zZXRBcmd1bWVudCgwLCAkcG9vbHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjbGVhcmVyLT5hZGRUYWcoJ2NhY2hlLnBvb2wuY2xlYXJlcicpOwogICAgICAgIH0KCiAgICAgICAgJGFsbFBvb2xzS2V5cyA9IGFycmF5X2tleXMoJGFsbFBvb2xzKTsKCiAgICAgICAgaWYgKCRjb250YWluZXItPmhhc0RlZmluaXRpb24oJ2NvbnNvbGUuY29tbWFuZC5jYWNoZV9wb29sX2xpc3QnKSkgewogICAgICAgICAgICAkY29udGFpbmVyLT5nZXREZWZpbml0aW9uKCdjb25zb2xlLmNvbW1hbmQuY2FjaGVfcG9vbF9saXN0JyktPnJlcGxhY2VBcmd1bWVudCgwLCAkYWxsUG9vbHNLZXlzKTsKICAgICAgICB9CgogICAgICAgIGlmICgkY29udGFpbmVyLT5oYXNEZWZpbml0aW9uKCdjb25zb2xlLmNvbW1hbmQuY2FjaGVfcG9vbF9jbGVhcicpKSB7CiAgICAgICAgICAgICRjb250YWluZXItPmdldERlZmluaXRpb24oJ2NvbnNvbGUuY29tbWFuZC5jYWNoZV9wb29sX2NsZWFyJyktPmFkZEFyZ3VtZW50KCRhbGxQb29sc0tleXMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb250YWluZXItPmhhc0RlZmluaXRpb24oJ2NvbnNvbGUuY29tbWFuZC5jYWNoZV9wb29sX2RlbGV0ZScpKSB7CiAgICAgICAgICAgICRjb250YWluZXItPmdldERlZmluaXRpb24oJ2NvbnNvbGUuY29tbWFuZC5jYWNoZV9wb29sX2RlbGV0ZScpLT5hZGRBcmd1bWVudCgkYWxsUG9vbHNLZXlzKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXROYW1lc3BhY2Uoc3RyaW5nICRzZWVkLCBzdHJpbmcgJGlkKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHN1YnN0cihzdHJfcmVwbGFjZSgnLycsICctJywgYmFzZTY0X2VuY29kZShoYXNoKCdzaGEyNTYnLCAkaWQuJHNlZWQsIHRydWUpKSksIDAsIDEwKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFNlcnZpY2VQcm92aWRlcihDb250YWluZXJCdWlsZGVyICRjb250YWluZXIsIHN0cmluZyAkbmFtZSk6IHN0cmluZwogICAgewogICAgICAgICRjb250YWluZXItPnJlc29sdmVFbnZQbGFjZWhvbGRlcnMoJG5hbWUsIG51bGwsICR1c2VkRW52cyk7CgogICAgICAgIGlmICgkdXNlZEVudnMgfHwgcHJlZ19tYXRjaCgnI15bYS16XSsrOiMnLCAkbmFtZSkpIHsKICAgICAgICAgICAgJGRzbiA9ICRuYW1lOwoKICAgICAgICAgICAgaWYgKCEkY29udGFpbmVyLT5oYXNEZWZpbml0aW9uKCRuYW1lID0gJy5jYWNoZV9jb25uZWN0aW9uLicuQ29udGFpbmVyQnVpbGRlcjo6aGFzaCgkZHNuKSkpIHsKICAgICAgICAgICAgICAgICRkZWZpbml0aW9uID0gbmV3IERlZmluaXRpb24oQWJzdHJhY3RBZGFwdGVyOjpjbGFzcyk7CiAgICAgICAgICAgICAgICAkZGVmaW5pdGlvbi0+c2V0RmFjdG9yeShbQWJzdHJhY3RBZGFwdGVyOjpjbGFzcywgJ2NyZWF0ZUNvbm5lY3Rpb24nXSk7CiAgICAgICAgICAgICAgICAkZGVmaW5pdGlvbi0+c2V0QXJndW1lbnRzKFskZHNuLCBbJ2xhenknID0+IHRydWVdXSk7CiAgICAgICAgICAgICAgICAkY29udGFpbmVyLT5zZXREZWZpbml0aW9uKCRuYW1lLCAkZGVmaW5pdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmFtZTsKICAgIH0KfQoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";