
Segments
TotalSegmentator
Tool for segmentation of 104 classes in CT images. It was trained on a wide range of different CT images (different scanners, institutions, protocols,...) and therefore should work well on most images.
GitHub
16
132
Platipy
This project consists of an algorithm to automatically segment the heart plus 17 cardiac sub-structures in typical Radiotherapy CT scans. The hybrid algorithm first segments the whole heart using a deep learning model (nnUNet) followed by a multi-atlas based mapping of the cardiac sub-structures and finally geometric modelling of smaller cardiac structures. The following cardiac structures are generated by the auto-segmentation algorithm.
GitHub
7
84
ewogICAgIm1vZGVscyI6IHsKICAgICAgICAidG90YWxzZWdtZW50YXRvciI6IHsKICAgICAgICAgICAgImlkIjogImM4MjEzMTU3LTU2YzQtNDYzYy05NTc2LWFmNWI5MTI0YjcwYiIsCiAgICAgICAgICAgICJuYW1lIjogInRvdGFsc2VnbWVudGF0b3IiLAogICAgICAgICAgICAibGFiZWwiOiAiVG90YWxTZWdtZW50YXRvciIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMCIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUb3RhbFNlZ21lbnRhdG9yIGlzIGFuIEFJLWJhc2VkIHRvb2wgZm9yIHJvYnVzdCBzZWdtZW50YXRpb24gb2YgMTA0IGltcG9ydGFudCBhbmF0b21pY2FsIHN0cnVjdHVyZXMgaW4gQ1QgaW1hZ2VzLiIsCiAgICAgICAgICAgICJsaWNlbmNlIjogIkFwYWNoZSAyLjAiLAogICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2Fzc2VydGgvVG90YWxTZWdtZW50YXRvciIsCiAgICAgICAgICAgICJyZWZlcmVuY2VzIjogWyJXYXNzZXJ0aGFsIEouLCBNZXllciBNLiwgQnJlaXQgSC4sIEN5cmlhYyBKLiwgWWFuZyBTLiwgU2VnZXJvdGggTS4gVG90YWxTZWdtZW50YXRvcjogcm9idXN0IHNlZ21lbnRhdGlvbiBvZiAxMDQgYW5hdG9taWNhbCBzdHJ1Y3R1cmVzIGluIENUIGltYWdlcywgMjAyMi4gVVJMOiBodHRwczovL2FyeGl2Lm9yZy9hYnMvMjIwOC4wNTg2OC4gYXJYaXY6IDIyMDguMDU4NjgiXSwKICAgICAgICAgICAgImNvbnRyaWJ1dG9ycyI6IFsiTGVvbmFyZCBOw7xybmJlcmciXSwgCiAgICAgICAgICAgICJpbWFnZXMiOiBbCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy90b3RhbHNlZ21lbnRhdG9yL2ltZzEucG5nIiwKICAgICAgICAgICAgICAgICJyZXMvaW1hZ2VzL3RvdGFsc2VnbWVudGF0b3IvaW1nMi5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvdG90YWxzZWdtZW50YXRvci9pbWczLnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy90b3RhbHNlZ21lbnRhdG9yL2ltZzQucG5nIiwKICAgICAgICAgICAgICAgICJyZXMvaW1hZ2VzL3RvdGFsc2VnbWVudGF0b3IvaW1nNS5wbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdGF0cyI6IHsKICAgICAgICAgICAgICAgICJzdGFycyI6IDQ2OSwKICAgICAgICAgICAgICAgICJkb3dubG9hZHMiOiA0MgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImlucHV0IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJpbWFnZSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklucHV0IGltYWdlIiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3JtYXQiOiAiZGljb20iLAogICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGVzIjogewogICAgICAgICAgICAgICAgICAgICAgICAiTW9kYWxpdHkiOiAiQ1QiLAogICAgICAgICAgICAgICAgICAgICAgICAiQm9keVBhcnRFeGFtaW5lZCI6ICJXSE9MRUJPRFksIENIRVNULCBCUkVBU1QsIEFCRE9NRU4sIFBFTFZJUywgSEVBRCwgTkVDSyIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzZWdtZW50YXRpb25zIjogWwogICAgICAgICAgICAgICAgIkFPUlRBIiwKICAgICAgICAgICAgICAgICJCUkFJTiIsCiAgICAgICAgICAgICAgICAiQ09MT04iLAogICAgICAgICAgICAgICAgIkRVT0RFTlVNIiwKICAgICAgICAgICAgICAgICJFU09QSEFHVVMiLAogICAgICAgICAgICAgICAgIkZBQ0UiLAogICAgICAgICAgICAgICAgIkdBTExCTEFEREVSIiwKICAgICAgICAgICAgICAgICJJTkZFUklPUl9WRU5BX0NBVkEiLAogICAgICAgICAgICAgICAgIkxFRlRfQURSRU5BTF9HTEFORCIsCiAgICAgICAgICAgICAgICAiTEVGVF9BVFJJVU0iLAogICAgICAgICAgICAgICAgIkxFRlRfQVVUT0NIVEhPTk9VU19CQUNLX01VU0NMRSIsCiAgICAgICAgICAgICAgICAiTEVGVF9DTEFWSUNMRSIsCiAgICAgICAgICAgICAgICAiTEVGVF9GRU1VUiIsCiAgICAgICAgICAgICAgICAiTEVGVF9HTFVURVVTX01BWElNVVMiLAogICAgICAgICAgICAgICAgIkxFRlRfR0xVVEVVU19NRURJVVMiLAogICAgICAgICAgICAgICAgIkxFRlRfR0xVVEVVU19NSU5JTVVTIiwKICAgICAgICAgICAgICAgICJMRUZUX0hJUCIsCiAgICAgICAgICAgICAgICAiTEVGVF9IVU1FUlVTIiwKICAgICAgICAgICAgICAgICJMRUZUX0lMSUFDX0FSVEVSWSIsCiAgICAgICAgICAgICAgICAiTEVGVF9JTElBQ19WRUlOIiwKICAgICAgICAgICAgICAgICJMRUZUX0lMSU9QU09BUyIsCiAgICAgICAgICAgICAgICAiTEVGVF9LSURORVkiLAogICAgICAgICAgICAgICAgIkxFRlRfTE9XRVJfTFVOR19MT0JFIiwKICAgICAgICAgICAgICAgICJMRUZUX1JJQiIsCiAgICAgICAgICAgICAgICAiTEVGVF9TQ0FQVUxBIiwKICAgICAgICAgICAgICAgICJMRUZUX1VQUEVSX0xVTkdfTE9CRSIsCiAgICAgICAgICAgICAgICAiTEVGVF9WRU5UUklDTEUiLAogICAgICAgICAgICAgICAgIkxJVkVSIiwKICAgICAgICAgICAgICAgICJNWU9DQVJESVVNIiwKICAgICAgICAgICAgICAgICJQQU5DUkVBUyIsCiAgICAgICAgICAgICAgICAiUE9SVEFMX0FORF9TUExFTklDX1ZFSU4iLAogICAgICAgICAgICAgICAgIlBVTE1PTkFSWV9BUlRFUlkiLAogICAgICAgICAgICAgICAgIlJJR0hUX0FEUkVOQUxfR0xBTkQiLAogICAgICAgICAgICAgICAgIlJJR0hUX0FUUklVTSIsCiAgICAgICAgICAgICAgICAiUklHSFRfQVVUT0NIVEhPTk9VU19CQUNLX01VU0NMRSIsCiAgICAgICAgICAgICAgICAiUklHSFRfQ0xBVklDTEUiLAogICAgICAgICAgICAgICAgIlJJR0hUX0ZFTVVSIiwKICAgICAgICAgICAgICAgICJSSUdIVF9HTFVURVVTX01BWElNVVMiLAogICAgICAgICAgICAgICAgIlJJR0hUX0dMVVRFVVNfTUVESVVTIiwKICAgICAgICAgICAgICAgICJSSUdIVF9HTFVURVVTX01JTklNVVMiLAogICAgICAgICAgICAgICAgIlJJR0hUX0hJUCIsCiAgICAgICAgICAgICAgICAiUklHSFRfSFVNRVJVUyIsCiAgICAgICAgICAgICAgICAiUklHSFRfSUxJQUNfQVJURVJZIiwKICAgICAgICAgICAgICAgICJSSUdIVF9JTElBQ19WRUlOIiwKICAgICAgICAgICAgICAgICJSSUdIVF9JTElPUFNPQVMiLAogICAgICAgICAgICAgICAgIlJJR0hUX0tJRE5FWSIsCiAgICAgICAgICAgICAgICAiUklHSFRfTE9XRVJfTFVOR19MT0JFIiwKICAgICAgICAgICAgICAgICJSSUdIVF9NSURETEVfTFVOR19MT0JFIiwKICAgICAgICAgICAgICAgICJSSUdIVF9SSUIiLAogICAgICAgICAgICAgICAgIlJJR0hUX1NDQVBVTEEiLAogICAgICAgICAgICAgICAgIlJJR0hUX1VQUEVSX0xVTkdfTE9CRSIsCiAgICAgICAgICAgICAgICAiUklHSFRfVkVOVFJJQ0xFIiwKICAgICAgICAgICAgICAgICJTQUNSVU0iLAogICAgICAgICAgICAgICAgIlNNQUxMX0lOVEVTVElORSIsCiAgICAgICAgICAgICAgICAiU1BMRUVOIiwKICAgICAgICAgICAgICAgICJTVE9NQUNIIiwKICAgICAgICAgICAgICAgICJUUkFDSEVBIiwKICAgICAgICAgICAgICAgICJVUklOQVJZX0JMQURERVIiLAogICAgICAgICAgICAgICAgIlZFUlRFQlJBRSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImNvbmZpZ3VyYWJsZXMiOiBbXSwKICAgICAgICAgICAgImZsb3dzIjogewogICAgICAgICAgICAgICAgImRlZmF1bHQiOiB7CiAgICAgICAgICAgICAgICAgICAgInNjcmlwdCI6ICJzY3JpcHRzL3J1bi5weSIsCiAgICAgICAgICAgICAgICAgICAgImNvbmZpZyI6ICJjb25maWcvY29uZmlnLnltbCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAic2xpY2VyIjogewogICAgICAgICAgICAgICAgICAgICJzY3JpcHQiOiAic2NyaXB0cy9zbGljZXJfcnVuLnB5IiwKICAgICAgICAgICAgICAgICAgICAiY29uZmlnIjogImNvbmZpZy9zbGljZXJfY29uZmlnLnltbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgICJwbGF0aXB5IjogewogICAgICAgICAgICAiaWQiOiAiMTViYmRmNGQtY2Q1My00ZDkzLThhMGUtOGE2MTRjYTRhZDUwIiwKICAgICAgICAgICAgIm5hbWUiOiAicGxhdGlweSIsCiAgICAgICAgICAgICJsYWJlbCI6ICJQbGF0aXB5IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBsYXRpUHkgaXMgYSBsaWJyYXJ5IG9mIHRvb2xzIGZvciBpbWFnZSBwcm9jZXNzaW5nIGFuZCBhbmFseXNpcyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIG1lZGljYWwgaW1hZ2luZy4gVGhpcyBzcGVjaWZpYyBtb2RlbCBmb2N1c2VzIG9uIHRoZSBoeWJyaWQgc2VnbWVudGF0aW9uIG9mIGNhcmRpYWMgc3Vic3RydWN0dXJlcy4iLAogICAgICAgICAgICAibGljZW5jZSI6ICJBcGFjaGUgMi4wIiwKICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiaHR0cHM6Ly9naXRodWIuY29tL3B5cGxhdGkvcGxhdGlweSIsCiAgICAgICAgICAgICJyZWZlcmVuY2VzIjogWyJGaW5uZWdhbiwgUk4sIENoaW4sIFYsIENobGFwLCBQLCBldCBhbC4gT3Blbi1zb3VyY2UsIGZ1bGx5LWF1dG9tYXRlZCBoeWJyaWQgY2FyZGlhYyBzdWJzdHJ1Y3R1cmUgc2VnbWVudGF0aW9uOiBkZXZlbG9wbWVudCBhbmQgb3B0aW1pc2F0aW9uLiBQaHlzIEVuZyBTY2kgTWVkLiAyMDIzIl0sCiAgICAgICAgICAgICJjb250cmlidXRvcnMiOiBbIkxlb25hcmQgTsO8cm5iZXJnIl0sIAogICAgICAgICAgICAiaW1hZ2VzIjogWwogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvcGxhdGlweS9pbWcxLnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9wbGF0aXB5L2ltZzIucG5nIiwKICAgICAgICAgICAgICAgICJyZXMvaW1hZ2VzL3BsYXRpcHkvaW1nMy5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvcGxhdGlweS9pbWc0LnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9wbGF0aXB5L2ltZzUucG5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3RhdHMiOiB7CiAgICAgICAgICAgICAgICAic3RhcnMiOiA1MCwKICAgICAgICAgICAgICAgICJkb3dubG9hZHMiOiA0MgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImlucHV0MSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTaW5nbGUgRElDT00gQ1QgU2VyaWVzIG9mIHRoZSBwYXRpZW50IiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3JtYXQiOiAiZGljb20iLAogICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGVzIjogewogICAgICAgICAgICAgICAgICAgICAgICAiTW9kYWxpdHkiOiAiQ1QiLAogICAgICAgICAgICAgICAgICAgICAgICAiQm9keVBhcnRFeGFtaW5lZCI6ICJDSEVTVCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzZWdtZW50YXRpb25zIjogWwogICAgICAgICAgICAgICAgIkhFQVJUIiwKICAgICAgICAgICAgICAgICJBT1JUQSIsCiAgICAgICAgICAgICAgICAiTEVGVF9BVFJJVU0iLAogICAgICAgICAgICAgICAgIkxFRlRfVkVOVFJJQ0xFIiwKICAgICAgICAgICAgICAgICJSSUdIVF9BVFJJVU0iLAogICAgICAgICAgICAgICAgIlJJR0hUX1ZFTlRSSUNMRSIsCiAgICAgICAgICAgICAgICAiQ09ST05BUllfQVJURVJZX0xBRCIsCiAgICAgICAgICAgICAgICAiQ09ST05BUllfQVJURVJZX0NGTFgiLAogICAgICAgICAgICAgICAgIkNPUk9OQVJZX0FSVEVSWV9SSUdIVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImNvbmZpZ3VyYWJsZXMiOiBbXSwKICAgICAgICAgICAgImZsb3dzIjogewogICAgICAgICAgICAgICAgImRlZmF1bHQiOiB7CiAgICAgICAgICAgICAgICAgICAgInNjcmlwdCI6ICJzY3JpcHRzL3J1bi5weSIsCiAgICAgICAgICAgICAgICAgICAgImNvbmZpZyI6ICJjb25maWcvY29uZmlnLnltbCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAic2xpY2VyIjogewogICAgICAgICAgICAgICAgICAgICJzY3JpcHQiOiAic2NyaXB0cy9zbGljZXJfcnVuLnB5IiwKICAgICAgICAgICAgICAgICAgICAiY29uZmlnIjogImNvbmZpZy9zbGljZXJfY29uZmlnLnltbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgICJjYXN1c3QiOiB7CiAgICAgICAgICAgICJpZCI6ICIxYzEyZjAxMy03YWU4LTRmODgtYmMzNy04OWQ4YWQzZDI3OWUiLAogICAgICAgICAgICAibmFtZSI6ICJjYXN1c3QiLAogICAgICAgICAgICAibGFiZWwiOiAiQ2FTdVN0IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhU3VTdCBpcyBhIHBpcGVsaW5lIGZvciB0aGUgc2VnbWVudGF0aW9uIG9mIHRoZSBoZWFydCBhbmQgY2FyZGlhYyBzdWJzdHJ1Y3R1cmVzIGZyb20gbm9uLWNvbnRyYXN0IENUIHNjYW5zLiIsCiAgICAgICAgICAgICJsaWNlbmNlIjogIk1QTC0yLjAiLAogICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJodHRwczovL2dpdGh1Yi5jb20vTGVubnlOOTUvQ2FTdVN0IiwKICAgICAgICAgICAgInJlZmVyZW5jZXMiOiBbIk7DvHJuYmVyZywgTCwgQm9udGVtcGksIEQsIERlIFJ1eXNzY2hlciwgRCwgZXQgYWwuIERlZXAgbGVhcm5pbmcgc2VnbWVudGF0aW9uIG9mIGhlYXJ0IHN1YnN0cnVjdHVyZXMgaW4gcmFkaW90aGVyYXB5IHRyZWF0bWVudCBwbGFubmluZy4gUGh5c2ljYSBNZWRpY2E6IEV1cm9wZWFuIGpvdXJuYWwgb2YgbWVkaWNhbCBwaHlzaWNzLCAyMDIyIl0sCiAgICAgICAgICAgICJjb250cmlidXRvcnMiOiBbIkxlb25hcmQgTsO8cm5iZXJnIl0sIAogICAgICAgICAgICAiaW1hZ2VzIjogWwogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvY2FzdXN0L2ltZzEucG5nIiwKICAgICAgICAgICAgICAgICJyZXMvaW1hZ2VzL2Nhc3VzdC9pbWcyLnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9jYXN1c3QvaW1nMy5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvY2FzdXN0L2ltZzQucG5nIiwKICAgICAgICAgICAgICAgICJyZXMvaW1hZ2VzL2Nhc3VzdC9pbWc1LnBuZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN0YXRzIjogewogICAgICAgICAgICAgICAgInN0YXJzIjogNSwKICAgICAgICAgICAgICAgICJkb3dubG9hZHMiOiA0MgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImlucHV0MSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTaW5nbGUgRElDT00gQ1QgU2VyaWVzIG9mIHRoZSBwYXRpZW50IiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3JtYXQiOiAiZGljb20iLAogICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGVzIjogewogICAgICAgICAgICAgICAgICAgICAgICAiTW9kYWxpdHkiOiAiQ1QiLAogICAgICAgICAgICAgICAgICAgICAgICAiQm9keVBhcnRFeGFtaW5lZCI6ICJDSEVTVCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzZWdtZW50YXRpb25zIjogWwogICAgICAgICAgICAgICAgIkhFQVJUIiwKICAgICAgICAgICAgICAgICJMRUZUX0FUUklVTSIsCiAgICAgICAgICAgICAgICAiTEVGVF9WRU5UUklDTEUiLAogICAgICAgICAgICAgICAgIlJJR0hUX0FUUklVTSIsCiAgICAgICAgICAgICAgICAiUklHSFRfVkVOVFJJQ0xFIiwKICAgICAgICAgICAgICAgICJDT1JPTkFSWV9BUlRFUllfTEFEIiwKICAgICAgICAgICAgICAgICJDT1JPTkFSWV9BUlRFUllfQ0ZMWCIsCiAgICAgICAgICAgICAgICAiQ09ST05BUllfQVJURVJZX1JJR0hUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiY29uZmlndXJhYmxlcyI6IFtdLAogICAgICAgICAgICAiZmxvd3MiOiB7CiAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgICAgICAgICAic2NyaXB0IjogInNjcmlwdHMvcnVuLnB5IiwKICAgICAgICAgICAgICAgICAgICAiY29uZmlnIjogImNvbmZpZy9jb25maWcueW1sIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJzbGljZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgInNjcmlwdCI6ICJzY3JpcHRzL3NsaWNlcl9ydW4ucHkiLAogICAgICAgICAgICAgICAgICAgICJjb25maWciOiAiY29uZmlnL3NsaWNlcl9jb25maWcueW1sIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgImx1bmdtYXNrIjogewogICAgICAgICAgICAiaWQiOiAiYmVmYjA4NzItMzcyZS00YTkzLTkzNzEtOWVmYjRjZTgxMmIwIiwKICAgICAgICAgICAgIm5hbWUiOiAibHVuZ21hc2siLAogICAgICAgICAgICAibGFiZWwiOiAiTHVuZ01hc2siLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAiLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTHVuZ01hc2sgaXMgYW4gQUktYmFzZWQgcGlwZWxpbmUgZm9yIHRoZSBhdXRvbWF0ZWQgbHVuZyBzZWdtZW50YXRpb24gaW4gQ1QgKHdpdGggYW5kIHdpdGhvdXQgcHJlc2VuY2Ugb2Ygc2V2ZXJlIHBhdGhvbG9naWVzKS4iLAogICAgICAgICAgICAibGljZW5jZSI6ICJBcGFjaGUgMi4wIiwKICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiaHR0cHM6Ly9naXRodWIuY29tL0pvSG9mL2x1bmdtYXNrIiwKICAgICAgICAgICAgInJlZmVyZW5jZXMiOiBbIkhvZm1hbm5pbmdlciwgSiwgUHJheWVyLCBGLCBQYW4sIEosIGV0IEFsLiBBdXRvbWF0aWMgbHVuZyBzZWdtZW50YXRpb24gaW4gcm91dGluZSBpbWFnaW5nIGlzIHByaW1hcmlseSBhIGRhdGEgZGl2ZXJzaXR5IHByb2JsZW0sIG5vdCBhIG1ldGhvZG9sb2d5IHByb2JsZW0uIEV1cm9wZWFuIFJhZGlvbG9neSBFeHBlcmltZW50YWwsIDIwMjAiXSwKICAgICAgICAgICAgImNvbnRyaWJ1dG9ycyI6IFsiRGVubmlzIEJvbnRlbXBpIl0sIAogICAgICAgICAgICAiaW1hZ2VzIjogWwogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvbHVuZ21hc2svaW1nMS5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvbHVuZ21hc2svaW1nMi5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvbHVuZ21hc2svaW1nMy5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvbHVuZ21hc2svaW1nNC5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvbHVuZ21hc2svaW1nNS5wbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdGF0cyI6IHsKICAgICAgICAgICAgICAgICJzdGFycyI6IDUwNCwKICAgICAgICAgICAgICAgICJkb3dubG9hZHMiOiA0MgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImlucHV0MSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTaW5nbGUgRElDT00gQ1QgU2VyaWVzIG9mIHRoZSBwYXRpZW50IiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3JtYXQiOiAiZGljb20iLAogICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGVzIjogewogICAgICAgICAgICAgICAgICAgICAgICAiTW9kYWxpdHkiOiAiQ1QiLAogICAgICAgICAgICAgICAgICAgICAgICAiQm9keVBhcnRFeGFtaW5lZCI6ICJDSEVTVCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzZWdtZW50YXRpb25zIjogWwogICAgICAgICAgICAgICAgIkxFRlRfTE9XRVJfTFVOR19MT0JFIiwKICAgICAgICAgICAgICAgICJSSUdIVF9MT1dFUl9MVU5HX0xPQkUiLAogICAgICAgICAgICAgICAgIlJJR0hUX01JRERMRV9MVU5HX0xPQkUiLAogICAgICAgICAgICAgICAgIkxFRlRfVVBQRVJfTFVOR19MT0JFIiwKICAgICAgICAgICAgICAgICJSSUdIVF9VUFBFUl9MVU5HX0xPQkUiLAogICAgICAgICAgICAgICAgIkxFRlRfTFVORyIsCiAgICAgICAgICAgICAgICAiUklHSFRfTFVORyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImNvbmZpZ3VyYWJsZXMiOiBbXSwKICAgICAgICAgICAgImZsb3dzIjogewogICAgICAgICAgICAgICAgImRlZmF1bHQiOiB7CiAgICAgICAgICAgICAgICAgICAgInNjcmlwdCI6ICJzY3JpcHRzL3J1bi5weSIsCiAgICAgICAgICAgICAgICAgICAgImNvbmZpZyI6ICJjb25maWcvY29uZmlnLnltbCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAic2xpY2VyIjogewogICAgICAgICAgICAgICAgICAgICJzY3JpcHQiOiAic2NyaXB0cy9zbGljZXJfcnVuLnB5IiwKICAgICAgICAgICAgICAgICAgICAiY29uZmlnIjogImNvbmZpZy9zbGljZXJfY29uZmlnLnltbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgICJubnVuZXRfbGl2ZXIiOiB7CiAgICAgICAgICAgICJpZCI6ICJkYjk0MzY5Yy03MDUxLTRhYTEtYmU4Ni04OTZmMjcyMDY5YTUiLAogICAgICAgICAgICAibmFtZSI6ICJubnVuZXRfbGl2ZXIiLAogICAgICAgICAgICAibGFiZWwiOiAibm5VLU5ldCAobGl2ZXIpIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIm5uVS1OZXQgaXMgY29sbGVjdGlvbiBvZiBtb2RlbHMgcHJlLXRyYWluZWQgZm9yIHZhcmlvdXMgYmlvbWVkaWNhbCBpbWFnZSB0YXNrcy4gVGhpcyBzcGVjaWZpYyBtb2RlbCBmb2N1c2VzIG9uIGxpdmVyIGFuZCBsaXZlciBjYW5jZXIgc2VnbWVudGF0aW9uLiIsCiAgICAgICAgICAgICJsaWNlbmNlIjogIk1QTC0yLjAiLAogICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJodHRwczovL2dpdGh1Yi5jb20vTUlDLURLRlovbm5VTmV0IiwKICAgICAgICAgICAgInJlZmVyZW5jZXMiOiBbIklzZW5zZWUsIEYsIEphZWdlciwgUEYsIEtvaGwsIFNBLCBldCBBbC4gbm5VLU5ldDogYSBzZWxmLWNvbmZpZ3VyaW5nIG1ldGhvZCBmb3IgZGVlcCBsZWFybmluZy1iYXNlZCBiaW9tZWRpY2FsIGltYWdlIHNlZ21lbnRhdGlvbi4gTmF0dXJlIE1ldGhvZHMsIDIwMjEiXSwKICAgICAgICAgICAgImNvbnRyaWJ1dG9ycyI6IFsiTGVvbmFyZCBOw7xybmJlcmciXSwgCiAgICAgICAgICAgICJpbWFnZXMiOiBbCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9ubnVuZXRfbGl2ZXIvaW1nMS5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvbm51bmV0X2xpdmVyL2ltZzIucG5nIiwKICAgICAgICAgICAgICAgICJyZXMvaW1hZ2VzL25udW5ldF9saXZlci9pbWczLnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9ubnVuZXRfbGl2ZXIvaW1nNC5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvbm51bmV0X2xpdmVyL2ltZzUucG5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3RhdHMiOiB7CiAgICAgICAgICAgICAgICAic3RhcnMiOiAzNjAwLAogICAgICAgICAgICAgICAgImRvd25sb2FkcyI6IDQyCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5wdXQxIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJpbWFnZSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNpbmdsZSBESUNPTSBDVCBTZXJpZXMgb2YgdGhlIHBhdGllbnQiLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgImZvcm1hdCI6ICJkaWNvbSIsCiAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJNb2RhbGl0eSI6ICJDVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJCb2R5UGFydEV4YW1pbmVkIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIRVNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBQkRPTUVOIgogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAic2VnbWVudGF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICJMSVZFUiIsCiAgICAgICAgICAgICAgICAiTElWRVJfQ0FOQ0VSIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiY29uZmlndXJhYmxlcyI6IFtdLAogICAgICAgICAgICAiZmxvd3MiOiB7CiAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgICAgICAgICAic2NyaXB0IjogInNjcmlwdHMvcnVuLnB5IiwKICAgICAgICAgICAgICAgICAgICAiY29uZmlnIjogImNvbmZpZy9jb25maWcueW1sIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJzbGljZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgInNjcmlwdCI6ICJzY3JpcHRzL3NsaWNlcl9ydW4ucHkiLAogICAgICAgICAgICAgICAgICAgICJjb25maWciOiAiY29uZmlnL3NsaWNlcl9jb25maWcueW1sIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAKICAgICAgICAibm51bmV0X3NlZ3Rob3IiOiB7CiAgICAgICAgICAgICJpZCI6ICJmYzU5NWU1YS1jZTQwLTRjYjMtODA3Ny1lOTRlMTM4NGY4Y2YiLAogICAgICAgICAgICAibmFtZSI6ICJubnVuZXRfc2VndGhvciIsCiAgICAgICAgICAgICJsYWJlbCI6ICJublUtTmV0ICh0aG9yYWNpYyBPQVIpIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wIiwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIm5uVS1OZXQgaXMgY29sbGVjdGlvbiBvZiBtb2RlbHMgcHJlLXRyYWluZWQgZm9yIHZhcmlvdXMgYmlvbWVkaWNhbCBpbWFnZSB0YXNrcy4gVGhpcyBzcGVjaWZpYyBtb2RlbCBmb2N1c2VzIG9uIHRob3JhY2ljIE9BUiBzZWdtZW50YXRpb24uIiwKICAgICAgICAgICAgImxpY2VuY2UiOiAiTVBMLTIuMCIsCiAgICAgICAgICAgICJyZXBvc2l0b3J5IjogImh0dHBzOi8vZ2l0aHViLmNvbS9NSUMtREtGWi9ublVOZXQiLAogICAgICAgICAgICAicmVmZXJlbmNlcyI6IFsiSXNlbnNlZSwgRiwgSmFlZ2VyLCBQRiwgS29obCwgU0EsIGV0IEFsLiBublUtTmV0OiBhIHNlbGYtY29uZmlndXJpbmcgbWV0aG9kIGZvciBkZWVwIGxlYXJuaW5nLWJhc2VkIGJpb21lZGljYWwgaW1hZ2Ugc2VnbWVudGF0aW9uLiBOYXR1cmUgTWV0aG9kcywgMjAyMSJdLAogICAgICAgICAgICAiY29udHJpYnV0b3JzIjogWyJEZW5uaXMgQm9udGVtcGkiXSwgCiAgICAgICAgICAgICJpbWFnZXMiOiBbCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9ubnVuZXRfc2VndGhvci9pbWcxLnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9ubnVuZXRfc2VndGhvci9pbWcyLnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9ubnVuZXRfc2VndGhvci9pbWczLnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9ubnVuZXRfc2VndGhvci9pbWc0LnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9ubnVuZXRfc2VndGhvci9pbWc1LnBuZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN0YXRzIjogewogICAgICAgICAgICAgICAgInN0YXJzIjogMzYwMCwKICAgICAgICAgICAgICAgICJkb3dubG9hZHMiOiA0MgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImlucHV0MSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTaW5nbGUgRElDT00gQ1QgU2VyaWVzIG9mIHRoZSBwYXRpZW50IiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3JtYXQiOiAiZGljb20iLAogICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGVzIjogewogICAgICAgICAgICAgICAgICAgICAgICAiTW9kYWxpdHkiOiAiQ1QiLAogICAgICAgICAgICAgICAgICAgICAgICAiQm9keVBhcnRFeGFtaW5lZCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSEVTVCIKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInNlZ21lbnRhdGlvbnMiOiBbCiAgICAgICAgICAgICAgICAiQU9SVEEiLAogICAgICAgICAgICAgICAgIkhFQVJUIiwKICAgICAgICAgICAgICAgICJUUkFDSEVBIiwKICAgICAgICAgICAgICAgICJFU09QSEFHVVMiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJjb25maWd1cmFibGVzIjogW10sCiAgICAgICAgICAgICJmbG93cyI6IHsKICAgICAgICAgICAgICAgICJkZWZhdWx0IjogewogICAgICAgICAgICAgICAgICAgICJzY3JpcHQiOiAic2NyaXB0cy9ydW4ucHkiLAogICAgICAgICAgICAgICAgICAgICJjb25maWciOiAiY29uZmlnL2NvbmZpZy55bWwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInNsaWNlciI6IHsKICAgICAgICAgICAgICAgICAgICAic2NyaXB0IjogInNjcmlwdHMvc2xpY2VyX3J1bi5weSIsCiAgICAgICAgICAgICAgICAgICAgImNvbmZpZyI6ICJjb25maWcvc2xpY2VyX2NvbmZpZy55bWwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIAogICAgICAgICJydHN1bmV0X2x1bmdsb2JlcyI6IHsKICAgICAgICAgICAgImlkIjogIjIwNWNiOWMyLWM3MWItNGVkYy05ZDkwLWQ5MTZmMTJlZWEwNCIsCiAgICAgICAgICAgICJuYW1lIjogInJ0c3VuZXRfbHVuZ2xvYmVzIiwKICAgICAgICAgICAgImxhYmVsIjogIlB1bG1vbmFyeSBMb2JlcyA8YnIvPiBSVFNVLU5ldCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMCIsCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSVFNVLU5ldCBpcyBhbiBBSS1iYXNlZCBwaXBlbGluZSBmb3IgdGhlIGF1dG9tYXRlZCBwdWxtb25hcnkgbG9iZXMgc2VnbWVudGF0aW9uIGluIENUICh3aXRoIGFuZCB3aXRob3V0IHByZXNlbmNlIG9mIHNldmVyZSBwYXRob2xvZ2llcykuIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiAiQXBhY2hlIDIuMCIsCiAgICAgICAgICAgICJyZXBvc2l0b3J5IjogImh0dHBzOi8vZ2l0aHViLmNvbS9ESUFHTmlqbWVnZW4vYm9keWN0LXB1bG1vbmFyeS1sb2JlLXNlZ21lbnRhdGlvbiIsCiAgICAgICAgICAgICJyZWZlcmVuY2VzIjogWyJXLiBYaWUsIEMuIEphY29icywgSi4gLVAuIENoYXJib25uaWVyIGFuZCBCLiB2YW4gR2lubmVrZW4sIFJlbGF0aW9uYWwgTW9kZWxpbmcgZm9yIFJvYnVzdCBhbmQgRWZmaWNpZW50IFB1bG1vbmFyeSBMb2JlIFNlZ21lbnRhdGlvbiBpbiBDVCBTY2Fucy4gSUVFRSBUcmFuc2FjdGlvbnMgb24gTWVkaWNhbCBJbWFnaW5nLCAyMDIwIl0sCiAgICAgICAgICAgICJjb250cmlidXRvcnMiOiBbIkRlbm5pcyBCb250ZW1waSwgU2lsIHZhbiBkZSBMZWVtcHV0Il0sIAogICAgICAgICAgICAiaW1hZ2VzIjogWwogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvcnRzdW5ldF9sdW5nX2xvYmVzL2ltZzEucG5nIiwKICAgICAgICAgICAgICAgICJyZXMvaW1hZ2VzL3J0c3VuZXRfbHVuZ19sb2Jlcy9pbWcyLnBuZyIsCiAgICAgICAgICAgICAgICAicmVzL2ltYWdlcy9ydHN1bmV0X2x1bmdfbG9iZXMvaW1nMy5wbmciLAogICAgICAgICAgICAgICAgInJlcy9pbWFnZXMvcnRzdW5ldF9sdW5nX2xvYmVzL2ltZzQucG5nIiwKICAgICAgICAgICAgICAgICJyZXMvaW1hZ2VzL3J0c3VuZXRfbHVuZ19sb2Jlcy9pbWc1LnBuZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN0YXRzIjogewogICAgICAgICAgICAgICAgInN0YXJzIjogMSwKICAgICAgICAgICAgICAgICJkb3dubG9hZHMiOiAxCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiaW5wdXQxIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJpbWFnZSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNpbmdsZSBESUNPTSBDVCBTZXJpZXMgb2YgdGhlIHBhdGllbnQiLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgImZvcm1hdCI6ICJkaWNvbSIsCiAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJNb2RhbGl0eSI6ICJDVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJCb2R5UGFydEV4YW1pbmVkIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIRVNUIgogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAic2VnbWVudGF0aW9ucyI6IFsKICAgICAgICAgICAgICAgICJMRUZUX0xPV0VSX0xVTkdfTE9CRSIsCiAgICAgICAgICAgICAgICAiUklHSFRfTE9XRVJfTFVOR19MT0JFIiwKICAgICAgICAgICAgICAgICJSSUdIVF9NSURETEVfTFVOR19MT0JFIiwKICAgICAgICAgICAgICAgICJMRUZUX1VQUEVSX0xVTkdfTE9CRSIsCiAgICAgICAgICAgICAgICAiUklHSFRfVVBQRVJfTFVOR19MT0JFIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiY29uZmlndXJhYmxlcyI6IFtdLAogICAgICAgICAgICAiZmxvd3MiOiB7CiAgICAgICAgICAgICAgICAiZGVmYXVsdCI6IHsKICAgICAgICAgICAgICAgICAgICAic2NyaXB0IjogInNjcmlwdHMvcnVuLnB5IiwKICAgICAgICAgICAgICAgICAgICAiY29uZmlnIjogImNvbmZpZy9jb25maWcueW1sIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJzbGljZXIiOiB7CiAgICAgICAgICAgICAgICAgICAgInNjcmlwdCI6ICJzY3JpcHRzL3NsaWNlcl9ydW4ucHkiLAogICAgICAgICAgICAgICAgICAgICJjb25maWciOiAiY29uZmlnL3NsaWNlcl9jb25maWcueW1sIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9