1778692662
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A4da9af560995c8ffa446afa82e35be14-9702d86f6772c82fcca68eb031cc3fff
s:58872:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjIwOiJQaHBEb2NUeXBlSGVscGVyLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6MzY6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbCI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjM2OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWwiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJVdGlsIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjE6e3M6NTM6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbFxQaHBEb2NUeXBlSGVscGVyIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTU6e3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AY29uc3RhbnRzIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcHJvcGVydGllcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGhvZHMiO2E6Nzp7czo2NToiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocERvY1R5cGVIZWxwZXI6OmdldFR5cGVzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjMwOiJccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJUeXBlIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NzoidmFyVHlwZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTM7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTcxMzt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMjc7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NDA2Mzt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjY1OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWxcUGhwRG9jVHlwZUhlbHBlcjo6Z2V0VHlwZXMoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjg6ImdldFR5cGVzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NDc6IkNyZWF0ZXMgYSB7QHNlZSBMZWdhY3lUeXBlfSBmcm9tIGEgUEhQRG9jIHR5cGUuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjI6e2k6MDtPOjQ5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xEZXByZWNhdGVkIjozOntzOjc6IgAqAG5hbWUiO3M6MTA6ImRlcHJlY2F0ZWQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQwOiJzaW5jZSBTeW1mb255IDcuMywgdXNlICJnZXRUeXBlIiBpbnN0ZWFkIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcRGVwcmVjYXRlZAB2ZXJzaW9uIjtOO31pOjE7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjM2OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFR5cGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJUeXBlIjt9fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czozNToiU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWwiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjE5OntzOjEwOiJQc2V1ZG9UeXBlIjtzOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUHNldWRvVHlwZSI7czoxNToiQ29uc3RFeHByZXNzaW9uIjtzOjUyOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUHNldWRvVHlwZXNcQ29uc3RFeHByZXNzaW9uIjtzOjc6IkdlbmVyaWMiO3M6NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQc2V1ZG9UeXBlc1xHZW5lcmljIjtzOjU6Ikxpc3RfIjtzOjQyOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUHNldWRvVHlwZXNcTGlzdF8iO3M6NjoiU2NhbGFyIjtzOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUHNldWRvVHlwZXNcU2NhbGFyIjtzOjc6IkRvY1R5cGUiO3M6Mjk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlIjtzOjY6IkFycmF5XyI7czozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI7czoxMDoiQ29sbGVjdGlvbiI7czo0MToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbGxlY3Rpb24iO3M6ODoiQ29tcG91bmQiO3M6Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI7czo3OiJJbnRlZ2VyIjtzOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI7czo2OiJNaXhlZF8iO3M6Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iO3M6NToiTnVsbF8iO3M6MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xOdWxsXyI7czo4OiJOdWxsYWJsZSI7czozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE51bGxhYmxlIjtzOjEyOiJMZWdhY3lTY2FsYXIiO3M6Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTY2FsYXIiO3M6NzoiU3RyaW5nXyI7czozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iO3M6MTA6IkxlZ2FjeVR5cGUiO3M6MzU6IlN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xUeXBlIjtzOjQ6IlR5cGUiO3M6MzE6IlN5bWZvbnlcQ29tcG9uZW50XFR5cGVJbmZvXFR5cGUiO3M6MTE6IkJ1aWx0aW5UeXBlIjtzOjQzOiJTeW1mb255XENvbXBvbmVudFxUeXBlSW5mb1xUeXBlXEJ1aWx0aW5UeXBlIjtzOjE0OiJUeXBlSWRlbnRpZmllciI7czo0MToiU3ltZm9ueVxDb21wb25lbnRcVHlwZUluZm9cVHlwZUlkZW50aWZpZXIiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6NjQ6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbFxQaHBEb2NUeXBlSGVscGVyOjpnZXRUeXBlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjMwOiJccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJUeXBlIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NzoidmFyVHlwZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTMyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjQxMzU7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTk5O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjYxMzI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGUiOjE6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGUAcmVhbFR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozMjoiXFN5bWZvbnlcQ29tcG9uZW50XFR5cGVJbmZvXFR5cGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJUeXBlIjt9fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NDoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocERvY1R5cGVIZWxwZXI6OmdldFR5cGUoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjc6ImdldFR5cGUiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0MToiQ3JlYXRlcyBhIHtAc2VlIFR5cGV9IGZyb20gYSBQSFBEb2MgdHlwZS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3NDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3MzoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocERvY1R5cGVIZWxwZXI6OmNyZWF0ZUxlZ2FjeVR5cGUoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MzA6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IlR5cGUiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo0OiJ0eXBlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEJvb2xlYW4iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6Im51bGxhYmxlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMDQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NjIxMDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyODc7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTAwMjc7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGUiOjE6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGUAcmVhbFR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozNjoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xUeXBlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiVHlwZSI7fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NzM6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbFxQaHBEb2NUeXBlSGVscGVyOjpjcmVhdGVMZWdhY3lUeXBlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNjoiY3JlYXRlTGVnYWN5VHlwZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0NzoiQ3JlYXRlcyBhIHtAc2VlIExlZ2FjeVR5cGV9IGZyb20gYSBQSFBEb2MgdHlwZS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3NDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo2NzoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocERvY1R5cGVIZWxwZXI6OmNyZWF0ZVR5cGUoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MzA6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IlR5cGUiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo3OiJkb2NUeXBlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyOTI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTAwOTk7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDM3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjE1NTM3O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE51bGxhYmxlIjoxOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE51bGxhYmxlAHJlYWxUeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MzI6IlxTeW1mb255XENvbXBvbmVudFxUeXBlSW5mb1xUeXBlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiVHlwZSI7fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Njc6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbFxQaHBEb2NUeXBlSGVscGVyOjpjcmVhdGVUeXBlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMDoiY3JlYXRlVHlwZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0MToiQ3JlYXRlcyBhIHtAc2VlIFR5cGV9IGZyb20gYSBQSFBEb2MgdHlwZS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3NDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3MDoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocERvY1R5cGVIZWxwZXI6Om5vcm1hbGl6ZVR5cGUoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NzoiZG9jVHlwZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDM5O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjE1NTQ0O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQ1MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxNTkyNjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NzA6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbFxQaHBEb2NUeXBlSGVscGVyOjpub3JtYWxpemVUeXBlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMzoibm9ybWFsaXplVHlwZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3NzoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocERvY1R5cGVIZWxwZXI6Omhhc05vRXhwbGljaXRLZXlUeXBlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mzg6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NjoiQXJyYXlfIjt9fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDI6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29sbGVjdGlvbiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEwOiJDb2xsZWN0aW9uIjt9fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjQ6InR5cGUiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQ1MjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxNTkzMzt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0NjE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTYzNzg7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQm9vbGVhbiI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjc3OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWxcUGhwRG9jVHlwZUhlbHBlcjo6aGFzTm9FeHBsaWNpdEtleVR5cGUoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjIwOiJoYXNOb0V4cGxpY2l0S2V5VHlwZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3NToiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocERvY1R5cGVIZWxwZXI6OmdldFBocFR5cGVBbmRDbGFzcygpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MTp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo3OiJkb2NUeXBlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0NjM7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTYzODU7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDc0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjE2NzQzO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NzU6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbFxQaHBEb2NUeXBlSGVscGVyOjpnZXRQaHBUeXBlQW5kQ2xhc3MoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE4OiJnZXRQaHBUeXBlQW5kQ2xhc3MiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0NDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQ3NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MzoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocERvY1R5cGVIZWxwZXIiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNjoiUGhwRG9jVHlwZUhlbHBlciI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTM6IlRyYW5zZm9ybXMgYSBwaHAgZG9jIHR5cGUgdG8gYSB7QGxpbmsgVHlwZX0gaW5zdGFuY2UuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjI6e2k6MDtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IiOjQ6e3M6NzoiACoAbmFtZSI7czo2OiJhdXRob3IiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtOO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IAYXV0aG9yTmFtZSI7czoxNDoiS8OpdmluIER1bmdsYXMiO3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IAYXV0aG9yRW1haWwiO3M6MTc6ImR1bmdsYXNAZ21haWwuY29tIjt9aToxO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czoxNDoiACoAZGVzY3JpcHRpb24iO047czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjEwOiJHdWlsaGVtIE4uIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjE3OiJlZ2V0aWNrQGdtYWlsLmNvbSI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzQ7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmaW5hbCI7YjoxO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwByZWFkT25seSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGF0dHJpYnV0ZXMiO2E6MDp7fX19czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiI5NzAyZDg2ZjY3NzJjODJmY2NhNjhlYjAzMWNjM2ZmZiI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjU0OiJ2ZW5kb3Ivc3ltZm9ueS9wcm9wZXJ0eS1pbmZvL1V0aWwvUGhwRG9jVHlwZUhlbHBlci5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjE2NzQ3OiI8P3BocAoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFN5bWZvbnkgcGFja2FnZS4KICoKICogKGMpIEZhYmllbiBQb3RlbmNpZXIgPGZhYmllbkBzeW1mb255LmNvbT4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsOwoKdXNlIHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQc2V1ZG9UeXBlOwp1c2UgcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBzZXVkb1R5cGVzXENvbnN0RXhwcmVzc2lvbjsKdXNlIHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQc2V1ZG9UeXBlc1xHZW5lcmljOwp1c2UgcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBzZXVkb1R5cGVzXExpc3RfOwp1c2UgcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBzZXVkb1R5cGVzXFNjYWxhcjsKdXNlIHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlIGFzIERvY1R5cGU7CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfOwp1c2UgcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbGxlY3Rpb247CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQ7CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlcjsKdXNlIHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF87CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbF87CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGU7CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU2NhbGFyIGFzIExlZ2FjeVNjYWxhcjsKdXNlIHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFR5cGUgYXMgTGVnYWN5VHlwZTsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XFR5cGVJbmZvXFR5cGU7CnVzZSBTeW1mb255XENvbXBvbmVudFxUeXBlSW5mb1xUeXBlXEJ1aWx0aW5UeXBlOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcVHlwZUluZm9cVHlwZUlkZW50aWZpZXI7CgovLyBXb3JrYXJvdW5kIGZvciBwaHBkb2N1bWVudG9yL3R5cGUtcmVzb2x2ZXIgPCAxLjYKLy8gV2UgdHJpZ2dlciB0aGUgYXV0b2xvYWRlciBoZXJlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHRyaWdnZXIgaXQgaW5zaWRlIHRoZSBsb29wIGxhdGVyLgpjbGFzc19leGlzdHMoTGlzdF86OmNsYXNzKTsKCi8qKgogKiBUcmFuc2Zvcm1zIGEgcGhwIGRvYyB0eXBlIHRvIGEge0BsaW5rIFR5cGV9IGluc3RhbmNlLgogKgogKiBAYXV0aG9yIEvDqXZpbiBEdW5nbGFzIDxkdW5nbGFzQGdtYWlsLmNvbT4KICogQGF1dGhvciBHdWlsaGVtIE4uIDxlZ2V0aWNrQGdtYWlsLmNvbT4KICovCmZpbmFsIGNsYXNzIFBocERvY1R5cGVIZWxwZXIKewogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEge0BzZWUgTGVnYWN5VHlwZX0gZnJvbSBhIFBIUERvYyB0eXBlLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFN5bWZvbnkgNy4zLCB1c2UgImdldFR5cGUiIGluc3RlYWQKICAgICAqCiAgICAgKiBAcmV0dXJuIExlZ2FjeVR5cGVbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZXMoRG9jVHlwZSAkdmFyVHlwZSk6IGFycmF5CiAgICB7CiAgICAgICAgdHJpZ2dlcl9kZXByZWNhdGlvbignc3ltZm9ueS9wcm9wZXJ0eS1pbmZvJywgJzcuMycsICdUaGUgIiVzKCkiIG1ldGhvZCBpcyBkZXByZWNhdGVkLCB1c2UgIiVzOjpnZXRUeXBlKCkiIGluc3RlYWQuJywgX19NRVRIT0RfXywgc2VsZjo6Y2xhc3MpOwoKICAgICAgICBpZiAoJHZhclR5cGUgaW5zdGFuY2VvZiBDb25zdEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgLy8gSXQncyBzYWZlciB0byBmYWxsIGJhY2sgdG8gb3RoZXIgZXh0cmFjdG9ycyBoZXJlLCBhcyByZXNvbHZpbmcgY29uc3QgdHlwZXMgY29ycmVjdGx5IGlzIG5vdCBlYXN5IGF0IHRoZSBtb21lbnQKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgJHR5cGVzID0gW107CiAgICAgICAgJG51bGxhYmxlID0gZmFsc2U7CgogICAgICAgIGlmICgkdmFyVHlwZSBpbnN0YW5jZW9mIE51bGxhYmxlKSB7CiAgICAgICAgICAgICRudWxsYWJsZSA9IHRydWU7CiAgICAgICAgICAgICR2YXJUeXBlID0gJHZhclR5cGUtPmdldEFjdHVhbFR5cGUoKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFyVHlwZSBpbnN0YW5jZW9mIExlZ2FjeVNjYWxhciB8fCAkdmFyVHlwZSBpbnN0YW5jZW9mIFNjYWxhcikgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgbmV3IExlZ2FjeVR5cGUoTGVnYWN5VHlwZTo6QlVJTFRJTl9UWVBFX0JPT0wpLAogICAgICAgICAgICAgICAgbmV3IExlZ2FjeVR5cGUoTGVnYWN5VHlwZTo6QlVJTFRJTl9UWVBFX0ZMT0FUKSwKICAgICAgICAgICAgICAgIG5ldyBMZWdhY3lUeXBlKExlZ2FjeVR5cGU6OkJVSUxUSU5fVFlQRV9JTlQpLAogICAgICAgICAgICAgICAgbmV3IExlZ2FjeVR5cGUoTGVnYWN5VHlwZTo6QlVJTFRJTl9UWVBFX1NUUklORyksCiAgICAgICAgICAgIF07CiAgICAgICAgfQoKICAgICAgICBpZiAoISR2YXJUeXBlIGluc3RhbmNlb2YgQ29tcG91bmQpIHsKICAgICAgICAgICAgaWYgKCR2YXJUeXBlIGluc3RhbmNlb2YgTnVsbF8pIHsKICAgICAgICAgICAgICAgICRudWxsYWJsZSA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0eXBlID0gJHRoaXMtPmNyZWF0ZUxlZ2FjeVR5cGUoJHZhclR5cGUsICRudWxsYWJsZSk7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAkdHlwZSkgewogICAgICAgICAgICAgICAgJHR5cGVzW10gPSAkdHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR0eXBlczsKICAgICAgICB9CgogICAgICAgICR2YXJUeXBlcyA9IFtdOwogICAgICAgIGZvciAoJHR5cGVJbmRleCA9IDA7ICR2YXJUeXBlLT5oYXMoJHR5cGVJbmRleCk7ICsrJHR5cGVJbmRleCkgewogICAgICAgICAgICAkdHlwZSA9ICR2YXJUeXBlLT5nZXQoJHR5cGVJbmRleCk7CgogICAgICAgICAgICBpZiAoJHR5cGUgaW5zdGFuY2VvZiBNaXhlZF8pIHsKICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0eXBlIGluc3RhbmNlb2YgQ29uc3RFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICAgICAvLyBJdCdzIHNhZmVyIHRvIGZhbGwgYmFjayB0byBvdGhlciBleHRyYWN0b3JzIGhlcmUsIGFzIHJlc29sdmluZyBjb25zdCB0eXBlcyBjb3JyZWN0bHkgaXMgbm90IGVhc3kgYXQgdGhlIG1vbWVudAogICAgICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiBudWxsIGlzIHByZXNlbnQsIGFsbCB0eXBlcyBhcmUgbnVsbGFibGUKICAgICAgICAgICAgaWYgKCR0eXBlIGluc3RhbmNlb2YgTnVsbF8pIHsKICAgICAgICAgICAgICAgICRudWxsYWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0eXBlIGluc3RhbmNlb2YgTnVsbGFibGUpIHsKICAgICAgICAgICAgICAgICRudWxsYWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICR0eXBlLT5nZXRBY3R1YWxUeXBlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR2YXJUeXBlc1tdID0gJHR5cGU7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdmFyVHlwZXMgYXMgJHZhclR5cGUpIHsKICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+Y3JlYXRlTGVnYWN5VHlwZSgkdmFyVHlwZSwgJG51bGxhYmxlKTsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICR0eXBlKSB7CiAgICAgICAgICAgICAgICAkdHlwZXNbXSA9ICR0eXBlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHR5cGVzOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIHtAc2VlIFR5cGV9IGZyb20gYSBQSFBEb2MgdHlwZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoRG9jVHlwZSAkdmFyVHlwZSk6ID9UeXBlCiAgICB7CiAgICAgICAgaWYgKCR2YXJUeXBlIGluc3RhbmNlb2YgQ29uc3RFeHByZXNzaW9uKSB7CiAgICAgICAgICAgIC8vIEl0J3Mgc2FmZXIgdG8gZmFsbCBiYWNrIHRvIG90aGVyIGV4dHJhY3RvcnMgaGVyZSwgYXMgcmVzb2x2aW5nIGNvbnN0IHR5cGVzIGNvcnJlY3RseSBpcyBub3QgZWFzeSBhdCB0aGUgbW9tZW50CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJG51bGxhYmxlID0gZmFsc2U7CgogICAgICAgIGlmICgkdmFyVHlwZSBpbnN0YW5jZW9mIE51bGxhYmxlKSB7CiAgICAgICAgICAgICRudWxsYWJsZSA9IHRydWU7CiAgICAgICAgICAgICR2YXJUeXBlID0gJHZhclR5cGUtPmdldEFjdHVhbFR5cGUoKTsKICAgICAgICB9CgogICAgICAgIGlmICghJHZhclR5cGUgaW5zdGFuY2VvZiBDb21wb3VuZCkgewogICAgICAgICAgICBpZiAoJHZhclR5cGUgaW5zdGFuY2VvZiBOdWxsXykgewogICAgICAgICAgICAgICAgJG51bGxhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+Y3JlYXRlVHlwZSgkdmFyVHlwZSk7CgogICAgICAgICAgICByZXR1cm4gJG51bGxhYmxlID8gVHlwZTo6bnVsbGFibGUoJHR5cGUpIDogJHR5cGU7CiAgICAgICAgfQoKICAgICAgICAkdmFyVHlwZXMgPSBbXTsKICAgICAgICBmb3IgKCR0eXBlSW5kZXggPSAwOyAkdmFyVHlwZS0+aGFzKCR0eXBlSW5kZXgpOyArKyR0eXBlSW5kZXgpIHsKICAgICAgICAgICAgJHR5cGUgPSAkdmFyVHlwZS0+Z2V0KCR0eXBlSW5kZXgpOwoKICAgICAgICAgICAgaWYgKCR0eXBlIGluc3RhbmNlb2YgQ29uc3RFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICAgICAvLyBJdCdzIHNhZmVyIHRvIGZhbGwgYmFjayB0byBvdGhlciBleHRyYWN0b3JzIGhlcmUsIGFzIHJlc29sdmluZyBjb25zdCB0eXBlcyBjb3JyZWN0bHkgaXMgbm90IGVhc3kgYXQgdGhlIG1vbWVudAogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIG51bGwgaXMgcHJlc2VudCwgYWxsIHR5cGVzIGFyZSBudWxsYWJsZQogICAgICAgICAgICBpZiAoJHR5cGUgaW5zdGFuY2VvZiBOdWxsXykgewogICAgICAgICAgICAgICAgJG51bGxhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHR5cGUgaW5zdGFuY2VvZiBOdWxsYWJsZSkgewogICAgICAgICAgICAgICAgJG51bGxhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICR0eXBlID0gJHR5cGUtPmdldEFjdHVhbFR5cGUoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHZhclR5cGVzW10gPSAkdHlwZTsKICAgICAgICB9CgogICAgICAgICR1bmlvblR5cGVzID0gW107CiAgICAgICAgZm9yZWFjaCAoJHZhclR5cGVzIGFzICR2YXJUeXBlKSB7CiAgICAgICAgICAgIGlmICghJHQgPSAkdGhpcy0+Y3JlYXRlVHlwZSgkdmFyVHlwZSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHQgaW5zdGFuY2VvZiBCdWlsdGluVHlwZSAmJiBUeXBlSWRlbnRpZmllcjo6TUlYRUQgPT09ICR0LT5nZXRUeXBlSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gVHlwZTo6bWl4ZWQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHVuaW9uVHlwZXNbXSA9ICR0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkdW5pb25UeXBlcykgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICR0eXBlID0gMSA9PT0gXGNvdW50KCR1bmlvblR5cGVzKSA/ICR1bmlvblR5cGVzWzBdIDogVHlwZTo6dW5pb24oLi4uJHVuaW9uVHlwZXMpOwoKICAgICAgICByZXR1cm4gJG51bGxhYmxlID8gVHlwZTo6bnVsbGFibGUoJHR5cGUpIDogJHR5cGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEge0BzZWUgTGVnYWN5VHlwZX0gZnJvbSBhIFBIUERvYyB0eXBlLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVR5cGUoRG9jVHlwZSAkdHlwZSwgYm9vbCAkbnVsbGFibGUpOiA/TGVnYWN5VHlwZQogICAgewogICAgICAgICRkb2NUeXBlID0gKHN0cmluZykgJHR5cGU7CgogICAgICAgIGlmICgnbWl4ZWRbXScgPT09ICRkb2NUeXBlKSB7CiAgICAgICAgICAgICRkb2NUeXBlID0gJ2FycmF5JzsKICAgICAgICB9IGVsc2VpZiAoJ2FycmF5JyAhPT0gJGRvY1R5cGUgJiYgJHR5cGUgaW5zdGFuY2VvZiBBcnJheV8gJiYgJHRoaXMtPmhhc05vRXhwbGljaXRLZXlUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAkZG9jVHlwZSA9IFxzcHJpbnRmKCclc1tdJywgJHR5cGUtPmdldFZhbHVlVHlwZSgpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdHlwZSBpbnN0YW5jZW9mIENvbGxlY3Rpb24gfHwgJHR5cGUgaW5zdGFuY2VvZiBHZW5lcmljKSB7CiAgICAgICAgICAgICRmcXNlbiA9ICR0eXBlLT5nZXRGcXNlbigpOwogICAgICAgICAgICBpZiAoJHR5cGUgaW5zdGFuY2VvZiBDb2xsZWN0aW9uICYmICRmcXNlbiAmJiAnbGlzdCcgPT09ICRmcXNlbi0+Z2V0TmFtZSgpICYmICFjbGFzc19leGlzdHMoTGlzdF86OmNsYXNzLCBmYWxzZSkgJiYgIWNsYXNzX2V4aXN0cygoc3RyaW5nKSAkZnFzZW4pKSB7CiAgICAgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBwaHBkb2N1bWVudG9yL3R5cGUtcmVzb2x2ZXIgPCAxLjYKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTGVnYWN5VHlwZShMZWdhY3lUeXBlOjpCVUlMVElOX1RZUEVfQVJSQVksICRudWxsYWJsZSwgbnVsbCwgdHJ1ZSwgbmV3IExlZ2FjeVR5cGUoTGVnYWN5VHlwZTo6QlVJTFRJTl9UWVBFX0lOVCksICR0aGlzLT5nZXRUeXBlcygkdHlwZS0+Z2V0VmFsdWVUeXBlKCkpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgWyRwaHBUeXBlLCAkY2xhc3NdID0gJHRoaXMtPmdldFBocFR5cGVBbmRDbGFzcygoc3RyaW5nKSAkZnFzZW4pOwoKICAgICAgICAgICAgJGNvbGxlY3Rpb24gPSBpc19hKCRjbGFzcywgXFRyYXZlcnNhYmxlOjpjbGFzcywgdHJ1ZSkgfHwgaXNfYSgkY2xhc3MsIFxBcnJheUFjY2Vzczo6Y2xhc3MsIHRydWUpOwoKICAgICAgICAgICAgLy8gaXQncyBzYWZlciB0byBmYWxsIGJhY2sgdG8gb3RoZXIgZXh0cmFjdG9ycyBpZiB0aGUgZ2VuZXJpYyB0eXBlIGlzIHRvbyBhYnN0cmFjdAogICAgICAgICAgICBpZiAoISRjb2xsZWN0aW9uICYmICFjbGFzc19leGlzdHMoJGNsYXNzLCBmYWxzZSkgJiYgIWludGVyZmFjZV9leGlzdHMoJGNsYXNzLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHR5cGUgaW5zdGFuY2VvZiBHZW5lcmljKSB7CiAgICAgICAgICAgICAgICAkZ2VuZXJpY1R5cGVzID0gJHR5cGUtPmdldFR5cGVzKCk7CgogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09ICR2YWx1ZVR5cGUgPSAkZ2VuZXJpY1R5cGVzWzFdID8/IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAka2V5VHlwZSA9IG5ldyBDb21wb3VuZChbbmV3IFN0cmluZ18oKSwgbmV3IEludGVnZXIoKV0pOwogICAgICAgICAgICAgICAgICAgICR2YWx1ZVR5cGUgPSAkZ2VuZXJpY1R5cGVzWzBdID8/IG5ldyBNaXhlZF8oKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGtleVR5cGUgPSAkZ2VuZXJpY1R5cGVzWzBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGtleVR5cGUgPSAkdHlwZS0+Z2V0S2V5VHlwZSgpOwogICAgICAgICAgICAgICAgJHZhbHVlVHlwZSA9ICR0eXBlLT5nZXRWYWx1ZVR5cGUoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGtleXMgPSAkdGhpcy0+Z2V0VHlwZXMoJGtleVR5cGUpOwogICAgICAgICAgICAkdmFsdWVzID0gJHRoaXMtPmdldFR5cGVzKCR2YWx1ZVR5cGUpOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lUeXBlKCRwaHBUeXBlLCAkbnVsbGFibGUsICRjbGFzcywgJGNvbGxlY3Rpb24sICRrZXlzLCAkdmFsdWVzKTsKICAgICAgICB9CgogICAgICAgIC8vIENhbm5vdCBndWVzcwogICAgICAgIGlmICghJGRvY1R5cGUgfHwgJ21peGVkJyA9PT0gJGRvY1R5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyX2VuZHNfd2l0aCgkZG9jVHlwZSwgJ1tdJykgJiYgJHR5cGUgaW5zdGFuY2VvZiBBcnJheV8pIHsKICAgICAgICAgICAgJGNvbGxlY3Rpb25LZXlUeXBlcyA9IG5ldyBMZWdhY3lUeXBlKExlZ2FjeVR5cGU6OkJVSUxUSU5fVFlQRV9JTlQpOwogICAgICAgICAgICAkY29sbGVjdGlvblZhbHVlVHlwZXMgPSAkdGhpcy0+Z2V0VHlwZXMoJHR5cGUtPmdldFZhbHVlVHlwZSgpKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgTGVnYWN5VHlwZShMZWdhY3lUeXBlOjpCVUlMVElOX1RZUEVfQVJSQVksICRudWxsYWJsZSwgbnVsbCwgdHJ1ZSwgJGNvbGxlY3Rpb25LZXlUeXBlcywgJGNvbGxlY3Rpb25WYWx1ZVR5cGVzKTsKICAgICAgICB9CgogICAgICAgIGlmICgoc3RyX3N0YXJ0c193aXRoKCRkb2NUeXBlLCAnbGlzdDwnKSB8fCBzdHJfc3RhcnRzX3dpdGgoJGRvY1R5cGUsICdhcnJheTwnKSkgJiYgJHR5cGUgaW5zdGFuY2VvZiBBcnJheV8pIHsKICAgICAgICAgICAgLy8gYXJyYXk8dmFsdWU+IGlzIGNvbnZlcnRlZCB0byB4W10gd2hpY2ggaXMgaGFuZGxlZCBhYm92ZQogICAgICAgICAgICAvLyBzbyBpdCdzIG9ubHkgbmVjZXNzYXJ5IHRvIGhhbmRsZSBhcnJheTxrZXksIHZhbHVlPiBoZXJlCiAgICAgICAgICAgICRjb2xsZWN0aW9uS2V5VHlwZXMgPSAkdGhpcy0+Z2V0VHlwZXMoJHR5cGUtPmdldEtleVR5cGUoKSk7CiAgICAgICAgICAgICRjb2xsZWN0aW9uVmFsdWVUeXBlcyA9ICR0aGlzLT5nZXRUeXBlcygkdHlwZS0+Z2V0VmFsdWVUeXBlKCkpOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lUeXBlKExlZ2FjeVR5cGU6OkJVSUxUSU5fVFlQRV9BUlJBWSwgJG51bGxhYmxlLCBudWxsLCB0cnVlLCAkY29sbGVjdGlvbktleVR5cGVzLCAkY29sbGVjdGlvblZhbHVlVHlwZXMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0eXBlIGluc3RhbmNlb2YgUHNldWRvVHlwZSkgewogICAgICAgICAgICBpZiAoJHR5cGUtPnVuZGVybHlpbmdUeXBlKCkgaW5zdGFuY2VvZiBJbnRlZ2VyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IExlZ2FjeVR5cGUoTGVnYWN5VHlwZTo6QlVJTFRJTl9UWVBFX0lOVCwgJG51bGxhYmxlLCBudWxsKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCR0eXBlLT51bmRlcmx5aW5nVHlwZSgpIGluc3RhbmNlb2YgU3RyaW5nXykgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lUeXBlKExlZ2FjeVR5cGU6OkJVSUxUSU5fVFlQRV9TVFJJTkcsICRudWxsYWJsZSwgbnVsbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRkb2NUeXBlID0gJHRoaXMtPm5vcm1hbGl6ZVR5cGUoJGRvY1R5cGUpOwogICAgICAgIFskcGhwVHlwZSwgJGNsYXNzXSA9ICR0aGlzLT5nZXRQaHBUeXBlQW5kQ2xhc3MoJGRvY1R5cGUpOwoKICAgICAgICBpZiAoJ2FycmF5JyA9PT0gJGRvY1R5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lUeXBlKExlZ2FjeVR5cGU6OkJVSUxUSU5fVFlQRV9BUlJBWSwgJG51bGxhYmxlLCBudWxsLCB0cnVlLCBudWxsLCBudWxsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgTGVnYWN5VHlwZSgkcGhwVHlwZSwgJG51bGxhYmxlLCAkY2xhc3MpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIHtAc2VlIFR5cGV9IGZyb20gYSBQSFBEb2MgdHlwZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVUeXBlKERvY1R5cGUgJGRvY1R5cGUpOiA/VHlwZQogICAgewogICAgICAgICRkb2NUeXBlU3RyaW5nID0gKHN0cmluZykgJGRvY1R5cGU7CgogICAgICAgIGlmICgnbWl4ZWRbXScgPT09ICRkb2NUeXBlU3RyaW5nKSB7CiAgICAgICAgICAgICRkb2NUeXBlU3RyaW5nID0gJ2FycmF5JzsKICAgICAgICB9CgogICAgICAgIGlmICgkZG9jVHlwZSBpbnN0YW5jZW9mIEdlbmVyaWMpIHsKICAgICAgICAgICAgJGZxc2VuID0gJGRvY1R5cGUtPmdldEZxc2VuKCk7CgogICAgICAgICAgICBbJHBocFR5cGUsICRjbGFzc10gPSAkdGhpcy0+Z2V0UGhwVHlwZUFuZENsYXNzKChzdHJpbmcpICRmcXNlbik7CgogICAgICAgICAgICAkY29sbGVjdGlvbiA9IGlzX2EoJGNsYXNzLCBcVHJhdmVyc2FibGU6OmNsYXNzLCB0cnVlKSB8fCBpc19hKCRjbGFzcywgXEFycmF5QWNjZXNzOjpjbGFzcywgdHJ1ZSk7CgogICAgICAgICAgICAvLyBpdCdzIHNhZmVyIHRvIGZhbGwgYmFjayB0byBvdGhlciBleHRyYWN0b3JzIGlmIHRoZSBnZW5lcmljIHR5cGUgaXMgdG9vIGFic3RyYWN0CiAgICAgICAgICAgIGlmICghJGNvbGxlY3Rpb24gJiYgIWNsYXNzX2V4aXN0cygkY2xhc3MsIGZhbHNlKSAmJiAhaW50ZXJmYWNlX2V4aXN0cygkY2xhc3MsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRnZW5lcmljVHlwZXMgPSAkZG9jVHlwZS0+Z2V0VHlwZXMoKTsKICAgICAgICAgICAgJHR5cGUgPSBudWxsICE9PSAkY2xhc3MgPyBUeXBlOjpvYmplY3QoJGNsYXNzKSA6IFR5cGU6OmJ1aWx0aW4oJHBocFR5cGUpOwoKICAgICAgICAgICAgaWYgKCRjb2xsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gJHZhbHVlVHlwZSA9ICRnZW5lcmljVHlwZXNbMV0gPz8gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICRrZXlUeXBlID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAkdmFsdWVUeXBlID0gJGdlbmVyaWNUeXBlc1swXSA/PyBudWxsOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAka2V5VHlwZSA9ICRnZW5lcmljVHlwZXNbMF0gPz8gbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkdmFsdWVUeXBlID8gJHRoaXMtPmdldFR5cGUoJHZhbHVlVHlwZSkgOiBudWxsOwogICAgICAgICAgICAgICAgJGtleSA9ICRrZXlUeXBlID8gJHRoaXMtPmdldFR5cGUoJGtleVR5cGUpIDogbnVsbDsKCiAgICAgICAgICAgICAgICByZXR1cm4gVHlwZTo6Y29sbGVjdGlvbigkdHlwZSwgJHZhbHVlLCAka2V5KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHZhcmlhYmxlVHlwZXMgPSBhcnJheV9tYXAoZm4gKCR0KSA9PiAkdGhpcy0+Z2V0VHlwZSgkdCksICRnZW5lcmljVHlwZXMpOwoKICAgICAgICAgICAgcmV0dXJuIFR5cGU6OmdlbmVyaWMoJHR5cGUsIC4uLmFycmF5X2ZpbHRlcigkdmFyaWFibGVUeXBlcykpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRkb2NUeXBlIGluc3RhbmNlb2YgQ29sbGVjdGlvbikgewogICAgICAgICAgICAkZnFzZW4gPSAkZG9jVHlwZS0+Z2V0RnFzZW4oKTsKICAgICAgICAgICAgaWYgKCRmcXNlbiAmJiAnbGlzdCcgPT09ICRmcXNlbi0+Z2V0TmFtZSgpICYmICFjbGFzc19leGlzdHMoTGlzdF86OmNsYXNzLCBmYWxzZSkgJiYgIWNsYXNzX2V4aXN0cygoc3RyaW5nKSAkZnFzZW4pKSB7CiAgICAgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBwaHBkb2N1bWVudG9yL3R5cGUtcmVzb2x2ZXIgPCAxLjYKICAgICAgICAgICAgICAgIHJldHVybiBUeXBlOjpsaXN0KCR0aGlzLT5nZXRUeXBlKCRkb2NUeXBlLT5nZXRWYWx1ZVR5cGUoKSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBbJHBocFR5cGUsICRjbGFzc10gPSAkdGhpcy0+Z2V0UGhwVHlwZUFuZENsYXNzKChzdHJpbmcpICRmcXNlbik7CgogICAgICAgICAgICAkY29sbGVjdGlvbiA9IGlzX2EoJGNsYXNzLCBcVHJhdmVyc2FibGU6OmNsYXNzLCB0cnVlKSB8fCBpc19hKCRjbGFzcywgXEFycmF5QWNjZXNzOjpjbGFzcywgdHJ1ZSk7CgogICAgICAgICAgICAvLyBpdCdzIHNhZmVyIHRvIGZhbGwgYmFjayB0byBvdGhlciBleHRyYWN0b3JzIGlmIHRoZSBnZW5lcmljIHR5cGUgaXMgdG9vIGFic3RyYWN0CiAgICAgICAgICAgIGlmICghJGNvbGxlY3Rpb24gJiYgIWNsYXNzX2V4aXN0cygkY2xhc3MsIGZhbHNlKSAmJiAhaW50ZXJmYWNlX2V4aXN0cygkY2xhc3MsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0eXBlID0gbnVsbCAhPT0gJGNsYXNzID8gVHlwZTo6b2JqZWN0KCRjbGFzcykgOiBUeXBlOjpidWlsdGluKCRwaHBUeXBlKTsKCiAgICAgICAgICAgIGlmICgkY29sbGVjdGlvbikgewogICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmdldFR5cGUoJGRvY1R5cGUtPmdldFZhbHVlVHlwZSgpKTsKICAgICAgICAgICAgICAgICRrZXkgPSAkdGhpcy0+Z2V0VHlwZSgkZG9jVHlwZS0+Z2V0S2V5VHlwZSgpKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gVHlwZTo6Y29sbGVjdGlvbigkdHlwZSwgJHZhbHVlLCAka2V5KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHZhcmlhYmxlVHlwZXMgPSBbXTsKCiAgICAgICAgICAgIGlmICghJHRoaXMtPmhhc05vRXhwbGljaXRLZXlUeXBlKCRkb2NUeXBlKSAmJiBudWxsICE9PSAka2V5VHlwZSA9ICR0aGlzLT5nZXRUeXBlKCRkb2NUeXBlLT5nZXRLZXlUeXBlKCkpKSB7CiAgICAgICAgICAgICAgICAkdmFyaWFibGVUeXBlc1tdID0gJGtleVR5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChudWxsICE9PSAkdmFsdWVUeXBlID0gJHRoaXMtPmdldFR5cGUoJGRvY1R5cGUtPmdldFZhbHVlVHlwZSgpKSkgewogICAgICAgICAgICAgICAgJHZhcmlhYmxlVHlwZXNbXSA9ICR2YWx1ZVR5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBUeXBlOjpnZW5lcmljKCR0eXBlLCAuLi4kdmFyaWFibGVUeXBlcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRkb2NUeXBlU3RyaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRkb2NUeXBlIGluc3RhbmNlb2YgQXJyYXlfICYmICR0aGlzLT5oYXNOb0V4cGxpY2l0S2V5VHlwZSgkZG9jVHlwZSkgJiYgc3RyX3N0YXJ0c193aXRoKCRkb2NUeXBlU3RyaW5nLCAnYXJyYXk8JykpIHsKICAgICAgICAgICAgcmV0dXJuIFR5cGU6Omxpc3QoJHRoaXMtPmdldFR5cGUoJGRvY1R5cGUtPmdldFZhbHVlVHlwZSgpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyX2VuZHNfd2l0aCgkZG9jVHlwZVN0cmluZywgJ1tdJykgJiYgJGRvY1R5cGUgaW5zdGFuY2VvZiBBcnJheV8pIHsKICAgICAgICAgICAgcmV0dXJuIFR5cGU6Omxpc3QoJHRoaXMtPmdldFR5cGUoJGRvY1R5cGUtPmdldFZhbHVlVHlwZSgpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyX3N0YXJ0c193aXRoKCRkb2NUeXBlU3RyaW5nLCAnbGlzdDwnKSAmJiAkZG9jVHlwZSBpbnN0YW5jZW9mIEFycmF5XykgewogICAgICAgICAgICAkY29sbGVjdGlvblZhbHVlVHlwZSA9ICR0aGlzLT5nZXRUeXBlKCRkb2NUeXBlLT5nZXRWYWx1ZVR5cGUoKSk7CgogICAgICAgICAgICByZXR1cm4gVHlwZTo6bGlzdCgkY29sbGVjdGlvblZhbHVlVHlwZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyX3N0YXJ0c193aXRoKCRkb2NUeXBlU3RyaW5nLCAnYXJyYXk8JykgJiYgJGRvY1R5cGUgaW5zdGFuY2VvZiBBcnJheV8pIHsKICAgICAgICAgICAgLy8gYXJyYXk8dmFsdWU+IGlzIGNvbnZlcnRlZCB0byB4W10gd2hpY2ggaXMgaGFuZGxlZCBhYm92ZQogICAgICAgICAgICAvLyBzbyBpdCdzIG9ubHkgbmVjZXNzYXJ5IHRvIGhhbmRsZSBhcnJheTxrZXksIHZhbHVlPiBoZXJlCiAgICAgICAgICAgICRjb2xsZWN0aW9uS2V5VHlwZSA9ICR0aGlzLT5nZXRUeXBlKCRkb2NUeXBlLT5nZXRLZXlUeXBlKCkpOwogICAgICAgICAgICAkY29sbGVjdGlvblZhbHVlVHlwZSA9ICR0aGlzLT5nZXRUeXBlKCRkb2NUeXBlLT5nZXRWYWx1ZVR5cGUoKSk7CgogICAgICAgICAgICByZXR1cm4gVHlwZTo6YXJyYXkoJGNvbGxlY3Rpb25WYWx1ZVR5cGUsICRjb2xsZWN0aW9uS2V5VHlwZSk7CiAgICAgICAgfQoKICAgICAgICAkZG9jVHlwZVN0cmluZyA9IG1hdGNoICgkZG9jVHlwZVN0cmluZykgewogICAgICAgICAgICAnaW50ZWdlcicgPT4gJ2ludCcsCiAgICAgICAgICAgICdib29sZWFuJyA9PiAnYm9vbCcsCiAgICAgICAgICAgIC8vIHJlYWwgaXMgbm90IHBhcnQgb2YgdGhlIFBIUERvYyBzdGFuZGFyZCwgc28gd2UgaWdub3JlIGl0CiAgICAgICAgICAgICdkb3VibGUnID0+ICdmbG9hdCcsCiAgICAgICAgICAgICdjYWxsYmFjaycgPT4gJ2NhbGxhYmxlJywKICAgICAgICAgICAgJ3ZvaWQnID0+ICdudWxsJywKICAgICAgICAgICAgZGVmYXVsdCA9PiAkZG9jVHlwZVN0cmluZywKICAgICAgICB9OwoKICAgICAgICBbJHBocFR5cGUsICRjbGFzc10gPSAkdGhpcy0+Z2V0UGhwVHlwZUFuZENsYXNzKCRkb2NUeXBlU3RyaW5nKTsKCiAgICAgICAgaWYgKCdhcnJheScgPT09ICRkb2NUeXBlU3RyaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBUeXBlOjphcnJheSgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRjbGFzcykgewogICAgICAgICAgICByZXR1cm4gVHlwZTo6YnVpbHRpbigkcGhwVHlwZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRvY1R5cGUgaW5zdGFuY2VvZiBMZWdhY3lTY2FsYXIgfHwgJGRvY1R5cGUgaW5zdGFuY2VvZiBTY2FsYXIpIHsKICAgICAgICAgICAgcmV0dXJuIFR5cGU6Om9iamVjdCgnc2NhbGFyJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRvY1R5cGUgaW5zdGFuY2VvZiBQc2V1ZG9UeXBlKSB7CiAgICAgICAgICAgIGlmICgkZG9jVHlwZS0+dW5kZXJseWluZ1R5cGUoKSBpbnN0YW5jZW9mIEludGVnZXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBUeXBlOjppbnQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRkb2NUeXBlLT51bmRlcmx5aW5nVHlwZSgpIGluc3RhbmNlb2YgU3RyaW5nXykgewogICAgICAgICAgICAgICAgcmV0dXJuIFR5cGU6OnN0cmluZygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJdCdzIHNhZmVyIHRvIGZhbGwgYmFjayB0byBvdGhlciBleHRyYWN0b3JzIGhlcmUsIGFzIHJlc29sdmluZyBwc2V1ZG8gdHlwZXMgY29ycmVjdGx5IGlzIG5vdCBlYXN5IGF0IHRoZSBtb21lbnQKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVHlwZTo6b2JqZWN0KCRjbGFzcyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBub3JtYWxpemVUeXBlKHN0cmluZyAkZG9jVHlwZSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJGRvY1R5cGUpIHsKICAgICAgICAgICAgJ2ludGVnZXInID0+ICdpbnQnLAogICAgICAgICAgICAnYm9vbGVhbicgPT4gJ2Jvb2wnLAogICAgICAgICAgICAvLyByZWFsIGlzIG5vdCBwYXJ0IG9mIHRoZSBQSFBEb2Mgc3RhbmRhcmQsIHNvIHdlIGlnbm9yZSBpdAogICAgICAgICAgICAnZG91YmxlJyA9PiAnZmxvYXQnLAogICAgICAgICAgICAnY2FsbGJhY2snID0+ICdjYWxsYWJsZScsCiAgICAgICAgICAgICd2b2lkJyA9PiAnbnVsbCcsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJGRvY1R5cGUsCiAgICAgICAgfTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGhhc05vRXhwbGljaXRLZXlUeXBlKEFycmF5X3xDb2xsZWN0aW9uICR0eXBlKTogYm9vbAogICAgewogICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCR0eXBlLCAnZ2V0T3JpZ2luYWxLZXlUeXBlJykpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09ICR0eXBlLT5nZXRPcmlnaW5hbEtleVR5cGUoKTsKICAgICAgICB9CgogICAgICAgIC8vIFdvcmthcm91bmQgZm9yIHBocGRvY3VtZW50b3IvcmVmbGVjdGlvbi1kb2NibG9jayA8IDYKICAgICAgICAvLyAiZ2V0T3JpZ2luYWxLZXlUeXBlKCkiIGRvZXNuJ3QgZXhpc3QsIHNvIHdlIGNoZWNrIGlmIGtleSB0eXBlIGlzIENvbXBvdW5kKHN0cmluZywgaW50KSB3aGljaCBpcyB0aGUgZGVmYXVsdC4KICAgICAgICByZXR1cm4gJHR5cGUtPmdldEtleVR5cGUoKSBpbnN0YW5jZW9mIENvbXBvdW5kOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0UGhwVHlwZUFuZENsYXNzKHN0cmluZyAkZG9jVHlwZSk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKFxpbl9hcnJheSgkZG9jVHlwZSwgVHlwZUlkZW50aWZpZXI6OnZhbHVlcygpLCB0cnVlKSkgewogICAgICAgICAgICByZXR1cm4gWyRkb2NUeXBlLCBudWxsXTsKICAgICAgICB9CgogICAgICAgIGlmIChcaW5fYXJyYXkoJGRvY1R5cGUsIFsncGFyZW50JywgJ3NlbGYnLCAnc3RhdGljJ10sIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybiBbJ29iamVjdCcsICRkb2NUeXBlXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJ29iamVjdCcsIGx0cmltKCRkb2NUeXBlLCAnXFwnKV07CiAgICB9Cn0KIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtOO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";