diff fuhtark_test/include/winapi/subsmgr.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/include/winapi/subsmgr.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,517 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 440
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error This stub requires an updated version of <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif
+
+#ifndef __subsmgr_h__
+#define __subsmgr_h__
+
+#ifndef __IEnumItemProperties_FWD_DEFINED__
+#define __IEnumItemProperties_FWD_DEFINED__
+typedef struct IEnumItemProperties IEnumItemProperties;
+#endif
+
+#ifndef __ISubscriptionItem_FWD_DEFINED__
+#define __ISubscriptionItem_FWD_DEFINED__
+typedef struct ISubscriptionItem ISubscriptionItem;
+#endif
+
+#ifndef __IEnumSubscription_FWD_DEFINED__
+#define __IEnumSubscription_FWD_DEFINED__
+typedef struct IEnumSubscription IEnumSubscription;
+#endif
+
+#ifndef __ISubscriptionMgr_FWD_DEFINED__
+#define __ISubscriptionMgr_FWD_DEFINED__
+typedef struct ISubscriptionMgr ISubscriptionMgr;
+#endif
+
+#ifndef __ISubscriptionMgr2_FWD_DEFINED__
+#define __ISubscriptionMgr2_FWD_DEFINED__
+typedef struct ISubscriptionMgr2 ISubscriptionMgr2;
+#endif
+
+#ifndef __SubscriptionMgr_FWD_DEFINED__
+#define __SubscriptionMgr_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class SubscriptionMgr SubscriptionMgr;
+#else
+typedef struct SubscriptionMgr SubscriptionMgr;
+#endif
+#endif
+
+#include "unknwn.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __MIDL_user_allocate_free_DEFINED__
+#define __MIDL_user_allocate_free_DEFINED__
+  void *__RPC_API MIDL_user_allocate(size_t);
+  void __RPC_API MIDL_user_free(void *);
+#endif
+
+  typedef GUID SUBSCRIPTIONCOOKIE;
+
+  extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0000_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0000_v0_0_s_ifspec;
+
+#ifndef __IEnumItemProperties_INTERFACE_DEFINED__
+#define __IEnumItemProperties_INTERFACE_DEFINED__
+  typedef IEnumItemProperties *LPENUMITEMPROPERTIES;
+
+  typedef struct _tagITEMPROP {
+    VARIANT variantValue;
+    LPWSTR pwszName;
+  } ITEMPROP;
+
+  typedef struct _tagITEMPROP *LPITEMPROP;
+
+  EXTERN_C const IID IID_IEnumItemProperties;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IEnumItemProperties : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Next(ULONG celt,ITEMPROP *rgelt,ULONG *pceltFetched) = 0;
+    virtual HRESULT WINAPI Skip(ULONG celt) = 0;
+    virtual HRESULT WINAPI Reset(void) = 0;
+    virtual HRESULT WINAPI Clone(IEnumItemProperties **ppenum) = 0;
+    virtual HRESULT WINAPI GetCount(ULONG *pnCount) = 0;
+  };
+#else
+  typedef struct IEnumItemPropertiesVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IEnumItemProperties *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IEnumItemProperties *This);
+      ULONG (WINAPI *Release)(IEnumItemProperties *This);
+      HRESULT (WINAPI *Next)(IEnumItemProperties *This,ULONG celt,ITEMPROP *rgelt,ULONG *pceltFetched);
+      HRESULT (WINAPI *Skip)(IEnumItemProperties *This,ULONG celt);
+      HRESULT (WINAPI *Reset)(IEnumItemProperties *This);
+      HRESULT (WINAPI *Clone)(IEnumItemProperties *This,IEnumItemProperties **ppenum);
+      HRESULT (WINAPI *GetCount)(IEnumItemProperties *This,ULONG *pnCount);
+    END_INTERFACE
+  } IEnumItemPropertiesVtbl;
+  struct IEnumItemProperties {
+    CONST_VTBL struct IEnumItemPropertiesVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IEnumItemProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumItemProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumItemProperties_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumItemProperties_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumItemProperties_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumItemProperties_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumItemProperties_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IEnumItemProperties_GetCount(This,pnCount) (This)->lpVtbl->GetCount(This,pnCount)
+#endif
+#endif
+  HRESULT WINAPI IEnumItemProperties_Next_Proxy(IEnumItemProperties *This,ULONG celt,ITEMPROP *rgelt,ULONG *pceltFetched);
+  void __RPC_STUB IEnumItemProperties_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumItemProperties_Skip_Proxy(IEnumItemProperties *This,ULONG celt);
+  void __RPC_STUB IEnumItemProperties_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumItemProperties_Reset_Proxy(IEnumItemProperties *This);
+  void __RPC_STUB IEnumItemProperties_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumItemProperties_Clone_Proxy(IEnumItemProperties *This,IEnumItemProperties **ppenum);
+  void __RPC_STUB IEnumItemProperties_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumItemProperties_GetCount_Proxy(IEnumItemProperties *This,ULONG *pnCount);
+  void __RPC_STUB IEnumItemProperties_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define SI_TEMPORARY 0x80000000
+
+  extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0264_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0264_v0_0_s_ifspec;
+
+#ifndef __ISubscriptionItem_INTERFACE_DEFINED__
+#define __ISubscriptionItem_INTERFACE_DEFINED__
+  typedef ISubscriptionItem *LPSUBSCRIPTIONITEM;
+
+  typedef struct tagSUBSCRIPTIONITEMINFO {
+    ULONG cbSize;
+    DWORD dwFlags;
+    DWORD dwPriority;
+    SUBSCRIPTIONCOOKIE ScheduleGroup;
+    CLSID clsidAgent;
+  } SUBSCRIPTIONITEMINFO;
+
+  EXTERN_C const IID IID_ISubscriptionItem;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ISubscriptionItem : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetCookie(SUBSCRIPTIONCOOKIE *pCookie) = 0;
+    virtual HRESULT WINAPI GetSubscriptionItemInfo(SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo) = 0;
+    virtual HRESULT WINAPI SetSubscriptionItemInfo(const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo) = 0;
+    virtual HRESULT WINAPI ReadProperties(ULONG nCount,const LPCWSTR rgwszName[],VARIANT rgValue[]) = 0;
+    virtual HRESULT WINAPI WriteProperties(ULONG nCount,const LPCWSTR rgwszName[],const VARIANT rgValue[]) = 0;
+    virtual HRESULT WINAPI EnumProperties(IEnumItemProperties **ppEnumItemProperties) = 0;
+    virtual HRESULT WINAPI NotifyChanged(void) = 0;
+  };
+#else
+  typedef struct ISubscriptionItemVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ISubscriptionItem *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ISubscriptionItem *This);
+      ULONG (WINAPI *Release)(ISubscriptionItem *This);
+      HRESULT (WINAPI *GetCookie)(ISubscriptionItem *This,SUBSCRIPTIONCOOKIE *pCookie);
+      HRESULT (WINAPI *GetSubscriptionItemInfo)(ISubscriptionItem *This,SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo);
+      HRESULT (WINAPI *SetSubscriptionItemInfo)(ISubscriptionItem *This,const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo);
+      HRESULT (WINAPI *ReadProperties)(ISubscriptionItem *This,ULONG nCount,const LPCWSTR rgwszName[],VARIANT rgValue[]);
+      HRESULT (WINAPI *WriteProperties)(ISubscriptionItem *This,ULONG nCount,const LPCWSTR rgwszName[],const VARIANT rgValue[]);
+      HRESULT (WINAPI *EnumProperties)(ISubscriptionItem *This,IEnumItemProperties **ppEnumItemProperties);
+      HRESULT (WINAPI *NotifyChanged)(ISubscriptionItem *This);
+    END_INTERFACE
+  } ISubscriptionItemVtbl;
+  struct ISubscriptionItem {
+    CONST_VTBL struct ISubscriptionItemVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ISubscriptionItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISubscriptionItem_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISubscriptionItem_Release(This) (This)->lpVtbl->Release(This)
+#define ISubscriptionItem_GetCookie(This,pCookie) (This)->lpVtbl->GetCookie(This,pCookie)
+#define ISubscriptionItem_GetSubscriptionItemInfo(This,pSubscriptionItemInfo) (This)->lpVtbl->GetSubscriptionItemInfo(This,pSubscriptionItemInfo)
+#define ISubscriptionItem_SetSubscriptionItemInfo(This,pSubscriptionItemInfo) (This)->lpVtbl->SetSubscriptionItemInfo(This,pSubscriptionItemInfo)
+#define ISubscriptionItem_ReadProperties(This,nCount,rgwszName,rgValue) (This)->lpVtbl->ReadProperties(This,nCount,rgwszName,rgValue)
+#define ISubscriptionItem_WriteProperties(This,nCount,rgwszName,rgValue) (This)->lpVtbl->WriteProperties(This,nCount,rgwszName,rgValue)
+#define ISubscriptionItem_EnumProperties(This,ppEnumItemProperties) (This)->lpVtbl->EnumProperties(This,ppEnumItemProperties)
+#define ISubscriptionItem_NotifyChanged(This) (This)->lpVtbl->NotifyChanged(This)
+#endif
+#endif
+  HRESULT WINAPI ISubscriptionItem_GetCookie_Proxy(ISubscriptionItem *This,SUBSCRIPTIONCOOKIE *pCookie);
+  void __RPC_STUB ISubscriptionItem_GetCookie_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionItem_GetSubscriptionItemInfo_Proxy(ISubscriptionItem *This,SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo);
+  void __RPC_STUB ISubscriptionItem_GetSubscriptionItemInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionItem_SetSubscriptionItemInfo_Proxy(ISubscriptionItem *This,const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo);
+  void __RPC_STUB ISubscriptionItem_SetSubscriptionItemInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionItem_ReadProperties_Proxy(ISubscriptionItem *This,ULONG nCount,const LPCWSTR rgwszName[],VARIANT rgValue[]);
+  void __RPC_STUB ISubscriptionItem_ReadProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionItem_WriteProperties_Proxy(ISubscriptionItem *This,ULONG nCount,const LPCWSTR rgwszName[],const VARIANT rgValue[]);
+  void __RPC_STUB ISubscriptionItem_WriteProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionItem_EnumProperties_Proxy(ISubscriptionItem *This,IEnumItemProperties **ppEnumItemProperties);
+  void __RPC_STUB ISubscriptionItem_EnumProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionItem_NotifyChanged_Proxy(ISubscriptionItem *This);
+  void __RPC_STUB ISubscriptionItem_NotifyChanged_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IEnumSubscription_INTERFACE_DEFINED__
+#define __IEnumSubscription_INTERFACE_DEFINED__
+  typedef IEnumSubscription *LPENUMSUBSCRIPTION;
+
+  EXTERN_C const IID IID_IEnumSubscription;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IEnumSubscription : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Next(ULONG celt,SUBSCRIPTIONCOOKIE *rgelt,ULONG *pceltFetched) = 0;
+    virtual HRESULT WINAPI Skip(ULONG celt) = 0;
+    virtual HRESULT WINAPI Reset(void) = 0;
+    virtual HRESULT WINAPI Clone(IEnumSubscription **ppenum) = 0;
+    virtual HRESULT WINAPI GetCount(ULONG *pnCount) = 0;
+  };
+#else
+  typedef struct IEnumSubscriptionVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IEnumSubscription *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IEnumSubscription *This);
+      ULONG (WINAPI *Release)(IEnumSubscription *This);
+      HRESULT (WINAPI *Next)(IEnumSubscription *This,ULONG celt,SUBSCRIPTIONCOOKIE *rgelt,ULONG *pceltFetched);
+      HRESULT (WINAPI *Skip)(IEnumSubscription *This,ULONG celt);
+      HRESULT (WINAPI *Reset)(IEnumSubscription *This);
+      HRESULT (WINAPI *Clone)(IEnumSubscription *This,IEnumSubscription **ppenum);
+      HRESULT (WINAPI *GetCount)(IEnumSubscription *This,ULONG *pnCount);
+    END_INTERFACE
+  } IEnumSubscriptionVtbl;
+  struct IEnumSubscription {
+    CONST_VTBL struct IEnumSubscriptionVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IEnumSubscription_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumSubscription_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSubscription_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumSubscription_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumSubscription_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumSubscription_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSubscription_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IEnumSubscription_GetCount(This,pnCount) (This)->lpVtbl->GetCount(This,pnCount)
+#endif
+#endif
+  HRESULT WINAPI IEnumSubscription_Next_Proxy(IEnumSubscription *This,ULONG celt,SUBSCRIPTIONCOOKIE *rgelt,ULONG *pceltFetched);
+  void __RPC_STUB IEnumSubscription_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumSubscription_Skip_Proxy(IEnumSubscription *This,ULONG celt);
+  void __RPC_STUB IEnumSubscription_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumSubscription_Reset_Proxy(IEnumSubscription *This);
+  void __RPC_STUB IEnumSubscription_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumSubscription_Clone_Proxy(IEnumSubscription *This,IEnumSubscription **ppenum);
+  void __RPC_STUB IEnumSubscription_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumSubscription_GetCount_Proxy(IEnumSubscription *This,ULONG *pnCount);
+  void __RPC_STUB IEnumSubscription_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __SubscriptionMgr_LIBRARY_DEFINED__
+#define __SubscriptionMgr_LIBRARY_DEFINED__
+  EXTERN_C const IID LIBID_SubscriptionMgr;
+#ifndef __ISubscriptionMgr_INTERFACE_DEFINED__
+#define __ISubscriptionMgr_INTERFACE_DEFINED__
+  typedef enum SUBSCRIPTIONTYPE {
+    SUBSTYPE_URL = 0,SUBSTYPE_CHANNEL = 1,SUBSTYPE_DESKTOPURL = 2,SUBSTYPE_EXTERNAL = 3,SUBSTYPE_DESKTOPCHANNEL = 4
+  } SUBSCRIPTIONTYPE;
+
+  typedef enum SUBSCRIPTIONINFOFLAGS {
+    SUBSINFO_SCHEDULE = 0x1,SUBSINFO_RECURSE = 0x2,SUBSINFO_WEBCRAWL = 0x4,SUBSINFO_MAILNOT = 0x8,
+    SUBSINFO_MAXSIZEKB = 0x10,SUBSINFO_USER = 0x20,SUBSINFO_PASSWORD = 0x40,SUBSINFO_TASKFLAGS = 0x100,
+    SUBSINFO_GLEAM = 0x200,SUBSINFO_CHANGESONLY = 0x400,SUBSINFO_CHANNELFLAGS = 0x800,SUBSINFO_FRIENDLYNAME = 0x2000,
+    SUBSINFO_NEEDPASSWORD = 0x4000,SUBSINFO_TYPE = 0x8000
+  } SUBSCRIPTIONINFOFLAGS;
+
+#define SUBSINFO_ALLFLAGS 0x0000EF7F
+
+  typedef enum CREATESUBSCRIPTIONFLAGS {
+    CREATESUBS_ADDTOFAVORITES = 0x1,CREATESUBS_FROMFAVORITES = 0x2,CREATESUBS_NOUI = 0x4,CREATESUBS_NOSAVE = 0x8,
+    CREATESUBS_SOFTWAREUPDATE = 0x10
+  } CREATESUBSCRIPTIONFLAGS;
+
+  typedef enum SUBSCRIPTIONSCHEDULE {
+    SUBSSCHED_AUTO = 0,SUBSSCHED_DAILY = 1,SUBSSCHED_WEEKLY = 2,SUBSSCHED_CUSTOM = 3,SUBSSCHED_MANUAL = 4
+  } SUBSCRIPTIONSCHEDULE;
+
+  typedef struct _tagSubscriptionInfo {
+    DWORD cbSize;
+    DWORD fUpdateFlags;
+    SUBSCRIPTIONSCHEDULE schedule;
+    CLSID customGroupCookie;
+    LPVOID pTrigger;
+    DWORD dwRecurseLevels;
+    DWORD fWebcrawlerFlags;
+    WINBOOL bMailNotification;
+    WINBOOL bGleam;
+    WINBOOL bChangesOnly;
+    WINBOOL bNeedPassword;
+    DWORD fChannelFlags;
+    BSTR bstrUserName;
+    BSTR bstrPassword;
+    BSTR bstrFriendlyName;
+    DWORD dwMaxSizeKB;
+    SUBSCRIPTIONTYPE subType;
+    DWORD fTaskFlags;
+    DWORD dwReserved;
+  } SUBSCRIPTIONINFO;
+
+  typedef struct _tagSubscriptionInfo *LPSUBSCRIPTIONINFO;
+  typedef struct _tagSubscriptionInfo *PSUBSCRIPTIONINFO;
+
+  EXTERN_C const IID IID_ISubscriptionMgr;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ISubscriptionMgr : public IUnknown {
+  public:
+    virtual HRESULT WINAPI DeleteSubscription(LPCWSTR pwszURL,HWND hwnd) = 0;
+    virtual HRESULT WINAPI UpdateSubscription(LPCWSTR pwszURL) = 0;
+    virtual HRESULT WINAPI UpdateAll(void) = 0;
+    virtual HRESULT WINAPI IsSubscribed(LPCWSTR pwszURL,WINBOOL *pfSubscribed) = 0;
+    virtual HRESULT WINAPI GetSubscriptionInfo(LPCWSTR pwszURL,SUBSCRIPTIONINFO *pInfo) = 0;
+    virtual HRESULT WINAPI GetDefaultInfo(SUBSCRIPTIONTYPE subType,SUBSCRIPTIONINFO *pInfo) = 0;
+    virtual HRESULT WINAPI ShowSubscriptionProperties(LPCWSTR pwszURL,HWND hwnd) = 0;
+    virtual HRESULT WINAPI CreateSubscription(HWND hwnd,LPCWSTR pwszURL,LPCWSTR pwszFriendlyName,DWORD dwFlags,SUBSCRIPTIONTYPE subsType,SUBSCRIPTIONINFO *pInfo) = 0;
+  };
+#else
+  typedef struct ISubscriptionMgrVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ISubscriptionMgr *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ISubscriptionMgr *This);
+      ULONG (WINAPI *Release)(ISubscriptionMgr *This);
+      HRESULT (WINAPI *DeleteSubscription)(ISubscriptionMgr *This,LPCWSTR pwszURL,HWND hwnd);
+      HRESULT (WINAPI *UpdateSubscription)(ISubscriptionMgr *This,LPCWSTR pwszURL);
+      HRESULT (WINAPI *UpdateAll)(ISubscriptionMgr *This);
+      HRESULT (WINAPI *IsSubscribed)(ISubscriptionMgr *This,LPCWSTR pwszURL,WINBOOL *pfSubscribed);
+      HRESULT (WINAPI *GetSubscriptionInfo)(ISubscriptionMgr *This,LPCWSTR pwszURL,SUBSCRIPTIONINFO *pInfo);
+      HRESULT (WINAPI *GetDefaultInfo)(ISubscriptionMgr *This,SUBSCRIPTIONTYPE subType,SUBSCRIPTIONINFO *pInfo);
+      HRESULT (WINAPI *ShowSubscriptionProperties)(ISubscriptionMgr *This,LPCWSTR pwszURL,HWND hwnd);
+      HRESULT (WINAPI *CreateSubscription)(ISubscriptionMgr *This,HWND hwnd,LPCWSTR pwszURL,LPCWSTR pwszFriendlyName,DWORD dwFlags,SUBSCRIPTIONTYPE subsType,SUBSCRIPTIONINFO *pInfo);
+    END_INTERFACE
+  } ISubscriptionMgrVtbl;
+  struct ISubscriptionMgr {
+    CONST_VTBL struct ISubscriptionMgrVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ISubscriptionMgr_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISubscriptionMgr_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISubscriptionMgr_Release(This) (This)->lpVtbl->Release(This)
+#define ISubscriptionMgr_DeleteSubscription(This,pwszURL,hwnd) (This)->lpVtbl->DeleteSubscription(This,pwszURL,hwnd)
+#define ISubscriptionMgr_UpdateSubscription(This,pwszURL) (This)->lpVtbl->UpdateSubscription(This,pwszURL)
+#define ISubscriptionMgr_UpdateAll(This) (This)->lpVtbl->UpdateAll(This)
+#define ISubscriptionMgr_IsSubscribed(This,pwszURL,pfSubscribed) (This)->lpVtbl->IsSubscribed(This,pwszURL,pfSubscribed)
+#define ISubscriptionMgr_GetSubscriptionInfo(This,pwszURL,pInfo) (This)->lpVtbl->GetSubscriptionInfo(This,pwszURL,pInfo)
+#define ISubscriptionMgr_GetDefaultInfo(This,subType,pInfo) (This)->lpVtbl->GetDefaultInfo(This,subType,pInfo)
+#define ISubscriptionMgr_ShowSubscriptionProperties(This,pwszURL,hwnd) (This)->lpVtbl->ShowSubscriptionProperties(This,pwszURL,hwnd)
+#define ISubscriptionMgr_CreateSubscription(This,hwnd,pwszURL,pwszFriendlyName,dwFlags,subsType,pInfo) (This)->lpVtbl->CreateSubscription(This,hwnd,pwszURL,pwszFriendlyName,dwFlags,subsType,pInfo)
+#endif
+#endif
+  HRESULT WINAPI ISubscriptionMgr_DeleteSubscription_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL,HWND hwnd);
+  void __RPC_STUB ISubscriptionMgr_DeleteSubscription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr_UpdateSubscription_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL);
+  void __RPC_STUB ISubscriptionMgr_UpdateSubscription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr_UpdateAll_Proxy(ISubscriptionMgr *This);
+  void __RPC_STUB ISubscriptionMgr_UpdateAll_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr_IsSubscribed_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL,WINBOOL *pfSubscribed);
+  void __RPC_STUB ISubscriptionMgr_IsSubscribed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr_GetSubscriptionInfo_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL,SUBSCRIPTIONINFO *pInfo);
+  void __RPC_STUB ISubscriptionMgr_GetSubscriptionInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr_GetDefaultInfo_Proxy(ISubscriptionMgr *This,SUBSCRIPTIONTYPE subType,SUBSCRIPTIONINFO *pInfo);
+  void __RPC_STUB ISubscriptionMgr_GetDefaultInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr_ShowSubscriptionProperties_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL,HWND hwnd);
+  void __RPC_STUB ISubscriptionMgr_ShowSubscriptionProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr_CreateSubscription_Proxy(ISubscriptionMgr *This,HWND hwnd,LPCWSTR pwszURL,LPCWSTR pwszFriendlyName,DWORD dwFlags,SUBSCRIPTIONTYPE subsType,SUBSCRIPTIONINFO *pInfo);
+  void __RPC_STUB ISubscriptionMgr_CreateSubscription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __ISubscriptionMgr2_INTERFACE_DEFINED__
+#define __ISubscriptionMgr2_INTERFACE_DEFINED__
+
+#define RS_READY 0x00000001
+#define RS_SUSPENDED 0x00000002
+#define RS_UPDATING 0x00000004
+#define RS_SUSPENDONIDLE 0x00010000
+#define RS_MAYBOTHERUSER 0x00020000
+#define RS_COMPLETED 0x80000000
+
+#define SUBSMGRUPDATE_MINIMIZE 0x00000001
+#define SUBSMGRUPDATE_MASK 0x00000001
+#define SUBSMGRENUM_TEMP 0x00000001
+#define SUBSMGRENUM_MASK 0x00000001
+
+  EXTERN_C const IID IID_ISubscriptionMgr2;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ISubscriptionMgr2 : public ISubscriptionMgr {
+  public:
+    virtual HRESULT WINAPI GetItemFromURL(LPCWSTR pwszURL,ISubscriptionItem **ppSubscriptionItem) = 0;
+    virtual HRESULT WINAPI GetItemFromCookie(const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,ISubscriptionItem **ppSubscriptionItem) = 0;
+    virtual HRESULT WINAPI GetSubscriptionRunState(DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies,DWORD *pdwRunState) = 0;
+    virtual HRESULT WINAPI EnumSubscriptions(DWORD dwFlags,IEnumSubscription **ppEnumSubscriptions) = 0;
+    virtual HRESULT WINAPI UpdateItems(DWORD dwFlags,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies) = 0;
+    virtual HRESULT WINAPI AbortItems(DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies) = 0;
+    virtual HRESULT WINAPI AbortAll(void) = 0;
+  };
+#else
+  typedef struct ISubscriptionMgr2Vtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ISubscriptionMgr2 *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ISubscriptionMgr2 *This);
+      ULONG (WINAPI *Release)(ISubscriptionMgr2 *This);
+      HRESULT (WINAPI *DeleteSubscription)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,HWND hwnd);
+      HRESULT (WINAPI *UpdateSubscription)(ISubscriptionMgr2 *This,LPCWSTR pwszURL);
+      HRESULT (WINAPI *UpdateAll)(ISubscriptionMgr2 *This);
+      HRESULT (WINAPI *IsSubscribed)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,WINBOOL *pfSubscribed);
+      HRESULT (WINAPI *GetSubscriptionInfo)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,SUBSCRIPTIONINFO *pInfo);
+      HRESULT (WINAPI *GetDefaultInfo)(ISubscriptionMgr2 *This,SUBSCRIPTIONTYPE subType,SUBSCRIPTIONINFO *pInfo);
+      HRESULT (WINAPI *ShowSubscriptionProperties)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,HWND hwnd);
+      HRESULT (WINAPI *CreateSubscription)(ISubscriptionMgr2 *This,HWND hwnd,LPCWSTR pwszURL,LPCWSTR pwszFriendlyName,DWORD dwFlags,SUBSCRIPTIONTYPE subsType,SUBSCRIPTIONINFO *pInfo);
+      HRESULT (WINAPI *GetItemFromURL)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,ISubscriptionItem **ppSubscriptionItem);
+      HRESULT (WINAPI *GetItemFromCookie)(ISubscriptionMgr2 *This,const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,ISubscriptionItem **ppSubscriptionItem);
+      HRESULT (WINAPI *GetSubscriptionRunState)(ISubscriptionMgr2 *This,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies,DWORD *pdwRunState);
+      HRESULT (WINAPI *EnumSubscriptions)(ISubscriptionMgr2 *This,DWORD dwFlags,IEnumSubscription **ppEnumSubscriptions);
+      HRESULT (WINAPI *UpdateItems)(ISubscriptionMgr2 *This,DWORD dwFlags,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies);
+      HRESULT (WINAPI *AbortItems)(ISubscriptionMgr2 *This,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies);
+      HRESULT (WINAPI *AbortAll)(ISubscriptionMgr2 *This);
+    END_INTERFACE
+  } ISubscriptionMgr2Vtbl;
+  struct ISubscriptionMgr2 {
+    CONST_VTBL struct ISubscriptionMgr2Vtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ISubscriptionMgr2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ISubscriptionMgr2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ISubscriptionMgr2_Release(This) (This)->lpVtbl->Release(This)
+#define ISubscriptionMgr2_DeleteSubscription(This,pwszURL,hwnd) (This)->lpVtbl->DeleteSubscription(This,pwszURL,hwnd)
+#define ISubscriptionMgr2_UpdateSubscription(This,pwszURL) (This)->lpVtbl->UpdateSubscription(This,pwszURL)
+#define ISubscriptionMgr2_UpdateAll(This) (This)->lpVtbl->UpdateAll(This)
+#define ISubscriptionMgr2_IsSubscribed(This,pwszURL,pfSubscribed) (This)->lpVtbl->IsSubscribed(This,pwszURL,pfSubscribed)
+#define ISubscriptionMgr2_GetSubscriptionInfo(This,pwszURL,pInfo) (This)->lpVtbl->GetSubscriptionInfo(This,pwszURL,pInfo)
+#define ISubscriptionMgr2_GetDefaultInfo(This,subType,pInfo) (This)->lpVtbl->GetDefaultInfo(This,subType,pInfo)
+#define ISubscriptionMgr2_ShowSubscriptionProperties(This,pwszURL,hwnd) (This)->lpVtbl->ShowSubscriptionProperties(This,pwszURL,hwnd)
+#define ISubscriptionMgr2_CreateSubscription(This,hwnd,pwszURL,pwszFriendlyName,dwFlags,subsType,pInfo) (This)->lpVtbl->CreateSubscription(This,hwnd,pwszURL,pwszFriendlyName,dwFlags,subsType,pInfo)
+#define ISubscriptionMgr2_GetItemFromURL(This,pwszURL,ppSubscriptionItem) (This)->lpVtbl->GetItemFromURL(This,pwszURL,ppSubscriptionItem)
+#define ISubscriptionMgr2_GetItemFromCookie(This,pSubscriptionCookie,ppSubscriptionItem) (This)->lpVtbl->GetItemFromCookie(This,pSubscriptionCookie,ppSubscriptionItem)
+#define ISubscriptionMgr2_GetSubscriptionRunState(This,dwNumCookies,pCookies,pdwRunState) (This)->lpVtbl->GetSubscriptionRunState(This,dwNumCookies,pCookies,pdwRunState)
+#define ISubscriptionMgr2_EnumSubscriptions(This,dwFlags,ppEnumSubscriptions) (This)->lpVtbl->EnumSubscriptions(This,dwFlags,ppEnumSubscriptions)
+#define ISubscriptionMgr2_UpdateItems(This,dwFlags,dwNumCookies,pCookies) (This)->lpVtbl->UpdateItems(This,dwFlags,dwNumCookies,pCookies)
+#define ISubscriptionMgr2_AbortItems(This,dwNumCookies,pCookies) (This)->lpVtbl->AbortItems(This,dwNumCookies,pCookies)
+#define ISubscriptionMgr2_AbortAll(This) (This)->lpVtbl->AbortAll(This)
+#endif
+#endif
+  HRESULT WINAPI ISubscriptionMgr2_GetItemFromURL_Proxy(ISubscriptionMgr2 *This,LPCWSTR pwszURL,ISubscriptionItem **ppSubscriptionItem);
+  void __RPC_STUB ISubscriptionMgr2_GetItemFromURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr2_GetItemFromCookie_Proxy(ISubscriptionMgr2 *This,const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,ISubscriptionItem **ppSubscriptionItem);
+  void __RPC_STUB ISubscriptionMgr2_GetItemFromCookie_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr2_GetSubscriptionRunState_Proxy(ISubscriptionMgr2 *This,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies,DWORD *pdwRunState);
+  void __RPC_STUB ISubscriptionMgr2_GetSubscriptionRunState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr2_EnumSubscriptions_Proxy(ISubscriptionMgr2 *This,DWORD dwFlags,IEnumSubscription **ppEnumSubscriptions);
+  void __RPC_STUB ISubscriptionMgr2_EnumSubscriptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr2_UpdateItems_Proxy(ISubscriptionMgr2 *This,DWORD dwFlags,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies);
+  void __RPC_STUB ISubscriptionMgr2_UpdateItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr2_AbortItems_Proxy(ISubscriptionMgr2 *This,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies);
+  void __RPC_STUB ISubscriptionMgr2_AbortItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ISubscriptionMgr2_AbortAll_Proxy(ISubscriptionMgr2 *This);
+  void __RPC_STUB ISubscriptionMgr2_AbortAll_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  EXTERN_C const CLSID CLSID_SubscriptionMgr;
+#ifdef __cplusplus
+  class SubscriptionMgr;
+#endif
+#endif
+
+  EXTERN_C const CLSID CLSID_WebCrawlerAgent;
+  EXTERN_C const CLSID CLSID_ChannelAgent;
+  EXTERN_C const CLSID CLSID_DialAgent;
+  EXTERN_C const CLSID CLSID_CDLAgent;
+  typedef enum DELIVERY_AGENT_FLAGS {
+    DELIVERY_AGENT_FLAG_NO_BROADCAST = 0x4,DELIVERY_AGENT_FLAG_NO_RESTRICTIONS = 0x8,DELIVERY_AGENT_FLAG_SILENT_DIAL = 0x10
+  } DELIVERY_AGENT_FLAGS;
+
+  typedef enum WEBCRAWL_RECURSEFLAGS {
+    WEBCRAWL_DONT_MAKE_STICKY = 0x1,WEBCRAWL_GET_IMAGES = 0x2,WEBCRAWL_GET_VIDEOS = 0x4,WEBCRAWL_GET_BGSOUNDS = 0x8,WEBCRAWL_GET_CONTROLS = 0x10,
+    WEBCRAWL_LINKS_ELSEWHERE = 0x20,WEBCRAWL_IGNORE_ROBOTSTXT = 0x80,WEBCRAWL_ONLY_LINKS_TO_HTML = 0x100
+  } WEBCRAWL_RECURSEFLAGS;
+
+  typedef enum CHANNEL_AGENT_FLAGS {
+    CHANNEL_AGENT_DYNAMIC_SCHEDULE = 0x1,CHANNEL_AGENT_PRECACHE_SOME = 0x2,CHANNEL_AGENT_PRECACHE_ALL = 0x4,CHANNEL_AGENT_PRECACHE_SCRNSAVER = 0x8
+  } CHANNEL_AGENT_FLAGS;
+
+#define INET_E_AGENT_MAX_SIZE_EXCEEDED _HRESULT_TYPEDEF_(0x800C0F80L)
+#define INET_S_AGENT_PART_FAIL _HRESULT_TYPEDEF_(0x000C0F81L)
+#define INET_E_AGENT_CACHE_SIZE_EXCEEDED _HRESULT_TYPEDEF_(0x800C0F82L)
+#define INET_E_AGENT_CONNECTION_FAILED _HRESULT_TYPEDEF_(0x800C0F83L)
+#define INET_E_SCHEDULED_UPDATES_DISABLED _HRESULT_TYPEDEF_(0x800C0F84L)
+#define INET_E_SCHEDULED_UPDATES_RESTRICTED _HRESULT_TYPEDEF_(0x800C0F85L)
+#define INET_E_SCHEDULED_UPDATE_INTERVAL _HRESULT_TYPEDEF_(0x800C0F86L)
+#define INET_E_SCHEDULED_EXCLUDE_RANGE _HRESULT_TYPEDEF_(0x800C0F87L)
+#define INET_E_AGENT_EXCEEDING_CACHE_SIZE _HRESULT_TYPEDEF_(0x800C0F90L)
+#define INET_S_AGENT_INCREASED_CACHE_SIZE _HRESULT_TYPEDEF_(0x000C0F90L)
+
+  extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0268_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0268_v0_0_s_ifspec;
+
+  unsigned long __RPC_API VARIANT_UserSize(unsigned long *,unsigned long,VARIANT *);
+  unsigned char *__RPC_API VARIANT_UserMarshal(unsigned long *,unsigned char *,VARIANT *);
+  unsigned char *__RPC_API VARIANT_UserUnmarshal(unsigned long *,unsigned char *,VARIANT *);
+  void __RPC_API VARIANT_UserFree(unsigned long *,VARIANT *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif