1935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson/* 2935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * Copyright (c) 2015-2017 The Khronos Group Inc. 3935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * Copyright (c) 2015-2017 Valve Corporation 4935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * Copyright (c) 2015-2017 LunarG, Inc. 5935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * 6935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 7935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * you may not use this file except in compliance with the License. 8935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * You may obtain a copy of the License at 9935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * 10935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 11935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * 12935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * Unless required by applicable law or agreed to in writing, software 13935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 14935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * See the License for the specific language governing permissions and 16935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * limitations under the License. 17935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * 18935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * Author: Mark Young <marky@lunarg.com> 19935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson */ 20935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 21935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson#pragma once 22935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 23935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson// ---- Manually added trampoline/terminator functions 24935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 25935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson// These functions, for whatever reason, require more complex changes than 26935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson// can easily be automatically generated. 27935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 28935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroupsKHX( 29935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkInstance instance, uint32_t *pPhysicalDeviceGroupCount, 30935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDeviceGroupPropertiesKHX *pPhysicalDeviceGroupProperties); 31935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 32935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceGroupsKHX( 33935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkInstance instance, uint32_t *pPhysicalDeviceGroupCount, 34935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDeviceGroupPropertiesKHX *pPhysicalDeviceGroupProperties); 35935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 36935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL 37935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonGetPhysicalDeviceExternalImageFormatPropertiesNV( 38935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, 39935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, 40935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalMemoryHandleTypeFlagsNV externalHandleType, 41935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalImageFormatPropertiesNV *pExternalImageFormatProperties); 42935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 43935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL 44935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonterminator_GetPhysicalDeviceExternalImageFormatPropertiesNV( 45935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, 46935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, 47935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalMemoryHandleTypeFlagsNV externalHandleType, 48935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalImageFormatPropertiesNV *pExternalImageFormatProperties); 49935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 50935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures); 51935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 52935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice, 53935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDeviceFeatures2KHR* pFeatures); 54935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 55935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice, 56935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDeviceProperties2KHR* pProperties); 57935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 58935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice, 59935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDeviceProperties2KHR* pProperties); 60935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 61935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice, VkFormat format, 62935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkFormatProperties2KHR* pFormatProperties); 63935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 64935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice, VkFormat format, 65935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkFormatProperties2KHR* pFormatProperties); 66935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 67935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2KHR( 68935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, 69935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkImageFormatProperties2KHR* pImageFormatProperties); 70935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 71935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties2KHR( 72935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, 73935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkImageFormatProperties2KHR* pImageFormatProperties); 74935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 75935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice, 76935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson uint32_t* pQueueFamilyPropertyCount, 77935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkQueueFamilyProperties2KHR* pQueueFamilyProperties); 78935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 79935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties2KHR( 80935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties); 81935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 82935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice, 83935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties); 84935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 85935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties2KHR( 86935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties); 87935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 88935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2KHR( 89935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, 90935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSparseImageFormatProperties2KHR* pProperties); 91935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 92935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties2KHR( 93935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, 94935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSparseImageFormatProperties2KHR* pProperties); 95935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 96935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice, 97935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, 98935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSurfaceCapabilities2KHR* pSurfaceCapabilities); 99935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 100935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilities2KHR( 101935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, 102935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSurfaceCapabilities2KHR* pSurfaceCapabilities); 103935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 104935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice, 105935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, 106935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson uint32_t* pSurfaceFormatCount, 107935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSurfaceFormat2KHR* pSurfaceFormats); 108935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 109935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice, 110935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, 111935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson uint32_t* pSurfaceFormatCount, 112935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSurfaceFormat2KHR* pSurfaceFormats); 113935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 114935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, 115935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSurfaceCapabilities2EXT* pSurfaceCapabilities); 116935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 117935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice, 118935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSurfaceKHR surface, 119935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkSurfaceCapabilities2EXT* pSurfaceCapabilities); 120935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 121935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display); 122935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 123935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL terminator_ReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display); 124935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 125935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 126935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display); 127935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 128935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, 129935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkDisplayKHR display); 130935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 131935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, 132935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkDisplayKHR* pDisplay); 133935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 134935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR VkResult VKAPI_CALL terminator_GetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, 135935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkDisplayKHR* pDisplay); 136935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 137935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 138935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferPropertiesKHR( 139935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, 140935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalBufferPropertiesKHR* pExternalBufferProperties); 141935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 142935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalBufferPropertiesKHR( 143935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, 144935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalBufferPropertiesKHR* pExternalBufferProperties); 145935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 146935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphorePropertiesKHR( 147935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, 148935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties); 149935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 150935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalSemaphorePropertiesKHR( 151935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, 152935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties); 153935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 154935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFencePropertiesKHR( 155935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, 156935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalFencePropertiesKHR* pExternalFenceProperties); 157935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 158935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse WilsonVKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalFencePropertiesKHR( 159935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, 160935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson VkExternalFencePropertiesKHR* pExternalFenceProperties); 161935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson