n      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None /023459:;<=?@ABDFIJKNOQRT((c) Daan Leijen, leijen@@fwi.uva.nl 1998/BSD-style (see the file libraries/base/LICENSE)sof@forkIO.com provisionalportableNone /023459:;<=?@ABDFIJKNOQRTUse > when the allocated chunk have a limited and known lifetime.    +(c) Sigbjorn Finne, sof@dcs.gla.ac.uk 1999 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$%&'()*+,-./0123456789:;<=#>?@ABCDEFGHIJKLMNO"PQRST! UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~5None /023459:;<=?@ABDFIJKNOQRTNone /023459:;<=?@ABDFIJKNOQRT      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*+)(VWXYZ[&'"#$%\] !^_`abcUdTeSfRgQhPiOjNkMlLmKnJoIpHqGrFsEtuv  wxy   z{|}~DCBA@?>=<;:9876543210/.-,      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) 2009, Sigbjorn Finne 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT Com_Exception is either an  or "4; no attempt is made to embed one inside the other.act  (ex -> hdlr ex) performs the IO action act', but catches any IO or COM exceptions ex, passing them to the handler hdlr. throwIOComException ex raises/throws the exception ex; ex is either an  or a ". check2HR hr* triggers a COM exception if the HRESULT hr+ represent an error condition. The current  last errorF value embedded in the exception gives more information about cause.checkBool mbZero raises a COM exception if mbZero is equal to...zero. The  last error" is embedded inside the exception. returnHR act runs the IO action act, catching any COM exceptions. Success or failure is then mapped back into the corresponding HRESULT. In the case of success, . isCoError e returns True for COM exceptions; False for IO exception values.coGetException ei picks out the COM exception ei , if one.coGetException ei6 picks out the COM HRESULT from the exception, if any.coGetException ei1 returns a user-friendlier representation of the ei exception. An alias to . coFail msg raised the E_FAIL2 COM exception along with the descriptive string msg.s_OK and s_FALSE# are the boolean values encoded as (s.s_OK and s_FALSE# are the boolean values encoded as (s.I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+(c) Sigbjorn Finne, sof@dcs.gla.ac.uk 1999 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT&Representation of IIDhs: Give the interface identifier a type parameter, so that when we come to define the Haskell type of IUnknown.QueryInterface()5 we can rely on the type checker to ensure that the IID passed to QueryInterfaceW agrees with the interface at which we're using the interface pointer that's returnedGUID. is the Haskell representation for COM GUIDs. -Type libraries are identified by a GUID, the LIBID.ProgID,s are represented in Haskell as mere stringsThe CLSCTX enumeration is used by comCreateInstanceY to specify execution context in which we'd like to component to be created (just use  AnyProcess if you're not too fussed..)The # operator permits OO-style method application with do syntax:  obj # method arg1 arg2 is equivalent to method arg1 arg2 obj;, so this assumes that the COM method wrappers takes the this) pointer as the last argument. Which the HDirect\ generated wrappers do and the various base method provided by this COM+Automation library.A variation on (#) where the this pointer is an action returning an object reference rather than the reference itself. Sometimes useful when you create one-off objects and call methods on them: ' (createObject arg1) ## startUp arg2 instead of the wieldier, c obj <- createObject arg1 obj # startUp arg2 or createObject arg1 >>= (startUp arg2) coCreateInstance: is the basic COM way of creating components. It takes a S, an interface to aggregate on, a process context and an IID to create an object: I coCreateInstance clsidAgentServer interfaceNULL LocalProcess iidIAgent  createObject$ creates an object from its progID:  createObject  Agent.Server.  getObjectJ creates an object from its progID and initializes it with a given file: getObject "spreadsheet.exl" Excel.Application. If the filename is empty,  getObject calls getActiveObject. getActiveObjectD tries to connect to an already running instance of the component: getActiveObject Word.Application.  getFileObjectK opens a file or url and loads the associated or persistent object in it: getFileObject "spreadsheet.spd". coCreateInstancep is the basic com way of creating components. It takes a CLSID, process context and IID to create an object: @coCreateInstance clsidAgentServer Nothing LocalProcess iidIAgent.NOTE: prepend co' to specify the initial IID, otherwise  iidIDispatch is used (see  for more). Get Object from File and ProgID.5Look up and activate the given active/running object.Bind to an object via its moniker string or display name. coRun actZ is the toplevel action combinator to wrap up your COM actions in. Takes care of calling K (and un-initialize) for you.coPerformIO act runs act} within an exception handler that catches and displays any COM API errors in a message box. For debugging purposes, mostly. printMessage val shows val in a message box. putMessage str displays str9 in an informational message box containing an OK button. messageBox msg title flg? displays a message box with the given title and content. The flg0 parameter is the bit pattern that makes up the MB_*G settings you want to use (cf. underlying Win32 API documentation for  MessageBox.) outputDebugString str adds an +invokeIt ( methPtr ip -> action) offset obj> sets up a vtbl-indexed COM call, unmarshalling and indexing obj~ before passing it along to the method argument. The first argument is typically an FFI wrapped call to a function pointer (methPtr here). coFree ptrV releases storage that has been allocated via the COM task allocator; explicitly via coAllocB or indirectly via the APIs that handed the pointer to your code. coAlloc sz allocates sz bytes from the COM task allocator, returning a pointer. The onus is on the caller to constrain the type of that pointer to capture what the allocated memory points to.clsidFromProgID progid looks up a ProgID0 and tries to translate it into its registered CLSID . Raises an IO exception if the ProgID isn't known. progIDFromCLSID cid is the dual clsidFromProgID2, attempting to translate in the other direction."$Representing interface pointers via  IUnknown a, where a is the particular IUnknown-extended interface, e.g., IUnknown IDispatch_. If the interface pointer is just IUnknown, use  IUnknown ().Extend this to IID;s and parameterize them over the interface they represent.# castIface obj performs a type$ interfaceNULL is the NULL interface pointer.%isNullInterface iptr returns True iff iptr is the NULL pointer.&The null interface'queryInterface iid iunk queries iunk if it supports the iidA interface, returning it. Notice that the type parameter to the IID matches up with that of the resulting interface pointer, giving you type safety - i.e., you can only use the interface pointer with methods supported by that interface ( addRef iptr8 increases the reference count of the interface pointer iptr. Notice that interface pointers are managed and finalized when on the Haskell heap, so manual reference counting is not required (and not encouraged as it could prevent the underlying object from being properly released, should you forget to decrement the ref count with release.)) addRef iptr9 decrements the reference count of the interface pointer iptr.,newGUID generates a new unique GUID./hA version of the GUID marshaller which copies rather than hands back a pointer to the (immutable) GUID.0unmarshallGUID finalize ptrE unpacks a pointer to an incoming GUID, wrapping it up as a Haskell . If finalize is Trueb, the GUID is assumed allocated via the COM task allocator and will be freed/finalized when the  becomes garbage.1writeGUID ptr g packs the Haskell F into the pointer; that is, it writes a pointer to the GUID value to ptr( -- no copying of underlying structure.47stringToGUID "{00000000-0000-0000-C000-0000 0000 0046}"D translates the COM string representation for GUIDs into an actual  value.stringFromGUID g converts the  g% into the COM string representation &{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}`wEquality of interface pointers is defined by the COM spec as being equality of IUnknown (pointers to) implementations.      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a     "#$%()*VWYZ[`a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ*)"$%&'()*KL+,45-68>:;79?<=!(VZ[a"#$%`     TRUS      WYNPQO#.012/3@ADCMBEFIHJGVZWXY}       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a10None /023459:;<=?@ABDFIJKNOQRT;efghijklmnopqrstuvwxyz{|}~0efghijklmnopqrstuvwxyz{|}~0~}zy{|vuwxrqmnoplkjistfegh4efghijklmnopqrstuvwxyz{|}~ None /023459:;<=?@ABDFIJKNOQRTRQR"0 None /023459:;<=?@ABDFIJKNOQRT6     6     6     2      None /023459:;<=?@ABDFIJKNOQRTl !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~l !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~l#$"STUVWXYZ[RQ\! ]P^O_N`MaLbKcJdIeHfGgFhEiDjCkBlAm@n?o>p=q<r;s:t9u8v7w6x5y4z3{2|1}0~/.-,+*)('&%j !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (c) Daan Leijen <leijen@fwi.uva.nl>, Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99, Sigbjorn Finne <sigbjorn.finne@gmail.com> 2000-2009 0BSD-style (see the file libraries/base/LICENSE)  Sigbjorn Finne <sof@forkIO.com>  provisional  portable None /023459:;<=?@ABDFIJKNOQRT  ArgInOut a b is the general 'in-out'/ parameter marshaller and result unmarshaller.ArgOut a represent an in-out Automation parameter, pairing a marshaller with an unmarshaller for some type. Notice that the input value being marshalled may not have the same type as the output/result value being unmarshalled.ArgRes is the " unmarshaller for results of type a, where is one of the  supported types.ArgIn is the extension of , returning a  marshaller for some -supported value of type a.VarRes is the unmarshaller for 'Variant results; a function that takes (a pointer to) the VARIANT result and unscrambles its contents into the Haskell value representing that  result.VarIn is the marshaller for m arguments; a function that takes (a pointer to) a VARIANT structure and fills it in with value it encodes. Automation ; functions or properties are identified by either name or !X. The latter saving you from having to do a method name resolution for each invocation.createObject progid$ is the Haskell equivalent of VB's  CreateObject8, trying to instantiate a new Automation object via an  interfac pointer.getMemberID memberName obj translates the  memberName string into the unique !K representing that method/property. If unknown, a COM exception is raised.      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&     "#$%()*VWYZ[`a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ!"TUVWXYZ[gkmov      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~xT !"UVWXYZ[    !"#$%&,-./012345'()*+6789:;<=>?@ABCDEFGHIJKLMNYZ[\]OPQRSTUVWX^_`abcdefgstuvwxyz{|}~hijklnopqr gkmovma0       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None /023459:;<=?@ABDFIJKNOQRT?      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcfdeghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789?"#$%def!  ghijkl    mnopqrstuvwxyz{|}~FEDCBvwxyz{|}~A@ghijklmnopqrstu?>bcdef^_`a]Z[\YWXVUcba`_^]\[ZYXWVUTSSTRQRQPONOPNMMKLJIGHFE>?@ABCD:;<=9LK7865JIHGFEDC B A @ ? >=<;:983421765432 1!0"#/0.$)*+,-=<#$%&'(;:" !%&'(/)*.+-,,-./+0*1)234(567     8'9&q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF/(c) Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT( is used by both the class factory and C to check whether the component implements a particular interface.S         L    MN OP   QR S   TUVWXY Z[      ! " # $\] %^_ & ' ( ) * + , - . / 0 1 2 3 4` 5aLMNOPQRSTUVWXYZ[\]^_`aWX`aYZ[\]^_NMOLTUVSRQPC          L      MN OP   QR S   TUVWXY Z[      ! " # $\] %^_ & ' ( ) * + , - . / 0 1 2 3 4` 5a/(c) Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT 6 7 8 9 : ; < =b > ?c @bccb 6 7 8 9 : ; < =b > ?c @/(c) Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT A6The (internal) state maintained by each instance of a ComDll wrapper:j.(( path final iid -> IO obj)::ComponentFactory2 is the component-specific object factory method:pathO is the path to the DLL implementing the component (useful for TLB lookup etc.)final' is finalization action for the object.iid is the IID to create object at.obj* is the newly created object at interface iid.kThe information an implementation of a Haskell COM component needs to supply in order to hook into the machinery provided by System.Win32.Com.DllC for interfacing to how COM does activation for in-proc components*To create one or more, you pass them into |..mthe object factory method.nIO action to call when the othe display name.p5the programmatic/VB ID string (versioned, if needed.)qand without version info.rTrue if backed by a TLB.s2action to run when (un)registering this component.tthe CLSID; required, of course.uwithProgID p ci& returns a new ComponentInfo based on ci , but with  set to p.vonRegister act ci& returns a new ComponentInfo based on ci), but with the (un)registration action extended with act.wonFinalize act ci& returns a new ComponentInfo based on ci%, but with the finalization action extended with act.xwithVerProgID vp ci& returns a new ComponentInfo based on ci!, but with version-independent  set to vp. BwithFinalizer act ci& returns a new ComponentInfo based on ci), but with its finalizer action set to act.ywithComponentName nm ci returns a new k based on ci, but with its name set to nm.z hasTypeLib ci returns a new k based on ci , but being type library backed.{The mkComponentInfo< used to lessen the reliance on concrete representation of k. CnewComDllState h cis@ creates the internal representation of a Haskell COM component|createIComDll hMod cisW creates the method table for an inproc server supporting the components specified by ciso. The method table would then be wrapped up by a Haskell DLL wrapper supporting the in-proc DLL entry points.}regAddEntry hive path val: is a convenient local wrapper to the Win32 API function  RegAddEntry(). ~%regRemoveEntry hive path val doRemove: is a convenient local wrapper to the Win32 API function RegRemoveEntry(). 1defghi A D E F Gjklmnopqrst H I J K Luvwx Byz{ M N O P Q R S C| T}~defghijklmnopqrstuvwxyz{|}~klmnopqrst{yuxvwz|}~defghijdefghi A D E F Gjk lmnopqrst H I J K Luvwx Byz{ M N O P Q R S C| T}~None /023459:;<=?@ABDFIJKNOQRT U V W X Y Z [ \ U V W X Y Z [ \/(c) Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT ] ^ _ ` a b c d e f g h i j k ] ^ _ ` a b c d e f g h i j k/(c) Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT l m n o p q r s t u v w x y z { | } ~   l m n o p q r s t u v w x y z { | } ~  /(c) Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT   /(c) Sigbjorn Finne <sof@dcs.gla.ac.uk> 1998-99 0BSD-style (see the file libraries/base/LICENSE) sof@forkIO.com  provisional  portable None /023459:;<=?@ABDFIJKNOQRT,  $    !"#$%&%'%(%)*+#,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"##$%&'(()*+,-./00123456789::;;<=>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     | !"#$%&'()*+,-.8/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|{}~65                                                                          5  6                                                         ! " # $ % & ' ( ) * + + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                                                                      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 4 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                    )                                                    ! " # $ % & ' ( ) * + , - . / 0    1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                        !"#$%&'()*+,-./01234456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ~     9 :;                       &()*              ! " # $ % & ' ( ) * + , - . /  0 1 2 3 4 5 6 7 8#hcom-0.0.0.2-G7nZA79vjTDE8arRe8wSm6 System.Win32.Com.HDirect.HDirect System.Win32.Com.HDirect.Pointer$System.Win32.Com.HDirect.PointerPrim#System.Win32.Com.HDirect.WideStringSystem.Win32.Com.BaseSystem.Win32.Com.ExceptionSystem.Win32.Com&System.Win32.Com.Automation.Connection$System.Win32.Com.Automation.StdTypes%System.Win32.Com.Automation.SafeArray System.Win32.Com.Automation.BaseSystem.Win32.Com.Automation#System.Win32.Com.Automation.TypeLibSystem.Win32.Com.ServerSystem.Win32.Com.ClassFactorySystem.Win32.Com.Dll!System.Win32.Com.Server.ClassInfo%System.Win32.Com.Server.EnumInterface'System.Win32.Com.Server.ConnectionPoint!System.Win32.Com.Server.ExeServer#System.Win32.Com.Server.StdDispatch Automationghc-prim GHC.TypesBoolCharDoubleFloatbaseGHC.IntInt8Int16Int32Int64 GHC.Stable StablePtrGHC.WordWord8Word16Word32Word64GHC.PtrPtrdeRefStablePtr primNoFree primFreeBSTRprimFreeMemory finalNoFreefinalFreeMemoryprimAllocMemory primFinalisemakeFO writeSeqAtDec stackFrame freeMemoryfreeBSTR freeWithCfreeWith allocMemoryFlags.+.ByteOctetWchar_tHyperforeignPtrToPtr marshallInt unmarshallIntwriteIntreadInt sizeofInt marshallInt8unmarshallInt8 writeInt8readInt8 sizeofInt8 marshallInt16unmarshallInt16 writeInt16 readInt16 sizeofInt16 marshallInt32unmarshallInt32 writeInt32 readInt32 sizeofInt32 marshallInt64unmarshallInt64 writeInt64 readInt64 sizeofInt64 marshallHyperunmarshallHyper writeHyper readHyper sizeofHyper writeInteger readIntegermarshallIntegerunmarshallIntegermarshallUIntegerunmarshallUInteger readUInteger writeUInteger marshallCharunmarshallChar writeCharreadChar sizeofCharmarshallWchar_tunmarshallWchar_t writeWchar_t readWchar_t sizeofWchar_t marshallByteunmarshallByte writeBytereadByte sizeofByte marshallWord8unmarshallWord8 writeWord8 readWord8 sizeofWord8marshallWord16unmarshallWord16 writeWord16 readWord16 sizeofWord16marshallWord32unmarshallWord32 writeWord32 readWord32 sizeofWord32marshallWord64unmarshallWord64 writeWord64 readWord64 sizeofWord64marshallDoubleunmarshallDouble writeDouble readDouble sizeofDouble writeFloat readFloat sizeofFloat marshallBoolunmarshallBool writeBoolreadBool sizeofBool addNCastPtrderefPtrindexPtr allocOutPtr allocBytes allocWords alloc_malloc free_mallocfreealloc doThenFree trivialFreefillIn marshallPtr unmarshallPtrwritePtrreadPtr writefptrmarshallunique marshallMaybe writeMaybe readMaybe writeuniquewriteunique_fununmarshallunique readunique freeuniquemarshallunique_ptr marshallrefwriteref unmarshallrefreadreffreeref writeenum16 readenum16marshallEnum16unmarshallEnum16marshallEnum32unmarshallEnum32 writeEnum32 readEnum32 writeEnum16 readEnum16 marshalllistunmarshalllistunmarshallSingle writelistreadlistfreelistmarshallStringmarshallBStringunmarshallStringunmarshallBString readString readBString writeString writeBString freeStringmarshallSequenceunmarshallSequence readSequence writeSequence freeSequence marshallblist writeblist readblist word16ToInt32 word32ToInt32 int32ToWord32 int16ToWord32 intToChar charToInt32 word32ToChar charToWord32toInt32toInt16 marshallFO unmarshallFOwriteFOsizeofForeignPtr nullFinalisernullFO readStablePtrmarshallStructunmarshallStruct marshallUnionunmarshallUnionmarshallPointerunmarshallPointer writePointer readPointer sizeofPtr primInvokeItprimInvokeItFOstackStringLen enumToFlag enumToInt flagToIntTagunboxInt toIntFlag pow2SeriesorListorFlags WideStringLPCWSTRLPWSTR9prim_System_Win32_Com_HDirect_WideString_primStringToWide6prim_System_Win32_Com_HDirect_WideString_lenWideString5prim_System_Win32_Com_HDirect_WideString_wideToString6prim_System_Win32_Com_HDirect_WideString_wideStringLenlengthWideStringstackWideString mkWideString stringToWideword16ToWideStringnullWideString stackStringmarshallWideStringmarshallWideString2unmarshallWideStringunmarshallWideString2writeWideStringwriteWideString2readWideStringreadWideString2freeWideString freeWStringsizeofWideString wideToStr wideStringLen wideToString lenWideStringprimStringToWide MULTI_QI_PRIMMULTI_QIpIIDpItfhr COSERVERINFO dwReserved1pwszName pAuthInfo dwReserved2 COAUTHINFO dwAuthnSvc dwAuthzSvcpwszServerPrincName dwAuthnLeveldwImpersonationLevelpAuthIdentityDatadwCapabilitiesCOAUTHIDENTITYuserdomainpasswordflagsDWORDULONGPGUIDPCLSIDPIIDSomeCOMException ComException comExceptioncomExceptionMsgComErrorHRESULTIUnknown IUnknown_Unknown0prim_System_Win32_Com_Base_coRegisterClassObject-prim_System_Win32_Com_Base_primGetVersionInfo0prim_System_Win32_Com_Base_primOutputDebugString&prim_System_Win32_Com_Base_postQuitMsg&prim_System_Win32_Com_Base_messagePump,prim_System_Win32_Com_Base_getModuleFileName'prim_System_Win32_Com_Base_stringToBSTR"prim_System_Win32_Com_Base_bstrLen*prim_System_Win32_Com_Base_bstrToStringLen0prim_System_Win32_Com_Base_addrOfReleaseIUnknown4prim_System_Win32_Com_Base_primQueryPathOfRegTypeLib)prim_System_Win32_Com_Base_loadRegTypeLib(prim_System_Win32_Com_Base_loadTypeLibEx&prim_System_Win32_Com_Base_loadTypeLib&prim_System_Win32_Com_Base_primNullIID*prim_System_Win32_Com_Base_primPersistLoad(prim_System_Win32_Com_Base_primEnumClone(prim_System_Win32_Com_Base_primEnumReset'prim_System_Win32_Com_Base_primEnumSkip'prim_System_Win32_Com_Base_primEnumNext&prim_System_Win32_Com_Base_primRelease%prim_System_Win32_Com_Base_primAddRef!prim_System_Win32_Com_Base_primQI*prim_System_Win32_Com_Base_getActiveObject-prim_System_Win32_Com_Base_coCreateInstanceEx+prim_System_Win32_Com_Base_coCreateInstance(prim_System_Win32_Com_Base_hresultString'prim_System_Win32_Com_Base_getLastError,prim_System_Win32_Com_Base_primCreateTypeLib.prim_System_Win32_Com_Base_lOCALE_USER_DEFAULT&prim_System_Win32_Com_Base_isEqualGUID'prim_System_Win32_Com_Base_primComEqual%prim_System_Win32_Com_Base_bindObject&prim_System_Win32_Com_Base_primNewGUID'prim_System_Win32_Com_Base_primCopyGUID+prim_System_Win32_Com_Base_primGUIDToString+prim_System_Win32_Com_Base_primStringToGUID.prim_System_Win32_Com_Base_primProgIDFromCLSID.prim_System_Win32_Com_Base_primCLSIDFromProgID%prim_System_Win32_Com_Base_messageBox*prim_System_Win32_Com_Base_comUnInitialize(prim_System_Win32_Com_Base_comInitializefailed ifaceToAddraddrToIPointermarshallIUnknowncheckHRcoFailHRcomExceptionHR comErrorTccomToExceptioncomFromExceptionthrowComException coFailWithHR stringFromHR comInitializecomUnInitialize messageBoxprimCLSIDFromProgIDprimProgIDFromCLSIDprimStringToGUIDprimGUIDToString primCopyGUID primNewGUID bindObject primComEqual isEqualGUIDlOCALE_USER_DEFAULTprimCreateTypeLib getLastError hresultStringcoCreateInstancewriteCOAUTHIDENTITYreadCOAUTHIDENTITYsizeofCOAUTHIDENTITYwriteCOAUTHINFOreadCOAUTHINFOsizeofCOAUTHINFOwriteCOSERVERINFOreadCOSERVERINFOsizeofCOSERVERINFOwriteMULTI_QI_PRIMreadMULTI_QI_PRIMsizeofMULTI_QI_PRIMcoCreateInstanceExgetActiveObjectprimQI primAddRef primRelease primEnumNext primEnumSkip primEnumReset primEnumCloneprimPersistLoad primNullIID loadTypeLib loadTypeLibExloadRegTypeLibprimQueryPathOfRegTypeLibaddrOfReleaseIUnknownbstrToStringLenbstrLen stringToBSTRgetModuleFileName messagePump postQuitMsgprimOutputDebugStringprimGetVersionInfocoRegisterClassObject$fExceptionComException$fExceptionSomeCOMException$fShowSomeCOMException$fShowComError$fShowComException Com_ExceptioncatchComException catch_ce_throwIOComExceptioncheck2HR checkBoolreturnHR isCoErrorcoGetException coGetErrorHRcoGetErrorString printComErrorhresultToStringcoAssertcoOnFailcoFails_OKs_FALSEnOERRORnO_ERRORsEVERITY_ERRORsEVERITY_SUCCESS succeeded winErrorToHR hRESULT_CODEhRESULT_FACILITYhRESULT_SEVERITY mkHRESULTcAT_E_CATIDNOEXIST cAT_E_FIRST cAT_E_LASTcAT_E_NODESCRIPTIONcLASS_E_CLASSNOTAVAILABLEcLASS_E_NOAGGREGATIONcLASS_E_NOTLICENSEDcO_E_ACCESSCHECKFAILEDcO_E_ACESINWRONGORDERcO_E_ACNOTINITIALIZEDcO_E_ALREADYINITIALIZEDcO_E_APPDIDNTREGcO_E_APPNOTFOUNDcO_E_APPSINGLEUSE cO_E_BAD_PATHcO_E_BAD_SERVER_NAMEcO_E_CANTDETERMINECLASScO_E_CANT_REMOTEcO_E_CLASSSTRINGcO_E_CLASS_CREATE_FAILEDcO_E_CLSREG_INCONSISTENTcO_E_CONVERSIONFAILEDcO_E_CREATEPROCESS_FAILUREcO_E_DECODEFAILEDcO_E_DLLNOTFOUNDcO_E_ERRORINAPPcO_E_ERRORINDLLcO_E_EXCEEDSYSACLLIMITcO_E_FAILEDTOCLOSEHANDLEcO_E_FAILEDTOCREATEFILEcO_E_FAILEDTOGENUUIDcO_E_FAILEDTOGETSECCTXcO_E_FAILEDTOGETTOKENINFOcO_E_FAILEDTOGETWINDIRcO_E_FAILEDTOIMPERSONATEcO_E_FAILEDTOOPENPROCESSTOKENcO_E_FAILEDTOOPENTHREADTOKENcO_E_FAILEDTOQUERYCLIENTBLANKETcO_E_FAILEDTOSETDACL cO_E_FIRSTcO_E_IIDREG_INCONSISTENTcO_E_IIDSTRINGcO_E_INCOMPATIBLESTREAMVERSIONcO_E_INIT_CLASS_CACHEcO_E_INIT_MEMORY_ALLOCATORcO_E_INIT_ONLY_SINGLE_THREADEDcO_E_INIT_RPC_CHANNELcO_E_INIT_SCM_EXEC_FAILURE!cO_E_INIT_SCM_FILE_MAPPING_EXISTScO_E_INIT_SCM_MAP_VIEW_OF_FILEcO_E_INIT_SCM_MUTEX_EXISTScO_E_INIT_SHARED_ALLOCATOR cO_E_INIT_TLScO_E_INIT_TLS_CHANNEL_CONTROL!cO_E_INIT_TLS_SET_CHANNEL_CONTROL#cO_E_INIT_UNACCEPTED_USER_ALLOCATORcO_E_INVALIDSID cO_E_LASTcO_E_LAUNCH_PERMSSION_DENIEDcO_E_LOOKUPACCNAMEFAILEDcO_E_LOOKUPACCSIDFAILEDcO_E_MSI_ERRORcO_E_NETACCESSAPIFAILEDcO_E_NOMATCHINGNAMEFOUNDcO_E_NOMATCHINGSIDFOUNDcO_E_NOTINITIALIZEDcO_E_NOT_SUPPORTED cO_E_OBJISREGcO_E_OBJNOTCONNECTEDcO_E_OBJNOTREGcO_E_OBJSRV_RPC_FAILUREcO_E_OLE1DDE_DISABLEDcO_E_PATHTOOLONG cO_E_RELEASEDcO_E_RELOAD_DLL!cO_E_REMOTE_COMMUNICATION_FAILURE cO_E_RUNAS_CREATEPROCESS_FAILUREcO_E_RUNAS_LOGON_FAILUREcO_E_RUNAS_SYNTAXcO_E_SCM_ERRORcO_E_SCM_RPC_FAILUREcO_E_SERVER_EXEC_FAILUREcO_E_SERVER_START_TIMEOUTcO_E_SERVER_STOPPINGcO_E_SETSERLHNDLFAILEDcO_E_START_SERVICE_FAILUREcO_E_TRUSTEEDOESNTMATCHCLIENTcO_E_WRONGOSFORAPPcO_E_WRONGTRUSTEENAMESYNTAXcO_E_WRONG_SERVER_IDENTITY cO_S_FIRST cO_S_LASTcO_S_NOTALLINTERFACESdISP_E_ARRAYISLOCKEDdISP_E_BADCALLEEdISP_E_BADINDEXdISP_E_BADPARAMCOUNTdISP_E_BADVARTYPEdISP_E_DIVBYZEROdISP_E_EXCEPTIONdISP_E_MEMBERNOTFOUNDdISP_E_NONAMEDARGSdISP_E_NOTACOLLECTIONdISP_E_OVERFLOWdISP_E_PARAMNOTFOUNDdISP_E_PARAMNOTOPTIONALdISP_E_TYPEMISMATCHdISP_E_UNKNOWNINTERFACEdISP_E_UNKNOWNLCIDdISP_E_UNKNOWNNAMEdV_E_CLIPFORMAT dV_E_DVASPECTdV_E_DVTARGETDEVICEdV_E_DVTARGETDEVICE_SIZEdV_E_FORMATETC dV_E_LINDEXdV_E_NOIVIEWOBJECT dV_E_STATDATAdV_E_STGMEDIUM dV_E_TYMEDe_ABORTe_ACCESSDENIEDe_FAILe_HANDLE e_INVALIDARG e_NOINTERFACE e_NOTIMPL e_OUTOFMEMORY e_PENDING e_POINTER e_UNEXPECTED fACILITY_CERTfACILITY_CONTROLfACILITY_DISPATCHfACILITY_INTERNET fACILITY_ITFfACILITY_MEDIASERVER fACILITY_MSMQfACILITY_NT_BIT fACILITY_NULL fACILITY_RPCfACILITY_SETUPAPI fACILITY_SSPIfACILITY_STORAGEfACILITY_WIN32fACILITY_WINDOWSiNPLACE_E_FIRSTiNPLACE_E_LASTiNPLACE_E_NOTOOLSPACEiNPLACE_E_NOTUNDOABLEiNPLACE_S_FIRSTiNPLACE_S_LASTiNPLACE_S_TRUNCATEDmARSHAL_E_FIRSTmARSHAL_E_LASTmARSHAL_S_FIRSTmARSHAL_S_LASTmEM_E_INVALID_LINKmEM_E_INVALID_ROOTmEM_E_INVALID_SIZEmK_E_CANTOPENFILEmK_E_CONNECTMANUALLYmK_E_ENUMERATION_FAILEDmK_E_EXCEEDEDDEADLINE mK_E_FIRST&mK_E_INTERMEDIATEINTERFACENOTSUPPORTEDmK_E_INVALIDEXTENSION mK_E_LASTmK_E_MUSTBOTHERUSERmK_E_NEEDGENERICmK_E_NOINVERSE mK_E_NOOBJECT mK_E_NOPREFIXmK_E_NOSTORAGEmK_E_NOTBINDABLE mK_E_NOTBOUNDmK_E_NO_NORMALIZED mK_E_SYNTAXmK_E_UNAVAILABLE mK_S_FIRSTmK_S_HIM mK_S_LASTmK_S_MEmK_S_MONIKERALREADYREGISTEREDmK_S_REDUCED_TO_SELFmK_S_USoLEOBJ_E_FIRSToLEOBJ_E_INVALIDVERB oLEOBJ_E_LASToLEOBJ_E_NOVERBSoLEOBJ_S_CANNOT_DOVERB_NOWoLEOBJ_S_FIRSToLEOBJ_S_INVALIDHWNDoLEOBJ_S_INVALIDVERB oLEOBJ_S_LAST oLE_E_ADVFoLE_E_ADVISENOTSUPPORTED oLE_E_BLANKoLE_E_CANTCONVERToLE_E_CANT_BINDTOSOURCEoLE_E_CANT_GETMONIKERoLE_E_CLASSDIFFoLE_E_ENUM_NOMORE oLE_E_FIRSToLE_E_INVALIDHWNDoLE_E_INVALIDRECT oLE_E_LAST oLE_E_NOCACHEoLE_E_NOCONNECTIONoLE_E_NOSTORAGEoLE_E_NOTRUNNINGoLE_E_NOT_INPLACEACTIVE oLE_E_OLEVERBoLE_E_PROMPTSAVECANCELLED oLE_E_STATICoLE_E_WRONGCOMPOBJ oLE_S_FIRST oLE_S_LASToLE_S_MAC_CLIPFORMAT oLE_S_STATIC oLE_S_USEREGpERSIST_E_NOTSELFSIZINGpERSIST_E_SIZEDEFINITEpERSIST_E_SIZEINDEFINITEsTG_E_ABNORMALAPIEXITsTG_E_ACCESSDENIEDsTG_E_BADBASEADDRESSsTG_E_CANTSAVEsTG_E_DISKISWRITEPROTECTEDsTG_E_DOCFILECORRUPTsTG_E_EXTANTMARSHALLINGSsTG_E_FILEALREADYEXISTSsTG_E_FILENOTFOUNDsTG_E_INCOMPLETEsTG_E_INSUFFICIENTMEMORY sTG_E_INUSEsTG_E_INVALIDFLAGsTG_E_INVALIDFUNCTIONsTG_E_INVALIDHANDLEsTG_E_INVALIDHEADERsTG_E_INVALIDNAMEsTG_E_INVALIDPARAMETERsTG_E_INVALIDPOINTERsTG_E_LOCKVIOLATIONsTG_E_MEDIUMFULLsTG_E_NOMOREFILESsTG_E_NOTCURRENTsTG_E_NOTFILEBASEDSTORAGE sTG_E_OLDDLLsTG_E_OLDFORMATsTG_E_PATHNOTFOUNDsTG_E_PROPSETMISMATCHEDsTG_E_READFAULTsTG_E_REVERTEDsTG_E_SEEKERRORsTG_E_SHAREREQUIREDsTG_E_SHAREVIOLATIONsTG_E_TERMINATEDsTG_E_TOOMANYOPENFILESsTG_E_UNIMPLEMENTEDFUNCTION sTG_E_UNKNOWNsTG_E_WRITEFAULT sTG_S_BLOCKsTG_S_CANNOTCONSOLIDATEsTG_S_CONSOLIDATIONFAILEDsTG_S_CONVERTEDsTG_S_MONITORINGsTG_S_MULTIPLEOPENSsTG_S_RETRYNOWtYPE_E_AMBIGUOUSNAMEtYPE_E_BADMODULEKINDtYPE_E_BUFFERTOOSMALLtYPE_E_CANTCREATETMPFILEtYPE_E_CANTLOADLIBRARYtYPE_E_CIRCULARTYPEtYPE_E_DLLFUNCTIONNOTFOUNDtYPE_E_DUPLICATEIDtYPE_E_ELEMENTNOTFOUNDtYPE_E_FIELDNOTFOUNDtYPE_E_INCONSISTENTPROPFUNCStYPE_E_INVALIDIDtYPE_E_INVALIDSTATEtYPE_E_INVDATAREADtYPE_E_IOERRORtYPE_E_LIBNOTREGISTEREDtYPE_E_NAMECONFLICTtYPE_E_OUTOFBOUNDStYPE_E_QUALIFIEDNAMEDISALLOWEDtYPE_E_REGISTRYACCESStYPE_E_SIZETOOBIGtYPE_E_TYPEMISMATCHtYPE_E_UNDEFINEDTYPEtYPE_E_UNKNOWNLCIDtYPE_E_UNSUPFORMATtYPE_E_WRONGTYPEKIND vIEW_E_DRAW vIEW_E_FIRST vIEW_E_LASTvIEW_S_ALREADY_FROZEN vIEW_S_FIRST vIEW_S_LASTCLSIDIIDGUIDLCIDLIBIDProgIDLPSTRBSTRCLSCTXCLSCTX_INPROC_SERVERCLSCTX_INPROC_HANDLERCLSCTX_LOCAL_SERVERCLSCTX_INPROC_SERVER16CLSCTX_REMOTE_SERVERCLSCTX_INPROC_HANDLER16CLSCTX_INPROC_SERVERX86CLSCTX_INPROC_HANDLERX86 LocalProcess InProcess ServerProcess AnyProcess OSVersionInfo###coCreateObjectcoGetFileObjectcoGetActiveObject coGetObjectcoRun coPerformIOcoUnsafePerformIO printMessage putMessageoutputDebugString isWindowsNT isWindows95 isWindows98 versionInfoinvokeAndCheckinvokeItenumNext enumNextOneenumSkip enumReset enumClone writeBSTRreadBSTRunmarshallBSTR marshallBSTRcoFreecoAllocclsidFromProgIDprogIDFromCLSIDmkLIBID iidIUnknown castIface interfaceNULLisNullInterfaceiidNULLqueryInterfaceaddRefreleasewithQueryInterfacemkGUIDnewGUIDnullGUID marshallGUIDcopyGUIDunmarshallGUID writeGUIDreadGUID sizeofGUID stringToGUID guidToStringmkIIDmkCLSID stringToIID stringToCLSID iidToGUIDcastIID clsidToGUIDclsidToDisplayName guidToIID guidToCLSID marshallIID unmarshallIIDcopyIIDreadIIDwriteIID marshallCLSIDunmarshallCLSID copyCLSID readCLSID writeCLSID sizeofCLSID coInitializecoUnInitialize sizeofIIDunmarshallIUnknownunmarshallIUnknownFO readIUnknown writeIUnknown withObject_ withMethod_ withObject withMethodqueryPathOfRegTypeLib createTypeLib$fEqGUID $fShowGUID $fShowCLSID $fShowIID$fShowIUnknown_ $fEqIUnknown_ $fEnumCLSCTX $fShowCLSCTX$fEqIID $fEqCLSIDLPENUMCONNECTIONPOINTSPENUMCONNECTIONPOINTSIEnumConnectionPointsIEnumConnectionPoints_LPCONNECTDATA0TagCONNECTDATA0 PCONNECTDATA0TagCONNECTDATA CONNECTDATApUnkdwCookieLPENUMCONNECTIONSPENUMCONNECTIONSIEnumConnectionsIEnumConnections_LPCONNECTIONPOINTCONTAINERPCONNECTIONPOINTCONTAINERIConnectionPointContainerIConnectionPointContainer_LPCONNECTIONPOINTPCONNECTIONPOINTIConnectionPointIConnectionPoint_iidIConnectionPointgetConnectionInterfacegetConnectionPointContaineradviseunadviseenumConnectionsiidIConnectionPointContainerenumConnectionPointsfindConnectionPointiidIEnumConnectionswriteCONNECTDATAreadCONNECTDATAsizeofCONNECTDATAnextskipresetcloneiidIEnumConnectionPointsnextECPskipECPresetECPcloneECPVARENUMVT_EMPTYVT_NULLVT_I2VT_I4VT_R4VT_R8VT_CYVT_DATEVT_BSTR VT_DISPATCHVT_ERRORVT_BOOL VT_VARIANT VT_UNKNOWN VT_DECIMALVT_I1VT_UI1VT_UI2VT_UI4VT_I8VT_UI8VT_INTVT_UINTVT_VOID VT_HRESULTVT_PTR VT_SAFEARRAY VT_CARRAYVT_USERDEFINEDVT_LPSTR VT_LPWSTR VT_FILETIMEVT_BLOB VT_STREAM VT_STORAGEVT_STREAMED_OBJECTVT_STORED_OBJECTVT_BLOB_OBJECTVT_CFVT_CLSID VT_BSTR_BLOBVT_ILLEGALMASKED VT_TYPEMASK VT_VECTORVT_ARRAYVT_BYREF VT_RESERVED VT_ILLEGALREFFMTIDREFCLSIDREFIIDREFGUIDHANDLEHMENUHWNDLPFMTIDFMTIDLPCLSIDLPIIDFLOATLPVOIDPVOID LPCOLESTRLPOLESTROLECHARTCHARWCHARSHORTSCODEUSHORTVARTYPEWORDLONGBYTEBOOLINTUINT $fEnumVARENUMSAFEARRAYBOUNDTagSAFEARRAYBOUND cElementslLbound SAFEARRAY:prim_System_Win32_Com_Automation_SafeArray_safeArrayUnlock@prim_System_Win32_Com_Automation_SafeArray_safeArrayUnaccessData9prim_System_Win32_Com_Automation_SafeArray_safeArrayRedim>prim_System_Win32_Com_Automation_SafeArray_safeArrayPutElement>prim_System_Win32_Com_Automation_SafeArray_safeArrayPtrOfIndex8prim_System_Win32_Com_Automation_SafeArray_safeArrayLock=prim_System_Win32_Com_Automation_SafeArray_safeArrayGetUBound=prim_System_Win32_Com_Automation_SafeArray_safeArrayGetLBound?prim_System_Win32_Com_Automation_SafeArray_safeArrayGetElemsize>prim_System_Win32_Com_Automation_SafeArray_safeArrayGetElement:prim_System_Win32_Com_Automation_SafeArray_safeArrayGetDimEprim_System_Win32_Com_Automation_SafeArray_safeArrayDestroyDescriptor?prim_System_Win32_Com_Automation_SafeArray_safeArrayDestroyData;prim_System_Win32_Com_Automation_SafeArray_safeArrayDestroy:prim_System_Win32_Com_Automation_SafeArray_safeArrayCreate8prim_System_Win32_Com_Automation_SafeArray_safeArrayCopyCprim_System_Win32_Com_Automation_SafeArray_safeArrayAllocDescriptor=prim_System_Win32_Com_Automation_SafeArray_safeArrayAllocData>prim_System_Win32_Com_Automation_SafeArray_safeArrayAccessData%addrOf_SAFEARRAY_primSafeArrayDestroymarshallSAFEARRAYunmarshallSAFEARRAYwriteSAFEARRAY readSAFEARRAYsizeofSAFEARRAYaddrToSAFEARRAYwriteSAFEARRAYBOUNDreadSAFEARRAYBOUNDsizeofSAFEARRAYBOUNDsafeArrayAccessDatasafeArrayAllocDatasafeArrayAllocDescriptor safeArrayCopysafeArrayCreatesafeArrayDestroysafeArrayDestroyDatasafeArrayDestroyDescriptorsafeArrayGetDimsafeArrayGetElementsafeArrayGetElemsizesafeArrayGetLBoundsafeArrayGetUBound safeArrayLocksafeArrayPtrOfIndexsafeArrayPutElementsafeArrayRedimsafeArrayUnaccessDatasafeArrayUnlock IDispatch IDispatch_ IDispatch__ PEXCEPINFODISPIDVARIANTVARIANT_5prim_System_Win32_Com_Automation_Base_primClockToDate6prim_System_Win32_Com_Automation_Base_primVARIANTClear5prim_System_Win32_Com_Automation_Base_primCopyVARIANT6prim_System_Win32_Com_Automation_Base_readVarSAFEARRAY7prim_System_Win32_Com_Automation_Base_writeVarSAFEARRAY4prim_System_Win32_Com_Automation_Base_readVarVariant5prim_System_Win32_Com_Automation_Base_writeVarVariant3prim_System_Win32_Com_Automation_Base_readVarWord644prim_System_Win32_Com_Automation_Base_writeVarWord645prim_System_Win32_Com_Automation_Base_readVarCurrency6prim_System_Win32_Com_Automation_Base_writeVarCurrency1prim_System_Win32_Com_Automation_Base_readVarNull2prim_System_Win32_Com_Automation_Base_writeVarNull3prim_System_Win32_Com_Automation_Base_writeVarEmpty1prim_System_Win32_Com_Automation_Base_readVarByte2prim_System_Win32_Com_Automation_Base_writeVarByte4prim_System_Win32_Com_Automation_Base_readVarUnknown5prim_System_Win32_Com_Automation_Base_writeVarUnknown1prim_System_Win32_Com_Automation_Base_readVarBool2prim_System_Win32_Com_Automation_Base_writeVarBool2prim_System_Win32_Com_Automation_Base_readVarError3prim_System_Win32_Com_Automation_Base_writeVarError6prim_System_Win32_Com_Automation_Base_writeVarOptional5prim_System_Win32_Com_Automation_Base_readVarDispatch6prim_System_Win32_Com_Automation_Base_writeVarDispatch3prim_System_Win32_Com_Automation_Base_readVarString4prim_System_Win32_Com_Automation_Base_writeVarString3prim_System_Win32_Com_Automation_Base_readVarDouble4prim_System_Win32_Com_Automation_Base_writeVarDouble2prim_System_Win32_Com_Automation_Base_readVarFloat3prim_System_Win32_Com_Automation_Base_writeVarFloat1prim_System_Win32_Com_Automation_Base_readVarWord2prim_System_Win32_Com_Automation_Base_writeVarWord0prim_System_Win32_Com_Automation_Base_readVarInt1prim_System_Win32_Com_Automation_Base_writeVarInt2prim_System_Win32_Com_Automation_Base_readVarShort3prim_System_Win32_Com_Automation_Base_writeVarShort1prim_System_Win32_Com_Automation_Base_variantInit4prim_System_Win32_Com_Automation_Base_readVariantTag2prim_System_Win32_Com_Automation_Base_freeVariants9prim_System_Win32_Com_Automation_Base_getExcepInfoMessage3prim_System_Win32_Com_Automation_Base_freeExcepInfo9prim_System_Win32_Com_Automation_Base_dispatchGetMemberID4prim_System_Win32_Com_Automation_Base_dispatchInvokeprim_readVarStablePtrwriteVarStablePtr sizeofBSTR iidIDispatch sizeofVARIANTmarshallVARIANTunmarshallVARIANT readVARIANT writeVARIANT copyVARIANT allocVARIANTreadVarStablePtrdispatchInvokedispatchGetMemberID freeExcepInfogetExcepInfoMessage freeVariantsreadVariantTag variantInit writeVarShort readVarShort writeVarInt readVarInt writeVarWord readVarWord writeVarFloat readVarFloatwriteVarDouble readVarDoublewriteVarString readVarStringwriteVarDispatchreadVarDispatchwriteVarOptional writeVarError readVarError writeVarBool readVarBoolwriteVarUnknownreadVarUnknown writeVarByte readVarByte writeVarEmpty writeVarNull readVarNullwriteVarCurrencyreadVarCurrencywriteVarWord64 readVarWord64writeVarVariantreadVarVariantwriteVarSAFEARRAYreadVarSAFEARRAYprimCopyVARIANTprimVARIANTClearprimClockToDate SafeArrayCurrencyDateSqlNullVariant inVariant inVarList inVarIUnknown vtEltType resVariantdefaultVariant resVarListresVarIUnknownresVarIDispatchArgInOutArgOutArgResArgInVarResVarInMember createObject getFileObject getObject method_0_0 method_1_0 method_2_0 method_3_0 method_4_0 method_0_1 method_1_1 method_2_1 method_3_1 method_4_1 method_0_2 method_1_2 method_2_2 method_3_2 method_4_2 function_0_1 function_1_1 function_2_1 function_3_1 function_4_1 function_0_2 function_1_2 function_2_2 function_3_2 function_4_2 propertyGet_0 propertyGet_1 propertyGet_2 propertyGet_3 propertyGet_4 propertySet_1 propertySet_2 propertySet_3 propertySet_4 getMemberID inoutVariant outVariantinDefaultValue defaultMaybe inOptionalinMayberesMaybe inoutMaybeoutMaybedefaultSqlNull inSqlNull resSqlNull inoutSqlNull outSqlNullinHaskellValueunsafeResHaskellValueunsafeOutHaskellValue queryIUnknownqueryIDispatch defaultEmptyinNoArginEmptynoInArgresEmpty inoutEmptyoutEmptyinGUIDoutGUID defaultIntinIntresIntinoutIntoutInt defaultInt8inInt8resInt8 inoutInt8outInt8 defaultInt16inInt16resInt16 inoutInt16outInt16 defaultInt32inInt32resInt32 inoutInt32outInt32defaultHRESULT inHRESULT resHRESULT inoutHRESULT outHRESULT defaultInt64inInt64resInt64 inoutInt64outInt64defaultInteger inInteger resInteger inoutInteger outInteger defaultWordinWordresWord inoutWordoutWord defaultWord8inWord8resWord8 inoutWord8outWord8 defaultWord16inWord16 resWord16 inoutWord16 outWord16 defaultWord32inWord32 resWord32 inoutWord32 outWord32 defaultWord64inWord64 resWord64 inoutWord64 outWord64 defaultByteinByteresByte inoutByteoutByte defaultCharinCharresChar inoutCharoutChar defaultBoolinBoolresBool inoutBooloutBool defaultFloatinFloatresFloat inoutFloatoutFloat defaultDoubleinDouble resDouble inoutDouble outDouble defaultDateinDateresDate inoutDateoutDateclockTimeToDatedefaultCurrency inCurrency resCurrency inoutCurrency outCurrency defaultStringinString resString inoutString outStringdefaultIUnknown inIUnknown resIUnknown inoutIUnknown outIUnknowndefaultIDispatch inIDispatch resIDispatchinoutIDispatch outIDispatch defaultErrorinErrorresError inoutErroroutErrorinEnum defaultEnumresEnum inoutEnumoutEnum vtTypeEnum propertyGet propertyGet2 propertyGet3 propertyGet4 propertySetpropertySetGet propertyGetIDpropertyGet2IDpropertyGet3IDpropertyGet4ID propertySetIDpropertySetGetIDmethod0method1method2method3method4method5method6method7method8 methodID0 methodID1 methodID2 methodID3 methodID4 methodID5 methodID6 methodID7 methodID8 function1 function2 function3 function4 function5 function6 functionID1 functionID2 functionID3 functionID4 functionID5 functionID6unmarshallVariants0unmarshallVariants1unmarshallVariants2unmarshallVariants3unmarshallVariants4unmarshallVariants5unmarshallVariants6unmarshallVariants7unmarshallVariants8 readVariants0 readVariants1 readVariants2 readVariants3 readVariants4 readVariants5 readVariants6 readVariants7 readVariants8invokePropertyGetinvokePropertySet invokeMethodinvokeFunction enumVariantsmarshallCurrencyunmarshallCurrency readCurrency writeCurrencysizeofCurrencyunmarshallVARENUMmarshallVARENUM writeVARENUM readVARENUM sizeofVARENUMsizeofVARIANT_BOOLmarshallVARIANT_BOOLunmarshallVARIANT_BOOLwriteVARIANT_BOOLreadVARIANT_BOOL vARIANT_TRUE vARIANT_FALSE readVarEnum mkSafeArraydefaultSafeArray inSafeArray resSafeArrayinoutSafeArray outSafeArray freeSafeArraymarshallSafeArrayunmarshallSafeArraywriteSafeArray readSafeArrayreadSAmarshallVariant writeVariant readVariantunmarshallVariant$fVariantSAFEARRAY$fVariantSafeArray $fVariantPtr$fVariantMaybe$fVariantDouble$fVariantFloat$fVariantWord64$fVariantWord32$fVariantWord16$fVariantWord8$fVariantInt64 $fVariantInt8$fVariantInt16$fVariantInt32 $fVariantInt $fVariantBool $fVariant()$fVariantIDispatch_$fVariantIUnknown_ $fVariantChar $fVariant[] $fEqVARENUM $fShowVARENUM CHANGEKINDCHANGEKIND_ADDMEMBERCHANGEKIND_DELETEMEMBERCHANGEKIND_SETNAMESCHANGEKIND_SETDOCUMENTATIONCHANGEKIND_GENERALCHANGEKIND_INVALIDATECHANGEKIND_CHANGEFAILEDCHANGEKIND_MAXLPTYPECHANGEEVENTSITypeChangeEventsITypeChangeEvents_ITypeChangeEvents__ LPTYPELIB2 ITypeLib2 ITypeLib2_ ITypeLib2__ LPTLIBATTRTLIBATTR TagTLIBATTRguid1lcid0syskind wMajorVerNum0 wMinorVerNum0 wLibFlags LPTYPELIBLIBFLAGSLIBFLAGSList__LIBFLAG_FRESTRICTEDLIBFLAG_FCONTROLLIBFLAG_FHIDDENLIBFLAG_FHASDISKIMAGESYSKIND SYSKINDList__ SYS_WIN16 SYS_WIN32SYS_MACITypeLib ITypeLib_ ITypeLib__ LPTYPEINFO2 ITypeInfo2 ITypeInfo2_ ITypeInfo2__ LPTYPEINFO ITypeInfo ITypeInfo_ ITypeInfo__ LPBINDPTRBINDPTR Lpfuncdesc LpvardescLptcompDESCKIND DESCKIND_NONEDESCKIND_FUNCDESCDESCKIND_VARDESCDESCKIND_TYPECOMPDESCKIND_IMPLICITAPPOBJ DESCKIND_MAX LPTYPECOMP ITypeComp ITypeComp_ ITypeComp__LPCREATETYPELIB2ICreateTypeLib2ICreateTypeLib2_ICreateTypeLib2__LPCREATETYPELIBICreateTypeLibICreateTypeLib_ICreateTypeLib__LPCREATETYPEINFO2ICreateTypeInfo2ICreateTypeInfo2_ICreateTypeInfo2__LPCREATETYPEINFOICreateTypeInfoICreateTypeInfo_ICreateTypeInfo__ LPCUSTDATACUSTDATA TagCUSTDATA prgCustDataLPCUSTDATAITEM CUSTDATAITEMTagCUSTDATAITEMguid0varValueCLEANLOCALSTORAGETagCLEANLOCALSTORAGE pInterfacepStorageVARFLAGSVARFLAGSList__VARFLAG_FREADONLYVARFLAG_FSOURCEVARFLAG_FBINDABLEVARFLAG_FREQUESTEDITVARFLAG_FDISPLAYBINDVARFLAG_FDEFAULTBINDVARFLAG_FHIDDENVARFLAG_FRESTRICTEDVARFLAG_FDEFAULTCOLLELEMVARFLAG_FUIDEFAULTVARFLAG_FNONBROWSABLEVARFLAG_FREPLACEABLEVARFLAG_FIMMEDIATEBIND FUNCFLAGSFUNCFLAGSList__FUNCFLAG_FRESTRICTEDFUNCFLAG_FSOURCEFUNCFLAG_FBINDABLEFUNCFLAG_FREQUESTEDITFUNCFLAG_FDISPLAYBINDFUNCFLAG_FDEFAULTBINDFUNCFLAG_FHIDDENFUNCFLAG_FUSESGETLASTERRORFUNCFLAG_FDEFAULTCOLLELEMFUNCFLAG_FUIDEFAULTFUNCFLAG_FNONBROWSABLEFUNCFLAG_FREPLACEABLEFUNCFLAG_FIMMEDIATEBIND TYPEFLAGSTYPEFLAGSList__TYPEFLAG_FAPPOBJECTTYPEFLAG_FCANCREATETYPEFLAG_FLICENSEDTYPEFLAG_FPREDECLIDTYPEFLAG_FHIDDENTYPEFLAG_FCONTROLTYPEFLAG_FDUALTYPEFLAG_FNONEXTENSIBLETYPEFLAG_FOLEAUTOMATIONTYPEFLAG_FRESTRICTEDTYPEFLAG_FAGGREGATABLETYPEFLAG_FREPLACEABLETYPEFLAG_FDISPATCHABLETYPEFLAG_FREVERSEBIND LPVARDESCVARDESC TagVARDESCmemid0 lpstrSchema0 iHC_TAG_7 elemdescVar wVarFlagsvarkind IHC_TAG_8 IHC_TAG_9OInst LpvarValue LPFUNCDESCFUNCDESC TagFUNCDESCmemid lprgscodelprgelemdescParamfunckindinvkindcallconv cParamsOptoVft elemdescFunc wFuncFlagsVARKINDVAR_PERINSTANCE VAR_STATIC VAR_CONST VAR_DISPATCH INVOKEKINDINVOKEKINDList__ INVOKE_FUNCINVOKE_PROPERTYGETINVOKE_PROPERTYPUTINVOKE_PROPERTYPUTREFFUNCKIND FUNC_VIRTUALFUNC_PUREVIRTUALFUNC_NONVIRTUAL FUNC_STATIC FUNC_DISPATCHCALLCONV CC_FASTCALLCC_CDECL CC_MSCPASCAL CC_PASCAL CC_MACPASCAL CC_STDCALL CC_FPFASTCALL CC_SYSCALL CC_MPWCDECL CC_MPWPASCALCC_MAX EXCEPINFO TagEXCEPINFOwCode wReserved bstrSourcebstrDescription bstrHelpFile dwHelpContext pvReservedpfnDeferredFillInscode DISPPARAMS TagDISPPARAMSrgvargrgdispidNamedArgs LPTYPEATTRTYPEATTR TagTYPEATTRguidlcid dwReserved0memidConstructormemidDestructor lpstrSchemacbSizeInstancetypekindcFuncscVars cImplTypes cbSizeVft cbAlignment wTypeFlags wMajorVerNum wMinorVerNum tdescAlias idldescTypeELEMDESC TagELEMDESCtdesc paramdesc LPIDLDESCIDLDESC TagIDLDESC dwReserved wIDLFlags LPPARAMDESC PARAMDESC TagPARAMDESC pparamdescex wParamFlags LPPARAMDESCEX PARAMDESCEXTagPARAMDESCEXcBytesvarDefaultValue VARIANTARG ARRAYDESC TagARRAYDESC tdescElemrgboundsTYPEDESC TagTYPEDESC iHC_TAG_1vt IHC_TAG_2 IHC_TAG_3LptdescLpadescHreftypeIHC_TAG_3_Anon IHC_TAG_5 IHC_TAG_4TYPEKIND TKIND_ENUM TKIND_RECORD TKIND_MODULETKIND_INTERFACETKIND_DISPATCH TKIND_COCLASS TKIND_ALIAS TKIND_UNION TKIND_MAXHREFTYPEMEMBERIDLPSAFEARRAYBOUND8prim_System_Win32_Com_Automation_TypeLib_afterTypeChange:prim_System_Win32_Com_Automation_TypeLib_requestTypeChange9prim_System_Win32_Com_Automation_TypeLib_getLibStatistics8prim_System_Win32_Com_Automation_TypeLib_releaseTLibAttr1prim_System_Win32_Com_Automation_TypeLib_findName/prim_System_Win32_Com_Automation_TypeLib_isName3prim_System_Win32_Com_Automation_TypeLib_getLibAttr:prim_System_Win32_Com_Automation_TypeLib_getTypeInfoOfGuid8prim_System_Win32_Com_Automation_TypeLib_getTypeInfoType9prim_System_Win32_Com_Automation_TypeLib_getTypeInfoCountprim_System_Win32_Com_Automation_TypeLib_deleteFuncDescByMemId/prim_System_Win32_Com_Automation_TypeLib_layOut7prim_System_Win32_Com_Automation_TypeLib_setTypeIdldesc0prim_System_Win32_Com_Automation_TypeLib_setMops=prim_System_Win32_Com_Automation_TypeLib_defineFuncAsDllEntry9prim_System_Win32_Com_Automation_TypeLib_setTypeDescAlias3prim_System_Win32_Com_Automation_TypeLib_setVarName=prim_System_Win32_Com_Automation_TypeLib_setFuncAndParamNames3prim_System_Win32_Com_Automation_TypeLib_addVarDesc5prim_System_Win32_Com_Automation_TypeLib_setAlignment9prim_System_Win32_Com_Automation_TypeLib_setImplTypeFlags4prim_System_Win32_Com_Automation_TypeLib_addImplType4prim_System_Win32_Com_Automation_TypeLib_addFuncDesc7prim_System_Win32_Com_Automation_TypeLib_addRefTypeInfo3prim_System_Win32_Com_Automation_TypeLib_setVersion5prim_System_Win32_Com_Automation_TypeLib_setDocString5prim_System_Win32_Com_Automation_TypeLib_setTypeFlags0prim_System_Win32_Com_Automation_TypeLib_setGuidmarshallIHC_TAG_3unmarshallIHC_TAG_3writeIHC_TAG_3 readIHC_TAG_3sizeofIHC_TAG_3 freeIHC_TAG_3 writeTYPEDESC readTYPEDESCsizeofTYPEDESC freeARRAYDESCwriteARRAYDESC readARRAYDESCsizeofARRAYDESCfreePARAMDESCEXwritePARAMDESCEXreadPARAMDESCEXsizeofPARAMDESCEX freePARAMDESCwritePARAMDESC readPARAMDESCsizeofPARAMDESCpARAMFLAG_NONE pARAMFLAG_FINpARAMFLAG_FOUTpARAMFLAG_FLCIDpARAMFLAG_FRETVALpARAMFLAG_FOPTpARAMFLAG_FHASDEFAULT writeIDLDESC readIDLDESC sizeofIDLDESC iDLFLAG_NONE iDLFLAG_FIN iDLFLAG_FOUT iDLFLAG_FLCIDiDLFLAG_FRETVAL freeELEMDESC writeELEMDESC readELEMDESCsizeofELEMDESC writeTYPEATTR readTYPEATTRsizeofTYPEATTRfreeDISPPARAMSwriteDISPPARAMSreadDISPPARAMSsizeofDISPPARAMS freeEXCEPINFOwriteEXCEPINFO readEXCEPINFOsizeofEXCEPINFO freeFUNCDESC writeFUNCDESC readFUNCDESCsizeofFUNCDESCiMPLTYPEFLAG_FDEFAULTiMPLTYPEFLAG_FSOURCEiMPLTYPEFLAG_FRESTRICTEDiMPLTYPEFLAG_FDEFAULTVTABLEmarshallIHC_TAG_9unmarshallIHC_TAG_9writeIHC_TAG_9 readIHC_TAG_9sizeofIHC_TAG_9 freeIHC_TAG_9 freeVARDESC writeVARDESC readVARDESC sizeofVARDESCwriteCLEANLOCALSTORAGEreadCLEANLOCALSTORAGEsizeofCLEANLOCALSTORAGEfreeCUSTDATAITEMwriteCUSTDATAITEMreadCUSTDATAITEMsizeofCUSTDATAITEM freeCUSTDATA writeCUSTDATA readCUSTDATAsizeofCUSTDATAiidICreateTypeInfosetGuid setTypeFlags setDocStringsetHelpContext setVersionaddRefTypeInfo addFuncDesc addImplTypesetImplTypeFlags setAlignment setSchema addVarDescsetFuncAndParamNames setVarNamesetTypeDescAliasdefineFuncAsDllEntrysetFuncDocStringsetVarDocStringsetFuncHelpContextsetVarHelpContextsetMopssetTypeIdldesclayOutiidICreateTypeInfo2deleteFuncDescdeleteFuncDescByMemId deleteVarDescdeleteVarDescByMemIddeleteImplType setCustDatasetFuncCustDatasetParamCustDatasetVarCustDatasetImplTypeCustDatasetHelpStringContextsetFuncHelpStringContextsetVarHelpStringContext invalidatesetNameiidICreateTypeLibcreateTypeInfo setNameCTL setVersionCTL setGuidCTLsetDocStringCTLsetHelpFileNamesetHelpContextCTLsetLcid setLibFlagssaveAllChangesiidICreateTypeLib2deleteTypeInfosetCustDataCTLsetHelpStringContextCTLsetHelpStringDlldISPID_UNKNOWN dISPID_VALUEdISPID_PROPERTYPUTdISPID_NEWENUMdISPID_EVALUATEdISPID_CONSTRUCTORdISPID_DESTRUCTORdISPID_COLLECT iidITypeCompmarshallBINDPTRunmarshallBINDPTR writeBINDPTR readBINDPTR sizeofBINDPTR freeBINDPTRbindbindType iidITypeInfo getTypeAttr getTypeComp getFuncDesc getVarDescgetNamesgetRefTypeOfImplTypegetImplTypeFlags getIDsOfNamesinvokegetDocumentation getDllEntrygetRefTypeInfoaddressOfMembercreateInstancegetMopsgetContainingTypeLibreleaseTypeAttrreleaseFuncDescreleaseVarDesc iidITypeInfo2 getTypeKind getTypeFlagsgetFuncIndexOfMemIdgetVarIndexOfMemId getCustDatagetFuncCustDatagetParamCustDatagetVarCustDatagetImplTypeCustDatagetDocumentation2getAllCustDatagetAllFuncCustDatagetAllParamCustDatagetAllVarCustDatagetAllImplTypeCustData iidITypeLib writeTLIBATTR readTLIBATTRsizeofTLIBATTRgetTypeInfoCount getTypeInfogetTypeInfoTypegetTypeInfoOfGuid getLibAttr getTypeCompTLgetDocumentationTLisNamefindNamereleaseTLibAttr iidITypeLib2 getCustDataTLgetLibStatisticsgetDocumentation2TLgetAllCustDataTLiidITypeChangeEventsrequestTypeChangeafterTypeChange$fEnumLIBFLAGS$fFlagsLIBFLAGS $fEnumSYSKIND$fFlagsSYSKIND$fEnumVARFLAGS$fFlagsVARFLAGS$fEnumFUNCFLAGS$fFlagsFUNCFLAGS$fEnumTYPEFLAGS$fFlagsTYPEFLAGS$fEnumINVOKEKIND$fFlagsINVOKEKIND$fEnumCALLCONV$fEnumTYPEKIND$fEnumFUNCKIND $fEnumVARKIND$fEnumDESCKIND$fEnumCHANGEKIND ComInterface ComVTableVTablePrimIP export_invokeexport_getIDsOfNamesexport_getTypeInfoexport_getTypeInfoCountmkIface mkDispIface mkDualIfacecreateComInstancecreateIPointer cloneIPointercloneIPointer_prim getObjStategetRealObjStatecreateDualInterfacecreateDispInterface createVTablecreateComVTableiidIClassFactorycreateClassFactoryRegHiveHKEY_CLASSES_ROOTHKEY_CURRENT_USERHKEY_LOCAL_MACHINE HKEY_USERSHKEY_CURRENT_CONFIGComponentFactory ComponentInfo newInstancecomponentFinalise componentNamecomponentProgIDcomponentVProgID componentTLBregisterComponentcomponentCLSID withProgID onRegister onFinalizewithVerIndepProgIDwithComponentName hasTypeLibmkComponentInfo createIComDll regAddEntryregRemoveEntrystdRegComponentstdUnRegComponent $fEqRegHive $fOrdRegHive $fEnumRegHiveIProvideClassInfo2IProvideClassInfo2_IProvideClassInfoIProvideClassInfo_iidIProvideClassInfoiidIProvideClassInfo2mkIProvideClassInfomkIProvideClassInfo2mkEnumInterfacemkConnectionContainer runExeServerregisterExeServer $fEnumREGCLS DispMethoddisp_method_namedisp_method_iddisp_method_kinddisp_method_actcreateStdDispatchcreateStdDispatchVTBL mkDispMethoddispmethod_0_0dispmethod_1_0dispmethod_2_0dispmethod_3_0dispmethod_0_1dispmethod_0_2createStdDispatchVTBL2inArg inIUnknownArginoutArgoutArgretValapply_0apply_1apply_2apply_3apply_4apply_5apply_6apply_76prim_System_Win32_Com_HDirect_PointerPrim_primFinalise9prim_System_Win32_Com_HDirect_PointerPrim_primAllocMemory9prim_System_Win32_Com_HDirect_PointerPrim_finalFreeMemory5prim_System_Win32_Com_HDirect_PointerPrim_finalNoFree8prim_System_Win32_Com_HDirect_PointerPrim_primFreeMemory6prim_System_Win32_Com_HDirect_PointerPrim_primFreeBSTR4prim_System_Win32_Com_HDirect_PointerPrim_primNoFree FinalizermkFinalalwaysGHC.IO.Exception IOExceptionstringFromGUIDGuid IPersistFile PersistFileiidIPersistFile marshallInnerprimGetActiveObject localProcess inProcess serverProcess anyProcesspersistfileLoad iidToString clsidToStringcoEqualIEnumConnectionPoints__IEnumConnections__IConnectionPointContainer__IConnectionPoint__?prim_System_Win32_Com_Automation_Connection_findConnectionPoint@prim_System_Win32_Com_Automation_Connection_enumConnectionPoints;prim_System_Win32_Com_Automation_Connection_enumConnections4prim_System_Win32_Com_Automation_Connection_unadvise2prim_System_Win32_Com_Automation_Connection_adviseGprim_System_Win32_Com_Automation_Connection_getConnectionPointContainerBprim_System_Win32_Com_Automation_Connection_getConnectionInterfaceSA IEnumVARIANT EnumVARIANT DispActioniidIDispatch_unsafe sizeDISPID inoutVariant'undefinedStablePtr inoutGUIDresGUID errorMembercatchMethError dispMETHODdispPROPERTYGETdispPROPERTYSETdispPROPERTYSETREF lcidNeutralprimInvokeMethod readTempVarfreeMemVariants allocBSTRnofreeAllocBSTRnofreeBstrFromStringiidIEnumVARIANTnewEnuminSafe' inSAFEARRAYresSafe' resSAFEARRAYreadSafeArray' findInterfaceTypeInfo TypeInfo__ DispState disp_libiddisp_iiddisp_ipdisp_ti IUnkIfaceInfo IUnkState iu_ifaces iu_release iu_refcntIface DispIface ifaceGUID ifaceVTBL ifaceLIBIDisDualVTBLprim_getIDsOfNamesTIprim_getTypeInfoOfGuid prim_invokeTIprimLoadRegTypeLibexport_release export_addRefexport_queryInterfacesizeofIfaceHeaderlookupInterfacemkInstanceState releaseObj readRefCount writeRefCountgetReleaseActiongetSupportedInterfaces getIUnkStategetIPointerState_stblmkDispatchState coerceIIDcoerceIPcreateDispVTable loadTypeInfoinvokeTIgetIDsOfNamesTIclearException fillException primLangIDunmarshallVTableThis_ClassFactory IClassFactory ClassFactory new_instance lockCountexport_lockServerexport_createInstance lockServeriClassFactory_vtbl ComDllState withFinalisernewComDllStatedllPath componentsprimRegRemoveEntryprimRegAddEntryexport_dllGetClassObjectexport_nullaryMethexport_DllUnloaddllGetClassObject lookupCLSIDdllCanUnloadNowdllRegisterServerdllUnregisterServerregisterServer dllUnloadiComDllEntryPointsIProvideClassInfo2__IProvideClassInfo__ThisPtr export_gg export_gci hoistInTLB getClassInfogetGUID EnumStateeltorigEltswriteEltsizeofexport_enumCloneexport_enumResetexport_enumSkipexport_enumNext export_fCP export_eCP export_enumCP export_unadv export_adv export_gcpc export_gi mkConnectionmkConnectionPointVTBLcONNECT_E_NOCONNECTIONcONNECT_E_ADVISELIMITcONNECT_E_CANNOTCONNECTcONNECT_E_OVERRIDDENREGCLSREGCLS_SINGLEUSEREGCLS_MULTIPLEUSEREGCLS_MULTI_SEPARATEREGCLS_SUSPENDEDREGCLS_SURROGATEcoRevokeClassObject waitForEvent signalEventmkEvent MethodKindMethod PropertyGet PropertyPutunmarshallArgs toMethodKinddISPATCH_METHODdISPATCH_PROPERTYGETdISPATCH_PROPERTYPUTdISPATCH_PROPERTYPUTREFgetTypeInfoCount_nonegetTypeInfo_none