1778692632
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A3e308f00ddcc480008fe9c0fefc5d6f4-3a46349812923342076a06854681fe85
s:30068:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjE3OiJGdW5jdGlvbl9UZXN0LnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6Mzc6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZhY3RvcnkiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozNzoiXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmFjdG9yeSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjc6IkZhY3RvcnkiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MTp7czo1MToiXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmFjdG9yeVxGdW5jdGlvbl9UZXN0IjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTU6e3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AY29uc3RhbnRzIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcHJvcGVydGllcyI7YToxOntzOjY5OiJccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGYWN0b3J5XEZ1bmN0aW9uX1Rlc3Q6OiRkb2NCbG9ja0ZhY3RvcnkiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkiOjE0OntzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2OToiXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmFjdG9yeVxGdW5jdGlvbl9UZXN0OjokZG9jQmxvY2tGYWN0b3J5IjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTU6ImRvY0Jsb2NrRmFjdG9yeSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtOO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRlZmF1bHQiO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAc3RhdGljIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjMzOiJcUHJvcGhlY3lcUHJvcGhlY3lcT2JqZWN0UHJvcGhlY3kiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNDoiT2JqZWN0UHJvcGhlY3kiO319czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBob29rcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlydHVhbCI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjU6e3M6NjA6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZhY3RvcnlcRnVuY3Rpb25fVGVzdDo6c2V0VXAoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQ3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjEzNjQ7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTU2Njt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjYwOiJccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGYWN0b3J5XEZ1bmN0aW9uX1Rlc3Q6OnNldFVwKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo1OiJzZXRVcCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjY2OiJccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGYWN0b3J5XEZ1bmN0aW9uX1Rlc3Q6OnRlc3RNYXRjaGVzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1MztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxNTczO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjYwO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjE5Mjk7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NjoiXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmFjdG9yeVxGdW5jdGlvbl9UZXN0Ojp0ZXN0TWF0Y2hlcygpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6InRlc3RNYXRjaGVzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6ODI6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZhY3RvcnlcRnVuY3Rpb25fVGVzdDo6dGVzdENyZWF0ZVdpdGhvdXRQYXJhbWV0ZXJzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo2MjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxOTM2O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjgyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjI5NDU7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4MjoiXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmFjdG9yeVxGdW5jdGlvbl9UZXN0Ojp0ZXN0Q3JlYXRlV2l0aG91dFBhcmFtZXRlcnMoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI3OiJ0ZXN0Q3JlYXRlV2l0aG91dFBhcmFtZXRlcnMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3NzoiXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmFjdG9yeVxGdW5jdGlvbl9UZXN0Ojp0ZXN0Q3JlYXRlV2l0aERvY0Jsb2NrKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo4NDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToyOTUyO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEwODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo0MTA3O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Nzc6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZhY3RvcnlcRnVuY3Rpb25fVGVzdDo6dGVzdENyZWF0ZVdpdGhEb2NCbG9jaygpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjI6InRlc3RDcmVhdGVXaXRoRG9jQmxvY2siO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3NzoiXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmFjdG9yeVxGdW5jdGlvbl9UZXN0Ojp0ZXN0SXRlcmF0ZXNTdGF0ZW1lbnRzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMTA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NDExNDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMzg7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NTM1MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjc3OiJccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGYWN0b3J5XEZ1bmN0aW9uX1Rlc3Q6OnRlc3RJdGVyYXRlc1N0YXRlbWVudHMoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjIyOiJ0ZXN0SXRlcmF0ZXNTdGF0ZW1lbnRzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YToxOntzOjMxOiJcUHJvcGhlY3lcUGhwVW5pdFxQcm9waGVjeVRyYWl0IjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MzE6IlxQcm9waGVjeVxQaHBVbml0XFByb3BoZWN5VHJhaXQiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMzoiUHJvcGhlY3lUcmFpdCI7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTM5O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUxOiJccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGYWN0b3J5XEZ1bmN0aW9uX1Rlc3QiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMzoiRnVuY3Rpb25fVGVzdCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDY6IlxwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZhY3RvcnlcVGVzdENhc2UiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo4OiJUZXN0Q2FzZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmaW5hbCI7YjoxO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwByZWFkT25seSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGF0dHJpYnV0ZXMiO2E6NTp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBdHRyaWJ1dGUAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0MToiXFBIUFVuaXRcRnJhbWV3b3JrXEF0dHJpYnV0ZXNcQ292ZXJzQ2xhc3MiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMToiQ292ZXJzQ2xhc3MiO31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBdHRyaWJ1dGUAYXJndW1lbnRzIjthOjE6e2k6MDtPOjQxOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudCI6Mjp7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2FsbEFyZ3VtZW50AHZhbHVlIjtzOjU0OiJccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGYWN0b3J5XEZ1bmN0aW9uXzo6Y2xhc3MiO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudABuYW1lIjtOO319fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEF0dHJpYnV0ZSI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDE6IlxQSFBVbml0XEZyYW1ld29ya1xBdHRyaWJ1dGVzXENvdmVyc0NsYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6IkNvdmVyc0NsYXNzIjt9czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlAGFyZ3VtZW50cyI7YToxOntpOjA7Tzo0MToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDYWxsQXJndW1lbnQiOjI6e3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudAB2YWx1ZSI7czo2MDoiXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmFjdG9yeVxBYnN0cmFjdEZhY3Rvcnk6OmNsYXNzIjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDYWxsQXJndW1lbnQAbmFtZSI7Tjt9fX1pOjI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBdHRyaWJ1dGUiOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEF0dHJpYnV0ZQBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjM5OiJcUEhQVW5pdFxGcmFtZXdvcmtcQXR0cmlidXRlc1xVc2VzQ2xhc3MiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo5OiJVc2VzQ2xhc3MiO31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBdHRyaWJ1dGUAYXJndW1lbnRzIjthOjE6e2k6MDtPOjQxOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudCI6Mjp7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2FsbEFyZ3VtZW50AHZhbHVlIjtzOjQxOiInXHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRnVuY3Rpb25fJyI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2FsbEFyZ3VtZW50AG5hbWUiO047fX19aTozO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBdHRyaWJ1dGUAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozOToiXFBIUFVuaXRcRnJhbWV3b3JrXEF0dHJpYnV0ZXNcVXNlc0NsYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6OToiVXNlc0NsYXNzIjt9czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlAGFyZ3VtZW50cyI7YToxOntpOjA7Tzo0MToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDYWxsQXJndW1lbnQiOjI6e3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudAB2YWx1ZSI7czo0MDoiJ1xwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50JyI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2FsbEFyZ3VtZW50AG5hbWUiO047fX19aTo0O086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBdHRyaWJ1dGUAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozOToiXFBIUFVuaXRcRnJhbWV3b3JrXEF0dHJpYnV0ZXNcVXNlc0NsYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6OToiVXNlc0NsYXNzIjt9czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlAGFyZ3VtZW50cyI7YToxOntpOjA7Tzo0MToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDYWxsQXJndW1lbnQiOjI6e3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudAB2YWx1ZSI7czo0NDoiJ1xwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZhY3RvcnlcVHlwZSciO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudABuYW1lIjtOO319fX19fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiM2E0NjM0OTgxMjkyMzM0MjA3NmEwNjg1NDY4MWZlODUiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czo5NzoidmVuZG9yL3BocGRvY3VtZW50b3IvcmVmbGVjdGlvbi90ZXN0cy91bml0L3BocERvY3VtZW50b3IvUmVmbGVjdGlvbi9QaHAvRmFjdG9yeS9GdW5jdGlvbl9UZXN0LnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6NTM1NDoiPD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoqCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHBocERvY3VtZW50b3IuCiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKgogKiBAbGluayBodHRwOi8vcGhwZG9jLm9yZwogKi8KCm5hbWVzcGFjZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZhY3Rvcnk7Cgp1c2UgcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIGFzIERvY0Jsb2NrRGVzY3JpcHRvcjsKdXNlIHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja0ZhY3RvcnlJbnRlcmZhY2U7CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW47CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGU7CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZ1bmN0aW9uXyBhcyBGdW5jdGlvbkRlc2NyaXB0b3I7CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb2plY3RGYWN0b3J5U3RyYXRlZ3k7CnVzZSBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFN0cmF0ZWd5Q29udGFpbmVyOwp1c2UgUGhwUGFyc2VyXENvbW1lbnRcRG9jOwp1c2UgUGhwUGFyc2VyXE5vZGVcRXhwclxGdW5jQ2FsbDsKdXNlIFBocFBhcnNlclxOb2RlXE5hbWU7CnVzZSBQaHBQYXJzZXJcTm9kZVxTdG10XEV4cHJlc3Npb247CnVzZSBQSFBVbml0XEZyYW1ld29ya1xBdHRyaWJ1dGVzXENvdmVyc0NsYXNzOwp1c2UgUEhQVW5pdFxGcmFtZXdvcmtcQXR0cmlidXRlc1xVc2VzQ2xhc3M7CnVzZSBQcm9waGVjeVxBcmd1bWVudDsKdXNlIFByb3BoZWN5XFBocFVuaXRcUHJvcGhlY3lUcmFpdDsKdXNlIFByb3BoZWN5XFByb3BoZWN5XE9iamVjdFByb3BoZWN5Owp1c2Ugc3RkQ2xhc3M7Cgp1c2UgZnVuY3Rpb24gY3VycmVudDsKCiNbQ292ZXJzQ2xhc3MoRnVuY3Rpb25fOjpjbGFzcyldCiNbQ292ZXJzQ2xhc3MoQWJzdHJhY3RGYWN0b3J5OjpjbGFzcyldCiNbVXNlc0NsYXNzKCdccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGdW5jdGlvbl8nKV0KI1tVc2VzQ2xhc3MoJ1xwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50JyldCiNbVXNlc0NsYXNzKCdccGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGYWN0b3J5XFR5cGUnKV0KZmluYWwgY2xhc3MgRnVuY3Rpb25fVGVzdCBleHRlbmRzIFRlc3RDYXNlCnsKICAgIHVzZSBQcm9waGVjeVRyYWl0OwoKICAgIHByaXZhdGUgT2JqZWN0UHJvcGhlY3kgJGRvY0Jsb2NrRmFjdG9yeTsKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0VXAoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5kb2NCbG9ja0ZhY3RvcnkgPSAkdGhpcy0+cHJvcGhlc2l6ZShEb2NCbG9ja0ZhY3RvcnlJbnRlcmZhY2U6OmNsYXNzKTsKICAgICAgICAkdGhpcy0+Zml4dHVyZSA9IG5ldyBGdW5jdGlvbl8oJHRoaXMtPmRvY0Jsb2NrRmFjdG9yeS0+cmV2ZWFsKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0TWF0Y2hlcygpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKCR0aGlzLT5maXh0dXJlLT5tYXRjaGVzKHNlbGY6OmNyZWF0ZUNvbnRleHQobnVsbCksIG5ldyBzdGRDbGFzcygpKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPmZpeHR1cmUtPm1hdGNoZXMoCiAgICAgICAgICAgIHNlbGY6OmNyZWF0ZUNvbnRleHQobnVsbCktPnB1c2gobmV3IEZpbGUoJ2hhc2gnLCAncGF0aCcpKSwKICAgICAgICAgICAgJHRoaXMtPnByb3BoZXNpemUoXFBocFBhcnNlclxOb2RlXFN0bXRcRnVuY3Rpb25fOjpjbGFzcyktPnJldmVhbCgpLAogICAgICAgICkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Q3JlYXRlV2l0aG91dFBhcmFtZXRlcnMoKTogdm9pZAogICAgewogICAgICAgICRmdW5jdGlvbk1vY2sgPSAkdGhpcy0+cHJvcGhlc2l6ZShcUGhwUGFyc2VyXE5vZGVcU3RtdFxGdW5jdGlvbl86OmNsYXNzKTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5ieVJlZiA9IGZhbHNlOwogICAgICAgICRmdW5jdGlvbk1vY2stPnN0bXRzID0gW107CiAgICAgICAgJGZ1bmN0aW9uTW9jay0+Z2V0QXR0cmlidXRlKCdmcXNlbicpLT53aWxsUmV0dXJuKG5ldyBGcXNlbignXFNvbWVTcGFjZTo6ZnVuY3Rpb24oKScpKTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5wYXJhbXMgPSBbXTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5nZXREb2NDb21tZW50KCktPndpbGxSZXR1cm4obnVsbCk7CiAgICAgICAgJGZ1bmN0aW9uTW9jay0+Z2V0TGluZSgpLT53aWxsUmV0dXJuKDEpOwogICAgICAgICRmdW5jdGlvbk1vY2stPmdldEVuZExpbmUoKS0+d2lsbFJldHVybigyKTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5nZXRSZXR1cm5UeXBlKCktPndpbGxSZXR1cm4obnVsbCk7CgogICAgICAgICRjb250YWluZXJNb2NrID0gJHRoaXMtPnByb3BoZXNpemUoU3RyYXRlZ3lDb250YWluZXI6OmNsYXNzKTsKICAgICAgICAkZmlsZSA9IG5ldyBGaWxlKCdoYXNoJywgJ3BhdGgnKTsKCiAgICAgICAgJHRoaXMtPmZpeHR1cmUtPmNyZWF0ZShzZWxmOjpjcmVhdGVDb250ZXh0KCktPnB1c2goJGZpbGUpLCAkZnVuY3Rpb25Nb2NrLT5yZXZlYWwoKSwgJGNvbnRhaW5lck1vY2stPnJldmVhbCgpKTsKCiAgICAgICAgJGZ1bmN0aW9uID0gY3VycmVudCgkZmlsZS0+Z2V0RnVuY3Rpb25zKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKEZ1bmN0aW9uRGVzY3JpcHRvcjo6Y2xhc3MsICRmdW5jdGlvbik7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnXFNvbWVTcGFjZTo6ZnVuY3Rpb24oKScsIChzdHJpbmcpICRmdW5jdGlvbi0+Z2V0RnFzZW4oKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDcmVhdGVXaXRoRG9jQmxvY2soKTogdm9pZAogICAgewogICAgICAgICRkb2MgPSBuZXcgRG9jKCdUZXh0Jyk7CiAgICAgICAgJGZ1bmN0aW9uTW9jayA9ICR0aGlzLT5wcm9waGVzaXplKFxQaHBQYXJzZXJcTm9kZVxTdG10XEZ1bmN0aW9uXzo6Y2xhc3MpOwogICAgICAgICRmdW5jdGlvbk1vY2stPmJ5UmVmID0gZmFsc2U7CiAgICAgICAgJGZ1bmN0aW9uTW9jay0+c3RtdHMgPSBbXTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5nZXRBdHRyaWJ1dGUoJ2Zxc2VuJyktPndpbGxSZXR1cm4obmV3IEZxc2VuKCdcU29tZVNwYWNlOjpmdW5jdGlvbigpJykpOwogICAgICAgICRmdW5jdGlvbk1vY2stPnBhcmFtcyA9IFtdOwogICAgICAgICRmdW5jdGlvbk1vY2stPmdldERvY0NvbW1lbnQoKS0+d2lsbFJldHVybigkZG9jKTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5nZXRMaW5lKCktPndpbGxSZXR1cm4oMSk7CiAgICAgICAgJGZ1bmN0aW9uTW9jay0+Z2V0RW5kTGluZSgpLT53aWxsUmV0dXJuKDIpOwogICAgICAgICRmdW5jdGlvbk1vY2stPmdldFJldHVyblR5cGUoKS0+d2lsbFJldHVybihudWxsKTsKCiAgICAgICAgJGRvY0Jsb2NrID0gbmV3IERvY0Jsb2NrRGVzY3JpcHRvcignJyk7CiAgICAgICAgJHRoaXMtPmRvY0Jsb2NrRmFjdG9yeS0+Y3JlYXRlKCdUZXh0JywgbnVsbCktPndpbGxSZXR1cm4oJGRvY0Jsb2NrKTsKCiAgICAgICAgJGNvbnRhaW5lck1vY2sgPSAkdGhpcy0+cHJvcGhlc2l6ZShTdHJhdGVneUNvbnRhaW5lcjo6Y2xhc3MpOwogICAgICAgICRmaWxlID0gbmV3IEZpbGUoJ2hhc2gnLCAncGF0aCcpOwogICAgICAgICR0aGlzLT5maXh0dXJlLT5jcmVhdGUoc2VsZjo6Y3JlYXRlQ29udGV4dCgpLT5wdXNoKCRmaWxlKSwgJGZ1bmN0aW9uTW9jay0+cmV2ZWFsKCksICRjb250YWluZXJNb2NrLT5yZXZlYWwoKSk7CgogICAgICAgICRmdW5jdGlvbiA9IGN1cnJlbnQoJGZpbGUtPmdldEZ1bmN0aW9ucygpKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnXFNvbWVTcGFjZTo6ZnVuY3Rpb24oKScsIChzdHJpbmcpICRmdW5jdGlvbi0+Z2V0RnFzZW4oKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFNhbWUoJGRvY0Jsb2NrLCAkZnVuY3Rpb24tPmdldERvY0Jsb2NrKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SXRlcmF0ZXNTdGF0ZW1lbnRzKCk6IHZvaWQKICAgIHsKICAgICAgICAkZG9jID0gbmV3IERvYygnVGV4dCcpOwogICAgICAgICRmdW5jdGlvbk1vY2sgPSAkdGhpcy0+cHJvcGhlc2l6ZShcUGhwUGFyc2VyXE5vZGVcU3RtdFxGdW5jdGlvbl86OmNsYXNzKTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5ieVJlZiA9IGZhbHNlOwogICAgICAgICRmdW5jdGlvbk1vY2stPnN0bXRzID0gW107CiAgICAgICAgJGZ1bmN0aW9uTW9jay0+Z2V0QXR0cmlidXRlKCdmcXNlbicpLT53aWxsUmV0dXJuKG5ldyBGcXNlbignXFNvbWVTcGFjZTo6ZnVuY3Rpb24oKScpKTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5wYXJhbXMgPSBbXTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5nZXREb2NDb21tZW50KCktPndpbGxSZXR1cm4obnVsbCk7CiAgICAgICAgJGZ1bmN0aW9uTW9jay0+Z2V0TGluZSgpLT53aWxsUmV0dXJuKDEpOwogICAgICAgICRmdW5jdGlvbk1vY2stPmdldEVuZExpbmUoKS0+d2lsbFJldHVybigyKTsKICAgICAgICAkZnVuY3Rpb25Nb2NrLT5nZXRSZXR1cm5UeXBlKCktPndpbGxSZXR1cm4obnVsbCk7CiAgICAgICAgJGZ1bmN0aW9uTW9jay0+c3RtdHMgPSBbbmV3IEV4cHJlc3Npb24obmV3IEZ1bmNDYWxsKG5ldyBOYW1lKCdob29rJykpKV07CgogICAgICAgICRzdHJhdGVneU1vY2sgPSAkdGhpcy0+cHJvcGhlc2l6ZShQcm9qZWN0RmFjdG9yeVN0cmF0ZWd5OjpjbGFzcyk7CgogICAgICAgICRjb250YWluZXJNb2NrID0gJHRoaXMtPnByb3BoZXNpemUoU3RyYXRlZ3lDb250YWluZXI6OmNsYXNzKTsKICAgICAgICAkY29udGFpbmVyTW9jay0+ZmluZE1hdGNoaW5nKAogICAgICAgICAgICBBcmd1bWVudDo6dHlwZShDb250ZXh0U3RhY2s6OmNsYXNzKSwKICAgICAgICAgICAgQXJndW1lbnQ6OnR5cGUoRXhwcmVzc2lvbjo6Y2xhc3MpLAogICAgICAgICktPndpbGxSZXR1cm4oJHN0cmF0ZWd5TW9jay0+cmV2ZWFsKCkpLT5zaG91bGRCZUNhbGxlZE9uY2UoKTsKCiAgICAgICAgJGZpbGUgPSBuZXcgRmlsZSgnaGFzaCcsICdwYXRoJyk7CiAgICAgICAgJHRoaXMtPmZpeHR1cmUtPmNyZWF0ZSgKICAgICAgICAgICAgc2VsZjo6Y3JlYXRlQ29udGV4dChudWxsKS0+cHVzaCgkZmlsZSksCiAgICAgICAgICAgICRmdW5jdGlvbk1vY2stPnJldmVhbCgpLAogICAgICAgICAgICAkY29udGFpbmVyTW9jay0+cmV2ZWFsKCksCiAgICAgICAgKTsKICAgIH0KfQoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjM1OiJUaGlzIGZpbGUgaXMgcGFydCBvZiBwaHBEb2N1bWVudG9yLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoxMjA6IkZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCmZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xMaW5rIjozOntzOjc6IgAqAG5hbWUiO3M6NDoibGluayI7czoxNDoiACoAZGVzY3JpcHRpb24iO047czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXExpbmsAbGluayI7czoxNzoiaHR0cDovL3BocGRvYy5vcmciO319czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czowOiIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjA6e319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG1ldGFkYXRhIjthOjA6e319";